:root{--bg-top:#141a33;--bg-bottom:#05060d;--text:#e9eefc;--muted:#8d97b8;--good:#7ff7d4;--bad:#ff6b6b;--accent:#ff7a1a;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}*{box-sizing:border-box}html,body{background:radial-gradient(ellipse at 50% 30%, var(--bg-top), var(--bg-bottom) 75%);height:100%;color:var(--text);touch-action:none;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#game{width:100vw;height:100vh;display:block}#hud{pointer-events:none;position:fixed;inset:0}.hud-top{gap:28px;padding:14px 18px;display:flex}.hud-right{text-align:right;margin-left:auto}.hud-label{letter-spacing:.14em;color:var(--muted);font-size:11px}.hud-time{font-variant-numeric:tabular-nums;font-size:34px;font-weight:700}.hud-time.low{color:var(--bad)}.hud-value{font-variant-numeric:tabular-nums;font-size:22px}.hud-toast{text-align:center;white-space:pre-line;opacity:0;text-shadow:0 2px 8px #000;width:max-content;max-width:92vw;font-size:clamp(40px,2.5vw + 2.5vh,72px);font-weight:700;line-height:1.15;transition:opacity .15s,transform .15s;position:absolute;top:36%;left:50%;transform:translate(-50%,-8px)}.hud-toast.show{opacity:1;transform:translate(-50%)}.hud-toast.good{color:var(--good)}.hud-toast.bad{color:var(--bad)}.hud-overlay{text-align:center;background:#05060d99;flex-direction:column;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.hud-overlay[hidden]{display:none}.hud-overlay h1{color:var(--accent);margin:0 0 8px;font-size:40px}.hud-label,.hud-value,.hud-time,.form-chip,.hud-help{text-shadow:0 1px 2px #05060df2,0 0 6px #05060dcc}.hud-help{text-align:center;width:fit-content;max-width:calc(100% - 32px);color:var(--muted);background:#05060d8c;border-radius:4px;margin:0 auto;padding:3px 10px;font-size:12px;position:absolute;bottom:12px;left:0;right:0}@media (width<=600px){.hud-top{gap:16px;padding:10px 12px}.hud-right .hud-label{display:none}.hud-right .hud-value{font-size:14px}}.debug-panel{pointer-events:auto;z-index:20;background:#0a0c18e6;border:1px solid #2c3458;border-radius:6px;width:300px;max-height:calc(100vh - 120px);padding:10px 12px;font-size:11px;position:fixed;top:80px;right:12px;overflow-y:auto}.debug-panel[hidden]{display:none}.debug-panel h3{color:var(--accent);margin:0 0 8px;font-size:12px}.debug-panel label{grid-template-columns:110px 1fr 48px;align-items:center;gap:6px;margin:3px 0;display:grid}.debug-panel output{text-align:right;font-variant-numeric:tabular-nums}.debug-buttons{gap:8px;margin-top:8px;display:flex}.debug-panel button{color:var(--text);font:inherit;cursor:pointer;background:#222a4a;border:1px solid #3a4572;border-radius:4px;flex:1;padding:4px}.hud-forms{gap:4px;margin-top:4px;display:flex}.form-chip{color:var(--muted);background:#05060d80;border:1px solid #2c3458;border-radius:3px;padding:3px 6px;font-size:11px}.form-chip.on{color:#111;text-shadow:none;background:var(--accent);border-color:var(--accent)}.form-chip.on.wait{opacity:.6}@media (width<=600px){.form-chip{padding:2px 3px;font-size:9px}}.map-overlay{z-index:15;background:#05060dc7;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.map-overlay[hidden]{display:none}.map-panel{text-align:center}.map-title{letter-spacing:.06em;color:var(--accent);margin-bottom:10px;font-size:13px}.map-help{color:var(--muted);margin-top:8px;font-size:11px}.fader{opacity:0;pointer-events:none;z-index:5;background:#05060d;position:fixed;inset:0}.fader.go{animation:.35s ease-out fade-in-out}@keyframes fade-in-out{0%{opacity:.85}to{opacity:0}}@media (width<=600px){.hud-explored{display:none}}.hud-overlay{pointer-events:auto}.touch-controls{z-index:8;pointer-events:none;position:fixed;inset:0}.touch-controls[hidden]{display:none}.touch-zone{pointer-events:auto;touch-action:none;width:55%;position:absolute;top:15%;bottom:0;left:0}.stick-base{pointer-events:none;background:#e9eefc14;border:2px solid #e9eefc59;border-radius:50%;width:112px;height:112px;margin:-56px 0 0 -56px;position:absolute}.stick-base[hidden]{display:none}.stick-knob{background:#ff7a1abf;border-radius:50%;width:48px;height:48px;margin:-24px 0 0 -24px;position:absolute;top:50%;left:50%}.touch-buttons{right:max(16px, env(safe-area-inset-right));bottom:max(20px, env(safe-area-inset-bottom));pointer-events:auto;grid-template-rows:repeat(3,56px);grid-template-columns:repeat(3,56px);gap:10px;display:grid;position:absolute}.touch-buttons button{width:56px;height:56px;color:var(--text);touch-action:none;-webkit-tap-highlight-color:transparent;background:#12172db3;border:2px solid #e9eefc59;border-radius:50%;font-size:22px}.touch-buttons button.down{background:var(--accent);color:#111}.touch-buttons .tb-form{border-color:var(--accent);grid-area:3/3;width:64px;height:64px;margin:-4px}.touch-buttons .tb-rotl{grid-area:3/1}.touch-buttons .tb-rotr{grid-area:3/2}.touch-buttons .tb-map{grid-area:2/2}.touch-buttons .tb-pause{grid-area:2/3}.touch-buttons .tb-music{grid-area:1/3;font-size:34px;line-height:1}.touch-buttons .tb-music.off{opacity:.55;text-decoration:line-through;text-decoration-thickness:2px}body.touch .hud-help{display:none}.hud-top{padding-top:max(14px, env(safe-area-inset-top));padding-left:max(18px, env(safe-area-inset-left));padding-right:max(18px, env(safe-area-inset-right))}@media (height<=500px) and (orientation:landscape){.hud-top{padding-top:6px}.hud-time{font-size:24px}.hud-value{font-size:16px}}.hud-top{flex-wrap:wrap;row-gap:6px}.hud-forms{pointer-events:auto}.form-chip{white-space:nowrap;cursor:pointer}@media (width<=600px){.form-chip:not(.on) .fn{display:none}.form-chip{padding:4px 8px;font-size:12px}.hud-right{text-align:left;flex-basis:100%;margin-left:0}}:root{--ui-scale:1}#hud,.menu-panel,.map-panel{zoom:var(--ui-scale)}.menu-overlay{z-index:30;background:#05060db8;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.menu-overlay[hidden]{display:none}.menu-panel{background:#0e1226f0;border:1px solid #2c3458;border-radius:10px;width:min(520px,100%);max-height:calc(100vh - 32px);padding:24px 24px 20px;overflow-y:auto;box-shadow:0 20px 60px #00000080}.menu-screen h1{color:var(--accent);text-align:center;margin:0 0 12px;font-size:28px}.menu-screen h3{letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin:18px 0 8px;font-size:12px}.game-title{letter-spacing:.08em;margin-bottom:4px!important;font-size:44px!important}.menu-sub,.menu-foot{text-align:center;color:var(--muted);margin:0 0 18px;font-size:13px}.menu-foot{margin:18px 0 0;font-size:11px}.menu-list{gap:8px;margin-top:12px;display:grid}.menu-btn{font:inherit;color:var(--text);cursor:pointer;text-align:center;background:#1b2242;border:1px solid #3a4572;border-radius:6px;padding:10px 14px;font-size:15px}.menu-btn.primary{border-color:var(--accent);background:#2a2140}.menu-btn:hover,.menu-btn:focus-visible,.menu-panel select:focus-visible,.menu-panel input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.menu-btn:disabled{opacity:.4;cursor:default}.menu-btn.waiting{background:var(--accent);color:#111}.settings-panel{gap:6px;font-size:13px;display:grid}.settings-panel label{color:var(--text);grid-template-columns:1fr 1.4fr 48px;align-items:center;gap:8px;min-height:32px;display:grid}:is(.settings-panel label:has(select) select,.settings-panel label:has(input[type=checkbox]) input){grid-column:2/4}.settings-panel input[type=checkbox]{width:22px;height:22px;accent-color:var(--accent);justify-self:start}.settings-panel select{font:inherit;color:var(--text);background:#1b2242;border:1px solid #3a4572;border-radius:4px;padding:6px}.settings-panel input[type=range]{accent-color:var(--accent);width:100%}.settings-panel output{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}.settings-panel h3{letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin:14px 0 4px;font-size:12px}.settings-note{color:var(--muted);margin:6px 0 2px;font-size:11px}.settings-note.warn{color:var(--bad)}.key-list{gap:4px;display:grid}.key-row{grid-template-columns:1fr 140px;align-items:center;gap:8px;display:grid}.key-row .menu-btn{padding:5px 8px;font-size:13px}.howto{font-size:13px;line-height:1.55}.howto ul{margin:6px 0;padding-left:18px}.end-stats{text-align:center;font-size:14px;line-height:1.6}body.no-hints .hud-help{display:none}body.reduced-motion *,body.reduced-motion :before,body.reduced-motion :after{transition:none!important;animation:none!important}@media (width<=600px){.menu-panel{padding:18px 14px}.game-title{font-size:34px!important}.settings-panel label{grid-template-columns:1fr 1.2fr 42px}}.mode-btn{text-align:left;white-space:normal;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.mode-title{font-size:1.15em;font-weight:700}.mode-text{opacity:.85;font-size:.82em;font-weight:400}.key-legend{top:calc(max(14px, env(safe-area-inset-top)) + 64px);right:max(18px, env(safe-area-inset-right));opacity:1;flex-direction:column;align-items:center;gap:8px;transition:opacity 1s;display:flex;position:absolute}.key-legend[hidden],body.touch .key-legend{display:none}.key-legend.fade{opacity:0}.kl-row{gap:8px;display:flex}.kl-key{color:#fff;text-shadow:0 0 8px #ffffffe6;background:#ffffff1a;border:2px solid #ffffffeb;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;min-width:58px;height:58px;padding:0 8px;animation:2.2s ease-in-out infinite kl-glow;display:flex;box-shadow:0 0 14px #ffffffa6,inset 0 0 8px #ffffff4d}.kl-key.kl-wide{min-width:190px}.kl-cap{font-size:20px;font-weight:700;line-height:1.1}.kl-arrow{font-size:20px;font-weight:700;line-height:1}.kl-hint{opacity:.9;white-space:nowrap;font-size:11px}@keyframes kl-glow{50%{box-shadow:0 0 22px #ffffffe6,inset 0 0 10px #fff6}}body.reduced-motion .kl-key{animation:none}body.touch .settings-keyboard{display:none}.view-toggle{color:var(--muted);font:inherit;white-space:nowrap;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent;background:#12172db3;border:2px solid #e9eefc59;border-radius:999px;align-items:center;gap:6px;padding:7px 12px;font-size:15px;display:flex}.view-toggle .tv-far,.view-toggle.near .tv-near{color:var(--text);font-weight:700}.view-toggle.near .tv-far{color:var(--muted);font-weight:400}.view-toggle .tv-sep{opacity:.7}.hud-view-block{display:none}.touch-controls .tb-view{right:calc(max(16px, env(safe-area-inset-right)) + 200px);bottom:calc(max(20px, env(safe-area-inset-bottom)) + 8px);position:absolute}@media (width>=800px){body.touch .hud-view-block{align-self:center;margin-left:auto;display:block}body.touch .hud-right{margin-left:0}.touch-controls .tb-view{display:none}}body.touch .form-chip:not(.on) .fn{display:none}.intro{z-index:1000;pointer-events:auto;touch-action:none;opacity:1;background:#000;justify-content:center;align-items:center;transition:opacity .35s;display:flex;position:fixed;inset:0}.intro.closing{opacity:0}.intro-video{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .3s;position:absolute;inset:0}.intro.playing .intro-video{opacity:1}.intro-load{text-align:center;width:min(70vw,420px);color:var(--text)}.intro.playing .intro-load{display:none}.intro-bar{background:#e9eefc26;border-radius:3px;height:6px;overflow:hidden}.intro-bar span{background:linear-gradient(90deg,#7ff7d4,#ff7a1a);width:0;height:100%;transition:width .15s;display:block}.intro.unknown-size .intro-bar span{width:35%;animation:1.2s ease-in-out infinite intro-slide}@keyframes intro-slide{0%{transform:translate(-100%)}to{transform:translate(300%)}}.intro-pct{letter-spacing:.12em;color:var(--muted);margin-top:12px;font-size:14px}.intro-sound{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));color:#fff;font:inherit;background:#00000073;border:2px solid #ffffffb3;border-radius:999px;padding:10px 16px;font-size:16px;position:absolute}.intro-sound[hidden]{display:none}.intro-skip,.intro-continue{left:0;right:0;bottom:max(28px, calc(env(safe-area-inset-bottom) + 16px));text-align:center;color:#fff;pointer-events:none;position:absolute}.intro-skip{letter-spacing:.1em;opacity:.55;font-size:13px}.intro.ended .intro-skip{display:none}.intro-continue{letter-spacing:.08em;text-shadow:0 0 12px #9fd8ffe6,0 2px 6px #000;font-size:clamp(22px,2vw + 2vh,40px);font-weight:700;animation:1.6s ease-in-out infinite intro-pulse;display:none}.intro.ended .intro-continue{display:block}@keyframes intro-pulse{50%{opacity:.55}}body.reduced-motion .intro-continue{animation:none}
