:root{--bg: #000;--hud-green: #58ff58;--hud-yellow: #ffd84a;--hud-blue: #5b9dff;--hud-purple: #b48cff;--hud-red: #ff5050;--font-vec: "VT323", "Press Start 2P", ui-monospace, monospace}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}html,body{margin:0;padding:0;background:var(--bg);color:var(--hud-green);font-family:var(--font-vec);overflow:hidden;width:100%;height:100%;touch-action:none}body{background-size:cover;background-position:center;background-attachment:fixed;background-repeat:no-repeat;background-color:#0000008c;background-blend-mode:multiply}body[data-display=modern]{background-image:none!important;background-color:transparent}body[data-display=modern] #game{top:0;left:0;transform:none;border-radius:0;box-shadow:none;width:100vw!important;height:100vh!important;height:100dvh!important;max-width:none}#game{display:block;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg);image-rendering:pixelated;box-shadow:inset 0 0 120px #000000e6,0 0 60px #5b6dff26;border-radius:12px}#ui-root{position:absolute;inset:0;pointer-events:none}#ui-root>*{pointer-events:auto}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-start;flex-direction:column;gap:28px;padding:32px 24px 80px;background:#000000a6;backdrop-filter:blur(2px);text-align:center;font-family:var(--font-vec);color:var(--hud-green);text-shadow:0 0 6px rgba(88,255,88,.6);overflow-y:auto;touch-action:pan-y;-webkit-overflow-scrolling:touch}.overlay>*{max-width:540px;width:100%}.overlay h1{font-size:clamp(2.5rem,8vw,5rem);margin:0 0 4px;color:var(--hud-green);line-height:1.05;text-align:center}.overlay .title-logo{display:block;margin:0 auto -8px;width:clamp(300px,70vw,720px);max-width:95vw;height:auto;-webkit-user-drag:none;user-select:none;-webkit-touch-callout:none}.overlay h1 .ls{display:inline-block;letter-spacing:.15em;margin-right:-.15em}.overlay h2{font-size:clamp(1.5rem,4vw,2.5rem);margin:0;color:var(--hud-yellow);text-shadow:0 0 6px rgba(255,216,74,.6);text-align:center}.overlay h2 .ls{display:inline-block;letter-spacing:.1em;margin-right:-.1em}.overlay p{margin:0;font-size:1.05rem;color:#ffffffbf;letter-spacing:.04em;line-height:1.55}.overlay .session-panel{display:flex;flex-direction:column;gap:14px;padding:14px 18px;border:1px solid rgba(180,140,255,.3);border-radius:10px;background:#b48cff0a;width:auto;max-width:540px;margin:0 auto}.overlay .leaderboard-block{display:flex;flex-direction:column;gap:12px;padding:16px 20px;border:1px solid rgba(91,157,255,.4);border-radius:10px;background:#5b9dff0d;width:auto;max-width:540px;margin:0 auto}.overlay .leaderboard-title{font-size:.95rem;color:var(--hud-blue);letter-spacing:.25em;margin:0;text-align:center}.overlay .leaderboard-table{display:grid;grid-template-columns:2.5em 1fr auto auto;gap:6px 18px;font-size:.95rem;text-align:left}.overlay .leaderboard-table .rank{color:var(--hud-blue);text-align:right}.overlay .leaderboard-table .name{color:var(--hud-green);text-transform:uppercase}.overlay .leaderboard-table .score{color:var(--hud-yellow);text-align:right}.overlay .leaderboard-table .sats{color:var(--hud-yellow);text-align:right;opacity:.75;font-size:.85rem}.overlay .leaderboard-table .replay-row{cursor:pointer;transition:color .12s ease,text-shadow .12s ease}.overlay .leaderboard-table .replay-row:hover{color:#fff5d8;text-shadow:0 0 8px rgba(255,216,74,.55)}.overlay .leaderboard-table .replay-row.name:hover:after{content:" ▶";font-size:.7em;color:var(--hud-yellow);margin-left:6px;letter-spacing:0}.overlay .menu-btn{background:transparent;border:2px solid var(--hud-green);color:var(--hud-green);font-family:var(--font-vec);font-size:1.3rem;padding:10px 24px;letter-spacing:.1em;cursor:pointer;text-transform:uppercase;transition:all .12s ease;text-shadow:0 0 6px rgba(88,255,88,.6);box-shadow:0 0 12px #58ff5833;touch-action:manipulation;position:relative;z-index:1}.overlay .menu-btn:hover{background:#58ff581a;box-shadow:0 0 24px #58ff5880;transform:translateY(-1px)}.overlay .menu-btn.secondary{border-color:var(--hud-purple);color:var(--hud-purple);text-shadow:0 0 6px rgba(180,140,255,.6);box-shadow:0 0 12px #b48cff33}.overlay .menu-btn.secondary:hover{background:#b48cff1a;box-shadow:0 0 24px #b48cff80}.menu-row{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.scoreboard{display:grid;grid-template-columns:auto 1fr;gap:10px 28px;font-size:1.1rem;background:#0009;padding:16px 28px;border:1px solid rgba(91,157,255,.4);border-radius:10px;width:auto;max-width:360px;margin:0 auto}.scoreboard .label{color:var(--hud-blue);text-align:right;letter-spacing:.15em}.scoreboard .value{color:var(--hud-green);text-align:left;font-variant-numeric:tabular-nums}.kbhint{position:absolute;bottom:18px;left:50%;transform:translate(-50%);font-size:.82rem;color:#b48cffbf;letter-spacing:.08em;text-align:center;display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:720px;pointer-events:none}.kbhint span{white-space:nowrap}.kbhint kbd{display:inline-block;background:#b48cff26;border:1px solid rgba(180,140,255,.4);padding:2px 7px;border-radius:4px;margin:0 3px 0 0;font-family:inherit;font-size:.85em}.toast{position:fixed;top:max(24px,calc(env(safe-area-inset-top,0px) + 12px));left:50%;transform:translate(-50%);background:#000c;border:1px solid var(--hud-yellow);padding:8px 16px;font-size:.9rem;color:var(--hud-yellow);letter-spacing:.1em;border-radius:6px;text-shadow:0 0 4px rgba(255,216,74,.6);animation:toast-fade 3s ease forwards;z-index:60;max-width:calc(100vw - 32px);text-align:center}@keyframes toast-fade{0%{opacity:0;transform:translate(-50%) translateY(-8px)}10%{opacity:1;transform:translate(-50%) translateY(0)}80%{opacity:1}to{opacity:0}}.zap-popover{position:fixed;bottom:24px;right:24px;background:linear-gradient(135deg,#140828f5,#080418f5);border:2px solid rgba(255,216,74,.6);border-radius:14px;padding:16px 18px 14px;box-shadow:0 0 40px #ffd84a59;z-index:220;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;pointer-events:auto;font-family:var(--font-vec);max-width:92vw;animation:zap-popover-in .22s ease}@keyframes zap-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes zap-popover-in{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.zap-popover button:hover,.zap-popover a:hover{filter:brightness(1.18);transform:translateY(-1px)}.zap-modal{position:fixed;inset:0;background:#000000d1;backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;pointer-events:auto}.zap-modal-inner{background:linear-gradient(135deg,#140828f2,#080418f2);border:2px solid rgba(255,216,74,.5);border-radius:14px;box-shadow:0 0 60px #ffd84a33;padding:28px 32px;max-width:540px;width:100%;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;color:#cfd6ff;font-family:var(--font-vec)}.zap-modal-inner h2{font-size:1.6rem;letter-spacing:.18em;color:var(--hud-yellow);text-shadow:0 0 8px rgba(255,216,74,.5);margin:0 0 4px}.zap-modal-inner button:hover:not(:disabled){filter:brightness(1.15);transform:translateY(-1px)}.credits-roll{position:relative;width:100%;max-width:620px;height:460px;overflow:hidden;border:1px solid rgba(180,140,255,.3);border-radius:10px;background:linear-gradient(to bottom,#000000b3,#140828b3);margin:0 auto;mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,transparent 0%,black 12%,black 88%,transparent 100%)}.credits-roll-inner{position:absolute;width:100%;text-align:center;padding:0 24px;animation:credits-roll-anim 60s linear forwards;animation-play-state:running}.credits-roll:hover .credits-roll-inner{animation-play-state:paused}@keyframes credits-roll-anim{0%{transform:translateY(100%)}to{transform:translateY(-110%)}}@keyframes zap-thanks-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes zap-thanks-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.97)}}@keyframes zap-thanks-pulse{0%,to{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.08);filter:brightness(1.25)}}.completion-stage{opacity:0;transform:translateY(8px);animation:completion-stage-in .7s ease forwards}@keyframes completion-stage-in{to{opacity:1;transform:translateY(0)}}@keyframes pallasite-live-pulse{0%,to{opacity:1}50%{opacity:.55}}.honours-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:4px 0 0}.honour-badge{font-size:.78rem;letter-spacing:.18em;padding:4px 12px;border:1px solid currentColor;border-radius:999px;text-shadow:0 0 4px currentColor}.honour-perfect{color:var(--hud-yellow)}.honour-no-lurk{color:var(--hud-green)}.honour-no-warp{color:var(--hud-blue)}.honour-completionist{color:#ffd84a}.credits-roll-inner h3{font-size:.95rem;letter-spacing:.32em;color:var(--hud-yellow);margin:1.6em 0 .5em;font-weight:400;text-shadow:0 0 6px rgba(255,216,74,.4)}.credits-roll-inner p{font-size:.92rem;color:#dcd2ffd9;margin:.3em 0;line-height:1.55;letter-spacing:.04em;text-shadow:none}.credits-roll-inner p strong{color:var(--hud-blue);font-weight:400;letter-spacing:.12em}.credits-roll-inner .name{color:var(--hud-yellow);font-size:1.1rem;letter-spacing:.22em;text-shadow:0 0 6px rgba(255,216,74,.5);margin:.4em 0 .2em}.credits-roll-inner a{color:var(--hud-blue);text-decoration:none;font-size:.78rem;letter-spacing:.06em;word-break:break-all}.credits-roll-inner a:hover{color:var(--hud-yellow);text-decoration:underline}.credits-roll-inner .credits-divider{font-size:1.1em;color:#b48cff66;margin:1.4em 0 .6em;letter-spacing:.6em}.credits-roll-inner .credits-spacer{height:100px}.credits-roll-inner .specimen{margin:.45em 0}.credits-roll-inner .specimen-name{color:var(--hud-yellow);letter-spacing:.16em;font-size:.92rem}.credits-roll-inner .specimen-sub{color:#b4c8ffa6;font-size:.78rem;letter-spacing:.04em}@media(max-width:768px){#game{width:min(100vw,calc(100dvh * 4 / 3));height:auto;max-width:100vw;aspect-ratio:4 / 3;border-radius:0}.overlay{padding:24px 16px 96px;gap:18px}.kbhint{display:none}}#touch-controls{display:none;position:fixed;inset:0;pointer-events:none;z-index:50;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}body.touch-active[data-phase=playing] #touch-controls,body.touch-active[data-phase=wavestart] #touch-controls,body.touch-active[data-phase=warp] #touch-controls{display:block}#touch-controls[data-mode=buttons] .joystick-mode,#touch-controls[data-mode=joystick] .buttons-mode{display:none}.touch-cluster{position:absolute;bottom:max(14px,calc(env(safe-area-inset-bottom,0px) + 8px));display:grid;gap:6px;pointer-events:none}.touch-cluster.left{left:max(12px,calc(env(safe-area-inset-left,0px) + 6px));grid-template-columns:80px 80px;grid-template-rows:60px 80px;grid-template-areas:"thrust thrust" "rotL   rotR";gap:4px}.touch-cluster.right{right:max(12px,calc(env(safe-area-inset-right,0px) + 6px));grid-template-columns:80px 80px;grid-template-rows:60px 80px;grid-template-areas:"hyper shield" "fire  fire";gap:4px}.touch-btn{pointer-events:auto;width:80px;height:80px;border-radius:50%;background:#00000040;border:2px solid rgba(220,210,255,.3);color:#dcd2ffa6;font-family:VT323,ui-monospace,monospace;font-size:2rem;display:flex;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;text-shadow:0 0 6px currentColor;transition:background .08s ease,transform .06s ease}.touch-btn:active,.touch-btn.held{background:#ffd84a47;border-color:#ffd84a;color:#ffd84a;transform:scale(.94)}.touch-btn.fire{width:164px;height:80px;border-radius:40px;grid-area:fire;color:#ff8a3a;border-color:#ff8a3abf;font-size:1.1rem;letter-spacing:.22em}.touch-btn.fire:active,.touch-btn.fire.held{background:#ff8a3a52;color:#ff8a3a;border-color:#ff8a3a}.touch-btn.thrust{width:164px;height:60px;border-radius:30px;grid-area:thrust;color:#5b9dff;border-color:#5b9dffbf;font-size:1.6rem}.touch-btn.thrust:active,.touch-btn.thrust.held{background:#5b9dff52;color:#5b9dff;border-color:#5b9dff}.touch-btn.rotL{grid-area:rotL;font-size:2.2rem;line-height:1}.touch-btn.rotR{grid-area:rotR;font-size:2.2rem;line-height:1}.touch-btn.hyper{grid-area:hyper;width:80px;height:60px;border-radius:30px;font-size:1.4rem;color:#b48cff;border-color:#b48cffa6}.touch-btn.shield{grid-area:shield;width:80px;height:60px;border-radius:30px;font-size:1.4rem;color:#58ff58;border-color:#58ff58a6}.joystick-pad{position:absolute;pointer-events:auto;bottom:max(14px,calc(env(safe-area-inset-bottom,0px) + 8px));left:max(14px,calc(env(safe-area-inset-left,0px) + 6px));width:168px;height:168px;border-radius:50%;background:radial-gradient(circle at center,#5b9dff14,#0000002e 70%);border:2px solid rgba(91,157,255,.22);box-shadow:0 0 18px #5b9dff14 inset;display:flex;align-items:center;justify-content:center;touch-action:none;-webkit-tap-highlight-color:transparent;user-select:none;transition:border-color .1s ease,background .1s ease}.joystick-pad.active{border-color:#5b9dffb3;background:radial-gradient(circle at center,#5b9dff2e,#00000047 70%)}.joystick-knob{width:64px;height:64px;border-radius:50%;background:#5b9dff47;border:2px solid rgba(91,157,255,.55);box-shadow:0 0 12px #5b9dff33;pointer-events:none;transition:transform .06s ease}#game:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(to bottom,transparent 0%,transparent 50%,rgba(0,0,0,.06) 50%,rgba(0,0,0,.06) 100%);background-size:100% 3px;mix-blend-mode:multiply}
