*{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}.breath{opacity:0;letter-spacing:.08em;color:#bfe3f7;text-shadow:0 2px 6px #0009;align-items:center;gap:10px;font:700 13px Segoe UI,system-ui,sans-serif;transition:opacity .3s;display:flex;position:absolute;bottom:70px;left:22px}.breath.on{opacity:1}.breath .bar{background:#0b1118cc;border-radius:4px;width:180px;height:8px;overflow:hidden}.breath .bar i{background:#5ab8f0;width:100%;height:100%;transition:width .15s;display:block}.breath.low{color:#f3a39d}.breath.low .bar i{background:#e2534a}.underwater{opacity:0;pointer-events:none;background:radial-gradient(#1f7a8c40 0%,#0a3550b8 100%);transition:opacity .35s;position:absolute;inset:0}.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 .card.wide{width:min(700px,100vw - 32px)}.menu .profile{grid-template-columns:220px 1fr;align-items:start;gap:22px;display:grid}.menu .stage{background:radial-gradient(at 50% 85%,#2b3a4b 0%,#17212b 70%);border:1px solid #263545;border-radius:8px}.menu .look-preview{cursor:grab;touch-action:none;width:220px;height:330px;display:block}.menu .looks{grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:8px;display:grid}.menu .look{color:#c9d3de;background:#18222d;border:2px solid #0000;border-radius:8px;padding:4px 4px 6px;font:600 11px Segoe UI,sans-serif}.menu .look:hover{background:#1f2c3a}.menu .look.on{color:#f0f4f8;border-color:#58d6ae}.menu .look img{aspect-ratio:2/3;object-fit:cover;background:#121a22;border-radius:5px;width:100%;margin-bottom:4px;display:block}.menu .colorset{gap:4px;display:grid}.menu .colorset input[type=color]{height:30px}.menu .colorset>div:first-child input[type=color]{height:68px}.menu .me .who{color:#8ea0b3;font-size:12px;font-weight:400}@media (max-width:640px){.menu .profile{grid-template-columns:1fr;justify-items:center}.menu .profile form{width:100%}}.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}.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}.info{color:#a9b8c8;white-space:nowrap;background:#0b1118d9;border:1px solid #2a3a4c;border-radius:8px;flex-direction:column;align-items:center;gap:3px;padding:10px 18px;font:500 12.5px Segoe UI,system-ui,sans-serif;display:none;position:absolute;bottom:150px;left:50%;transform:translate(-50%)}.info.on{display:flex}.info b{color:#f0f4f8;font-size:16px}.note{color:#f2c230;font-variant-numeric:tabular-nums;opacity:0;white-space:nowrap;background:#0b1118cc;border-radius:4px;padding:5px 12px;font:700 13px Segoe UI,system-ui,sans-serif;transition:opacity .25s;position:absolute;bottom:122px;left:50%;transform:translate(-50%)}.note.on{opacity:1}.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 .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 .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}.chat{z-index:6;pointer-events:none;color:#e7edf3;flex-direction:column;align-items:flex-start;gap:6px;width:min(380px,100vw - 44px);font:600 12.5px/1.4 Segoe UI,system-ui,sans-serif;display:flex;position:fixed;bottom:76px;left:22px}.chat-talkers{flex-direction:column;gap:3px;display:flex}.chat-talker{background:#0b1118c4;border:1px solid #58d6ae88;border-radius:5px;align-items:center;gap:7px;padding:3px 9px 3px 7px;font-weight:700;display:flex}.chat-talker i{background:#58d6ae;border-radius:50%;width:8px;height:8px;animation:.7s ease-in-out infinite alternate chat-pulse}@keyframes chat-pulse{0%{opacity:.6;transform:scale(.6)}to{opacity:1;transform:scale(1.15)}}.chat-chip{pointer-events:auto;cursor:pointer;color:#c9d3de;font:inherit;background:#0b1118a8;border:1px solid #2a3a4c;border-radius:5px;align-items:center;gap:7px;padding:3px 8px;font-size:11px;display:flex}.chat-chip:hover{border-color:#58d6ae}.chat-chip i{background:#74869a;border-radius:50%;width:7px;height:7px}.chat-chip.live i{background:#58d6ae}.chat-chip.warn i{background:#f0b35a}.chat-chip.off{color:#8ea0b3}.chat-chip kbd{font:inherit;color:#8ea0b3;border:1px solid #34495e;border-radius:4px;padding:0 5px;font-size:10px}.chat-log{text-shadow:0 1px 3px #000d;flex-direction:column;gap:2px;width:100%;max-height:190px;display:flex;overflow:hidden}.chat-line{overflow-wrap:anywhere;-webkit-user-select:text;user-select:text;background:#0b111880;border-radius:4px;flex:none;padding:2px 7px}.chat-line b{margin-right:7px;font-weight:700}.chat-line span{font-weight:500}.chat-line.old{display:none}.chat.typing .chat-line.old{display:block}.chat.typing .chat-log{pointer-events:auto;background:#0b111866;border-radius:6px;padding:4px;overflow-y:auto}.chat-input{pointer-events:auto;color:#f0f4f8;width:100%;font:inherit;background:#0b1118e6;border:1px solid #58d6ae;border-radius:6px;outline:none;padding:8px 10px;font-weight:500;display:none}.chat.typing .chat-input{display:block}.vp{color:#d9e1ea;gap:7px;width:min(440px,100vw - 48px);max-height:calc(100vh - 48px);font-size:13px;overflow-y:auto}.vp-h{letter-spacing:.14em;text-transform:uppercase;color:#8ea0b3;margin-top:8px;font-size:11px;font-weight:700}.vp-row{justify-content:space-between;align-items:center;gap:12px;min-height:34px;display:flex}.vp-lbl{flex-direction:column;min-width:0;display:flex}.vp-lbl b{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.vp-lbl span{color:#74869a;font-size:11.5px}.vp-lbl span.bad{color:#f08a80}.vp-select{color:#f0f4f8;width:100%;font:inherit;background:#18222d;border:1px solid #7896b44d;border-radius:7px;padding:8px 9px;font-size:12.5px}.vp-slider{accent-color:#4fd6c8;flex:none;width:150px}.vp-meter{background:#ffffff14;border-radius:3px;height:6px;overflow:hidden}.vp-meter i{background:#4fd6c8;width:0;height:100%;transition:width 70ms linear;display:block}.vp-err{color:#f0b35a;font-size:12px;line-height:1.45}.vp-mini{color:#d9e1ea;font:inherit;cursor:pointer;background:#ffffff12;border:1px solid #7896b440;border-radius:6px;flex:none;padding:4px 10px;font-size:12px}.vp-mini:hover{border-color:#4fd6c8}.vp-mini.on{color:#fff;background:#e8785a38;border-color:#e8785ab3}.vp-list{flex-direction:column;gap:4px;display:flex}.vp-player{background:#ffffff0a;border-radius:8px;align-items:center;gap:10px;padding:6px 9px;display:flex}.vp-player .vp-lbl{flex:1}.vp-player.out{opacity:.55}.vp-empty,.vp-note{color:#74869a;font-size:12px}.vp-note{margin:6px 0 4px}.chat-log:empty{display:none}
