:root{--bg:#1a1c2c;--panel:#252a40;--panel-dark:#141622;--ink:#0b0c14;--line:#333c57;--text:#f4f4f4;--muted:#94b0c2;--dim:#566c86;--rust:#ef7d57;--ml:#73eff7;--gold:#ffcd75;--good:#a7f070;--good-dark:#38b764;--bad:#ff6b81;--bad-dark:#b13e53;--blue:#3b5dc9;--pixel-font:"Press Start 2P", ui-monospace, monospace;--body-font:"VT323", ui-monospace, monospace;--code-font:"JetBrains Mono", ui-monospace, monospace;--bevel:inset -4px -4px 0 #00000059, inset 4px 4px 0 #ffffff12;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html,body,#app{height:100%}body{overflow:hidden}#app{flex-direction:column;display:flex}#app>main{flex:1;min-height:0;overflow:auto}body{background-color:var(--bg);color:var(--text);font-family:var(--body-font);-webkit-font-smoothing:none;background-image:linear-gradient(#ffffff08 2px,#0000 2px),linear-gradient(90deg,#ffffff08 2px,#0000 2px);background-size:32px 32px;min-height:100vh;font-size:22px;line-height:1.35}a{color:var(--ml)}h1,h2,h3{font-family:var(--pixel-font);margin:0 0 16px;font-weight:400;line-height:1.5}h1{font-size:22px}h2{color:var(--gold);font-size:14px}h3{font-size:12px}code{font-family:var(--code-font);background:var(--panel-dark);color:var(--gold);border:2px solid var(--line);padding:2px 6px;font-size:.68em}pre{margin:0}.sprite{image-rendering:pixelated;flex-shrink:0}.bob{animation:1.2s steps(2,end) infinite bob}@keyframes bob{50%{transform:translateY(-4px)}}@media (prefers-reduced-motion:reduce){.bob,.dots:after{animation:none}}.panel{background:var(--panel);border:4px solid var(--ink);box-shadow:var(--bevel), 6px 6px 0 #00000073;padding:24px}.btn{font-family:var(--pixel-font);color:var(--ink);background:var(--muted);border:4px solid var(--ink);box-shadow:var(--bevel), 3px 3px 0 #00000080;cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:10px;padding:12px 14px;font-size:11px;line-height:1;text-decoration:none;display:inline-flex}.tri{border-top:5px solid #0000;border-bottom:5px solid #0000;border-left:8px solid;flex:none;width:0;height:0}.btn.big .tri{border-top-width:6px;border-bottom-width:6px;border-left-width:10px}.ico{font-family:system-ui,sans-serif;font-size:14px;line-height:1}.btn:hover{filter:brightness(1.1)}.btn:active{box-shadow:var(--bevel);transform:translate(3px,3px)}.btn:focus-visible{outline:3px solid var(--gold);outline-offset:3px}.btn:disabled{opacity:.5;cursor:wait}.btn-go{background:var(--good)}.btn-run{background:var(--ml)}.btn-hint{background:var(--gold)}.btn-ghost{background:var(--panel-dark);color:var(--muted)}.btn.big{padding:18px 22px;font-size:14px}.topbar{background:var(--panel-dark);border-bottom:4px solid var(--ink);flex:none;justify-content:space-between;align-items:center;gap:16px;padding:12px 24px;display:flex}.brand{color:var(--text);font-family:var(--pixel-font);align-items:center;gap:12px;font-size:14px;text-decoration:none;display:flex}.xp{font-family:var(--pixel-font);color:var(--gold);font-size:12px}.home{align-content:start;gap:24px;padding:32px max(16px,50% - 490px) 48px;display:grid}.hero{align-items:center;gap:32px;padding:40px;display:flex}.hero h1{font-size:26px}.eyebrow{font-family:var(--pixel-font);color:var(--dim);margin:0 0 12px;font-size:10px}.lead{color:var(--muted);margin:0 0 28px;font-size:26px}.t-rust{color:var(--rust)}.t-ml{color:var(--ml)}.how{grid-template-columns:repeat(3,1fr);gap:24px;display:grid}.how-step p{color:var(--muted);margin:0}.how-icon{margin-bottom:12px;font-size:28px;display:block}.footer{text-align:center;color:var(--dim)}.levels{gap:8px;margin:0;padding:0;list-style:none;display:grid}.map-panel .levels{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.level{color:var(--text);border:3px solid #0000;align-items:center;gap:12px;padding:8px;text-decoration:none;display:flex}a.level:hover{background:var(--panel-dark);border-color:var(--line)}.level.current{background:var(--panel-dark);border-color:var(--gold)}.level-num{width:40px;height:40px;font-family:var(--pixel-font);color:var(--ink);background:var(--ml);border:3px solid var(--ink);box-shadow:var(--bevel);flex-shrink:0;place-items:center;font-size:11px;display:grid}.level.done .level-num{background:var(--good)}.level.locked{opacity:.4}.level.locked .level-num{background:var(--dim)}.level-text{line-height:1.1;display:grid}.level-text small{color:var(--muted);font-size:18px}#app>main.lesson-layout{overflow:hidden}.lesson-layout{grid-template-rows:minmax(0,1fr);grid-template-columns:240px minmax(300px,1fr) minmax(380px,1.25fr);gap:20px;padding:20px;display:grid}.map-side,.brief{min-height:0;overflow:auto}.map-side{padding:16px}.map-side .level-text small{display:none}.chips{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.chip{font-family:var(--pixel-font);border:3px solid var(--ink);color:var(--ink);padding:6px 8px;font-size:9px}.chip-rust{background:var(--rust)}.chip-ml{background:var(--ml)}.section{margin-top:24px}.section summary{cursor:pointer;font-family:var(--pixel-font);color:var(--gold);-webkit-user-select:none;user-select:none;align-items:center;gap:12px;font-size:12px;line-height:1.5;list-style:none;display:flex}.section summary::-webkit-details-marker{display:none}.section summary:before{content:"";border-top:6px solid #0000;border-bottom:6px solid #0000;border-left:9px solid var(--rust);flex:none;width:0;height:0;transition:transform .12s steps(2,end)}.section[open] summary:before{transform:rotate(90deg)}.section summary:hover{color:var(--text)}.section summary:focus-visible{outline:3px solid var(--gold);outline-offset:4px}.section-body{padding-top:4px}.shortcuts{grid-template-columns:max-content max-content 1fr;align-items:center;gap:8px 14px;margin:0;padding:0;list-style:none;display:grid}.shortcuts li{display:contents}kbd{font-family:var(--code-font);color:var(--muted);background:var(--panel);border:2px solid var(--line);justify-self:start;padding:1px 6px;font-size:13px}.md p,.md li{color:#dfe6ee}.md ul{padding-left:22px}.md li{margin-bottom:6px}.md pre{background:var(--panel-dark);border:3px solid var(--line);padding:12px;overflow-x:auto}.md pre code{color:var(--good);background:0 0;border:0;padding:0;font-size:14px}.hints{border-top:4px dashed var(--line);margin-top:28px;padding-top:20px}.hint-list{gap:10px;margin:0 0 16px;padding:0;list-style:none;display:grid}.hint{background:var(--panel-dark);border-left:6px solid var(--gold);padding:10px 12px}.hint b{font-family:var(--pixel-font);color:var(--gold);margin-right:6px;font-size:9px}.workbench{flex-direction:column;min-height:0;padding:0;display:flex;overflow:hidden}.toolbar{background:var(--panel-dark);border-bottom:4px solid var(--ink);flex-wrap:wrap;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.file-tab{font-family:var(--code-font);color:var(--rust);font-size:13px}.actions{flex-wrap:wrap;gap:8px;display:flex}.editor{border-bottom:4px solid var(--ink);flex:3 1 0;min-height:120px}.console{background:var(--panel-dark);flex:2 1 0;align-content:start;gap:12px;min-height:100px;padding:16px;display:grid;overflow:auto}.console p{margin:0}.muted{color:var(--dim)}.status{font-family:var(--pixel-font);color:var(--ml);font-size:11px}.dots:after{content:"";animation:1s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.banner{border:3px solid var(--ink);white-space:pre-wrap;color:var(--ink);padding:12px 14px}.banner-good{background:var(--good)}.banner-bad{background:var(--bad)}.tests{gap:6px;margin:0;padding:0;list-style:none;display:grid}.test.pass{color:var(--good)}.test.fail{color:var(--bad)}.test pre{font-family:var(--code-font);color:var(--text);white-space:pre-wrap;margin:4px 0 0 22px;font-size:13px}.out-title,.out-block summary{font-family:var(--pixel-font);color:var(--dim);cursor:default;margin-bottom:6px;font-size:9px}.out-block summary{cursor:pointer}.out{font-family:var(--code-font);white-space:pre-wrap;word-break:break-word;border-left:4px solid var(--line);background:#00000040;padding:10px;font-size:13px;line-height:1.5}.out-error{border-color:var(--bad);color:#ffd1d8}.out-warn{border-color:var(--gold);color:#f7e3b8}.out-plain{color:var(--text)}.clear{background:var(--blue);border:4px solid var(--ink);box-shadow:var(--bevel);align-items:center;gap:16px;padding:16px;display:flex}.clear-title{font-family:var(--pixel-font);color:var(--gold);font-size:13px;margin:0 0 12px!important}.loading{text-align:center;font-family:var(--pixel-font);place-items:center;gap:16px;padding:80px 16px;font-size:12px;display:grid}@media (width<=1180px){.lesson-layout{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.map-side{display:none}}@media (width<=820px){html,body,#app{height:auto}body{font-size:20px;overflow:auto}#app>main,#app>main.lesson-layout,.map-side,.brief,.workbench{overflow:visible}.lesson-layout{grid-template-rows:auto}.console{flex:none;max-height:60vh}.topbar{padding:10px 16px}.brand span{font-size:11px}.lesson-layout{grid-template-columns:minmax(0,1fr);padding:16px}.hero{text-align:center;flex-direction:column;padding:28px 20px}.hero h1{font-size:18px}.how{grid-template-columns:1fr}.panel{padding:18px}.editor{flex:none;height:300px}}.xp{align-items:center;gap:8px;display:inline-flex}.viz{background:var(--panel-dark);border:3px solid var(--line);box-shadow:var(--bevel);gap:12px;margin:18px 0;padding:14px;display:grid}.viz figcaption{font-family:var(--pixel-font);color:var(--gold);font-size:9px;line-height:1.6}.viz p{margin:0}.viz-plots{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;display:grid}.viz-label{font-family:var(--pixel-font);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 8px;font-size:9px;display:flex;margin-bottom:6px!important}.viz-label code{font-size:12px}.viz-plot{width:100%;height:auto;display:block}.viz-bg{fill:var(--ink)}.viz-axis{fill:var(--line)}.viz-col{fill:#ffcd7526}.viz-dot{fill:var(--gold)}.viz-axis-labels{justify-content:space-between;font-size:16px;display:flex;color:var(--dim)!important}.viz-slider{color:var(--muted);gap:6px;font-size:20px;display:grid}.viz-slider .viz-x{color:var(--gold)}.viz-text code{white-space:nowrap}.viz-slider input{width:100%;accent-color:var(--gold);cursor:pointer}.viz-meter{font-family:var(--pixel-font);color:var(--muted);align-items:center;gap:10px;font-size:9px;display:flex}.viz-meter-bar{flex:1;gap:3px;display:flex}.viz-meter-bar span{background:var(--panel);border:2px solid var(--line);flex:1;height:14px}.viz-meter-bar span.on{background:var(--good);border-color:var(--good-dark)}.viz-meter-value{text-align:right;min-width:4ch;color:var(--good)}.viz .viz-code{border-width:2px;padding:8px 10px}.viz-frame{border:3px solid var(--line);background:var(--panel);padding:10px;transition:opacity .2s}.viz-frame-name{font-family:var(--code-font);font-size:13px;color:var(--muted)!important;margin-bottom:8px!important}.viz-frame.is-idle{opacity:.45;border-style:dashed}.viz-var{flex-wrap:wrap;align-items:center;gap:8px;min-height:34px;display:flex}.viz-var-name{font-family:var(--code-font);color:var(--text);min-width:6ch;font-size:14px}.viz-frame.is-gone .viz-var-name{color:var(--bad);text-decoration:line-through}.viz-cells{display:flex}.viz-cell{font-family:var(--code-font);border:2px solid var(--line);margin-right:-2px;padding:4px 8px;font-size:13px}.viz-cell.own{background:var(--blue);border-color:var(--ml);color:var(--text)}.viz-cell.view{border:2px dashed var(--ml);color:var(--ml)}.viz-cell.gone{color:#0000;border-style:dashed}.viz-tag{font-family:var(--pixel-font);color:var(--gold);font-size:8px}.viz-frame.is-gone .viz-tag{color:var(--bad)}.viz-link{visibility:hidden;align-items:center;gap:10px;min-height:28px;padding-left:22px;display:flex}.viz-link.is-on{visibility:visible}.viz-arrow{background:var(--ml);width:6px;height:18px;margin-bottom:8px;position:relative}.viz-arrow:after{content:"";border-left:9px solid #0000;border-right:9px solid #0000;border-top:9px solid var(--ml);position:absolute;bottom:-8px;left:-6px}.viz-link-label{font-family:var(--pixel-font);color:var(--ml);font-size:8px}.viz-text{min-height:3.75em;font-size:20px;line-height:1.25}.viz-stepper{justify-content:space-between;align-items:center;gap:10px;display:flex}.viz-stepper .btn{padding:6px 12px}.viz-step-dots{gap:8px;display:flex}.viz-step-dot{background:var(--panel);border:2px solid var(--line);cursor:pointer;width:14px;height:14px;padding:0}.viz-step-dot.on{background:var(--gold);border-color:var(--gold)}.viz-sliders{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 16px;display:grid}.viz-text-short{min-height:0}.viz-bars{grid-template-columns:max-content 1fr;align-items:center;gap:8px 12px;display:grid}.viz-bar-name,.viz-row-name{font-family:var(--code-font);color:var(--muted);font-size:13px}.viz-bar{gap:2px;display:flex}.viz-bar span{background:var(--panel);border:2px solid var(--line);flex:1;height:14px}.viz-bar span.lit-ml{background:var(--ml);border-color:#41a6f6}.viz-bar span.lit-gold{background:var(--gold);border-color:var(--rust)}.viz-neuron{background:var(--ink);width:100%;height:auto;display:block}.viz-wire{stroke:var(--ml);transition:stroke-width .1s}.viz-wire.neg{stroke:var(--bad)}.viz-wire-label{font-family:var(--code-font);fill:var(--rust);text-anchor:middle;paint-order:stroke;stroke:var(--ink);stroke-width:4px;font-size:11px}.viz-node{fill:var(--blue);stroke:var(--ml);stroke-width:3px}.viz-sum{fill:var(--bad-dark);stroke:var(--bad);stroke-width:3px}.viz-neuron.is-yes .viz-sum{fill:var(--good-dark);stroke:var(--good)}.viz-node-label{font-family:var(--pixel-font);fill:var(--muted);text-anchor:middle;font-size:7px}.viz-node-value{font-family:var(--code-font);fill:var(--text);text-anchor:middle;dominant-baseline:middle;font-size:13px;font-weight:700}.viz-verdict{font-family:var(--pixel-font);fill:var(--bad);text-anchor:middle;font-size:8px}.viz-neuron.is-yes .viz-verdict{fill:var(--good)}.viz-table{align-items:center;gap:4px;display:grid}.viz-table .viz-cell{text-align:center;min-height:30px;color:var(--text);margin:0}.viz-table .viz-cell.is-now{border-color:var(--gold);background:#ffcd751f}.viz-table .viz-product{color:var(--gold)}.viz-total{font-family:var(--code-font);color:var(--muted);font-size:14px}.viz-total b{color:var(--gold)}.viz-text b,.viz-total b{color:var(--gold);font-weight:400}.viz .viz-code code{white-space:pre-wrap}.viz-struct{border:3px solid var(--line);background:var(--panel);padding:8px 10px}.viz-struct.is-now{border-color:var(--gold)}.viz-struct code{white-space:normal;background:0 0;border:0;padding:0;font-size:13px}.viz-chain{justify-items:stretch;display:grid}.viz-chain-row{border:3px dashed var(--line);opacity:.4;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;padding:8px 10px;display:flex}.viz-chain-row.is-lit{opacity:1;background:var(--panel);border-style:solid}.viz-chain-row.is-now{border-color:var(--gold)}.viz-chain-label{color:var(--muted);background:0 0;border:0;padding:0;font-size:13px}.viz-chain-value{font-family:var(--code-font);color:var(--gold);font-size:13px}.viz-chain-row:not(.is-lit) .viz-chain-value{visibility:hidden}.viz-chain-arrow{border-left:7px solid #0000;border-right:7px solid #0000;border-top:8px solid var(--line);justify-self:center;width:0;height:0;margin:4px 0}.viz-chain-arrow.is-lit{border-top-color:var(--gold)}.viz-chart{width:100%;height:auto;display:block}.viz-grid{fill:var(--panel)}.viz-square{fill:#ff6b8159;stroke:var(--bad);stroke-width:1px}.viz-point{fill:var(--ml)}.viz-model{stroke:var(--rust);stroke-width:2px}.viz-buttons{gap:10px;display:flex}.viz-trail{fill:var(--rust)}.viz-zones{font-family:var(--pixel-font);text-align:center;grid-template-columns:30fr 40fr 30fr;font-size:8px;display:grid;position:relative}.viz-zones>span:not(.viz-zone-marker){padding:8px 0;line-height:1.8}.zone-cat{color:var(--muted);background:#94b0c240}.zone-unsure{background:var(--panel);color:var(--dim)}.zone-dog{color:var(--gold);background:#ffcd7540}.viz-zone-marker{background:var(--text);width:4px;margin-left:-2px;position:absolute;top:-4px;bottom:-4px}.viz-verdict-row{align-items:center;gap:14px;display:flex}.viz-verdict-row .viz-code{flex:1;min-width:0}.viz-tabs{flex-wrap:wrap;gap:6px;display:flex}.viz-tab{font-family:var(--pixel-font);color:var(--muted);background:var(--panel);border:2px solid var(--line);cursor:pointer;padding:7px 9px;font-size:8px}.viz-tab:hover{color:var(--text)}.viz-tab.on{color:var(--ink);background:var(--gold);border-color:var(--gold)}.viz-plane-wrap{justify-content:center;display:flex}.viz-plane{width:100%;max-width:260px;height:auto;display:block}.viz-fire{fill:#73eff747}.viz-corner{stroke-width:.4px}.viz-corner.is-one{fill:var(--gold);stroke:var(--ink)}.viz-corner.is-zero{fill:var(--ink);stroke:var(--muted)}.viz-corner.is-wrong{stroke:var(--bad);stroke-width:.7px}.viz-corner.is-now{stroke:var(--text);stroke-width:.8px}.viz-legend{flex-wrap:wrap;justify-content:center;gap:4px 14px;font-size:17px;display:flex;color:var(--muted)!important}.viz-legend i{vertical-align:-1px;width:12px;height:12px;margin-right:6px;display:inline-block}.viz-legend i.is-one{background:var(--gold)}.viz-legend i.is-zero{background:var(--ink);border:2px solid var(--muted)}.viz-legend i.viz-fire-key{background:#73eff766}.viz-legend i.is-wrong{border:2px solid var(--bad)}.viz-draw{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.viz-canvas{aspect-ratio:1;touch-action:none;-webkit-user-select:none;user-select:none;grid-template-columns:repeat(8,1fr);gap:2px;width:min(100%,208px);display:grid}.viz-px{background:var(--panel);border:1px solid var(--line);cursor:crosshair}.viz-px.on{background:var(--text);border-color:var(--text)}.viz-reader{flex:1;min-width:120px}.viz-reader-digit{font-family:var(--pixel-font);color:var(--gold);font-size:48px;line-height:1.2}.viz-scores{font-family:var(--code-font);color:var(--dim);gap:2px;font-size:13px;display:grid}.viz-scores .is-best{color:var(--gold)}.viz .viz-nowrap code{white-space:pre}
