/* ===== Theme tokens ===== */
:root{
  --bg:#ffffff; --bg-2:#f6f8fa; --card:#ffffff; --card-2:#eef2f7; --band:#e9eef5;
  --text:#1b2733; --muted:#5b6b7b; --border:#cdd6e0; --border-soft:#e3e9f0;
  --accent:#2f6fed; --accent-soft:#e7f0ff; --green:#1f9d57; --green-soft:#e3f7ec;
  --warn:#c2410c; --warn-soft:#fbe9df; --line:#8aa0b6;
  --link:#2257d6; --code-bg:#f2f5f8; --code-text:#1f3551; --shadow:0 1px 2px rgba(16,30,50,.06),0 6px 18px rgba(16,30,50,.06);
  --sidebar:#f8fafc; --topbar:rgba(255,255,255,.86);
}
html[data-theme="dark"]{
  --bg:#0e141b; --bg-2:#121922; --card:#1a222c; --card-2:#222d3a; --band:#172029;
  --text:#e6edf3; --muted:#9bb0c3; --border:#33414f; --border-soft:#26313d;
  --accent:#5a8bff; --accent-soft:#16263f; --green:#3ad07f; --green-soft:#11301f;
  --warn:#f2913d; --warn-soft:#2e2113; --line:#6b86a3;
  --link:#8ab0ff; --code-bg:#11181f; --code-text:#cfe0f2; --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 22px rgba(0,0,0,.34);
  --sidebar:#121922; --topbar:rgba(14,20,27,.86);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  font-size:16px;line-height:1.62;-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}

/* ===== Topbar ===== */
.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:14px;
  height:56px;padding:0 18px;background:var(--topbar);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border-soft)}
.brand{display:flex;align-items:center;gap:9px;font-weight:750;color:var(--text);text-decoration:none;font-size:15.5px;letter-spacing:.1px}
.brand em{color:var(--muted);font-style:normal;font-weight:500}
.brand-mark{color:var(--accent);font-size:15px}
.menu-btn{display:none;background:none;border:1px solid var(--border);color:var(--text);
  border-radius:8px;width:36px;height:34px;font-size:17px;cursor:pointer}
.theme-btn{margin-left:auto;background:var(--card-2);border:1px solid var(--border);color:var(--text);
  border-radius:9px;height:34px;min-width:46px;padding:0 11px;font-size:15px;cursor:pointer;line-height:1}
.theme-btn:hover{border-color:var(--accent)}

/* ===== Layout ===== */
.layout{display:grid;grid-template-columns:288px minmax(0,1fr) 240px;gap:0;max-width:1500px;margin:0 auto}
.sidebar{position:sticky;top:56px;align-self:start;height:calc(100vh - 56px);overflow-y:auto;
  padding:22px 14px 30px;background:var(--sidebar);border-right:1px solid var(--border-soft)}
.side-t{font-size:11px;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);font-weight:700;margin:4px 10px 10px}
.sidebar ul{list-style:none;margin:0;padding:0}
.sidebar li a{display:block;padding:7px 11px;margin:1px 0;border-radius:8px;color:var(--text);
  text-decoration:none;font-size:14px;border:1px solid transparent}
.sidebar li a:hover{background:var(--card-2)}
.sidebar li.active a{background:var(--accent-soft);border-color:var(--accent);color:var(--text);font-weight:650}
.side-foot{margin:18px 10px 0;font-size:11.5px;color:var(--muted);border-top:1px solid var(--border-soft);padding-top:12px}

.content{min-width:0;padding:30px 44px 70px;max-width:980px}
.toc{position:sticky;top:56px;align-self:start;height:calc(100vh - 56px);overflow-y:auto;padding:30px 16px;border-left:1px solid var(--border-soft)}
.toc-t{font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-weight:700;margin-bottom:9px}
.toc ul{list-style:none;margin:0;padding:0}
.toc li a{display:block;padding:3px 8px;color:var(--muted);text-decoration:none;font-size:12.7px;border-left:2px solid transparent;line-height:1.4}
.toc li a:hover{color:var(--text);border-left-color:var(--accent)}

/* ===== Prose ===== */
.prose h1{font-size:30px;line-height:1.18;letter-spacing:-.4px;margin:.2em 0 .5em;font-weight:800}
.prose h2{font-size:22px;margin:1.7em 0 .55em;padding-top:.35em;font-weight:750;border-top:1px solid var(--border-soft)}
.prose h3{font-size:17.5px;margin:1.45em 0 .4em;font-weight:700}
.prose h4{font-size:15px;margin:1.25em 0 .35em;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.prose p{margin:.7em 0}
.prose a{color:var(--link);text-decoration:none;border-bottom:1px solid color-mix(in srgb,var(--link) 35%,transparent)}
.prose a:hover{border-bottom-color:var(--link)}
.anchor{margin-left:.4em;color:var(--border);text-decoration:none;font-weight:400;opacity:0;border:none;font-size:.7em}
h1:hover .anchor,h2:hover .anchor,h3:hover .anchor{opacity:1}
.prose ul,.prose ol{margin:.6em 0;padding-left:1.45em}
.prose li{margin:.28em 0}
.prose li>ul,.prose li>ol{margin:.2em 0}
.prose strong{font-weight:700}
.prose hr{border:none;border-top:1px solid var(--border-soft);margin:2em 0}
.prose blockquote{margin:1.1em 0;padding:.7em 1.1em;border-left:3px solid var(--accent);
  background:var(--accent-soft);border-radius:0 9px 9px 0;color:var(--text)}
.prose blockquote p{margin:.35em 0}

/* code */
.prose code{font-family:'SF Mono',ui-monospace,Menlo,Consolas,monospace;font-size:.86em;
  background:var(--code-bg);color:var(--code-text);padding:.12em .4em;border-radius:5px;border:1px solid var(--border-soft)}
.codeblock{position:relative;margin:1.1em 0;background:var(--code-bg);border:1px solid var(--border-soft);border-radius:11px;overflow:hidden}
.codeblock pre{margin:0;padding:15px 16px;overflow-x:auto}
.codeblock code{background:none;border:none;padding:0;font-size:13px;line-height:1.55;color:var(--code-text)}
.codelang{position:absolute;top:0;right:0;font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--muted);background:var(--card-2);padding:3px 10px;border-bottom-left-radius:8px;border-left:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}

/* tables */
.tablewrap{overflow-x:auto;margin:1.1em 0;border:1px solid var(--border-soft);border-radius:11px}
table{border-collapse:collapse;width:100%;font-size:13.6px}
thead th{background:var(--card-2);font-weight:700;text-align:left;white-space:nowrap}
th,td{padding:9px 13px;border-bottom:1px solid var(--border-soft);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:color-mix(in srgb,var(--accent-soft) 50%,transparent)}

/* ===== Diagrams ===== */
figure.diagram{margin:1.4em 0;background:var(--card);border:1px solid var(--border-soft);border-radius:14px;padding:16px 16px 10px;box-shadow:var(--shadow)}
.diagram-scroll{overflow-x:auto}
figure.diagram svg{display:block;min-width:560px;max-width:100%;height:auto;margin:0 auto}
figure.diagram figcaption{margin-top:9px;font-size:12.5px;color:var(--muted);text-align:center}
figure.diagram figcaption a{color:var(--link);text-decoration:none}
/* inline-SVG classes (theme-aware via tokens) */
.d-card{fill:var(--card);stroke:var(--border);stroke-width:1.3}
.d-card2{fill:var(--card-2);stroke:var(--border);stroke-width:1.3}
.d-band{fill:var(--band);stroke:var(--border);stroke-width:1.3}
.d-accentbox{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.4}
.d-greenbox{fill:var(--green-soft);stroke:var(--green);stroke-width:1.4}
.d-warnbox{fill:var(--warn-soft);stroke:var(--warn);stroke-width:1.4}
.d-text{fill:var(--text)}
.d-muted{fill:var(--muted)}
.d-line{stroke:var(--line);stroke-width:1.7;fill:none}
.d-dash{stroke:var(--line);stroke-width:1.5;stroke-dasharray:6 4;fill:none}
.d-arrow{fill:var(--line)}

/* mermaid */
pre.mermaid{background:var(--card);border:1px solid var(--border-soft);border-radius:14px;
  padding:16px;margin:1.4em 0;text-align:center;overflow-x:auto;box-shadow:var(--shadow);min-height:40px}
pre.mermaid svg{max-width:100%;height:auto}
pre.mermaid.mm-failed{text-align:left;font-family:ui-monospace,monospace;font-size:12.5px;color:var(--muted);white-space:pre-wrap}
pre.mermaid:not([data-processed]):not(.mm-failed){color:transparent;position:relative}
pre.mermaid:not([data-processed]):not(.mm-failed)::after{content:"rendering diagram…";position:absolute;left:0;right:0;top:14px;color:var(--muted);font-family:var(--bs);font-size:13px}

/* ===== typeset formula (replaces ASCII fractions) ===== */
.formula{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:1.3em 0;padding:16px 18px;
  background:var(--card);border:1px solid var(--border-soft);border-radius:12px;box-shadow:var(--shadow);
  font-family:'SF Mono',ui-monospace,Menlo,Consolas,monospace;font-size:13.5px;overflow-x:auto}
.formula .flabel{font-weight:700;color:var(--accent);white-space:nowrap}
.formula .frac{display:inline-flex;flex-direction:column;text-align:center;min-width:0}
.formula .frac .num{padding:3px 12px;border-bottom:2px solid var(--text)}
.formula .frac .den{padding:3px 12px}
.formula .fsuffix{color:var(--muted);white-space:nowrap}

/* ===== prev/next ===== */
.prevnext{display:flex;justify-content:space-between;gap:14px;margin-top:46px;padding-top:22px;border-top:1px solid var(--border-soft)}
.pn{flex:1;max-width:48%;text-decoration:none;border:1px solid var(--border);border-radius:11px;padding:11px 15px;color:var(--text);background:var(--card)}
.pn:hover{border-color:var(--accent)}
.pn span{display:block;font-size:11.5px;color:var(--muted)}
.pn b{font-size:14px;font-weight:650}
.pn.next{text-align:right}

/* ===== callouts (exec brief / generic) ===== */
.callout{display:flex;gap:12px;background:var(--card-2);border:1px solid var(--border-soft);border-radius:12px;padding:14px 16px;margin:1.1em 0}
.callout .k{font-weight:750;color:var(--accent);white-space:nowrap}
.lead{font-size:18px;line-height:1.55;color:var(--text)}
.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.13em;color:var(--accent);font-weight:750;margin-bottom:6px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:1.1em 0}
.gcard{background:var(--card);border:1px solid var(--border-soft);border-radius:12px;padding:15px 17px;box-shadow:var(--shadow)}
.gcard h4{margin:.1em 0 .4em;color:var(--text);text-transform:none;letter-spacing:0;font-size:15px}
.pill{display:inline-block;font-size:11.5px;font-weight:650;padding:2px 9px;border-radius:20px;background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent)}

/* ===== scorecard ===== */
.sc-toolbar{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:1.1em 0;padding:13px 15px;background:var(--card-2);border:1px solid var(--border-soft);border-radius:12px}
.sc-toolbar button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:13.5px;font-weight:600;cursor:pointer}
.sc-toolbar button.ghost{background:transparent;color:var(--text);border:1px solid var(--border)}
.sc-toolbar button:hover{filter:brightness(1.05)}
.sc-readout{margin-left:auto;display:flex;gap:18px;flex-wrap:wrap}
.sc-readout .ro{font-size:13px;color:var(--muted)}
.sc-readout .ro b{font-size:20px;color:var(--text);display:block;font-weight:800}
.sc-readout .ro.gov b{color:var(--accent)}
.sc-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:1.1em 0}
.sc-meta label{font-size:12px;color:var(--muted);font-weight:600;display:block}
.sc-meta input{width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font-size:14px}
.dim{background:var(--card);border:1px solid var(--border-soft);border-radius:12px;padding:14px 16px;margin:12px 0;box-shadow:var(--shadow)}
.dim-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.dim-h .tag{font-weight:800;color:var(--accent)}
.dim-h .nm{font-weight:700;font-size:15px}
.dim-h .gv{font-size:11px;font-weight:700;color:var(--warn);text-transform:uppercase;letter-spacing:.05em;border:1px solid var(--warn);border-radius:20px;padding:1px 8px}
.dim-desc{font-size:12.7px;color:var(--muted);margin:3px 0 9px}
.levels{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}
.levels label{flex:1;min-width:90px;border:1px solid var(--border);border-radius:9px;padding:7px 9px;cursor:pointer;font-size:12.5px;text-align:center;transition:.12s}
.levels label:hover{border-color:var(--accent)}
.levels input{position:absolute;opacity:0;width:0;height:0}
.levels label.sel{background:var(--accent-soft);border-color:var(--accent);font-weight:700}
.levels label small{display:block;color:var(--muted);font-weight:400;font-size:10.5px;margin-top:2px}
.dim textarea{width:100%;min-height:42px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font-size:13px;font-family:inherit;resize:vertical}
.sign{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}
.saved-tag{font-size:12px;color:var(--green);font-weight:600}

/* ===== responsive ===== */
@media (max-width:1180px){.layout{grid-template-columns:262px minmax(0,1fr)}.toc{display:none}}
@media (max-width:880px){
  .layout{grid-template-columns:1fr}
  .menu-btn{display:inline-block}
  .sidebar{position:fixed;top:56px;left:0;width:280px;transform:translateX(-102%);transition:transform .2s;z-index:45;box-shadow:var(--shadow)}
  body.nav-open .sidebar{transform:translateX(0)}
  .nav-scrim{display:none;position:fixed;inset:56px 0 0;background:rgba(0,0,0,.4);z-index:44}
  body.nav-open .nav-scrim{display:block}
  .content{padding:22px 18px 60px}
  .grid2,.sc-meta,.sign{grid-template-columns:1fr}
  .prose h1{font-size:25px}
}
@media print{.topbar,.sidebar,.toc,.prevnext,.sc-toolbar .ghost,.menu-btn{display:none!important}
  .layout{display:block}.content{max-width:100%;padding:0}figure.diagram,pre.mermaid{break-inside:avoid}}
