/* ============================================================
   KPW 재무설계 CRM — Design System  (Deep Navy + Gold)
   빌드 없음 · 오프라인 · 단일 파일. 모든 색/간격/반경/그림자는 토큰만 참조.
   ============================================================ */

/* ---------- 1) Design Tokens ---------- */
:root{
  /* Brand — Deep Navy */
  --brand:#1b2a4a; --brand-strong:#12203c; --brand-ink:#1b2a4a; --brand-2:#283d64;
  --navy-soft:#eaeef6;

  /* Accent — Gold */
  --gold:#c8a24a; --gold-strong:#b0862f; --gold-soft:#f6efda; --gold-line:#e8d6a4;

  /* Neutrals */
  --ink:#1a2233; --ink-soft:#3d4657; --muted:#6b7482;
  --line:#e5e8f0; --line-soft:#eef1f6;
  --surface:#ffffff; --surface-2:#f8fafc;
  --bg:#f3f5f9;

  /* Semantic */
  --ok:#0f7b3f; --ok-bg:#e7f6ec; --ok-line:#bfe6cd;
  --warn:#b45309; --warn-bg:#fdf1e1; --warn-line:#f3d9b3;
  --danger:#b42318; --danger-bg:#fdece9; --danger-line:#f4c9c2;

  /* Radius */
  --r-xs:6px; --r-sm:9px; --r:12px; --r-lg:16px; --r-xl:22px; --r-pill:999px;

  /* Elevation */
  --sh-1:0 1px 2px rgba(20,32,60,.06);
  --sh-2:0 3px 12px rgba(20,32,60,.08), 0 1px 3px rgba(20,32,60,.05);
  --sh-3:0 14px 34px rgba(20,32,60,.16);
  --ring:0 0 0 3px rgba(200,162,74,.45);

  /* Type — Modern sans, larger scale */
  --font:"Pretendard","Pretendard Variable",-apple-system,BlinkMacSystemFont,
         "맑은 고딕","Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;
  --serif:"Nanum Myeongjo","Noto Serif KR",Georgia,"맑은 고딕",serif;
  --fs-cap:12.5px; --fs-sm:14px; --fs:15px; --fs-md:16px; --fs-lg:19px;

  /* Space */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:22px; --sp-6:28px;
}

/* ---------- 2) Base ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;font-family:var(--font);font-size:var(--fs);line-height:1.65;
  color:var(--ink);background:var(--bg);
  word-break:keep-all;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-feature-settings:"tnum" 0;
}
a{color:var(--brand);text-decoration:none;transition:color .15s}
a:hover{color:var(--brand-strong);text-decoration:underline}
:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--r-xs)}
::selection{background:var(--gold-soft)}
h1,h2,h3,p{margin:0}
h1{font-size:clamp(23px,2.6vw,30px);font-weight:800;letter-spacing:-.02em;
  color:var(--brand-ink);margin:2px 0 var(--sp-5);line-height:1.25}
h2{font-size:var(--fs-lg);font-weight:800;color:var(--brand-ink);
  margin:0 0 var(--sp-4);letter-spacing:-.01em}
h3{font-size:var(--fs-sm);font-weight:700;color:var(--muted);margin:var(--sp-4) 0 var(--sp-2);letter-spacing:.01em}
small,.hint{font-size:var(--fs-cap);color:var(--muted);line-height:1.55}
.muted{color:var(--muted)}

/* ---------- 3-0) App Shell / Sidebar (참고 레이아웃: 좌측 네비 + 상단 바) ---------- */
.shell{display:flex;min-height:100vh;align-items:stretch}
.sidebar{
  flex:0 0 224px;position:sticky;top:0;height:100vh;overflow-y:auto;
  background:linear-gradient(180deg,#1e3055 0%,#15233f 55%,#101b31 100%);
  color:#d7deec;padding:18px 14px 14px;display:flex;flex-direction:column;gap:2px;
  border-right:1px solid rgba(200,162,74,.25);
  box-shadow:4px 0 18px rgba(16,26,48,.18);
}
.side-brand{padding:4px 8px 16px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:12px}
.side-brand a{display:flex;align-items:center;gap:10px;color:#fff;font-weight:800;font-size:16.5px;letter-spacing:-.01em}
.side-brand a:hover{text-decoration:none;opacity:.95}
.side-brand .mark{
  display:inline-grid;place-items:center;width:36px;height:36px;border-radius:11px;flex:none;
  background:linear-gradient(135deg,#dcbb66,#c8a24a);font-size:18px;
  box-shadow:0 2px 6px rgba(200,162,74,.4),inset 0 0 0 1px rgba(255,255,255,.35);
}
.side-sec{font-size:10.5px;font-weight:800;letter-spacing:.14em;color:#7d8cab;
  padding:14px 10px 6px;text-transform:uppercase}
.side-nav{display:flex;flex-direction:column;gap:2px}
.side-nav a{
  display:flex;align-items:center;gap:10px;color:#c3cde2;font-size:14px;font-weight:600;
  padding:9px 11px;border-radius:10px;line-height:1.2;transition:background .15s,color .15s;
}
.side-nav a .ico{width:20px;text-align:center;flex:none;font-size:15px}
.side-nav a:hover{color:#fff;background:rgba(255,255,255,.09);text-decoration:none}
.side-nav a.active{
  color:#1b2a4a;background:linear-gradient(135deg,#e4c87e,#c8a24a);
  box-shadow:0 2px 8px rgba(200,162,74,.35);font-weight:800;
}
.side-foot{margin-top:auto;padding-top:14px;border-top:1px solid rgba(255,255,255,.08)}
.side-logout{display:block;text-align:center;color:#f4cfc9;font-size:13px;font-weight:700;
  padding:9px 10px;border-radius:10px;border:1px solid rgba(244,207,201,.3)}
.side-logout:hover{background:rgba(220,110,100,.25);color:#fff;text-decoration:none}

.main{flex:1;min-width:0;display:flex;flex-direction:column}
.mainbar{
  position:sticky;top:0;z-index:40;
  display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  background:rgba(255,255,255,.92);backdrop-filter:blur(8px);
  padding:12px clamp(16px,3vw,28px);border-bottom:1px solid var(--line);
}
.mb-title{font-weight:800;color:var(--brand-ink);font-size:15.5px;letter-spacing:-.01em}
.mb-sub{font-size:11.5px;color:var(--muted)}
.mb-search{flex:0 1 300px;min-width:180px}
.mb-search input{padding:9px 14px;border-radius:var(--r-pill);background:var(--surface-2);font-size:13.5px}

/* ---------- 3) App Shell / Topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);
  background:linear-gradient(180deg,#22345a,#182948);
  color:#fff;padding:14px clamp(16px,3vw,30px);
  border-bottom:2px solid var(--gold);
  box-shadow:0 4px 18px rgba(16,26,48,.22);
}
.topbar .brand a{
  display:inline-flex;align-items:center;gap:11px;
  color:#fff;font-weight:800;font-size:19px;letter-spacing:-.01em;
}
.topbar .brand a:hover{text-decoration:none;opacity:.96}
.brand .mark{
  display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;
  background:linear-gradient(135deg,#dcbb66,#c8a24a);font-size:17px;
  box-shadow:0 2px 6px rgba(200,162,74,.4),inset 0 0 0 1px rgba(255,255,255,.35);
}
.topbar nav{display:flex;align-items:center;gap:3px;flex-wrap:wrap;justify-content:flex-end}
.topbar nav a{
  color:#d7deec;font-size:var(--fs-sm);font-weight:600;
  padding:8px 13px;border-radius:var(--r-pill);line-height:1;
  transition:background .15s,color .15s;
}
.topbar nav a:hover{color:#fff;background:rgba(255,255,255,.13);text-decoration:none}
.topbar nav a.active{color:#fff;background:rgba(200,162,74,.24);box-shadow:inset 0 0 0 1px rgba(200,162,74,.5)}
.topbar nav a.logout{color:#f4cfc9}
.topbar nav a.logout:hover{background:rgba(220,110,100,.3);color:#fff}

.container{max-width:1140px;margin:clamp(20px,3vw,32px) auto;padding:0 clamp(15px,3vw,22px)}
.foot{text-align:center;color:var(--muted);font-size:var(--fs-cap);padding:28px 0 36px}
.foot::before{content:"🔒 ";opacity:.7}

/* ---------- 4) Card & Sections ---------- */
.card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:var(--sp-5) clamp(18px,2.4vw,24px);margin-bottom:var(--sp-5);box-shadow:var(--sh-2);
}
.card>h2:first-child,.card>.flex-between:first-child{margin-top:0}
.card.accent{border-left:4px solid var(--brand)}
.card.warnline{border-left:4px solid var(--gold)}

.flex-between{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-3);flex-wrap:wrap}
.flex-between h1,.flex-between h2{margin-bottom:0}

/* ---------- 5) Grid & KPI ---------- */
.grid{display:grid;gap:var(--sp-4)}
.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}

/* 게이지(권장 대비 현재) */
.meter{position:relative;height:14px;border-radius:var(--r-pill);background:var(--line-soft);overflow:hidden}
.meter>span{position:absolute;left:0;top:0;bottom:0;border-radius:var(--r-pill);min-width:2px}
.meter-row{display:flex;align-items:center;gap:10px;font-size:var(--fs-sm)}
.meter-row .meter{flex:1}

.kpi{
  position:relative;overflow:hidden;
  background:linear-gradient(160deg,#ffffff 0%,#f7f9fd 100%);
  border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;box-shadow:var(--sh-1);
  transition:transform .16s,box-shadow .16s;
}
.kpi::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,#dcbb66,var(--gold))}
.kpi:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.kpi .n{font-size:30px;font-weight:800;color:var(--brand-ink);line-height:1.12;
  letter-spacing:-.025em;font-variant-numeric:tabular-nums}
.kpi .l{font-size:var(--fs-sm);color:var(--ink-soft);margin-top:4px;font-weight:600}
.kpi .hint{display:block;margin-top:6px}
/* 클릭형 세부내역 카드: kpi를 details로 감싼 형태 */
details.kpi-details summary{outline:none;padding:0;background:transparent}
details.kpi-details summary:hover{background:transparent}
details.kpi-details summary::-webkit-details-marker{display:none}
details.kpi-details summary::marker{content:""}
details.kpi-details summary::before{content:""}
details.kpi-details[open] summary::before{content:""}
details.kpi-details[open]{box-shadow:var(--sh-2);border-color:var(--gold)}
.drill-hint{text-decoration:underline dotted var(--muted);text-underline-offset:3px;cursor:pointer}

/* 재무상태표·현금흐름표 (상담 양식 2단 대차 형식) */
.bs-table{min-width:300px}
.bs-table .bs-head th{background:var(--brand);color:#fff;text-align:center;font-size:13.5px;letter-spacing:.3em;padding:9px}
.bs-table .bs-sec td{background:var(--surface-2);font-weight:700;color:var(--brand-ink);border-top:1px solid var(--line)}
.bs-table .bs-total td{background:var(--brand);color:#fff;font-weight:800;font-variant-numeric:tabular-nums}
.bs-table .bs-net td{background:var(--brand);color:#ffd97a;font-weight:800;font-variant-numeric:tabular-nums}

/* ---------- 6) Tables ---------- */
table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm)}
th,td{padding:11px 13px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line-soft)}
th{background:var(--surface-2);color:var(--brand-ink);font-weight:700;font-size:var(--fs-cap);
  letter-spacing:.01em;white-space:nowrap;border-bottom:1px solid var(--line)}
th:first-child{border-top-left-radius:var(--r-sm)}
th:last-child{border-top-right-radius:var(--r-sm)}
tbody tr:last-child td{border-bottom:0}
tbody tr{transition:background .12s}
tbody tr:hover td{background:var(--surface-2)}
td b{font-weight:700;color:var(--ink)}
td:not(:first-child){font-variant-numeric:tabular-nums}
tr.sumrow td{background:var(--gold-soft);border-top:2px solid var(--gold);font-weight:800;color:var(--brand-ink)}
.pos{color:var(--ok);font-weight:700}
.neg{color:var(--danger);font-weight:700}

/* ---------- 7) Buttons ---------- */
.btn{
  --b:var(--brand);--bh:var(--brand-strong);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:var(--b);color:#fff;border:1px solid transparent;border-radius:var(--r-sm);
  padding:10px 18px;font-size:var(--fs);font-weight:700;font-family:inherit;
  cursor:pointer;line-height:1.2;transition:background .15s,box-shadow .15s,transform .05s;
  box-shadow:var(--sh-1);
}
.btn:hover{background:var(--bh);text-decoration:none;color:#fff}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.sm{padding:6px 12px;font-size:var(--fs-cap);border-radius:var(--r-xs)}
/* Gold — 핵심 CTA */
.btn.gold{background:linear-gradient(180deg,#d3ae56,#c8a24a);color:#1b2a4a;box-shadow:0 2px 8px rgba(200,162,74,.35)}
.btn.gold:hover{background:linear-gradient(180deg,#c8a24a,#b0862f);color:#1b2a4a}
.btn.ghost{background:var(--navy-soft);color:var(--brand-ink);box-shadow:none}
.btn.ghost:hover{background:#dde4f1;color:var(--brand-ink)}
.btn.danger{background:var(--danger-bg);color:var(--danger);box-shadow:none;border-color:var(--danger-line)}
.btn.danger:hover{background:#f9dcd7;color:var(--danger)}

/* ---------- 8) Forms ---------- */
label{display:block;font-size:var(--fs-cap);color:var(--ink-soft);font-weight:600;margin:11px 0 5px}
input,select,textarea{
  width:100%;padding:10px 12px;border:1px solid #cbd4e2;border-radius:var(--r-sm);
  font-size:var(--fs);font-family:inherit;color:var(--ink);background:#fff;
  transition:border-color .15s,box-shadow .15s;
}
input:hover,select:hover,textarea:hover{border-color:#a9b6cd}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:var(--ring)}
input::placeholder,textarea::placeholder{color:#9aa4b2}
textarea{min-height:74px;resize:vertical;line-height:1.6}
select{appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 17px) 55%,calc(100% - 12px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:32px}
.row{display:flex;gap:var(--sp-3);flex-wrap:wrap}
.row>div{flex:1;min-width:175px}

/* ---------- 9) Badges / Pills ---------- */
.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 11px;border-radius:var(--r-pill);font-size:11.5px;font-weight:700;
  border:1px solid transparent;line-height:1.45;white-space:nowrap;
}
.badge.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-line)}
.badge.warn{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-line)}
.badge.gray{background:var(--line-soft);color:var(--muted);border-color:var(--line)}
.badge.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-line)}
.badge.navy{background:var(--navy-soft);color:var(--brand-ink);border-color:#d3ddf0}

/* ---------- 10) Tabs (anchor nav) ---------- */
.tabs{
  display:flex;gap:4px;flex-wrap:wrap;margin:2px 0 var(--sp-5);
  padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-pill);
  box-shadow:var(--sh-1);position:sticky;top:64px;z-index:20;
}
.tabs a{
  padding:9px 16px;border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:700;color:var(--ink-soft);
  transition:background .15s,color .15s;
}
.tabs a:hover{background:var(--navy-soft);color:var(--brand-ink);text-decoration:none}
.tabs a:target,.tabs a.active{background:var(--brand);color:#fff}

/* ---------- 11) Auth (login/setup) ---------- */
.auth-wrap{max-width:410px;margin:min(12vh,96px) auto 0;text-align:center}
.auth-wrap h1{display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:var(--sp-4)}
.auth-wrap .card{padding:34px 30px;box-shadow:var(--sh-3);border-radius:var(--r-xl);text-align:left;
  border-top:3px solid var(--gold)}
.auth-wrap .card p{text-align:center}
.auth-wrap label{text-align:left}

/* ---------- 12) Feedback / misc ---------- */
.err{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line);
  padding:11px 14px;border-radius:var(--r-sm);font-size:var(--fs-sm);margin:10px 0;font-weight:600}
details{border-radius:var(--r-sm)}
details summary{cursor:pointer;font-weight:700;color:var(--brand-ink);font-size:var(--fs-sm);
  padding:9px 13px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  list-style:none;transition:background .15s;user-select:none}
details summary:hover{background:var(--navy-soft)}
details summary::-webkit-details-marker{display:none}
details summary::before{content:"＋ ";color:var(--gold-strong);font-weight:800}
details[open] summary::before{content:"－ "}
details[open] summary{border-bottom-left-radius:0;border-bottom-right-radius:0}

.empty{padding:24px;text-align:center;color:var(--muted);font-size:var(--fs-sm)}

/* 체크박스 라벨 (상담 신청내역 등) */
label.chk{display:inline-flex;align-items:center;gap:7px;margin:0;padding:9px 13px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-sm);
  font-size:var(--fs-sm);color:var(--ink);font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}
label.chk:hover{background:var(--navy-soft);border-color:#cdd6e6}
label.chk input{width:auto;margin:0;accent-color:var(--brand)}
label.chk:has(input:checked){background:var(--gold-soft);border-color:var(--gold-line);color:var(--brand-ink)}
.kpi .n .won{font-size:14px;color:var(--muted);font-weight:600}

textarea#s,textarea#d{font-family:"Pretendard","맑은 고딕",ui-monospace,monospace;font-size:var(--fs-sm);line-height:1.6}

/* ---------- 14) Stat 카드 (대시보드 상단 — 참고 양식의 컬러 스탯카드) ---------- */
.stat{
  position:relative;overflow:hidden;border-radius:var(--r-lg);padding:18px 20px;
  border:1px solid var(--line);background:var(--surface);box-shadow:var(--sh-1);
  transition:transform .16s,box-shadow .16s;
}
.stat:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.stat .s-label{font-size:12.5px;font-weight:700;opacity:.85;display:flex;align-items:center;gap:7px}
.stat .s-value{font-size:29px;font-weight:800;letter-spacing:-.025em;line-height:1.15;
  margin-top:6px;font-variant-numeric:tabular-nums}
.stat .s-hint{font-size:11.5px;margin-top:6px;opacity:.75}
.stat.navy{background:linear-gradient(135deg,#24385f,#16233f);color:#fff;border-color:#16233f}
.stat.navy .s-hint a{color:#e4c87e}
.stat.gold{background:linear-gradient(135deg,#e4c87e,#c8a24a);color:#1b2a4a;border-color:#c8a24a}
.stat.line{border-left:4px solid var(--gold)}
.stat .s-spark{position:absolute;right:12px;bottom:8px;opacity:.9}

/* ---------- 14-0) 사이드바 사용자 표시 ---------- */
.side-user{margin:2px 4px 4px;padding:10px 12px;border-radius:12px;
  background:rgba(200,162,74,.12);border:1px solid rgba(200,162,74,.3)}
.side-user .su-name{font-weight:800;color:#fff;font-size:14px}
.side-user .su-role{font-size:11px;color:#c8a24a;font-weight:700;margin-top:1px}

/* ---------- 14-0-1) 대시보드 히어로 (시작화면 양식) ---------- */
.hero{
  background:linear-gradient(140deg,#1e3055 0%,#15233f 55%,#101b31 100%);
  border-radius:var(--r-xl);padding:34px clamp(20px,4vw,44px);margin-bottom:var(--sp-5);
  color:#fff;text-align:center;box-shadow:var(--sh-2);
  border:1px solid rgba(200,162,74,.3);position:relative;overflow:hidden;
}
.hero::after{content:"";position:absolute;right:-70px;top:-70px;width:230px;height:230px;
  border-radius:50%;background:radial-gradient(circle,rgba(200,162,74,.2),transparent 70%)}
.hero .h-title{font-size:clamp(20px,2.6vw,27px);font-weight:800;letter-spacing:-.02em;margin:0;color:#dcbb66}
.hero .h-sub{color:#93a0bb;font-size:13.5px;margin-top:6px}
.hero .h-search{max-width:560px;margin:18px auto 0}
.hero .h-search input{
  padding:14px 22px;border-radius:16px;border:1px solid rgba(255,255,255,.18);
  background:rgba(255,255,255,.08);color:#fff;font-size:15px;backdrop-filter:blur(4px);
}
.hero .h-search input::placeholder{color:#8d99b5}
.hero .h-search input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(200,162,74,.3)}
.hero .h-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:14px;position:relative}
.hero .h-chip{
  padding:8px 16px;border-radius:var(--r-pill);font-size:13px;font-weight:700;
  background:rgba(255,255,255,.09);color:#d7deec;border:1px solid rgba(255,255,255,.14);
  transition:background .15s,color .15s;
}
.hero .h-chip:hover{background:rgba(200,162,74,.28);color:#fff;text-decoration:none;border-color:rgba(200,162,74,.5)}

/* ---------- 14-0-2) 로그인/설정 풀스크린 히어로 ---------- */
.hero-screen{
  min-height:100vh;display:grid;place-items:center;padding:30px 16px;
  background:linear-gradient(150deg,#1e3055 0%,#15233f 45%,#0d1729 100%);
  margin:calc(-1 * clamp(20px,3vw,32px)) calc(-1 * clamp(15px,3vw,22px));
}
.hero-inner{text-align:center;max-width:560px;width:100%}
.hero-mark{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:18px;
  background:linear-gradient(135deg,#dcbb66,#c8a24a);font-size:32px;margin-bottom:18px;
  box-shadow:0 6px 24px rgba(200,162,74,.4)}
.hero-title{color:#fff;font-size:clamp(22px,3vw,30px);font-weight:800;letter-spacing:-.02em;line-height:1.35;margin:0}
.hero-sub{color:#93a0bb;font-size:14px;margin-top:10px}
.hero-box{
  max-width:420px;margin:22px auto 0;padding:22px;border-radius:18px;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(6px);
}
.hero-box input{
  margin-bottom:8px;padding:12px 16px;border-radius:12px;font-size:15px;
  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.16);color:#fff;
}
.hero-box input::placeholder{color:#8d99b5}
.hero-box input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(200,162,74,.3)}
.hero-chips{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.hero-chip{padding:7px 14px;border-radius:var(--r-pill);font-size:12px;font-weight:600;
  background:rgba(255,255,255,.07);color:#a9b4cc;border:1px solid rgba(255,255,255,.12)}

/* ---------- 14-0-3) 월간 캘린더 (회사 스케줄표 양식) ---------- */
table.cal{table-layout:fixed;min-width:760px}
table.cal th{text-align:center;background:var(--brand);color:#fff;font-size:12.5px;padding:8px}
table.cal th.sun{color:#ffb3ab}
table.cal th.sat{color:#a8c4ff}
table.cal td{vertical-align:top;height:86px;padding:6px 7px;border:1px solid var(--line-soft);font-size:12px}
table.cal td.out{background:var(--surface-2);opacity:.45}
table.cal td.today{background:var(--gold-soft);box-shadow:inset 0 0 0 2px var(--gold)}
.cal-day{font-weight:800;color:var(--brand-ink);font-size:12.5px;margin-bottom:4px}
.cal-day.sun{color:#d64545}
.cal-day.sat{color:#3b6fd4}
.cal-item{margin-top:3px;padding:3px 7px;border-radius:7px;font-size:11.5px;font-weight:600;line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-item.meet{background:var(--gold-soft);color:#8a6516;border:1px solid var(--gold-line)}
.cal-item.meet a{color:#8a6516}
.cal-item.co{background:var(--navy-soft);color:var(--brand-ink);border:1px solid #d3ddf0}
.cal-x{border:none;background:none;color:var(--danger);cursor:pointer;font-weight:800;padding:0 2px;font-size:12px}
/* 2개월 나란히(작은 캘린더) — 좁은 화면에선 세로 스택 */
.cal-duo{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:10px}
.cal-duo table.cal{min-width:0;width:100%}
.cal-duo table.cal th{font-size:11px;padding:5px}
.cal-duo table.cal td{height:56px;padding:3px 4px;font-size:10.5px}
.cal-duo .cal-day{font-size:11px;margin-bottom:2px}
.cal-duo .cal-item{font-size:10px;padding:2px 5px;margin-top:2px}
.cal-duo .cal-title{font-weight:800;color:var(--brand-ink);font-size:13.5px;margin:2px 0 6px;text-align:center}
@media (max-width: 860px){.cal-duo{grid-template-columns:1fr}}

/* ---------- 14-0-3b) 고객 상세 탭 내비게이션 ---------- */
.tabnav{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 14px;
  padding:8px 10px;background:var(--surface-2);border:1px solid var(--line-soft);border-radius:12px}
.tabnav-sep{width:1px;height:20px;background:var(--line-soft);margin:0 4px}
@media (max-width: 700px){.tabnav-sep{display:none}}

/* ---------- 14-0-4) 진행 현황판(파이프라인 보드) ---------- */
.pipe-board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;align-items:start}
.pipe-col{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;padding:10px;min-height:120px}
.pipe-head{display:flex;justify-content:space-between;align-items:center;gap:6px;
  font-weight:800;font-size:13px;color:var(--brand-ink);padding:4px 4px 10px;
  border-bottom:2px solid var(--line)}
.pipe-head.hot{border-bottom-color:var(--gold)}
.pipe-head.done{border-bottom-color:var(--ok-line)}
.pipe-card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:9px 11px;margin-top:8px;box-shadow:var(--sh-1);transition:transform .14s,box-shadow .14s}
.pipe-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2);text-decoration:none}
.pc-name{font-weight:800;font-size:13px;color:var(--brand-ink)}
.pc-meta{font-size:11px;color:var(--muted);margin-top:2px}
.pc-appt{font-size:11px;color:var(--ink-soft);margin-top:4px;background:var(--line-soft);
  border-radius:6px;padding:2px 7px;display:inline-block}
.pc-appt.soon{background:var(--gold-soft);color:#8a6516;font-weight:700;border:1px solid var(--gold-line)}
.pipe-empty{text-align:center;color:var(--muted);font-size:12px;padding:14px 0}
@media (max-width:1100px){.pipe-board{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:640px){.pipe-board{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* ---------- 14-1) 증시현황 ---------- */
.up{color:#d64545;font-weight:700}       /* 국내 관례: 상승=빨강 */
.down{color:#3b6fd4;font-weight:700}     /* 하락=파랑 */
.flat{color:var(--muted);font-weight:700}
.mkt-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr))}
.mkt-card{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:16px 18px;box-shadow:var(--sh-1);transition:transform .16s,box-shadow .16s;
}
.mkt-card:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.mkt-card .m-name{font-size:13px;font-weight:700;color:var(--ink-soft);display:flex;gap:6px;align-items:center}
.mkt-card .m-price{font-size:24px;font-weight:800;color:var(--brand-ink);letter-spacing:-.02em;
  margin-top:4px;font-variant-numeric:tabular-nums}
.mkt-card .m-chg{font-size:12.5px;margin-top:2px;font-variant-numeric:tabular-nums}
.mkt-card svg{display:block;width:100%;height:44px;margin-top:8px}
.mkt-strip{display:flex;gap:10px;flex-wrap:wrap}
.mkt-chip{
  flex:1 1 150px;display:flex;align-items:center;justify-content:space-between;gap:10px;
  background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:10px 14px;
  box-shadow:var(--sh-1);font-size:13px;
}
.mkt-chip .c-name{font-weight:700;color:var(--ink-soft);font-size:12px}
.mkt-chip .c-price{font-weight:800;color:var(--brand-ink);font-variant-numeric:tabular-nums}
.mkt-chip .c-chg{font-size:11.5px;font-variant-numeric:tabular-nums}
.mkt-table td,.mkt-table th{padding:9px 12px}
.mkt-table .t-spark svg{display:block;width:90px;height:26px}
@media (max-width:900px){.mkt-grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.mkt-grid{grid-template-columns:1fr}}

/* ---------- 13) Responsive ---------- */
@media (max-width:960px){
  .shell{flex-direction:column}
  .sidebar{position:static;height:auto;flex:none;flex-direction:row;flex-wrap:wrap;
    align-items:center;gap:4px;padding:10px 12px}
  .side-brand{padding:0 8px;border-bottom:0;margin-bottom:0}
  .side-brand .bname{display:none}
  .side-sec{display:none}
  .side-nav{flex-direction:row;flex-wrap:wrap}
  .side-nav a{padding:7px 10px;font-size:13px}
  .side-foot{margin-top:0;margin-left:auto;padding-top:0;border-top:0}
  .mainbar{position:static}
}
@media (max-width:820px){
  .grid.cols-3{grid-template-columns:1fr 1fr}
  .grid.cols-4{grid-template-columns:1fr 1fr}
  .tabs{position:static}
}
@media (max-width:640px){
  .grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}
  .topbar{flex-direction:column;align-items:stretch;gap:9px}
  .topbar nav{justify-content:flex-start;overflow-x:auto}
  .card{padding:var(--sp-4)}
  th,td{padding:9px 10px}
  .card>table{display:block;overflow-x:auto;white-space:nowrap}
}

/* ---------- 15) Report (인쇄/PDF) ---------- */
.report-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;
  padding:6px 4px 16px;margin-bottom:16px;border-bottom:3px solid var(--gold)}
.rh-brand{font-size:15px;font-weight:800;color:var(--brand)}
.rh-title{font-size:24px;font-weight:800;color:var(--brand-ink);letter-spacing:-.02em}
.rh-meta{text-align:right;font-size:14px}
.report-foot{margin:18px 4px 0;font-size:11.5px;color:var(--muted);line-height:1.6;
  border-top:1px solid var(--line);padding-top:12px}

/* 인쇄 요약 스트립 */
.report-summary{display:flex;flex-wrap:wrap;gap:8px;margin:0 4px 16px}
.rs-item{flex:1 1 120px;border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:#fbfcfe}
.rs-item .rl{font-size:11px;color:var(--muted);margin-bottom:3px}
.rs-item .rv{font-size:13px;font-weight:700;color:var(--brand-ink)}

@media print{
  @page{margin:15mm 14mm}
  *{-webkit-print-color-adjust:exact !important;print-color-adjust:exact !important}
  .topbar,.sidebar,.mainbar,.foot,.noprint{display:none !important}
  .shell{display:block}
  html,body{background:#fff;font-size:11.5px;-webkit-text-size-adjust:100%}
  .container{margin:0;max-width:none;padding:0}
  .report{counter-reset:none}
  .card{box-shadow:none;border:1px solid #cfd6e4;padding:11px 13px;margin-bottom:11px;
    break-inside:avoid;page-break-inside:avoid}
  .kpi{box-shadow:none;border:1px solid #cfd6e4}
  h1{font-size:19px}
  h2{font-size:14.5px;break-after:avoid;page-break-after:avoid}
  h3{font-size:12.5px;break-after:avoid;page-break-after:avoid}
  h2+*,h3+*{break-before:avoid}
  table{break-inside:auto}
  thead{display:table-header-group}          /* 표 머리글 페이지마다 반복 */
  tr{break-inside:avoid;page-break-inside:avoid}
  .grid{break-inside:avoid}
  svg{max-width:100%!important;height:auto}
  a{color:inherit;text-decoration:none}
  .report-head{break-after:avoid}
  .report-summary{break-inside:avoid;break-after:avoid}
  .report-foot{break-before:avoid}
}

/* ---------- 16) Motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{transition:none !important;animation:none !important}
}
