:root{--night: #060a09;--moss: #0e1512;--bark: #232821;--bone: #d6d2c4;--dim: #7c8078;--signal: #d94f2b;--lamp: #f2d9a0;--danger: #8c2f22;--ok: #6f8a5a;--sans: "Anton", "Arial Narrow", Impact, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--night);color:var(--bone);font-family:var(--mono);font-size:16px;line-height:1.55;-webkit-font-smoothing:antialiased;overscroll-behavior:none}#app{position:relative;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100dvh;overflow:hidden;background:var(--night)}#scene,#fx{position:absolute;inset:0;display:block;width:100%;height:100%}#fx{pointer-events:none;z-index:5}.screen{position:absolute;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem;overflow-y:auto;background:radial-gradient(140% 100% at 50% -10%,rgba(217,79,43,.06),transparent 55%),var(--night)}.screen[hidden]{display:none}.sheet{width:min(58ch,100%);display:flex;flex-direction:column;gap:1.05rem}.stamp{margin:0;font-size:.66rem;letter-spacing:.24em;text-transform:uppercase;color:var(--signal)}.wordmark{margin:0;font-family:var(--sans);font-size:clamp(3.4rem,13vw,7rem);line-height:.82;letter-spacing:.005em;text-transform:uppercase;color:var(--bone)}.wordmark em{font-style:normal;-webkit-text-stroke:1.5px var(--bone);color:transparent}.headline{margin:0;font-family:var(--sans);font-size:clamp(1.9rem,6vw,3rem);line-height:.95;letter-spacing:.01em;text-transform:uppercase;color:var(--bone)}.headline em{font-style:normal;color:var(--signal);letter-spacing:.12em}.rule{height:1px;border:0;margin:0;background:linear-gradient(90deg,var(--bark),transparent)}.brief{margin:0;font-size:.92rem;color:var(--bone);max-width:60ch}.brief.dim{color:var(--dim)}.brief strong{color:var(--signal);font-weight:600}.note{margin:0;font-size:.72rem;color:var(--dim)}.field{display:flex;flex-direction:column;gap:.35rem}.field span{font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}.field input,.join input{font-family:var(--mono);font-size:.95rem;color:var(--bone);background:var(--moss);border:1px solid var(--bark);padding:.6rem .8rem;width:100%}.field input:focus,.join input:focus{outline:2px solid var(--signal);outline-offset:-1px}.beastPicker{display:flex;flex-direction:column;gap:.4rem;margin:0;padding:.7rem .8rem .8rem;border:1px solid var(--bark);background:var(--moss)}.beastPicker legend{padding:0 .3rem;font-size:.64rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}.beastToggle{display:flex;align-items:center;gap:.55rem;font-family:var(--sans);font-size:.85rem;color:var(--bone);cursor:pointer;user-select:none}.beastToggle input{appearance:none;width:1.1rem;height:1.1rem;flex:none;border:1px solid var(--bark);background:var(--night);cursor:pointer;display:grid;place-content:center}.beastToggle input:before{content:"";width:.6rem;height:.6rem;background:var(--signal);transform:scale(0);transition:transform 90ms ease}.beastToggle input:checked:before{transform:scale(1)}.beastToggle input:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.beastToggle input:not(:checked)+span{color:var(--dim)}.actions{display:flex;flex-wrap:wrap;gap:.6rem}.btn{font-family:var(--sans);font-size:.95rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bone);background:var(--moss);border:1px solid var(--bark);padding:.7rem 1.5rem;cursor:pointer;transition:background .13s ease,color .13s ease,border-color .13s ease}.btn:hover{border-color:var(--dim)}.btn:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.btn[disabled]{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--signal);border-color:var(--signal);color:var(--night)}.btn-primary:hover{background:#e8623d;border-color:#e8623d}.btn-ghost{background:transparent}.join{display:flex;gap:.6rem}.join input{text-transform:uppercase;letter-spacing:.42em;max-width:12ch;text-align:center}.roster{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.roster li{display:flex;align-items:center;gap:.7rem;padding:.5rem .75rem;background:var(--moss);border-left:2px solid var(--bark);font-size:.85rem}.roster li.ready{border-left-color:var(--ok)}.roster li.me b{color:var(--signal)}.roster li b{font-weight:600}.roster li span{margin-left:auto;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.roster li.ready span{color:var(--ok)}.hud{position:absolute;inset:0;z-index:10;pointer-events:none;font-size:.78rem}.hud[hidden]{display:none}.hud-tl,.hud-bl,.hud-br{position:absolute;display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.15rem}.hud-tl{top:0;left:0}.hud-bl{bottom:0;left:0}.hud-br{bottom:0;right:0;align-items:flex-end;gap:3px}.beacons{display:flex;gap:4px}.beacons i{width:17px;height:6px;background:#d6d2c424;border:1px solid var(--bark);font-style:normal;transition:background .26s ease,box-shadow .26s ease}.beacons i.on{background:var(--signal);border-color:var(--signal);box-shadow:0 0 10px #d94f2ba6}.objective{font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);text-shadow:0 1px 8px rgba(6,10,9,.9)}.meter{display:flex;flex-direction:column;gap:3px}.meter-label{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--dim)}.bar{width:150px;height:7px;border:1px solid var(--bark);background:#060a09b3;padding:1px}.bar-thin{height:5px}.bar i{display:block;height:100%;width:100%;background:var(--lamp);transition:width .14s linear}#staminaFill{background:var(--ok)}.meter.low #batteryFill,.meter.low #staminaFill{background:var(--danger)}.meter.mid #noiseFill{background:var(--lamp)}.meter.loud #noiseFill{background:var(--signal);box-shadow:0 0 8px #d94f2bb3}.hidden-tag{position:absolute;left:1.15rem;bottom:5.4rem;margin:0;font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--sick);text-shadow:0 1px 8px rgba(6,10,9,.9)}.hidden-tag[hidden]{display:none}.meter.rush #staminaFill{background:var(--signal);box-shadow:0 0 8px #d94f2bcc}.meter.rush .meter-label{color:var(--signal)}.squad-row{display:flex;align-items:center;gap:.45rem;font-size:.72rem;color:var(--dim);text-shadow:0 1px 8px rgba(6,10,9,.9)}.squad-row b{color:var(--bone);font-weight:400}.squad-row u{width:7px;height:7px;text-decoration:none;background:var(--ok)}.squad-row.down u{background:var(--signal)}.squad-row.down b{color:var(--signal)}.squad-row.dead u{background:var(--bark)}.squad-row.dead b{color:var(--bark);text-decoration:line-through}.crosshair{position:absolute;left:50%;top:50%;width:3px;height:3px;margin:-1.5px 0 0 -1.5px;background:#d6d2c466;border-radius:50%}.subtitle{position:absolute;left:50%;bottom:4.5rem;transform:translate(-50%);margin:0;max-width:min(52ch,88vw);text-align:center;font-size:.82rem;color:var(--bone);text-shadow:0 2px 14px rgba(6,10,9,.95);opacity:0;transition:opacity .4s ease}.subtitle.show{opacity:1}.prompt{position:absolute;left:50%;top:56%;transform:translate(-50%);display:flex;align-items:center;gap:.55rem;font-size:.8rem;color:var(--bone);text-shadow:0 2px 10px rgba(6,10,9,.95)}.prompt[hidden]{display:none}.prompt b{font-family:var(--sans);font-size:.78rem;letter-spacing:.1em;padding:.2rem .55rem;border:1px solid var(--dim);color:var(--lamp)}.timer{position:absolute;left:50%;top:1.1rem;transform:translate(-50%);display:flex;align-items:baseline;gap:.6rem;padding:.4rem 1rem;border:1px solid var(--signal);background:#060a09b3}.timer[hidden]{display:none}.timer span{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--signal)}.timer b{font-family:var(--sans);font-size:1.15rem;letter-spacing:.06em;font-variant-numeric:tabular-nums}.downed{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;background:radial-gradient(70% 60% at 50% 50%,transparent 20%,rgba(140,47,34,.32) 100%)}.downed[hidden]{display:none}.downed-title{margin:0;font-family:var(--sans);font-size:2rem;text-transform:uppercase;color:var(--signal)}.downed-sub{margin:0;font-size:.82rem;color:var(--bone)}.mapWrap{position:absolute;inset:0;z-index:30;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;background:var(--night)}.mapWrap[hidden]{display:none}#mapCanvas{width:min(84vh,92vw);height:min(84vh,92vw);border:1px solid var(--bark);background:#0b100d}.mapNote{margin:0;font-size:.68rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}.mapNote b{color:var(--lamp)}.mapClose{position:absolute;top:calc(1rem + env(safe-area-inset-top));right:calc(1rem + env(safe-area-inset-right));min-width:96px;min-height:48px;font-family:var(--sans);font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:var(--night);background:var(--signal);border:1px solid var(--signal);cursor:pointer}.mapClose:active{background:#e8623d}.mapClose:focus-visible{outline:2px solid var(--bone);outline-offset:3px}.settingsBtn{position:absolute;top:calc(.7rem + env(safe-area-inset-top));right:calc(.7rem + env(safe-area-inset-right));z-index:25;min-width:72px;min-height:38px;font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);background:#0e1512b8;border:1px solid var(--bark);cursor:pointer}.settingsBtn[hidden]{display:none}.settingsBtn:active{color:var(--bone);border-color:var(--dim)}.settingsPanel{position:absolute;top:calc(2.7rem + env(safe-area-inset-top));right:calc(.7rem + env(safe-area-inset-right));z-index:26;width:min(280px,78vw);max-height:min(74vh,560px);overflow-y:auto;display:flex;flex-direction:column;gap:.6rem;padding:.85rem .9rem;background:#0b100deb;border:1px solid var(--bark);backdrop-filter:blur(2px)}.settingsPanel[hidden]{display:none}.settingsHead{display:flex;align-items:center;justify-content:space-between;font-family:var(--sans);letter-spacing:.08em;text-transform:uppercase;font-size:.85rem;color:var(--bone)}.settingsClose{min-width:32px;min-height:32px;font-size:1rem;line-height:1;color:var(--dim);background:transparent;border:1px solid var(--bark);cursor:pointer}.settingsClose:active{color:var(--bone)}.settingsRow{display:flex;flex-direction:column;gap:.3rem;font-size:.72rem;letter-spacing:.03em;color:var(--bone)}.settingsRow span{display:flex;justify-content:space-between;color:var(--dim)}.settingsRow span b{color:var(--lamp);font-weight:400}.settingsRow input[type=range]{width:100%;accent-color:var(--signal)}.settingsCheck{flex-direction:row;align-items:center;justify-content:space-between}.settingsCheck input[type=checkbox]{accent-color:var(--signal);width:18px;height:18px}.settingsHint{margin:-.3rem 0 0;font-size:.62rem;color:var(--dim)}.settingsSub{margin:0;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}.settingsRule{border:none;border-top:1px solid var(--bark);margin:.1rem 0}.fpsBadge{position:absolute;top:calc(.7rem + env(safe-area-inset-top));left:calc(.7rem + env(safe-area-inset-left));z-index:20;margin:0;padding:.15rem .4rem;font-size:.68rem;letter-spacing:.08em;color:var(--ok);background:#060a098c;pointer-events:none}.fpsBadge[hidden]{display:none}.fpsBadge.warn{color:var(--signal)}.touch{position:absolute;inset:0;z-index:15;pointer-events:none}.touch[hidden]{display:none}.stick-zone{position:absolute;left:0;bottom:0;width:46%;height:72%;pointer-events:auto}.stick{position:absolute;left:calc(15vw + 24px + env(safe-area-inset-left));bottom:calc(11vh + 64px + env(safe-area-inset-bottom));width:132px;height:132px;border:1px solid var(--bark);border-radius:50%;background:#0e151252;opacity:.45;transition:opacity .16s ease;pointer-events:none}.stick.active{opacity:1;background:#0e151280}.stick b{position:absolute;left:50%;top:50%;width:58px;height:58px;margin:-29px 0 0 -29px;transition:transform 60ms linear;border-radius:50%;background:#d6d2c43d;border:1px solid var(--dim)}.stick.active b{background:#f2d9a057;border-color:var(--lamp)}.pads{position:absolute;right:calc(3vw + env(safe-area-inset-right));bottom:calc(4vh + env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(2,86px);gap:9px;pointer-events:auto}.pads button{height:54px;padding:0 .5rem;font-family:var(--sans);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--bone);background:#0e15129e;border:1px solid var(--bark);border-radius:3px;cursor:pointer;-webkit-tap-highlight-color:transparent}.pads button[data-act=use]{border-color:var(--signal);color:var(--lamp);font-size:.76rem}.pads button:active{background:#d94f2b57;border-color:var(--signal)}.pads button[data-act=use].ready{background:var(--signal);border-color:var(--signal);color:var(--night);box-shadow:0 0 14px #d94f2b99}.pads button.held{background:#d94f2b4d;border-color:var(--signal)}.pads button:focus-visible{outline:2px solid var(--bone);outline-offset:2px}@media(max-height:460px){.pads button{height:44px;font-size:.58rem}.stick{width:104px;height:104px;left:calc(12vw + 20px + env(safe-area-inset-left));bottom:calc(9vh + 40px + env(safe-area-inset-bottom))}}.screen-end .headline{color:var(--danger)}.screen-end.won .headline{color:var(--ok)}.btn-report{margin-top:.9rem;width:100%;font-size:.78rem;letter-spacing:.08em}.screen-end .note{margin-top:.4rem;text-align:center}.loadBar{height:6px;background:var(--moss);border:1px solid var(--bark);overflow:hidden}.loadBar i{display:block;height:100%;width:0%;background:var(--signal);transition:width .16s ease}@media(max-width:640px){.bar{width:104px}.hud-tl,.hud-bl,.hud-br{padding:.7rem .8rem}.hud-bl,.hud-br{bottom:auto;top:3.4rem}.subtitle{bottom:auto;top:30%}.prompt{top:46%}.hidden-tag{bottom:auto;top:8.4rem;left:.9rem}#mapCanvas{width:min(78vh,94vw);height:min(78vh,94vw)}}@media(prefers-reduced-motion:reduce){.subtitle,.bar i,.beacons i,.btn{transition-duration:1ms}}
