/* #jwkim 2026-10-23 UI-02 디자인 v2 — City Flow(light "공공 클린") 토큰 기반 세련된 라이트 테마.
   레이아웃·DOM은 건드리지 않고 색·타이포·면·그림자·모션만 덮어쓴다. 제거 시 이 파일 링크만 지우면 원복. */
:root{
  /* 서피스 (Porcelain) */
  --v2-bg:#F4F6FA; --v2-bg-deep:#E9EDF4; --v2-surface:#FFFFFF; --v2-surface-2:#F1F4F9;
  --v2-glass:rgba(255,255,255,.78);
  --v2-border:rgba(16,24,40,.08); --v2-border-strong:rgba(16,24,40,.16);
  /* 텍스트 */
  --v2-text:#0E1525; --v2-text-dim:#4A5468; --v2-text-faint:#6B7486;
  /* 액센트 1색 + 파생 */
  --v2-accent:#2F5BEA; --v2-accent-rgb:47,91,234;
  --v2-accent-soft:rgba(var(--v2-accent-rgb),.08); --v2-accent-line:rgba(var(--v2-accent-rgb),.28);
  /* DPP 도메인 5색 (City Flow 카테고리 5색 대응) */
  --v2-cat-epcis:#2F5BEA; --v2-cat-battery:#0E9F6E; --v2-cat-gdsn:#D97706; --v2-cat-did:#7C5CFA; --v2-cat-comp:#E0475B;
  /* 상태 */
  --v2-ok:#0E9F6E; --v2-warn:#D97706; --v2-err:#E0475B; --v2-idle:#8A93A6;
  /* 형태·그림자 (글로우 대신 다층 소프트 섀도) */
  --v2-r:14px; --v2-r-sm:10px; --v2-r-pill:999px;
  --v2-sh-1:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
  --v2-sh-2:0 2px 4px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.08);
  --v2-ring:0 0 0 3px rgba(var(--v2-accent-rgb),.18);
  /* 타이포 */
  --v2-font:"Pretendard Variable","Pretendard",-apple-system,BlinkMacSystemFont,"Noto Sans KR","Malgun Gothic",system-ui,sans-serif;
  --v2-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  /* 모션 */
  --v2-ease:cubic-bezier(.16,1,.3,1); --v2-micro:180ms ease-out; --v2-enter:420ms cubic-bezier(.16,1,.3,1);
  /* 기존 ledger 토큰 재매핑 → 기존 CSS 전체가 v2 색으로 따라온다 */
  --ledger-navy:#0E1525; --ledger-ink:var(--v2-text); --ledger-muted:var(--v2-text-dim);
  --ledger-bg:var(--v2-bg); --ledger-line:#E3E8F0; --ledger-blue:var(--v2-accent);
  --ledger-teal:#0B8C83; --ledger-green:var(--v2-ok); --ledger-font:var(--v2-font); --ledger-mono:var(--v2-mono);
  color-scheme:light;
}
html body{font-family:var(--v2-font);color:var(--v2-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"tnum" 0,"ss01" 1;}
body.ledger,body.v2-public{background:radial-gradient(1200px 520px at 100% -10%,rgba(var(--v2-accent-rgb),.06),transparent 60%),radial-gradient(900px 480px at -10% 0%,rgba(14,159,110,.05),transparent 55%),var(--v2-bg)!important;background-attachment:fixed!important;}

/* ── 헤더/상단바: 유리 질감 ─────────────────────────── */
body.ledger #topnav{background:var(--v2-glass)!important;-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--v2-border)!important;box-shadow:none!important;}
body.ledger #topnav #gnb>ul>li>a{color:var(--v2-text-dim)!important;font-weight:600;letter-spacing:-.01em;transition:color var(--v2-micro);}
body.ledger #topnav #gnb>ul>li>a:hover{color:var(--v2-accent)!important;}
body.ledger #topnav #gnb>ul>li>ul.depth_2{background:var(--v2-surface)!important;border:1px solid var(--v2-border)!important;border-radius:var(--v2-r-sm);box-shadow:var(--v2-sh-2)!important;}
body.ledger .tn-logo-mk,body.ledger .hdr-avatar,body.ledger .gsb-prof .av,body.ledger .ledger-dashboard .ls-av{background:linear-gradient(135deg,#2F5BEA,#7C5CFA)!important;color:#fff!important;}

/* ── 사이드바(gsb): 라이트 레일 + 활성 인디케이터 ──────── */
body.ledger .gsb{background:var(--v2-surface)!important;border-right:1px solid var(--v2-border)!important;box-shadow:none!important;}
body.ledger .gsb-link{border-radius:var(--v2-r-sm);color:var(--v2-text-dim)!important;transition:background-color var(--v2-micro),color var(--v2-micro);position:relative;}
body.ledger .gsb-link:hover{background:var(--v2-surface-2)!important;color:var(--v2-text)!important;}
body.ledger .gsb-link.on,body.ledger .gsb-link.active,body.ledger .gsb-link[aria-current]{background:var(--v2-accent-soft)!important;color:var(--v2-accent)!important;}

/* ── 페이지 타이틀 ─────────────────────────────────── */
body.ledger .main-wrapper .head_top .left_tit strong.tit{color:var(--v2-text)!important;font-weight:700;letter-spacing:-.02em;}
body.ledger .main-wrapper .head_top .left_tit strong.tit::before{background:linear-gradient(180deg,var(--v2-accent),#7C5CFA)!important;border-radius:2px;}

/* ── 카드 공통 ─────────────────────────────────────── */
body.ledger .main-wrapper .card_box,body.ledger .main-wrapper .search_box,body.ledger .main-wrapper .search_list,
body.ledger .ledger-dashboard .hub-card,body.ledger .ledger-dashboard .hub-ls,body.ledger .ledger-dashboard .hub-rs,body.ledger .ledger-dashboard .rs-section,
html body .dw-section .dw-card{background:var(--v2-surface)!important;border:1px solid var(--v2-border)!important;border-radius:var(--v2-r)!important;box-shadow:var(--v2-sh-1)!important;}
body.ledger .ledger-dashboard .hub-card,html body .dw-section .dw-card{transition:box-shadow var(--v2-micro),transform var(--v2-micro),border-color var(--v2-micro);}
body.ledger .ledger-dashboard .hub-card:hover,html body .dw-section .dw-card:hover{box-shadow:var(--v2-sh-2)!important;border-color:var(--v2-accent-line)!important;transform:translateY(-1px);}
body.ledger .ledger-dashboard .hub-card::after{background:linear-gradient(90deg,var(--v2-accent),#7C5CFA)!important;}
body.ledger .ledger-dashboard .card-title,html body .dw-section .dw-card h3,html body .dw-section .dw-head h2{color:var(--v2-text)!important;letter-spacing:-.015em;}
body.ledger .ledger-dashboard .card-desc,html body .dw-section .dw-head p{color:var(--v2-text-faint)!important;}
body.ledger .ledger-dashboard .center-greeting{color:var(--v2-text)!important;font-weight:700;letter-spacing:-.025em;}
body.ledger .ledger-dashboard .cal-d.today{background:var(--v2-accent)!important;color:#fff!important;border-radius:8px;}

/* 위젯: 섹션 라벨(City Flow cf-card__label 스타일), KPI 숫자 모노, 도메인 색 상단선 */
html body .dw-section .dw-head h2{font-size:18px;}
html body .dw-section .dw-head h2::before{content:"";display:inline-block;width:6px;height:6px;margin:0 8px 3px 0;border-radius:50%;background:var(--v2-accent);box-shadow:0 0 0 4px var(--v2-accent-soft);vertical-align:middle;}
html body .dw-section .dw-card [class*="num"],html body .dw-section .dw-card [class*="kpi"] b,html body .dw-section .dw-card [class*="val"]{font-family:var(--v2-mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
html body .dw-section .dw-card{position:relative;animation:v2-in var(--v2-enter) both;}
html body .dw-section .dw-card:nth-child(2){animation-delay:40ms}html body .dw-section .dw-card:nth-child(3){animation-delay:80ms}
html body .dw-section .dw-card:nth-child(4){animation-delay:120ms}html body .dw-section .dw-card:nth-child(n+5){animation-delay:160ms}
html body .dw-section .dw-card[id^="P-"]::before,html body .dw-section .dw-card[data-w^="P"]::before{background:var(--v2-cat-battery)}
@keyframes v2-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ── 버튼·입력 ─────────────────────────────────────── */
body.ledger .main-wrapper .btn,body.ledger .modal-content .btn{border-radius:var(--v2-r-sm)!important;font-weight:600;transition:background-color var(--v2-micro),box-shadow var(--v2-micro),border-color var(--v2-micro);}
body.ledger .main-wrapper .btn-primary,body.ledger .ledger-dashboard .btn-manage{background:var(--v2-accent)!important;border-color:var(--v2-accent)!important;color:#fff!important;box-shadow:0 1px 2px rgba(16,24,40,.08),inset 0 1px 0 rgba(255,255,255,.14)!important;}
body.ledger .main-wrapper .btn-primary:hover,body.ledger .ledger-dashboard .btn-manage:hover{background:#2449C9!important;}
body.ledger .main-wrapper .btn-line{background:var(--v2-surface)!important;border:1px solid var(--v2-border-strong)!important;color:var(--v2-text)!important;}
body.ledger .main-wrapper .btn-line:hover{border-color:var(--v2-accent-line)!important;color:var(--v2-accent)!important;}
body.ledger .main-wrapper input[type=text],body.ledger .main-wrapper input[type=search],body.ledger .main-wrapper input[type=password],body.ledger .main-wrapper input[type=email],body.ledger .main-wrapper input[type=number],body.ledger .main-wrapper select,body.ledger .main-wrapper textarea,body.ledger .modal-content .input{border:1px solid var(--v2-border-strong)!important;border-radius:var(--v2-r-sm)!important;background:var(--v2-surface)!important;color:var(--v2-text);transition:border-color var(--v2-micro),box-shadow var(--v2-micro);}
body.ledger .main-wrapper input:focus,body.ledger .main-wrapper select:focus,body.ledger .main-wrapper textarea:focus,body.ledger .modal-content .input:focus{border-color:var(--v2-accent)!important;box-shadow:var(--v2-ring)!important;outline:none;}
body.ledger a:focus-visible,body.ledger button:focus-visible{outline:none;box-shadow:var(--v2-ring)!important;border-radius:6px;}

/* ── 테이블·그리드 ─────────────────────────────────── */
body.ledger .main-wrapper table th{background:var(--v2-surface-2)!important;color:var(--v2-text-dim)!important;font-size:12.5px;font-weight:600;letter-spacing:.01em;border-color:var(--v2-border)!important;}
body.ledger .main-wrapper table td{border-color:var(--v2-border)!important;color:var(--v2-text);}
body.ledger .main-wrapper table tbody tr:hover td{background:rgba(var(--v2-accent-rgb),.035)!important;}
body.ledger .main-wrapper .ag-theme-balham{--ag-header-background-color:var(--v2-surface-2);--ag-border-color:var(--v2-border);--ag-row-hover-color:rgba(var(--v2-accent-rgb),.04);--ag-selected-row-background-color:var(--v2-accent-soft);--ag-font-family:var(--v2-font);}
body.ledger .main-wrapper .ag-theme-balham .ag-root-wrapper{border-radius:var(--v2-r-sm);overflow:hidden;border-color:var(--v2-border)!important;}
body.ledger .main-wrapper .ag-theme-balham .ag-header{background:var(--v2-surface-2)!important;border-color:var(--v2-border)!important;}
body.ledger .main-wrapper .ag-theme-balham .ag-header-cell{color:var(--v2-text-dim)!important;font-weight:600;}
body.ledger .main-wrapper .ag-theme-balham .ag-row-selected{background:var(--v2-accent-soft)!important;}

/* ── 모달 ──────────────────────────────────────────── */
body.ledger .modal-content{border:1px solid var(--v2-border)!important;border-radius:16px!important;box-shadow:0 24px 64px rgba(16,24,40,.18)!important;}

/* ── 로그인(SSO) ───────────────────────────────────── */
body.ledger-login .login-block{background:transparent!important;}
body.ledger-login{background:radial-gradient(900px 600px at 85% -10%,rgba(var(--v2-accent-rgb),.10),transparent 60%),radial-gradient(700px 500px at 0% 100%,rgba(124,92,250,.08),transparent 60%),var(--v2-bg)!important;}
body.ledger-login .login-block .auth-box{background:var(--v2-surface)!important;border:1px solid var(--v2-border)!important;border-radius:18px!important;box-shadow:var(--v2-sh-2)!important;}
body.ledger-login .login-block .login_box input{border-radius:var(--v2-r-sm)!important;border-color:var(--v2-border-strong)!important;background:var(--v2-surface)!important;transition:border-color var(--v2-micro),box-shadow var(--v2-micro);}
body.ledger-login .login-block .login_box input:focus{border-color:var(--v2-accent)!important;outline:none!important;box-shadow:var(--v2-ring)!important;}
body.ledger-login .login-block .btn-login{background:var(--v2-accent)!important;border-color:var(--v2-accent)!important;border-radius:var(--v2-r-sm)!important;box-shadow:0 6px 16px rgba(var(--v2-accent-rgb),.25)!important;font-weight:600;}
body.ledger-login .login-block .btn-login:hover{background:#2449C9!important;}
body.ledger-login .lp-brand-wm{color:var(--v2-text)!important;letter-spacing:-.02em;}

/* ── 공개 여권/리졸버 ──────────────────────────────── */
body.ledger-public{background:var(--v2-bg)!important;font-family:var(--v2-font)!important;color:var(--v2-text)!important;}
body.ledger-public .wrap{box-shadow:0 0 0 1px var(--v2-border),var(--v2-sh-2);}
body.ledger-public .page-top,body.ledger-public .subtitle{background:linear-gradient(135deg,#14224A 0%,#2F5BEA 70%,#7C5CFA 130%)!important;}
body.ledger-public .page-top{background-size:100% 200%!important;background-position:top!important;}
body.ledger-public .subtitle{background-size:100% 200%!important;background-position:bottom!important;}
body.ledger-public .info-box{background:var(--v2-surface-2)!important;border-color:var(--v2-border)!important;border-radius:var(--v2-r)!important;}
body.ledger-public .info-box code{background:var(--v2-accent-soft)!important;color:var(--v2-accent)!important;}
body.ledger-public .search-row input{border-color:var(--v2-border-strong)!important;background:var(--v2-surface)!important;}
body.ledger-public .search-row input:focus{border-color:var(--v2-accent)!important;box-shadow:var(--v2-ring)!important;outline:none;}

/* ── 모션 감소 ─────────────────────────────────────── */
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
/* ── 모바일: 섀도 가볍게 ───────────────────────────── */
@media (max-width:680px){html body .dw-section .dw-card,body.ledger .ledger-dashboard .hub-card{box-shadow:none!important}body.ledger #topnav{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--v2-surface)!important}}
