:root{--bg:#ffffff;--surface:#f5f8fb;--line:#d6e4f0;--ink:#1d2733;--muted:#5a6878;--navy:#1A3A5C;--orange:#F5A623;--gold:#B07D2B;--sky:#D6E4F0;--good:#2e7d4f;--warn:#b5540b;--onnavy:#ffffff;--onorange:#1d2733;--display:"Source Serif 4", Georgia, "Times New Roman", serif;--body:"Source Sans 3", "Segoe UI", Helvetica, Arial, sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1a26;--surface:#16283a;--line:#2a4561;--ink:#e7eef6;--muted:#9fb2c6;--navy:#9cc3e8;--sky:#22405e;--good:#6fd39b;--warn:#ffb36b;--onnavy:#0f1a26;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1a26;--surface:#16283a;--line:#2a4561;--ink:#e7eef6;--muted:#9fb2c6;--navy:#9cc3e8;--sky:#22405e;--good:#6fd39b;--warn:#ffb36b;--onnavy:#0f1a26;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font:17px/1.5 var(--body);margin:0}.band{background:var(--navy);color:var(--onnavy)}.wrap{max-width:1100px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}header .wrap{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-block:16px}.brand{font-family:var(--display);font-weight:700;letter-spacing:.12em;font-size:1rem}.brand sup{font-size:.55em;letter-spacing:0}.tagline{font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;opacity:.85}.proto{font-size:.8rem;background:var(--orange);color:var(--onorange);border-radius:4px;padding:2px 8px;font-weight:700;letter-spacing:.04em}main .wrap{display:grid;grid-template-columns:240px minmax(0,1fr);gap:32px;padding-block:28px}@media(max-width:780px){main .wrap{grid-template-columns:minmax(0,1fr)}}h1,h2,h3{font-family:var(--display);color:var(--navy);text-wrap:balance;margin:0}h1{font-size:2rem;line-height:1.15}h2{font-size:1.3rem}h3{font-size:1.05rem}.eyebrow{font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);font-weight:700}nav h2{font-size:1rem;margin-bottom:10px}.units{display:flex;flex-direction:column;gap:6px}@media(max-width:780px){.units{flex-direction:row;flex-wrap:wrap}}.unit{display:flex;justify-content:space-between;align-items:center;gap:10px;width:100%;text-align:left;font:inherit;font-size:.95rem;padding:9px 12px;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:8px;cursor:pointer}@media(max-width:780px){.unit{width:auto}}.unit[aria-current=true]{border-color:var(--navy);box-shadow:inset 3px 0 0 var(--orange);font-weight:700}.unit .pct{font-variant-numeric:tabular-nums;color:var(--muted);font-size:.78rem;white-space:nowrap}:focus-visible{outline:3px solid var(--orange);outline-offset:2px}.note{font-size:.8rem;color:var(--muted);margin-top:12px}.toggle{display:flex;gap:8px;align-items:flex-start;font-size:.85rem;color:var(--muted);margin-top:16px}.lesson{display:flex;flex-direction:column;gap:30px;min-width:0}.step{display:flex;flex-direction:column;gap:12px}.steplabel{display:flex;gap:10px;align-items:center}.num{width:28px;height:28px;border-radius:50%;border:2px solid var(--navy);color:var(--navy);display:grid;place-items:center;font-weight:700;font-size:.9rem;flex:none}.num.done{background:var(--navy);color:var(--onnavy)}.card{border:1px solid var(--line);border-radius:10px;padding:18px;background:var(--bg)}.video{aspect-ratio:16/9;max-width:100%;border-radius:10px;background:var(--surface);border:1px dashed var(--line);display:grid;place-items:center;text-align:center;padding:20px}.video .play{width:64px;height:64px;border-radius:50%;background:var(--navy);display:grid;place-items:center;margin:0 auto 10px}.video .play:after{content:"";border-left:20px solid var(--onnavy);border-top:12px solid transparent;border-bottom:12px solid transparent;margin-left:5px}.video p{margin:0;color:var(--muted);max-width:42ch}.video strong{color:var(--ink)}.muted{color:var(--muted)}.bar{height:6px;border-radius:3px;background:var(--surface);border:1px solid var(--line);overflow:hidden;margin:10px 0 14px}.bar i{display:block;height:100%;background:var(--orange);transition:width .3s}.cells,.countline{display:flex;flex-wrap:wrap;gap:6px}.countline{min-height:44px;margin-top:6px}.cell{width:58px;height:44px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--ink);font:700 1.1rem var(--body);font-variant-numeric:tabular-nums;text-align:center;display:grid;place-items:center}input.cell{background:var(--bg)}.cell.ok{border-color:var(--good);color:var(--good)}.cell.bad{border-color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn)}.fb{min-height:1.5em;margin-top:12px;font-size:.98rem}.fb.good{color:var(--good)}.fb.warn{color:var(--warn)}.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px;align-items:center}.btn{font:inherit;font-weight:700;padding:10px 18px;border-radius:8px;border:2px solid var(--navy);background:var(--navy);color:var(--onnavy);cursor:pointer}.btn.ghost{background:transparent;color:var(--navy)}.btn.small{padding:6px 12px;font-size:.88rem}.btn[disabled]{opacity:.45;cursor:not-allowed}.done-line{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.check{color:var(--good);font-weight:700}.stages{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.stage{font:inherit;font-size:.88rem;padding:7px 12px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;display:flex;gap:6px;align-items:center}.stage b{font-variant-numeric:tabular-nums}.stage[aria-pressed=true]{border-color:var(--navy);background:var(--navy);color:var(--onnavy)}.stage.passed:after{content:"✓";color:var(--good);font-weight:700}.stage[aria-pressed=true].passed:after{color:var(--onnavy)}.stage[disabled]{opacity:.5;cursor:not-allowed}.stagehead{margin-bottom:14px}.stagehead p{margin:4px 0 0;color:var(--muted);font-size:.95rem}.locked{background:var(--surface);border:1px dashed var(--line);border-radius:10px;padding:22px;text-align:center;color:var(--muted)}.work{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:start}@media(max-width:620px){.work{grid-template-columns:minmax(0,1fr)}}.pmeta{font-size:.85rem;color:var(--muted)}.bigq{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 4px}.bigq .q{font-family:var(--display);font-weight:700;font-size:2.6rem;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap}.bigq input{width:110px;font:700 2rem var(--body);font-variant-numeric:tabular-nums;padding:4px 10px;border:2px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}.cue{margin-top:12px;padding:10px 14px;border-left:4px solid var(--orange);background:var(--surface);border-radius:0 8px 8px 0;font-size:.98rem}.cue b{color:var(--navy)}.toolcol{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:200px}.toolcol .lbl{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:700}.kp{display:grid;grid-template-columns:repeat(3,58px);grid-auto-rows:58px}.kc{position:relative;display:grid;place-items:center;font:700 1.6rem var(--display);color:var(--navy);background:transparent;border:0;padding:0}.kc.r{border-right:3px solid var(--navy)}.kc.b{border-bottom:3px solid var(--navy)}button.kc{cursor:pointer}.kc .d{width:44px;height:44px;border-radius:50%;display:grid;place-items:center}.kc.mark .d{background:var(--orange);color:var(--onorange)}.kc .ord{position:absolute;top:2px;right:4px;font:700 .68rem var(--body);color:var(--gold)}#kpBox,#buildBox{display:flex;flex-direction:column;align-items:center}.kpwrap{position:relative;width:174px}.kpwrap .guide{position:absolute;inset:0;width:174px;height:242px;pointer-events:none;z-index:1}.kpnote{font-size:.85rem;color:var(--muted);text-align:center;max-width:200px}.kzero{margin:10px auto 0;width:58px;height:58px;border:2px solid var(--navy);border-radius:6px}.kc input{width:42px;height:42px;text-align:center;font:700 1.4rem var(--display);color:var(--navy);border:1px solid var(--line);border-radius:6px;background:var(--bg)}.kc input.bad{border-color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn)}.kc input.ok{border-color:var(--good)}.summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.stat{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.stat b{display:block;font-family:var(--display);font-size:1.5rem;color:var(--navy);font-variant-numeric:tabular-nums}.stat span{font-size:.8rem;color:var(--muted)}.mapwrap{overflow-x:auto}table.map{border-collapse:separate;border-spacing:3px;font-size:.78rem;font-variant-numeric:tabular-nums}table.map th{color:var(--muted);font-weight:600;padding:2px 4px}table.map td{width:26px;height:26px;border-radius:5px;background:var(--surface);border:1px solid var(--line)}td.s1{background:var(--warn);border-color:var(--warn)}td.s2{background:var(--sky);border-color:var(--navy)}td.s3{background:var(--navy);border-color:var(--navy)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.8rem;color:var(--muted);margin-top:8px}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;vertical-align:-1px;margin-right:4px;border:1px solid var(--line)}footer{border-top:1px solid var(--line);color:var(--muted);font-size:.8rem}footer .wrap{padding-block:16px}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.shell{max-width:520px;margin:48px auto;padding:0 16px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field input{font:inherit;padding:10px 12px;border:2px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink)}.students{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin:16px 0}.studentcard{font:inherit;text-align:left;padding:16px;border:2px solid var(--line);border-radius:10px;background:var(--bg);color:var(--ink);cursor:pointer}.studentcard b{display:block;font-family:var(--display);font-size:1.2rem;color:var(--navy)}.studentcard span{font-size:.85rem;color:var(--muted)}.who{display:flex;gap:10px;align-items:center;font-size:.85rem;opacity:.9}.who button{font:inherit;font-size:.8rem;background:transparent;border:1px solid currentColor;color:inherit;border-radius:6px;padding:3px 9px;cursor:pointer}.streak{font-size:.85rem;color:var(--muted);margin-top:6px}.unit[data-locked=true]{opacity:.55}
