/* SPEED shared styles: respondent app and owner console. The landing page carries its own. */
:root{
  --bg:#F3F2ED; --surface:#FFFFFF; --surface-2:#EAE8E0; --surface-3:#E2E0D6;
  --text:#18302B; --head:#0E2B25; --muted:#5C6F69; --line:#D9D6CB; --line-2:#C7C3B5;
  --accent:#A3702A; --accent-ink:#8A5D1F; --accent-soft:#F1E5CE; --on-accent:#FFF9EE;
  --dark:#0C2B26; --dark-2:#123B33; --dark-text:#E7EFEB; --dark-muted:#9DB6AE; --dark-line:#1E4A41;
  --l1:#B4552F; --l2:#C08A3E; --l3:#8A8F4E; --l4:#3F7A68; --l5:#14514A;
  --warn:#B4552F; --warn-soft:#F7E3DA; --ok:#3F7A68; --ok-soft:#DCEAE3;
  --shadow:0 1px 2px rgba(12,43,38,.06), 0 8px 24px -12px rgba(12,43,38,.18);
  --shadow-lg:0 2px 4px rgba(12,43,38,.08), 0 24px 48px -20px rgba(12,43,38,.28);
  --r:14px;
  --serif:"Fraunces","Iowan Old Style","Palatino Linotype",Georgia,serif;
  --sans:"Public Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0A1513; --surface:#0F211D; --surface-2:#142C27; --surface-3:#1A3730;
    --text:#DDE8E4; --head:#F2F7F5; --muted:#96AEA8; --line:#22423A; --line-2:#2C534A;
    --accent:#D9A755; --accent-ink:#E8C078; --accent-soft:#25372A; --on-accent:#0B1A16;
    --dark:#081411; --dark-2:#0F2B25; --dark-line:#1C4038;
    --l1:#D4713F; --l2:#DCA451; --l3:#A3A85F; --l4:#4F9C86; --l5:#3FB39C;
    --warn:#E0865A; --warn-soft:#2E1F19; --ok:#4F9C86; --ok-soft:#173028;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
    --shadow-lg:0 2px 4px rgba(0,0,0,.5), 0 24px 48px -20px rgba(0,0,0,.7);
  }
}
:root[data-theme="dark"]{
  --bg:#0A1513; --surface:#0F211D; --surface-2:#142C27; --surface-3:#1A3730;
  --text:#DDE8E4; --head:#F2F7F5; --muted:#96AEA8; --line:#22423A; --line-2:#2C534A;
  --accent:#D9A755; --accent-ink:#E8C078; --accent-soft:#25372A; --on-accent:#0B1A16;
  --dark:#081411; --dark-2:#0F2B25; --dark-line:#1C4038;
  --l1:#D4713F; --l2:#DCA451; --l3:#A3A85F; --l4:#4F9C86; --l5:#3FB39C;
  --warn:#E0865A; --warn-soft:#2E1F19; --ok:#4F9C86; --ok-soft:#173028;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -12px rgba(0,0,0,.6);
  --shadow-lg:0 2px 4px rgba(0,0,0,.5), 0 24px 48px -20px rgba(0,0,0,.7);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg); color:var(--text); font-family:var(--sans); font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--serif); color:var(--head); margin:0; line-height:1.15; text-wrap:balance; font-weight:600}
p{margin:0}
a{color:inherit}
img{max-width:100%}
button{font:inherit; color:inherit}
[hidden]{display:none !important}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:6px}
.wrap{width:100%; max-width:980px; margin-inline:auto; padding-inline:20px}
.narrow{max-width:720px}
.eyebrow{font-family:var(--mono); font-size:.68rem; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--accent)}
.muted{color:var(--muted)}
.small{font-size:.86rem}
.mono{font-family:var(--mono)}
.stack{display:flex; flex-direction:column; gap:16px}
.row{display:flex; gap:12px; flex-wrap:wrap; align-items:center}
.spacer{flex:1}

/* ---------- top bar ---------- */
.bar{position:sticky; top:env(safe-area-inset-top,0px); z-index:40; background:color-mix(in srgb,var(--bg) 90%,transparent);
  backdrop-filter:blur(12px); border-bottom:1px solid var(--line)}
.bar-in{display:flex; align-items:center; gap:14px; padding-block:11px}
.logo{display:flex; align-items:baseline; gap:.45em; text-decoration:none; flex:0 0 auto}
.logo .mark{font-family:var(--serif); font-weight:700; color:var(--head); font-size:1.32rem; letter-spacing:.06em}
.logo .tm{font-size:.6em; vertical-align:super; letter-spacing:0; color:var(--accent)}
.logo .by{font-family:var(--mono); font-size:.58rem; letter-spacing:.14em; text-transform:uppercase; color:var(--muted)}
.chip-school{font-size:.82rem; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0}
.save{font-family:var(--mono); font-size:.66rem; letter-spacing:.06em; color:var(--muted); white-space:nowrap}
.save.bad{color:var(--warn)}
.stamp{font-family:var(--mono); font-size:.58rem; color:var(--muted); opacity:.7}
@media (max-width:620px){ .logo .by,.stamp{display:none} }

/* ---------- buttons ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:.5em; font-weight:600; font-size:.95rem;
  padding:.78em 1.45em; border-radius:999px; border:1px solid transparent; text-decoration:none; cursor:pointer;
  transition:transform .15s ease, background .15s ease, border-color .15s ease, opacity .15s ease; line-height:1.2}
.btn:active{transform:translateY(1px)}
.btn-primary{background:linear-gradient(180deg,#D4A24C 0%,#B7842F 55%,#A3702A 100%); color:#FFF9EE; border-color:#9A6824;
  box-shadow:0 1px 0 rgba(255,255,255,.35) inset, 0 8px 18px -10px rgba(163,112,42,.9)}
.btn-primary:hover{background:linear-gradient(180deg,#DDAE5A 0%,#BF8B34 55%,#A8742C 100%); border-color:#8A5D1F}
.btn-ghost{background:transparent; color:var(--head); border-color:var(--line-2)}
.btn-ghost:hover{border-color:var(--accent); color:var(--accent)}
.btn-quiet{background:none; border:0; color:var(--muted); padding:.5em .6em; font-weight:500; text-decoration:underline; text-underline-offset:3px}
.btn-quiet:hover{color:var(--accent)}
.btn-danger{background:transparent; color:var(--warn); border-color:color-mix(in srgb,var(--warn) 50%,transparent)}
.btn[disabled]{opacity:.45; cursor:not-allowed; transform:none}
.btn-block{width:100%}
.btn-sm{font-size:.82rem; padding:.5em 1em}

/* ---------- surfaces ---------- */
.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:clamp(20px,3vw,30px)}
.card-lift{box-shadow:var(--shadow)}
.note{background:var(--surface-2); border-radius:12px; padding:14px 16px; font-size:.9rem}
.note b.k{display:block; font-family:var(--mono); font-size:.64rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); margin-bottom:4px}
.alert{border-radius:12px; padding:14px 16px; font-size:.92rem; border:1px solid}
.alert-warn{background:var(--warn-soft); border-color:color-mix(in srgb,var(--warn) 40%,transparent)}
.alert-ok{background:var(--ok-soft); border-color:color-mix(in srgb,var(--ok) 40%,transparent)}
.pill{display:inline-flex; align-items:center; gap:6px; font-family:var(--mono); font-size:.64rem; letter-spacing:.08em; text-transform:uppercase;
  padding:.3em .75em; border-radius:999px; border:1px solid var(--line-2); color:var(--muted); white-space:nowrap}
.pill .dot{width:7px; height:7px; border-radius:50%; background:currentColor}
.pill.open{color:var(--muted)}
.pill.progress{color:var(--accent); border-color:color-mix(in srgb,var(--accent) 45%,transparent); background:var(--accent-soft)}
.pill.done{color:var(--ok); border-color:color-mix(in srgb,var(--ok) 45%,transparent); background:var(--ok-soft)}
.pill.warn{color:var(--warn); border-color:color-mix(in srgb,var(--warn) 45%,transparent); background:var(--warn-soft)}

/* ---------- forms ---------- */
.field{display:flex; flex-direction:column; gap:6px}
.field label{font-size:.82rem; font-weight:600; color:var(--head)}
.field .hint{font-size:.78rem; color:var(--muted)}
.input,select.input,textarea.input{font:inherit; font-size:.95rem; color:var(--text); background:var(--bg); border:1px solid var(--line-2); border-radius:10px; padding:.72em .9em; width:100%}
.input:focus{outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
.input.code{font-family:var(--mono); font-size:1.15rem; letter-spacing:.14em; text-transform:uppercase; text-align:center}
.grid2{display:grid; grid-template-columns:1fr 1fr; gap:14px}
@media (max-width:560px){ .grid2{grid-template-columns:1fr} }
.check{display:flex; gap:10px; align-items:flex-start; font-size:.9rem; cursor:pointer}
.check input{margin-top:4px; width:18px; height:18px; accent-color:var(--accent); flex:0 0 auto}
.err{color:var(--warn); font-size:.86rem}

/* ---------- entry ---------- */
.entry{display:grid; grid-template-columns:1fr 1fr; min-height:calc(100vh - 60px)}
@media (max-width:860px){ .entry{grid-template-columns:1fr; min-height:0} }
.entry-side{background:var(--dark); color:var(--dark-text); padding:clamp(32px,5vw,64px); display:flex; flex-direction:column; justify-content:center; gap:22px; position:relative; overflow:hidden}
.entry-side::before{content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(700px 360px at 90% 0%, rgba(163,112,42,.22), transparent 62%), radial-gradient(600px 420px at 0% 100%, rgba(63,122,104,.2), transparent 60%)}
.entry-side > *{position:relative}
.entry-side h1{color:#fff; font-size:clamp(2rem,1.5rem + 2.2vw,3.2rem); letter-spacing:-.01em}
.entry-side h1 em{font-style:normal; color:#E5B96E}
.entry-side p{color:var(--dark-muted); max-width:44ch}
.acr{display:flex; flex-direction:column; gap:3px; border-left:2px solid rgba(163,112,42,.55); padding-left:14px; margin:0; list-style:none}
.acr li{font-size:.86rem; color:var(--dark-muted)}
.acr b{font-family:var(--serif); color:#F0DCB4; display:inline-block; width:1.2ch}
.entry-main{display:flex; align-items:center; justify-content:center; padding:clamp(28px,5vw,64px) 20px}
.entry-card{width:100%; max-width:420px}

/* ---------- school / slots ---------- */
.hero-school{background:var(--dark); color:var(--dark-text); padding-block:clamp(30px,4vw,52px)}
.hero-school h1{color:#fff; font-size:clamp(1.7rem,1.3rem + 1.8vw,2.6rem)}
.hero-school p{color:var(--dark-muted)}
.slots{display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:14px}
.slot{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:22px; display:flex; flex-direction:column; gap:12px}
.slot h3{font-size:1.15rem}
.slot.slot-main{border-color:color-mix(in srgb,var(--accent) 45%,transparent); box-shadow:var(--shadow)}
@media (min-width:760px){ .slots:has(.slot:nth-child(3)){grid-template-columns:1.4fr 1fr 1fr} }
.slot .meta{font-size:.84rem; color:var(--muted)}
.slot .act{margin-top:auto; display:flex; flex-direction:column; gap:6px}

/* ---------- questionnaire ---------- */
.qbar{display:grid; grid-template-columns:repeat(7,1fr); gap:5px; margin-top:6px}
.qbar button{height:34px; border-radius:8px; border:1px solid var(--line); background:var(--surface); cursor:pointer; position:relative; overflow:hidden; padding:0;
  font-family:var(--mono); font-size:.64rem; color:var(--muted)}
.qbar button i{position:absolute; left:0; bottom:0; top:0; background:linear-gradient(90deg,#F3DFB4,#E5B96E); z-index:0}
.qbar button span{position:relative; z-index:1}
.qbar button.cur{border-color:var(--accent); color:var(--head); font-weight:700; box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}
.qbar button.full{border-color:#B7842F; color:#3B2A0F}
.qbar button.full i{background:linear-gradient(90deg,#E5B96E,#C9923E)}
.dimhead{margin-block:22px 18px; padding:clamp(20px,3vw,30px); border-radius:18px; color:var(--dark-text); position:relative; overflow:hidden;
  background:radial-gradient(520px 240px at 100% 0%, rgba(229,185,110,.28), transparent 65%), linear-gradient(135deg,#0C2B26 0%,#14463C 100%);
  box-shadow:var(--shadow-lg)}
.dimhead .eyebrow{color:#E5B96E}
.dimhead h2{font-size:clamp(1.4rem,1.15rem + 1vw,1.9rem); margin-top:6px; color:#FFFFFF}
.dimhead .dnum{position:absolute; right:18px; bottom:-18px; font-family:var(--serif); font-size:6.5rem; line-height:1; color:rgba(229,185,110,.16); font-weight:700; pointer-events:none}
.dimhead .dprog{margin-top:14px; height:6px; border-radius:6px; background:rgba(255,255,255,.12); overflow:hidden}
.dimhead .dprog i{display:block; height:100%; background:linear-gradient(90deg,#E5B96E,#C9923E); border-radius:6px}
.honest{border:1px solid #C9923E; background:linear-gradient(180deg,#FFF8EA,#FBEFD6); color:#3B2A0F; border-radius:14px; padding:16px 18px; font-size:.9rem; line-height:1.55;
  box-shadow:inset 4px 0 0 #B7842F}
.honest b.k{display:block; font-family:var(--mono); font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:#8A5D1F; margin-bottom:4px}
.honest.slim{padding:11px 16px; font-size:.84rem; margin-bottom:14px}
:root[data-theme="dark"] .honest{background:linear-gradient(180deg,#2A2213,#221B0F); color:#F3E3C2}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .honest{background:linear-gradient(180deg,#2A2213,#221B0F); color:#F3E3C2} }
:root[data-theme="dark"] .honest b.k{color:#E5B96E}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .honest b.k{color:#E5B96E} }
.q{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:clamp(18px,2.6vw,26px); scroll-margin-top:130px; box-shadow:var(--shadow);
  border-top:3px solid #E5B96E}
.q.missing{border-color:color-mix(in srgb,var(--warn) 55%,transparent); border-top-color:var(--warn)}
.q .qn{font-family:var(--mono); font-size:.64rem; letter-spacing:.12em; color:var(--accent-ink); text-transform:uppercase; font-weight:600}
.q h3{font-family:var(--serif); font-size:1.18rem; font-weight:600; line-height:1.4; margin-block:8px 6px; color:var(--head); text-wrap:pretty}
.q .who{font-size:.78rem; color:var(--accent-ink); margin-bottom:4px; font-weight:600}
:root[data-theme="dark"] .q .who{color:var(--accent)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .q .who{color:var(--accent)} }
.q .ask{font-size:.84rem; color:var(--muted); margin-bottom:12px}
.opts{display:flex; flex-direction:column; gap:9px}
.opt{display:grid; grid-template-columns:22px 1fr; gap:12px; align-items:start; text-align:left; width:100%; cursor:pointer;
  background:var(--bg); border:1px solid var(--line); border-radius:12px; padding:13px 15px; transition:border-color .12s ease, background .12s ease, box-shadow .12s ease}
.opt:hover{border-color:#D4A24C; background:color-mix(in srgb,#E5B96E 10%,var(--surface))}
.opt .rd{width:20px; height:20px; border-radius:50%; border:2px solid var(--line-2); margin-top:1px; display:grid; place-items:center; background:var(--surface)}
.opt .tx{font-size:.93rem; line-height:1.5; color:var(--text)}
.opt[aria-pressed="true"]{border-color:#B7842F; background:linear-gradient(180deg,#FFF6E4,#F8E8C6); box-shadow:0 6px 16px -10px rgba(163,112,42,.8)}
.opt[aria-pressed="true"] .rd{border-color:#A3702A; background:radial-gradient(circle,#A3702A 0 42%, #FFF6E4 46%)}
.opt[aria-pressed="true"] .tx{color:#2B1F0B; font-weight:500}
:root[data-theme="dark"] .opt[aria-pressed="true"]{background:linear-gradient(180deg,#3A2E16,#2C2311)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .opt[aria-pressed="true"]{background:linear-gradient(180deg,#3A2E16,#2C2311)} }
:root[data-theme="dark"] .opt[aria-pressed="true"] .tx{color:#F7E7C6}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .opt[aria-pressed="true"] .tx{color:#F7E7C6} }
.unsure{margin-top:8px; display:flex; justify-content:flex-end}
.unsure .btn-quiet[aria-pressed="true"]{color:var(--accent); text-decoration:none; font-weight:600}
.navfoot{display:flex; gap:12px; justify-content:space-between; align-items:center; padding-block:26px 60px; flex-wrap:wrap}

/* ---------- results ---------- */
.result-hero{background:var(--dark); color:var(--dark-text); padding-block:clamp(36px,5vw,64px); position:relative; overflow:hidden}
.result-hero::before{content:""; position:absolute; inset:0; pointer-events:none; background:radial-gradient(800px 400px at 85% -10%, rgba(163,112,42,.22), transparent 62%)}
.result-hero .wrap{position:relative}
.result-hero h1{color:#fff; font-size:clamp(1.8rem,1.3rem + 2vw,2.8rem)}
.result-hero p{color:var(--dark-muted)}
.levelbig{display:flex; align-items:center; gap:22px; flex-wrap:wrap; margin-top:22px}
.levelbig .num{font-family:var(--serif); font-size:clamp(4rem,3rem + 5vw,6.5rem); line-height:.9; color:#fff; font-weight:600}
.levelbig .of{font-family:var(--mono); font-size:.8rem; color:var(--dark-muted); letter-spacing:.1em}
.levelbig .lab{font-family:var(--serif); font-size:clamp(1.4rem,1.1rem + 1.2vw,2rem); color:#E5B96E}
.scale5{display:grid; grid-template-columns:repeat(5,1fr); gap:4px; width:min(360px,100%); margin-top:10px}
.scale5 span{height:8px; border-radius:99px; background:rgba(255,255,255,.14)}
.scale5 span.on{background:var(--c)}
.twocol{display:grid; grid-template-columns:1fr 1fr; gap:16px}
@media (max-width:700px){ .twocol{grid-template-columns:1fr} }
.sw{padding:22px; border-radius:var(--r); border:1px solid var(--line); background:var(--surface)}
.sw .k{font-family:var(--mono); font-size:.64rem; letter-spacing:.14em; text-transform:uppercase}
.sw h3{font-size:1.2rem; margin-top:8px}
.locked-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:10px}
.locked{border:1px dashed var(--line-2); border-radius:12px; padding:14px; font-size:.86rem; color:var(--muted); display:flex; gap:10px; align-items:center; background:var(--surface)}
.locked svg{width:16px; height:16px; stroke:var(--muted); fill:none; stroke-width:2; flex:0 0 auto}
.unlock{display:grid; grid-template-columns:auto 1fr; gap:26px; align-items:center; background:var(--dark); color:var(--dark-text); border-radius:18px; padding:clamp(22px,3vw,34px)}
@media (max-width:640px){ .unlock{grid-template-columns:1fr; justify-items:start} }
.unlock h2{color:#fff; font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem)}
.unlock p{color:var(--dark-muted)}
.qr{background:#fff; border-radius:12px; padding:10px; width:172px; height:172px; display:grid; place-items:center}
.qr img,.qr canvas,.qr svg{width:152px; height:152px; display:block}

/* ---------- full report ---------- */
.rep section{padding-block:clamp(30px,4vw,46px); border-bottom:1px solid var(--line)}
.rep section:last-child{border-bottom:0}
.rep h2{font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem); margin-block:6px 14px}
.rep .lead{font-size:1.02rem; max-width:68ch}
.dimrow{display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) auto; gap:14px; align-items:center; padding-block:12px; border-top:1px solid var(--line)}
.dimrow:first-child{border-top:0}
.dimrow .nm{font-weight:600; color:var(--head); font-size:.95rem}
.dimrow .sub{font-size:.78rem; color:var(--muted)}
.meter{display:grid; grid-template-columns:repeat(5,1fr); gap:3px}
.meter span{height:10px; border-radius:3px; background:var(--surface-3)}
.meter span.on{background:var(--c)}
.lvtag{font-family:var(--mono); font-size:.72rem; font-weight:600; white-space:nowrap; text-align:right}
@media (max-width:620px){ .dimrow{grid-template-columns:1fr auto} .dimrow .meter{grid-column:1/-1; order:3} }
.tbl{overflow-x:auto; border:1px solid var(--line); border-radius:12px}
.tbl table{border-collapse:collapse; width:100%; min-width:540px; font-size:.87rem}
.tbl th{background:var(--surface-2); text-align:left; font-family:var(--mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--head); padding:10px 12px; font-weight:600}
.tbl td{padding:10px 12px; border-top:1px solid var(--line); background:var(--surface); vertical-align:top}
.tbl td.num{font-family:var(--mono); font-variant-numeric:tabular-nums; white-space:nowrap}
.action{background:var(--surface); border:1px solid var(--line); border-radius:12px; padding:16px 18px; display:grid; gap:8px}
.action.crit{border-color:color-mix(in srgb,var(--warn) 50%,transparent); box-shadow:inset 3px 0 0 var(--warn)}
.action .top{display:flex; gap:10px; align-items:baseline; flex-wrap:wrap}
.action h4{font-family:var(--sans); font-size:.98rem; font-weight:700}
.action .ft{display:grid; grid-template-columns:auto 1fr; gap:4px 12px; font-size:.87rem}
.action .ft b{font-family:var(--mono); font-size:.62rem; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); padding-top:3px; font-weight:500}
.cost{font-family:var(--mono); font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; color:var(--accent-ink); background:var(--accent-soft); padding:.25em .6em; border-radius:6px}
:root[data-theme="dark"] .cost{color:var(--accent)}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .cost{color:var(--accent)} }
.alist{display:grid; gap:10px}
.numlist{counter-reset:n; display:grid; gap:10px}
.numlist .action{padding-left:54px; position:relative}
.numlist .action::before{counter-increment:n; content:counter(n); position:absolute; left:16px; top:16px; width:26px; height:26px; border-radius:50%;
  background:var(--dark); color:#fff; font-family:var(--mono); font-size:.76rem; display:grid; place-items:center}
.rep-cover{background:var(--dark); color:var(--dark-text); padding-block:clamp(40px,6vw,76px)}
.rep-cover h1{color:#fff; font-size:clamp(2rem,1.4rem + 2.6vw,3.3rem)}
.rep-cover .meta{display:flex; flex-wrap:wrap; gap:22px; margin-top:26px; padding-top:20px; border-top:1px solid var(--dark-line)}
.rep-cover .meta div{font-size:.86rem; color:var(--dark-muted)}
.rep-cover .meta b{display:block; font-family:var(--mono); font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; color:#E5B96E; font-weight:500; margin-bottom:2px}
.footer{background:var(--dark); color:var(--dark-muted); padding-block:30px; font-size:.8rem}
.footer p{max-width:78ch}

/* ---------- overlays ---------- */
.toast{position:fixed; left:50%; bottom:calc(20px + env(safe-area-inset-bottom,0px)); transform:translateX(-50%); z-index:90; background:var(--dark); color:#fff;
  padding:12px 18px; border-radius:12px; font-size:.9rem; box-shadow:var(--shadow-lg); max-width:min(560px,calc(100vw - 32px))}
.toast.bad{background:var(--warn)}
.bootlog{position:fixed; right:10px; bottom:10px; z-index:99; background:#111; color:#9f9; font:11px/1.4 var(--mono); padding:10px; border-radius:8px; max-width:360px; max-height:40vh; overflow:auto; white-space:pre-wrap}
.fail{max-width:560px; margin:80px auto; padding:0 20px; text-align:center}

@media print{
  .bar,.noprint,.toast,.bootlog{display:none !important}
  body{background:#fff; color:#000; font-size:11pt}
  .rep-cover,.result-hero,.footer{background:#fff !important; color:#000 !important}
  .rep-cover h1,.rep-cover .meta b{color:#000 !important}
  .rep-cover .meta div{color:#333 !important}
  .rep section{break-inside:avoid-page; padding-block:18px}
  .action,.dimrow{break-inside:avoid}
  .card,.action,.tbl td{background:#fff !important}
}
@media (prefers-reduced-motion: reduce){ *{transition:none !important; animation:none !important; scroll-behavior:auto !important} }

/* ---------- report charts ---------- */
:root{--s1:#0F8A73; --s2:#B7842F}
:root[data-theme="dark"]{--s1:#2FA88F; --s2:#BF8A3A}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){--s1:#2FA88F; --s2:#BF8A3A} }
.vgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px}
@media (max-width:760px){ .vgrid{grid-template-columns:1fr} }
.vcard{margin:0; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:18px 18px 20px; box-shadow:var(--shadow); border-top:3px solid #E5B96E; min-width:0}
.vcard figcaption{font-family:var(--serif); font-weight:600; color:var(--head); font-size:1.05rem; margin-bottom:12px}
.vcard figcaption span{display:block; font-family:var(--sans); font-weight:400; font-size:.8rem; color:var(--muted); margin-top:3px}
.viz-radar{width:100%; height:auto; display:block; overflow:visible}
.viz-radar .rg{fill:none; stroke:var(--line); stroke-width:1}
.viz-radar .rg.r3{fill:color-mix(in srgb,#E5B96E 14%,transparent); stroke:color-mix(in srgb,#B7842F 55%,transparent); stroke-dasharray:3 3}
.viz-radar .ax{stroke:var(--line); stroke-width:1}
.viz-radar .tk{font-family:var(--mono); font-size:10px; fill:var(--muted)}
.viz-radar .shape{fill:color-mix(in srgb,var(--s1) 20%,transparent); stroke:var(--s1); stroke-width:2; stroke-linejoin:round}
.viz-radar .pt{stroke:var(--surface); stroke-width:2}
.viz-radar .lb{font-family:var(--sans); font-size:13.5px; font-weight:600; fill:var(--head)}
.viz-radar .lv{font-family:var(--mono); font-size:12px; fill:var(--muted)}
.vbars{display:flex; flex-direction:column; gap:9px}
.vb{display:grid; grid-template-columns:minmax(0,10.5em) 1fr 2.4em; gap:10px; align-items:center; font-size:.84rem}
.vb-n{color:var(--head); font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.vb-t{position:relative; height:14px; background:var(--surface-2); border-radius:4px}
.vb-t i{position:absolute; left:0; top:0; bottom:0; border-radius:0 4px 4px 0}
.vb-t em{position:absolute; top:-3px; bottom:-3px; width:0; border-left:1.5px dashed color-mix(in srgb,#B7842F 70%,transparent)}
.vb-v{font-family:var(--mono); font-size:.78rem; color:var(--text); text-align:right}
.vb-axis{margin-top:-2px}
.vb-ticks{position:relative; height:14px}
.vb-ticks b{position:absolute; transform:translateX(-50%); font-family:var(--mono); font-size:.62rem; font-weight:400; color:var(--muted)}
.vdonut{display:grid; grid-template-columns:150px 1fr; gap:18px; align-items:center}
@media (max-width:420px){ .vdonut{grid-template-columns:1fr; justify-items:center} }
.vdonut svg{width:150px; height:150px}
.vdonut .dn{font-family:var(--serif); font-size:30px; font-weight:700; fill:var(--head)}
.vdonut .dl{font-family:var(--mono); font-size:10px; fill:var(--muted); letter-spacing:.08em}
.vlegend{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:7px; font-size:.84rem; width:100%}
.vlegend li{display:grid; grid-template-columns:12px 1fr auto; gap:9px; align-items:center}
.vlegend i{width:12px; height:12px; border-radius:3px}
.vlegend span{font-family:var(--mono); font-size:.74rem; color:var(--text)}
.vlegend b{font-family:var(--mono); font-size:.8rem; color:var(--head)}
.vlights{display:grid; grid-template-columns:1fr; gap:14px}
.vlights h4{font-family:var(--mono); font-size:.64rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:6px}
.vlights ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:5px}
.tl{display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; font-size:.84rem}
.tl-n{color:var(--head); font-weight:500; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.tl-s{font-family:var(--mono); font-size:.66rem; letter-spacing:.04em; white-space:nowrap}
.lamp{display:inline-flex; gap:3px; background:#1B2B27; padding:3px 5px; border-radius:9px}
.lamp i{width:9px; height:9px; border-radius:50%; background:#3A4A46}
.lamp.red i:nth-child(1){background:#E0533A; box-shadow:0 0 6px #E0533A}
.lamp.amber i:nth-child(2){background:#F0A92E; box-shadow:0 0 6px #F0A92E}
.lamp.green i:nth-child(3){background:#2FB37A; box-shadow:0 0 6px #2FB37A}
.tl-s.red{color:#B8412B} .tl-s.amber{color:#9A6512} .tl-s.green{color:#1F7F55} .tl-s.grey{color:var(--muted)}
:root[data-theme="dark"] .tl-s.red{color:#F08A74}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .tl-s.red{color:#F08A74} }
:root[data-theme="dark"] .tl-s.amber{color:#F2C06A}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .tl-s.amber{color:#F2C06A} }
:root[data-theme="dark"] .tl-s.green{color:#5FD29E}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .tl-s.green{color:#5FD29E} }
.vdb{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:16px 18px; margin-bottom:18px; box-shadow:var(--shadow)}
.vdb-key{display:flex; flex-wrap:wrap; gap:14px; font-size:.78rem; color:var(--text); margin-bottom:10px}
.vdb-key span{display:inline-flex; align-items:center; gap:6px}
.vdb-key i{width:11px; height:11px; border-radius:50%; display:inline-block}
.vdb-key .k1{background:var(--s1)} .vdb-key .k2{background:var(--s2)}
.vdb-key .kb{background:linear-gradient(90deg,var(--s1) 50%,var(--s2) 50%)}
.vdb-key .kg{width:18px; height:4px; border-radius:2px; background:var(--warn)}
.vdb-r{display:grid; grid-template-columns:minmax(0,14em) 1fr 4.6em; gap:12px; align-items:center; padding-block:6px; border-top:1px solid var(--line); font-size:.84rem}
.vdb-r:first-of-type{border-top:0}
.vdb-n{color:var(--head); font-weight:600; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.vdb-t{position:relative; height:18px; margin-inline:8px}
.vdb-t b{position:absolute; top:8px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:var(--line-2)}
.vdb-t s{position:absolute; top:7px; height:4px; background:color-mix(in srgb,var(--muted) 45%,transparent); border-radius:2px; text-decoration:none}
.vdb-t s.wide{background:var(--warn)}
.vdb-t i{position:absolute; top:3px; width:12px; height:12px; margin-left:-6px; border-radius:50%; border:2px solid var(--surface)}
.vdb-t i.d1{background:var(--s1)} .vdb-t i.d2{background:var(--s2)}
.vdb-t i.both{width:14px; height:14px; margin-left:-7px; top:2px; background:linear-gradient(90deg,var(--s1) 50%,var(--s2) 50%)}
.vdb-g{font-family:var(--mono); font-size:.72rem; color:var(--muted); text-align:right; white-space:nowrap}
.vdb-axis{border-top:0; padding-top:0}
.vdb-axis em{position:absolute; transform:translateX(-50%); font-style:normal; font-family:var(--mono); font-size:.62rem; color:var(--muted)}
@media (max-width:560px){ .vdb-r{grid-template-columns:1fr auto} .vdb-r .vdb-t{grid-column:1/-1; order:3} .vdb-axis .vdb-t{order:0} .vb{grid-template-columns:minmax(0,7.5em) 1fr 2.2em} }
@media print{ .vcard,.vdb{box-shadow:none; break-inside:avoid} .lamp{print-color-adjust:exact; -webkit-print-color-adjust:exact} }
.slights{display:grid; grid-template-columns:repeat(3,1fr); gap:10px}
.sl{display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:14px; border-radius:12px; background:var(--surface-2)}
.sl b{font-family:var(--serif); font-size:1.9rem; line-height:1; color:var(--head)}
.sl > span:last-child{font-family:var(--mono); font-size:.66rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted)}
.lockviz{display:grid; grid-template-columns:1fr 150px; gap:18px; align-items:center; background:linear-gradient(135deg,var(--surface),color-mix(in srgb,#E5B96E 12%,var(--surface))); border-color:color-mix(in srgb,#B7842F 45%,transparent)}
.locked-svg{width:150px; color:color-mix(in srgb,#B7842F 60%,transparent)}
@media (max-width:520px){ .lockviz{grid-template-columns:1fr} .locked-svg{justify-self:center} }

/* ---------- inside each dimension ---------- */
.drills{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px}
@media (max-width:820px){ .drills{grid-template-columns:1fr} }
.drill{background:var(--surface); border:1px solid var(--line); border-radius:16px; box-shadow:var(--shadow); overflow:hidden; break-inside:avoid}
.drill header{display:flex; justify-content:space-between; align-items:center; gap:14px; padding:16px 18px; color:#fff;
  background:radial-gradient(360px 160px at 100% 0%, rgba(229,185,110,.25), transparent 65%), linear-gradient(135deg,#0C2B26,#14463C)}
.drill header h3{font-size:1.02rem; color:#fff; margin-top:3px; line-height:1.25}
.drill .dcode{font-family:var(--mono); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:#E5B96E}
.dscore{display:flex; flex-direction:column; align-items:flex-end; flex:0 0 auto}
.dscore b{font-family:var(--serif); font-size:1.9rem; line-height:1; color:#fff}
.dscore span{font-family:var(--mono); font-size:.62rem; letter-spacing:.08em; text-transform:uppercase; color:#E5B96E; margin-top:4px}
.drill ul{list-style:none; margin:0; padding:6px 18px 10px}
.drill li{display:grid; grid-template-columns:minmax(0,1fr) 90px 8.5em; gap:10px; align-items:center; padding-block:8px; border-top:1px solid var(--line); font-size:.86rem}
.drill li:first-child{border-top:0}
.drill li .pn{color:var(--head); font-weight:500; min-width:0}
.drill li .pl{font-family:var(--mono); font-size:.68rem; font-weight:600; text-align:right; white-space:nowrap}
.drill li .pd{grid-column:1/-1; margin-top:-4px; font-family:var(--mono); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; color:var(--warn)}
.drill li.down .pn{font-weight:700}
.drill li.down{background:linear-gradient(90deg,color-mix(in srgb,var(--warn) 7%,transparent),transparent 70%); margin-inline:-18px; padding-inline:18px}
.tagc{font-style:normal; font-family:var(--mono); font-size:.56rem; letter-spacing:.08em; text-transform:uppercase; color:var(--warn); border:1px solid color-mix(in srgb,var(--warn) 45%,transparent); border-radius:999px; padding:.05em .5em; margin-left:4px; vertical-align:middle}
.dfacts{display:flex; flex-wrap:wrap; gap:6px; padding:0 18px 16px}
.fchip{font-size:.74rem; padding:.3em .7em; border-radius:999px; background:var(--surface-2); color:var(--text)}
.fchip.no{background:var(--warn-soft)} .fchip.yes{background:var(--ok-soft)}
@media (max-width:480px){ .drill li{grid-template-columns:minmax(0,1fr) 7.5em} .drill li .meter{grid-column:1/-1; order:3} }

/* ---------- roadmap ---------- */
.rtime{background:radial-gradient(700px 300px at 100% 0%, rgba(229,185,110,.22), transparent 62%), linear-gradient(135deg,#0C2B26 0%,#14463C 100%);
  border-radius:20px; padding:30px clamp(18px,3vw,30px) 24px; color:var(--dark-text); box-shadow:var(--shadow-lg)}
.rline{position:relative; height:44px; margin:0 8px 18px; }
.rline::before{content:""; position:absolute; left:0; right:0; top:10px; height:4px; border-radius:4px; background:linear-gradient(90deg,#E5B96E,#C9923E 50%,#2FA88F)}
.rstop{position:absolute; top:0; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px}
.rstop:first-child{transform:none; align-items:flex-start} .rstop:last-child{transform:translateX(-100%); align-items:flex-end}
.rstop i{width:24px; height:24px; border-radius:50%; background:#0C2B26; border:4px solid #E5B96E; box-shadow:0 0 0 4px rgba(229,185,110,.18)}
.rstop:last-child i{border-color:#2FA88F; box-shadow:0 0 0 4px rgba(47,168,143,.2)}
.rstop b{font-family:var(--mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:#F3DFB4; white-space:nowrap}
.rphases{display:grid; grid-template-columns:repeat(3,1fr); gap:12px}
.rph{background:rgba(255,255,255,.06); border:1px solid rgba(229,185,110,.25); border-radius:14px; padding:14px 16px; display:flex; flex-direction:column; gap:6px}
.rph.s{border-top:4px solid #E5B96E} .rph.m{border-top:4px solid #C9923E} .rph.l{border-top:4px solid #2FA88F}
.rph h4{font-family:var(--serif); font-size:1.2rem; color:#fff}
.rph p{font-size:.84rem; color:var(--dark-muted); line-height:1.45}
.rwhen{font-family:var(--mono); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:#E5B96E}
.rcount{margin-top:auto; font-size:.8rem; color:#F3DFB4} .rcount b{font-family:var(--serif); font-size:1.5rem; color:#fff; margin-right:4px}
@media (max-width:640px){ .rphases{grid-template-columns:1fr} }
.rlanes{margin-top:16px; background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:14px 18px; box-shadow:var(--shadow)}
.rl{display:grid; grid-template-columns:minmax(0,1.6fr) 3em repeat(3,minmax(0,1fr)) 3em; gap:10px; align-items:center; padding-block:9px; border-top:1px solid var(--line)}
.rl-h{border-top:0; font-family:var(--mono); font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); padding-block:2px 8px}
.rl-h span:nth-child(n+2){text-align:center}
.rn{font-weight:600; color:var(--head); font-size:.88rem; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.rlv{justify-self:center; width:30px; height:30px; border-radius:50%; display:grid; place-items:center; font-family:var(--serif); font-weight:700; font-size:1rem;
  color:var(--c); border:2px solid var(--c); background:color-mix(in srgb,var(--c) 10%,var(--surface))}
.rlv.aim.up{background:var(--c); color:#fff}
.rdots{display:flex; flex-wrap:wrap; gap:4px; justify-content:center; align-items:center}
.rdots i{width:10px; height:10px; border-radius:50%}
.rdots.s i{background:#D4A24C} .rdots.m i{background:#A3702A} .rdots.l i{background:#1F9A82}
.rdots em{font-style:normal; font-family:var(--mono); font-size:.64rem; color:var(--muted); margin-left:2px}
.rnone{text-align:center; color:var(--line-2)}
@media (max-width:520px){ .rl{grid-template-columns:minmax(0,1fr) 2.2em repeat(3,minmax(0,.8fr)) 2.2em; gap:6px} .rn{font-size:.8rem} .rlv{width:26px; height:26px; font-size:.9rem} }
.rsec{display:flex; flex-direction:column; gap:18px}
.rpanel{background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:0 clamp(16px,2.6vw,24px) 22px; box-shadow:var(--shadow); overflow:hidden}
.rpanel-h{margin-inline:calc(-1 * clamp(16px,2.6vw,24px)); padding:16px clamp(16px,2.6vw,24px); margin-bottom:6px}
.rpanel.s .rpanel-h{background:linear-gradient(90deg,#F8E8C6,#FFF6E4)} .rpanel.m .rpanel-h{background:linear-gradient(90deg,#EFD9AE,#F8EBD0)} .rpanel.l .rpanel-h{background:linear-gradient(90deg,#D3EDE6,#EAF6F2)}
.rpanel-h .rwhen{color:#8A5D1F} .rpanel.l .rpanel-h .rwhen{color:#14514A}
.rpanel-h h3{font-size:1.2rem; color:#1B150A; margin-top:4px}
.rpanel.l .rpanel-h h3{color:#0C2B26}
.rdim{font-family:var(--mono); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); margin:18px 0 8px; font-weight:600}
@media print{ .drill,.rpanel,.rlanes{box-shadow:none} .rtime,.drill header{print-color-adjust:exact; -webkit-print-color-adjust:exact} }
.rstop .abbr{display:none}
@media (max-width:560px){ .rstop .full{display:none} .rstop .abbr{display:inline} }
.rx{border:1px solid var(--line); border-left:3px solid #1F9A82; border-radius:10px; padding:10px 14px; background:var(--surface)}
.rx-h{display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:3px}
.rx-h b{color:var(--head); font-size:.92rem}
.rx-h .mono{color:#1F7A6A}

/* ---------- digital readiness ---------- */
.dgrid{display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr); gap:16px; align-items:start}
@media (max-width:760px){ .dgrid{grid-template-columns:1fr} }
.dgcard{border-radius:18px; padding:22px; color:var(--dark-text); text-align:center; box-shadow:var(--shadow-lg);
  background:radial-gradient(400px 220px at 100% 0%, rgba(229,185,110,.25), transparent 65%), linear-gradient(135deg,#0C2B26,#14463C)}
.dgcard p{color:var(--dark-muted); text-align:left; margin-top:12px}
.dgauge{width:100%; max-width:280px; display:block; margin-inline:auto}
.dgauge .trk{fill:none; stroke:rgba(255,255,255,.14); stroke-width:16; stroke-linecap:round}
.dgauge .val{fill:none; stroke-width:16; stroke-linecap:round}
.dgauge .gt{font-family:var(--mono); font-size:9px; fill:#9DB6AE}
.dgauge .ndl{stroke:#E5B96E; stroke-width:3; stroke-linecap:round}
.dgauge .hub{fill:#E5B96E}
.dgauge .gv{font-family:var(--serif); font-size:30px; font-weight:700; fill:#fff}
.dglab{font-family:var(--mono); font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:#E5B96E; margin-top:4px}
.dglist ul{padding-top:10px}
.drill li .pn em{display:block; font-style:normal; font-family:var(--mono); font-size:.6rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); margin-top:2px}

/* ---------- report: print and PDF (A4) ---------- */
.cover-print{display:none}
@media print{
  @page{size:A4; margin:16mm 13mm 18mm}
  @page{ @bottom-left{content:"SPEED\2122  School Excellence Report"; font:8pt "IBM Plex Mono",monospace; color:#6B7C77}
         @bottom-right{content:"Page " counter(page); font:8pt "IBM Plex Mono",monospace; color:#6B7C77} }
  @page cover{margin:0; @bottom-left{content:none} @bottom-right{content:none}}
  :root, :root[data-theme="dark"]{
    --bg:#FFFFFF; --surface:#FFFFFF; --surface-2:#F2F0EA; --surface-3:#E6E3D9;
    --text:#1A2B27; --head:#0E2B25; --muted:#5C6F69; --line:#DDD9CE; --line-2:#C7C3B5;
    --accent:#A3702A; --accent-ink:#8A5D1F; --accent-soft:#F4E8D2;
    --l1:#B4552F; --l2:#C08A3E; --l3:#8A8F4E; --l4:#3F7A68; --l5:#14514A;
    --warn:#B4552F; --warn-soft:#F9E6DE; --ok:#3F7A68; --ok-soft:#DFECE6; --s1:#0F8A73; --s2:#B7842F;
    --shadow:none; --shadow-lg:none }
  html,body{background:#fff !important}
  body{font-size:9.6pt; line-height:1.5; -webkit-print-color-adjust:exact; print-color-adjust:exact}
  .bar,.noprint,.toast,.bootlog,.footer{display:none !important}
  /* full-bleed cover page */
  .rep-cover{page:cover; break-after:page; min-height:297mm; padding:30mm 20mm 20mm !important; display:flex; align-items:stretch;
    background:radial-gradient(900px 600px at 100% 0%, rgba(229,185,110,.30), transparent 60%), linear-gradient(160deg,#0C2B26 0%,#14463C 100%) !important; color:#E7EFEB !important}
  .rep-cover > .wrap{display:flex; flex-direction:column; max-width:none; padding:0}
  .rep-cover h1{color:#fff !important; font-size:34pt !important; margin-top:14mm !important}
  .rep-cover .eyebrow{font-size:9pt}
  .rep-cover .meta{border-top-color:rgba(229,185,110,.35) !important; gap:10mm !important}
  .rep-cover .meta div{color:#CFE0DA !important; font-size:9pt}
  .rep-cover .meta b{color:#E5B96E !important}
  .cover-print{display:flex; flex-direction:column; flex:1; margin-top:14mm}
  .cover-level{display:flex; align-items:baseline; gap:6mm; padding:8mm 0; border-top:1px solid rgba(229,185,110,.35); border-bottom:1px solid rgba(229,185,110,.35)}
  .cover-level span{font:600 8pt "IBM Plex Mono",monospace; letter-spacing:.16em; text-transform:uppercase; color:#E5B96E}
  .cover-level b{font-family:var(--serif); font-size:64pt; line-height:1; color:#fff}
  .cover-level em{font-style:normal; font-family:var(--serif); font-size:20pt; color:#F3DFB4}
  .cover-toc{margin:10mm 0 0; padding-left:6mm; color:#CFE0DA; font-size:10.5pt; line-height:2}
  .cover-toc li::marker{color:#E5B96E; font-family:"IBM Plex Mono",monospace}
  .cover-foot{margin-top:auto; font:8pt "IBM Plex Mono",monospace; letter-spacing:.06em; color:#9DB6AE}
  /* flow: no forced gaps, chapters start on a fresh page, blocks never split */
  .rep{max-width:none !important; padding:0 !important}
  .rep section{break-inside:auto !important; padding-block:0 8mm !important; border-bottom:0 !important}
  .rep section.newpage{break-before:page}
  .rep h2{font-size:17pt !important; margin-block:1mm 4mm !important; break-after:avoid}
  .rep h3,.rep h4,.rdim,.rep .eyebrow{break-after:avoid}
  .rep .lead{font-size:10.5pt; max-width:none}
  .action,.dimrow,.vcard,.vdb-r,.drill,.rl,.rph,.rx,.tl,.alert,.card,.dgcard,.rpanel-h,.tbl tr,.numlist > *{break-inside:avoid}
  .rpanel{break-inside:auto; border:0 !important; padding:0 !important; border-radius:0}
  .rpanel-h{margin:0 0 3mm !important; border-radius:10px}
  .rpanel + .rpanel{margin-top:6mm}
  .vgrid{grid-template-columns:1fr 1fr !important; gap:5mm}
  .drills{grid-template-columns:1fr 1fr !important; gap:5mm}
  .dgrid{grid-template-columns:.9fr 1.4fr !important}
  .rphases{grid-template-columns:repeat(3,1fr) !important}
  .twocol{grid-template-columns:1fr 1fr !important}
  .vcard,.drill,.rlanes,.vdb,.rx,.action,.card{box-shadow:none !important}
  .vcard{padding:4mm}
  .drill ul{padding:1mm 4mm 2mm} .drill li{padding-block:1.4mm; font-size:8.6pt} .drill header{padding:3mm 4mm}
  .dscore b{font-size:18pt}
  .viz-radar{max-height:88mm}
  .tbl{overflow:visible !important}
  .tbl table{font-size:8.6pt}
  a{color:inherit; text-decoration:none}
}
@media print{
  .rep .lead,.rpanel-h,.rdim,.drill header,.vdb-key,.rl-h{break-after:avoid}
  .rep section.rsec{padding-top:0 !important}
  .rtime{break-inside:avoid}
}
@media print{
  .viz-radar .lb{font-size:19px} .viz-radar .lv{font-size:16px} .viz-radar .tk{font-size:13px}
  .vdonut{grid-template-columns:34mm 1fr; gap:4mm} .vdonut svg{width:34mm; height:34mm}
  .vlegend span{white-space:nowrap; font-size:7.6pt}
}

/* ---------- user guide and pacing ---------- */
.guide{padding:0; overflow:hidden; border-top:3px solid #E5B96E; box-shadow:var(--shadow)}
.guide summary{list-style:none; cursor:pointer; display:grid; grid-template-columns:1fr auto; gap:2px 12px; align-items:center; padding:18px 22px}
.guide summary::-webkit-details-marker{display:none}
.guide summary .eyebrow{grid-column:1}
.guide summary b{grid-column:1; font-family:var(--serif); font-size:1.2rem; color:var(--head); font-weight:600}
.guide summary i{grid-column:2; grid-row:1/3; width:12px; height:12px; border-right:2px solid var(--accent); border-bottom:2px solid var(--accent); transform:rotate(45deg); transition:transform .15s}
.guide[open] summary i{transform:rotate(-135deg)}
.guide > *:not(summary){margin-inline:22px}
.guide > *:last-child{margin-bottom:20px}
.gsteps{list-style:none; margin:0 0 16px; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:10px}
.gsteps li{display:grid; grid-template-columns:34px 1fr; gap:10px; align-items:start; background:var(--surface-2); border-radius:12px; padding:12px}
.gsteps .gn{width:30px; height:30px; border-radius:50%; display:grid; place-items:center; font-family:var(--serif); font-weight:700; color:#FFF9EE;
  background:linear-gradient(180deg,#D4A24C,#A3702A)}
.gsteps b{color:var(--head); font-size:.92rem}
.gsteps p{font-size:.84rem; color:var(--muted); margin-top:2px; line-height:1.45}
.pace{border:1px solid #C9923E; background:linear-gradient(180deg,#FFF8EA,#FBEFD6); color:#3B2A0F; border-radius:14px; padding:16px 18px; box-shadow:inset 4px 0 0 #B7842F}
.pace b.k{display:block; font-family:var(--serif); font-size:1.08rem; color:#5A3D12; margin-bottom:6px}
.pace p{font-size:.9rem; line-height:1.55}
.pace .plan{list-style:none; margin:12px 0; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(96px,1fr)); gap:6px}
.pace .plan li{background:rgba(255,255,255,.7); border:1px solid rgba(183,132,47,.35); border-radius:10px; padding:8px 10px; font-size:.8rem; line-height:1.3; color:#3B2A0F}
.pace .plan li span{display:block; font-family:var(--mono); font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; color:#8A5D1F; margin-bottom:2px}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .pace{background:linear-gradient(180deg,#2A2213,#221B0F); color:#F3E3C2} :root:not([data-theme="light"]) .pace b.k{color:#E5B96E} :root:not([data-theme="light"]) .pace .plan li{background:rgba(0,0,0,.2); color:#F3E3C2} }
:root[data-theme="dark"] .pace{background:linear-gradient(180deg,#2A2213,#221B0F); color:#F3E3C2}

/* ---------- visual summary ---------- */
.dico{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; flex:0 0 auto}
.drill header{display:grid; grid-template-columns:auto 1fr auto; align-items:center}
.drill header .dico.hd{width:30px; height:30px; color:#E5B96E; stroke-width:1.5}
.kpis{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px}
@media (max-width:860px){ .kpis{grid-template-columns:repeat(2,minmax(0,1fr))} }
.kpi{display:flex; flex-direction:column; align-items:center; justify-content:space-between; gap:4px; text-align:center; padding:14px 12px 16px; border-radius:16px; color:var(--dark-text);
  background:radial-gradient(260px 160px at 100% 0%, rgba(229,185,110,.24), transparent 65%), linear-gradient(150deg,#0C2B26,#14463C); box-shadow:var(--shadow)}
.kpi .kh{font-family:var(--mono); font-size:.62rem; letter-spacing:.14em; text-transform:uppercase; color:#E5B96E}
.kpi .kf{font-size:.8rem; color:#CFE0DA}
.kgauge{width:100%; max-width:190px}
.kgauge path:first-child{stroke:rgba(255,255,255,.14)}
.kgauge .ndl{stroke:#E5B96E; stroke-width:3; stroke-linecap:round} .kgauge .hub{fill:#E5B96E}
.kgauge .gv{font-family:var(--serif); font-size:30px; font-weight:700; fill:#fff}
.kshield{display:grid; grid-template-columns:repeat(2,auto); gap:6px 10px; margin-top:10px}
.kbig{font-family:var(--serif); font-size:1.9rem; font-weight:700; color:#fff; line-height:1} .kbig small{font-size:.9rem; color:#9DB6AE}
.knone{font-family:var(--serif); font-size:1.4rem; color:#9DB6AE; padding-block:30px}
.finds{display:grid; grid-template-columns:repeat(auto-fit,minmax(160px,1fr)); gap:10px; margin-top:12px}
.find{display:grid; grid-template-columns:40px 1fr; gap:10px; align-items:center; padding:12px 14px; border-radius:14px; background:var(--surface); border:1px solid var(--line)}
.find .fi{width:40px; height:40px; border-radius:50%; display:grid; place-items:center}
.find .fi svg{width:22px; height:22px; fill:none; stroke:#fff; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round}
.find.ok .fi{background:var(--l4)} .find.bad .fi{background:var(--l1)} .find.neu .fi{background:var(--l3)}
.find b{display:block; font-family:var(--mono); font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:600}
.find span{font-weight:600; color:var(--head); font-size:.92rem; line-height:1.3}
.vh{font-size:1.1rem; margin:22px 0 10px}
.mosaic{background:var(--surface); border:1px solid var(--line); border-radius:16px; padding:14px 16px}
.mrow{display:grid; grid-template-columns:minmax(0,13em) 1fr 2.6em; gap:12px; align-items:center; padding-block:6px; border-top:1px solid var(--line)}
.mrow:first-child{border-top:0}
.mname{display:flex; gap:8px; align-items:center; color:var(--accent-ink); min-width:0}
.mname b{color:var(--head); font-size:.86rem; line-height:1.25}
.mtiles{display:flex; flex-wrap:wrap; gap:4px}
.mt{width:26px; height:26px; border-radius:6px; display:grid; place-items:center; font-style:normal; font-family:var(--mono); font-size:.7rem; font-weight:600; color:#fff; border:1px dashed transparent}
.mt[style*="transparent"]{color:var(--muted); border-color:var(--line-2)}
.mt.c{outline:2px solid var(--head); outline-offset:1.5px}
.mlv{font-family:var(--serif); font-weight:700; font-size:1.05rem; text-align:right}
.mkey{display:flex; flex-wrap:wrap; gap:6px 14px; margin-top:10px; padding-top:10px; border-top:1px solid var(--line); font-family:var(--mono); font-size:.66rem; color:var(--muted)}
.mkey span{display:inline-flex; gap:6px; align-items:center} .mkey i{width:12px; height:12px; border-radius:3px; display:inline-block}
.mkey i.c{background:transparent; outline:2px solid var(--head); outline-offset:1px}
@media (max-width:560px){ .mrow{grid-template-columns:1fr 2.4em} .mtiles{grid-column:1/-1; order:3} .mt{width:22px; height:22px} }
.scards{display:flex; flex-direction:column; gap:10px}
.scard{display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:start; padding:14px 16px; border-radius:14px; background:var(--surface); border:1px solid color-mix(in srgb,var(--warn) 40%,transparent); box-shadow:inset 4px 0 0 var(--warn)}
.scard .lamp{margin-top:3px}
.scard b{color:var(--head)}
.scard p{font-size:.86rem; margin-top:5px; display:grid; grid-template-columns:3.2em 1fr; gap:8px}
.tagnow,.tagaim{font-family:var(--mono); font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; padding-top:3px}
.tagnow{color:var(--warn)} .tagaim{color:var(--ok)}
@media (max-width:560px){ .scard{grid-template-columns:auto 1fr} .scard .pill{grid-column:2} }
.sv ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px}
.sv li{display:grid; grid-template-columns:minmax(0,1fr) 84px 1.4em; gap:8px 10px; align-items:center; padding:10px 12px; border-radius:12px; background:var(--surface); border:1px solid var(--line)}
.sv li.ok{box-shadow:inset 3px 0 0 var(--ok)} .sv li.bad{box-shadow:inset 3px 0 0 var(--warn)}
.sv .pn{font-weight:600; color:var(--head); font-size:.9rem} .sv .pl{font-family:var(--serif); font-weight:700; text-align:right}
.sv .pt{grid-column:1/-1; font-size:.8rem; color:var(--muted); line-height:1.4}
.agrow{display:grid; grid-template-columns:220px 1fr; gap:14px; align-items:start}
.agrow .vdb{margin-bottom:0}
@media (max-width:760px){ .agrow{grid-template-columns:1fr} }
.pcards{display:flex; flex-direction:column; gap:10px}
.pcard{display:grid; grid-template-columns:38px 30px 1fr auto; gap:12px; align-items:center; padding:14px 16px; border-radius:16px; background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow)}
.pcard.crit{box-shadow:inset 4px 0 0 var(--warn), var(--shadow)}
.pcard .pn{width:36px; height:36px; border-radius:50%; display:grid; place-items:center; font-family:var(--serif); font-weight:700; font-size:1.1rem; color:#FFF9EE; background:linear-gradient(180deg,#D4A24C,#A3702A)}
.pcard .pi{width:26px; height:26px; color:var(--accent-ink)}
.pcard b{color:var(--head); font-size:.98rem}
.pcard p{font-size:.84rem; color:var(--muted); margin-top:2px; line-height:1.45}
.pm{display:flex; flex-direction:column; align-items:flex-end; gap:6px}
.lvstep{display:inline-flex; align-items:center; gap:3px}
.lvstep i{width:12px; height:12px; border-radius:3px; background:var(--surface-3)}
.lvstep i.on{background:var(--c)} .lvstep i.tgt{background:transparent; box-shadow:inset 0 0 0 2px var(--t)}
.lvstep em{font-style:normal; font-family:var(--mono); font-size:.68rem; color:var(--muted); margin-left:6px; white-space:nowrap}
@media (max-width:620px){ .pcard{grid-template-columns:36px 1fr} .pcard .pi{display:none} .pm{grid-column:1/-1; flex-direction:row; justify-content:flex-start; flex-wrap:wrap} }
.appx-head{border-radius:18px; padding:26px 24px !important; color:var(--dark-text); margin-top:30px;
  background:radial-gradient(500px 240px at 100% 0%, rgba(229,185,110,.24), transparent 65%), linear-gradient(135deg,#0C2B26,#14463C)}
.appx-head h2{color:#fff} .appx-head .eyebrow{color:#E5B96E} .appx-head .lead{color:#CFE0DA}
.appx-toc{margin:14px 0 0; padding-left:20px; color:#CFE0DA; line-height:1.9; font-size:.92rem} .appx-toc li::marker{color:#E5B96E}
.fgrid{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:10px}
.fcell{display:grid; grid-template-columns:34px 1fr; gap:10px; align-items:start; padding:12px 14px; border-radius:12px; background:var(--surface); border:1px solid var(--line)}
.fic{width:30px; height:30px; border-radius:50%; display:grid; place-items:center; background:var(--line-2); color:#fff; font-weight:700}
.fic svg{width:18px; height:18px; fill:none; stroke:#fff; stroke-width:2.6; stroke-linecap:round}
.fcell.yes .fic{background:var(--l4)} .fcell.partial .fic{background:var(--l2)} .fcell.no .fic{background:var(--l1)}
.fcell b{display:block; color:var(--head); font-size:.88rem} .fcell span{font-size:.82rem; color:var(--text)} .fcell em{display:block; font-style:normal; font-size:.76rem; color:var(--muted); margin-top:3px}
@media print{
  .kpi,.find,.mosaic,.scard,.sv li,.pcard,.fcell,.appx-head{break-inside:avoid; box-shadow:none}
  .pcard.crit{box-shadow:inset 4px 0 0 var(--warn)}
  .kpis{grid-template-columns:repeat(4,1fr) !important} .agrow{grid-template-columns:52mm 1fr !important}
  .appx-head{margin-top:0}
  .mt{width:22px; height:22px; font-size:.62rem}
}

@media print{ .rep .eyebrow{display:block} .mt{margin:1px} }

/* ---------- takeaways ---------- */
.takeaway{margin:14px 0 18px; display:grid; gap:8px; padding:14px 16px; border-radius:16px; background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow)}
.tk-row{display:grid; grid-template-columns:28px 1fr; gap:12px; align-items:start}
.tk-i{width:26px; height:26px; border-radius:50%; display:grid; place-items:center; margin-top:1px}
.tk-i::before{font:700 14px/1 var(--sans); color:#fff}
.tk-row.well .tk-i{background:var(--l4)} .tk-row.well .tk-i::before{content:"\2713"}
.tk-row.imp .tk-i{background:var(--l2)} .tk-row.imp .tk-i::before{content:"\2197"}
.tk-row.urg .tk-i{background:var(--l1)} .tk-row.urg .tk-i::before{content:"!"}
.tk-row b{display:block; font-family:var(--mono); font-size:.62rem; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); font-weight:600}
.tk-row p{font-size:.92rem; color:var(--head); line-height:1.45; margin-top:1px}
.tk-next{font-size:.84rem; color:var(--muted); border-top:1px solid var(--line); padding-top:8px; margin-top:2px}
.tk-next a{color:var(--accent-ink); font-weight:600; text-decoration:none; border-bottom:1px solid color-mix(in srgb,var(--accent) 45%,transparent)}
.dtake{display:flex; flex-wrap:wrap; gap:6px; padding:0 18px 12px}
.dtake span,.dkey span{font-size:.72rem; padding:.28em .7em .28em 1.6em; border-radius:999px; position:relative; color:var(--head); background:var(--surface-2)}
.dtake span::before,.dkey span::before{content:""; position:absolute; left:.6em; top:50%; width:.55em; height:.55em; margin-top:-.275em; border-radius:50%}
.dtake .well::before,.dkey .well::before{background:var(--l4)} .dtake .imp::before,.dkey .imp::before{background:var(--l2)} .dtake .urg::before,.dkey .urg::before{background:var(--l1)}
.dtake .urg{background:var(--warn-soft)}
.dkey{display:flex; gap:8px; flex-wrap:wrap; margin:-6px 0 12px}
@media print{ .takeaway{box-shadow:none; break-inside:avoid} .tk-next a{border:0} .dtake span,.dkey span{print-color-adjust:exact; -webkit-print-color-adjust:exact} }
@media print{ .viz-radar{max-height:74mm} .vcard{padding:3mm 4mm} .vlights ul{gap:2px} .takeaway{padding:3mm 4mm; margin:2mm 0 4mm} .tk-row p{font-size:9pt} }
@media print{ .rlanes{break-inside:avoid} }
