: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}
