:root{--bg:#eef3ea;--surface:#fff;--surface-2:#e3eadf;--ink:#26313d;--ink-soft:#4f5b67;--rule:#d3dccf;--accent:#26313d;--accent-ink:#fff;--good:#1f8a4c;--bad:#c2391b;--c-tail:#e8701c;--c-front:#2b7fc4;--c-wheel:#2e9d5b;--c-icr:#d94a92;--c-contact:#d93025;--c-goal:#6a3df0;--star:#e09a00;--map-style:flat;--map-bg:#b8d8a8;--map-texture:#ffffff21;--map-road:#7d8590;--map-footpath:#e6e3dc;--map-grass:#a9cf98;--map-floor:#d9d6ce;--map-yard:#a3aab1;--map-walkway:#86c995;--map-island:#d8d4cb;--map-grid:#26313d12;--map-grid-major:#26313d24;--map-marking:#f4f2ec;--map-marking-yellow:#ffd666;--map-kerb:#c9c5bb;--map-ink:#26313d;--map-ink-soft:#4f5b67;--map-body:#e8553e;--map-body-edge:#b93d29;--map-roof:#f7f4ee;--map-roof-detail:#d9d4cb;--map-glass:#2f3b4a;--map-window:#9fd0e6;--map-tail-light:#ff4d5e;--map-tyre:#2b3036;--map-tyre-edge:#6b747d;--map-ghost:#ffffff4d;--map-ghost-line:#fff;--map-shadow:#14231e33;--map-obstacle:#5d6670;--map-obstacle-fill:#9aa3ad;--map-obstacle-top:#ffffff59;--map-wall:#737c87;--map-tree:#5fa35a;--map-tree-light:#79b96f;--map-trunk:#6b4a32;--map-car:#3d9db3;--map-car-2:#5b7bd5;--map-car-glass:#2b6f80;--map-shelter:#7fb7d9;--map-person:#f2b134;--map-person-head:#5b3a29;--map-cone:#ff7a1a;--map-zone:#d930251a;--map-swept:#ffffff4d;--map-label-bg:#fffffff2;--map-on-status:#fff;--map-light:#0000;--font-display:"Rubik", "Arial Rounded MT Bold", system-ui, sans-serif;--font-body:"Atkinson Hyperlegible", "Verdana", system-ui, sans-serif;--font-mono:"Overpass Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--font-map:"Rubik", system-ui, sans-serif;--step--1:.8125rem;--step-0:1rem;--step-1:1.2rem;--step-2:1.5rem;--step-3:2rem;--step-4:2.9rem;--radius:12px;--radius-small:8px;--gutter:max(16px, env(safe-area-inset-left,0px));--gutter-r:max(16px, env(safe-area-inset-right,0px));--shadow:0 2px 6px #26313d14, 0 10px 30px #26313d1f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d1220;--surface:#161d30;--surface-2:#1e2740;--ink:#dfe6f5;--ink-soft:#a9b4cc;--rule:#2a3552;--accent:#40e0d0;--accent-ink:#0d1220;--good:#4fe39a;--bad:#ff7a6b;--c-tail:#ffa070;--c-front:#6cc4ff;--c-wheel:#5be3a4;--c-icr:#ff6ec7;--c-contact:#ff5a5f;--c-goal:#b89cff;--star:#ffd27a;--map-style:night;--map-bg:#121826;--map-texture:#ffffff04;--map-road:#1a2030;--map-footpath:#232b3d;--map-grass:#142019;--map-floor:#1e2536;--map-yard:#1b2232;--map-walkway:#17332c;--map-island:#232b3d;--map-grid:#a0b4e60f;--map-grid-major:#a0b4e61f;--map-marking:#dce6ff80;--map-marking-yellow:#ffcd5ab3;--map-kerb:#3a4560;--map-ink:#dfe6f5;--map-ink-soft:#a9b4cc;--map-body:#2c3550;--map-body-edge:#7f8db5;--map-roof:#343f5e;--map-roof-detail:#3f4b6e;--map-glass:#0d1220;--map-window:#ffd27a;--map-tail-light:#ff4d5e;--map-tyre:#090c14;--map-tyre-edge:#8b97b8;--map-ghost:#c8dcff14;--map-ghost-line:#c8dcff99;--map-shadow:#0000;--map-obstacle:#8592b3;--map-obstacle-fill:#2a3248;--map-obstacle-top:#ffffff0f;--map-wall:#323c56;--map-tree:#1f3a2e;--map-tree-light:#2b4d3c;--map-trunk:#4a3a2c;--map-car:#3a4258;--map-car-2:#3a4a6a;--map-car-glass:#1b2132;--map-shelter:#2b4a78;--map-person:#ffc35c;--map-person-head:#3a2a1a;--map-cone:#ff8a3d;--map-zone:#ff5a5f1a;--map-swept:#ffa0701a;--map-label-bg:#0d1220e6;--map-on-status:#0d1220;--map-light:#ffc46e33;--font-display:"Chakra Petch", "Rubik", system-ui, sans-serif;--font-map:"Chakra Petch", "Rubik", system-ui, sans-serif;--shadow:0 1px 0 #0000004d, 0 8px 28px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0d1220;--surface:#161d30;--surface-2:#1e2740;--ink:#dfe6f5;--ink-soft:#a9b4cc;--rule:#2a3552;--accent:#40e0d0;--accent-ink:#0d1220;--good:#4fe39a;--bad:#ff7a6b;--c-tail:#ffa070;--c-front:#6cc4ff;--c-wheel:#5be3a4;--c-icr:#ff6ec7;--c-contact:#ff5a5f;--c-goal:#b89cff;--star:#ffd27a;--map-style:night;--map-bg:#121826;--map-texture:#ffffff04;--map-road:#1a2030;--map-footpath:#232b3d;--map-grass:#142019;--map-floor:#1e2536;--map-yard:#1b2232;--map-walkway:#17332c;--map-island:#232b3d;--map-grid:#a0b4e60f;--map-grid-major:#a0b4e61f;--map-marking:#dce6ff80;--map-marking-yellow:#ffcd5ab3;--map-kerb:#3a4560;--map-ink:#dfe6f5;--map-ink-soft:#a9b4cc;--map-body:#2c3550;--map-body-edge:#7f8db5;--map-roof:#343f5e;--map-roof-detail:#3f4b6e;--map-glass:#0d1220;--map-window:#ffd27a;--map-tail-light:#ff4d5e;--map-tyre:#090c14;--map-tyre-edge:#8b97b8;--map-ghost:#c8dcff14;--map-ghost-line:#c8dcff99;--map-shadow:#0000;--map-obstacle:#8592b3;--map-obstacle-fill:#2a3248;--map-obstacle-top:#ffffff0f;--map-wall:#323c56;--map-tree:#1f3a2e;--map-tree-light:#2b4d3c;--map-trunk:#4a3a2c;--map-car:#3a4258;--map-car-2:#3a4a6a;--map-car-glass:#1b2132;--map-shelter:#2b4a78;--map-person:#ffc35c;--map-person-head:#3a2a1a;--map-cone:#ff8a3d;--map-zone:#ff5a5f1a;--map-swept:#ffa0701a;--map-label-bg:#0d1220e6;--map-on-status:#0d1220;--map-light:#ffc46e33;--font-display:"Chakra Petch", "Rubik", system-ui, sans-serif;--font-map:"Chakra Petch", "Rubik", system-ui, sans-serif;--shadow:0 1px 0 #0000004d, 0 8px 28px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-text=large]{font-size:112.5%}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;line-height:1.5}#app{height:100%}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;letter-spacing:-.005em;margin:0;line-height:1.15}h1{font-size:var(--step-3);font-weight:800}h2{font-size:var(--step-2);font-weight:700}h3{font-size:var(--step-1);font-weight:700}p{margin:0}a{color:var(--accent)}[hidden]{display:none!important}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}[tabindex="-1"]:focus{outline:none}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-weight:600}.muted{color:var(--ink-soft)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.btn{appearance:none;border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);min-height:44px;color:var(--ink);font:700 var(--step-0) / 1.1 var(--font-display);letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;justify-content:center;align-items:center;gap:.5em;padding:.55em 1em;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--ink-soft)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{border-color:var(--rule)}.btn.small{min-height:36px;font-size:var(--step--1);padding:.35em .7em}.btn[disabled]{opacity:.45;cursor:default}.btn svg{flex:none;width:1.15em;height:1.15em}.btn.small svg{width:1.05em;height:1.05em}.btn .key{font:600 .7rem/1 var(--font-mono);opacity:.7;border:1px solid;border-radius:3px;padding:.2em .35em}.seg{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);display:inline-flex;overflow:hidden}.seg button{appearance:none;border:0;border-right:1px solid var(--rule);color:var(--ink);font:700 var(--step--1) / 1 var(--font-display);letter-spacing:.02em;cursor:pointer;touch-action:manipulation;background:0 0;min-height:40px;padding:0 .9em}.seg button:last-child{border-right:0}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink)}input[type=range]{appearance:none;touch-action:none;background:0 0;width:100%;height:32px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:var(--rule);border-radius:2px;height:4px}input[type=range]::-moz-range-track{background:var(--rule);border-radius:2px;height:4px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);border:3px solid var(--surface);width:22px;height:22px;box-shadow:0 0 0 1px var(--accent);border-radius:50%;margin-top:-9px}input[type=range]::-moz-range-thumb{background:var(--accent);border:3px solid var(--surface);width:18px;height:18px;box-shadow:0 0 0 1px var(--accent);border-radius:50%}.stars{letter-spacing:0;gap:2px;font-size:1rem;line-height:1;display:inline-flex}.stars .star{color:var(--rule)}.stars .star.on{color:var(--star)}.page{min-height:100%;padding-left:var(--gutter);padding-right:var(--gutter-r);padding-block:20px 48px}.page-inner{flex-direction:column;gap:28px;max-width:1080px;margin:0 auto;display:flex}.page-head{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;display:flex}.page-head .left{align-items:center;gap:12px;min-width:0;display:flex}.prose{flex-direction:column;gap:.9em;max-width:66ch;display:flex}.prose h2{margin-top:.8em}.prose ul,.prose ol{flex-direction:column;gap:.4em;margin:0;padding-left:1.3em;display:flex}.home{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:center;gap:32px;display:grid}.home-hero{flex-direction:column;gap:18px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:-.02em;font-size:clamp(3rem,9vw,5.5rem);font-weight:800;line-height:.9}.wordmark .dot{color:var(--c-tail)}.home-tagline{font-size:var(--step-1);max-width:34ch}.home-actions{flex-wrap:wrap;gap:10px;display:flex}.home-figure{border:1px solid var(--rule);background:var(--map-bg);border-radius:var(--radius);flex-direction:column;display:flex;overflow:hidden}.home-figure canvas{aspect-ratio:4/3;width:100%;max-width:100%;display:block}.figure-caption{border-top:1px solid var(--rule);background:var(--surface);font-size:var(--step--1);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:8px 12px;display:flex}.legend{font-size:var(--step--1);flex-wrap:wrap;gap:6px 14px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.swatch{border-top:3px solid;flex:none;width:26px;height:0;display:inline-block}.swatch.tail{color:var(--c-tail);border-top:4px dotted}.swatch.front{color:var(--c-front);border-top-style:dashed}.swatch.wheel{color:var(--c-wheel)}.swatch.icr{color:var(--c-icr);width:12px;height:12px;box-shadow:inset 0 0 0 2px var(--surface);background:currentColor;border:3px solid;border-radius:50%}.swatch.goal{color:var(--c-goal);border-top-style:dashed}.swatch.outline{color:var(--ink-soft);border-top-style:dashed}.swatch.contact{color:var(--c-contact);border:2px solid;border-radius:50%;width:12px;height:12px}.swatch.area{background:var(--map-road);height:12px;box-shadow:inset 0 0 0 20px var(--map-swept);outline:1px solid var(--c-tail);outline-offset:-1px;border:0;border-radius:3px}.home-menu{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;display:grid}.menu-card{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-align:left;font:inherit;cursor:pointer;flex-direction:column;gap:6px;min-width:0;padding:16px;text-decoration:none;display:flex}.menu-card:hover{border-color:var(--accent)}.menu-card .title{font:700 var(--step-1) / 1.2 var(--font-display)}.chapter{flex-direction:column;gap:12px;display:flex}.chapter-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.chapter-head .chapter-no{font:600 var(--step--1) / 1 var(--font-mono);letter-spacing:.08em;color:var(--ink-soft)}.chapter-head .tally{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-soft);margin-left:auto}.level-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;display:grid}.level-card{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);color:var(--ink);cursor:pointer;text-align:left;font:inherit;grid-template-rows:auto auto;grid-template-columns:auto minmax(0,1fr);gap:4px 12px;min-width:0;padding:12px 14px;text-decoration:none;display:grid}.level-card:hover{border-color:var(--accent)}.level-card.next{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.level-card .no{font:800 var(--step-2) / 1 var(--font-display);color:var(--ink-soft);grid-row:span 2;align-self:center;min-width:2.2ch}.level-card .name{font:700 var(--step-0) / 1.25 var(--font-display)}.level-card .meta{font-size:var(--step--1);color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.tag{font:600 .7rem/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--rule);color:var(--ink-soft);border-radius:3px;padding:.3em .45em;display:inline-block}.tag.clean{border-color:var(--good);color:var(--good)}.titleblock{border:1px solid var(--ink-soft);border-radius:var(--radius);background:var(--surface);grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.titleblock .cell{border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);min-width:0;padding:6px 10px 8px}.titleblock .cell:nth-child(4n){border-right:0}.titleblock .cell.wide{grid-column:span 2}.titleblock .cell.full{border-right:0;grid-column:1/-1}.titleblock .label{font:600 .68rem/1.3 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);display:block}.titleblock .value{font-family:var(--font-mono);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-weight:600}.titleblock .value.title{font:800 var(--step-1) / 1.2 var(--font-display)}.play{background:var(--map-bg);grid-template-rows:auto minmax(0,1fr);height:100%;display:grid}.play-bar{padding:6px var(--gutter-r) 6px var(--gutter);background:var(--surface);border-bottom:1px solid var(--rule);align-items:center;gap:8px;min-width:0;display:flex}.play-title{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.play-title .no{font:800 var(--step-1) / 1 var(--font-display);color:var(--ink-soft);white-space:nowrap}.play-title .name{font:700 var(--step-0) / 1.2 var(--font-display);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.play-actions{gap:6px;display:flex}.play-main{grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:relative}.play[data-mode=plan] .play-main{grid-template-columns:minmax(0,1fr) minmax(320px,380px)}.stage{min-width:0;min-height:0;position:relative;overflow:hidden}.stage canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}.stage canvas:active{cursor:grabbing}.hud{top:8px;left:max(8px, env(safe-area-inset-left,0px));background:color-mix(in srgb, var(--surface) 92%, transparent);border:1px solid var(--rule);border-radius:var(--radius);min-width:210px;max-width:calc(100% - 80px);font-size:var(--step--1);pointer-events:auto;flex-direction:column;gap:0;display:flex;position:absolute}.hud-toggle{appearance:none;color:var(--ink-soft);font:600 .7rem/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;min-height:30px;padding:6px 10px;display:flex}.hud table{border-collapse:collapse;width:100%}.hud td{border-top:1px solid var(--rule);vertical-align:baseline;padding:3px 10px}.hud td:last-child{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.hud .row-tail td:last-child{color:var(--c-tail)}.hud .row-front td:last-child{color:var(--c-front)}.hud .row-icr td:last-child{color:var(--c-icr)}.hud .row-warn td:last-child{color:var(--bad)}.stage-tools{top:8px;right:max(8px, env(safe-area-inset-right,0px));flex-direction:column;gap:6px;display:flex;position:absolute}.tool{appearance:none;border:1px solid var(--rule);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 92%, transparent);width:40px;height:40px;color:var(--ink);font:700 1.05rem/1 var(--font-display);cursor:pointer;touch-action:manipulation;place-items:center;display:grid}.tool[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tool svg{width:20px;height:20px}.notice{background:var(--surface);border:1px solid var(--rule);border-left:4px solid var(--accent);border-radius:var(--radius);max-width:min(520px,100% - 120px);box-shadow:var(--shadow);font-size:var(--step--1);z-index:3;flex-direction:column;gap:8px;padding:10px 14px;display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.notice.bad{border-left-color:var(--c-contact)}.notice.good{border-left-color:var(--good)}.notice .row{flex-wrap:wrap;gap:8px;display:flex}.drive-controls{padding:10px max(10px, env(safe-area-inset-right,0px)) max(10px, env(safe-area-inset-bottom,0px)) max(10px, env(safe-area-inset-left,0px));pointer-events:none;grid-template-columns:auto minmax(0,1fr) auto;align-items:end;gap:10px;display:grid;position:absolute;bottom:0;left:0;right:0}.drive-controls>*{pointer-events:auto}.wheel{touch-action:none;-webkit-user-select:none;user-select:none;cursor:grab;width:148px;height:148px;position:relative}.wheel svg{width:100%;height:100%;display:block;overflow:visible}.wheel .rim{fill:none;stroke:var(--ink);stroke-width:12px}.wheel .spoke{stroke:var(--ink);stroke-width:8px;stroke-linecap:round}.wheel .hub{fill:var(--surface);stroke:var(--ink);stroke-width:3px}.wheel .marker{fill:var(--c-tail)}.wheel .face{fill:color-mix(in srgb, var(--surface) 70%, transparent)}.wheel .readout{font:600 .8rem/1 var(--font-mono);pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.steer-slider{background:color-mix(in srgb, var(--surface) 92%, transparent);border:1px solid var(--rule);border-radius:var(--radius);flex-direction:column;gap:2px;width:min(320px,46vw);padding:8px 12px;display:flex}.steer-slider .labels{font:600 .75rem/1 var(--font-mono);color:var(--ink-soft);justify-content:space-between;display:flex}.pedals{flex-direction:column;gap:8px;display:flex}.pedal{appearance:none;border:1px solid var(--rule);border-radius:var(--radius);background:color-mix(in srgb, var(--surface) 94%, transparent);width:92px;height:64px;color:var(--ink);font:800 .85rem/1.1 var(--font-display);letter-spacing:.02em;touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;place-items:center;display:grid}.pedal[data-active=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.pedal .arrow{font-size:1.2rem}.mid-controls{flex-direction:column;justify-self:center;align-items:center;gap:8px;width:min(460px,100%);display:flex}.timeline{background:color-mix(in srgb, var(--surface) 94%, transparent);border:1px solid var(--rule);border-radius:var(--radius);flex-direction:column;gap:6px;width:100%;padding:8px 12px;display:flex}.timeline .row{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.timeline .time{font:600 var(--step--1) / 1 var(--font-mono);color:var(--ink-soft);text-align:center;min-width:9ch}.plan-panel{background:var(--surface);border-left:1px solid var(--rule);flex-direction:column;min-height:0;display:flex}.plan-scroll{flex-direction:column;flex:1;gap:12px;min-height:0;padding:12px 14px;display:flex;overflow:auto}.plan-scroll>*{flex-shrink:0}.plan-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.steps{border:1px solid var(--rule);border-radius:var(--radius);flex-direction:column;margin:0;padding:0;list-style:none;display:flex;overflow:hidden}.step{border-bottom:1px solid var(--rule);cursor:pointer;min-height:44px;font-family:var(--font-mono);font-size:var(--step--1);font-variant-numeric:tabular-nums;grid-template-columns:2.2ch minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 4px 0 10px;display:grid}.step:last-child{border-bottom:0}.step[aria-current=true]{background:color-mix(in srgb, var(--accent) 14%, transparent);box-shadow:inset 3px 0 0 var(--accent)}.step.contact{color:var(--c-contact)}.step .n{color:var(--ink-soft);font-weight:600}.step .desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.step-editor{border:1px solid var(--rule);border-radius:var(--radius);background:var(--bg);flex-direction:column;gap:12px;padding:12px;display:flex}.field{flex-direction:column;gap:4px;display:flex}.field-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.field-head label,.field-head .label{font:600 .72rem/1.2 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.field-head output{font:700 var(--step-0) / 1 var(--font-mono);font-variant-numeric:tabular-nums}input[type=range].banded::-webkit-slider-runnable-track{background:var(--track);height:6px}input[type=range].banded::-moz-range-track{background:var(--track);height:6px}input[type=range].banded::-webkit-slider-thumb{margin-top:-8px}.field.in-goal output{color:var(--good)}.field.in-goal output:before{content:"✓ "}.field.in-goal input[type=range]::-webkit-slider-thumb{background:var(--good);box-shadow:0 0 0 1px var(--good)}.field.in-goal input[type=range]::-moz-range-thumb{background:var(--good);box-shadow:0 0 0 1px var(--good)}.goal-note{font-family:var(--font-mono);font-size:var(--step--1);color:var(--good)}.nudges{flex-wrap:wrap;gap:6px;display:flex}.nudges .btn{flex:1;min-width:0;padding-inline:.4em}.plan-status{font-size:var(--step--1);border-radius:var(--radius);border:1px solid var(--rule);border-left:4px solid var(--rule);padding:10px 12px}.plan-status.good{border-left-color:var(--good)}.plan-status.bad{border-left-color:var(--c-contact)}.plan-foot{padding:10px 14px max(12px, env(safe-area-inset-bottom,0px));border-top:1px solid var(--rule);flex-direction:column;gap:8px;display:flex}.plan-foot .row{align-items:center;gap:8px;display:flex}.plan-foot .row>.btn.primary{flex:1}.scrim{z-index:20;background:color-mix(in srgb, var(--bg) 55%, transparent);padding:max(12px, env(safe-area-inset-top,0px)) max(12px, env(safe-area-inset-right,0px)) max(12px, env(safe-area-inset-bottom,0px)) max(12px, env(safe-area-inset-left,0px));place-items:center;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border:1px solid var(--ink-soft);border-radius:var(--radius);width:min(640px,100%);max-height:100%;box-shadow:var(--shadow);flex-direction:column;gap:16px;padding:18px;display:flex;overflow:auto}.dialog.narrow{width:min(420px,100%)}.dialog-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.criteria{border:1px solid var(--rule);border-radius:var(--radius);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.criteria li{border-bottom:1px solid var(--rule);grid-template-columns:1.6em minmax(0,1fr);gap:4px 8px;padding:8px 10px;display:grid}.criteria li:last-child{border-bottom:0}.criteria .mark{color:var(--star);font-size:1.1rem;line-height:1.3}.criteria .mark.no{color:var(--ink-soft)}.criteria .detail{font-size:var(--step--1);color:var(--ink-soft);grid-column:2}.callout{border:1px solid var(--rule);border-left:4px solid var(--c-tail);border-radius:var(--radius);background:var(--bg);flex-direction:column;gap:4px;padding:10px 12px;display:flex}.toggles{border:1px solid var(--rule);border-radius:var(--radius);flex-direction:column;display:flex}.toggle{border-bottom:1px solid var(--rule);cursor:pointer;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:48px;padding:8px 12px;display:grid}.toggle:last-child{border-bottom:0}.toggle input{width:20px;height:20px;accent-color:var(--accent)}.toggle .desc{font-size:var(--step--1);color:var(--ink-soft);display:block}.settings{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);flex-direction:column;display:flex}.setting{border-bottom:1px solid var(--rule);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 24px;padding:14px 16px;display:flex}.setting:last-child{border-bottom:0}.setting .text{flex-direction:column;gap:2px;min-width:0;max-width:52ch;display:flex}.setting .text strong{font-family:var(--font-display)}.setting .text span{font-size:var(--step--1);color:var(--ink-soft)}.lab{grid-template-columns:minmax(280px,340px) minmax(0,1fr);align-items:start;gap:20px;display:grid}.lab-controls{flex-direction:column;gap:14px;display:flex}.lab-figure{border:1px solid var(--rule);border-radius:var(--radius);background:var(--map-bg);min-width:0;position:relative;overflow:hidden}.lab-figure canvas{touch-action:none;width:100%;height:min(62vh,560px);display:block}.formula{font-family:var(--font-mono);font-size:var(--step--1);font-variant-numeric:tabular-nums;border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);white-space:pre;padding:10px 12px;line-height:1.7;overflow-x:auto}.formula .hl{color:var(--c-tail);font-weight:600}.results-table{border-collapse:collapse;width:100%;font-size:var(--step--1)}.results-table td{border-top:1px solid var(--rule);padding:6px 10px}.results-table td:last-child{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.cards{grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:14px;display:grid}.spec-card{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);flex-direction:column;min-width:0;display:flex;overflow:hidden}.spec-card canvas{background:var(--map-bg);border-bottom:1px solid var(--rule);width:100%;height:120px;display:block}.spec-card .body{flex-direction:column;gap:8px;padding:12px 14px;display:flex}.spec-card dl{font-size:var(--step--1);grid-template-columns:minmax(0,1fr) auto;margin:0;display:grid}.spec-card dt,.spec-card dd{border-top:1px solid var(--rule);margin:0;padding:3px 0}.spec-card dd{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.spec-card dd.tail{color:var(--c-tail)}.spec-card details summary{cursor:pointer;font-weight:700;font-size:var(--step--1);align-items:center;min-height:32px;display:flex}.badges{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;display:grid}.badge{border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);grid-template-columns:40px minmax(0,1fr);align-items:center;gap:12px;padding:12px;display:grid}.badge .seal{border:2px dashed var(--rule);width:40px;height:40px;font:800 .8rem/1 var(--font-display);color:var(--ink-soft);border-radius:50%;place-items:center;display:grid}.badge.earned .seal{border:2px solid var(--star);color:var(--star)}.badge .criterion{font-size:var(--step--1);color:var(--ink-soft)}.progress-bar{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.progress-bar span{background:var(--star);height:100%;display:block}.figure{border:1px solid var(--rule);border-radius:var(--radius);background:var(--map-bg);overflow:hidden}.figure canvas{touch-action:pan-y;width:100%;height:340px;display:block}.figure-controls{border-top:1px solid var(--rule);background:var(--surface);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 16px;padding:10px 12px;display:grid}.glossary{border-top:1px solid var(--rule);grid-template-columns:minmax(140px,220px) minmax(0,1fr);margin:0;display:grid}.glossary dt,.glossary dd{border-bottom:1px solid var(--rule);margin:0;padding:10px 0}.glossary dt{font-family:var(--font-display);padding-right:16px;font-weight:700}@media (max-width:860px){.home,.lab{grid-template-columns:minmax(0,1fr)}.lab-output{order:-1}.lab-figure canvas{height:46vh}}@media (max-width:759px){.play[data-mode=plan] .play-main{grid-template-rows:minmax(160px,1fr) auto;grid-template-columns:minmax(0,1fr)}.plan-panel{border-left:0;border-top:1px solid var(--rule);max-height:50vh}.plan-panel.collapsed .plan-scroll{display:none}}@media (min-width:760px) and (max-width:980px){.play[data-mode=plan] .play-main{grid-template-columns:minmax(0,1fr) minmax(300px,340px)}}@media (max-width:560px){.titleblock{grid-template-columns:repeat(2,minmax(0,1fr))}.titleblock .cell:nth-child(4n){border-right:1px solid var(--rule)}.titleblock .cell:nth-child(2n){border-right:0}.titleblock .cell.wide{border-right:0;grid-column:1/-1}.hud{min-width:0}.wheel{width:124px;height:124px}.pedal{width:78px;height:56px}.drive-controls{grid-template-columns:auto auto;grid-template-areas:"mid mid""wheel pedals";justify-content:space-between}.drive-controls .mid-controls{grid-area:mid}.drive-controls .steer-area{grid-area:wheel}.drive-controls .pedals{grid-area:pedals}.play-actions .label-text{display:none}.glossary{grid-template-columns:minmax(0,1fr)}.glossary dt{border-bottom:0;padding-bottom:0}.notice{max-width:calc(100% - 70px);left:8px;transform:none}}@media (max-height:520px) and (orientation:landscape){.wheel{width:118px;height:118px}.pedal{height:50px}.plan-panel{max-height:none}.play[data-mode=plan] .play-main{grid-template-rows:none;grid-template-columns:minmax(0,1fr) minmax(280px,340px)}.plan-panel{border-top:0;border-left:1px solid var(--rule)}}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}.view-toggle{border-radius:999px;flex:none;gap:2px;padding:3px}.view-toggle button{border-right:0;border-radius:999px;align-items:center;gap:6px;min-height:34px;padding:0 12px;display:inline-flex}.view-toggle svg{flex:none;width:18px;height:18px}.hud .row-wheel td:last-child{color:var(--c-wheel)}.hud .row-circle td:first-child:before{content:"";vertical-align:middle;border-top:3px dotted;width:18px;margin-right:6px;display:inline-block}.hud .row-circle.row-tail td:first-child:before{color:var(--c-tail)}.hud .row-circle.row-front td:first-child:before{color:var(--c-front)}.hud .row-circle.row-wheel td:first-child:before{color:var(--c-wheel)}@media (max-width:860px){.view-toggle .label-text{display:none}.view-toggle button{padding:0 10px}}.view-tip{border-radius:var(--radius);background:color-mix(in srgb, var(--c-icr) 10%, var(--surface));border:1px solid color-mix(in srgb, var(--c-icr) 35%, var(--rule));flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;display:flex}.view-tip p{flex:240px;margin:0}
