:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4efe6;--bg-2:#ebe3d6;--surface:#fffdf9;--surface-2:#f7f2e9;--surface-sunk:#e9e1d3;--border:#40302024;--border-strong:#40302042;--shadow-1:0 1px 2px #3c2a1814, 0 2px 8px #3c2a180f;--shadow-2:0 6px 24px #3c2a1824;--shadow-pop:0 10px 40px #3c2a1838;--text-1:#2f2419;--text-2:#2f2419a8;--text-3:#2f24196b;--text-on-accent:#fffdf9;--accent:#e8760f;--accent-hover:#d16a0c;--accent-soft:#e8760f24;--accent-ring:#e8760f66;--success:#2f8f4e;--success-soft:#2f8f4e24;--danger:#d1453b;--danger-soft:#d1453b24;--star:#f0b429;--block-motion:#3f8ee0;--block-loop:#f2a33c;--block-logic:#8a63d2;--block-sensing:#24a89c;--block-data:#4f8a3a;--block-variables:#d1663b;--block-procedures:#c2478b;--block-world:#b8843a;--block-events:#d9a520;--block-text:#fff;--block-shadow:#0000002e;--workspace-bg:#f0e9dd;--workspace-grid:#4030201a;--flyout-bg:#e6ddcd;--toolbox-bg:#ded3c0;--world-sky-top:#9fd4f0;--world-sky-bottom:#ffe6c4;--world-fog:#cfe3ef;--world-sun:#fff3dd;--world-ground:#7fb356;--world-ground-2:#6aa047;--world-path:#c9a06a;--world-path-2:#b98f5c;--world-rock:#9c9184;--world-water:#3f9fd0;--world-ice:#bfe6f5;--world-goal:#f0b429;--world-gem:#45d6c8;--world-avatar:#f7f2e9;--world-avatar-accent:#e8760f;--r-xl:24px;--r-lg:16px;--r-md:10px;--r-sm:6px;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--touch:44px;--topbar-h:56px;--transport-h:64px;--font-ui:"Nunito", -apple-system, BlinkMacSystemFont, "SF Pro Rounded", "Segoe UI", system-ui, sans-serif;--font-mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;--fs-1:13px;--fs-2:15px;--fs-3:17px;--fs-4:22px;--fs-5:30px;--ease:cubic-bezier(.32, .72, 0, 1);--dur-fast:.12s;--dur:.22s;--dur-slow:.42s}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#1b1a1f;--bg-2:#141317;--surface:#26242c;--surface-2:#2e2b34;--surface-sunk:#1c1b21;--border:#ffffff1f;--border-strong:#ffffff3d;--shadow-1:0 1px 2px #0006, 0 2px 8px #0000004d;--shadow-2:0 6px 24px #00000080;--shadow-pop:0 10px 40px #0009;--text-1:#f2ede4;--text-2:#f2ede4a8;--text-3:#f2ede46b;--accent:#ff9233;--accent-hover:#ffa855;--accent-soft:#ff923333;--accent-ring:#ff923380;--success:#4fbe74;--success-soft:#4fbe7433;--danger:#ff6b60;--danger-soft:#ff6b6033;--block-motion:#4a90e2;--block-loop:#e09a3c;--block-logic:#9c7ae0;--block-sensing:#2bb8ab;--block-data:#5d9c46;--block-variables:#dd7549;--block-procedures:#d1559a;--block-world:#c2914a;--block-events:#e0ac2a;--workspace-bg:#201f25;--workspace-grid:#ffffff0f;--flyout-bg:#2a2830;--toolbox-bg:#232128;--world-sky-top:#2b3f5c;--world-sky-bottom:#6b4b60;--world-fog:#33405a;--world-sun:#ffe0b0;--world-ground:#4e7a3c;--world-ground-2:#416a33;--world-path:#9a7a52;--world-path-2:#866a46;--world-rock:#6d6459;--world-water:#2c6f96;--world-ice:#86b8cc;--world-avatar:#d9d3c8}@media (prefers-reduced-motion:reduce){:root{--dur-fast:1ms;--dur:1ms;--dur-slow:1ms}}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text-1);font-family:var(--font-ui);font-size:var(--fs-2);-webkit-font-smoothing:antialiased;margin:0;overflow:hidden}#app{flex-direction:column;height:100dvh;display:flex}.topbar{align-items:center;gap:var(--sp-2);height:var(--topbar-h);padding:0 var(--sp-3);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-1);z-index:4;flex:none;display:flex}.topbar-brand{font-size:var(--fs-4);letter-spacing:-.02em;color:var(--accent);font-weight:800}.topbar-title{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.topbar-stars{color:var(--star);letter-spacing:.08em}.topbar-spacer{flex:auto}.topbar-blocks{font-variant-numeric:tabular-nums;color:var(--text-2);font-size:var(--fs-1);white-space:nowrap}.topbar-blocks.is-over{color:var(--danger);font-weight:700}.split{flex:auto;min-height:0;display:flex}.pane{min-width:0;min-height:0;position:relative}.pane-workspace{background:var(--workspace-bg);flex:0 0 clamp(320px,38%,620px);display:flex}.blockly-host{flex:auto;min-width:0}.pane-viewport{background:var(--bg-2);flex:auto;display:flex}.viewport-canvas{touch-action:none;outline:none;width:100%;height:100%;display:block}.viewport-canvas:focus-visible{box-shadow:inset 0 0 0 3px var(--accent-ring)}.splitter{cursor:col-resize;background:var(--border);transition:background var(--dur-fast) var(--ease);flex:0 0 6px}.splitter:hover,.splitter:focus-visible{background:var(--accent);outline:none}.brief{top:var(--sp-3);left:var(--sp-3);max-width:min(38ch,60%);padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);font-size:var(--fs-2);cursor:pointer;transition:opacity var(--dur) var(--ease);margin:0;line-height:1.45;position:absolute}.brief.is-dismissed{opacity:0;pointer-events:none}.rail{top:var(--sp-3);right:var(--sp-3);width:232px;padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-1);gap:var(--sp-2);flex-direction:column;display:flex;position:absolute}.rail-title{font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);margin:0}.objective-list{gap:var(--sp-1);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.objective{align-items:baseline;gap:var(--sp-2);font-size:var(--fs-2);line-height:1.3;display:flex}.objective-check{color:var(--text-3);font-weight:800}.objective.is-done .objective-check{color:var(--success)}.objective.is-done .objective-label{color:var(--text-2);text-decoration:line-through}.objective-count{font-variant-numeric:tabular-nums;color:var(--text-3);font-size:var(--fs-1);margin-left:auto}.counters{gap:var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--border);display:flex}.counter{flex-direction:column;display:flex}.counter-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-3);font-size:11px}.counter-value{font-size:var(--fs-3);font-variant-numeric:tabular-nums;font-weight:800}.hint-box{gap:var(--sp-2);flex-direction:column;display:flex}.hint-text{font-size:var(--fs-1);color:var(--text-2);background:var(--accent-soft);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);margin:0;line-height:1.45}.transport-dock{left:50%;bottom:var(--sp-3);max-width:calc(100% - var(--sp-5));position:absolute;transform:translate(-50%)}.transport{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-2);display:flex}.transport-buttons{gap:var(--sp-1);display:flex}.transport-speed{position:relative}.speed-menu[hidden]{display:none}.speed-menu{bottom:calc(100% + var(--sp-2));background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);z-index:3;flex-direction:column;display:flex;position:absolute;left:50%;overflow:hidden;transform:translate(-50%)}.speed-option{appearance:none;color:var(--text-1);font:inherit;padding:var(--sp-2) var(--sp-4);cursor:pointer;text-align:left;white-space:nowrap;background:0 0;border:0}.speed-option:hover{background:var(--surface-2)}.speed-option.is-active{background:var(--accent-soft);font-weight:800}.transport-scrub{align-items:center;gap:var(--sp-2);min-width:160px;display:flex}.scrub{accent-color:var(--accent);flex:auto;min-width:100px}.scrub-label{font-variant-numeric:tabular-nums;font-size:var(--fs-1);color:var(--text-3);text-align:right;min-width:3ch}.result{width:min(340px,76%);padding:var(--sp-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--shadow-pop);text-align:center;animation:pop var(--dur) var(--ease);margin:0 auto;position:absolute;inset:50% 0 auto;transform:translateY(-50%)}.result[hidden]{display:none}.result-stars{letter-spacing:.06em;color:var(--surface-sunk);font-size:40px}.result-stars .star.is-lit{color:var(--star)}.result-title{margin:var(--sp-2) 0;font-size:var(--fs-5);font-weight:800}.result.is-fail .result-title{font-size:var(--fs-3);color:var(--danger)}.result-detail{color:var(--text-3);font-size:var(--fs-1);margin:0}.result-yours{font-size:var(--fs-3);color:var(--text-1);font-variant-numeric:tabular-nums;font-weight:700}.result-actions{gap:var(--sp-2);margin-top:var(--sp-4);justify-content:center;display:flex}@keyframes pop{0%{opacity:0;transform:translateY(-50%)scale(.92)}}#app.is-failed .pane-viewport:after{content:"";pointer-events:none;box-shadow:inset 0 0 120px 20px var(--danger-soft);animation:vignette .9s var(--ease);position:absolute;inset:0}@keyframes vignette{0%{opacity:0}20%{opacity:1}to{opacity:0}}.toasts{left:50%;bottom:calc(var(--transport-h) + var(--sp-5));gap:var(--sp-2);z-index:20;pointer-events:none;flex-direction:column;display:flex;position:fixed;transform:translate(-50%)}.toast{padding:var(--sp-3) var(--sp-4);background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:var(--r-md);box-shadow:var(--shadow-2);font-size:var(--fs-2);opacity:0;max-width:46ch;transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease);transform:translateY(8px)}.toast.is-in{opacity:1;transform:none}.toast-success{border-left-color:var(--success)}.toast-error{border-left-color:var(--danger)}.levelmap{background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:30;padding:var(--sp-4);place-items:center;display:grid;position:fixed;inset:0}.levelmap[hidden]{display:none}.levelmap-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);width:min(880px,100%);max-height:86dvh;box-shadow:var(--shadow-pop);padding:var(--sp-5);overflow:auto}.levelmap-head{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4);display:flex}.levelmap-title{font-size:var(--fs-4);margin:0}.levelmap-progress{color:var(--text-3);font-size:var(--fs-1);margin-left:auto}.world{margin-bottom:var(--sp-5)}.world-title{margin:0 0 var(--sp-2);font-size:var(--fs-1);text-transform:uppercase;letter-spacing:.09em;color:var(--text-3)}.world-path{align-items:center;gap:var(--sp-1);flex-wrap:wrap;display:flex}.world-link{background:var(--border);border-radius:2px;width:20px;height:3px}.level-node{appearance:none;border-radius:var(--r-lg);border:2px solid var(--border);background:var(--surface-2);width:62px;height:62px;color:var(--text-1);font:inherit;cursor:pointer;transition:transform var(--dur-fast) var(--ease), border-color var(--dur-fast) var(--ease);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.level-node:hover:not(:disabled){border-color:var(--accent);transform:translateY(-2px)}.level-node:disabled{opacity:.45;cursor:not-allowed}.level-node.is-solved{background:var(--success-soft)}.level-node.is-current{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.level-index{font-size:var(--fs-3);font-weight:800}.level-stars{color:var(--star);letter-spacing:.05em;font-size:10px}.btn{appearance:none;min-height:var(--touch);min-width:var(--touch);padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);color:var(--text-1);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:var(--sp-2);transition:background var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);font-weight:700;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface)}.btn:active:not(:disabled){transform:scale(.96)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn:focus-visible{box-shadow:0 0 0 3px var(--accent-ring);outline:none}.btn-icon{font-size:var(--fs-3);padding:0}.btn-primary{background:var(--accent);color:var(--text-on-accent);font-size:var(--fs-3);border-color:#0000}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-speed{font-variant-numeric:tabular-nums;min-width:62px}.btn-hint{align-self:flex-start}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:860px),(orientation:portrait) and (max-width:1024px){.split{flex-direction:column}.pane-viewport{flex:0 0 52%;order:-1}.result{width:min(300px,88%)}.pane-workspace{flex:auto}.splitter{display:none}.rail{top:auto;bottom:calc(var(--transport-h) + var(--sp-1));left:var(--sp-2);right:var(--sp-2);align-items:center;gap:var(--sp-3);width:auto;padding:var(--sp-2);background:color-mix(in srgb, var(--surface) 90%, transparent);flex-direction:row}.rail-title{display:none}.objective-list{gap:var(--sp-3);scrollbar-width:none;flex-direction:row;flex:auto;overflow-x:auto}.objective{font-size:var(--fs-1);flex:none}.objective-label{white-space:nowrap;text-overflow:ellipsis;max-width:16ch;overflow:hidden}.objective-count{margin-left:var(--sp-1)}.counters{border-top:0;border-left:1px solid var(--border);padding-top:0;padding-left:var(--sp-3);gap:var(--sp-2)}.hint-box{flex:none}.hint-text,.brief.is-dismissed{display:none}.brief{left:var(--sp-2);right:var(--sp-2);top:var(--sp-2);max-width:none;font-size:var(--fs-1);padding:var(--sp-2) var(--sp-3);background:color-mix(in srgb, var(--surface) 90%, transparent)}.transport{gap:var(--sp-2);padding:var(--sp-1) var(--sp-2)}.transport-scrub,.topbar-title{display:none}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}.editor{z-index:40;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:var(--sp-3);place-items:center;display:grid;position:fixed;inset:0}.editor[hidden]{display:none}.editor-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);width:min(1080px,100%);max-height:92dvh;box-shadow:var(--shadow-pop);flex-direction:column;display:flex;overflow:hidden}.editor-head{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);display:flex}.editor-title{font-size:var(--fs-3);flex:auto;margin:0}.editor-actions{gap:var(--sp-1);display:flex}.editor-actions .btn{min-height:36px;padding:0 var(--sp-3);font-size:var(--fs-1)}.editor-body{gap:var(--sp-4);padding:var(--sp-4);min-height:0;display:flex;overflow:auto}.editor-palette{gap:var(--sp-2);flex-direction:column;flex:0 0 220px;display:flex}.editor-heading{margin:var(--sp-2) 0 0;text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);font-size:11px}.editor-swatches{flex-wrap:wrap;gap:4px;display:flex}.swatch{border-radius:var(--r-sm);border:2px solid var(--border);background:var(--swatch,var(--surface-2));cursor:pointer;width:30px;height:30px;font:inherit;color:var(--text-1);font-size:11px;font-weight:800}.swatch-entity{background:var(--surface-2)}.swatch.is-active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-ring)}.editor-row{align-items:center;gap:var(--sp-2);display:flex}.editor-label{width:1.5em;color:var(--text-3);font-size:var(--fs-1)}.editor-number,.editor-text,.editor-select{min-width:0;min-height:32px;padding:0 var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-1);font:inherit;font-size:var(--fs-1);flex:auto}.editor-checks{flex-direction:column;gap:2px;display:flex}.editor-checks-scroll{max-height:168px;overflow-y:auto}.editor-check{align-items:center;gap:var(--sp-2);font-size:var(--fs-1);color:var(--text-2);cursor:pointer;display:flex}.editor-canvas{gap:var(--sp-3);flex-direction:column;flex:auto;min-width:0;display:flex}.editor-grid{grid-template-columns:repeat(var(--cols,11), minmax(0, 1fr));touch-action:none;gap:2px;display:grid}.cell{aspect-ratio:1;border:1px solid var(--border);background:var(--swatch,var(--surface-2));cursor:crosshair;font:inherit;border-radius:3px;padding:0;position:relative}.cell.is-start{box-shadow:inset 0 0 0 2px var(--accent)}.cell-h{color:#0000008c;font-size:9px;font-weight:800;position:absolute;top:1px;left:2px}.cell-entity{color:var(--text-1);place-items:center;font-size:11px;font-weight:800;display:grid;position:absolute;inset:0}.cell-start{font-size:10px;position:absolute;bottom:0;right:2px}.editor-report{min-height:60px}.editor-hint{color:var(--text-3);font-size:var(--fs-1);margin:0}.editor-problems{color:var(--danger);font-size:var(--fs-1);margin:0;padding-left:1.2em}.editor-ok{margin:0 0 var(--sp-2);color:var(--success);font-weight:700}.editor-program{font-family:var(--font-mono);color:var(--text-2);background:var(--surface-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);max-height:140px;margin:0;font-size:11px;overflow:auto}@media (max-width:860px){.editor-body{flex-direction:column}.editor-palette{flex:none}}.challenge-list{padding:var(--sp-2) 0 0;border-top:1px solid var(--border);gap:var(--sp-1);flex-direction:column;margin:0;list-style:none;display:flex}.challenge-list:empty{border-top:0;padding-top:0;display:none}.challenge-title{text-transform:uppercase;letter-spacing:.09em;color:var(--text-3);font-size:11px}.challenge{align-items:baseline;gap:var(--sp-2);font-size:var(--fs-1);color:var(--text-2);line-height:1.3;display:flex}.challenge-badge{color:var(--text-3)}.challenge.is-done{color:var(--text-1)}.challenge.is-done .challenge-badge{color:var(--star)}
