:root{--ink: #1b2a4a;--panel: #fffdf7;--accent: #ff8a3d;--accent-dark: #d9631a;--ok: #2e9e5b;--bad: #d64545;--focus: #2f6fff;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:18px;color:var(--ink)}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0d1530}#app,#app canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}[hidden]{display:none!important}button{font:inherit;color:inherit;cursor:pointer;border:3px solid var(--ink);background:#fff;border-radius:14px;padding:.55em 1.1em;font-weight:700;box-shadow:0 4px 0 var(--ink);transition:transform .08s,box-shadow .08s,background .15s}button:hover{background:#fff3e2}button:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}button:focus-visible,input:focus-visible{outline:4px solid var(--focus);outline-offset:3px}button.primary{background:var(--accent);color:#fff}button.primary:hover{background:var(--accent-dark)}button[disabled]{opacity:.5;cursor:default}.screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#0a122d8c;padding:16px;z-index:20}#menu{background:radial-gradient(circle at 30% 20%,#3a5bd9,#1a2560 55%,#0d1530)}.panel{background:var(--panel);border:4px solid var(--ink);border-radius:24px;padding:28px 32px;max-width:720px;width:100%;max-height:100%;overflow:auto;box-shadow:0 10px 0 var(--ink)}.panel.small{max-width:440px;text-align:center}h1{font-size:3rem;margin:0;letter-spacing:.02em}h1 span{color:var(--accent)}h2{font-size:1.15rem;margin:1.2em 0 .5em}.tagline{margin:.2em 0 0;font-size:1.15rem;opacity:.8}.choice-grid{display:flex;flex-wrap:wrap;gap:10px}.choice-grid button{min-width:64px}.choice-grid button[aria-checked=true]{background:var(--ink);color:#fff}.menu-actions{display:flex;gap:12px;margin-top:1.6em;flex-wrap:wrap}.menu-actions.column{flex-direction:column}.note{font-size:.85rem;opacity:.7;margin-bottom:0}.error{color:var(--bad);font-weight:700;min-height:1.2em;margin:.6em 0 0}#hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}.hud-left,.hud-right{position:absolute;top:14px;display:flex;gap:8px;flex-wrap:wrap}.hud-left{left:14px}.hud-right{right:14px;justify-content:flex-end}.hud-chip,.ability{background:#fffdf7eb;border:3px solid var(--ink);border-radius:999px;padding:4px 14px;font-weight:700}#hud-abilities{display:flex;gap:8px}.ability.locked{opacity:.45}#hud-controls{position:absolute;bottom:12px;left:50%;transform:translate(-50%);background:#0a122d99;color:#fff;padding:6px 14px;border-radius:10px;font-size:.8rem;white-space:nowrap}#prompt{position:fixed;bottom:64px;left:50%;transform:translate(-50%);z-index:11;background:var(--panel);border:3px solid var(--ink);border-radius:14px;padding:8px 18px;font-weight:700}#toasts{position:fixed;top:70px;left:50%;transform:translate(-50%);z-index:15;display:flex;flex-direction:column;gap:10px;align-items:center;pointer-events:none;width:min(92vw,560px)}.toast{background:var(--panel);border:3px solid var(--ink);border-radius:16px;padding:10px 18px;box-shadow:0 5px 0 var(--ink);text-align:center;animation:pop .25s ease-out}.toast.big{font-size:1.15rem;border-color:var(--accent);box-shadow:0 5px 0 var(--accent-dark)}@keyframes pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}#fade{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;opacity:0;pointer-events:none;transition:opacity .22s;z-index:18}#fade.on{opacity:1}.world-label{background:#fffdf7e6;border:2px solid var(--ink);border-radius:10px;padding:2px 10px;font-weight:700;font-size:.85rem;white-space:nowrap;pointer-events:none}.world-label.arrow{background:#ffd54ff2;font-size:1.1rem;padding:0 10px}.dialog-panel{max-width:640px}.dlg-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.dlg-header h2{margin:0;font-size:1.5rem}.icon-btn{padding:.2em .6em;box-shadow:0 3px 0 var(--ink)}#dlg-intro{margin:.4em 0;opacity:.85}#dlg-progress{display:flex;gap:8px;align-items:center;font-weight:700;margin:.4em 0 .8em}.dot{width:20px;height:20px;border-radius:50%;border:3px solid var(--ink);background:#fff}.dot.full{background:var(--ok)}#dlg-svg{display:flex;justify-content:center}.task-svg{width:min(100%,300px);height:auto;background:#f2f8ff;border-radius:14px}#dlg-prompt{font-size:1.2rem;font-weight:600;margin:.7em 0;line-height:1.5}#dlg-prompt .sentence{display:block;margin-top:.5em;padding:.5em .8em;background:#fff3e2;border-left:5px solid var(--accent);border-radius:8px;font-weight:500}#dlg-prompt .big{display:block;font-size:1.6rem;margin-top:.3em}#dlg-answers{display:flex;flex-wrap:wrap;gap:10px}#dlg-answers button{flex:1 1 40%;text-align:left}#dlg-answers button .key{display:inline-block;min-width:1.4em;opacity:.6}#dlg-answers button.correct{background:var(--ok);color:#fff}#dlg-answers button.wrong{background:var(--bad);color:#fff}.number-row{display:flex;gap:10px;align-items:center;width:100%}.number-row input{font:inherit;font-size:1.4rem;width:9em;padding:.35em .6em;border:3px solid var(--ink);border-radius:12px}.number-row .unit{font-weight:700;font-size:1.2rem}#dlg-answers .number-row button{flex:none}#dlg-feedback{min-height:1.5em;margin-top:.9em;font-weight:600;line-height:1.4}#dlg-feedback.ok{color:var(--ok)}#dlg-feedback.bad{color:var(--bad)}#dlg-feedback .hint{color:var(--ink);font-weight:500}.dlg-footer{display:flex;justify-content:space-between;margin-top:1em;gap:12px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}html,body{touch-action:none;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}.panel{touch-action:pan-y}button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}#touch{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;display:none}body.touch-mode #touch{display:block}body.touch-mode #hud-controls{display:none}.tc-btn{--size: clamp(58px, 15vh, 84px);width:var(--size);height:var(--size);padding:0;border-radius:50%;font-size:calc(var(--size) * .42);line-height:1;color:#fff;background:#141e4661;border:3px solid rgba(255,255,255,.85);box-shadow:0 3px #00000059;text-shadow:0 2px 3px rgba(0,0,0,.5);pointer-events:auto;touch-action:none;transition:none}.tc-btn:hover{background:#141e4661}.tc-btn.held{background:#ffffffb3;color:var(--ink);transform:scale(.94)}.tc-pad{position:absolute;display:flex;align-items:flex-end;gap:clamp(6px,1.6vw,14px);left:calc(14px + env(safe-area-inset-left));bottom:calc(14px + env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;padding:10px;margin:-10px}.tc-pad .tc-down{--size: clamp(46px, 11vh, 64px);margin-bottom:-4px}.tc-pad .tc-up{display:none}body.hub-mode .tc-pad{display:grid;grid-template-areas:". up ." "left down right";align-items:center;justify-items:center}body.hub-mode .tc-pad .tc-up{display:block;grid-area:up}body.hub-mode .tc-pad .tc-left{grid-area:left}body.hub-mode .tc-pad .tc-right{grid-area:right}body.hub-mode .tc-pad .tc-down{grid-area:down;--size: clamp(58px, 15vh, 84px);margin-bottom:0}.tc-actions{position:absolute;display:grid;gap:clamp(8px,1.6vw,14px);grid-template-areas:". interact" "dash jump";right:calc(14px + env(safe-area-inset-right));bottom:calc(14px + env(safe-area-inset-bottom))}.tc-jump{grid-area:jump;--size: clamp(70px, 19vh, 104px);background:#ff8a3d8c}.tc-dash{grid-area:dash;align-self:end}.tc-interact{grid-area:interact;justify-self:center;--size: clamp(50px, 12vh, 70px);opacity:.55}.tc-interact.ready{opacity:1;background:#ffd54fbf;color:var(--ink);animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{transform:scale(1.08)}}.tc-top{position:absolute;display:flex;gap:10px;pointer-events:auto;top:calc(58px + env(safe-area-inset-top));left:calc(14px + env(safe-area-inset-left))}.tc-small{width:46px;height:46px;padding:0;border-radius:12px;font-size:22px;background:#fffdf7e6;box-shadow:0 3px 0 var(--ink)}body.touch-mode #prompt{pointer-events:auto;bottom:calc(18px + env(safe-area-inset-bottom));cursor:pointer;max-width:46vw;text-align:center}#rotate{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#1a2560;color:#fff;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;font-size:1.2rem}.rotate-icon{font-size:4rem;animation:tilt 1.6s ease-in-out infinite}@keyframes tilt{50%{transform:rotate(-90deg)}}@media (orientation: portrait) and (max-width: 700px){body.in-game #rotate{display:flex}}.numpad{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;width:100%;margin-top:4px}.numpad button{padding:.45em 0;font-size:1.3rem;box-shadow:0 3px 0 var(--ink);text-align:center!important}.number-row input[readonly]{background:#fff;caret-color:transparent}.map-panel{max-width:min(1100px,96vw)}#map-canvas{background:#0d1530;border-radius:16px;margin-top:12px;padding:8px}.map-svg{display:block;width:100%;height:min(58vh,560px)}.map-svg text{font-family:system-ui,sans-serif;font-weight:700;text-anchor:middle;pointer-events:none}.map-name{font-size:2.4px;fill:#fff;paint-order:stroke;stroke:#0009;stroke-width:.55px}.map-q{font-size:4.5px;fill:#9fb3d9}.map-icon{font-size:1.6px;fill:#fff}.map-star{font-size:2.6px;fill:#ffd54f}.map-lock{font-size:1.6px}.map-player{fill:#ff3d6e59;animation:blink 1.2s ease-in-out infinite}@keyframes blink{50%{opacity:.2}}#map-stats{list-style:none;padding:0;margin:12px 0 4px;display:flex;flex-wrap:wrap;gap:6px 18px}.map-legend{font-size:.85rem;margin:6px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}.lg{display:inline-block;width:14px;height:14px;border-radius:50%;margin-left:10px;vertical-align:middle}.lg-player{background:#ff3d6e}.lg-station{background:#6fc3ff}.lg-spark{background:#ffe066}.lg-crack{background:#ff8a3d;border-radius:3px}.lg-text{margin-left:10px;font-weight:700}@media (max-height: 560px),(max-width: 600px){:root{font-size:15px}.panel{padding:16px 18px;border-radius:18px;box-shadow:0 6px 0 var(--ink)}h1{font-size:2.2rem}h2{margin:.7em 0 .4em}.menu-actions{margin-top:1em}.hud-left,.hud-right{top:calc(8px + env(safe-area-inset-top));gap:6px}.hud-left{left:calc(8px + env(safe-area-inset-left))}.hud-right{right:calc(8px + env(safe-area-inset-right))}.hud-chip,.ability{padding:2px 10px;border-width:2px;font-size:.85rem}.tc-top{top:calc(44px + env(safe-area-inset-top));left:calc(8px + env(safe-area-inset-left))}#toasts{top:48px}.toast{padding:6px 12px}.world-label{font-size:.7rem;padding:1px 6px}.map-svg{height:min(52vh,560px)}}@media (max-height: 560px) and (min-width: 560px){.screen{padding:8px}.dialog-panel{max-width:940px}.dialog-panel.has-svg{display:grid;grid-template-columns:minmax(180px,38%) 1fr;column-gap:18px;grid-template-areas:"head head" "intro intro" "svg progress" "svg prompt" "svg answers" "svg feedback" "foot foot";align-content:start}.dialog-panel.has-svg .dlg-header{grid-area:head}.dialog-panel.has-svg #dlg-intro{grid-area:intro}.dialog-panel.has-svg #dlg-progress{grid-area:progress;margin:.2em 0}.dialog-panel.has-svg #dlg-svg{grid-area:svg;align-self:start}.dialog-panel.has-svg #dlg-prompt{grid-area:prompt;margin:.3em 0}.dialog-panel.has-svg #dlg-answers{grid-area:answers}.dialog-panel.has-svg #dlg-feedback{grid-area:feedback}.dialog-panel.has-svg .dlg-footer{grid-area:foot}.dlg-header h2{font-size:1.2rem}#dlg-intro{font-size:.85rem;margin:.2em 0}#dlg-prompt{font-size:1.05rem}#dlg-feedback,.dlg-footer{margin-top:.5em}.numpad{gap:6px}.numpad button{padding:.3em 0;font-size:1.15rem}}.shop-panel{max-width:920px}.shop-panel .dlg-header{gap:12px}#shop-balance{margin-left:auto;font-weight:700}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-top:8px}.shop-item{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding:12px 10px;border:3px solid var(--ink);border-radius:16px;background:#fff}.shop-item small{opacity:.75;font-size:.8rem;line-height:1.25}.shop-item .shop-icon{font-size:2.2rem;line-height:1.2}.shop-item .shop-price{margin-top:auto;font-weight:700;padding-top:4px}.shop-item.worn{background:#e6f7ec;border-color:var(--ok)}.shop-item.locked{opacity:.6}.shop-item.too-expensive .shop-price{color:var(--bad)}@media (max-height: 500px){.shop-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}.shop-item{padding:8px 6px}.shop-item .shop-icon{font-size:1.6rem}}#hud-abilities .ability.locked{padding-left:8px;padding-right:8px}
