:root{--ink:#17221f;--muted:#4a5751;--line:#dce2dd;--teal:#176348;--sf:#0b6e99;--ok:#1f7a4a;--okbg:#e8f5ec;--plan:#6b4fa0;--planbg:#f1ecfa;--gap:#a8691b;--gapbg:#fdf3e2;--red:#b3261e;--redbg:#fbeceb}
*{box-sizing:border-box}
body{margin:0;background:#fff;color:var(--ink);font:16px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI','Apple SD Gothic Neo','Noto Sans KR',sans-serif;letter-spacing:-.02em;word-break:keep-all;overflow-wrap:break-word}
a{color:var(--sf);text-decoration:none}a:hover{text-decoration:underline}
button{font:inherit;background:#fff;border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:8px 14px;cursor:pointer}button:hover{background:#f4f7f5}button:disabled{opacity:.4;cursor:default}
:focus-visible{outline:3px solid var(--sf);outline-offset:3px}
h1,h2,h3,p{margin:0}p{color:var(--muted)}strong{color:var(--ink)}
.skip{position:fixed;top:-90px;left:20px;z-index:30;background:#fff;padding:10px}.skip:focus{top:8px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.tag{display:inline-block;font-size:12px;font-weight:650;line-height:1.3;padding:3px 8px;border-radius:999px;letter-spacing:0;vertical-align:middle;white-space:nowrap}
.tag.ok{background:var(--okbg);color:var(--ok)}.tag.plan{background:var(--planbg);color:var(--plan)}.tag.gap{background:var(--gapbg);color:var(--gap)}
.topbar{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:0 28px;background:#fff;min-height:56px}
.brand{font-size:18px;font-weight:750;color:var(--ink)}.brand span{font-size:13px;font-weight:650;color:#fff;background:var(--sf);border-radius:4px;padding:2px 7px;margin-left:8px;vertical-align:2px}
.scope{margin-left:auto;font-size:13px;color:var(--muted)}.proof-top{font-size:13px;font-weight:650}.topbar button{font-size:13px}

/* ---------- Deck ---------- */
.deck .slide{background:#fff}.deck .slide[hidden]{display:none}
.eyebrow{font-size:13px;color:var(--teal);font-weight:700;margin-bottom:10px;display:flex;gap:10px;align-items:center}
.deck h1,.deck h2{font-size:40px;line-height:1.16;font-weight:750;letter-spacing:-.035em;text-wrap:balance}
.deck h2{margin-bottom:14px}.deck h3{font-size:18px;line-height:1.3;margin-bottom:8px}
.lead{font-size:20px;line-height:1.5;margin-top:16px;max-width:1080px}.intro{font-size:16px;margin-bottom:14px}
.takeaway{font-size:17px;color:var(--ink);margin-top:14px;padding:10px 14px;border-left:4px solid var(--teal);background:#f6faf7}
.source{font-size:12.5px;line-height:1.45;margin-top:12px;color:var(--muted)}
.actor-line{font-size:14px;margin-top:10px}.actor-line.center{text-align:center;margin:8px 0 14px}
.fact-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:26px}
.fact-row div{border-top:3px solid var(--sf);padding-top:12px}.fact-row strong{display:block;font-size:21px}.fact-row span{display:block;font-size:14px;color:var(--muted);margin-top:4px}
.status-legend{font-size:14px;color:var(--muted);margin-top:22px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.status-legend .tag{margin-left:10px}.status-legend .tag:first-child{margin-left:0}
.map-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:14.5px;line-height:1.4}
.map-table th,.map-table td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.map-table thead th{font-size:13px;color:var(--muted);border-bottom:2px solid var(--ink);font-weight:650}
.map-table tbody th{font-weight:650;width:32%}.map-table td{color:var(--muted)}.map-table td b{color:var(--ink)}
.map-table.return tbody th{width:24%}.map-table tr.secrow{background:var(--planbg)}.map-table tr.rejrow{background:var(--redbg)}
.object-map{display:grid;grid-template-columns:1fr 220px 1.5fr;gap:18px;align-items:center;margin-top:6px}
.obj{border:1px solid var(--line);border-radius:10px;padding:14px 16px;background:#fff}.obj.center{border:2px solid var(--sf);text-align:center}
.obj p{font-size:14px}.obj code{display:block;font-size:12px;color:var(--muted);margin-top:6px}.obj-tab{display:inline-block;font-size:12px;color:var(--sf);font-weight:650;margin-bottom:4px}
.obj-links{display:flex;flex-direction:column;gap:56px;font-size:13px;color:var(--sf);font-weight:650;text-align:center}
.obj-stack{display:flex;flex-direction:column;gap:14px}
.calc-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:18px;font-size:14px}.calc-strip strong{margin-right:6px}.calc-strip span{border:1px solid var(--line);border-radius:6px;padding:4px 10px;color:var(--muted)}
.shot-split{display:grid;grid-template-columns:1.25fr 1fr;gap:24px;align-items:start}
.shot-frame{display:block;border:1px solid var(--line);border-radius:8px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.06)}
.shot-frame{height:470px}.shot-frame img{display:block;width:150%;max-width:none;height:auto}
.shot-facts dl{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin:0;font-size:14.5px}.shot-facts dt{color:var(--muted)}.shot-facts dd{margin:0;font-weight:600}
.status-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin-top:4px}
.status-row div{border:1px solid var(--line);border-radius:8px;padding:8px;text-align:center;font-size:13px;color:var(--muted);position:relative}
.status-row div b{display:block;font-size:15px;color:var(--ink)}.status-row div span{font-size:22px;font-weight:700;color:var(--ink);margin-right:2px}
.status-row .warn{background:var(--gapbg)}.status-row .stop{background:var(--redbg)}.status-row .good{background:var(--okbg)}
.case-pair{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.case{border:1px solid var(--line);border-radius:10px;padding:14px 16px}.case.ok{border-top:4px solid var(--ok)}.case.warn{border-top:4px solid var(--gap)}
.case ul,.three ul{margin:0;padding-left:18px;font-size:14.5px;color:var(--muted)}.case li,.three li{margin:3px 0}.case-state{font-size:14.5px;margin-top:8px}
.flow-frame{border:1px solid var(--line);border-radius:8px;padding:6px}
.flow-frame svg{display:block;width:100%;height:auto;max-height:520px}
.flow-frame text{text-anchor:middle;font-size:16px;font-weight:700;fill:var(--ink);letter-spacing:-.02em}
.flow-frame text.who{font-size:14px;font-weight:600;fill:#0b5878}.flow-frame text.tagt{font-size:12px;font-weight:500;fill:#5c6a63}.flow-frame text.back{font-size:13px;fill:#8a5414}
.flow-frame .n rect{fill:#fff;stroke:#7f938a;stroke-width:1.5}.flow-frame .n rect.prop{fill:var(--planbg);stroke:var(--plan);stroke-dasharray:6 4}
.flow-frame .n .dec{fill:#fff7dc;stroke:#c8a554;stroke-width:1.5}.flow-frame .n rect.rej{fill:var(--redbg);stroke:var(--red);stroke-width:2}.flow-frame .n rect.ok{fill:var(--okbg);stroke:var(--ok);stroke-width:2}
.flow-frame .e path{fill:none;stroke:#3d4f45;stroke-width:2;marker-end:url(#ah)}
.flow-frame .ea path{fill:none;stroke:#a8691b;stroke-width:1.8;stroke-dasharray:5 4;marker-end:url(#ahA)}
.flow-frame .fix rect{fill:var(--gapbg);stroke:#a8691b;stroke-dasharray:5 4}.flow-frame .fix text{font-size:13.5px;font-weight:650}
.flow-frame .sec rect{fill:var(--planbg);stroke:var(--plan);stroke-width:1.5;stroke-dasharray:7 4}.flow-frame .sec text{font-size:14px;fill:#47327a}.flow-frame .sec text.back{fill:#47327a;font-size:13px}.flow-frame .sec path{stroke:var(--plan);stroke-width:1.5;stroke-dasharray:4 4;fill:none}
.flow-frame .lbl text{font-size:13px;fill:#3d4f45;font-weight:650}.flow-frame text.foot{font-size:13.5px;font-weight:600;fill:var(--red)}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12.5px;color:var(--muted);margin-top:8px}
.lg{display:inline-block;width:22px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle;border:1.5px solid}.lg.n{border-color:#3d4f45;height:0;border-width:2px 0 0}.lg.fx{background:var(--gapbg);border-color:#a8691b;border-style:dashed}.lg.sc{background:var(--planbg);border-color:var(--plan);border-style:dashed}.lg.rj{background:var(--redbg);border-color:var(--red)}.lg.ok{background:var(--okbg);border-color:var(--ok)}.lg.pp{background:var(--planbg);border-color:var(--plan);border-style:dotted}
.three{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-top:4px}
.three article{border:1px solid var(--line);border-radius:10px;padding:14px 16px}.three article.gapcard{border-color:#e5c58e;background:#fffaf1}.three small{font-size:12.5px;color:var(--muted);display:block;margin-top:4px}.three ul{margin-bottom:10px}
.trace{list-style:none;padding:0;margin:4px 0 0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.trace li{border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}.trace li.ok{border-top:4px solid var(--ok)}.trace li.gap{border-top:4px solid var(--gap);background:#fffaf1}
.trace b{font-size:16px}.trace span{font-size:13.5px;color:#0b5878;font-weight:600}.trace em{font-style:normal;font-size:13.5px;color:var(--muted)}
.aside-note{margin-top:16px;border:1px dashed #9aa8a1;border-radius:10px;padding:12px 16px}.aside-note p{font-size:14.5px}.aside-note p+p{margin-top:6px}
.deck-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;border-top:1px solid var(--line);background:#fff;padding:8px 28px}
.nav-caption{display:flex;gap:12px;align-items:center;font-size:13px;min-width:220px}#slideCount{font-variant-numeric:tabular-nums;color:var(--teal);font-weight:700}
.slide-dots{display:flex;gap:6px}.slide-dots button{width:34px;height:34px;padding:0;font-size:13px;border:0}.slide-dots button[aria-current=true]{background:var(--ink);color:#fff}
.nav-buttons{display:flex;gap:8px}.nav-buttons button{font-size:14px}
@media screen{
 body.deck{height:100vh;height:100dvh;overflow:hidden;display:grid;grid-template-rows:56px minmax(0,1fr) 60px}
 .deck main#deck{position:relative;width:100%;height:100%;min-height:0;overflow:hidden}
 .deck .slide{position:absolute;left:0;top:0;width:100%;padding:22px 44px 18px;transform-origin:top left}
 .deck .slide h1:focus,.deck .slide h2:focus{outline:none}
 @media(max-width:800px){body.deck{grid-template-rows:48px minmax(0,1fr) 92px}.scope{display:none}.deck-nav{flex-wrap:wrap;padding:6px 14px;gap:4px 12px}.slide-dots{order:3;width:100%;justify-content:center}.slide-dots button{width:30px;height:30px}}
}
@media print{
 .topbar,.deck-nav,.skip{display:none!important}
 .deck .slide,.deck .slide[hidden]{display:block!important;position:static!important;transform:none!important;width:auto!important;padding:10mm 8mm;break-after:page}
 .deck .slide:last-child{break-after:auto}a{color:inherit}
}

/* ---------- Verification page ---------- */
body.proof{background:#fafbfa}
.proof main{max-width:1080px;margin:0 auto;padding:28px 24px 80px}
.proof h1{font-size:32px;line-height:1.2;margin-bottom:10px}.proof h2{font-size:22px;margin:0 0 8px}.proof h3{font-size:16px;margin:12px 0 6px}
.proof .intro-box{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:14px 0 22px}
.proof .intro-box p{margin:4px 0}.proof nav.toc{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:14px;margin-bottom:22px}
.proof section{background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px 20px;margin-bottom:16px;scroll-margin-top:12px}
.proof .meta{font-size:13px;color:var(--muted);margin-bottom:8px}
.proof ul{margin:6px 0;padding-left:20px}.proof li{margin:3px 0}
.proof details{margin-top:10px;border:1px solid var(--line);border-radius:8px;background:#f7f9f8}
.proof summary{cursor:pointer;padding:8px 12px;font-weight:650;font-size:14px}
.proof pre{margin:0;padding:10px 14px 14px;overflow-x:auto;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;word-break:break-all}
.proof table{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px}.proof th,.proof td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}.proof thead th{border-bottom:2px solid var(--ink)}
.proof .warnbox{border-left:4px solid var(--gap);background:var(--gapbg);padding:8px 12px;margin-top:10px;font-size:14px}

/* Final QA: diagrams remain explanatory; mobile is readable instead of miniature fit. */
.qa-diagram{overflow-x:auto;border:1px solid var(--line);border-radius:10px;margin:20px 0}.qa-diagram svg{display:block;width:100%;min-width:900px}.qa-diagram rect{fill:#fff;stroke:var(--line);stroke-width:2}.qa-diagram text{fill:var(--ink);font:600 17px system-ui;text-anchor:middle}.qa-diagram text.sub{font-size:14px;font-weight:400}.qa-diagram .connector{fill:none;stroke:var(--sf);stroke-width:2}
@media screen and (max-width:800px){body.deck{height:auto;min-height:100dvh;overflow:auto;display:block}.topbar{padding:12px 16px;flex-wrap:wrap}.deck main#deck{height:auto;overflow:visible}.deck .slide{position:relative!important;transform:none!important;width:auto!important;left:0!important;top:0!important;padding:24px 16px 40px}.deck h1,.deck h2{font-size:28px}.lead{font-size:18px}.fact-row,.case-pair,.shot-split,.three,.trace{grid-template-columns:1fr}.status-row{grid-template-columns:1fr 1fr}.shot-frame{height:auto}.shot-frame img{width:100%;max-width:100%}.deck-nav{position:sticky;bottom:0;padding:10px 12px;gap:8px}.nav-caption{min-width:0;flex:1}#slideTitle{display:none}.slide-dots{flex-wrap:wrap}.slide-dots button{min-width:30px;min-height:40px}.source{font-size:14px}}
.shot-frame img{width:100%;height:100%;object-fit:contain;max-width:100%}
svg[aria-labelledby="qa-architecture"] > .connector:last-of-type{stroke-dasharray:7 6}

.fresh-home-proof{margin:20px 0 24px;border:1px solid var(--line);border-radius:10px;padding:20px;background:#fff}.fresh-home-proof img{display:block;width:100%;height:auto}.fresh-home-proof p{margin:12px 0 0;color:var(--muted);font-size:14px}
