@font-face{font-family:Orbitron Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(./orbitron-latin-wght-normal-Du7j2Vp2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--accent-3:#3fd46b;--accent-4:#ffd23f;--fg:#e8ecff;--fg-dim:#9aa4c7;--panel:#080c1cd1;--panel-border:#7896e659;--accent:#3fa9ff;--accent-2:#ff4d5e;--focus:#7fd0ff;--font-display:"Orbitron Variable", system-ui, sans-serif;--font-body:system-ui, -apple-system, "Segoe UI", sans-serif}*,:before,:after{box-sizing:border-box}html,body{height:100%;color:var(--fg);font-family:var(--font-body);background:#000;margin:0;overflow:hidden}#app{width:100%;height:100%;position:relative}#game-container{position:absolute;inset:0}#ui-root{pointer-events:none;position:absolute;inset:0}.screen{pointer-events:auto;background:radial-gradient(#00000040,#000000b3);place-items:center;padding:1rem;display:grid;position:absolute;inset:0;overflow:auto}.screen[hidden]{display:none}.panel{border:1px solid var(--panel-border);background:var(--panel);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:center;border-radius:14px;width:min(28rem,100%);padding:clamp(1.25rem,4vw,2.5rem);box-shadow:0 0 60px #3fa9ff1f}.panel-wide{width:min(56rem,100%)}.title{font-family:var(--font-display);letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(90deg, var(--accent), var(--fg) 50%, var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 .25rem;font-size:clamp(1.4rem,4vw,2.2rem);font-weight:800}.subtitle{color:var(--fg-dim);letter-spacing:.06em;margin:0 0 1.5rem}.menu-list{gap:.6rem;margin-top:1.25rem;display:grid}.btn{border:1px solid var(--panel-border);color:var(--fg);font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;background:#ffffff0a;border-radius:8px;padding:.8rem 1.2rem;font-size:1rem;font-weight:600;transition:background .12s,border-color .12s,transform .12s}.btn:hover,.btn:focus-visible,.btn:focus{border-color:var(--focus);background:#3fa9ff2e;outline:none;transform:translate(3px)}.btn:disabled{opacity:.4;cursor:default;transform:none}.menu-hint{min-height:1.4em;color:var(--fg-dim);margin:1rem 0 0;font-size:.9rem}.nav-help{color:var(--fg-dim);opacity:.8;margin:1rem 0 0;font-size:.8rem}kbd{border:1px solid var(--panel-border);text-align:center;background:#ffffff0f;border-radius:4px;min-width:1.6em;margin:0 .15em;padding:.1em .4em;font-family:inherit;display:inline-block}.page-text{color:var(--fg-dim);line-height:1.6}@media (prefers-reduced-motion:reduce){.btn{transition:none}.btn:hover,.btn:focus{transform:none}}.main-menu .title{font-size:clamp(2rem,6vw,3.2rem)}.map-preview-box{justify-items:center;gap:.5rem;display:grid}.map-preview{aspect-ratio:1;border:1px solid var(--panel-border);border-radius:12px;width:min(180px,50vw);box-shadow:0 0 30px #3fa9ff26}.map-info{color:var(--fg-dim);margin:0;font-size:.85rem}.match-hud{pointer-events:none;font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:1fr 1fr;font-size:clamp(.7rem,1.4vw,.95rem);display:grid;position:absolute;inset:0 0 auto}.match-hud.solo{grid-template-columns:1fr}.hud-panel{text-shadow:0 1px 3px #000;flex-wrap:wrap;align-items:baseline;gap:.4rem 1.2rem;padding:.6rem .9rem;display:flex}.hud-name{font-weight:800}.hud-lives{letter-spacing:.15em}.hud-blue .hud-name,.hud-blue .hud-lives{color:var(--accent)}.hud-red .hud-name,.hud-red .hud-lives{color:var(--accent-2)}.hud-green .hud-name,.hud-green .hud-lives,.stats-table .row-green th,.stats-table th.p-green{color:var(--accent-3)}.hud-yellow .hud-name,.hud-yellow .hud-lives,.stats-table .row-yellow th,.stats-table th.p-yellow{color:var(--accent-4)}.kb-key.p-green{border-color:var(--accent-3);color:#fff;background:#3fd46b59}.kb-key.p-yellow{border-color:var(--accent-4);color:#fff;background:#ffd23f59}.match-hud.quad{grid-template-rows:1fr 1fr;align-items:start;inset:0}.hud-stat{color:var(--fg-dim)}.hud-value{color:var(--fg);font-weight:700}.hud-value.empty{color:var(--fg-dim);opacity:.6}.stats-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin:.5rem 0}.stats-table th,.stats-table td{border-bottom:1px solid var(--panel-border);padding:.45rem .6rem}.stats-table thead th{color:var(--fg-dim);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:600}.stats-table tbody th{font-family:var(--font-display);text-align:left}.stats-table .row-blue th{color:var(--accent)}.stats-table .row-red th{color:var(--accent-2)}.help{text-align:left;gap:1.25rem;display:grid}.kb{justify-content:center;align-items:flex-end;gap:.75rem;font-size:clamp(.5rem,1.1vw,.75rem);display:flex}.kb-main{flex:auto;max-width:42rem}.kb-row{gap:.25em;margin-bottom:.25em;display:flex}.kb-main .kb-row:first-child{margin-bottom:.9em}.kb-arrows{width:7.5em;display:grid}.kb-gap{flex:1 1 0}.kb-key{min-width:0;height:2.4em;color:var(--fg-dim);white-space:nowrap;background:#ffffff0a;border:1px solid #ffffff1f;border-radius:.35em;flex:1 1 0;place-items:center;padding:0 .2em;display:grid;overflow:hidden}.kb-key.p-blue{border-color:var(--accent);color:#fff;background:#3fa9ff59;font-weight:700}.kb-key.p-red{border-color:var(--accent-2);color:#fff;background:#ff4d5e59;font-weight:700}.kb-key.p-system{border-color:var(--fg-dim);color:#fff;background:#ffffff24}.stats-table th.p-blue{color:var(--accent)}.stats-table th.p-red{color:var(--accent-2)}.bindings-table td,.bindings-table th{text-align:left}.dim{color:var(--fg-dim)}.how-to h2{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem;font-size:1rem}.how-to ul{color:var(--fg-dim);margin:0;padding-left:1.2rem;line-height:1.6}.how-to .power-up-list{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:.5rem 1rem;margin-top:.75rem;padding:0;list-style:none;display:grid}.power-up-list li{grid-template-columns:2rem 1fr;align-items:center;column-gap:.6rem;line-height:1.35;display:grid}.power-up-list img{grid-row:span 2}.power-up-list strong{color:var(--fg)}.settings{text-align:left;gap:1.25rem;display:grid}.settings-section{gap:.6rem;display:grid}.settings-section h2{font-family:var(--font-display);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:1rem}.setting-row{grid-template-columns:6rem 1fr 3.5rem;align-items:center;gap:.75rem;display:grid}.setting-row input[type=range]{accent-color:var(--accent)}.setting-row input[type=range]:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.setting-value{text-align:right;font-variant-numeric:tabular-nums}.btn-small{justify-self:start;padding:.5rem .9rem;font-size:.8rem}.btn-toggle{text-align:left;text-transform:none;letter-spacing:.04em;justify-content:space-between;gap:1rem;display:flex}.btn-toggle[aria-pressed=true] .toggle-state{color:var(--accent)}.btn-key{width:100%;font-family:var(--font-body);text-transform:none;letter-spacing:0;padding:.4rem .6rem;font-size:.9rem}.btn-key.capturing{border-color:var(--accent-2);background:#ff4d5e33}.custom-rules .btn-toggle{align-items:center}.custom-rules .btn-toggle strong{font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;display:block}.custom-rules .btn-toggle small{color:var(--fg-dim);font-family:var(--font-body);letter-spacing:0;text-transform:none;margin-top:.2rem;font-size:.85rem;font-weight:400;display:block}.option-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.option-body{gap:.6rem;display:grid}.option-body[hidden]{display:none}.setting-row.option-row{grid-template-columns:minmax(8rem,14rem) 1fr 5.5rem}.option-row:has(input:disabled){opacity:.45}.option-hint{color:var(--fg-dim);grid-column:1/-1;margin-top:-.4rem;font-size:.85rem}.option-types{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:.5rem;display:grid}.btn-toggle:disabled{opacity:.45}.btn-start{border-color:var(--accent)}.hud-gauge{color:var(--fg-dim);align-items:center;gap:.4rem;display:inline-flex}.hud-gauge-bar{background:#0006;border:1px solid #ffffff40;border-radius:999px;width:clamp(3rem,7vw,6rem);height:.45rem;overflow:hidden}.hud-gauge-fill{background:var(--fg);height:100%;transition:width .12s linear;display:block}.hud-gauge-hull .hud-gauge-fill{background:#58d68d}.hud-gauge-fuel .hud-gauge-fill{background:#f4c542}.hud-gauge-fill.low{background:var(--accent-2)}.hud-gauge-laser .hud-gauge-fill{background:#62e0ff;transition:width 60ms linear}.hud-gauge-laser .hud-gauge-fill.hot{background:#f4c542}.hud-gauge-laser .hud-gauge-fill.overheated{background:var(--accent-2);animation:.4s steps(2,jump-none) infinite hud-blink}@keyframes hud-blink{50%{opacity:.25}}body[data-reduced-motion=true] .hud-gauge-laser .hud-gauge-fill.overheated{animation:none}.hud-powers{flex-wrap:wrap;gap:.35rem;display:inline-flex}.hud-powers:empty{display:none}.hud-chip{letter-spacing:.06em;text-transform:uppercase;background:#00000073;border:1px solid;border-radius:999px;padding:.05rem .45rem;font-size:.8em}.hud-chip b{font-variant-numeric:tabular-nums}.hud-chip-tripleLaser{color:#ff9a6b}.hud-chip-warp{color:#c9a8ff}.hud-chip-shield{color:#7fe3a8}.hud-chip-homing{color:#ff7a87}.hud-chip-frozen{color:#9fe8ff}.highscore-table tbody th{text-align:left}.highscore-table tr.highlight td,.highscore-table tr.highlight th{color:#fff;background:#3fa9ff2e}.name-entry{text-align:left;gap:.5rem;margin-top:1rem;display:grid}.name-entry label{color:var(--accent);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase}.name-entry input{border:1px solid var(--panel-border);color:var(--fg);font:inherit;background:#ffffff0f;border-radius:8px;padding:.6rem .8rem;font-size:1.1rem}.name-entry input:focus{outline:2px solid var(--focus);outline-offset:1px}.field{text-align:left;gap:.4rem;margin:.5rem 0 1rem;display:grid}.field label{color:var(--fg-dim);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;font-size:.8rem}.field input{border:1px solid var(--panel-border);color:var(--fg);font:inherit;background:#ffffff0f;border-radius:8px;padding:.55rem .8rem;font-size:1.05rem}.field input:focus{outline:2px solid var(--focus);outline-offset:1px}.join-room .field input{font-family:var(--font-display);letter-spacing:.4em;text-align:center;text-transform:uppercase;font-size:1.6rem}.room-code{color:var(--accent);font-family:var(--font-display);letter-spacing:.35em;text-align:center;margin:.5rem 0;font-size:clamp(2.2rem,7vw,3.4rem)}.invite-link,.online-text{color:var(--fg-dim);text-align:center;overflow-wrap:anywhere;-webkit-user-select:all;user-select:all}.online-text{-webkit-user-select:text;user-select:text;max-width:32rem}.online-status{color:var(--fg-dim);font-family:var(--font-display);letter-spacing:.06em;pointer-events:none;white-space:nowrap;background:#0000008c;border-radius:999px;padding:.3rem .8rem;font-size:.75rem;position:absolute;bottom:.6rem;left:50%;transform:translate(-50%)}.online-status:not([data-status=playing]){color:#ffd479;font-size:.95rem}.map-editor-screen .panel{max-width:min(1100px,100%)}.map-editor{text-align:left;gap:.7rem;display:grid}.editor-toolbar,.editor-tools,.editor-actions{flex-wrap:wrap;align-items:end;gap:.5rem .8rem;display:flex}.editor-field{color:var(--fg-dim);gap:.2rem;font-size:.8rem;display:grid}.editor-field input,.editor-field select{border:1px solid var(--panel-border);min-width:5.5rem;color:var(--fg);font:inherit;background:#ffffff0f;border-radius:6px;padding:.35rem .5rem;font-size:.95rem}.editor-toolbar #map-name{min-width:14rem}.editor-main{grid-template-columns:minmax(0,1fr) 14rem;align-items:start;gap:.8rem;display:grid}@media (max-width:760px){.editor-main{grid-template-columns:1fr}}.editor-canvas{aspect-ratio:1;touch-action:none;cursor:grab;border-radius:8px;width:min(100%,62vh)}.editor-canvas:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.editor-panel{gap:.5rem;display:grid}.editor-panel h2{margin:0;font-size:1rem}.editor-tools .btn[aria-pressed=true]{border-color:var(--focus);color:#fff}.editor-problems{color:#ffd479;border:1px solid #ffb45073;border-radius:8px;margin:0;padding:.5rem .5rem .5rem 1.6rem;font-size:.9rem}.replay-list{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.replay-row{border:1px solid var(--panel-border);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.5rem .7rem;display:flex}.replay-info{text-align:left;flex:14rem;gap:.15rem;display:grid}.replay-info span{color:var(--fg-dim);font-size:.85rem}.replay-file{display:none}.replay-bar{color:var(--fg);font-family:var(--font-display);letter-spacing:.05em;pointer-events:none;white-space:nowrap;background:#0009;border-radius:999px;padding:.35rem .9rem;font-size:.75rem;position:absolute;bottom:.6rem;left:50%;transform:translate(-50%)}.touch-controls{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;position:absolute;inset:0}.touch-pad{bottom:max(1rem, env(safe-area-inset-bottom));pointer-events:none;gap:.7rem;display:grid;position:absolute}.touch-pad-left{left:max(1rem, env(safe-area-inset-left));grid-template-columns:repeat(2,auto);grid-template-areas:".thrust""left right"}.touch-pad-right{right:max(1rem, env(safe-area-inset-right));grid-template-columns:repeat(2,auto);align-items:end}.touch-btn,.touch-pause{pointer-events:auto;touch-action:none;color:#ffffffbf;font-family:var(--font-display);-webkit-tap-highlight-color:transparent;background:#ffffff1a;border:2px solid #ffffff4d;border-radius:50%;font-size:1.4rem}.touch-btn{width:clamp(3.6rem,13vmin,5.5rem);height:clamp(3.6rem,13vmin,5.5rem)}.touch-btn.held{border-color:var(--focus);color:#fff;background:#7fd0ff59}.touch-thrust{grid-area:thrust}.touch-btn.touch-left{grid-area:left}.touch-btn.touch-right{grid-area:right}.touch-btn.touch-fireLaser{border-color:#3fa9ff99;width:clamp(4.4rem,17vmin,7rem);height:clamp(4.4rem,17vmin,7rem)}.touch-pause{top:calc(max(.5rem, env(safe-area-inset-top)) + 4.5rem);right:max(1rem, env(safe-area-inset-right));width:2.6rem;height:2.6rem;font-size:.9rem;position:absolute}.touch-back{display:none}body[data-coarse=true] .touch-back{border:1px solid var(--panel-border);color:var(--fg-dim);font:inherit;background:0 0;border-radius:8px;margin:-.25rem 0 .5rem;padding:.4rem .8rem;display:block}body[data-reduced-motion=true] .btn{transition:none}body[data-reduced-motion=true] .btn:hover,body[data-reduced-motion=true] .btn:focus{transform:none}
