/* ============ 보장 리모델링 스튜디오 — v7 리디자인 ============ */
:root{
  /* neutrals */
  --surface-1:#ffffff; --page:#f4f5f8; --surface-2:#fafbfc;
  --ink-1:#12141a; --ink-2:#565d6b; --ink-3:#98a0ad;
  --grid:#ecedf1; --axis:#dcdfe6; --ring:rgba(18,20,26,.08);
  /* brand accent — refined blue */
  --accent:#2f6bff; --accent-strong:#1e50e6; --accent-soft:#edf2ff; --accent-ink:#1c46c9;
  /* semantic */
  --s1:#2f6bff; --s2:#12a150; --s3:#e0912a; --s4:#0f8a45;
  --s5:#5b53e0; --s6:#e5484d; --s7:#d55181; --s8:#e0692e;
  --good:#12a150; --warn:#e0912a; --serious:#e0692e; --critical:#e5484d;
  --good-text:#0f8a45;
  --good-soft:#e7f6ee; --warn-soft:#fdf3e3; --bad-soft:#fdecec;
  --radius:16px; --radius-sm:11px;
  --shadow-sm:0 1px 2px rgba(16,24,40,.05), 0 1px 3px rgba(16,24,40,.04);
  --shadow-md:0 4px 14px rgba(16,24,40,.07), 0 2px 5px rgba(16,24,40,.04);
  --font:"Pretendard Variable",Pretendard,-apple-system,"Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
}
@media (prefers-color-scheme: dark){
  :root{
    --surface-1:#16181d; --surface-2:#1b1e24; --page:#0e0f13;
    --ink-1:#f2f3f5; --ink-2:#a6adba; --ink-3:#6e7683;
    --grid:#262930; --axis:#333843; --ring:rgba(255,255,255,.08);
    --accent:#5b8bff; --accent-strong:#7aa2ff; --accent-soft:#1a2440; --accent-ink:#a9c2ff;
    --s1:#5b8bff; --s2:#2bb56b; --s3:#d99a3f; --s4:#2bb56b; --s6:#f0686d;
    --good:#2bb56b; --warn:#d99a3f; --serious:#e0783e; --critical:#f0686d; --good-text:#4cc98a;
    --good-soft:#132a1e; --warn-soft:#2a2213; --bad-soft:#2c1618;
    --shadow-sm:0 1px 2px rgba(0,0,0,.4); --shadow-md:0 6px 20px rgba(0,0,0,.5);
  }
}

*{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--page);color:var(--ink-1);line-height:1.55;
  font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  word-break:keep-all;letter-spacing:-.005em}
button{font-family:inherit;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:.92rem;color:var(--ink-1);background:var(--surface-1);
  border:1px solid var(--axis);border-radius:10px;padding:.55rem .7rem;transition:border-color .12s,box-shadow .12s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 16%,transparent)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{letter-spacing:-.02em}
::selection{background:color-mix(in srgb,var(--accent) 22%,transparent)}
.hidden{display:none!important}

#app{display:flex;min-height:100vh}

/* ============ 사이드바 ============ */
#sidebar{width:252px;flex:0 0 252px;background:var(--surface-1);border-right:1px solid var(--grid);
  display:flex;flex-direction:column;position:sticky;top:0;height:100vh;padding:1.15rem .8rem}
.brand{display:flex;gap:.65rem;align-items:center;padding:.35rem .45rem 1.2rem}
.brand-mark{width:36px;height:36px;border-radius:11px;flex:0 0 36px;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,#2f6bff,#1e50e6);box-shadow:0 4px 12px color-mix(in srgb,var(--accent) 38%,transparent)}
.brand-mark svg{width:21px;height:21px}
.brand-name{font-weight:800;font-size:1rem;letter-spacing:-.03em;color:var(--ink-1)}
.brand-sub{font-size:.64rem;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;font-weight:600;margin-top:1px}
#nav{display:flex;flex-direction:column;gap:1px;margin-top:.2rem}
.nav-item{position:relative;display:flex;align-items:center;gap:.6rem;padding:.62rem .7rem;border:0;background:none;
  border-radius:10px;color:var(--ink-2);font-size:.9rem;text-align:left;font-weight:600;transition:background .12s,color .12s}
.nav-item:hover:not(:disabled){background:var(--surface-2);color:var(--ink-1)}
.nav-item.active{background:var(--accent-soft);color:var(--accent-ink);font-weight:700}
.nav-item.active::before{content:"";position:absolute;left:-.8rem;top:50%;transform:translateY(-50%);
  width:3px;height:1.15rem;border-radius:0 3px 3px 0;background:var(--accent)}
.nav-item:disabled{opacity:.4;cursor:not-allowed}
.nav-ico{font-size:1.02rem;width:1.35rem;text-align:center;filter:grayscale(.15)}
.customer-chip{margin-top:1rem;padding:.8rem .85rem;border:1px solid var(--grid);border-radius:13px;background:var(--surface-2)}
.cc-name{font-weight:800;letter-spacing:-.02em}
.cc-meta{font-size:.78rem;color:var(--ink-2);margin-top:1px}
.cc-premium{font-size:.85rem;color:var(--accent-ink);font-weight:700;margin-top:.3rem}
.sidebar-foot{margin-top:auto;font-size:.7rem;color:var(--ink-3);line-height:1.6;padding:.7rem .45rem 0;
  border-top:1px solid var(--grid)}

/* ============ 메인 ============ */
#main{flex:1;padding:2rem 2.4rem 4.5rem;max-width:1200px}
.view{display:none}
.view.active{display:block;animation:viewfade .22s ease}
@keyframes viewfade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.view-head{margin-bottom:1.5rem}
.view-head h1{font-size:1.6rem;letter-spacing:-.03em;font-weight:800}
.lead{color:var(--ink-2);margin-top:.4rem;max-width:62rem;font-size:.95rem;line-height:1.6}

.panel{background:var(--surface-1);border:1px solid var(--grid);border-radius:var(--radius);
  padding:1.3rem 1.4rem;margin-bottom:1.2rem;box-shadow:var(--shadow-sm)}
.panel h2{font-size:1.05rem;margin-bottom:.9rem;letter-spacing:-.02em;font-weight:800;display:flex;align-items:baseline;flex-wrap:wrap;gap:.2rem}
.h-note{font-size:.76rem;color:var(--ink-3);font-weight:500;margin-left:.45rem}

.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin:1rem 0}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin:0 0 1.2rem}
@media(max-width:900px){.grid-3,.grid-4{grid-template-columns:1fr 1fr}}

/* 스탯 타일 */
.stat{background:var(--surface-1);border:1px solid var(--grid);border-radius:var(--radius);padding:1.05rem 1.15rem;
  box-shadow:var(--shadow-sm);position:relative;overflow:hidden}
.stat .k{font-size:.76rem;color:var(--ink-2);font-weight:600}
.stat .v{font-size:1.6rem;font-weight:800;letter-spacing:-.03em;margin-top:.2rem}
.stat .d{font-size:.74rem;color:var(--ink-3);margin-top:.2rem}
.stat .v .unit{font-size:.85rem;font-weight:600;color:var(--ink-2);margin-left:2px}
.stat.accent::after,.stat.warn-tile::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}
.stat.accent::after{background:var(--accent)}
.stat.warn-tile::after{background:var(--serious)}

/* ============ 업로드 ============ */
.dropzone{border:1.5px dashed var(--axis);border-radius:20px;background:var(--surface-1);
  padding:3.6rem 1rem;text-align:center;transition:.15s;cursor:pointer;margin-bottom:1rem;box-shadow:var(--shadow-sm)}
.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}
.dz-icon{font-size:2.1rem}
.dz-title{font-weight:800;font-size:1.08rem;margin-top:.5rem;letter-spacing:-.02em}
.dz-sub{color:var(--ink-3);font-size:.84rem;margin-top:.25rem}
.parse-progress{margin:1rem 0}
.pp-bar{height:8px;background:var(--grid);border-radius:99px;overflow:hidden}
.pp-fill{height:100%;width:0%;background:var(--s1);border-radius:99px;transition:width .2s}
.pp-label{font-size:.85rem;color:var(--ink-2);margin-top:.4rem}
.privacy-note{font-size:.8rem;color:var(--ink-3);border:1px solid var(--grid);border-radius:12px;
  padding:.8rem 1rem;margin-top:1.2rem;background:var(--surface-1)}

/* 콜아웃 */
.callout{border-radius:13px;padding:.9rem 1.05rem;margin:.85rem 0;font-size:.9rem;border:1px solid var(--grid);
  background:var(--surface-2);line-height:1.6}
.callout.good{border-color:color-mix(in srgb,var(--good) 25%,var(--grid));background:var(--good-soft)}
.callout.info{border-color:color-mix(in srgb,var(--accent) 22%,var(--grid));background:var(--accent-soft)}
.callout.warn{border-color:color-mix(in srgb,var(--warn) 30%,var(--grid));background:var(--warn-soft)}
.callout.critical{border-color:color-mix(in srgb,var(--critical) 30%,var(--grid));background:var(--bad-soft)}

/* 버튼 */
.btn-primary{background:var(--accent);color:#fff;border:0;border-radius:11px;padding:.62rem 1.2rem;font-weight:700;font-size:.9rem;
  box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 32%,transparent);transition:transform .1s,box-shadow .12s,filter .12s}
.btn-primary:hover{filter:brightness(1.05);box-shadow:0 4px 14px color-mix(in srgb,var(--accent) 40%,transparent)}
.btn-primary:active{transform:translateY(1px)}
.btn-lg{padding:.85rem 1.6rem;font-size:1rem;border-radius:13px}
.btn-ghost{background:var(--surface-1);border:1px solid var(--axis);border-radius:11px;padding:.55rem 1.05rem;color:var(--ink-1);font-weight:600;font-size:.87rem;transition:.12s}
.btn-ghost:hover{border-color:var(--ink-3);background:var(--surface-2)}
.btn-ghost.danger{color:var(--critical);border-color:color-mix(in srgb,var(--critical) 40%,transparent)}
.btn-ghost.danger:hover{background:var(--bad-soft)}
.btn-row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin:.5rem 0}
.btn-sm{padding:.36rem .8rem;font-size:.8rem;border-radius:9px}

/* ============ 테이블 ============ */
.table-wrap{overflow-x:auto;border-radius:var(--radius-sm)}
table{width:100%;border-collapse:collapse;font-size:.87rem}
th{color:var(--ink-3);font-weight:700;text-align:left;border-bottom:1px solid var(--axis);padding:.6rem .65rem;
  white-space:nowrap;font-size:.72rem;letter-spacing:.03em;text-transform:uppercase}
td{border-bottom:1px solid var(--grid);padding:.58rem .65rem;vertical-align:top}
tbody tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
tr.cat-row td{background:var(--surface-2);font-weight:800;font-size:.78rem;color:var(--ink-2);letter-spacing:.01em}
tbody tr{transition:background .1s}
tbody tr:hover td{background:color-mix(in srgb,var(--accent) 4%,transparent)}
.zero{color:var(--ink-3)}
.neg{color:var(--critical);font-weight:700}
.pos{color:var(--good-text);font-weight:700}
.tag{display:inline-block;font-size:.7rem;font-weight:700;border-radius:7px;padding:.14rem .5rem;margin-right:.28rem;white-space:nowrap;letter-spacing:-.01em}
.tag.blue{background:var(--accent-soft);color:var(--accent-ink)}
.tag.green{background:var(--good-soft);color:var(--good-text)}
.tag.red{background:var(--bad-soft);color:var(--critical)}
.tag.amber{background:var(--warn-soft);color:#a8681a}
.tag.gray{background:var(--grid);color:var(--ink-2)}

/* ============ 가로 막대(커버리지) ============ */
.hbar-row{display:grid;grid-template-columns:170px 1fr 150px;gap:.7rem;align-items:center;padding:.42rem 0;border-bottom:1px solid var(--grid)}
.hbar-row:last-child{border-bottom:0}
.hbar-label{font-size:.85rem;font-weight:600;color:var(--ink-2)}
.hbar-track{position:relative;height:18px;background:var(--page);border-radius:4px;overflow:visible}
.hbar-fill{position:absolute;left:0;top:3px;height:12px;border-radius:0 4px 4px 0;background:var(--s1);min-width:2px}
.hbar-target{position:absolute;top:-3px;width:2px;height:24px;background:var(--ink-1);opacity:.55}
.hbar-val{font-size:.82rem;text-align:right;white-space:nowrap}
.hbar-val .pct{color:var(--ink-3);margin-left:.3rem}

/* ============ 시나리오 탭 ============ */
.scenario-tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.sc-tab{border:1px solid var(--grid);background:var(--surface-1);border-radius:12px;padding:.65rem 1.1rem;
  font-weight:700;font-size:.92rem;color:var(--ink-2);display:flex;gap:.5rem;align-items:center}
.sc-tab.active{border-color:var(--s1);color:var(--s1);background:color-mix(in srgb,var(--s1) 6%,var(--surface-1))}

/* 비용 스택 바 */
.coststack{margin:.7rem 0 .3rem}
.coststack-bar{display:flex;height:34px;border-radius:8px;overflow:hidden;background:var(--page)}
.coststack-seg{position:relative;min-width:3px}
.coststack-seg+.coststack-seg{border-left:2px solid var(--surface-1)}
.coststack-legend{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:.55rem;font-size:.8rem;color:var(--ink-2)}
.leg-dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:.32rem}

/* 커버 게이지 */
.covergauge{margin:.9rem 0}
.cg-track{position:relative;height:26px;border-radius:8px;background:var(--page);overflow:hidden}
.cg-fill{position:absolute;top:0;left:0;height:100%;}
.cg-label-row{display:flex;justify-content:space-between;font-size:.8rem;color:var(--ink-2);margin-top:.3rem}

/* 타임라인 */
.timeline{display:flex;gap:0;margin:.8rem 0;border-radius:8px;overflow:hidden}
.tl-seg{padding:.5rem .6rem;font-size:.75rem;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ============ 납입 보험료 전망 ============ */
.po-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem}
@media(max-width:820px){.po-grid{grid-template-columns:1fr 1fr}}
.po-item{background:var(--surface-2);border:1px solid var(--grid);border-radius:12px;padding:.85rem .95rem}
.po-item.hi{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 25%,var(--grid))}
.po-item .k{font-size:.75rem;color:var(--ink-2);font-weight:600}
.po-item .v{font-size:1.35rem;font-weight:800;letter-spacing:-.03em;margin-top:.15rem}
.po-item.hi .v{color:var(--accent-ink)}
.po-item .d{font-size:.72rem;color:var(--ink-3);margin-top:.15rem}

/* ============ 병기(stage) 칩 ============ */
.stage-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem}
.stage-chip{border:1px solid var(--grid);background:var(--surface-1);border-radius:9px;padding:.35rem .75rem;
  font-size:.82rem;font-weight:700;color:var(--ink-2);transition:.12s}
.stage-chip:hover{border-color:var(--accent);color:var(--accent-ink)}
.stage-chip.on{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 6px color-mix(in srgb,var(--accent) 30%,transparent)}
.stage-note{font-size:.8rem;color:var(--ink-2);background:var(--surface-2);border-radius:8px;padding:.4rem .7rem;margin-bottom:.9rem}
.case-tbl.stage-sum{margin-top:.4rem}
.case-tbl.stage-sum th{font-size:.72rem}
.case-tbl.stage-sum tr.srow-on td{background:var(--accent-soft);font-weight:700}
.case-after.muted{background:var(--surface-2);color:var(--ink-2)}

/* ============ 리모델링 워크벤치 ============ */
.diet-table{width:100%}
.diet-table td{vertical-align:middle}
.diet-sel{padding:.35rem .4rem;border:1px solid var(--grid);border-radius:8px;background:var(--surface-1);font-size:.8rem;font-weight:700;width:100%}
tr.diet-active{background:color-mix(in srgb,var(--s2) 7%,var(--surface-1))}
tr.diet-active .diet-sel{border-color:var(--s2);color:var(--good-text)}
.diet-meta{font-size:.72rem;color:var(--ink-2);margin-top:.15rem}
.cov-chip{display:inline-block;background:var(--page);border:1px solid var(--grid);border-radius:6px;
  padding:.08rem .45rem;font-size:.72rem;margin:.1rem .2rem .1rem 0;white-space:nowrap}
.preset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.8rem}
.preset-card{border:1px solid var(--grid);border-radius:12px;padding:.9rem;display:flex;flex-direction:column;gap:.45rem;background:var(--surface-1)}
.preset-card.added{opacity:.55}
.preset-head{display:flex;justify-content:space-between;align-items:baseline;gap:.4rem}
.preset-head b{font-size:.92rem}
.preset-prem{font-size:.82rem;font-weight:800;color:var(--critical);white-space:nowrap}
.preset-prem small{color:var(--ink-2);font-weight:500}
.preset-tpl{font-size:.66rem;font-weight:700;color:var(--ink-3);background:var(--surface-2);
  border:1px solid var(--grid);border-radius:6px;padding:.1rem .45rem;white-space:nowrap}
.cov-chip[data-edititem]{cursor:pointer}
.cov-chip[data-edititem]:hover{border-color:var(--accent);color:var(--accent-ink)}
.preset-desc{font-size:.78rem;color:var(--ink-2)}
.preset-card .btn-primary{margin-top:auto}
.diff-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
@media(max-width:800px){.diff-grid{grid-template-columns:1fr}}
.diff-cap{font-weight:800;font-size:.85rem;margin-bottom:.4rem;padding-bottom:.3rem;border-bottom:2px solid var(--grid)}
.diff-cap.up{color:var(--critical)}.diff-cap.dn{color:var(--good-text)}
.diff-row{display:flex;align-items:baseline;gap:.6rem;padding:.32rem 0;border-bottom:1px dashed var(--grid);font-size:.82rem}
.diff-name{flex:1;font-weight:600}
.diff-vals{color:var(--ink-2);white-space:nowrap}
.diff-delta{font-weight:800;white-space:nowrap;min-width:5.5rem;text-align:right}
.diff-delta.up{color:var(--critical)}.diff-delta.dn{color:var(--good-text)}
.diff-prem{margin-top:.8rem;background:var(--page);border-radius:10px;padding:.7rem 1rem;font-size:.9rem}
.diff-prem b.pos{color:var(--good-text)}.diff-prem b.neg{color:var(--critical)}

/* ============ 공용 모달 ============ */
.modal-backdrop{position:fixed;inset:0;background:rgba(16,20,28,.5);backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;z-index:100;padding:1rem;animation:mfade .15s ease}
@keyframes mfade{from{opacity:0}to{opacity:1}}
.modal{background:var(--surface-1);border-radius:18px;box-shadow:0 20px 60px rgba(16,24,40,.28);
  width:min(460px,100%);overflow:hidden;animation:mpop .18s cubic-bezier(.2,.8,.3,1)}
@keyframes mpop{from{transform:translateY(10px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.3rem .3rem}
.modal-head h3{font-size:1.08rem;font-weight:800;letter-spacing:-.02em}
.modal-x{border:0;background:none;font-size:1.05rem;color:var(--ink-3);border-radius:8px;width:2rem;height:2rem}
.modal-x:hover{background:var(--surface-2);color:var(--ink-1)}
.modal-body{padding:.6rem 1.3rem .3rem}
.mf-label{display:block;font-size:.85rem;font-weight:700;color:var(--ink-1);margin:.7rem 0 .3rem}
.mf-hint{display:block;font-weight:500;font-size:.74rem;color:var(--ink-3);margin-top:1px}
.mf-input{width:100%;font-size:.95rem}
.modal-foot{display:flex;justify-content:flex-end;gap:.6rem;padding:1rem 1.3rem 1.3rem}

/* ============ 사례 조회 (KCD 검색) ============ */
.scen-searchwrap{position:relative;margin-bottom:.8rem}
.scen-suggest{position:absolute;top:calc(100% + .3rem);left:0;right:0;z-index:20;background:var(--surface-1);
  border:1px solid var(--grid);border-radius:14px;box-shadow:var(--shadow-md);max-height:340px;overflow-y:auto;padding:.35rem}
.sug-item{display:flex;align-items:center;gap:.6rem;width:100%;text-align:left;border:0;background:none;
  padding:.55rem .7rem;border-radius:10px;font-size:.9rem;color:var(--ink-1)}
.sug-item:hover{background:var(--accent-soft)}
.sug-code{flex:0 0 auto;background:var(--ink-1);color:#fff;font-size:.68rem;font-weight:800;border-radius:6px;padding:.12rem .45rem;min-width:3rem;text-align:center}
.sug-name{flex:1;font-weight:600}
.sug-cat{flex:0 0 auto;font-size:.74rem;color:var(--accent-ink);background:var(--accent-soft);border-radius:6px;padding:.1rem .5rem}

/* 치료 과정 흐름 */
.case-flowwrap{display:grid;grid-template-columns:1fr 1.3fr;gap:1rem}
@media(max-width:820px){.case-flowwrap{grid-template-columns:1fr}}
.case-flow{list-style:none;margin:0;padding:.6rem .7rem;border-radius:12px;background:var(--surface-2);position:relative}
.case-flow.now{background:var(--accent-soft)}
.case-flow .cf-tag{display:inline-block;font-size:.68rem;font-weight:800;color:var(--ink-3);margin-bottom:.3rem;letter-spacing:.04em}
.case-flow.now .cf-tag{color:var(--accent-ink)}
.case-flow li{font-size:.82rem;padding:.22rem 0 .22rem 1.1rem;position:relative;color:var(--ink-1)}
.case-flow li:before{content:"›";position:absolute;left:.2rem;color:var(--ink-3)}
.case-flow.now li:before{color:var(--accent)}
.rider-adv{margin:0 0 1.2rem}
.rider-adv>summary{cursor:pointer;font-size:.86rem;font-weight:600;color:var(--ink-2);padding:.5rem .2rem;list-style:none}
.rider-adv>summary::-webkit-details-marker{display:none}
.rider-adv>summary:before{content:"▸ ";color:var(--accent)}
.rider-adv[open]>summary:before{content:"▾ "}
.scen-search{display:flex;align-items:center;gap:.5rem;background:var(--surface-1);border:1px solid var(--axis);
  border-radius:14px;padding:.4rem .5rem .4rem .9rem;box-shadow:var(--shadow-sm);margin-bottom:.8rem}
.scen-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent)}
.scen-search-ico{font-size:1rem;opacity:.6}
.scen-search input{flex:1;border:0;background:none;padding:.5rem .3rem;font-size:.95rem}
.scen-search input:focus{outline:none;box-shadow:none}
.scen-quick{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1rem}
.q-chip{border:1px solid var(--grid);background:var(--surface-1);border-radius:20px;padding:.35rem .8rem;
  font-size:.82rem;font-weight:600;color:var(--ink-1);transition:.12s}
.q-chip small{color:var(--ink-3);font-weight:500;margin-left:.1rem}
.q-chip:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}
.case-card{background:var(--surface-1);border:1px solid var(--grid);border-radius:var(--radius);
  padding:1.3rem 1.4rem;margin-bottom:1.1rem;box-shadow:var(--shadow-md)}
.case-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;margin:0 0 1.1rem}
@media(max-width:700px){.case-metrics{grid-template-columns:1fr}}
.cm-tile{border-radius:13px;padding:.9rem 1rem;border:1px solid var(--grid);background:var(--surface-2)}
.cm-tile .k{font-size:.76rem;color:var(--ink-2);font-weight:600}
.cm-tile .v{font-size:1.5rem;font-weight:800;letter-spacing:-.03em;margin-top:.15rem}
.cm-tile .d{font-size:.72rem;color:var(--ink-3);margin-top:.2rem}
.cm-tile.red{background:var(--bad-soft);border-color:color-mix(in srgb,var(--critical) 20%,var(--grid))}
.cm-tile.red .v{color:var(--critical)}
.cm-tile.blue{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 20%,var(--grid))}
.cm-tile.blue .v{color:var(--accent-ink)}
.cm-tile.amber{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 25%,var(--grid))}
.cm-tile.amber .v{color:#a8681a}
.cm-tile.green{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 22%,var(--grid))}
.cm-tile.green .v{color:var(--good-text)}
.case-tbl tr.case-sub td{border-top:1px solid var(--axis);font-weight:700;color:var(--ink-2)}
.case-income .ci-line{display:block;font-size:.74rem;color:var(--ink-3);font-weight:500;margin-top:.25rem}
.case-income .ci-line b{color:var(--ink-1)}
.case-income input{width:6.5rem;font-size:.8rem;padding:.2rem .4rem;text-align:right}
.tx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.7rem}
.tx-card{border:1px solid var(--grid);border-radius:12px;padding:.8rem .9rem;background:var(--surface-2)}
.tx-name{font-weight:800;font-size:.88rem;margin-bottom:.4rem;letter-spacing:-.01em}
.tx-row{display:flex;gap:.5rem;font-size:.78rem;padding:.18rem 0;border-top:1px dashed var(--grid)}
.tx-row em{flex:0 0 2.4rem;font-style:normal;font-weight:700;color:var(--ink-2)}
.case-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem;
  padding-bottom:.9rem;border-bottom:1px solid var(--grid)}
.case-head b{font-size:1.15rem;letter-spacing:-.02em;margin:0 .35rem}
.case-code{display:inline-block;background:var(--ink-1);color:#fff;font-size:.72rem;font-weight:800;border-radius:6px;
  padding:.12rem .5rem;letter-spacing:.03em;vertical-align:middle}
.case-verdict{font-size:.92rem;font-weight:800;padding:.35rem .9rem;border-radius:20px;white-space:nowrap}
.case-verdict.short{background:var(--bad-soft);color:var(--critical)}
.case-verdict.ok{background:var(--good-soft);color:var(--good-text)}
.case-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.4rem}
@media(max-width:820px){.case-grid{grid-template-columns:1fr}}
.case-cap{font-weight:800;font-size:.9rem;margin-bottom:.5rem}
.case-cap span{font-weight:500;font-size:.74rem;color:var(--ink-3);margin-left:.3rem}
.case-tbl{width:100%;font-size:.85rem}
.case-tbl td{padding:.5rem .3rem;border-bottom:1px solid var(--grid);vertical-align:top}
.case-note{font-size:.72rem;color:var(--ink-3);margin-top:.15rem}
.case-tbl tr.nopay td{color:var(--ink-3)}
.miss{color:var(--critical);font-weight:700;font-size:.82rem}
.case-tbl tr.case-total td{font-weight:800;border-top:2px solid var(--axis);border-bottom:0;font-size:.92rem}
.case-tbl tr.case-gap td{font-weight:700;border-bottom:0;padding-top:.2rem}
.case-after{margin-top:.7rem;background:var(--accent-soft);border-radius:10px;padding:.6rem .8rem;font-size:.85rem;color:var(--accent-ink)}
.case-after b{font-size:1rem}
.scen-featured{margin-top:.6rem;border:1px solid var(--grid);border-radius:12px;background:var(--surface-1);padding:.2rem .3rem}
.scen-featured>summary{cursor:pointer;padding:.7rem .9rem;font-weight:700;font-size:.9rem;color:var(--ink-2);list-style:none}
.scen-featured>summary::-webkit-details-marker{display:none}
.scen-featured>summary:before{content:"▸ ";color:var(--accent)}
.scen-featured[open]>summary:before{content:"▾ "}
.scen-featured>summary:hover{color:var(--ink-1)}
.scen-featured .scenario-tabs{padding:.4rem .9rem 0}
.scen-featured>#scen-content{padding:0 .3rem}

/* ============ 질병 시나리오 ============ */
.scen-hero{display:flex;gap:1rem;align-items:center;background:linear-gradient(135deg,var(--s1),#274b6d);
  color:#fff;border-radius:14px;padding:1.1rem 1.3rem;margin-bottom:1rem}
.scen-hero-emoji{font-size:2.4rem;line-height:1}
.scen-hero-name{font-size:1.15rem;font-weight:800}
.scen-hero-story{font-size:.86rem;color:#d3deea;margin-top:.25rem;line-height:1.5}
.scen-flowwrap .panel{margin:0}
.scen-flow{list-style:none;margin:.3rem 0 0;padding:0;counter-reset:sf}
.scen-flow li{position:relative;padding:.4rem .5rem .4rem 2rem;font-size:.85rem;border-left:2px solid var(--grid);margin-left:.6rem}
.scen-flow li:before{counter-increment:sf;content:counter(sf);position:absolute;left:-0.7rem;top:.35rem;
  width:1.4rem;height:1.4rem;border-radius:50%;background:var(--page);border:1px solid var(--grid);
  font-size:.7rem;font-weight:800;display:flex;align-items:center;justify-content:center;color:var(--ink-2)}
.scen-flow.now li:before{background:var(--s1);color:#fff;border-color:var(--s1)}
.scen-flow.now li{border-left-color:color-mix(in srgb,var(--s1) 40%,var(--grid))}
.pt{display:inline-block;padding:.12rem .5rem;border-radius:6px;font-size:.72rem;font-weight:800;white-space:nowrap}
.pt-gy{background:#e6f0e6;color:#1a7a1a}          /* 급여 */
.pt-sb{background:#fdf2dd;color:#9a6a06}          /* 선별급여 */
.pt-jb{background:#f0e7f8;color:#6b3fa0}          /* 전액본인 */
.pt-bg{background:#fce4e4;color:#c0392b}          /* 비급여 */
.pt-lv{background:#e7eef6;color:#274b6d}          /* 생활비 */
.scen-total td{font-weight:800;border-top:2px solid var(--grid);background:var(--page)}
.scen-silson{display:flex;flex-wrap:wrap;gap:1.2rem;align-items:center;margin-top:.7rem;
  background:var(--page);border-radius:10px;padding:.8rem 1rem}
.scen-silson>div{display:flex;flex-direction:column}
.scen-silson span{font-size:.74rem;color:var(--ink-2)}
.scen-silson b{font-size:1.1rem;font-weight:800}
.scen-silson-note{flex:1;min-width:14rem;font-size:.8rem;color:var(--ink-2);line-height:1.5;
  border-left:3px solid var(--s6);padding-left:.7rem;font-weight:400}
.scen-cover{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.scen-cover-col{flex:1;min-width:15rem}
.scc-cap{font-size:.82rem;font-weight:700;margin-bottom:.2rem}
.scen-cover-arrow{color:var(--s2);font-size:1.3rem;font-weight:800}
.scen-need{margin-top:.9rem;font-size:.82rem;line-height:1.9}
.scen-need b{display:block;margin-bottom:.3rem}
.need-chip{display:inline-block;background:var(--page);border:1px solid var(--grid);border-radius:20px;
  padding:.18rem .7rem;font-size:.75rem;margin:.15rem .25rem .15rem 0;color:var(--ink-1)}
.tkb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:.8rem}
.tkb-card{border:1px solid var(--grid);border-radius:12px;padding:.9rem;background:var(--surface-1)}
.tkb-head{display:flex;flex-direction:column;gap:.2rem;margin-bottom:.5rem}
.tkb-cat{align-self:flex-start;background:var(--s1);color:#fff;font-size:.68rem;font-weight:800;padding:.1rem .5rem;border-radius:5px}
.tkb-head b{font-size:.92rem}
.tkb-row{display:flex;gap:.5rem;font-size:.78rem;padding:.2rem 0;border-top:1px dashed var(--grid)}
.tkb-row em{flex:0 0 2.6rem;font-style:normal;font-weight:700;color:var(--ink-2)}
.tkb-row.warn span{color:#c0392b}
.tkb-riders{margin-top:.5rem}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:800px){.grid-2{grid-template-columns:1fr}}

/* ============ 리모델링 ============ */
.remodel-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem}
@media(max-width:1000px){.remodel-grid{grid-template-columns:1fr}}
.rec-item{display:flex;gap:.7rem;align-items:flex-start;padding:.7rem;border:1px solid var(--grid);border-radius:12px;margin-bottom:.6rem;background:var(--page)}
.rec-item label.switch{margin-top:.15rem}
.rec-body{flex:1}
.rec-title{font-weight:700;font-size:.92rem}
.rec-desc{font-size:.8rem;color:var(--ink-2);margin-top:.15rem}
.rec-amt{font-size:.88rem;font-weight:800;white-space:nowrap}
.rec-amt.add{color:var(--critical)}
.rec-amt.save{color:var(--good-text)}

.switch{position:relative;display:inline-block;width:38px;height:22px;flex:0 0 38px}
.switch input{opacity:0;width:0;height:0}
.slider{position:absolute;inset:0;background:var(--axis);border-radius:99px;transition:.15s}
.slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.15s}
.switch input:checked+.slider{background:var(--s1)}
.switch input:checked+.slider:before{transform:translateX(16px)}

.premium-meter{position:sticky;top:0;z-index:5;background:var(--surface-1);border:1px solid var(--grid);
  border-radius:var(--radius);padding:.9rem 1.1rem;margin-bottom:1rem;box-shadow:0 4px 14px rgba(0,0,0,.05)}
.pm-row{display:flex;gap:1.4rem;align-items:baseline;flex-wrap:wrap}
.pm-item .k{font-size:.72rem;color:var(--ink-2);font-weight:700}
.pm-item .v{font-size:1.25rem;font-weight:800}
.pm-delta{font-size:.9rem;font-weight:800;padding:.2rem .6rem;border-radius:8px}
.pm-delta.ok{background:color-mix(in srgb,var(--good) 12%,transparent);color:var(--good-text)}
.pm-delta.over{background:color-mix(in srgb,var(--critical) 12%,transparent);color:var(--critical)}

/* ============ 폼 ============ */
.form-row{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.7rem;max-width:480px}
.form-row label{font-size:.8rem;font-weight:700;color:var(--ink-2)}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;margin-bottom:.7rem}
.form-grid .form-row{margin:0;max-width:none}
.fine{font-size:.76rem;color:var(--ink-3);margin-top:.5rem}
.api-status{font-size:.82rem;font-weight:700}

/* 이벤트 카드 */
.event-card{display:flex;gap:.8rem;align-items:flex-start;border:1px solid var(--grid);border-radius:12px;padding:.7rem .9rem;margin-bottom:.55rem;background:var(--surface-1)}
.event-main{flex:1}
.event-title{font-weight:700;font-size:.92rem}
.event-meta{font-size:.78rem;color:var(--ink-3)}
.del-btn{background:none;border:0;color:var(--ink-3);font-size:1rem;padding:.2rem}
.del-btn:hover{color:var(--critical)}

/* 판정 결과 */
.verdict{border-radius:12px;border:1px solid var(--grid);padding:.8rem 1rem;margin-bottom:.6rem}
.verdict .v-head{display:flex;align-items:center;gap:.5rem;font-weight:800}
.v-detail{font-size:.84rem;color:var(--ink-2);margin-top:.35rem}
.v-detail li{margin-left:1.1rem;margin-top:.15rem}

/* 청구 체크리스트 */
.claim-item{display:flex;gap:.75rem;border:1px solid var(--grid);border-radius:12px;padding:.75rem .9rem;margin-bottom:.55rem;background:var(--surface-1);align-items:flex-start}
.claim-item.done{opacity:.55}
.claim-check{margin-top:.2rem;width:18px;height:18px;accent-color:var(--good)}
.claim-body{flex:1}
.claim-title{font-weight:700;font-size:.92rem}
.claim-sub{font-size:.8rem;color:var(--ink-2);margin-top:.1rem}
.claim-docs{font-size:.76rem;color:var(--ink-3);margin-top:.3rem}
.claim-amt{font-weight:800;white-space:nowrap}

/* 아코디언 */
.acc-item{border:1px solid var(--grid);border-radius:12px;margin-bottom:.5rem;overflow:hidden;background:var(--surface-1)}
.acc-head{display:flex;justify-content:space-between;align-items:center;gap:.8rem;padding:.7rem .9rem;cursor:pointer;background:none;border:0;width:100%;text-align:left}
.acc-head:hover{background:var(--page)}
.acc-title{font-weight:700;font-size:.9rem}
.acc-meta{font-size:.76rem;color:var(--ink-3)}
.acc-right{display:flex;gap:.7rem;align-items:center;white-space:nowrap;font-size:.85rem}
.acc-body{display:none;border-top:1px solid var(--grid);padding:.6rem .9rem}
.acc-item.open .acc-body{display:block}

/* AI 박스 */
.ai-box{border:1px dashed var(--s5);border-radius:12px;padding:.9rem 1rem;margin:1rem 0;background:color-mix(in srgb,var(--s5) 4%,var(--surface-1))}
.ai-box h3{font-size:.92rem;color:var(--s5);margin-bottom:.5rem}
.ai-box textarea{width:100%;min-height:110px;resize:vertical}
.ai-out{white-space:pre-wrap;font-size:.88rem;background:var(--surface-1);border:1px solid var(--grid);border-radius:10px;padding:.8rem;margin-top:.6rem;max-height:420px;overflow-y:auto}
.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--grid);border-top-color:var(--s5);border-radius:50%;animation:sp 1s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}

@media(max-width:760px){
  #app{flex-direction:column}
  #sidebar{width:100%;height:auto;position:static;flex-direction:column}
  #nav{flex-direction:row;overflow-x:auto}
  .nav-item{white-space:nowrap}
  #main{padding:1rem}
  .hbar-row{grid-template-columns:110px 1fr 110px}
}
@media print{
  #sidebar,.dropzone,.btn-row,.ai-box{display:none!important}
  .view{display:none!important}
  #view-report{display:block!important}
  #view-report .view-head,.rp-toolbar{display:none!important}
  #main{padding:0}
}

/* ============ 상담보고서 (A4 인쇄) ============ */
#report-root{background:#e4e4df;padding:1.2rem 0;border-radius:var(--radius);overflow-x:auto}
.rp-page{width:210mm;min-height:295mm;margin:0 auto 1.1rem;background:#fff;color:#1b1b1b;
  padding:16mm 15mm;box-shadow:0 3px 18px rgba(0,0,0,.14);box-sizing:border-box;position:relative;
  font-family:var(--font);font-size:9.3pt;line-height:1.62;font-variant-numeric:tabular-nums}

/* ---- 표지 ---- */
.rp-cover{display:flex;flex-direction:column;background:linear-gradient(160deg,#ffffff 55%,#f2f5f9 100%)}
.rp-cover-top{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid #dfe3e8;padding-bottom:3mm}
.rp-brand{letter-spacing:.32em;font-size:7.5pt;color:#2a5c8f;font-weight:800}
.rp-brand-date{font-size:8pt;color:#98a2ad}
.rp-cover-main{margin-top:30mm;flex:1}
.rp-title{font-size:31pt;font-weight:800;letter-spacing:-.02em;line-height:1.18;color:#12283f;margin:0}
.rp-cover-line{width:30mm;height:1.6mm;background:linear-gradient(90deg,#2a5c8f,#7aa7d4);margin:8mm 0 12mm;border-radius:1mm}
.rp-cover-name{font-size:18pt;font-weight:800;color:#12283f}
.rp-cover-name span{font-size:12pt;font-weight:600;color:#5a6774}
.rp-cover-meta{color:#5a6774;margin-top:1.5mm;font-size:9pt}
.rp-cover-cards{display:flex;gap:5mm;margin-bottom:18mm}
.rp-cc{flex:1;background:#fff;border:1px solid #dfe3e8;border-radius:3mm;padding:5mm;box-shadow:0 1px 4px rgba(18,40,63,.05)}
.rp-cc .k{font-size:7.5pt;color:#7d8894;font-weight:700;letter-spacing:.04em}
.rp-cc .v{font-size:17pt;font-weight:800;color:#12283f;margin-top:1mm}
.rp-cc .v small{font-size:9pt;color:#5a6774;font-weight:600;margin-left:.5mm}
.rp-cc .d{font-size:7.5pt;color:#98a2ad;margin-top:.5mm}
.rp-cc-g{display:flex;align-items:center;gap:3mm}
.rp-gauge{width:22mm;height:22mm;flex:0 0 22mm}
.rp-cc-g .gk{font-size:8pt;color:#5a6774;line-height:1.5}
.rp-cc-g .gk b{font-size:10.5pt;color:#12283f}
.rp-cover-foot{font-size:7pt;color:#98a2ad;border-top:1px solid #dfe3e8;padding-top:3mm;line-height:1.7}

/* ---- 섹션 ---- */
.rp-h2{display:flex;align-items:center;gap:3mm;margin:0 0 5mm;border-bottom:2px solid #12283f;padding-bottom:2.2mm;break-after:avoid}
.rp-h2 .no{background:#12283f;color:#fff;font-weight:800;font-size:9.5pt;border-radius:1.5mm;padding:1mm 2.6mm;letter-spacing:.05em}
.rp-h2 .t{font-size:13.5pt;font-weight:800;color:#12283f;letter-spacing:-.01em}
.rp-h2 small{margin-left:auto;font-size:7.5pt;color:#98a2ad;font-weight:500}
.rp-h3{font-size:10.5pt;font-weight:800;color:#2a5c8f;margin:6mm 0 2.2mm;break-after:avoid}
.rp-lead{color:#3a4550;margin:0 0 4mm}
.rp-fine{font-size:7.3pt;color:#98a2ad;margin-top:2mm}

/* 판정 요약 바 */
.rp-verdictbar{display:flex;gap:3mm;align-items:center;margin-bottom:5mm}
.rp-verdictbar>div{border-radius:2mm;padding:2.2mm 4mm;font-size:9pt;font-weight:600}
.rp-verdictbar b{font-size:12pt;margin-left:1mm}
.rp-verdictbar .ok{background:#e9f5e9;color:#1a7a1a}
.rp-verdictbar .wr{background:#fdf3e4;color:#b45f06}
.rp-verdictbar .bd{background:#fdeaea;color:#c0392b}
.rp-verdictbar .tt{margin-left:auto;background:none;color:#98a2ad;font-size:7.8pt;font-weight:500}

/* 핵심 소견 */
.rp-findings{display:flex;flex-direction:column;gap:2mm;margin-bottom:6mm}
.rp-find{display:flex;gap:2.5mm;align-items:flex-start;background:#f7f9fb;border-radius:2mm;padding:2.5mm 3.5mm;break-inside:avoid}
.rp-find p{margin:0;font-size:8.6pt;color:#28323c}
.ftag{flex:0 0 auto;font-size:7pt;font-weight:800;border-radius:1.5mm;padding:.8mm 2.2mm;margin-top:.4mm}
.f-강점{background:#e9f5e9;color:#1a7a1a}.f-보완{background:#fdf3e4;color:#b45f06}
.f-공백{background:#fdeaea;color:#c0392b}.f-중복{background:#eef1f7;color:#4a5a8f}.f-검토{background:#f0ecf7;color:#6a4a9f}

/* ---- 표 ---- */
.rp-table{width:100%;border-collapse:collapse;font-size:8.1pt;margin-bottom:3mm}
.rp-table thead{display:table-header-group}
.rp-table tr{break-inside:avoid}
.rp-table th{background:#12283f;color:#fff;font-weight:700;padding:1.8mm 2.2mm;text-align:left;font-size:7.6pt;letter-spacing:.02em}
.rp-table th:first-child{border-radius:1.5mm 0 0 0}.rp-table th:last-child{border-radius:0 1.5mm 0 0}
.rp-table th.r,.rp-table td.r{text-align:right}.rp-table th.c,.rp-table td.c{text-align:center}
.rp-table td{border-bottom:.4pt solid #e3e6ea;padding:1.6mm 2.2mm;vertical-align:top}
.rp-table tbody tr:nth-child(even) td{background:#f8fafc}
.rp-table td.cat{font-weight:800;color:#2a5c8f;white-space:nowrap}
.rp-table td.small,.rp-table td .small{font-size:7.4pt;color:#5a6774}
.rp-table .neg{color:#c0392b;font-weight:700}.rp-table .pos{color:#1a7a1a;font-weight:700}
.est{color:#b45f06;font-size:6.5pt;font-weight:700;margin-left:1mm}
.pill{display:inline-block;font-size:7.2pt;font-weight:800;border-radius:99px;padding:.6mm 2.6mm}
.p-ok{background:#e9f5e9;color:#1a7a1a}.p-mid{background:#fdf3e4;color:#b45f06}.p-bad{background:#fdeaea;color:#c0392b}

/* 비급여 카드 */
.rp-npcard{border:1px solid #e3e6ea;border-left:1mm solid #2a5c8f;border-radius:2mm;padding:3mm 4mm;margin-bottom:2.6mm;break-inside:avoid;background:#fff}
.rp-nphead{display:flex;align-items:center;gap:2.5mm;margin-bottom:1.2mm;font-size:9.6pt}
.npb{font-size:7pt;letter-spacing:.5mm}
.npb.g3{color:#1a7a1a}.npb.g2{color:#b45f06}.npb.g1{color:#98a2ad}
.rp-nptotal{margin-left:auto;font-weight:800;color:#12283f;font-size:9.6pt}
.rp-nptotal .none{color:#c0392b;font-style:normal;font-size:8pt}
.rp-nprow{font-size:7.9pt;color:#3a4550;margin-top:.8mm;display:flex;gap:2.5mm}
.rp-nprow em{flex:0 0 9mm;font-style:normal;font-weight:800;color:#2a5c8f;font-size:7.3pt;padding-top:.3mm}

/* 리모델링 미터 */
.rp-meter{display:flex;align-items:center;gap:4mm;background:#f7f9fb;border:1px solid #e3e6ea;border-radius:2.5mm;padding:4mm 5mm;margin-bottom:4mm;break-inside:avoid}
.rp-meter em{display:block;font-style:normal;font-size:7pt;color:#7d8894;font-weight:700}
.rp-meter b{font-size:11.5pt;color:#12283f}
.rp-meter b.neg{color:#c0392b}.rp-meter b.pos{color:#1a7a1a}
.rp-meter .arr{font-size:13pt;color:#c3ccd5;font-weight:300}
.rp-meter .delta{margin-left:auto;font-weight:800;font-size:11pt;color:#c0392b;text-align:right}
.rp-meter .delta.ok{color:#1a7a1a}
.rp-meter .delta small{display:block;font-size:7pt;font-weight:700}
.rp-warnbox{background:#fdf6e8;border-left:1mm solid #e8a200;border-radius:0 1.5mm 1.5mm 0;padding:2.2mm 3.2mm;font-size:7.8pt;margin:2mm 0;break-inside:avoid}
.rp-disclaimer{margin-top:7mm;background:#f7f9fb;border-radius:2mm;padding:4mm;font-size:7.6pt;color:#5a6774;break-inside:avoid}
.rp-disclaimer b{color:#12283f;display:block;margin-bottom:1mm}
.rp-disclaimer p{margin:0;line-height:1.8}
.rp-sign{display:flex;justify-content:space-between;margin-top:12mm;font-size:9pt;color:#28323c;break-inside:avoid}
.rp-sign em{font-style:normal;font-size:7.5pt;color:#7d8894;font-weight:700;display:block;margin-bottom:1mm}
.rp-toolbar{display:flex;gap:.6rem;margin-bottom:1rem;flex-wrap:wrap}

/* ---- 약관 분석 ---- */
.terms-drop{border:2px dashed var(--axis);border-radius:14px;background:var(--surface-1);padding:1.6rem 1rem;text-align:center;cursor:pointer;margin:.6rem 0}
.terms-drop:hover{border-color:var(--s1)}
.terms-hit{border:1px solid var(--grid);border-radius:12px;margin-bottom:.6rem;overflow:hidden}
.terms-hit-head{display:flex;gap:.6rem;align-items:center;padding:.6rem .9rem;background:var(--page);font-weight:700;font-size:.9rem}
.terms-hit-body{padding:.5rem .9rem}
.terms-ex{font-size:.8rem;color:var(--ink-2);border-left:3px solid var(--grid);padding:.3rem .6rem;margin:.35rem 0}
.terms-ex b{color:var(--s1)}

/* ---- 변경 전/후 비교표 (헤드라인) ---- */
.rp-cmp-hero{display:flex;justify-content:space-between;gap:6mm;align-items:stretch;
  background:linear-gradient(135deg,#12283f,#274b6d);color:#fff;border-radius:3mm;padding:6mm 7mm;margin-bottom:5mm}
.rp-cmp-hero-l{display:flex;flex-direction:column;justify-content:center}
.rp-cmp-kicker{font-size:8pt;letter-spacing:.22em;color:#9dc0e4;font-weight:700}
.rp-cmp-title{font-size:19pt;font-weight:800;margin-top:2mm;line-height:1.25;word-break:keep-all}
.rp-cmp-title b{color:#ffd34d}
.rp-cmp-sub{font-size:8.5pt;color:#b9c7d6;margin-top:2.5mm}
.rp-cmp-hero-r{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;text-align:right;min-width:52mm}
.rp-cmp-prem{font-size:8pt;color:#c6d3e0}
.rp-cmp-prem b{display:block;font-size:15pt;font-weight:800;color:#fff;margin-top:.5mm;font-variant-numeric:tabular-nums}
.rp-cmp-prem.after b{color:#ffd34d}
.rp-cmp-prem-arrow{font-size:11pt;font-weight:800;margin:1.5mm 0}
.rp-cmp-prem-arrow.down{color:#5fe08a}.rp-cmp-prem-arrow.up{color:#ffd34d}.rp-cmp-prem-arrow.eq{color:#c6d3e0}
.rp-cmp-badge{margin-top:2mm;font-size:8.5pt;font-weight:800;padding:1.5mm 4mm;border-radius:6mm}
.rp-cmp-badge.eq{background:#3f6690;color:#fff}.rp-cmp-badge.down{background:#5fe08a;color:#0b3d1f}.rp-cmp-badge.up{background:#ffd34d;color:#5a4700}
.rp-cmp-table td,.rp-cmp-table th{padding:2.4mm 3mm;font-size:9.2pt}
.rp-cmp-table thead th{background:#12283f;color:#fff}
.rp-cmp-name{font-weight:700;color:#1b2b3d}
.rp-cmp-note{display:block;font-size:7.3pt;color:#9098a3;font-weight:500;margin-top:.3mm}
.rp-cmp-before{color:#7b8794}
.rp-cmp-arr{color:#b9c2cc;font-size:8pt}
.rp-cmp-after{font-weight:700;color:#1b2b3d}
.rp-cmp-after.up{color:#c0392b}
.rp-cmp-after.dn{color:#1a7a1a}
.rp-cmp-table tr.rp-chg{background:#fff7ec}
.rp-cmp-table tr.rp-chg .rp-cmp-arr{color:#e08a2b}
.rp-noamt{color:#c0392b;font-style:normal;font-size:8pt}

/* ---- 인쇄 ---- */
@media print{
  body *{visibility:hidden}
  #report-root, #report-root *{visibility:visible}
  #report-root{position:absolute;left:0;top:0;width:100%;background:#fff;padding:0;overflow:visible}
  .rp-page{width:auto;min-height:0;margin:0;box-shadow:none;padding:10mm 9mm;page-break-after:always;background:#fff!important}
  .rp-page:last-child{page-break-after:auto}
  .rp-cover{height:275mm;page-break-inside:avoid}
  .rp-table thead{display:table-header-group}
  .rp-table tr,.rp-npcard,.rp-find,.rp-meter,.rp-cmp-hero{page-break-inside:avoid}
  .rp-cmp-hero{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .rp-h2,.rp-h3{page-break-after:avoid}
}
@page{size:A4;margin:9mm}

/* ============================================================
 * auth.js — 로그인 게이트 · 상단바 · 관리자 · 저장소 (v12)
 * ============================================================ */
#app{visibility:hidden}
body.authed #app{visibility:visible}

/* 로그인/가입 오버레이 */
#auth-overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;
  padding:24px;background:linear-gradient(150deg,var(--page),color-mix(in srgb,var(--accent) 8%,var(--page)));overflow:auto}
#auth-overlay.hidden{display:none}
.auth-card{width:100%;max-width:420px;background:var(--surface-1);border:1px solid var(--grid);
  border-radius:20px;box-shadow:var(--shadow-md);padding:30px 30px 26px}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.auth-mark{width:44px;height:44px;border-radius:12px;background:var(--accent-soft);display:grid;place-items:center}
.auth-mark svg{width:26px;height:26px}
.auth-title{font-weight:800;font-size:1.12rem;letter-spacing:-.03em}
.auth-sub{font-size:.8rem;color:var(--ink-2);margin-top:2px}
.auth-tabs{display:flex;gap:6px;background:var(--surface-2);border:1px solid var(--grid);border-radius:12px;padding:4px;margin-bottom:18px}
.auth-tab{flex:1;padding:9px;border:none;background:transparent;border-radius:9px;font-weight:700;font-size:.9rem;color:var(--ink-2);cursor:pointer}
.auth-tab.active{background:var(--surface-1);color:var(--accent-ink);box-shadow:var(--shadow-sm)}
.auth-form{display:flex;flex-direction:column}
.auth-form label{font-size:.82rem;font-weight:700;color:var(--ink-2);margin:11px 0 5px}
.auth-form label .req{color:var(--critical)}
.auth-form input{padding:11px 12px;border:1px solid var(--axis);border-radius:10px;font-size:.95rem}
.auth-submit{margin-top:20px;padding:12px;border:none;border-radius:11px;background:var(--accent);color:#fff;
  font-weight:800;font-size:.98rem;cursor:pointer;transition:background .12s}
.auth-submit:hover{background:var(--accent-strong)}
.auth-submit:disabled{opacity:.6;cursor:default}
.auth-foot{margin-top:16px;font-size:.8rem;color:var(--ink-3);text-align:center;line-height:1.5}
.auth-msg{padding:10px 12px;border-radius:10px;font-size:.85rem;margin-bottom:14px;font-weight:600}
.auth-msg.err{background:var(--bad-soft);color:var(--critical)}
.auth-msg.ok{background:var(--good-soft);color:var(--good-text)}

/* 상단바 */
#topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 16px;margin:-28px -28px 22px;background:var(--surface-1);
  border-bottom:1px solid var(--grid);position:sticky;top:0;z-index:60}
.tb-left,.tb-right{display:flex;align-items:center;gap:8px}
.tb-btn{padding:8px 13px;border:1px solid var(--axis);background:var(--surface-1);border-radius:9px;
  font-weight:700;font-size:.85rem;color:var(--ink-1);cursor:pointer;transition:.12s;white-space:nowrap}
.tb-btn:hover{background:var(--surface-2)}
.tb-btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}
.tb-btn.primary:hover{background:var(--accent-strong)}
.tb-btn.admin{background:var(--accent-soft);color:var(--accent-ink);border-color:transparent}
.tb-btn.ghost{background:transparent;color:var(--ink-2)}
.tb-btn.danger{background:var(--bad-soft);color:var(--critical);border-color:transparent}
.tb-btn:disabled{opacity:.5;cursor:default}
.tb-user{display:flex;flex-direction:column;line-height:1.2;text-align:right;margin:0 4px}
.tb-user b{font-size:.85rem}
.tb-user span{font-size:.72rem;color:var(--ink-3)}

/* auth 모달 */
.auth-modal-bk{position:fixed;inset:0;z-index:1100;background:rgba(16,20,30,.5);
  display:flex;align-items:center;justify-content:center;padding:24px}
.auth-modal-bk.hidden{display:none}
.auth-modal{width:100%;max-width:440px;background:var(--surface-1);border-radius:18px;box-shadow:var(--shadow-md);overflow:hidden}
.auth-modal.wide{max-width:820px}
.am-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--grid)}
.am-head h3{font-size:1.02rem;font-weight:800}
.am-x{border:none;background:transparent;font-size:1rem;cursor:pointer;color:var(--ink-3)}
.am-body{padding:18px 20px 22px;max-height:70vh;overflow:auto}
.mp-label{display:block;font-size:.85rem;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.mp-input{width:100%;padding:11px 12px;border:1px solid var(--axis);border-radius:10px;font-size:.95rem}
.mp-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}

/* 케이스 목록 */
.case-list{display:flex;flex-direction:column;gap:8px}
.case-row{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:12px 14px;border:1px solid var(--grid);border-radius:12px;background:var(--surface-2)}
.case-info b{font-size:.92rem}
.case-info span{display:block;font-size:.76rem;color:var(--ink-3);margin-top:2px}
.case-actions{display:flex;gap:6px}
.case-empty{padding:26px;text-align:center;color:var(--ink-3);font-size:.9rem}

/* 관리자 테이블 */
.admin-hint{font-size:.84rem;color:var(--ink-2);margin-bottom:14px}
.admin-table{width:100%;border-collapse:collapse;font-size:.85rem}
.admin-table th,.admin-table td{padding:10px 12px;border-bottom:1px solid var(--grid);text-align:left;vertical-align:top}
.admin-table th{font-size:.76rem;color:var(--ink-3);font-weight:700}
.admin-table .dim{color:var(--ink-3);font-size:.78rem}
.admin-acts{display:flex;flex-wrap:wrap;gap:5px}
.badge{display:inline-block;padding:2px 8px;border-radius:20px;font-size:.72rem;font-weight:700}
.badge.pending{background:var(--warn-soft);color:var(--warn)}
.badge.approved{background:var(--good-soft);color:var(--good-text)}
.badge.rejected{background:var(--bad-soft);color:var(--critical)}
.badge.admin{background:var(--accent-soft);color:var(--accent-ink)}

/* 수기 입력 패널 */
.manual-panel{margin-top:20px}
.manual-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:640px){.manual-grid{grid-template-columns:1fr}}

/* 토스트 */
.auth-toast{position:fixed;left:50%;bottom:30px;transform:translateX(-50%) translateY(20px);
  z-index:1200;background:var(--ink-1);color:var(--surface-1);padding:11px 20px;border-radius:11px;
  font-size:.88rem;font-weight:600;opacity:0;pointer-events:none;transition:.2s;box-shadow:var(--shadow-md)}
.auth-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.auth-toast.err{background:var(--critical);color:#fff}
.auth-toast.ok{background:var(--good);color:#fff}
