/* #jwkim 2026-10-23 UI-05 v5 (Codex 리뷰 4건 반영: pc_ver 폰 노출·모달 스크롤·tbl_write min-width·헤더 위치 유지) City Flow 라이트 셸 재구성 — 사이드바/헤더/페이지헤더/검색/KPI/표/페이징/토스트/모달 공통 컴포넌트. v3·v4 뒤에 로드, ID·name·JS 훅 불변 */
:root{--v5-bg:#F5F7FB;--v5-sf:#fff;--v5-sf2:#F8FAFD;--v5-ln:#E6EAF2;--v5-ln2:#EEF1F6;--v5-tx:#0F172A;--v5-tx2:#475569;--v5-tx3:#64748B;--v5-ac:#2F5BEA;--v5-acs:rgba(47,91,234,.08);--v5-r:14px;--v5-r2:10px;--v5-sh:0 1px 2px rgba(15,23,42,.04),0 4px 16px -8px rgba(15,23,42,.08);--v5-side:240px;--v5-hd:60px;--v5-ease:cubic-bezier(.16,1,.3,1);}
html body.ledger{background:var(--v5-bg)!important;color:var(--v5-tx);}
/* ── 1. 사이드바: 다크 네이비 → City Flow 라이트 레일(흰 바탕+얇은 보더), 1024~ 전 구간 240px로 컴포넌트 폭과 일치 ── */
@media (min-width:1024px){
  html body.ledger #topnav.ledger-side{width:var(--v5-side)!important;background:var(--v5-sf)!important;border-right:1px solid var(--v5-ln)!important;color:var(--v5-tx2)!important;box-shadow:none!important;}
  html body.ledger .main-wrapper,html body.ledger .main-wrapper.leftcont,html body.ledger .main-wrapper:has(.ledger-dashboard){margin-left:var(--v5-side)!important;width:calc(100% - var(--v5-side))!important;}
  html body.ledger #topnav.ledger-side #gnb>ul>li>a,html body.ledger #topnav.ledger-side #gnb .navpill-trigger{color:var(--v5-tx2)!important;font-weight:600;}
  html body.ledger #topnav.ledger-side #gnb>ul>li>a:hover,html body.ledger #topnav.ledger-side #gnb .navpill-trigger:hover{color:var(--v5-tx)!important;background:var(--v5-sf2)!important;}
  html body.ledger #topnav.ledger-side #gnb>ul>li.on>a,html body.ledger #topnav.ledger-side #gnb .navpill-item.on>.navpill-trigger{color:var(--v5-ac)!important;background:var(--v5-acs)!important;box-shadow:inset 3px 0 0 var(--v5-ac)!important;}
  html body.ledger #topnav.ledger-side #gnb>ul>li>ul.depth_2>li>a,html body.ledger #topnav.ledger-side #gnb .navpop a{color:var(--v5-tx3)!important;}
  html body.ledger #topnav.ledger-side #gnb>ul>li>ul.depth_2>li.on>a,html body.ledger #topnav.ledger-side #gnb .navpop a.active{color:var(--v5-ac)!important;background:var(--v5-acs)!important;}
  html body.ledger #topnav.ledger-side #gnb>ul>li>ul.depth_2>li>a:hover{color:var(--v5-tx)!important;}
  html body.ledger #topnav.ledger-side .tn-logo-txt,html body.ledger #topnav.ledger-side .logo_wrap{color:var(--v5-tx)!important;}
  html body.ledger #topnav.ledger-side .tn-logo-txt small{color:var(--v5-tx3)!important;}
}
/* ── 2. 상단 헤더: 60px 유리 바, 경로(크럼)·검색·유틸 한 줄 ── */
body.ledger .main-wrapper .ledger-top{min-height:var(--v5-hd);display:flex;align-items:center;gap:16px;padding:0 28px;background:rgba(255,255,255,.82)!important;backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--v5-ln);}
body.ledger .main-wrapper .ledger-top .crumb{font-size:13px;color:var(--v5-tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
body.ledger .main-wrapper .ledger-top .crumb b{color:var(--v5-tx);font-weight:650;}
body.ledger .main-wrapper .ledger-search-look{margin-left:auto;min-width:220px;height:38px;display:inline-flex;align-items:center;padding:0 14px;border:1px solid var(--v5-ln);border-radius:999px;background:var(--v5-sf2);color:var(--v5-tx3);font-size:13px;}
/* ── 3. 페이지 헤더: 제목 + 보조텍스트 + 우측 액션(래핑 허용) ── */
body.ledger .main-cont{padding:24px 28px 40px!important;max-width:1680px;}
body.ledger .main-cont>.ph,body.ledger .main-cont .ledger-ph,body.ledger .phead{display:flex!important;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:0 0 20px!important;padding:0!important;background:none!important;border:0!important;}
body.ledger .ledger-ph h1{font-size:24px!important;font-weight:750!important;letter-spacing:-.02em;color:var(--v5-tx)!important;margin:0!important;line-height:1.25;}
body.ledger .ledger-ph .gt{font-size:13px;color:var(--v5-tx3);margin-top:4px;}
/* 탄소 대시 공장/연도 선택: 제목 옆 끼임 → 우측 세그먼트 칩, 좁으면 다음 줄 */
body.ledger .phead .selg{margin-left:auto!important;flex-wrap:wrap;gap:6px 8px!important;padding:6px 10px;border:1px solid var(--v5-ln);border-radius:12px;background:var(--v5-sf);box-shadow:var(--v5-sh);}
body.ledger .phead .selg select{min-height:36px;padding:0 6px!important;max-width:180px;}
@media (max-width:767px){body.ledger .phead .selg{margin-left:0!important;width:100%;}body.ledger .phead .selg select{flex:1 1 30%;max-width:none;}}
/* ── 4. 카드 공통 ── */
body.ledger .main-wrapper .card_box,body.ledger .main-wrapper .ledger-panel{background:var(--v5-sf)!important;border:1px solid var(--v5-ln)!important;border-radius:var(--v5-r)!important;box-shadow:var(--v5-sh)!important;}
body.ledger .main-wrapper .card_box .card-header{background:transparent!important;box-shadow:none!important;border-bottom:1px solid var(--v5-ln2)!important;padding:14px 18px!important;display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;}
body.ledger .main-wrapper .card_box .card-header h5{font-size:15px;font-weight:700;color:var(--v5-tx);margin:0;}
body.ledger .main-wrapper .card-tool .nl-hint,body.ledger .nl-hint{font-size:12px!important;font-weight:400!important;color:var(--v5-tx3)!important;}
/* ── 5. 검색 패널: v4 긴급수정 보완(Codex 리뷰) — div 범위 축소·복수입력 줄바꿈·폰 세로배치 ── */
body.ledger .main-wrapper .search_box{flex-wrap:wrap;align-items:flex-start;gap:12px 16px;padding:16px 18px!important;margin-bottom:16px;border:1px solid var(--v5-ln)!important;border-radius:var(--v5-r)!important;box-shadow:var(--v5-sh)!important;background:var(--v5-sf)!important;}
body.ledger .main-wrapper .search_box>.main-btn{order:2;margin-left:auto;display:flex;gap:8px;align-self:flex-end;}
body.ledger .main-wrapper .search_box>ul.search_list{order:1;flex:1 1 520px;min-width:0;margin:0!important;padding:0!important;border:0!important;background:transparent!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li>div{flex:initial!important;width:auto!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li>:is(.input-group,.form-control,.date-range,.dp-range){flex:1 1 auto!important;min-width:0!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li:has(> :is(input,select):not([type=hidden]) ~ :is(input,select):not([type=hidden])){flex-wrap:wrap!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li:has(> :is(input,select):not([type=hidden]) ~ :is(input,select):not([type=hidden]))>:is(input,select){flex:1 1 120px!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li>label.tit{font-size:13px!important;font-weight:600!important;color:var(--v5-tx2)!important;}
body.ledger .main-wrapper .search_box :is(.input,.select,select,.form-control){height:40px;border:1px solid var(--v5-ln)!important;border-radius:var(--v5-r2)!important;background:var(--v5-sf2)!important;transition:border-color .18s,box-shadow .18s;}
body.ledger .main-wrapper .search_box :is(.input,.select,select,.form-control):focus{border-color:var(--v5-ac)!important;box-shadow:0 0 0 3px rgba(47,91,234,.16)!important;background:#fff!important;outline:0;}
@media (max-width:767px){body.ledger .main-wrapper .search_box>ul.search_list>li{flex-direction:column!important;align-items:stretch!important;gap:6px!important;}body.ledger .main-wrapper .search_box>.main-btn{width:100%}body.ledger .main-wrapper .search_box>.main-btn .btn{flex:1}}
@media (min-width:768px){body.ledger .main-wrapper .search_box{display:flex!important;}}
/* 검색 이중 마크업 정리: 768~1200(태블릿)은 모달 대신 인라인 패널 사용(k*↔m* 값은 페이지 JS가 양방향 동기화) */
@media (min-width:768px) and (max-width:1200px){
  body.ledger .main-wrapper .search_box.pc_ver{display:flex!important;}
  body.ledger .main-wrapper .m_search.m_ver{display:none!important;}
}
/* ── 6. KPI 행: 자동 그리드, 폰 2열 ── */
body.ledger .main-wrapper :is(.nl-stats,.k3){display:grid!important;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))!important;gap:12px!important;margin-bottom:16px;}
body.ledger .main-wrapper :is(.nl-stats,.k3)>*{margin:0!important;width:auto!important;min-width:0;padding:16px 18px!important;border:1px solid var(--v5-ln)!important;border-radius:var(--v5-r)!important;background:var(--v5-sf)!important;box-shadow:var(--v5-sh)!important;}
body.ledger .nl-stat-label{display:block;font-size:12px!important;color:var(--v5-tx3)!important;font-weight:600;}
body.ledger .nl-stat-value{display:block;margin-top:6px;font-size:26px!important;font-weight:750!important;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--v5-tx)!important;}
@media (max-width:767px){body.ledger .main-wrapper :is(.nl-stats,.k3){grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;}body.ledger .main-wrapper :is(.nl-stats,.k3)>*{padding:12px 14px!important;}body.ledger .nl-stat-value{font-size:22px!important;}}
/* ── 7. 데이터 표(ag-grid·tbl_list): 라이트 헤더, 행 hover, 폰 가로스크롤 ── */
body.ledger .ag-theme-balham .ag-header{background:var(--v5-sf2)!important;border-bottom:1px solid var(--v5-ln)!important;}
body.ledger .ag-theme-balham .ag-header-cell,body.ledger .ag-theme-balham .ag-header-cell-text{color:var(--v5-tx2)!important;font-weight:650!important;font-size:12.5px!important;background:transparent!important;}
body.ledger .ag-theme-balham .ag-root-wrapper{border:1px solid var(--v5-ln)!important;border-radius:var(--v5-r2);overflow:hidden;}
body.ledger .ag-theme-balham .ag-row{border-color:var(--v5-ln2)!important;}
body.ledger .ag-theme-balham .ag-row-hover,body.ledger .ag-theme-balham .ag-row:hover{background:var(--v5-acs)!important;}
body.ledger .main-wrapper table.tbl_list thead th{background:var(--v5-sf2)!important;color:var(--v5-tx2)!important;font-weight:650;border-bottom:1px solid var(--v5-ln)!important;}
body.ledger .main-wrapper table.tbl_list tbody tr:hover td{background:var(--v5-acs)!important;}
@media (max-width:767px){body.ledger .main-wrapper :is(.card-block,.table-box,.table-wrap):has(>table.tbl_list),body.ledger .main-wrapper :is(#myGrid,.tblscroll):has(table){overflow-x:auto;-webkit-overflow-scrolling:touch;}body.ledger .main-wrapper table.tbl_list{min-width:640px;}}
/* 등록 폼(tbl_write): 폰에서 th/td 세로 스택 */
body.ledger .main-wrapper table.tbl_write th{background:var(--v5-sf2)!important;color:var(--v5-tx2)!important;font-weight:600;white-space:nowrap;word-break:keep-all;}
@media (max-width:767px){body.ledger .main-wrapper table.tbl_write,body.ledger .main-wrapper table.tbl_write :is(tbody,tr,th,td){display:block;width:100%!important;min-width:0!important;}body.ledger .main-wrapper table.tbl_write{min-width:0!important;}body.ledger .main-wrapper table.tbl_write colgroup{display:none;}body.ledger .main-wrapper table.tbl_write th{border:0!important;background:transparent!important;padding:10px 0 4px!important;}body.ledger .main-wrapper table.tbl_write td{border:0!important;padding:0 0 6px!important;}}
body.ledger .main-wrapper .btn_area{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;}
/* ── 8. 페이징: 둥근 칩, 터치 40/44px, 좁으면 줄바꿈 ── */
body.ledger .cust-paging{display:flex!important;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;padding:16px 0 4px!important;}
body.ledger .cust-paging .cust-paging-nums{display:inline-flex;gap:6px;}
body.ledger .cust-paging .cust-paging-btn{min-width:36px;height:36px;padding:0 10px;border:1px solid var(--v5-ln)!important;border-radius:10px!important;background:var(--v5-sf)!important;color:var(--v5-tx2)!important;font-weight:600;}
body.ledger .cust-paging .cust-paging-btn:hover{border-color:var(--v5-ac)!important;color:var(--v5-ac)!important;}
body.ledger .cust-paging .cust-paging-btn.active,body.ledger .cust-paging .cust-paging-btn.on{background:var(--v5-ac)!important;border-color:var(--v5-ac)!important;color:#fff!important;}
body.ledger .cust-paging .cust-paging-info{margin-left:8px;font-size:12px;color:var(--v5-tx3);}
@media (pointer:coarse){body.ledger .cust-paging .cust-paging-btn{min-width:44px;height:44px;}}
/* ── 9. 토스트: 사이드바 위 좌하단 → 우하단 카드, 안전영역 반영 ── */
body.ledger .notifyjs-corner{left:auto!important;right:calc(16px + env(safe-area-inset-right))!important;bottom:calc(16px + env(safe-area-inset-bottom))!important;top:auto!important;z-index:2000!important;}
body.ledger .notifyjs-bootstrap-base{border:1px solid var(--v5-ln)!important;border-radius:12px!important;background:#fff!important;color:var(--v5-tx)!important;box-shadow:0 12px 32px -12px rgba(15,23,42,.25)!important;padding:12px 16px 12px 40px!important;font-weight:600;}
/* ── 10. 모달: 라운드·폰 하단 시트 ── */
body.ledger .modal-content{border:1px solid var(--v5-ln)!important;border-radius:16px!important;box-shadow:0 24px 64px -24px rgba(15,23,42,.35)!important;}
@media (max-width:767px){body.ledger .modal.show .modal-dialog,body.ledger .modal.in .modal-dialog{margin:auto 0 0!important;max-width:100%!important;width:100%!important;min-height:100%;display:flex;align-items:flex-end;}body.ledger .modal-content{border-radius:18px 18px 0 0!important;width:100%;max-height:88vh;overflow:auto;padding-bottom:env(safe-area-inset-bottom);}}
/* ── 11. 모바일 헤더 중복 정리(carbon 3단 → 1단): 1200 이하는 m_logo 한 줄만 ── */
@media (max-width:1023px){
  body.ledger .m_ver.m_logo{display:flex!important;align-items:center;gap:8px;height:56px;padding:0 12px;background:rgba(255,255,255,.92)!important;border-bottom:1px solid var(--v5-ln);}
  body.ledger .m_ver.m_logo>.logout,body.ledger .m_ver.m_logo>.alarm-btn{margin-left:auto;}
  body.ledger .m_ver.m_logo>.alarm-btn~.logout{margin-left:0;}
  body.ledger .main-wrapper .ledger-top{display:none!important;}
  body.ledger .main-cont{padding:16px 14px 32px!important;}
  body.ledger .ledger-ph h1{font-size:20px!important;}
}
/* ── 12. 로그인 폰 가로: 브랜드 패널 38% → 숨김, 폼 전체폭 ── */
@media (orientation:landscape) and (max-height:500px){
  body.ledger-login .ledger-login-brand{display:none!important;}
  body.ledger-login .ledger-login-layout{grid-template-columns:1fr!important;}
  body.ledger-login .login-block{max-width:520px;margin:0 auto;}
}
@media (prefers-reduced-motion:reduce){body.ledger *{transition:none!important;animation:none!important;}}
/* #jwkim 2026-10-23 UI-05 실기기(iPad) 후속: 검색 필터바 — 단일 조건도 입력칸이 남는 폭을 채우고(auto-fit), 조회 버튼은 같은 줄 우측 정렬 */
body.ledger .main-wrapper .search_box{align-items:center!important;}
body.ledger .main-wrapper .search_box>ul.search_list{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))!important;}
body.ledger .main-wrapper .search_box>ul.search_list>li>:is(input.input,select,.select){flex:1 1 auto!important;width:auto!important;max-width:none!important;min-width:0!important;}
body.ledger .main-wrapper .search_box>.main-btn{align-self:center!important;margin:0 0 0 auto!important;}
body.ledger .main-wrapper .search_box>.main-btn .btn{height:40px;min-width:88px;border-radius:var(--v5-r2)!important;display:inline-flex;align-items:center;justify-content:center;gap:6px;}
body.ledger .main-wrapper .search_box>:is(.top,.card-header,strong.tit,.tit){order:0;flex:0 0 auto;margin:0!important;font-size:13px;font-weight:700;color:var(--v5-tx2);}
/* #jwkim 2026-10-23 UI-05 QA: 폰 등록폼 우측 넘침 보정 */
@media (max-width:767px){body.ledger .main-wrapper table.tbl_write :is(th,td){box-sizing:border-box!important;}body.ledger .main-wrapper table.tbl_write td :is(input.input,input.form-control,select,.input-group){width:100%!important;max-width:100%!important;box-sizing:border-box;}body.ledger .main-wrapper .card_box .card-block{padding:14px!important;}}
/* #jwkim 2026-10-23 UI-05 실기기(iPad 15:22) 후속: 표+페이징을 한 카드 안에 정리 — 그리드 이중 박스/그림자 제거, 페이징 구분선·하단 여백, 비활성 첫/이전 버튼 명확화, 페이지 하단 safe-area */
body.ledger .main-wrapper .card_box{overflow:visible;padding-bottom:0!important;}
body.ledger .main-wrapper .card_box :is(#myGrid,.ag-theme-balham){box-shadow:none!important;border-radius:var(--v5-r2)!important;margin:0!important;}
body.ledger .ag-theme-balham .ag-header,body.ledger .ag-theme-balham .ag-header-row,body.ledger .ag-theme-balham .ag-header-cell{background-image:none!important;}
body.ledger .ag-theme-balham .ag-header-cell::after,body.ledger .ag-theme-balham .ag-header-cell-resize::after{background:var(--v5-ln)!important;}
body.ledger .main-wrapper .card_box .cust-paging{margin:12px -18px 0!important;padding:14px 18px 18px!important;border-top:1px solid var(--v5-ln2);border-radius:0 0 var(--v5-r) var(--v5-r);background:var(--v5-sf);}
body.ledger .cust-paging .cust-paging-btn:disabled,body.ledger .cust-paging .cust-paging-btn[disabled]{opacity:1!important;background:var(--v5-sf2)!important;color:#C3CAD6!important;border-color:var(--v5-ln2)!important;cursor:not-allowed;box-shadow:none!important;}
body.ledger .cust-paging .cust-paging-btn:disabled:hover{color:#C3CAD6!important;border-color:var(--v5-ln2)!important;}
body.ledger .cust-paging .cust-paging-info{white-space:nowrap;font-variant-numeric:tabular-nums;}
body.ledger .main-cont{padding-bottom:calc(48px + env(safe-area-inset-bottom))!important;}
body.ledger .main-cont>.card_box:last-child,body.ledger .main-cont>.ledger-panel:last-child{margin-bottom:0!important;}
