:root{color-scheme:dark;--bg:#111b20;--panel:#18262c;--line:#304047;--mint:#c1f589;--cream:#f3f1df;--muted:#93a6a9;--orange:#ff9873}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--cream);font:15px/1.6 'Courier New',monospace}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--orange);outline-offset:4px}a{color:inherit;text-decoration:none}.topbar{height:90px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5vw}.brand{font-size:24px;font-weight:bold;letter-spacing:2px;display:flex;align-items:center;gap:13px}.brand-mark{background:var(--mint);color:var(--bg);font-size:26px;padding:0 10px;box-shadow:3px 3px 0 #6b8b56}.edition{font-size:10px;color:var(--muted);letter-spacing:2px;border-left:1px solid var(--line);padding-left:18px;margin-left:8px}.top-right{display:flex;gap:12px;align-items:center;font-size:10px;letter-spacing:1px}.status-dot{display:inline-block;width:7px;height:7px;background:var(--mint);border-radius:50%;box-shadow:0 0 9px #c1f54840}.top-right form{margin-left:12px}.eyebrow,.micro{font-size:10px;font-weight:bold;letter-spacing:1.6px}.eyebrow{color:var(--mint)}.micro{color:var(--muted)}.game-layout{max-width:1440px;padding:35px 5vw 0;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}h1,h2,p{margin:0}h1{font-family:Arial,sans-serif;font-weight:900;font-size:48px;letter-spacing:-2px;line-height:1.1;margin-top:10px}h1 span{color:var(--mint)}.page-heading p{font-size:12px;color:var(--muted)}.arcade-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:25px}.machine{border:1px solid #435258;background:#0b141b;box-shadow:0 8px 0 #0a1115;align-self:start}.hud{height:76px;display:flex;justify-content:space-between;padding:12px 23px;background:#1c2b31;border-bottom:1px solid var(--line)}.hud label{display:block;font-size:9px;letter-spacing:1.5px;color:var(--muted)}.hud strong{font-size:23px;font-weight:normal;letter-spacing:2px}.health-hud strong{color:var(--mint)}.screen{position:relative;overflow:hidden}canvas{width:100%;display:block;aspect-ratio:8/5;touch-action:none}.screen:after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(transparent 0 3px,#00000012 3px 4px)}.screen-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#08161b70;text-align:center;z-index:2;padding:20px}.screen-overlay[hidden]{display:none}.screen-overlay h2{font-size:clamp(40px,6vw,82px);letter-spacing:8px;color:var(--mint);text-shadow:5px 5px 0 #40554b;line-height:1.3}.screen-overlay p{font-size:13px;margin:12px 0 22px}.primary{display:flex;align-items:center;justify-content:space-between;gap:35px;background:var(--mint);border:0;border-bottom:4px solid #7a9e59;color:#17261d;padding:15px 22px;font-weight:bold;font-size:12px;letter-spacing:1px}.primary:hover{background:#d9ffb3;transform:translateY(-1px)}.screen-overlay .micro{margin-top:18px;font-size:9px}.machine-bottom{display:flex;justify-content:space-between;align-items:center;padding:12px 18px;border-top:1px solid var(--line);font-size:10px;gap:8px}.machine-bottom .status-dot{margin-right:8px}.text-button{background:none;color:var(--muted);border:0;padding:6px;font-size:10px}.text-button:hover{color:var(--mint)}aside{display:flex;flex-direction:column;gap:20px}.side-card{background:var(--panel);border:1px solid var(--line);padding:22px}.section-heading{display:flex;justify-content:space-between}.side-card h2{font-family:Arial,sans-serif;letter-spacing:-1px;font-size:30px;margin:5px 0 18px}.small-dot{color:var(--mint)}ol{list-style:none;padding:0;margin:0 0 20px}ol li{display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding:9px 0;font-size:12px}ol li .rank{color:var(--muted);font-size:10px}ol li .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}ol li:first-child{color:var(--mint)}.instruction{display:flex;gap:13px;margin-top:16px;font-size:11px;color:var(--muted)}.instruction>span{color:var(--mint);font-size:10px}.instruction b{color:var(--cream);font-weight:normal;font-size:12px}.power-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:10px;border-top:1px solid var(--line);padding-top:15px;margin-top:20px;color:var(--mint)}.inventory{display:flex;gap:26px;align-items:center;flex-wrap:wrap;padding:30px 0;font-size:11px;color:var(--muted)}footer{border-top:1px solid var(--line);margin:10px 5vw 0;padding:22px 0;display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px}.muted{color:var(--muted)}.touch-controls{display:none;gap:8px;padding:10px}.touch-controls button{background:#263a40;border:1px solid #496061;color:var(--mint);padding:14px;flex:1;touch-action:none}.login-layout{max-width:1200px;margin:auto;min-height:calc(100vh - 180px);display:grid;grid-template-columns:1.3fr 1fr;align-items:center;gap:80px;padding:50px}.login-layout h1{font-size:72px;line-height:1.05;margin:20px 0}.intro{font-size:13px;color:var(--muted)}.login-art{display:flex;align-items:center;gap:50px;color:var(--mint);font-size:30px;margin:20px 0}.login-art span{font-size:85px}.access-card{background:var(--panel);border:1px solid var(--line);padding:38px;box-shadow:8px 8px 0 #0b1419}.access-card h2{font-family:Arial,sans-serif;font-size:36px;margin:25px 0 10px;letter-spacing:-1px}.access-card p{font-size:12px;color:var(--muted)}label[for=password]{display:block;font-size:10px;margin:30px 0 8px;letter-spacing:1px}input{min-width:0;background:#111e24;border:1px solid #42565c;color:var(--cream);padding:14px;width:100%}.access-card .primary{width:100%;margin-top:15px}.card-note{font-size:10px;color:var(--muted);border-top:1px solid var(--line);margin-top:30px;padding-top:20px}.error{color:var(--orange)!important;margin-top:12px!important}.score-form{display:flex;gap:8px;max-width:380px;margin-bottom:12px}.score-form input{font-size:12px}.score-form .primary{padding:9px;font-size:10px}.screen-overlay h2.end-title{font-size:40px;letter-spacing:2px}#announcement{position:absolute;left:0;right:0;top:22px;text-align:center;color:var(--mint);font-weight:bold;letter-spacing:2px;font-size:15px;pointer-events:none;text-shadow:2px 2px #000}
@media(max-width:1050px){.arcade-layout{grid-template-columns:minmax(0,1fr) 245px;gap:16px}.side-card{padding:16px}.game-layout{padding:25px 3vw 0}.hud{padding:12px}.inventory{gap:16px}.login-layout{gap:35px}.login-layout h1{font-size:58px}}@media(max-width:760px){.topbar{height:66px;padding:0 5vw}.edition,.top-right>.status-dot{display:none}.top-right{font-size:0;gap:0}.top-right .text-button{font-size:10px}.page-heading h1{font-size:36px}.page-heading p{display:none}.arcade-layout{grid-template-columns:1fr}.hud{height:67px}.hud strong{font-size:19px}.hud label{font-size:8px}.screen-overlay h2{font-size:50px}.screen-overlay p{font-size:11px;margin:6px 0 13px}.screen-overlay .micro{margin-top:12px}.screen-overlay .primary{padding:11px 16px}.touch-controls{display:flex}aside{display:grid;grid-template-columns:1fr 1fr;gap:12px}.side-card h2{font-size:25px}.inventory{gap:14px;font-size:10px}.inventory>.eyebrow{width:100%}footer{gap:20px;font-size:8px}footer>span:last-child{display:none}.login-layout{grid-template-columns:1fr;padding:35px 6vw;gap:30px}.login-layout h1{font-size:48px}.login-art{display:none}.login-layout .micro{display:none}.access-card{padding:25px}.login-layout .intro{margin-top:15px}.screen-overlay h2.end-title{font-size:28px}.score-form{margin-bottom:7px;max-width:90%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* Fullscreen and browser-window fallback share the same stable play area. */
body.game-expanded{overflow:hidden}
.game-expanded .machine,.machine:fullscreen{position:fixed;inset:0;z-index:1000;width:100%;height:100dvh;display:flex;flex-direction:column;border:0;box-shadow:none;background:#08131c}
.game-expanded .screen,.machine:fullscreen .screen{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center}
.game-expanded canvas,.machine:fullscreen canvas{width:100%;height:100%;object-fit:contain;aspect-ratio:auto;outline:none}
.game-expanded .hud,.game-expanded .machine-bottom,.game-expanded .touch-controls{flex-shrink:0}
.game-expanded .screen-overlay h2{font-size:clamp(35px,8vh,82px)}
.game-expanded .machine-bottom{padding:8px 18px}
@media(pointer:fine){.game-expanded .touch-controls{display:none}}
@media(max-width:600px){.game-expanded .machine-bottom{flex-wrap:wrap;justify-content:center;padding:5px}.game-expanded .touch-controls{padding:6px}.game-expanded .touch-controls button{padding:10px}}
@media(max-height:500px){.game-expanded .hud{height:48px;padding:3px 15px}.game-expanded .hud strong{font-size:18px}.game-expanded .screen-overlay{padding:8px}.game-expanded .screen-overlay p{margin:3px 0 8px}.game-expanded .screen-overlay .micro{margin-top:5px}.game-expanded .touch-controls button{padding:5px}.game-expanded .screen-overlay>.eyebrow{display:none}}
.machine-bottom>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:2px}
@media(max-width:760px){.machine-bottom{flex-wrap:wrap}.machine-bottom>div{justify-content:center}}
#player-setup{width:280px;max-width:90%;margin:0 0 16px;text-align:left}
#player-setup label{display:block;color:var(--mint);font-size:9px;letter-spacing:1px;margin-bottom:5px}
#player-name{padding:10px 12px;font-size:12px;background:#101f29ed}
#player-setup[hidden]{display:none}
@media(max-height:600px),(max-width:760px){.screen-overlay h2:not(.end-title){font-size:38px}.screen-overlay p{margin:5px 0 10px}#player-setup{margin-bottom:10px}#player-name{padding:8px 10px}.screen-overlay .micro{margin-top:8px}}
.weapon-display{display:flex;align-items:center;gap:12px;min-width:0}
canvas#weapon-preview{display:block;width:80px;height:80px;flex:0 0 80px;aspect-ratio:1;object-fit:contain;border:1px solid #566b63;background:#14272d;image-rendering:auto}
.weapon-caption{display:flex;flex-direction:column;gap:4px;line-height:1.5}
.weapon-caption small{font-size:8px;letter-spacing:1.4px;color:var(--muted)}
#weapon-label{color:var(--mint)}
@media(max-height:500px){canvas#weapon-preview{width:48px;height:48px;flex-basis:48px}.weapon-caption small{display:none}}
@media(max-width:600px){.weapon-display{flex:1}.game-expanded .machine-bottom{justify-content:space-between}.machine-bottom>div{margin-left:auto}}

#weapon-ability{font-size:10px;color:var(--cream);letter-spacing:.3px}

.audio-status{font-size:10px;color:var(--muted);padding:3px 18px 6px;line-height:1.4;flex-shrink:0}.audio-status.error{margin-top:0!important;color:var(--orange)}
/* Touch-first portrait arcade. The board uses its own 480 × 720 game world. */
.game-options{position:relative;flex-shrink:0}
.game-options>summary,.mobile-pause,.portrait-touch-label{display:none}
.option-buttons{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:3px}
.portrait-game .game-layout{padding:20px 12px 0}
.portrait-game .page-heading{margin-bottom:18px}
.portrait-game .screen{aspect-ratio:2/3}
.portrait-game canvas#game{aspect-ratio:2/3;width:100%;height:100%;object-fit:contain}
.portrait-game .hud{height:54px;padding:7px 12px;align-items:center}
.portrait-game .hud label{font-size:8px;letter-spacing:.7px}
.portrait-game .hud strong{font-size:21px;line-height:1.25}
.portrait-game .best-hud{display:none}
.portrait-game .machine-bottom,.portrait-game.game-expanded .machine-bottom{display:flex;flex-wrap:nowrap;gap:7px;padding:7px 9px;position:relative;z-index:4}
.portrait-game .weapon-display{flex:1;min-width:0;gap:8px}
.portrait-game canvas#weapon-preview{width:52px;height:52px;flex-basis:52px}
.portrait-game .weapon-caption{min-width:0;gap:1px}
.portrait-game .weapon-caption small{display:none}
.portrait-game #weapon-label{font-size:9px;line-height:1.35}
.portrait-game #weapon-ability{font-size:9px;line-height:1.35}
.portrait-game .game-options>summary{display:flex;align-items:center;justify-content:center;font-size:0;width:44px;height:44px;border:1px solid var(--line);border-radius:5px;cursor:pointer;list-style:none}
.portrait-game .game-options>summary::after{content:'⚙';font-size:22px;color:var(--mint)}
.portrait-game .game-options>summary::-webkit-details-marker{display:none}
.portrait-game .game-options[open] .option-buttons{position:absolute;bottom:54px;right:0;width:210px;display:flex;flex-direction:column;align-items:stretch;padding:10px;background:#15272d;border:1px solid #52645b;box-shadow:0 5px 30px #0008;z-index:10}
.portrait-game .option-buttons .text-button{min-height:44px;text-align:left;font-size:12px}
.portrait-game .mobile-pause{display:block;flex:0 0 44px;height:44px;border:1px solid var(--line);background:#243a3e;color:var(--mint);font-size:20px;border-radius:5px}
.portrait-game .audio-status{font-size:9px;padding:0 10px 3px;line-height:1.3}
.portrait-game.game-expanded .audio-status:not(.error){display:none}
.portrait-game .touch-controls,.portrait-game.game-expanded .touch-controls{display:flex;flex-shrink:0;gap:7px;padding:6px 9px 9px;background:#101e25}
.portrait-game .touch-controls button{min-height:56px;padding:10px;user-select:none;-webkit-user-select:none;border-radius:5px}
.portrait-game .touch-controls [data-move]{flex:0 0 50px;font-size:19px}
.portrait-game #touch-fire{flex:1;color:#162b24;background:var(--mint);border-color:#a7cd7c;font-size:11px;font-weight:bold;letter-spacing:.4px}
.portrait-game .portrait-touch-label{display:inline}
.portrait-game .desktop-touch-label{display:none}
.portrait-game .screen-overlay{padding:18px 14px}
.portrait-game .screen-overlay h2:not(.end-title){font-size:52px;letter-spacing:6px}
.portrait-game .screen-overlay p{font-size:12px;margin:10px 0 20px}
.portrait-game .screen-overlay .primary{min-height:48px;justify-content:center}
.portrait-game #player-name,.portrait-game .score-form input{font-size:16px;min-height:44px}
.portrait-game .score-form{width:100%;flex-wrap:wrap;justify-content:center}
.portrait-game .score-form input{flex:1 1 160px}
.portrait-game .screen-overlay .micro{font-size:9px;line-height:1.5}
.portrait-game #announcement{font-size:12px;top:12px;padding:0 12px}
.portrait-game.game-expanded .machine{height:100dvh;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
.portrait-game.game-expanded .screen{aspect-ratio:auto;flex:1;min-height:0}
@media(max-width:760px){input{font-size:16px}#password{font-size:16px}.login-layout{padding:28px 6vw}.access-card{box-shadow:4px 4px 0 #0b1419}.primary,.top-right .text-button{min-height:44px}}
@media(max-width:420px){aside{grid-template-columns:1fr}}
@media(max-height:650px){.portrait-game .hud{height:46px}.portrait-game .screen-overlay h2:not(.end-title){font-size:35px}.portrait-game .screen-overlay p{margin:5px 0 8px}.portrait-game .screen-overlay>.eyebrow{display:none}.portrait-game #player-setup{margin-bottom:8px}.portrait-game .touch-controls button{min-height:48px}}
.rotate-notice{display:none}
@media(orientation:landscape){.portrait-game.game-expanded .rotate-notice{position:absolute;inset:0;z-index:20;background:#102029;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:20px;gap:12px}.rotate-notice>span{font-size:40px;color:var(--mint)}.rotate-notice h2{font-size:22px}.rotate-notice p{font-size:12px;color:var(--muted)}}

/* Results stay inside the game, including fullscreen and narrow phones. */
.screen-overlay.score-view{background:#0c1b25ed;justify-content:flex-start;gap:8px;padding:18px}
.screen-overlay.score-view>.eyebrow{display:none}
.screen-overlay.score-view h2.end-title{font-size:28px;line-height:1.1;flex-shrink:0}
.screen-overlay.score-view p{font-size:12px;margin:0;flex-shrink:0;max-width:430px}
#score-results{width:min(100%,430px);flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;padding:0 4px}
.result-leaderboard{margin:0;text-align:left}
.result-leaderboard li{padding:8px 7px;min-height:32px}
.result-leaderboard .rank{min-width:21px}
.result-leaderboard .points{font-variant-numeric:tabular-nums;white-space:nowrap}
.result-leaderboard .own-score{background:#c1f51b18;color:var(--mint);border:1px solid #9dc17c;box-shadow:inset 3px 0 var(--mint)}
.screen-overlay.score-view>.primary{flex-shrink:0;min-height:44px;padding:10px 18px}
.screen-overlay.score-view>.micro{margin:0;font-size:8px;flex-shrink:0}
@media(max-height:650px){.screen-overlay.score-view{padding:10px;gap:5px}.screen-overlay.score-view h2.end-title{font-size:22px}.screen-overlay.score-view p{font-size:10px}.result-leaderboard li{padding:5px;min-height:28px}.screen-overlay.score-view>.micro{display:none}}
