*{box-sizing:border-box}html,body{color:#d9e1ea;-webkit-user-select:none;user-select:none;background:#1b2530;height:100%;margin:0;font-family:Segoe UI,system-ui,sans-serif;overflow:hidden}#app,#app canvas{width:100%;height:100%;display:block;position:fixed;inset:0}#app canvas{cursor:none}#loading{letter-spacing:.1em;color:#8fa3b8;place-items:center;font-size:14px;display:grid;position:fixed;inset:0}.hud{pointer-events:none;font-size:12px;position:fixed;inset:0}.debug{color:#c9d3de;text-shadow:0 1px 2px #0008;grid-template-columns:auto auto;column-gap:18px;font:600 12px/1.55 Segoe UI,system-ui,sans-serif;display:grid;position:absolute;top:46px;left:16px}.debug .title{color:#7f93a8;letter-spacing:.12em;grid-column:1/3;margin-bottom:2px;font-size:11px}.debug .k{color:#8ea0b3}.controls{text-align:center;color:#8ea0b3;letter-spacing:.04em;word-spacing:2px;text-shadow:0 1px 2px #0008;font:600 11px Segoe UI,system-ui,sans-serif;position:absolute;bottom:10px;left:0;right:0}.controls b{color:#c9d3de;margin-right:3px;font-weight:700}.controls span{white-space:nowrap;margin:0 8px}.ammo{text-align:right;color:#e7edf3;text-shadow:0 2px 6px #0009;font:700 34px/1 Segoe UI,system-ui,sans-serif;position:absolute;bottom:40px;right:22px}.ammo small{color:#8ea0b3;font-size:15px;font-weight:600}.ammo .state{letter-spacing:.15em;color:#f0b35a;height:14px;margin-top:4px;font-size:11px;display:block}.blend{background:#070b10cc;border-radius:6px;width:170px;height:128px;padding:8px;position:absolute;bottom:215px;right:22px}.blend .lbl{letter-spacing:.12em;color:#7f93a8;margin-bottom:4px;font:600 9px Segoe UI,sans-serif}.blend canvas{width:154px;height:100px;display:block}.reticle{width:0;height:0;position:absolute;top:0;left:0}.reticle i{background:#e8eef5;position:absolute;box-shadow:0 0 2px #000a}.reticle .dot{border-radius:50%;width:3px;height:3px;top:-1.5px;left:-1.5px}.reticle .t,.reticle .b{width:2px;height:7px;left:-1px}.reticle .l,.reticle .r{width:7px;height:2px;top:-1px}.reticle .hit{opacity:0;transition:opacity .12s}.reticle .hit i{background:#fff;width:9px;height:2px;top:-1px;left:-4.5px}.reticle .hit.on{opacity:1;transition:none}.memorial{text-align:center;color:#fff;text-shadow:0 3px 10px #000c;opacity:0;font-family:Georgia,Times New Roman,serif;transition:opacity .6s;position:absolute;top:9%;left:0;right:0}.memorial.on{opacity:1}.memorial .s{letter-spacing:.2em;font-size:13px;font-weight:700}.memorial .n{font-size:54px;font-weight:700;line-height:1.05}.memorial .y{font-size:20px;font-weight:700}.toast{opacity:0;background:#0b1118cc;border-radius:4px;padding:6px 14px;font-size:12px;transition:opacity .3s;position:absolute;top:18px;left:50%;transform:translate(-50%)}.toast.on{opacity:1}.tune{pointer-events:auto;background:#0b1118ee;border:1px solid #2a3a4c;border-radius:6px;width:290px;max-height:calc(100% - 180px);padding:10px 12px;font-size:11px;display:none;position:absolute;top:14px;right:16px;overflow:auto}.tune.on{display:block}.tune h3{letter-spacing:.15em;color:#7f93a8;margin:0 0 8px;font-size:11px}.tune label{grid-template-columns:96px 1fr 44px;align-items:center;gap:6px;margin:3px 0;display:grid}.tune input[type=range]{width:100%}.tune .v{text-align:right;color:#c9d3de;font-variant-numeric:tabular-nums}.tune button{color:#d9e1ea;cursor:pointer;background:#22313f;border:1px solid #34495e;border-radius:4px;margin-top:8px;padding:4px 10px;font-size:11px}.slots{text-align:right;color:#74869a;text-shadow:0 1px 2px #0008;font:600 11px/1.7 Segoe UI,system-ui,sans-serif;position:absolute;bottom:104px;right:22px}.slots div{white-space:nowrap}.slots b{color:#8ea0b3;margin-right:6px;font-weight:700}.slots i{font-variant-numeric:tabular-nums;opacity:.8;margin-left:8px;font-style:normal}.slots .on{color:#f0f4f8}.slots .on b{color:#f0b35a}.health{color:#e7edf3;text-shadow:0 2px 6px #0009;align-items:center;gap:10px;font:700 18px Segoe UI,system-ui,sans-serif;display:flex;position:absolute;bottom:40px;left:22px}.health .bar{background:#0b1118cc;border-radius:4px;width:180px;height:8px;overflow:hidden}.health .bar i{background:#58d6ae;width:100%;height:100%;transition:width .15s;display:block}.vignette{opacity:0;background:radial-gradient(#0000 45%,#b00c0cb0 100%);transition:opacity .5s;position:absolute;inset:0}.vignette.on{opacity:1;transition:none}.menu{z-index:50;cursor:default;-webkit-user-select:text;user-select:text;background:radial-gradient(at 50% 30%,#243242 0%,#141c25 70%);place-items:center;display:grid;position:fixed;inset:0}.menu .card{background:#0f161ee6;border:1px solid #2a3a4c;border-radius:10px;width:min(420px,100vw - 32px);padding:28px 28px 22px}.menu .logo{letter-spacing:.18em;color:#f0f4f8;text-align:center;font:800 44px/1 Segoe UI,system-ui,sans-serif}.menu .sub{text-align:center;color:#9db0c4;margin:14px 0 18px;font-size:14px;line-height:1.45}.menu form{gap:10px;display:grid}.menu input[type=email],.menu input[type=text]{color:#f0f4f8;background:#18222d;border:1px solid #34495e;border-radius:6px;outline:none;width:100%;padding:11px 12px;font-size:15px}.menu input:focus{border-color:#58d6ae}.menu input.code{text-align:center;letter-spacing:.35em;font-size:26px;font-weight:700}.menu button{color:#0d1a16;cursor:pointer;background:#58d6ae;border:0;border-radius:6px;padding:11px 14px;font:700 14px Segoe UI,system-ui,sans-serif}.menu button:hover{background:#6fe3bd}.menu button:disabled{opacity:.5;cursor:default}.menu button.link{color:#8ea0b3;background:0 0;padding:6px 4px;font-size:12px;font-weight:600}.menu button.link:hover{color:#d9e1ea;background:0 0}.menu .card>button{width:100%}.menu .card>button.link{margin-top:10px}.menu .err{color:#f08a80;text-align:center;min-height:1em;margin-top:12px;font-size:13px}.menu .lbl{letter-spacing:.12em;text-transform:uppercase;color:#7f93a8;margin:14px 0 6px;font:600 11px Segoe UI,sans-serif}.menu form .lbl{margin:6px 0 0}.menu .colors{align-items:center;gap:10px;display:flex}.menu .swatches{flex:1;grid-template-columns:repeat(6,1fr);gap:7px;display:grid}.menu .sw{border:2px solid #0000;border-radius:6px;height:30px;padding:0}.menu .sw.on{border-color:#f0f4f8;box-shadow:inset 0 0 0 2px #0f161e}.menu input[type=color]{cursor:pointer;background:0 0;border:1px solid #34495e;border-radius:6px;width:44px;height:68px;padding:0}.menu .me{color:#d9e1ea;align-items:center;gap:8px;margin:18px 0 14px;font-size:15px;display:flex}.menu .me b{flex:1}.menu .me .dot{border:1px solid #0008;border-radius:4px;width:14px;height:14px}.menu .rooms{gap:6px;max-height:240px;display:grid;overflow:auto}.menu .roomrow{background:#18222d;border-radius:6px;align-items:center;gap:10px;padding:9px 10px;display:flex}.menu .roomrow>div{flex:1;min-width:0}.menu .roomrow b{color:#f0f4f8;font-size:14px;display:block}.menu .roomrow span{color:#8ea0b3;white-space:nowrap;text-overflow:ellipsis;font-size:12px;display:block;overflow:hidden}.menu .roomrow button{padding:7px 12px;font-size:12px}.menu .empty{text-align:center;color:#7f93a8;background:#18222d;border-radius:6px;padding:14px;font-size:13px}.nametags{pointer-events:none;z-index:5;position:fixed;inset:0}.nametag{color:#f0f4f8;white-space:nowrap;background:#0b1118b0;border-radius:4px;padding:2px 7px;font:700 11px Segoe UI,system-ui,sans-serif;position:absolute;top:0;left:0}.room{text-align:center;pointer-events:auto;color:#c9d3de;text-shadow:0 1px 2px #0008;margin-top:34px;font:600 11px/1.5 Segoe UI,system-ui,sans-serif;position:absolute;top:14px;left:50%;transform:translate(-50%)}.room .name{color:#7f93a8;letter-spacing:.12em;text-transform:uppercase}.room .players{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.room button{color:#74869a;cursor:pointer;background:0 0;border:0;margin-top:3px;font:600 10px Segoe UI,sans-serif;text-decoration:underline}.room button:hover{color:#d9e1ea}.viewbtn{pointer-events:auto;cursor:pointer;color:#d9e1ea;background:#0b1118cc;border:1px solid #2a3a4c;border-radius:5px;padding:5px 10px;font:600 11px Segoe UI,system-ui,sans-serif;position:absolute;bottom:70px;left:22px}.viewbtn:hover{border-color:#58d6ae}.viewbtn b{color:#f0b35a;margin-right:7px}.minimap{border:1px solid #2a3a4c;border-radius:8px;width:200px;height:200px;position:absolute;top:14px;right:16px;box-shadow:0 2px 10px #0008}.clock{text-align:center;color:#d9e1ea;text-shadow:0 1px 2px #000c;letter-spacing:.08em;width:200px;font:600 11px Segoe UI,system-ui,sans-serif;position:absolute;top:220px;right:16px}.bigmap{border:1px solid #34495e;border-radius:10px;width:min(720px,86vmin);height:min(720px,86vmin);display:none;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 8px 40px #000c}.bigmap.on{display:block}.hint{color:#f0f4f8;text-shadow:0 1px 4px #000c;font:700 13px Segoe UI,system-ui,sans-serif;position:absolute;bottom:96px;left:50%;transform:translate(-50%)}.slots .locked{opacity:.45}.tune{max-height:calc(100% - 420px);top:250px}.controls{text-shadow:0 1px 3px #000c;color:#c9d3de}.controls b{color:#fff}.debug,.ammo,.health,.slots{text-shadow:0 1px 3px #000d}.menu .modes{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.menu .modes button{padding:12px 6px}.menu .solo{color:#74869a;justify-content:center;align-items:center;gap:6px;margin-top:12px;font-size:12px;display:flex}.menu .solo .link{padding:4px 6px;text-decoration:underline}.menu .modes button.old,.menu .solo .link.old{opacity:.45;font-weight:500}.menu .modes button.old:hover,.menu .solo .link.old:hover{opacity:.8}.menu .solo .link.main{color:#4fd6c8}.dev{z-index:40;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);color:#d9e1ea;cursor:default;background:#10161de6;border:1px solid #7896b438;border-radius:14px;flex-direction:column;width:min(1040px,100vw - 48px);max-height:calc(100vh - 48px);font-size:13px;transition:opacity .14s,transform .14s;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-48%)scale(.98);box-shadow:0 30px 80px #0000008c,inset 0 1px #ffffff0d}.dev.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)}.dev-head{border-bottom:1px solid #7896b429;align-items:center;gap:16px;padding:14px 18px;display:flex}.dev-title{letter-spacing:.18em;color:#4fd6c8;white-space:nowrap;font-size:12px;font-weight:700}.dev-stats{color:#7f93a8;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:12px;overflow:hidden}.dev-close{color:#a9b8c8;font:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #7896b440;border-radius:7px;padding:6px 12px;font-size:12px}.dev-close:hover{color:#fff;background:#ffffff1f}.dev-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;padding:16px 18px 18px;display:grid;overflow-y:auto}.dev-card{background:#ffffff09;border:1px solid #7896b424;border-radius:10px;padding:12px 14px 14px}.dev-card h4{letter-spacing:.14em;text-transform:uppercase;color:#8ea0b3;margin:0 0 8px;font-size:11px;font-weight:700}.dev-row{justify-content:space-between;align-items:center;gap:12px;min-height:38px;padding:4px 0;display:flex}.dev-row b{font-weight:600}.dev-lbl{flex-direction:column;gap:1px;min-width:0;display:flex}.dev-lbl span{color:#74869a;font-size:11.5px}.dev-sub{color:#74869a;margin:8px 0 4px;font-size:11.5px}.dev-switch{cursor:pointer;background:#ffffff0f;border:1px solid #7896b44d;border-radius:12px;flex:none;width:44px;height:24px;padding:0;transition:background .15s,border-color .15s;position:relative}.dev-switch i{background:#8ea0b3;border-radius:50%;width:18px;height:18px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.dev-switch.on{background:#4fd6c847;border-color:#4fd6c8}.dev-switch.on i{background:#4fd6c8;transform:translate(20px)}.dev-btns{flex-wrap:wrap;gap:6px;margin-top:6px;display:flex}.dev-btn{color:#d9e1ea;font:inherit;cursor:pointer;background:#ffffff12;border:1px solid #7896b438;border-radius:7px;padding:7px 11px;font-size:12.5px;transition:background .12s,border-color .12s}.dev-btn:hover{background:#4fd6c829;border-color:#4fd6c899}.dev-btn:active{transform:translateY(1px)}.dev-btn.warn:hover{background:#e8785a2e;border-color:#e8785ab3}.dev-slider{grid-template-columns:150px 1fr 48px;display:grid}.dev-slider input{accent-color:#4fd6c8;width:100%}.dev-val{text-align:right;color:#a9b8c8;font-variant-numeric:tabular-nums}.dev-seg{border:1px solid #7896b440;border-radius:7px;display:flex;overflow:hidden}.dev-seg button{color:#a9b8c8;font:inherit;cursor:pointer;background:0 0;border:0;border-left:1px solid #7896b433;padding:6px 11px;font-size:12.5px}.dev-seg button:first-child{border-left:0}.dev-seg button:hover{background:#ffffff14}.dev-seg button.on{color:#4fd6c8;background:#4fd6c838;font-weight:600}.dev-note{white-space:nowrap;opacity:0;pointer-events:none;background:#10161deb;border:1px solid #4fd6c866;border-radius:8px;padding:7px 14px;font-size:12.5px;transition:opacity .15s;position:absolute;bottom:-44px;left:50%;transform:translate(-50%)}.dev-note.on{opacity:1}.pause{z-index:50;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;pointer-events:none;cursor:default;background:#080c118c;place-items:center;transition:opacity .14s;display:grid;position:fixed;inset:0}.pause.on{opacity:1;pointer-events:auto}.pause-card{background:#10161df0;border:1px solid #7896b438;border-radius:14px;flex-direction:column;gap:8px;width:min(360px,100vw - 48px);padding:26px 24px 22px;display:flex;box-shadow:0 30px 80px #0000008c,inset 0 1px #ffffff0d}.pause-title{letter-spacing:.3em;text-align:center;color:#fff;font-size:22px;font-weight:800}.pause-sub{text-align:center;color:#7f93a8;margin-bottom:10px;font-size:12.5px}.pause-btn{color:#d9e1ea;font:inherit;cursor:pointer;background:#ffffff0f;border:1px solid #7896b438;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:14px;font-weight:600;transition:background .12s,border-color .12s;display:flex}.pause-btn:hover{background:#4fd6c829;border-color:#4fd6c899}.pause-btn.main{color:#fff;background:#4fd6c833;border-color:#4fd6c8}.pause-btn.main:hover{background:#4fd6c852}.pause-btn.quit{color:#a9b8c8;margin-top:8px;font-weight:500}.pause-btn.quit:hover{color:#fff;background:#e8785a2e;border-color:#e8785ab3}.pause-btn kbd{font:inherit;color:#8ea0b3;border:1px solid #7896b44d;border-radius:5px;padding:2px 7px;font-size:11px;font-weight:600}.perf{z-index:30;pointer-events:none;color:#c9d3de;text-shadow:0 1px 2px #000c;font:600 12px/1.4 Segoe UI,system-ui,sans-serif;position:fixed;top:10px;left:14px}.perf-badge{font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:flex}.perf-badge b{text-align:right;min-width:22px;font-size:15px}.perf-badge span{color:#8ea0b3;min-width:118px}.perf-badge canvas{opacity:.85;width:120px;height:22px}.perf-badge.ok b{color:#58d6a0}.perf-badge.mid b{color:#f0b35a}.perf-badge.bad b{color:#ff6b5e}.perf-panel{color:#c9d3de;text-shadow:none;background:#0d141ccc;border:1px solid #2a3a4c;border-radius:6px;margin:6px 0 0;padding:9px 12px;font:500 11.5px/1.5 Consolas,Cascadia Mono,monospace;display:none}
