:root{--bg:#14101e;--ink:#e8eef2;--dim:#8c86a6;--panel:#14101ec7;--edge:#4a2f58;--accent:#ffd25e;--hot:#ff7a2e;--team:#4d9be6;--team-light:#9fd8f5;--safe-t:env(safe-area-inset-top,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--fs:clamp(8px, 1.5vmin + 2px, 12px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:"Press Start 2P",ui-monospace,monospace;font-size:var(--fs);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none;margin:0;line-height:1.5;overflow:hidden}#app{touch-action:none;position:fixed;top:0;bottom:0;left:0;right:0}#game{image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:absolute}#hud{padding:calc(var(--safe-t) + 6px) calc(var(--safe-r) + 8px) calc(var(--safe-b) + 6px) calc(var(--safe-l) + 8px);pointer-events:none;flex-direction:column;justify-content:space-between;display:flex;position:absolute;top:0;bottom:0;left:0;right:0}#hud>*{pointer-events:auto}.panel{background:var(--panel);border:2px solid var(--edge);box-shadow:0 2px #000}small{color:var(--dim);letter-spacing:.05em;font-size:.7em;display:block}.topbar{align-items:stretch;gap:8px;display:flex}.cards{flex:1 1 0;gap:6px;min-width:0;display:flex}.duel .cards{max-width:34%}.card{flex:1 1 0;grid-template-rows:auto auto;grid-template-columns:1fr auto;gap:4px 8px;min-width:0;padding:5px 8px;transition:border-color .2s,opacity .2s;display:grid}.card .name{color:var(--cl);white-space:nowrap;text-overflow:ellipsis;grid-column:1/-1;overflow:hidden}.crown{width:16px;height:16px;image-rendering:pixelated;vertical-align:-3px;margin-right:4px}.card.right .crown{margin-right:4px}.roster .crown{margin:0}.card .hp{background:#000;border:1px solid #000;align-self:center;height:8px}.card .hp i{background:var(--c);height:100%;box-shadow:inset 0 2px 0 var(--cl);transition:width .4s steps(8,end);display:block}.card .hpnum{font-size:.8em}.card.active{border-color:var(--c);animation:1s steps(2,end) infinite pulse}.card.dead{opacity:.45}.card.offline{filter:grayscale();opacity:.55}.card.offline .name:after{content:" ?"}.card.right{text-align:right;flex:1 1 0;max-width:34%;margin-left:auto}.topbar:not(:has(.card.right)) .card{padding:4px 6px;font-size:.8em}@keyframes pulse{50%{border-color:var(--edge)}}.wind{text-align:center;white-space:nowrap;flex:0 auto;margin:0 auto;padding:5px 10px}.wind span{color:#a9bcd0;white-space:pre}.timer{text-align:center;flex:none;min-width:4.5em;padding:5px 10px}.timer span{color:var(--accent)}.timer.warn span{color:var(--hot)}.timer.urgent{border-color:var(--hot);animation:.5s steps(2,end) infinite blink}.bottombar{justify-content:center;align-items:flex-end;gap:16px;display:flex}.aimbox,.firebox{flex-direction:column;gap:4px;padding:4px;display:flex}.panel.see-through{opacity:.4;transition:opacity .2s}.wpnpick{align-items:stretch;gap:4px;display:flex}.wpncur{box-sizing:border-box;border:2px solid var(--team);background:#1f1830;flex:none;grid-template-columns:24px 1fr auto;grid-template-areas:"icon name count""icon power power";align-items:center;gap:3px 8px;width:27.5em;padding:4px 8px;font-size:.85em;display:grid}.wpncur img{image-rendering:pixelated;grid-area:icon;width:24px;height:24px}.wpncur .wname{color:var(--team-light);white-space:nowrap;text-overflow:ellipsis;grid-area:name;min-width:0;overflow:hidden}.wpncur .wcount{color:var(--accent);text-align:right;grid-area:count}.wpncur .wcount.inf{font-family:ui-monospace,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif;font-size:1.6em;line-height:1}.wpncur .wpower{grid-area:power}.wpncur .power-meter{gap:2px;margin-top:0}.wpncur .power-meter small:first-child{display:none}.wpncur .power-meter i{width:8px;height:6px}.busy .wpncur{border-color:var(--edge)}.aimbox .row{align-items:center;gap:4px;display:flex}.aimbox .val{text-align:center;min-width:5.5em}.aimbox .val span{color:var(--accent)}.hint{left:0;right:0;top:var(--ground-y,auto);text-align:center;color:var(--ink);text-shadow:2px 2px #000;font-size:.85em;animation:1.2s steps(2,end) infinite blink;position:absolute;bottom:auto;pointer-events:none!important}.hint.hidden{visibility:hidden}@keyframes blink{50%{opacity:.4}}.fuel{background:#000;border:1px solid #000;min-width:4em;height:8px;margin-top:4px}.fuel i{background:var(--accent);height:100%;transition:width .15s steps(4,end);display:block;box-shadow:inset 0 2px #fff3b0}.fuel.low i{background:var(--hot)}.btn{font:inherit;color:var(--ink);cursor:pointer;touch-action:manipulation;background:#2e2245;border:2px solid #000;min-width:44px;min-height:44px;padding:0 10px;box-shadow:inset 0 -3px #00000073,inset 0 2px #ffffff1f}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:inset 0 -1px #00000073}.btn:disabled{opacity:.4;cursor:default}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn.icon{letter-spacing:-.2em;flex:none}.btn.step{width:44px;padding:0}.btn.fire{background:var(--team);color:#14101e;min-height:52px;text-shadow:0 1px 0 var(--team-light);font-size:1.15em}.busy .btn.fire{color:var(--ink);background:#2e2245}.banner{text-align:center;text-shadow:3px 3px #000;opacity:0;font-size:1.6em;position:absolute;top:38%;left:0;right:0;pointer-events:none!important}.banner.show{animation:1.3s steps(12,end) forwards banner}@keyframes banner{0%{opacity:0;transform:scale(1.4)}15%,80%{opacity:1;transform:scale(1)}to{opacity:0}}svg.drag{opacity:0;width:100%;height:100%;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none!important}svg.drag.on{opacity:1}svg.drag line{stroke:var(--team-light);stroke-width:3px;stroke-dasharray:6 6;opacity:.7}.overlay{touch-action:pan-y;padding:calc(var(--safe-t) + 12px) calc(var(--safe-r) + 12px) calc(var(--safe-b) + 12px) calc(var(--safe-l) + 12px);z-index:10;background:#0a0810d9;flex-direction:column;align-items:center;display:flex;position:absolute;top:0;bottom:0;left:0;right:0;overflow-y:auto}.overlay.hidden{display:none}.menu{text-align:center;max-width:max(40em,620px);margin:auto 0}.menu h1{color:var(--accent);text-shadow:4px 4px #000;margin:0 0 .4em;font-size:2em;font-weight:400}.menu h1.logo{letter-spacing:.08em;color:#e8eef2;text-shadow:0 .06em 0 #a9bcd0, .08em .14em 0 var(--hot), .12em .2em 0 #000;margin-bottom:.2em;padding-left:.08em;font-size:clamp(32px,9vmin,72px)}.menu .sub{color:var(--dim);margin:0 0 1.6em}.menu .body{text-align:left;margin-bottom:1.4em;font-size:.85em;line-height:1.9}.menu .body b{color:var(--accent);font-weight:400}.menu .body .keys{color:var(--dim)}.menu .footer{color:var(--dim);margin-top:1.6em;font-size:.7em}.setup{flex-direction:column;align-items:center;gap:12px;display:flex}.setup .count{align-items:center;gap:12px;display:flex}.setup .count span{text-align:center;min-width:9em;color:var(--accent)}.setup .names{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:8px 12px;width:min(640px,92vw);display:grid}.namefield{align-items:center;gap:8px;display:flex}.namefield span{color:var(--dim);width:1.2em}.namefield input{text-transform:uppercase;min-width:0;color:var(--ink);border:2px solid var(--edge);-webkit-user-select:text;user-select:text;background:#0e0b16;border-radius:0;flex:1;padding:10px 8px;font:12px "Press Start 2P",ui-monospace,monospace}.namefield input::placeholder{color:#4a4460}.namefield input:focus::placeholder{color:#0000}.namefield input:focus{border-color:var(--accent);outline:none}.standings{max-width:22em;margin:0 auto;padding:0;list-style:none}.standings li{justify-content:space-between;gap:2em;padding:2px 0;display:flex}.menu .body .standings b{color:inherit}.menu .items{gap:8px;display:flex}.menu-btn{min-width:0}.menu-btn.half{flex:1 1 0;min-width:0}.menu .items{flex-flow:wrap;justify-content:center;width:28em;max-width:100%;margin:0 auto}.menu-btn{white-space:nowrap}.menu .items .menu-btn:not(.half){flex:1 0 100%}.roomcode{letter-spacing:.25em;color:var(--accent);text-shadow:3px 3px #000;text-align:center;margin:.2em 0 .4em;padding-left:.25em;font-size:2.6em}.roster{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:4px 8px;width:min(600px,92vw);margin:0 auto .8em;padding:0;list-style:none;display:grid}.roster li{border:2px solid var(--edge);color:var(--cl);text-align:left;background:#2e224599;grid-template-columns:2.2em 1fr auto;align-items:center;gap:8px;padding:4px 6px;display:grid}.roster li .slot{background:var(--c);color:#14101e;place-items:center;height:1.8em;display:grid}.roster li .pname{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.roster li .tags{align-items:center;gap:6px;display:flex}.roster li small{display:inline}.roster li.open{color:#4a4460;background:0 0;border-style:dashed}.roster li.open .slot{color:#4a4460;background:0 0}.lobbyinfo{text-align:center;color:var(--dim)}.lobbyinfo b{color:var(--accent)}.onlineform{flex-direction:column;gap:10px;width:min(340px,86vw);margin:0 auto;display:flex}.onlineform .namefield span{width:auto;min-width:5.5em}.error{color:var(--hot);text-align:center}.menu-btn.primary{background:var(--hot);color:#14101e}@media (orientation:portrait) and (max-width:700px){.bottombar{grid-template-columns:auto 1fr;grid-template-areas:"wpn wpn""aim fire";align-items:stretch;gap:6px;display:grid}.aimbox{grid-area:aim}.firebox{display:contents}.wpnpick{grid-area:wpn}.wpncur{flex:auto;width:auto}.btn.fire{grid-area:fire;min-height:0;font-size:1.5em}.topbar{flex-wrap:wrap}.topbar:not(:has(.card.right)) .cards{flex-wrap:wrap;flex:1 0 100%}.topbar:not(:has(.card.right)) .card{flex:1 0 30%}.topbar:not(:has(.card.right)) .wind{margin-left:0}}#rotate{display:none}@media (orientation:landscape) and (pointer:coarse) and (max-height:520px){#rotate{z-index:100;background:var(--bg);color:var(--accent);text-align:center;place-items:center;font-size:14px;line-height:2;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}}.bubble{white-space:nowrap;color:#14101e;box-shadow:0 0 0 2px var(--c), 3px 3px 0 2px #000;text-align:center;z-index:5;background:#e8eef2;border:2px solid #14101e;padding:6px 8px;font-size:.8em;line-height:1.4;animation:.25s steps(3,end) pop;position:absolute;transform:translate(-50%,-100%);pointer-events:none!important}.bubble:after{content:"";left:calc(50% + var(--tail,0px) - 4px);clip-path:polygon(0 0,100% 0,50% 100%);background:#e8eef2;border:2px solid #14101e;border-top:none;width:8px;height:6px;position:absolute;bottom:-8px}.bubble.gone{opacity:0;transition:opacity .4s steps(3,end)}@keyframes pop{0%{transform:translate(-50%,-100%)scale(.4)}to{transform:translate(-50%,-100%)scale(1)}}.bubble.pickup{color:#14101e;background:#ffd25e;animation:.25s steps(3,end) pop,2.6s steps(16,end) forwards rise;box-shadow:0 0 0 2px #14101e,3px 3px 0 2px #000}.bubble.pickup:after{display:none}@keyframes rise{to{margin-top:-28px}}.weapon-guide{gap:6px;margin:0 0 1.2em;padding:0;list-style:none;display:grid}.weapon-guide li{border:2px solid var(--edge);background:#2e224580;grid-template-columns:24px 8.5em 1fr;align-items:center;gap:10px;padding:4px 6px;display:grid}.weapon-guide img{image-rendering:pixelated}.weapon-guide .wg-name{color:var(--accent)}.weapon-guide .wg-name small{font-size:.75em;display:block}.weapon-guide .wg-desc{line-height:1.6}@media (max-width:520px){.weapon-guide li{grid-template-columns:24px 1fr}.weapon-guide .wg-desc{grid-column:1/-1}}.power-meter{white-space:nowrap;align-items:center;gap:3px;margin-top:4px;display:flex}.power-meter>*{flex-shrink:0}.power-meter small{color:var(--dim);margin-right:4px;font-size:.75em;display:inline}.power-meter small:last-child{color:var(--accent);margin:0 0 0 6px}.power-meter i{background:#2e2245;border:1px solid #000;width:10px;height:8px}.power-meter i.on{background:var(--hot);box-shadow:inset 0 2px #ffd25e}#crt{display:none}body.crt #crt{z-index:50;pointer-events:none;background:repeating-linear-gradient(#0000 0 2px,#00000047 3px),radial-gradient(#0000 60%,#0000008c 100%);border-radius:28px/22px;animation:3s steps(6,end) infinite crt-flicker;display:block;position:fixed;top:0;bottom:0;left:0;right:0;box-shadow:inset 0 0 60px #0009,0 0 0 40px #050308}body.crt #game{filter:saturate(1.25)contrast(1.08)brightness(1.06)}body.crt #hud,body.crt .overlay{text-shadow:0 0 3px #ffd25e59}@keyframes crt-flicker{0%,to{opacity:1}50%{opacity:.94}52%{opacity:1}}#boot{z-index:45;padding:calc(var(--safe-t) + 16px) calc(var(--safe-r) + 16px) calc(var(--safe-b) + 16px) calc(var(--safe-l) + 16px);background:#000;transition:opacity .2s steps(3,end);position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}#boot pre{color:#aaa;white-space:pre-wrap;word-break:break-all;margin:0;font:clamp(10px,2.4vw,16px)/1.35 "Perfect DOS VGA 437",Courier New,ui-monospace,Menlo,Consolas,monospace}#boot .cursor{animation:.5s steps(2,end) infinite blink}#boot.off{opacity:0}.menu h1.logo.intro{animation:.9s steps(12,end) both logo-drop}@keyframes logo-drop{0%{opacity:0;transform:translateY(-160%)}60%{opacity:1;transform:translateY(8%)}80%{transform:translateY(-3%)}to{transform:translateY(0)}}.menu h1.logo.rainbow{animation:1.2s steps(12,end) infinite rainbow}@keyframes rainbow{to{filter:hue-rotate(360deg)}}#boot.power{place-items:center;display:grid}.power-btn{color:#aaa;cursor:pointer;background:#111;border:2px solid #555;border-radius:0;padding:16px 20px;font:14px/1 "Press Start 2P",ui-monospace,monospace;box-shadow:inset 0 -3px #000}.power-btn:hover{color:#ddd;border-color:#777;outline:none}.power-btn:focus-visible{color:#ddd;border-color:#777;outline:none}.menu .items .menu-btn.gap{margin-top:10px}.namefield.seat{gap:6px}.btn.who{align-items:center;gap:4px;min-width:0;min-height:40px;padding:4px;display:flex}.btn.who span{place-items:center;width:30px;height:30px;display:grid}.btn.who img{width:24px;height:24px;image-rendering:pixelated;opacity:.35}.btn.who span.on{background:var(--accent)}.btn.who span.on img{opacity:1;filter:brightness(.15)}.setup .count.level span{min-width:0;color:var(--dim)}.menu .footer .coffee{color:var(--accent);border:2px solid var(--edge);background:#2e224599;align-items:center;gap:8px;margin-bottom:10px;padding:6px 10px;font-size:1.15em;text-decoration:none;display:inline-flex}.menu .footer .coffee:hover{border-color:var(--accent);outline:none}.menu .footer .coffee:focus-visible{border-color:var(--accent);outline:none}.menu .footer .coffee img{width:16px;height:16px;image-rendering:pixelated}
