:root{--sky-deep:#0b2a55;--sky:#2f6aa8;--cyan:#4ff3ff;--cyan-deep:#12b8c9;--ink:#0d1b2e;--panel:#091b34b8;--panel-line:#a0e6ff47;--text:#f4fbff;--muted:#b6cde0;--gold:#ffcf4a;--danger:#ff7a5c;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--font:"Avenir Next", "Segoe UI", "Helvetica Neue", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{background:var(--sky-deep);height:100%;color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#app{position:fixed;inset:0}#game-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#ui{pointer-events:none;position:absolute;inset:0}#ui>*{pointer-events:auto}#ui>.hud{pointer-events:none}.screen{padding:calc(20px + var(--safe-top)) 20px calc(20px + var(--safe-bottom));flex-direction:column;justify-content:center;align-items:center;transition:opacity .35s;display:flex;position:absolute;inset:0}.screen[hidden]{display:none}.screen.is-fading{opacity:0;pointer-events:none}.loading{background:#0b2a55 50%/cover no-repeat}.loading:before{content:"";background:linear-gradient(#06162e40 0%,#06162e0d 45%,#06162ecc 100%);position:absolute;inset:0}.loading>*{position:relative}.loading .logo{width:min(520px,82vw);margin-top:-14vh}.loading-bottom{bottom:calc(40px + var(--safe-bottom));text-align:center;width:min(360px,80vw);position:absolute}.progress{background:#fff3;border-radius:6px;height:6px;overflow:hidden}.progress>i{background:linear-gradient(90deg, var(--cyan-deep), var(--cyan));width:0;height:100%;box-shadow:0 0 12px var(--cyan);transition:width .25s;display:block}.loading-label{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-top:12px;font-size:13px}.logo{filter:drop-shadow(0 6px 20px #00143c8c);height:auto;display:block}.menu{background:linear-gradient(#06162e73 0%,#06162e00 30% 55%,#06162eb3 100%);justify-content:space-between}.menu-top{flex-direction:column;align-items:center;gap:10px;display:flex}.menu .logo{width:min(460px,78vw)}.tagline{color:var(--text);text-shadow:0 2px 10px #001432b3;text-align:center;margin:0;font-size:15px}.menu-bottom{flex-direction:column;align-items:center;gap:14px;width:min(560px,100%);display:flex}.stats-row{gap:10px;display:flex}.stat-chip{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(8px);border-radius:999px;align-items:center;gap:8px;padding:8px 14px;font-size:14px;font-weight:600;display:flex}.stat-chip small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:500}.menu-links{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.btn{appearance:none;border:1px solid var(--panel-line);min-height:48px;font:600 15px var(--font);color:var(--text);background:var(--panel);-webkit-backdrop-filter:blur(8px);cursor:pointer;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:0 20px;transition:transform .12s,background .2s,border-color .2s;display:inline-flex}.btn:hover{background:#14345cd9;border-color:#a0e6ff8c}.btn:active{transform:scale(.97)}.btn:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.btn-primary{letter-spacing:.06em;text-transform:uppercase;color:#062236;background:linear-gradient(180deg, #8ff9ff 0%, var(--cyan) 45%, var(--cyan-deep) 100%);border:0;border-radius:18px;min-width:240px;min-height:64px;font-size:22px;font-style:italic;font-weight:800;box-shadow:0 10px 30px #12b8c973,inset 0 -3px #003c5040}.btn-primary:hover{background:linear-gradient(#b3fbff 0%,#6ff6ff 45%,#22c7d6 100%)}.btn-small{min-height:44px;padding:0 14px;font-size:14px}.btn .lock{opacity:.8;font-size:12px}.overlay{-webkit-backdrop-filter:blur(4px);background:#0512268c}.panel{border:1px solid var(--panel-line);background:linear-gradient(#0e284aeb,#081830f0);border-radius:22px;flex-direction:column;gap:14px;width:min(420px,100%);max-height:100%;padding:24px;display:flex;overflow:auto;box-shadow:0 20px 60px #000a1e80}.panel.wide{width:min(640px,100%)}.panel h2{letter-spacing:.02em;text-align:center;margin:0;font-size:28px;font-style:italic;font-weight:800}.panel p{color:var(--muted);text-align:center;margin:0;line-height:1.45}.panel .actions{gap:10px;display:grid}.cause{text-align:center;background:#ff7a5c1f;border:1px solid #ff7a5c59;border-radius:14px;padding:12px 14px}.cause strong{color:var(--danger);margin-bottom:2px;font-size:15px;display:block}.cause span{color:var(--text);font-size:14px}.score-big{text-align:center}.score-big b{letter-spacing:-.02em;font-size:54px;font-weight:800;line-height:1;display:block}.score-big small{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;font-size:11px}.new-best{background:var(--gold);color:#3a2600;letter-spacing:.1em;border-radius:999px;margin-top:8px;padding:4px 10px;font-size:12px;font-weight:800;display:inline-block}.results-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.results-grid div{text-align:center;background:#ffffff0f;border-radius:12px;padding:10px 6px}.results-grid b{font-size:18px;display:block}.results-grid small{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;font-size:11px}.toggle-row{border-bottom:1px solid #ffffff12;justify-content:space-between;align-items:center;gap:12px;padding:10px 2px;display:flex}.toggle-row span{font-size:15px}.toggle-row small{color:var(--muted);font-size:12px;display:block}.switch{appearance:none;cursor:pointer;background:#ffffff2e;border:0;border-radius:30px;flex:none;width:52px;height:30px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:transform .2s;position:absolute;top:3px;left:3px}.switch[aria-checked=true]{background:var(--cyan-deep)}.switch[aria-checked=true]:after{transform:translate(22px)}.switch:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.controls-grid{grid-template-columns:auto 1fr 1fr;align-items:center;gap:6px 14px;font-size:14px;display:grid}.controls-grid .head{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-size:11px}kbd{font:600 12px var(--font);background:#ffffff1f;border:1px solid #fff3;border-radius:6px;padding:2px 7px;display:inline-block}.cards{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.cards-four{grid-template-columns:repeat(4,1fr)}.card{aspect-ratio:3/4;border:1px solid var(--panel-line);background:#123;border-radius:14px;position:relative;overflow:hidden}.card img{object-fit:cover;width:100%;height:100%;display:block}.card .card-label{text-align:center;background:linear-gradient(#0000,#040e1ee6);padding:22px 8px 8px;font-size:13px;font-weight:700;position:absolute;inset:auto 0 0}.card .card-label small{color:var(--muted);font-size:11px;font-weight:500;display:block}.card.locked img{filter:grayscale(.7)brightness(.5)}button.card{font:inherit;color:inherit;cursor:pointer;text-align:inherit;padding:0}.card.selectable:hover,.card.selectable:focus-visible{border-color:var(--cyan);outline:none;box-shadow:0 0 18px #4ff3ff59}.card.selected{border-color:var(--cyan);box-shadow:0 0 0 2px var(--cyan) inset}.card .badge{background:#040e1ecc;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:700;position:absolute;top:8px;right:8px}.card .badge.ok{background:var(--cyan-deep);color:#04212e}.sound-prompt{color:var(--text);pointer-events:none;background:#081a3299;border:1px solid #4ff3ff66;border-radius:999px;align-items:center;gap:8px;margin:0 auto;padding:6px 14px;font-size:13px;font-weight:700;animation:1.6s ease-in-out infinite sound-pulse;display:inline-flex}.sound-prompt[hidden]{display:none}.sound-prompt svg{width:16px;height:16px;fill:var(--cyan)}@keyframes sound-pulse{50%{box-shadow:0 0 14px #4ff3ff73}}.reduce-motion .sound-prompt{animation:none}.loading-tip{color:var(--muted);text-align:center;min-height:1.4em;margin-top:10px;font-size:13px}.overlay:not([hidden]) .panel{animation:.22s cubic-bezier(.2,.9,.3,1.2) panel-in}@keyframes panel-in{0%{opacity:0;transform:translateY(10px)scale(.97)}}.menu:not([hidden]) .menu-top{animation:.5s ease-out both rise-in}.menu:not([hidden]) .menu-bottom{animation:.5s ease-out 80ms both rise-in}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}}.hud-pill.bump{animation:.22s ease-out pill-bump}@keyframes pill-bump{40%{border-color:var(--cyan);transform:scale(1.12)}}.popup{color:#fff;text-shadow:0 0 12px #4ff3ffe6,0 2px 6px #001432b3;white-space:nowrap;pointer-events:none;font-size:22px;font-style:italic;font-weight:800;position:absolute;top:58%;left:50%;transform:translate(-50%)}.popup.show{animation:.8s ease-out forwards popup}@keyframes popup{0%{opacity:0;transform:translate(-50%,10px)scale(.8)}20%{opacity:1;transform:translate(-50%)scale(1.08)}to{opacity:0;transform:translate(-50%,-28px)scale(1)}}.panel h3{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:4px 0 0;font-size:13px;font-weight:800}.panel p.small,.panel .small{font-size:13px}.btn .count{background:#4ff3ff2e;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:800}.bar{background:#ffffff1a;border-radius:6px;height:6px;overflow:hidden}.bar i{border-radius:inherit;background:linear-gradient(90deg, var(--cyan-deep), var(--cyan));height:100%;display:block}.mission-list,.mode-list{gap:10px;display:grid}.mode-card{color:var(--text);font:inherit;text-align:left;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:16px;gap:4px;padding:14px 16px;transition:border-color .15s,background .15s;display:grid}.mode-card:hover,.mode-card:focus-visible{border-color:var(--cyan);background:#4ff3ff14;outline:none}.mode-card b{font-size:17px}.mode-card small{color:var(--muted);font-size:13px;line-height:1.35}.mode-best{color:var(--cyan);background:#4ff3ff24;border-radius:999px;justify-self:start;margin-top:4px;padding:3px 10px;font-size:12px;font-weight:800}.medal-badge{letter-spacing:.08em;text-transform:uppercase;border-radius:999px;margin-top:8px;padding:4px 12px;font-size:12px;font-weight:800;display:inline-block}.medal-badge.gold{background:var(--gold);color:#3a2600}.medal-badge.silver{color:#26313d;background:#d9e1ea}.medal-badge.bronze{color:#2e1708;background:#d08a52}.hud.mode-clock .hud-score b{font-style:normal}.mission{background:#ffffff0f;border:1px solid #ffffff14;border-radius:16px;gap:8px;padding:12px 14px;display:grid}.mission-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.mission-head b{font-size:16px}.reward{color:var(--cyan);align-items:center;gap:5px;font-size:14px;font-weight:800;display:inline-flex}.mission-desc{color:var(--text);font-size:14px}.mission-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.mission-foot small{color:var(--muted);font-size:12px}.mission-foot .btn{min-height:40px;padding:0 18px}.achievement-grid{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.achievement{opacity:.72;background:#ffffff0a;border:1px solid #ffffff0f;border-radius:14px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.achievement.got{opacity:1;background:#ffcf4a1a;border-color:#ffcf4a59}.achievement>div{flex:1;gap:4px;min-width:0;display:grid}.achievement b{font-size:14px}.achievement small{color:var(--muted);font-size:12px;line-height:1.3}.medal{width:34px;height:34px;color:var(--muted);background:#ffffff1a;border-radius:50%;flex:none;place-items:center;font-size:16px;font-weight:800;display:grid}.achievement.got .medal{background:linear-gradient(160deg, #fff1b0, var(--gold));color:#4a3200;box-shadow:0 0 12px #ffcf4a73}.trail-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.trail{color:var(--text);font:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:14px;justify-items:center;gap:4px;min-height:44px;padding:10px 6px;display:grid}.trail:disabled{cursor:default;opacity:.55}.trail.equipped:disabled{opacity:1}.trail.equipped{border-color:var(--cyan);background:#4ff3ff1f}.trail.buyable small{color:var(--cyan);font-weight:700}.trail b{font-size:13px}.trail small{color:var(--muted);text-align:center;font-size:11px}.trail:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}.swatch{border-radius:50%;width:34px;height:34px;box-shadow:0 0 14px #ffffff26,inset 0 0 0 2px #ffffff59}.success{text-align:center;background:#4ff3ff1f;border:1px solid #4ff3ff66;border-radius:14px;padding:12px 14px}.success strong{color:var(--cyan);margin-bottom:2px;font-size:16px;display:block}.success span{font-size:14px}.chips{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.chip{background:#4ff3ff24;border:1px solid #4ff3ff59;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}.chip.gold{color:#ffe08a;background:#ffcf4a24;border-color:#ffcf4a73}.result-missions{gap:8px;display:grid}.mini-mission{background:#ffffff0d;border-radius:12px;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.mini-mission>div{gap:3px;min-width:0;display:grid}.mini-mission b{font-size:13px}.mini-mission small{color:var(--muted);font-size:11px}.mini-mission .check{border:2px solid #ffffff40;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:800;display:grid}.mini-mission.done .check{border-color:var(--cyan);background:var(--cyan);color:#04212e}.mini-right{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px;font-weight:800}.mini-mission.done .mini-right{color:var(--cyan)}.mission-pill{white-space:nowrap;font-size:13px}.mission-pill.focused{border-color:var(--cyan);box-shadow:0 0 12px #4ff3ff59}.target-icon{border:2px solid var(--cyan);width:12px;height:12px;box-shadow:inset 0 0 0 2px #081a32e6, inset 0 0 0 6px var(--cyan);border-radius:50%}.toasts{left:50%;top:calc(80px + var(--safe-top));pointer-events:none;justify-items:center;gap:6px;width:min(320px,100vw - 140px);display:grid;position:absolute;transform:translate(-50%)}.toast{text-align:center;background:#081a32d1;border:1px solid #ffcf4a80;border-radius:14px;padding:8px 14px;animation:.25s ease-out toast-in;box-shadow:0 0 20px #ffcf4a33}.toast small{color:var(--gold);letter-spacing:.1em;text-transform:uppercase;font-size:11px;font-weight:800;display:block}.toast b{font-size:14px}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.character-silhouette{color:#ffffff40;background:radial-gradient(circle at 50% 35%,#4ff3ff2e,#0000 60%),#0e2340;place-items:center;height:100%;font-size:40px;font-weight:800;display:grid}.hud{pointer-events:none;padding:calc(12px + var(--safe-top)) 14px 0;position:absolute;inset:0}.hud[hidden]{display:none}.hud-top{grid-template-columns:1fr auto 1fr;align-items:start;display:grid}.hud-left{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.hud-pill{-webkit-backdrop-filter:blur(6px);font-variant-numeric:tabular-nums;background:#081a328c;border:1px solid #a0e6ff40;border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:15px;font-weight:700;display:inline-flex}.hud-pill[hidden]{display:none}.crystal-icon{background:linear-gradient(160deg, #b8fcff, var(--cyan) 45%, var(--cyan-deep));clip-path:polygon(50% 0,100% 45%,50% 100%,0 45%);width:12px;height:16px;filter:drop-shadow(0 0 4px var(--cyan))}.hud-score{text-align:center;text-shadow:0 2px 12px #00143299}.hud-score b{font-variant-numeric:tabular-nums;font-size:38px;font-style:italic;font-weight:800;line-height:1;display:block}.hud-score small{letter-spacing:.16em;text-transform:uppercase;color:#ffffffd9;font-size:11px}.hud-right{justify-content:flex-end;align-items:center;gap:8px;display:flex}.multiplier{background:linear-gradient(180deg, #ffe48a, var(--gold));color:#3a2600;border-radius:12px;padding:6px 10px;font-size:16px;font-style:italic;font-weight:800;transition:transform .2s}.multiplier.bump{transform:scale(1.3)}.pause-btn{pointer-events:auto;border-radius:14px;width:48px;height:48px;padding:0}.pause-btn i{border-left:5px solid #fff;border-right:5px solid #fff;width:14px;height:16px;display:block}.hud-powerups{right:14px;top:calc(72px + var(--safe-top));flex-direction:column;gap:8px;display:flex;position:absolute}.powerup-chip{background:conic-gradient(var(--c) calc(var(--p,1) * 1turn), #081a3273 0);width:48px;height:48px;box-shadow:0 0 14px color-mix(in srgb, var(--c) 45%, transparent);border-radius:50%;padding:3px}.powerup-chip[hidden]{display:none}.powerup-chip span{background:#081a32c7;border-radius:50%;place-items:center;width:100%;height:100%;display:grid}.powerup-chip svg{width:24px;height:24px;fill:var(--c)}.powerup-chip.ending{animation:.3s steps(2,end) infinite powerup-ending}@keyframes powerup-ending{50%{opacity:.4}}.hint{text-align:center;white-space:nowrap;white-space:normal;background:#081a32bf;border:1px solid #4ff3ff80;border-radius:16px;max-width:calc(100vw - 32px);padding:12px 18px;font-size:17px;font-weight:700;transition:opacity .3s,transform .3s;position:absolute;top:26%;left:50%;transform:translate(-50%);box-shadow:0 0 24px #4ff3ff40}.hint[hidden]{opacity:0;display:block;transform:translate(-50%,-8px)}.touch-buttons{left:0;right:0;bottom:calc(16px + var(--safe-bottom));pointer-events:none;justify-content:space-between;padding:0 14px;display:flex;position:absolute}.touch-buttons[hidden]{display:none}.touch-buttons .pad{pointer-events:auto;gap:10px;display:flex}.touch-buttons button{border-radius:18px;width:64px;height:64px;font-size:24px}@media (max-width:520px){.cards-four{grid-template-columns:repeat(2,1fr)}.achievement-grid{grid-template-columns:1fr}.cards-four .card{aspect-ratio:1}.hud-score b{font-size:30px}.btn-primary{min-width:200px;font-size:20px}.panel{padding:20px 16px}.score-big b{font-size:46px}}@media (prefers-reduced-motion:reduce){.screen,.multiplier,.hint{transition:none}.powerup-chip.ending,.sound-prompt,.toast,.overlay:not([hidden]) .panel,.menu:not([hidden]) .menu-top,.menu:not([hidden]) .menu-bottom,.hud-pill.bump{animation:none}.popup.show{animation:.8s linear forwards popup-fade}@keyframes popup-fade{0%,70%{opacity:1}to{opacity:0}}}.reduce-motion .screen,.reduce-motion .multiplier,.reduce-motion .hint{transition:none}.reduce-motion .powerup-chip.ending,.reduce-motion .toast,.reduce-motion .hud-pill.bump,.reduce-motion .overlay:not([hidden]) .panel,.reduce-motion .menu:not([hidden]) .menu-top,.reduce-motion .menu:not([hidden]) .menu-bottom{animation:none}.reduce-motion .popup.show{animation:.8s linear forwards popup-fade}@keyframes popup-fade{0%,70%{opacity:1}to{opacity:0}}
