:root{color:#f2efe8;background:#0f1318;font-family:Space Grotesk,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%}#app{display:grid;grid-template-columns:320px 1fr}#app.player-mode{grid-template-columns:1fr}#app.player-mode .panel{display:none}.join-screen{position:absolute;inset:0;z-index:20;display:grid;place-content:center;justify-items:center;gap:12px;background:#080b0f8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.bake{width:min(320px,calc(100vw - 32px));text-align:center}.bake[hidden]{display:none}.bake-bar{height:8px;border-radius:4px;background:#1a232d;overflow:hidden}.bake-fill{width:0;height:100%;background:linear-gradient(90deg,#d93600,#ffb347);transition:width .4s ease}.join-status{color:#ffb4a8;min-height:1.2em}.join-screen[hidden]{display:none}.join-screen h1{margin:0 0 8px;font-size:2.4rem;letter-spacing:.02em}.join-screen input{width:min(320px,calc(100vw - 32px));padding:12px 14px;border-radius:8px;border:1px solid #37475a;background:#1a232d;color:#f2efe8;font-size:1.1rem;text-align:center}.report{position:absolute;left:12px;bottom:12px;z-index:10;max-width:260px;padding:6px 10px;border-radius:8px;background:#0c1218b3}.report select,.report input,.report button{width:100%;padding:6px 8px;border-radius:6px;border:1px solid #37475a;background:#1a232d;color:#f2efe8}.scoreboard-overlay{position:absolute;top:50%;left:50%;z-index:15;width:min(420px,calc(100vw - 32px));transform:translate(-50%,-50%);padding:16px;border-radius:10px;background:#0a0e14e0;display:none}.scoreboard-overlay.show{display:block}.panel{background:linear-gradient(180deg,#141a20,#0d1116);border-right:1px solid #25303c;padding:16px;overflow:auto}.panel h1{margin:0 0 10px;font-size:1.25rem}.panel h2{margin:14px 0 8px;font-size:.95rem}.panel button,.panel input{width:100%;margin-bottom:8px;padding:10px;border-radius:8px;border:1px solid #37475a;background:#1a232d;color:#f2efe8}.panel button{cursor:pointer}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.report summary{cursor:pointer;color:#9fb3c8;font-size:.82rem}.report[open]{display:grid;gap:6px}.room{padding:8px;border:1px solid #2e3a46;border-radius:8px;margin-bottom:8px}.stat{margin:4px 0;color:#9fb3c8;font-size:.88rem}.score-row{display:grid;grid-template-columns:1fr auto auto;gap:8px;margin-bottom:4px;font-size:.86rem}.viewport{position:relative;overflow:hidden}.scene-canvas{position:absolute;inset:0;z-index:1}.beam-layer{position:absolute;inset:0;pointer-events:none;z-index:3}.vfx-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2}.dom-beam{--beam-core: 255, 102, 255;--beam-glow: 197, 107, 255;position:absolute;height:var(--beam-width, 8px);border-radius:999px;background:linear-gradient(90deg,rgba(var(--beam-glow),.35),rgba(var(--beam-core),1) 55%,#ffdcff);transform-origin:0 50%;box-shadow:0 0 14px rgba(var(--beam-glow),1),0 0 28px rgba(var(--beam-glow),.9);mix-blend-mode:screen}.dom-impact{position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#ffb4ff,#e170fff2 45%,#b866ff00 75%);box-shadow:0 0 18px #e980ff;mix-blend-mode:screen}.hud{position:absolute;top:12px;left:12px;background:#0a0e129e;border:1px solid #2d3946;border-radius:8px;padding:8px 10px;font-size:.86rem;z-index:4}.player-hud{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;gap:14px;background:#080c12b8;border:1px solid #2a3642;border-radius:10px;padding:8px 12px;z-index:4}.player-hud-item{display:flex;gap:8px;align-items:center;font-size:.82rem}.player-hud .label{color:#91a6bc}.player-hud .value{color:#e5f2ff;font-weight:700}.player-hud.critical{border-color:#8a3030;box-shadow:0 0 10px #b43e3e59}.player-hud.critical .value{color:#ffacac}.crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:26px;font-weight:700;color:#e7f5ff;text-shadow:0 0 8px rgba(170,220,255,.7);pointer-events:none;-webkit-user-select:none;user-select:none;transition:transform 80ms ease,color 80ms ease,text-shadow 80ms ease;z-index:4}.crosshair.ready{color:#b9ffde;text-shadow:0 0 10px rgba(114,255,187,.85)}.scope{position:absolute;inset:0;pointer-events:none;z-index:4;background:radial-gradient(circle at center,transparent 0,transparent min(38vh,38vw),rgba(0,0,0,.92) calc(min(38vh,38vw) + 2px))}.scope[hidden]{display:none}.scope-reticle{position:absolute;inset:0;background:linear-gradient(90deg,transparent calc(50% - 2px),rgba(255,255,255,.6) calc(50% - 2px) calc(50% - 1px),#000 calc(50% - 1px) calc(50% + 1px),rgba(255,255,255,.6) calc(50% + 1px) calc(50% + 2px),transparent calc(50% + 2px)) center / 100% calc(min(38vh,38vw)*2) no-repeat,linear-gradient(180deg,transparent calc(50% - 2px),rgba(255,255,255,.6) calc(50% - 2px) calc(50% - 1px),#000 calc(50% - 1px) calc(50% + 1px),rgba(255,255,255,.6) calc(50% + 1px) calc(50% + 2px),transparent calc(50% + 2px)) center / calc(min(38vh,38vw)*2) 100% no-repeat;-webkit-mask:radial-gradient(circle at center,transparent 0 12px,#000 13px);mask:radial-gradient(circle at center,transparent 0 12px,#000 13px)}.scope:after{content:"";position:absolute;top:50%;left:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:#ff2b2b;box-shadow:0 0 0 1.5px #000000d9,0 0 8px #ff2b2bf2}.scope-zoom{position:absolute;bottom:calc(50% - min(38vh,38vw) + 18px);left:50%;transform:translate(-50%);font:600 13px/1 system-ui,sans-serif;letter-spacing:.08em;color:#e7f5ffbf}.crosshair.blocked{opacity:.4}.blocked-marker{position:absolute;width:14px;height:14px;margin:-9px 0 0 -9px;border:2px solid #ff6b6b;border-radius:50%;box-shadow:0 0 0 1px #0000008c,inset 0 0 0 1px #0000008c;pointer-events:none;z-index:4}.blocked-marker:after{content:"";position:absolute;left:50%;top:-1px;width:2px;height:16px;margin-left:-1px;background:#ff6b6b;transform:rotate(45deg)}.blocked-marker[hidden]{display:none}.crosshair.shot{transform:translate(-50%,-50%) scale(1.25);color:#ff7cff;text-shadow:0 0 14px rgba(203,120,255,.95)}.hitmarker{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:34px;font-weight:700;color:#d9f0ff;opacity:0;transition:opacity 70ms ease;pointer-events:none;text-shadow:0 0 12px rgba(184,226,255,.9);z-index:5}.hitmarker.active{opacity:1}.killfeed{position:absolute;top:12px;right:12px;width:min(340px,40vw);display:grid;gap:6px;z-index:4}.killfeed-item{justify-self:end;background:#0a0e129e;border:1px solid #2d3946;border-radius:8px;padding:6px 8px;font-size:.8rem;color:#d8e8fa}.charge-bar{position:absolute;left:50%;top:calc(50% + 28px);transform:translate(-50%);width:120px;height:6px;border-radius:3px;background:#0a0e1299;border:1px solid #2d3946;overflow:hidden;display:none;pointer-events:none;z-index:5}.charge-bar.active{display:block}.charge-bar-fill{height:100%;width:0;background:linear-gradient(90deg,#ffb347,#ffd27a)}.charge-bar.rail .charge-bar-fill{background:linear-gradient(90deg,#b066ff,#ff1a1a)}.match-banner{position:absolute;top:28%;left:50%;transform:translate(-50%,-50%);display:none;text-align:center;background:#0a0e12c7;border:1px solid #2d3946;border-radius:12px;padding:18px 28px;pointer-events:none;z-index:6}.match-banner.active{display:block}.match-banner-title{font-size:1.6rem;font-weight:700;color:#ffc857}.match-banner-sub{margin-top:6px;font-size:.9rem;color:#d8e8fa}canvas{width:100%;height:100%;display:block}@media(max-width:900px){#app:not(.player-mode){grid-template-columns:1fr;grid-template-rows:300px 1fr}.panel{border-right:0;border-bottom:1px solid #25303c}}.team-score{position:absolute;z-index:5;top:56px;left:50%;transform:translate(-50%);display:flex;gap:10px;align-items:center;padding:6px 14px;border-radius:999px;background:#0a0e14b8;font-weight:700;pointer-events:none}.team-score[hidden]{display:none}.team-score .red,.score-row.red span:first-child,.score-team.red{color:#ff7a7f}.team-score .blue,.score-row.blue span:first-child,.score-team.blue{color:#7fa8ff}.team-score .versus{color:#9fb3c8;font-weight:400}.score-team{display:grid;grid-template-columns:1fr auto auto;gap:8px;margin:8px 0 4px;font-weight:700;font-size:.9rem}.intro-page{position:absolute;z-index:1;pointer-events:none}.ghost-btn{margin-top:10px;padding:8px 14px;font:inherit;color:#cfe0ff;background:transparent;border:1px solid #3a4a63;border-radius:8px;cursor:pointer}.ghost-btn:hover{border-color:#5a7bb0;color:#eaf2ff}.invite-bar{position:absolute;top:12px;left:50%;transform:translate(-50%);display:flex;gap:8px;align-items:center;padding:8px 12px;background:#0e131beb;border:1px solid #2a3647;border-radius:10px;z-index:6;font:13px/1 system-ui,sans-serif;color:#cfe0ff}.invite-bar[hidden]{display:none}.invite-bar input{width:260px;padding:5px 8px;font:inherit;color:#eaf2ff;background:#0b0f14;border:1px solid #2a3647;border-radius:6px}.invite-bar button{padding:5px 12px;font:inherit;color:#0b0f14;background:#ff8a1f;border:0;border-radius:6px;cursor:pointer;font-weight:700}.info-button{position:absolute;right:14px;bottom:14px;z-index:30;width:34px;height:34px;border-radius:50%;border:2px solid rgba(255,255,255,.55);background:#0c1218bf;color:#fff;font:italic 700 18px/1 Georgia,serif;cursor:pointer}.info-button:hover{border-color:#fff}.info-panel{position:absolute;inset:0;z-index:40;display:grid;place-items:center;padding:16px;background:#05080c99}.info-panel[hidden]{display:none}.info-card{position:relative;width:min(760px,100%);max-height:100%;overflow-y:auto;padding:22px 26px 26px;border-radius:14px;background:#10161ef5;border:1px solid rgba(255,255,255,.12);color:#e8edf2;font:14px/1.5 system-ui,sans-serif}.info-card h1{margin:0 0 6px;font-size:22px}.info-card h2{margin:20px 0 8px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#ffb347}.info-card table{width:100%;border-collapse:collapse}.info-card th,.info-card td{padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.08);text-align:left;vertical-align:top}.info-card th{width:150px;font-weight:700;white-space:nowrap}.info-card td:nth-child(2):not(:last-child){width:150px;color:#9fb0c0}.info-card ul{margin:0;padding-left:18px}.info-close{position:absolute;top:10px;right:12px;border:0;background:none;color:#9fb0c0;font-size:26px;line-height:1;cursor:pointer}
