:root{--blood:#9e1410;--blood-bright:#d42a1e;--ink:#0b0807;--paper:#e9e1d2;--muted:#a39887;--panel:#100b09d1;--line:#e9e1d224;--serif:Georgia, "Times New Roman", serif;--sans:"Segoe UI", system-ui, -apple-system, Roboto, sans-serif}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--paper);font-family:var(--sans);-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}#app canvas{display:block}.hidden{display:none!important}.screen{z-index:20;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#menu{background:radial-gradient(at 50% 120%,#be461473,#0000 60%),radial-gradient(at 20% 0,#50281480,#0000 55%),linear-gradient(#120b08,#050303);justify-content:flex-start;padding:0 clamp(20px,5vw,76px);transition:background .8s}.menu-fog{pointer-events:none;background:radial-gradient(circle at 30% 60%,#7846282e,#0000 40%),radial-gradient(circle at 70% 40%,#783c1e24,#0000 45%);animation:18s ease-in-out infinite alternate drift;position:absolute;inset:-20%}@keyframes drift{0%{transform:translate(-4%)scale(1)}to{transform:translate(4%)scale(1.08)}}#menu.live{background:0 0}#menu.live .menu-fog{display:none}.menu-shade{pointer-events:none;opacity:0;background:linear-gradient(90deg,#060403e0 0,#0604039e 360px,#0604031a 62%,#0000 80%),linear-gradient(#0000 70%,#060403bf);transition:opacity .8s;position:absolute;inset:0}#menu.live .menu-shade{opacity:1}.menu-inner{scrollbar-width:none;text-align:center;width:min(400px,100vw - 32px);max-height:100vh;padding:24px 0;position:relative;overflow-y:auto}.brand{text-align:left}.logo{font-family:var(--serif);letter-spacing:.1em;color:var(--blood);text-shadow:0 0 30px #d42a1e59,0 4px #3a0705;filter:url(#chalk);margin:0 0 0 -.04em;font-size:clamp(56px,min(7.5vw,13vh),84px);line-height:1}.tagline{text-align:left;color:var(--muted);font-family:var(--serif);margin:6px 0 22px;font-style:italic}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:4px;flex-direction:column;gap:10px;padding:22px;display:flex}.field{text-align:left;color:var(--muted);flex-direction:column;gap:6px;font-size:13px;display:flex}input:not([type]),input[type=text],#in-code{border:1px solid var(--line);width:100%;color:var(--paper);font:15px var(--sans);-webkit-user-select:text;user-select:text;background:#00000080;border-radius:3px;outline:none;padding:10px 12px}input:focus{border-color:var(--blood-bright)}#in-code{text-transform:uppercase;letter-spacing:.3em;text-align:center}.row{gap:8px;display:flex}.row .btn{flex:none}.btn{border:1px solid var(--line);color:var(--paper);font:600 15px var(--sans);letter-spacing:.04em;cursor:pointer;background:#ffffff0f;border-radius:3px;padding:12px 16px;transition:background .15s,border-color .15s,transform 50ms}.btn:hover{background:#ffffff1f;border-color:#e9e1d24d}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--blood);border-color:#c4241b}.btn.primary:hover{background:#b51a14}.btn.ghost{color:var(--muted);background:0 0}.msg{color:#e8a36a;min-height:1.2em;margin:0;font-size:13px}.muted{color:var(--muted);margin:0;font-size:13px}.lobby-code{color:var(--muted);font-size:15px}.lobby-code b{font:700 44px var(--serif);letter-spacing:.25em;color:var(--paper);display:block}#lobby-players{text-align:left;margin:4px 0;padding:0;list-style:none}#lobby-players li{border-bottom:1px solid var(--line);padding:8px 10px;font-weight:600}.controls{border-collapse:collapse;text-align:left;width:100%;font-size:14px}.controls td{border-bottom:1px solid var(--line);padding:6px 4px}.controls td:first-child{color:#f0c27a;white-space:nowrap;width:40%;font-weight:600}.build{color:#5d5246;margin:0;font-size:12px;position:absolute;bottom:10px;right:14px}#loading{-webkit-backdrop-filter:blur(6px)saturate(.7);backdrop-filter:blur(6px)saturate(.7);opacity:1;background:linear-gradient(0deg,#050302f5 0,#050302b3 45%,#0503028c);justify-content:flex-start;align-items:flex-end;padding:0 clamp(20px,5vw,76px) clamp(28px,9vh,80px);transition:opacity .6s}#loading.out{opacity:0;pointer-events:none}.load-box{width:min(560px,100%)}.load-label{font:600 12px var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.load-map{font:700 clamp(44px, 7vw, 72px) var(--serif);letter-spacing:.08em;text-transform:uppercase;color:var(--paper);filter:url(#chalk);margin-top:4px;line-height:1}.load-sub{font:italic 17px var(--serif);color:var(--muted);margin-top:6px}.load-bar{background:#ffffff1a;height:4px;margin-top:22px;overflow:hidden}.load-bar i{background:linear-gradient(90deg, #7a120e, var(--blood-bright));width:0;height:100%;transition:width .35s ease-out;display:block;box-shadow:0 0 12px #d42a1e99}.load-tip{color:#d8cfc0;margin:16px 0 0;font-size:15px;line-height:1.45}.load-tip b{font:700 11px var(--sans);letter-spacing:.25em;text-transform:uppercase;color:#f0c27a;margin-bottom:2px;display:block}.hud{pointer-events:none;z-index:10;font-family:var(--sans);position:fixed;inset:0}.vignette,.hurt{opacity:0;position:absolute;inset:0}.vignette{background:radial-gradient(#0000 45%,#7800008c 80%,#460000e6 100%)}.hurt{background:radial-gradient(#0000 30%,#b40a00b3 100%)}.hud.is-downed .vignette{background:radial-gradient(#3c000040,#3c0000e6);opacity:1!important}.hitdirs{position:absolute;top:50%;left:50%}.hitdir{width:0;height:0;animation:1.2s forwards fadeout;position:absolute;top:0;left:0}.hitdir i{filter:blur(1px);border-top:6px solid #d2140ad9;border-radius:50% 50% 0 0/100% 100% 0 0;width:140px;height:40px;position:absolute;top:-190px;left:-70px}@keyframes fadeout{to{opacity:0}}.crosshair{--gap:10px;will-change:transform;position:absolute;top:50%;left:50%}.crosshair i{background:#f0ece4d9;position:absolute;box-shadow:0 0 2px #000}.crosshair .t,.crosshair .b{width:2px;height:9px;left:-1px}.crosshair .l,.crosshair .r{width:9px;height:2px;top:-1px}.crosshair .t{top:calc(-1 * var(--gap) - 9px)}.crosshair .b{top:var(--gap)}.crosshair .l{left:calc(-1 * var(--gap) - 9px)}.crosshair .r{left:var(--gap)}.crosshair .dot{width:2px;height:2px;top:-1px;left:-1px}.hitmarker{opacity:0;position:absolute;top:50%;left:50%}.hitmarker i{background:#fff;width:2px;height:9px;position:absolute;top:-4px;left:-1px;box-shadow:0 0 2px #000}.hitmarker i:first-child{transform:rotate(45deg)translateY(-10px)}.hitmarker i:nth-child(2){transform:rotate(135deg)translateY(-10px)}.hitmarker i:nth-child(3){transform:rotate(225deg)translateY(-10px)}.hitmarker i:nth-child(4){transform:rotate(315deg)translateY(-10px)}.hitmarker.kill i{background:#ff3b2b}.round{height:110px;color:var(--blood);filter:drop-shadow(0 2px 3px #000c);position:absolute;bottom:26px;left:34px}.round .tally{width:auto;height:110px;overflow:visible}.round .tally path{stroke:currentColor;stroke-width:13px;stroke-linecap:round;fill:none}.round-num{font:700 100px/110px var(--serif);display:block}.round.appear{animation:2.2s ease-out roundIn}@keyframes roundIn{0%{opacity:0;color:#f2ece0;transform:scale(1.3)}40%{opacity:1;color:#f2ece0}to{color:var(--blood);transform:none}}.round.pulse{animation:1.1s ease-in-out infinite roundPulse}.round.hell{color:#ff3a14;filter:drop-shadow(0 0 10px #ff3c0abf)drop-shadow(0 2px 3px #000c);animation:2.4s ease-in-out infinite hellFlicker}@keyframes hellFlicker{0%,to{opacity:1}45%{opacity:.82}50%{opacity:1}70%{opacity:.9}}.hud.hell:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 160px #8c0a008c}.banner{text-align:center;font:700 64px var(--serif);letter-spacing:.12em;color:#ff4a1a;text-shadow:0 0 22px #ff3c0acc,0 3px 4px #000;pointer-events:none;opacity:0;position:absolute;top:26%;left:0;right:0}.bossbar{text-align:center;pointer-events:none;width:min(520px,60vw);position:absolute;top:22px;left:50%;transform:translate(-50%)}.bossname{font:700 18px var(--serif);letter-spacing:.3em;color:#e8d8c0;text-shadow:0 2px 3px #000}.bossfill{background:#0009;border:1px solid #e8d8c059;height:12px;margin-top:4px;position:relative}.bossfill i{background:linear-gradient(#c8321e,#7a140a);transition:width .15s;position:absolute;top:0;bottom:0;left:0}.bossfill b{opacity:0;background:#b8bcc2;width:2px;position:absolute;top:-3px;bottom:-3px;left:70%}.bossbar.armored .bossfill b{opacity:1}.bossbar.armored .bossfill i{background:linear-gradient(#8a8e94,#4a4e54)}.banner.zone{color:#efe6d4;letter-spacing:.2em;text-shadow:0 0 18px #000000e6,0 3px 4px #000;font-size:46px;top:22%}.banner.go{animation:4s ease-out forwards bannerIn}@keyframes bannerIn{0%{opacity:0;letter-spacing:.4em;transform:scale(1.25)}15%{opacity:1;letter-spacing:.12em;transform:none}75%{opacity:1}to{opacity:0}}@keyframes roundPulse{50%{color:#f2ece0}}.bottom-right{flex-direction:column;align-items:flex-end;gap:10px;display:flex;position:absolute;bottom:26px;right:34px}.scores{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.score-row{text-align:right;min-width:110px;font:700 22px var(--serif);text-shadow:0 2px 3px #000;background:linear-gradient(90deg,#0000,#00000073);padding:2px 10px}.score-row.me{font-size:28px}.score-row.fallen{opacity:.45;text-decoration:line-through}.popups{width:100%;height:0;position:relative}.popup{font:700 20px var(--serif);text-shadow:0 2px 2px #000;animation:1s ease-out forwards pop;position:absolute;bottom:60px;right:120px}@keyframes pop{0%{opacity:1;transform:translate(0)}to{transform:translate(var(--dx), var(--dy));opacity:0}}.ammo{text-align:right;text-shadow:0 2px 3px #000}.weapon-name{color:#d8cfbc;letter-spacing:.12em;text-transform:uppercase;font-size:15px}.ammo-nums{font-family:var(--serif);font-weight:700}.ammo-nums .mag{font-size:44px}.ammo-nums .mag.low{color:var(--blood-bright)}.ammo-nums .sep{color:var(--muted);margin:0 6px;font-size:24px}.ammo-nums .reserve{color:var(--muted);font-size:24px}.ammo-nums .reserve.low{color:#e8a040}.hint{color:#f0ead8;text-shadow:0 1px 3px #000;font-size:15px;position:absolute;top:calc(50% + 46px);left:50%;transform:translate(-50%)}.hint b,.prompt b,.note b{color:#f0c27a}.prompt{text-align:center;text-shadow:0 1px 3px #000;font-size:17px;position:absolute;top:62%;left:50%;transform:translate(-50%)}.prompt-bar,.downed-bar{background:#0009;border:1px solid #fff3;width:240px;height:6px;margin:8px auto 0}.prompt-bar i,.downed-bar i{background:#f0ead8;width:0;height:100%;display:block}.downed-bar i{background:var(--blood-bright)}.downed{text-align:center;position:absolute;top:22%;left:50%;transform:translate(-50%)}.downed-title{font:700 40px var(--serif);letter-spacing:.2em;color:var(--blood-bright);text-shadow:0 2px 8px #000}.downed-text{color:var(--paper);text-shadow:0 1px 3px #000;margin-top:6px}.markers .marker{text-align:center;white-space:nowrap;text-shadow:0 1px 3px #000;font-weight:700;animation:.9s ease-in-out infinite blink;position:absolute;transform:translate(-50%,-100%)}.marker b{color:var(--blood-bright);font-size:30px;display:block}.marker span{font-size:13px}.bus-info{letter-spacing:.04em;text-shadow:0 1px 2px #000;white-space:nowrap;background:linear-gradient(90deg,#0000,#0000008c 18% 82%,#0000);align-items:center;gap:10px;padding:6px 14px;font-size:14px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%)}.bus-info em{color:var(--muted);font-style:normal}.bus-info .bus-arrow{color:#f0c27a;font-style:normal;transition:transform .1s linear;display:inline-block}.bus-info.leaving span{color:#f0c27a;animation:.9s ease-in-out infinite blink}.marker.pu b{color:currentColor;text-shadow:0 0 6px,0 0 14px #5aff78cc,0 1px 2px #000;font-size:24px}.marker.pu span{opacity:.9;font-size:12px}.marker.pu.edge b{font-size:18px}.marker.edge b{font-size:22px}.feed{flex-direction:column;gap:4px;max-width:420px;display:flex;position:absolute;top:20px;left:24px}.note{border-left:3px solid var(--blood);background:#00000080;padding:6px 10px;font-size:14px;transition:opacity .6s}.note.out{opacity:0}.netinfo{color:#e9e1d280;font-size:12px;position:absolute;top:8px;right:12px}.click-to-play{border:1px solid var(--line);background:#0009;padding:12px 22px;font-size:18px;animation:1.4s ease-in-out infinite blink;position:absolute;top:40%;left:50%;transform:translate(-50%)}.intro{font-family:var(--serif);text-shadow:0 2px 4px #000;transition:opacity 1.5s;position:absolute;top:32%;left:34px}.intro.fade{opacity:0}.intro-line{min-height:1.3em;color:var(--paper);font-size:20px}.intro-line:first-child{letter-spacing:.15em;color:#f0c27a;font-size:30px;font-weight:700}.overlay{pointer-events:auto;background:#05030299;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay .panel{width:min(440px,100vw - 32px)}.overlay h2{font:700 28px var(--serif);letter-spacing:.1em;margin:0 0 6px}.slider{color:var(--muted);text-align:left;flex-direction:column;gap:4px;margin-top:4px;font-size:13px;display:flex}.slider input{width:100%;accent-color:var(--blood-bright)}.slider output{color:var(--paper);text-align:right;margin-top:-2px;font-size:12px}.gameover{text-align:center;width:min(640px,100vw - 32px)!important}.gameover h1{font:700 54px var(--serif);letter-spacing:.12em;color:var(--blood-bright);filter:url(#chalk);margin:0}.gameover .survived{font:italic 20px var(--serif);margin:0 0 10px}.gameover table{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:14px}.gameover th{color:var(--muted);border-bottom:1px solid var(--line);padding:6px;font-weight:600}.gameover td{border-bottom:1px solid var(--line);padding:7px 6px;font-weight:700}.warning{text-align:left;background:#78280a8c;border:1px solid #c8642a;border-radius:3px;margin-bottom:12px;padding:12px 14px;font-size:13px;line-height:1.5}.warning i{color:#f0c27a;font-style:normal}.quality{text-align:left;color:var(--muted);flex-direction:column;gap:6px;margin-top:4px;font-size:13px;display:flex}.quality .seg{gap:4px;display:flex}.quality .seg button{border:1px solid var(--line);color:var(--paper);font:600 12px var(--sans);cursor:pointer;background:#ffffff0d;border-radius:3px;flex:1;padding:7px 4px}.quality .seg button.on{background:var(--blood);border-color:#c4241b}.quality small{font-size:11px}.quality small.bad{color:#e8a36a}.perks{gap:8px;display:flex;position:absolute;bottom:148px;left:34px}.perk-icon{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--c) 70%, white), var(--c) 55%, color-mix(in srgb, var(--c) 60%, black));width:40px;height:40px;box-shadow:0 0 10px color-mix(in srgb, var(--c) 60%, transparent);color:#fff;font:700 17px var(--serif);text-shadow:0 1px 2px #000;border:2px solid #0000008c;border-radius:50%;place-items:center;display:grid}.perk-icon svg{filter:drop-shadow(0 1px 1px #000000b3);width:22px;height:22px}.perk-icon.new{animation:.9s ease-out perkIn}@keyframes perkIn{0%{opacity:0;transform:scale(2.2)}60%{opacity:1;transform:scale(.9)}to{transform:none}}.prompt small{color:var(--muted);margin-top:3px;font-size:13px;display:block}.prompt.bad .prompt-text{color:#ff8a70}.prompt .price{color:#f0c27a;font-weight:700}.nades{justify-content:flex-end;gap:4px;min-height:14px;margin-bottom:2px;display:flex}.nades i{background:#6f8457;border:1px solid #0009;border-radius:45% 45% 40% 40%;width:11px;height:14px;box-shadow:0 1px 2px #000}.scope{pointer-events:none;background:radial-gradient(circle,#0000 0 34vmin,#000 34.4vmin);position:absolute;inset:0}.scope:before,.scope:after{content:"";background:#000000d9;position:absolute}.scope:before{width:2px;margin-left:-1px;top:0;bottom:0;left:50%}.scope:after{height:2px;margin-top:-1px;top:50%;left:0;right:0}.scope.luneta{background:radial-gradient(circle,#e8321e 0 .3vmin,#0000 .42vmin),radial-gradient(circle,#0000 0 40vmin,#000 40.4vmin)}.scope.luneta:before{width:3px;margin-left:-1.5px;top:calc(50% + 1.4vmin)}.scope.luneta:after{display:none}.effects{gap:10px;display:flex;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.effect{color:var(--c);text-shadow:0 0 8px var(--c), 0 2px 3px #000;flex-direction:column;align-items:center;display:flex}.effect b{font:900 30px/1 Segoe UI Symbol,Segoe UI,sans-serif}.effect span{font:700 14px var(--serif);color:#f0ead8}.effect.ending{animation:.5s ease-in-out infinite blink}.flash{opacity:0;background:#fff;position:absolute;inset:0}.emberflash{pointer-events:none;opacity:0;background:radial-gradient(#ff962826 0%,#ff5a0a59 55%,#c82800bf 100%);position:absolute;inset:0}.emberflash.go{animation:1.6s ease-out emberflash}@keyframes emberflash{0%{opacity:1}to{opacity:0}}.flash.go{animation:1.2s ease-out whiteflash}@keyframes whiteflash{0%{opacity:.95}to{opacity:0}}.mapsel{gap:6px;margin-top:6px;display:flex}.mapsel button{border:1px solid var(--line);color:#d8cfc0;font:600 14px var(--sans,"Segoe UI", sans-serif);cursor:pointer;background:#00000059;border-radius:6px;flex:1;padding:8px 6px}.mapsel button.on{color:#fff;background:#8a1a12;border-color:#c03a2a}.mapsel button:disabled{cursor:default;opacity:.75}.profile-card{border-bottom:1px solid var(--line);text-align:left;align-items:center;gap:14px;padding-bottom:10px;display:flex}.profile-card canvas{flex:none;width:76px;height:76px}.profile-card #in-name{font:700 21px var(--serif);color:var(--paper);background:0 0;border:0;border-bottom:1px dashed #0000;border-radius:0;padding:2px 0 3px}.profile-card #in-name:hover{border-bottom-color:var(--line)}.profile-card #in-name:focus{border-bottom-color:var(--blood-bright)}.profile-card #in-name::placeholder{color:#8a7f70;font-style:italic}.panel.main .profile-rank{font-size:14px}.panel.main{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0;gap:16px;padding:0}.panel.main .profile-card{border:1px solid var(--line);background:#0a070699;border-radius:3px;padding:12px 14px}.menu-list{flex-direction:column;gap:6px;display:flex}.mbtn{color:var(--paper);font:700 19px var(--sans);letter-spacing:.14em;text-align:left;text-transform:uppercase;cursor:pointer;background:#0806058c;border:0;border-left:3px solid #e9e1d22e;padding:11px 18px 11px 20px;transition:background .15s,border-color .15s,padding-left .15s,color .15s;position:relative}.mbtn small{font:400 12.5px var(--sans);letter-spacing:.02em;text-transform:none;color:var(--muted);margin-top:1px;display:block}.mbtn:hover,.mbtn:focus-visible{border-left-color:var(--blood-bright);background:#78120e6b;outline:none;padding-left:28px}.mbtn.primary{background:linear-gradient(90deg,#9e1410eb,#9e141080);border-left-color:#ff4a3a;padding-top:14px;padding-bottom:14px;font-size:23px}.mbtn.primary small{color:#f1c8bd}.mbtn.primary:hover{background:linear-gradient(90deg,#b51a14,#b51a149e)}.mbtn:active{transform:translateY(1px)}.map-card{border:1px solid var(--line);border-top:3px solid var(--blood);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:left;background:#080605b8;border-radius:3px;width:min(340px,100vw - 40px);padding:16px 18px;position:absolute;bottom:clamp(36px,7vh,64px);right:clamp(20px,4vw,60px)}.map-label{font:600 11px var(--sans);letter-spacing:.3em;text-transform:uppercase;color:var(--muted)}.map-name{font:700 40px var(--serif);letter-spacing:.06em;text-transform:uppercase;color:var(--paper);line-height:1.05}.map-desc{color:#cdc3b3;margin:4px 0 2px;font-size:13.5px;line-height:1.4}.map-card .field{margin-top:10px}@media (max-width:900px),(max-height:600px){.map-card{width:auto;margin-top:12px;position:static}#menu{flex-direction:column;justify-content:center;align-items:stretch;overflow-y:auto}.menu-inner{max-height:none;overflow:visible}}.profile-info{flex:1;min-width:0}.profile-rank{font:700 17px var(--serif);color:#f0c27a}.profile-sub{color:var(--muted);margin-top:4px;font-size:12px}.xp-bar{border:1px solid var(--line);background:#0000008c;border-radius:4px;height:7px;margin-top:6px;overflow:hidden}.xp-bar i{background:linear-gradient(90deg,#8a3a10,#f0a040);width:0;height:100%;transition:width .6s;display:block}.field-row{align-items:center;gap:10px;display:flex}.field-row input[type=range]{accent-color:var(--blood-bright);flex:1}.field-row output{text-align:right;min-width:32px;font:700 16px var(--serif);color:var(--paper)}.field small{color:var(--muted);font-size:12px}.menu-inner.wide{width:min(780px,100vw - 32px)}.tabs{gap:4px;display:flex}.tabs button{border:1px solid var(--line);color:var(--paper);font:600 13px var(--sans);cursor:pointer;background:#ffffff0d;border-radius:3px;flex:1;padding:8px}.tabs button.on{background:var(--blood);border-color:#c4241b}.tabs.small button{padding:5px;font-size:12px}.board-body{max-height:min(52vh,420px);overflow:auto}.tabs .gap{flex:0 0 12px}.board-account{border:1px solid var(--line);background:#ffffff08;border-radius:3px;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;font-size:13px;display:flex}.board-account input{border:1px solid var(--line);min-width:0;color:var(--paper);font:13px var(--sans);background:#00000059;border-radius:3px;flex:120px;padding:6px 8px}.board-account .btn{padding:6px 12px;font-size:13px}.board-account .msg{color:var(--muted);flex-basis:100%}.board-account .msg.bad{color:#ff8a7a}.board-body .ok{color:#8fd88a;font-size:12px}.board-body table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}.board-body th{color:var(--muted);border-bottom:1px solid var(--line);background:#1a120e;padding:6px;font-weight:600;position:sticky;top:0}.board-body td{border-bottom:1px solid var(--line);vertical-align:middle;padding:6px}.board-body canvas{vertical-align:middle;width:28px;height:28px;margin-right:6px}.board-body .num{text-align:right;font-variant-numeric:tabular-nums}#lobby-players li{align-items:center;gap:8px;display:flex}#lobby-players canvas{width:30px;height:30px}#lobby-players .kick{margin-left:auto;padding:4px 8px;font-size:12px;font-weight:600}.invite-link{gap:8px;display:flex}.invite-link input{min-width:0;color:var(--muted);flex:1;font-size:13px}.invite-link .btn{flex:none}.invite-link .btn.done{color:#8fd88a;border-color:#5f9a5a}details.adv{text-align:left;color:var(--muted);font-size:13px}details.adv summary{cursor:pointer;padding:2px 0}details.adv[open]{flex-direction:column;gap:6px;display:flex}.levelup{justify-content:center;align-items:center;gap:14px;margin:4px 0 10px;display:flex}.levelup canvas{width:72px;height:72px}.levelup .xp-gain{font:700 22px var(--serif);color:#f0c27a}.levelup .new-level{font:700 15px var(--serif);color:#ffd75a;animation:.8s ease-in-out infinite blink}@keyframes blink{50%{opacity:.4}}.levelup .lvl-info{text-align:left;min-width:230px}.levelup .xp-bar{height:8px;margin:6px 0 5px}.levelup .xp-bar i{transition:none}.levelup .lvl-line{font-size:13px}.gameover tr.mvp td{background:#f0c27a14}.mvp-tag{font:600 10px var(--sans);letter-spacing:.08em;text-transform:uppercase;color:#f0c27a;vertical-align:2px;border:1px solid #f0c27a80;border-radius:2px;margin-left:8px;padding:1px 6px;display:inline-block}.gameover-actions{gap:10px;display:flex}.gameover-actions .btn{flex:1}.gameover .survived .muted{font:14px var(--sans);font-style:normal}.score-row canvas{vertical-align:-4px;width:22px;height:22px;margin-right:6px}.gm{text-align:left;max-height:calc(100vh - 32px);width:min(660px,100vw - 32px)!important}.gm-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.gm-head h2{margin:0}.gm-info{color:var(--muted);font-size:13px}.gm-info b{color:var(--paper)}.gm-coop{margin-top:-4px}.gm-tabs{border-bottom:1px solid var(--line);gap:2px;margin-top:4px;display:flex}.gm-tabs button{color:var(--muted);font:700 13px var(--sans);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;flex:1;padding:9px 8px}.gm-tabs button:hover{color:var(--paper)}.gm-tabs button.on{color:var(--paper);border-bottom-color:var(--blood-bright)}.gm-body{flex-direction:column;gap:10px;min-height:250px;padding-top:6px;display:flex;overflow-y:auto}.gm-actions{flex-direction:column;gap:8px;display:flex}.gm-actions .btn{text-align:left;padding:13px 16px;font-size:16px}.btn.armed{border-color:var(--blood-bright);color:#ffd0c8;background:#d42a1e40}.gm-confirm{min-height:1.2em}.gm-foot{text-align:right;margin:0;font-size:12px}.check{color:var(--paper);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.check input{width:16px;height:16px;accent-color:var(--blood-bright)}.panel-title{font:700 22px var(--serif);text-align:left;margin:0}.keys-box{text-align:left;flex-direction:column;gap:6px;display:flex}.keys th{z-index:1;font:600 11px var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);text-align:center;background:#1a120e;padding:6px;position:sticky;top:0}.keys th:first-child{text-align:left}.keys-scroll{border:1px solid var(--line);background:#00000040;border-radius:3px;max-height:min(44vh,360px);overflow-y:auto}.keys{border-collapse:collapse;width:100%;font-size:13px}.keys td{border-bottom:1px solid #e9e1d212;padding:3px 6px}.keys td:nth-child(2),.keys td:nth-child(3){width:150px}.keys .keys-group td{font:700 11px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#f0c27a;border-bottom:0;padding:8px 6px 3px}.keybtn{border:1px solid var(--line);width:100%;color:var(--paper);font:600 13px var(--sans);cursor:pointer;background:#ffffff0f;border-radius:3px;padding:6px 8px}.keybtn:hover{border-color:#e9e1d266}.keybtn.empty{color:#6d6458}.keybtn.wait{border-color:var(--blood-bright);color:#fff;background:#d42a1e4d;animation:.9s ease-in-out infinite blink}.keys-foot{justify-content:space-between;align-items:center;gap:10px;display:flex}.keys-note{flex:1;min-height:1.2em}.btn.small{padding:6px 12px;font-size:12px}.hud.menu-open .intro{visibility:hidden}.tr-gens{gap:6px;display:flex;position:absolute;top:30px;right:14px}.tr-gens .gen{color:#6b6760;background:#0a0807a6;border-radius:50%;place-items:center;width:30px;height:30px;display:grid;position:relative;box-shadow:inset 0 0 0 2px #78726873}.tr-gens .gen svg{filter:drop-shadow(0 1px 1px #000);width:24px;height:24px}.tr-gens .gen b{font:700 11px var(--sans);color:#d8d0c0;text-shadow:0 1px 2px #000;position:absolute;bottom:-3px;right:-2px}.tr-gens .gen.on{color:#5fe6ff;box-shadow:inset 0 0 0 2px #3ac8ee,0 0 10px #50dcff8c}.tr-gens .gen.cap{color:#ffd890;background:conic-gradient(#5fe6ff var(--p,0deg), #0a0807a6 0);box-shadow:none}.tr-gens .gen.cap svg{color:#fff}.tr-gens .gen.atk{color:#ff5a4a;box-shadow:inset 0 0 0 2px #ff3a2a,0 0 12px #ff3c28cc}.tr-team{background:#0a08078c;border-left:3px solid #8a7a58;min-width:150px;padding:6px 8px;font-size:12px;position:absolute;top:70px;right:14px}.tr-team h4,.tr-chal h4,.tr-mission h4{font:700 11px var(--sans);letter-spacing:.25em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.tr-row{align-items:center;gap:4px;margin:2px 0;display:flex}.tr-row span{color:#c8bfae;width:54px}.tr-row u{text-align:center;color:#4a463f;justify-content:center;width:16px;font-size:13px;text-decoration:none;display:inline-flex}.tr-row u svg{width:13px;height:13px}.tr-row u.got{color:var(--c);text-shadow:0 0 6px var(--c)}.tr-row small{color:#8fe08a;margin-left:4px;font-size:10px}.tr-chal{border:1px solid var(--line);background:#0e0a08cc;width:min(430px,80vw);padding:10px 12px;position:absolute;top:22%;left:50%;transform:translate(-50%)}.tr-c{border-top:1px solid #e9e1d214;align-items:center;gap:10px;padding:5px 0;display:flex}.tr-c b{font:700 18px var(--serif);color:#8a7a58;text-align:center;width:18px}.tr-c span{flex:1;font-size:13px}.tr-c small{color:var(--muted);font-size:11px;display:block}.tr-c em{color:#c8bfae;font-size:12px;font-style:normal}.tr-c.done em{color:#ffd23a}.tr-c.claimed{opacity:.55}.tr-c.claimed em{color:#8fe08a}.tr-alerts{pointer-events:none;flex-direction:column;align-items:center;gap:3px;display:flex;position:absolute;top:62px;left:50%;transform:translate(-50%)}.tr-alert{border-bottom:2px solid var(--c,#ffd23a);font:700 13px var(--serif);letter-spacing:.06em;white-space:nowrap;background:#0a0807b3;align-items:center;gap:8px;padding:2px 12px;line-height:1.4;display:flex}.tr-alert span{color:var(--c,#ffd23a);text-shadow:0 0 8px var(--c,#ffd23a)}.tr-alert em{font:600 12px var(--sans);color:var(--muted);font-style:normal}.tr-alert .tr-arrow{color:var(--c,#ffd23a);font-size:11px;transition:transform .1s linear;display:inline-block}.tr-alert.danger{animation:.7s ease-in-out infinite blink}.tr-more{font:700 11px var(--sans);color:var(--muted);background:#0a0807b3;border-radius:8px;padding:0 8px}.tr-mission{background:#0a080799;border-left:3px solid #9fd8ff;max-width:300px;padding:8px 12px;position:absolute;top:38%;left:24px}.tr-mission ol{color:#7a7468;margin:0;padding-left:18px;font-size:12px;line-height:1.55}.tr-mission li.ok{color:#8fe08a;opacity:.7;text-decoration:line-through}.tr-mission li.now{color:#f0ead8;font-weight:600}.tr-blood{pointer-events:none;mix-blend-mode:normal;background:radial-gradient(#78000000 40%,#78000038 100%);position:absolute;inset:0;box-shadow:inset 0 0 140px 30px #aa0a0abf}.tr-blood span{font:900 30px var(--serif);color:#ff5a4a;text-shadow:0 0 12px #a00,0 2px 3px #000;position:absolute;bottom:96px;left:50%;transform:translate(-50%)}.tr-blood.ending{animation:.5s ease-in-out infinite blink}.tr-status{justify-content:flex-end;align-items:center;gap:10px;display:flex;position:absolute;bottom:176px;right:24px}.tr-status .st{font:700 14px var(--serif);color:#e8e0d0;background:#0a08078c;border-radius:3px;align-items:center;gap:4px;padding:3px 7px;display:flex}.tr-status .st b{font:400 18px Segoe UI Symbol,Segoe UI,sans-serif;display:inline-flex}.tr-status .st b svg{width:18px;height:18px}.tr-status .shield b{color:#b8c0c8}.tr-status .bar{background:#0009;width:70px;height:6px}.tr-status .bar i{background:linear-gradient(#c8d0d8,#7a8088);height:100%;display:block}.tr-status .art b{color:#ff7a3a}.tr-status .gold b{color:#ffd23a}.tr-status .wx b{color:#cfe0f0}.charge-ring{pointer-events:none;background:conic-gradient(#ffe68cf2 var(--f,0deg), #ffffff1f 0);border-radius:50%;width:46px;height:46px;margin:-23px 0 0 -23px;position:absolute;top:50%;left:50%;-webkit-mask:radial-gradient(circle,#0000 17px,#000 18px 21px,#0000 22px);mask:radial-gradient(circle,#0000 17px,#000 18px 21px,#0000 22px)}.charge-ring.full{filter:drop-shadow(0 0 6px #ffdc78e6)}.pause-map{border:1px solid var(--line);image-rendering:auto;background:#14110f;width:100%;max-width:540px;height:auto;margin:12px auto 0;display:block}.tr-radio{pointer-events:none;background:#080706c7;border-left:3px solid #c8a85a;width:min(620px,86vw);padding:10px 16px;transition:opacity .9s;position:absolute;bottom:112px;left:50%;transform:translate(-50%)}.tr-radio.out{opacity:0}.tr-radio h4{font:700 11px var(--sans);letter-spacing:.3em;text-transform:uppercase;color:#c8a85a;margin:0 0 6px}.tr-radio p{font:600 15px var(--serif);color:#e8e0cc;opacity:0;margin:3px 0;animation:.8s ease-out forwards radioIn}@keyframes radioIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
