: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}@media (hover: hover){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{background:#fffdf7eb;border:3px solid var(--ink);border-radius:999px;padding:4px 14px;font-weight:700}#eo-stats{list-style:none;padding:0;margin:.6em 0;font-size:1.1rem;font-weight:600;line-height:1.8}.eo-record{color:var(--accent-dark);font-weight:800;font-size:1.2rem;min-height:1.2em;margin:0}#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{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,#inv-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)}button.shop-item{font:inherit;color:inherit}@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}}.arcade-head{margin:1em 0 .2em;font-size:1.15rem}.arcade-head small{font-weight:500;opacity:.7;font-size:.85rem}#arcade-subjects{margin-top:.6em}.arcade-item[disabled]{opacity:.55}#minigame{--mg-bar-h: 58px;position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;overflow:hidden;background:radial-gradient(circle at 30% 20%,#3a5bd9,#1a2560 60%,#0d1530);user-select:none;-webkit-user-select:none}body.mg-3d #minigame{background:transparent}body.mg-open #toasts{display:none}.mg-bar{position:absolute;top:0;left:0;right:0;height:var(--mg-bar-h);z-index:2;display:flex;align-items:center;gap:10px;padding:env(safe-area-inset-top) calc(12px + env(safe-area-inset-right)) 0 calc(12px + env(safe-area-inset-left));background:#fffdf7eb;border-bottom:3px solid var(--ink)}.mg-bar h2{margin:0 auto 0 0;font-size:1.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#mg-score{font-weight:800;min-width:4.5em;text-align:center}#mg-stage{position:absolute;top:var(--mg-bar-h);left:0;right:0;bottom:0;overflow:hidden;padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);touch-action:none}body.mg-3d #mg-stage{pointer-events:none}#mg-flash{position:absolute;inset:var(--mg-bar-h) 0 0 0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:3}.mg-flash{font-size:2.2rem;font-weight:800;padding:.2em .8em;border-radius:18px;border:4px solid var(--ink);background:var(--panel);box-shadow:0 6px 0 var(--ink);animation:pop .25s ease-out}.mg-flash.ok{background:#e6f7ec;color:var(--ok)}.mg-flash.bad{background:#fde8e8;color:var(--bad)}#mg-card{position:absolute;inset:var(--mg-bar-h) 0 0 0;display:flex;align-items:center;justify-content:center;padding:12px;z-index:4;background:#0a122d73}.mg-panel h3{margin:0 0 .4em;font-size:1.5rem}.mg-panel ul{text-align:left;margin:.4em 0;padding-left:1.2em;line-height:1.45}.mg-result{font-size:2.4rem;font-weight:800;margin:.2em 0}.mg-panel .menu-actions{justify-content:center}@media (max-height: 560px){#minigame{--mg-bar-h: 46px}.mg-bar h2{font-size:1rem}.mg-panel h3{font-size:1.2rem}.mg-result{font-size:1.8rem}.mg-flash{font-size:1.6rem}}#arcade-balance{margin-left:auto;font-weight:700}.speak-btn{flex:none;width:56px;height:56px;padding:0;border-radius:50%;font-size:1.6rem;line-height:1;background:#ffe9a8}.speak-btn.small{width:42px;height:42px;font-size:1.2rem;box-shadow:0 3px 0 var(--ink)}body:not(.speech-on) .speak-btn{display:none}.speak-btn.speaking{animation:speak-pulse .9s ease-in-out infinite;background:#ffd54f}@keyframes speak-pulse{50%{transform:scale(1.1)}}.speaking-label{outline:4px dashed var(--focus)!important;outline-offset:3px}.menu-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}body:not(.speech-on) .menu-top{justify-content:flex-end}.dlg-question{display:flex;align-items:center;gap:12px}.dlg-question #dlg-prompt{flex:1}#dlg-answers button.preview{background:#fff3c4;outline:4px solid var(--accent);outline-offset:2px;position:relative}#dlg-answers button.preview:after{content:"👆";position:absolute;right:10px;top:50%;transform:translateY(-50%);animation:tap-hint .8s ease-in-out infinite}@keyframes tap-hint{50%{transform:translateY(-50%) scale(1.25)}}body.early-reader #dlg-answers button{min-height:64px;font-size:1.25rem}body.early-reader #dlg-answers button .key{display:none}body.early-reader .numpad button{min-height:58px;font-size:1.6rem}body.early-reader #dlg-prompt{font-size:1.3rem}.settings-panel{max-width:640px}.settings-panel h3{font-size:1rem;margin:1em 0 .4em}.set-voices{display:flex;flex-direction:column;gap:10px;margin-top:1em}.set-voice{display:flex;flex-direction:column;gap:4px;font-weight:700}.set-voice select{font:inherit;font-weight:500;padding:.4em;border:3px solid var(--ink);border-radius:10px;background:#fff}.set-voices>button{align-self:flex-start}.hold-btn{position:relative;overflow:hidden;width:100%;margin-top:.8em;padding:.9em;touch-action:none}.hold-fill{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--ok);transform:scaleX(0);transform-origin:left}.hold-label{position:relative}#climb-meter{position:absolute;top:58px;left:50%;transform:translate(-50%);background:#fffdf7f0;border:3px solid var(--ink);border-radius:999px;padding:4px 16px;font-weight:800;font-size:1.15rem;white-space:nowrap}#climb-meter small{font-weight:600;font-size:.8rem;opacity:.75;margin-left:8px}#climb-meter .bar{display:block;height:6px;margin-top:3px;border-radius:3px;background:#dfe7cf;overflow:hidden}#climb-meter .bar i{display:block;height:100%;background:linear-gradient(90deg,#66bb6a,#ffd54f)}@media (max-height: 560px){#climb-meter{top:44px;font-size:1rem;padding:2px 12px}}body.climbing #toasts{top:104px}@media (max-height: 560px){body.climbing #toasts{top:86px}}.tc-stick-zone{display:none;position:absolute;left:0;bottom:0;width:46vw;height:70vh;pointer-events:auto;touch-action:none}body.hub-mode .tc-stick-zone{display:block}body.hub-mode .tc-pad{display:none}.tc-stick{--r: clamp(50px, 15vh, 70px);position:fixed;width:calc(var(--r) * 2);height:calc(var(--r) * 2);transform:translate(-50%,-50%);left:calc(22px + env(safe-area-inset-left) + var(--r));top:calc(100% - 22px - env(safe-area-inset-bottom) - var(--r));border-radius:50%;background:#141e4647;border:3px solid rgba(255,255,255,.75);box-shadow:0 3px #0000004d;opacity:.75;pointer-events:none}.tc-stick.held{opacity:1;background:#141e4666}.tc-stick-knob{position:absolute;left:50%;top:50%;width:calc(var(--r) * .95);height:calc(var(--r) * .95);margin:calc(var(--r) * -.475);border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#dfe6ff 60%,#b9c4ef);border:3px solid rgba(20,30,70,.55);box-shadow:0 4px 8px #00000059}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}#plush-builder{background:transparent;padding:12px;gap:12px;align-items:stretch;justify-content:stretch}#pb-preview{flex:1 1 45%;min-width:0;border-radius:24px;border:4px solid var(--ink);cursor:grab;touch-action:none;outline-offset:-8px}#pb-preview:active{cursor:grabbing}.pb-panel{flex:1 1 55%;max-width:560px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}.pb-panel .dlg-header h2{font-size:1.35rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}#pb-tabs{gap:6px}#pb-tabs button{min-width:0;padding:.25em .55em;font-size:1.35rem;line-height:1.1;display:flex;flex-direction:column;align-items:center}#pb-tabs button small{font-size:.55em;font-weight:700}#pb-tabs button[aria-selected=true]{background:var(--ink);color:#fff}#pb-options{flex:1;overflow:auto;min-height:0}.pb-grid{gap:8px}.pb-grid button{display:flex;flex-direction:column;align-items:center;font-size:1.5rem;padding:.3em .6em;line-height:1.1}.pb-grid button small{font-size:.55em;font-weight:700}.pb-grid .pb-big{font-size:2rem;min-width:78px}.pb-grid .pb-swatch{width:56px;height:56px;min-width:56px;padding:0;background:var(--sw)}.pb-grid .pb-swatch[aria-checked=true]{background:var(--sw);outline:5px solid var(--accent);outline-offset:2px}.pb-grid .pb-swatch[disabled]{opacity:.25;background-image:linear-gradient(135deg,transparent 45%,var(--ink) 45% 55%,transparent 55%)}.pb-name-input{margin-top:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-weight:700}.pb-name-input input{font:inherit;font-size:1.2rem;padding:.3em .5em;border:3px solid var(--ink);border-radius:12px;width:12em;max-width:100%}.pb-panel .menu-actions{margin-top:0;justify-content:flex-end}@media (orientation: portrait){#plush-builder{flex-direction:column}#pb-preview{flex:0 0 38%}.pb-panel{max-width:none;flex:1 1 auto;min-height:0}}@media (max-height: 480px){.pb-panel{padding:10px 12px;gap:6px}.pb-panel .dlg-header h2,#pb-tabs button{font-size:1.1rem}.pb-grid button{font-size:1.2rem}.pb-grid .pb-big{font-size:1.5rem;min-width:64px}.pb-grid .pb-swatch{width:44px;height:44px;min-width:44px}}.blk-wrap{--blk-btn: 72px;--blk-gap: 18px;height:100%;display:flex;align-items:center;justify-content:center;gap:var(--blk-gap);padding:8px;box-sizing:border-box}.blk-field{display:block;flex:0 0 auto;border:4px solid var(--ink);border-radius:10px;box-shadow:0 5px 0 var(--ink);background:#16213d;touch-action:none;box-sizing:content-box}.blk-side{flex:0 1 190px;min-width:0;align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.blk-box{background:var(--panel);border:3px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 var(--ink);padding:6px 12px;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--ink)}.blk-label{font-size:.9rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;opacity:.75}.blk-next{display:block}.blk-stat{min-width:110px}.blk-stat strong{font-size:1.7rem;line-height:1.1}.blk-help ul{list-style:none;margin:0;padding:0;font-size:.95rem;line-height:1.7}.blk-help li{white-space:nowrap}.blk-wrap:not(.blk-touch) .blk-side{flex-basis:240px}.blk-help kbd{display:inline-block;min-width:1.6em;padding:0 .4em;border:2px solid var(--ink);border-radius:6px;background:#fff;box-shadow:0 2px 0 var(--ink);font:inherit;font-weight:800;font-size:.85rem;text-align:center}.blk-touch .blk-side{flex:0 1 calc(var(--blk-btn) * 2 + 24px);gap:10px}.blk-row{display:flex;gap:12px}.blk-btn{width:var(--blk-btn);height:var(--blk-btn);padding:0;border-radius:18px;font-size:calc(var(--blk-btn) * .45);line-height:1;touch-action:none;display:flex;align-items:center;justify-content:center;pointer-events:auto;-webkit-tap-highlight-color:transparent}.blk-btn.down{transform:translateY(3px);box-shadow:0 1px 0 var(--ink);background:#fff3e2}.blk-rot-btn,.blk-rot-btn:hover{background:var(--accent);color:#fff}.blk-rot-btn.down{background:var(--accent-dark)}.blk-drop-btn,.blk-drop-btn:hover{background:#ffd23f}.blk-drop-btn{font-weight:900;font-size:calc(var(--blk-btn) * .6)}.blk-touch .blk-nextbox{padding:4px 10px}.blk-touch .blk-label{font-size:.9rem}.cat-root{position:absolute;top:0;right:0;bottom:0;left:0}.cat-field{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:auto;touch-action:none;cursor:pointer}.cat-q{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:2;width:min(94%,900px);display:flex;align-items:center;gap:10px;padding:6px 14px;border:3px solid var(--ink);border-radius:16px;background:var(--panel);box-shadow:0 4px 0 var(--ink);pointer-events:none}.cat-count{flex:none;font-weight:800;font-size:.85rem;color:#fff;background:var(--accent);border:2px solid var(--ink);border-radius:999px;padding:2px 10px}.cat-text{flex:1;text-align:center;font-weight:700;font-size:clamp(15px,2.3vw,22px);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.cat-fb{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);max-width:96%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:800;font-size:clamp(15px,2.2vw,21px);padding:4px 14px;border:3px solid var(--ink);border-radius:999px;box-shadow:0 3px 0 var(--ink);background:var(--panel);animation:pop .25s ease-out}.cat-fb.ok{background:#e6f7ec;color:var(--ok)}.cat-fb.bad{background:#fde8e8;color:var(--bad)}.cat-btn{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom));z-index:2;width:76px;height:76px;padding:0;border-radius:50%;font-size:2rem;line-height:1;pointer-events:auto;touch-action:none;background:#fffdf7e6}.cat-btn.left{left:calc(14px + env(safe-area-inset-left))}.cat-btn.right{right:calc(14px + env(safe-area-inset-right))}.cat-btn.on{background:#fff3e2;transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}@media (max-height: 420px){.cat-q{top:4px;padding:3px 10px;border-radius:12px}.cat-count{font-size:.75rem;padding:1px 8px}.cat-text{font-size:16px;line-height:1.2}.cat-fb{top:calc(100% + 5px);font-size:15px;padding:2px 12px}.cat-btn{width:64px;height:64px;font-size:1.7rem;bottom:calc(8px + env(safe-area-inset-bottom))}}.echo-board{--echo-size: 120px;--echo-gap: 10px;position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;display:grid;gap:var(--echo-gap);grid-template-columns:repeat(3,var(--echo-size));grid-template-rows:repeat(3,var(--echo-size));grid-template-areas:". up ." "left mid right" ". down .";width:max-content;height:max-content;user-select:none;-webkit-user-select:none;touch-action:none}.echo-pad{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:0;border:4px solid var(--ink);border-radius:22px;color:#fff;cursor:pointer;touch-action:none;filter:saturate(.55) brightness(.78);box-shadow:0 5px 0 var(--ink);transition:filter .08s,transform .08s,box-shadow .08s}.echo-pad.echo-red,.echo-pad.echo-red:hover{grid-area:up;background:#e53935}.echo-pad.echo-green,.echo-pad.echo-green:hover{grid-area:left;background:#2e9e5b}.echo-pad.echo-blue,.echo-pad.echo-blue:hover{grid-area:right;background:#2f6fff}.echo-pad.echo-yellow,.echo-pad.echo-yellow:hover{grid-area:down;background:#fbc02d;color:var(--ink)}.echo-pad:active{transform:none}.echo-sym{font-size:calc(var(--echo-size) * .42);line-height:1;text-shadow:0 2px 0 rgba(0,0,0,.25)}.echo-key{position:absolute;bottom:6px;right:8px;font-size:max(14px,calc(var(--echo-size) * .14));font-weight:700;background:#ffffffd9;color:var(--ink);border-radius:8px;padding:0 5px}.echo-pad.lit,.echo-pad.hint{filter:saturate(1.2) brightness(1.25);transform:translateY(3px) scale(1.04);box-shadow:0 2px 0 var(--ink),0 0 calc(var(--echo-size) * .3) 6px #ffffe6f2}.echo-pad.hint{outline:5px dashed var(--ok);outline-offset:3px}.echo-pad.wrong{filter:grayscale(.6) brightness(.7)}.echo-pad.wrong:after{content:"✗";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:calc(var(--echo-size) * .6);color:var(--bad);text-shadow:0 0 4px #fff,0 0 8px #fff}.echo-board:not([data-state=input]) .echo-pad{cursor:default}.echo-center{grid-area:mid;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:var(--panel);border:4px solid var(--ink);border-radius:50%;color:var(--ink);text-align:center}.echo-center-icon{font-size:calc(var(--echo-size) * .32);line-height:1}.echo-center-text{font-size:max(14px,calc(var(--echo-size) * .13));font-weight:700;line-height:1.1;padding:0 4px}.echo-board[data-state=input] .echo-center{border-color:var(--accent);background:#fff3e2}@media (prefers-reduced-motion: reduce){.echo-pad{transition:none}.echo-pad.lit,.echo-pad.hint{transform:none}}.t48-root{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column-reverse;align-items:center;justify-content:center;gap:12px;padding:12px}.t48-root.t48-land{flex-direction:row}.t48-board{position:relative;flex:none;display:grid;touch-action:none;cursor:grab;grid-template-columns:repeat(4,1fr);gap:var(--t48-gap, 8px);padding:var(--t48-gap, 8px);background:#2a3a63;border:4px solid var(--ink);border-radius:18px;box-shadow:0 6px 0 var(--ink);box-sizing:border-box}.t48-cell{background:#ffffff1f;border-radius:10px}.t48-tile{position:absolute;left:0;top:0;width:var(--t48-cell);height:var(--t48-cell);transition:transform .12s ease-in-out;will-change:transform;pointer-events:none}.t48-still .t48-tile,.t48-rm .t48-tile{transition:none}.t48-face{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:3px solid var(--ink);border-radius:10px;box-sizing:border-box;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:calc(var(--t48-cell) * .46);color:var(--ink);box-shadow:inset 0 -4px #00000026}.t48-d3{font-size:calc(var(--t48-cell) * .38)}.t48-d4{font-size:calc(var(--t48-cell) * .3)}.t48-d5{font-size:calc(var(--t48-cell) * .24)}.t48-v2{background:#fff3c4}.t48-v4{background:#ffd166}.t48-v8{background:#ff9f43}.t48-v16{background:#f25f5c;color:#fff}.t48-v32{background:#d6336c;color:#fff}.t48-v64{background:#9c36b5;color:#fff}.t48-v128{background:#5f3dc4;color:#fff}.t48-v256{background:#1c7ed6;color:#fff}.t48-v512{background:#22b8cf}.t48-v1024{background:#2e9e5b;color:#fff}.t48-v2048{background:#ffd43b;box-shadow:0 0 0 4px #fff,0 0 18px 6px #ffd43b}.t48-v4096{background:var(--ink);color:#ffd43b;border-color:#ffd43b}.t48-new{animation:t48-appear .15s ease-out}.t48-pop{animation:t48-pop .17s ease-out}.t48-rm .t48-face{animation:none}@keyframes t48-appear{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes t48-pop{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.t48-side{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 14px;color:#fff;text-align:center;box-sizing:border-box}.t48-land .t48-side{flex-direction:column;flex-wrap:nowrap}.t48-best{display:flex;flex-direction:column;align-items:center;padding:6px 14px;background:var(--panel);color:var(--ink);border:3px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 var(--ink)}.t48-best small{font-size:.85rem;font-weight:700}.t48-best strong{font-size:1.8rem;line-height:1.1}.t48-goal,.t48-hint{margin:0;font-size:1rem;font-weight:700}.t48-hint{opacity:.85;font-size:.9rem}.t48-done{min-height:48px;font-size:1.05rem;color:var(--ink)}body.touch-mode .t48-done,.t48-root.t48-land .t48-done{min-height:56px}@media (pointer: coarse){.t48-done{min-height:56px}}.mem-grid{display:grid;gap:10px;padding:10px;height:100%;align-content:center;justify-content:center}.mem-card{position:relative;min-height:0;padding:6px;border-radius:14px;display:flex;align-items:center;justify-content:center;text-align:center;background:linear-gradient(135deg,#ff8a3d,#ffb74d);color:#fff;overflow:hidden}.mem-card .mem-back{font-size:1.8rem}.mem-card .mem-face{display:none;font-size:clamp(.7rem,1.6vw,1rem);line-height:1.2;color:var(--ink);overflow-wrap:anywhere}.mem-card.open,.mem-card.done{background:#fff}.mem-card.a.open,.mem-card.a.done{background:#fff3e2}.mem-card.open .mem-back,.mem-card.done .mem-back{display:none}.mem-card.open .mem-face,.mem-card.done .mem-face{display:block}.mem-card.done{border-color:var(--ok);background:#e6f7ec;opacity:.85;cursor:default}.mo-root{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:hidden;background:radial-gradient(circle at 12% 70%,#fff 0 3px,transparent 4px) 0 0 / 130px 110px,radial-gradient(circle at 70% 25%,#ffd84d 0 3px,transparent 4px) 0 0 / 170px 130px,radial-gradient(circle at 40% 50%,#ff9ec4 0 3px,transparent 4px) 0 0 / 210px 150px,repeating-linear-gradient(90deg,rgba(255,255,255,.07) 0 48px,transparent 48px 96px),linear-gradient(180deg,#9be07a,#6cbf4f 55%,#529e3c)}.mo-head{flex:none;margin:8px 10px 0;padding:6px 14px;display:flex;flex-direction:column;gap:4px;background:var(--panel);border:3px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 var(--ink)}.mo-q{font-weight:800;font-size:clamp(16px,2.1vw,1.35rem);line-height:1.2;text-align:center;overflow-wrap:anywhere;color:var(--ink)}.mo-info{position:relative;height:24px;display:flex;align-items:center;justify-content:center}.mo-bar{position:absolute;left:0;right:0;top:50%;height:10px;margin-top:-5px;overflow:hidden;border:2px solid var(--ink);border-radius:6px;background:#ece6d6}.mo-bar i{display:block;height:100%;background:var(--accent);transform-origin:left center}.mo-sol{font-weight:800;font-size:16px;line-height:20px;padding:0 12px;border:2px solid var(--ink);border-radius:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.mo-sol.ok{background:#e6f7ec;color:#1d6b3d}.mo-sol.bad{background:#fde8e8;color:brown}.mo-garden{flex:1;min-height:0;display:grid;gap:6px;padding:8px;--s: 120px}.mo-hole{position:relative;min-width:0;min-height:0;padding:0;border:0;border-radius:16px;background:transparent;box-shadow:none;display:flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.mo-hole:hover{background:#ffffff1a}.mo-hole:active{transform:none;box-shadow:none}.mo-spot{position:relative;display:block;flex:none;width:var(--s);height:calc(var(--s) * 1.2)}.mo-mound{position:absolute;left:0;right:0;bottom:0;height:calc(var(--s) * .36);border:3px solid var(--ink);border-radius:50% 50% 42% 42%/75% 75% 25% 25%;background:radial-gradient(ellipse at 50% 25%,#b07a52,#8a5a38 60%,#6f4529);box-shadow:inset 0 -5px #00000026}.mo-pithole{position:absolute;left:15%;right:15%;bottom:calc(var(--s) * .15);height:calc(var(--s) * .17);border:3px solid var(--ink);border-radius:50%;background:radial-gradient(ellipse at 50% 35%,#160d07 50%,#3b2416)}.mo-pit{position:absolute;left:0;right:0;top:0;bottom:calc(var(--s) * .15);overflow:hidden;display:block;clip-path:polygon(0 0,100% 0,100% 91.9%,85% 91.9%,82.3% 95%,74.7% 97.6%,63.4% 99.4%,50% 100%,36.6% 99.4%,25.3% 97.6%,17.7% 95%,15% 91.9%,0 91.9%)}.mo-mole{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;transform:translateY(105%);transition:transform .22s ease-in}.mo-hole.up .mo-mole{transform:translateY(0);transition:transform .24s cubic-bezier(.3,1.45,.6,1)}.mo-mole svg{position:relative;z-index:1;display:block;flex:none;width:78%;height:auto;overflow:visible}.mo-sign{position:relative;z-index:0;flex:none;max-width:100%;min-width:58%;margin-bottom:calc(var(--s) * -.05);padding:2px 5px 4px;border:3px solid var(--ink);border-radius:8px;background:#fffaf0;color:var(--ink);font-weight:800;font-size:max(15px,calc(var(--s) * .12));line-height:1.12;text-align:center;overflow-wrap:anywhere;box-shadow:0 3px #1b2a4a59}.mo-sign.long{font-size:max(15px,calc(var(--s) * .1))}.mo-sign:empty{visibility:hidden}.mo-happy,.mo-hole.hit .mo-eye{display:none}.mo-hole.hit .mo-happy{display:inline}.mo-hole.hit .mo-mole{animation:mo-giggle .3s ease-in-out 2}.mo-hole.right .mo-sign{background:#e6f7ec;border-color:var(--ok);color:#1d6b3d}.mo-hole.right .mo-sign:before{content:"✓ "}.mo-hole.wrong .mo-sign{background:#fde8e8;border-color:var(--bad);color:brown}.mo-hole.wrong .mo-sign:before{content:"✗ "}.mo-hole.right:not(.hit) .mo-mole{animation:mo-bob .6s ease-in-out infinite alternate}.mo-num{position:absolute;left:50%;bottom:3px;transform:translate(-50%);z-index:2;min-width:22px;height:20px;padding:0 5px;border-radius:999px;background:#1b2a4ac7;color:#fff;font-size:14px;font-weight:800;line-height:20px;text-align:center}.mo-bubble{position:absolute;right:-6%;top:2%;z-index:3;padding:0 8px;border:3px solid var(--ink);border-radius:12px;background:#fff;color:var(--ink);font-size:15px;font-weight:800;line-height:22px;opacity:0;transform:scale(.4) rotate(8deg);transition:opacity .15s,transform .15s;pointer-events:none}.mo-hole.hit .mo-bubble{opacity:1;transform:scale(1) rotate(8deg)}.mo-star{position:absolute;left:50%;top:35%;z-index:4;font-size:22px;pointer-events:none;animation:mo-star .75s ease-out forwards}@keyframes mo-giggle{0%,to{transform:translateY(0) rotate(0)}25%{transform:translateY(-3%) rotate(-7deg)}75%{transform:translateY(-3%) rotate(7deg)}}@keyframes mo-bob{0%{transform:translateY(0)}to{transform:translateY(-5%)}}@keyframes mo-star{0%{transform:translate(-50%,-50%) scale(.4);opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15);opacity:0}}.mo-rm .mo-mole,.mo-rm .mo-hole.up .mo-mole{transition-duration:.1s}.mo-rm .mo-hole.hit .mo-mole,.mo-rm .mo-hole.right:not(.hit) .mo-mole{animation:none}@media (max-height: 560px){.mo-head{margin:5px 8px 0;padding:3px 10px;gap:2px}.mo-info{height:22px}.mo-garden{padding:4px 6px;gap:4px}}.nl-root{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;gap:10px;padding:10px 14px 12px;max-width:1400px;margin:0 auto}.nl-question{flex:none;text-align:center;padding:8px 14px;border:3px solid var(--ink);border-radius:16px;background:var(--panel);box-shadow:0 4px 0 var(--ink)}.nl-qtext{font-size:clamp(1.3rem,3.2vw,2.1rem);font-weight:800;line-height:1.2;overflow-wrap:anywhere}.nl-qtext.long{font-size:clamp(1rem,2.2vw,1.4rem)}.nl-qinfo{font-size:.95rem;font-weight:600;color:#4a5878;min-height:1.3em;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nl-field{position:relative;flex:1;min-height:0;overflow:hidden;border:3px solid var(--ink);border-radius:20px;box-shadow:0 5px 0 var(--ink);background:radial-gradient(circle at 50% 120%,rgba(255,138,61,.16) 0 22%,transparent 22.5% 32%,rgba(255,138,61,.12) 32.5% 44%,transparent 44.5%),linear-gradient(#fffdf7,#fff3e2)}.nl-field svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;cursor:crosshair;touch-action:none}.nl-band{fill:#ffe0c7;stroke:var(--ink);stroke-width:2}.nl-axis{stroke:var(--ink);stroke-width:4;stroke-linecap:round}.nl-tick{stroke:var(--ink);stroke-linecap:round}.nl-tick.major{stroke-width:4}.nl-tick.mid{stroke-width:3}.nl-tick.minor{stroke-width:2;opacity:.8}.nl-label{fill:var(--ink);font-weight:800}.nl-label.minor{font-weight:600;fill:#4a5878}.nl-aimline{stroke:var(--accent-dark, #d9631a);stroke-width:3;stroke-dasharray:6 5}.nl-aimtip{fill:var(--accent);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}.nl-bubble rect{fill:#fff;stroke:var(--ink);stroke-width:3}.nl-bubble text{fill:var(--ink);font-weight:800}.nl-dart-tip{fill:#8a96b0;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}.nl-dart-shaft{fill:var(--accent);stroke:var(--ink);stroke-width:2}.nl-dart-flight{fill:#2f6fff;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}.nl-ring-a{fill:var(--bad);stroke:var(--ink);stroke-width:2}.nl-ring-b{fill:#fff;stroke:var(--ink);stroke-width:2}.nl-sign rect{fill:#e6f7ec;stroke:var(--ok);stroke-width:3}.nl-sign text{fill:#1d6e3e;font-weight:800}.nl-confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.nl-piece{position:absolute;left:-5px;top:-4px;width:10px;height:8px;border-radius:2px;border:1.5px solid var(--ink)}.nl-controls{flex:none;display:flex;align-items:center;justify-content:center;gap:10px}.nl-btn{min-width:64px;min-height:56px;font-size:1.5rem;padding:0 .5em;touch-action:none}.nl-readout{flex:1 1 auto;max-width:26em;min-height:56px;display:flex;align-items:center;justify-content:center;gap:.2em;flex-wrap:wrap;text-align:center;padding:4px 12px;border:3px solid var(--ink);border-radius:14px;background:#fff;font-size:1.3rem;font-weight:800}.nl-readout strong{color:#1d6e3e}.nl-throw{min-height:56px;font-size:1.25rem;white-space:nowrap}@media (max-height: 560px){.nl-root{gap:6px;padding:6px 10px 8px}.nl-question{padding:4px 10px;border-radius:12px;box-shadow:0 3px 0 var(--ink)}.nl-qtext{font-size:1.3rem}.nl-qtext.long{font-size:1rem}.nl-qinfo{font-size:.85rem}.nl-readout{font-size:1.05rem}.nl-throw{font-size:1.1rem}}.run-root{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.run-q{position:absolute;top:8px;left:50%;transform:translate(-50%);width:max-content;max-width:min(94%,920px);box-sizing:border-box;padding:8px 16px;border:3px solid var(--ink);border-radius:16px;background:var(--panel);color:var(--ink);box-shadow:0 4px 0 var(--ink);text-align:center;line-height:1.25}.run-q-text{font-size:clamp(16px,2.3vw,1.45rem);font-weight:800;overflow-wrap:anywhere}.run-q-sub{font-size:clamp(14px,1.6vw,1.05rem);font-weight:700;margin-top:2px;opacity:.85}.run-q-sub:empty,.run-q-text:empty{display:none}.run-q.run-idle .run-q-sub{margin-top:0}.run-q.run-ok{background:#e6f7ec;border-color:var(--ok)}.run-q.run-ok .run-q-sub{color:var(--ok);opacity:1}.run-q.run-bad{background:#fde8e8;border-color:var(--bad)}.run-q.run-bad .run-q-sub{color:var(--bad);opacity:1;font-size:clamp(16px,2vw,1.3rem)}.run-touch{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:auto;touch-action:none}.run-btn{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom));width:72px;height:72px;border:4px solid var(--ink);border-radius:50%;background:#fffdf7e0;color:var(--ink);font-size:2rem;font-weight:800;line-height:1;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 0 var(--ink);pointer-events:auto;touch-action:none;padding:0}.run-btn:active,.run-btn.run-down{transform:translateY(3px);box-shadow:0 1px 0 var(--ink);background:#ffe2c8}.run-left{left:calc(14px + env(safe-area-inset-left))}.run-right{right:calc(14px + env(safe-area-inset-right))}.run-jump{right:calc(100px + env(safe-area-inset-right));background:#ffe2c8eb}.run-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (max-height: 420px){.run-q{top:4px;padding:4px 12px;border-radius:12px}.run-btn{width:62px;height:62px;font-size:1.7rem;bottom:8px}.run-jump{right:calc(86px + env(safe-area-inset-right))}}.swp-wrap{--swp-cell: 40px;height:100%;display:flex;flex-direction:row;align-items:center;justify-content:center;gap:10px;padding:10px;background:radial-gradient(circle at 30% 20%,#c8e6a0,#8fc46a 70%);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.swp-wrap.portrait{flex-direction:column}.swp-grid{display:grid;gap:3px;padding:6px;border:3px solid var(--ink);border-radius:14px;background:#5d8a3a;box-shadow:0 5px 0 var(--ink);touch-action:manipulation}.swp-cell{width:var(--swp-cell);height:var(--swp-cell);padding:0;min-width:0;border-width:2px;border-radius:8px;box-shadow:0 2px 0 var(--ink);background:linear-gradient(160deg,#e9a352,#c46d2a);color:var(--ink);font-size:calc(var(--swp-cell) * .5);line-height:1;font-weight:900;display:flex;align-items:center;justify-content:center;position:relative;-webkit-touch-callout:none;touch-action:manipulation}.swp-cell:hover{background:linear-gradient(160deg,#f4b768,#d27c36)}.swp-cell.pressing{transform:scale(.9);background:linear-gradient(160deg,#ffd08a,#e39a4e)}.swp-cell:focus-visible{outline:4px solid var(--focus);outline-offset:1px;z-index:1}.swp-cell.open,.swp-cell.open:hover{background:#f6eed6;box-shadow:none;transform:none;cursor:default;font-size:calc(var(--swp-cell) * .62)}.swp-cell.flag{background:linear-gradient(160deg,#ffe08a,#f2b84a)}.swp-cell.hog{background:#e3f2d0;font-size:calc(var(--swp-cell) * .55);box-shadow:none}.swp-cell.hog.woken{background:#ffd6d6;border-color:var(--bad)}.swp-cell.wrong{background:#ffe9e9;font-size:calc(var(--swp-cell) * .42)}.swp-zzz{position:absolute;right:1px;top:0;font-size:calc(var(--swp-cell) * .3);animation:swp-zzz 1.6s ease-in-out infinite}@keyframes swp-zzz{0%,to{transform:translateY(0);opacity:.6}50%{transform:translateY(-3px);opacity:1}}@media (prefers-reduced-motion: reduce){.swp-zzz{animation:none}}.swp-grid.over .swp-cell{cursor:default}.swp-cell.n1{color:#1565c0}.swp-cell.n2{color:#2e7d32}.swp-cell.n3{color:#c62828}.swp-cell.n4{color:#283593}.swp-cell.n5{color:#8d2a00}.swp-cell.n6{color:#00838f}.swp-cell.n7{color:#111}.swp-cell.n8{color:#616161}.swp-side{display:flex;flex-direction:column;align-items:stretch;gap:8px;flex:none}.swp-wrap.portrait .swp-side{flex-direction:row;align-items:center}.swp-mode{min-height:60px;padding:6px 8px;font-size:1rem;line-height:1.2;white-space:normal}.swp-mode.flagging{background:#ffe08a}.swp-hint{margin:0;padding:6px 8px;font-size:.875rem;font-weight:700;text-align:center;line-height:1.25;background:var(--panel);border:3px solid var(--ink);border-radius:12px;color:var(--ink)}.vlt-root{--vlt-kh: 56px;--vlt-gap: 6px;--vlt-safe: 150px;--vlt-slot: 46px;--vlt-hint: 18px;--vlt-kbw: 760px;position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow:hidden;color:var(--ink)}.vlt-top{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;gap:16px;padding:8px 12px 0}.vlt-safe{flex:0 0 auto;width:var(--vlt-safe);height:var(--vlt-safe);display:flex;flex-direction:column;gap:4%}.vlt-lamps{display:flex;justify-content:space-between;padding:3% 6%;border:3px solid var(--ink);border-radius:12px;background:#2b3550}.vlt-lamp{width:calc(var(--vlt-safe) * .11);aspect-ratio:1;border-radius:50%;border:2px solid var(--ink);background:radial-gradient(circle at 35% 35%,#fff,#c9d2e3 60%)}.vlt-lamp.on{background:radial-gradient(circle at 35% 35%,#ffd0d0,#ff3b3b 55%,#a51616);box-shadow:0 0 10px #ff4d4d}.vlt-body{position:relative;flex:1;border:4px solid var(--ink);border-radius:16px;overflow:hidden;perspective:600px;background:linear-gradient(135deg,#8d99b3,#5d6a86);box-shadow:0 5px 0 var(--ink)}.vlt-inside{position:absolute;top:9%;right:9%;bottom:9%;left:9%;border-radius:10px;border:3px solid var(--ink);background:radial-gradient(circle,#ffe9a8,#c98a1b 80%);display:flex;align-items:center;justify-content:center}.vlt-treasure{font-size:calc(var(--vlt-safe) * .3);transform:scale(.3);opacity:0}.vlt-spark{position:absolute;left:50%;top:50%;font-size:calc(var(--vlt-safe) * .11);opacity:0;transform:translate(-50%,-50%)}.vlt-door{position:absolute;top:7%;right:7%;bottom:7%;left:7%;border:4px solid var(--ink);border-radius:12px;transform-origin:left center;background:linear-gradient(135deg,#c7d0e2,#8693ad);transition:transform .6s cubic-bezier(.3,1.4,.5,1);display:flex;align-items:center;justify-content:center}.vlt-dial{width:46%;aspect-ratio:1;border-radius:50%;border:4px solid var(--ink);background:repeating-conic-gradient(#3b4664 0,#3b4664 6deg,#e8ecf5 6deg,#e8ecf5 30deg);box-shadow:inset 0 0 0 calc(var(--vlt-safe) * .06) #b6c0d6}.vlt-handle{position:absolute;right:8%;top:38%;width:8%;height:24%;border-radius:6px;border:3px solid var(--ink);background:var(--accent)}.vlt-safe.open .vlt-door{transform:rotateY(-105deg)}.vlt-safe.open .vlt-treasure{opacity:1;transform:scale(1);animation:vlt-treasure .6s .25s ease-out backwards}.vlt-safe.open .vlt-spark{animation:vlt-spark .9s .35s ease-out forwards}.vlt-safe.alarm .vlt-lamp.on{animation:vlt-blink .35s 4 alternate}.vlt-safe.alarm .vlt-body{animation:vlt-shake .4s 2}@keyframes vlt-treasure{0%{transform:scale(.3);opacity:0}}@keyframes vlt-spark{0%{opacity:1;transform:translate(-50%,-50%) rotate(var(--a)) translateY(0) rotate(calc(-1 * var(--a)))}to{opacity:0;transform:translate(-50%,-50%) rotate(var(--a)) translateY(calc(var(--vlt-safe) * -.42)) rotate(calc(-1 * var(--a)))}}@keyframes vlt-blink{to{background:#5a1010;box-shadow:none}}@keyframes vlt-shake{25%{transform:translate(-4px)}75%{transform:translate(4px)}}.vlt-info{flex:0 1 auto;min-width:0;max-width:820px;display:flex;flex-direction:column;gap:6px}.vlt-label{align-self:flex-start;font-size:.85rem;font-weight:800;color:#fff;background:#0a122d8c;border-radius:999px;padding:2px 10px}.vlt-hint{margin:0;font-size:var(--vlt-hint);line-height:1.25;font-weight:700;padding:6px 12px;background:var(--panel);border:3px solid var(--ink);border-radius:14px;box-shadow:0 4px 0 var(--ink)}.vlt-hint.long{font-size:calc(var(--vlt-hint) * .88)}.vlt-hint b{color:var(--accent-dark);text-decoration:underline 3px;text-underline-offset:3px}.vlt-hint .sentence{display:inline;margin-left:.4em;padding:0 .35em;background:#fff3e2;border-radius:6px;font-weight:600}.vlt-hint .big{display:inline;margin-left:.25em;font-size:1.15em}.vlt-word{display:flex;flex-wrap:nowrap;gap:5px}.vlt-slot{width:var(--vlt-slot);height:calc(var(--vlt-slot) * 1.15);flex:0 0 auto;display:flex;align-items:center;justify-content:center;font-size:calc(var(--vlt-slot) * .62);font-weight:800;font-family:ui-monospace,Consolas,monospace;background:linear-gradient(#3b4664,#1f2740 50%,#3b4664);color:#fff;border:3px solid var(--ink);border-radius:9px}.vlt-slot.on{background:linear-gradient(#fffbe8,#ffe9a8);color:var(--ink);animation:pop .2s ease-out}.vlt-slot.missed{background:#fde8e8;color:var(--bad)}.vlt-msg{margin:0;min-height:1.3em;font-size:.95rem;font-weight:800;color:#fff;text-shadow:0 1px 2px #000}.vlt-msg.ok{color:#b9f5cf}.vlt-msg.bad{color:#ffd0d0}.vlt-root.compact .vlt-top{padding-top:4px;gap:12px}.vlt-root.compact .vlt-label{display:none}.vlt-root.compact .vlt-info{gap:4px}.vlt-root.compact .vlt-msg{order:-1;font-size:.9rem;min-height:1.25em;line-height:1.25}.vlt-root.compact .vlt-hint{padding:4px 10px;border-width:3px;box-shadow:0 3px 0 var(--ink)}.vlt-root.compact .vlt-kb{padding:6px 8px}.vlt-kb{flex:0 0 auto;display:flex;flex-direction:column;gap:var(--vlt-gap);padding:8px;width:var(--vlt-kbw);max-width:100%;margin:0 auto}.vlt-row{display:flex;gap:var(--vlt-gap);justify-content:center}.vlt-key{flex:1 1 0;min-width:0;max-width:78px;height:var(--vlt-kh);padding:0;border-radius:12px;font-size:calc(var(--vlt-kh) * .42);font-weight:800;box-shadow:0 3px 0 var(--ink);touch-action:manipulation}.vlt-key.ok{background:#e6f7ec;color:var(--ok);border-color:var(--ok);opacity:1}.vlt-key.bad{background:#fde8e8;color:var(--bad);opacity:.75;text-decoration:line-through}.vlt-key.ok:after{content:"✓";font-size:.6em;margin-left:1px}.vlt-tip{flex:2.6 1 0;max-width:190px;font-size:calc(var(--vlt-kh) * .3);background:#fff3b0;visibility:hidden;white-space:nowrap}.vlt-tip.show{visibility:visible}@media (prefers-reduced-motion: reduce){.vlt-door{transition-duration:.15s}.vlt-safe.alarm .vlt-lamp.on,.vlt-safe.alarm .vlt-body,.vlt-slot.on{animation:none}}
