:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff8e9;--paper-deep:#f8e7c5;--ink:#3f5360;--ink-soft:#566c72;--ink-faint:#70817f;--sky:#bfe8f2;--sky-deep:#8bcfdf;--grass:#a9d993;--grass-deep:#78bd7d;--sun:#ffd36e;--coral:#b9574f;--coral-deep:#8f413c;--mint:#8bcfb6;--lavender:#b9a9e5;--line:#4e676829;--shadow:0 18px 42px #576b6024;font-family:Avenir Next,Avenir,Nunito,ui-rounded,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{background:var(--paper);min-width:320px}body{min-width:320px;min-height:100vh;color:var(--ink);background:radial-gradient(circle at 8% 0%, #ffd36e52, transparent 22rem), radial-gradient(circle at 100% 16%, #b9a9e530, transparent 25rem), linear-gradient(180deg, #fffaf0 0%, var(--paper) 70%, #f7e6c3 100%);margin:0;overflow-x:hidden}button,input,select{font:inherit}button{color:inherit}.app-shell{width:min(1400px,100%);min-height:100vh;margin:0 auto;padding:28px 34px 30px}.topbar,.control-dock,.panel-topline,.code-head,.world-legend,.control-group,.line-state{align-items:center;display:flex}.topbar{justify-content:space-between;gap:20px;padding:0 8px 22px}.brand-lockup{align-items:center;gap:13px;display:flex}.brand-mark{width:42px;height:42px;position:relative}.brand-mark:before{content:"";background:var(--sun);border-radius:50%;position:absolute;inset:8px;box-shadow:0 4px #c68b4a2e}.brand-mark span{background:var(--coral);border-radius:4px;width:4px;height:8px;position:absolute;left:19px}.brand-mark span:first-child{top:0;transform:rotate(-18deg)}.brand-mark span:nth-child(2){top:19px;left:auto;right:0;transform:rotate(72deg)}.brand-mark span:nth-child(3){bottom:0;transform:rotate(18deg)}.brand-name{color:var(--ink);letter-spacing:.12em;font-size:13px;font-weight:850}.brand-name span{color:var(--coral);padding:0 4px}.brand-sub{color:var(--ink-faint);letter-spacing:.13em;margin-top:4px;font-size:10px}.mission-chip{color:var(--ink-soft);letter-spacing:.08em;align-items:center;gap:8px;font-size:11px;font-weight:750;display:flex}.pulse-dot{background:var(--mint);border-radius:50%;width:10px;height:10px;box-shadow:0 2px #43887038}.mission-chip[data-state=running] .pulse-dot{animation:1.2s ease-in-out infinite bob}.mission-chip[data-state=error] .pulse-dot{background:var(--coral)}.mission-chip[data-state=success] .pulse-dot{background:var(--grass-deep)}.game-grid{grid-template-columns:minmax(0,1.65fr) minmax(320px,.85fr);align-items:start;gap:28px;display:grid}.panel{min-width:0;box-shadow:none;background:0 0;border:0}.world-panel{padding:5px 0 0}.code-panel{background:0 0;border-radius:28px;min-height:615px;padding:25px 16px 18px 26px}.panel-topline{justify-content:space-between;gap:18px}.eyebrow{color:var(--coral-deep);letter-spacing:.16em;font-size:10px;font-weight:850}h1,h2,p{margin:0}h1{color:var(--ink);letter-spacing:-.055em;margin-top:7px;font-size:clamp(27px,3.4vw,43px);font-weight:850;line-height:1.03}.level-count{color:var(--ink-faint);letter-spacing:.1em;font-size:14px;font-weight:750}.level-count #levelNumber{color:var(--coral-deep);font-size:26px;font-weight:850}.slash{color:var(--paper-deep);padding:0 4px}.story-line{min-height:24px;color:var(--ink-soft);margin:10px 0 12px;font-size:13px;line-height:1.5}.canvas-wrap{min-height:448px;box-shadow:var(--shadow);background:#172c4b;border-radius:28px;position:relative;overflow:hidden}#worldCanvas{width:100%;height:448px;display:block}.canvas-hud{max-width:44%;color:var(--ink);background:#fffcefc7;border-radius:14px;flex-direction:column;gap:3px;padding:8px 11px;font-size:11px;font-weight:700;display:flex;position:absolute;top:15px;box-shadow:0 5px 13px #576b601a}.hud-left{left:15px}.hud-right{text-align:right;align-items:flex-end;display:none;right:15px}.hud-key{color:var(--coral-deep);letter-spacing:.12em;font-size:9px;font-weight:850}.scene-caption{z-index:2;color:#fff5cb;opacity:0;pointer-events:none;text-align:center;background:#0a1223b8;border:1px solid #ffeba940;border-radius:15px;width:min(88%,430px);padding:9px 14px;font-size:11px;transition:opacity .25s,transform .25s;position:absolute;bottom:15px;left:50%;transform:translate(-50%,8px)}.scene-caption.visible{opacity:1;transform:translate(-50%)}.world-mirror{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.world-mirror[data-error=true]{color:#a95450;background:#ffe3d8}.world-mirror[data-success=true]{color:#34745f;background:#dff4dd}.world-legend{color:var(--ink-faint);letter-spacing:.08em;flex-wrap:wrap;gap:13px;padding:12px 4px 0;font-size:9px;font-weight:750}.legend-swatch{vertical-align:-1px;border-radius:50%;width:9px;height:9px;margin-right:5px;display:inline-block}.legend-swatch.cyan{background:var(--sky-deep)}.legend-swatch.amber{background:var(--sun)}.legend-swatch.violet{background:var(--lavender)}.legend-spacer{flex:1}.shortcut{color:var(--ink-faint)}kbd{color:var(--ink-soft);background:#fff;border:1px solid #4e676829;border-radius:7px;padding:3px 6px;font-size:9px}.code-head{justify-content:space-between;padding-bottom:13px}.code-title{color:var(--ink);letter-spacing:.04em;margin-top:6px;font-size:16px;font-weight:800}.code-badge{color:#6b5b9e;background:#eee7ff;border-radius:50%;place-items:center;width:34px;height:34px;font-size:11px;font-weight:850;display:grid}.code-help{color:var(--ink-soft);padding:11px 0 10px;font-size:12px;line-height:1.55}.code-lines{flex:1;min-width:0;padding:7px 0 12px;font:13px/2.25 SFMono-Regular,Consolas,monospace;overflow:auto}.code-line{min-height:34px;color:var(--ink-soft);border-left:4px solid #0000;border-radius:0 15px 15px 0;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;padding:0 7px 0 10px;transition:background .2s,border-color .2s,color .2s;display:grid;position:relative}.code-line.current{color:var(--ink);border-left-color:var(--sun);background:#fff0bd}.code-line.completed{color:#8da19b}.code-lines[data-locked=true]{opacity:.75}.app-shell[data-presentation-locked=true] .code-lines{pointer-events:none}.app-shell[data-presentation-locked=true] .control-dock{cursor:wait}.line-no{width:28px;color:var(--ink-faint);-webkit-user-select:none;user-select:none;font-size:10px}.code-text{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;min-width:0;overflow:hidden}.code-keyword{color:#65539d}.code-fn{color:#2d839a}.code-string{color:#a7662e}.code-comment{color:var(--ink-faint)}.code-token,.code-input,.code-select{color:#825229;font:inherit;background:#fff3cf;border:0;border-bottom:2px solid #d39552;border-radius:8px;outline:none;padding:2px 6px;line-height:1.55}.code-select{cursor:pointer}.code-token:focus,.code-input:focus,.code-select:focus{box-shadow:0 0 0 3px #ee8d783d}.code-input.number{text-align:center;width:43px}.order-controls{opacity:.35;gap:4px;margin-left:7px;transition:opacity .2s;display:flex}.code-line:hover .order-controls,.code-line:focus-within .order-controls{opacity:1}.move-button{width:44px;min-width:44px;height:44px;color:var(--ink-soft);cursor:pointer;background:#fff;border:1px solid #4e676829;border-radius:13px;padding:0;font-size:14px}.move-button:hover:not(:disabled){color:var(--coral-deep);background:#fff0e6;border-color:#ee8d7873}.move-button:disabled{opacity:.28;cursor:default}.code-foot{padding-top:12px}.line-state{color:var(--ink-soft);letter-spacing:.04em;gap:7px;font:10px SFMono-Regular,Consolas,monospace}.line-led{background:var(--ink-faint);border-radius:50%;width:8px;height:8px}.line-state.running .line-led{background:var(--sky-deep);animation:1s ease-in-out infinite bob}.line-state.error .line-led{background:var(--coral)}.line-state.success .line-led{background:var(--grass-deep)}.runtime-message{min-height:19px;color:var(--ink-faint);margin-top:8px;font-size:11px;line-height:1.45}.runtime-message.error{color:#a95450}.runtime-message.success{color:#34745f}.control-dock{gap:12px;padding:18px 4px 0}.control-group{gap:8px}.action-button,.hint-button,.next-button{min-height:48px;color:var(--ink-soft);cursor:pointer;letter-spacing:.08em;background:#ffffffb8;border:2px solid #4e67681f;border-radius:17px;padding:0 15px;font-size:11px;font-weight:850;transition:transform .18s,background .18s,border-color .18s,color .18s}.action-button:hover:not(:disabled),.hint-button:hover:not(:disabled),.next-button:hover:not(:disabled){color:var(--coral-deep);background:#fff;border-color:#ee8d786b;transform:translateY(-2px)}.action-button:active:not(:disabled),.hint-button:active:not(:disabled),.next-button:active:not(:disabled){transform:translateY(0)}.action-button.primary,.next-button{color:#fffaf0;background:var(--coral);border-color:var(--coral);box-shadow:0 5px #be64582e}.action-button.primary:hover:not(:disabled),.next-button:hover:not(:disabled){color:#fff;background:var(--coral-deep);border-color:var(--coral-deep)}.button-icon{width:16px;color:inherit;margin-right:3px;display:inline-block}.action-button:disabled,.hint-button:disabled,.next-button:disabled{opacity:.4;cursor:not-allowed;transform:none}.dock-divider{background:var(--paper-deep);border-radius:2px;width:2px;height:26px;margin:0 2px}.hint-button{color:#a4743f;border-color:#eab66a80}.hint-button span{border:2px solid;border-radius:50%;place-items:center;width:19px;height:19px;margin-right:3px;display:inline-grid}.next-button{margin-left:auto;display:none}.next-button.visible{display:block}.next-button span{vertical-align:-1px;margin-left:5px;font-size:16px}.progress-dots{gap:5px;margin-left:auto;display:flex}.progress-dot{background:var(--paper-deep);border-radius:10px;width:20px;height:8px}.progress-dot.current{background:var(--sun)}.progress-dot.done{background:var(--mint)}.toast{z-index:10;max-width:min(440px,100% - 28px);color:var(--ink);opacity:0;pointer-events:none;text-align:center;background:#fffdf4;border-radius:16px;padding:11px 16px;font-size:12px;transition:opacity .2s,transform .2s;position:fixed;bottom:90px;left:50%;transform:translate(-50%,14px);box-shadow:0 12px 32px #576b6033}.toast.show{opacity:1;transform:translate(-50%)}.level-card{z-index:20;width:min(390px,100% - 36px);color:var(--ink);text-align:center;background:#fff9e9;border:0;border-radius:28px;padding:30px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 24px 70px #576b603d}.level-card.hidden{display:none}.card-kicker{color:#4d9b78;letter-spacing:.16em;font-size:10px;font-weight:850}.level-card h2{color:var(--ink);letter-spacing:-.04em;margin-top:11px;font-size:30px}.level-card p{color:var(--ink-soft);margin-top:9px;font-size:13px;line-height:1.6}.card-button{margin-top:22px}.intro-sequence{z-index:50;background:#111c35;position:fixed;inset:0;overflow:hidden}.intro-sequence[hidden]{display:none}.intro-sequence canvas{width:100%;height:100%;display:block}.intro-copy{color:#fff5cb;text-align:center;width:min(88%,720px);position:absolute;top:15%;left:50%;transform:translate(-50%)}.intro-caption{letter-spacing:.05em;text-shadow:0 2px 16px #00000059;min-height:28px;font-size:clamp(17px,2.5vw,26px);font-weight:750}.intro-promise{min-height:34px;color:var(--sun);letter-spacing:.12em;text-shadow:0 0 18px #ffd36ea6;margin-top:14px;font:850 clamp(15px,2.2vw,24px)/1.4 SFMono-Regular,Consolas,monospace}.intro-button{color:#fffaf0;background:var(--coral);cursor:pointer;letter-spacing:.08em;border:0;border-radius:16px;min-height:48px;padding:0 20px;font-size:12px;font-weight:850;position:absolute;bottom:6vh;right:6vw;box-shadow:0 5px #0000002e}.intro-button:hover,.intro-button:focus-visible{background:var(--coral-deep);outline-offset:3px;outline:3px solid #ffeba980}@keyframes bob{50%{transform:translateY(-2px)}}@keyframes gentle-pulse{0%,to{box-shadow:0 5px #be64582e}50%{box-shadow:0 6px #be64582e,0 0 0 7px #ee8d7821}}@media (width<=980px){.app-shell{padding:22px 20px 26px}.game-grid{grid-template-columns:1fr;gap:22px}.code-panel{min-height:380px;padding-left:18px}.code-lines{min-height:180px}}@media (width<=590px){.app-shell{padding:16px 12px 22px}.topbar{align-items:flex-start;padding:0 3px 17px}.brand-sub{display:none}.brand-name{font-size:11px}.world-panel,.code-panel{padding-left:0;padding-right:0}.code-panel{padding-top:19px;padding-bottom:14px}.code-line{grid-template-rows:auto auto;grid-template-columns:28px minmax(0,1fr);align-items:start;padding-top:4px;padding-bottom:4px}.line-no{grid-area:1/1/span 2;align-self:start}.code-text{grid-area:1/2;width:100%}.order-controls{grid-area:2/2;justify-self:end;width:max-content;min-height:44px;margin:4px 0 0}.canvas-wrap,#worldCanvas{border-radius:23px;height:340px;min-height:340px}.canvas-hud{max-width:48%;padding:7px 9px;font-size:10px;top:10px}.hud-left{left:10px}.hud-right{right:10px}.world-legend{gap:8px}.shortcut{display:none}.control-dock{flex-wrap:wrap;align-items:stretch;gap:10px;padding-top:15px}.control-group{gap:6px;width:100%}.action-button{flex:1;min-width:0;padding:0 6px;font-size:10px}.dock-divider{display:none}.hint-button,.next-button{flex:1}.progress-dots{order:5;width:100%;margin-left:0}.progress-dot{flex:1}.next-button{margin-left:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
