@font-face{font-family:STCFN;src:url(/assets/fonts/STCFN.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:STBIG;src:url(/assets/fonts/STBIG.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:STYSN;src:url(/assets/fonts/STYSN.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:WINUM;src:url(/assets/fonts/WINUM.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-palette-values --stcfn-white{font-family:STCFN;override-colors:0 #424242,1 #bfbfbf,2 #cbcbcb,3 #d7d7d7,4 #e3e3e3,5 #a7a7a7,6 #b3b3b3,7 #efefef,8 #9b9b9b,9 #8b8b8b,10 #7e7e7e,11 #727272,12 #666,13 #fff,14 #4e4e4e,15 #5a5a5a}@font-palette-values --stcfn-green{font-family:STCFN;override-colors:0 #004200,1 #00bf00,2 #00cb00,3 #00d700,4 #00e300,5 #00a700,6 #00b300,7 #00ef00,8 #009b00,9 #008b00,10 #007e00,11 #007200,12 #060,13 #0f0,14 #004e00,15 #005a00}@font-palette-values --stcfn-indigo{font-family:STCFN;override-colors:0 #170d38,1 #4226a2,2 #4729ad,3 #4b2bb7,4 #4f2dc1,5 #3a218e,6 #3e2498,7 #5430cb,8 #361f84,9 #311c76,10 #2c196b,11 #281761,12 #241457,13 #5933d9,14 #1b1042,15 #20124d}@font-palette-values --stcfn-brown{font-family:STCFN;override-colors:0 #422811,1 #bf7330,2 #cb7a33,3 #d78136,4 #e38839,5 #a7642a,6 #b36b2d,7 #ef8f3c,8 #9b5d27,9 #8b5323,10 #7e4c20,11 #72441d,12 #663d1a,13 #ff9940,14 #4e2f14,15 #5a3617}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{color:#fff;touch-action:none;-webkit-user-select:none;user-select:none;background:#000;font-family:monospace}#game{display:flex;position:fixed;inset:0}:root{--screen-scale:1}@media (width>=1440px){:root{--screen-scale:2}}@media (width>=2880px){:root{--screen-scale:4}}body.kiosk{--screen-scale:1}@media (width>=2880px){body.kiosk{--screen-scale:2}}@media (width>=5760px){body.kiosk{--screen-scale:4}}.pane{height:100%;position:relative}body[data-game-mode=deathmatch] .pane,body.kiosk[data-network-mode=host] .pane{flex:50%}body[data-game-mode=singleplayer] .pane[data-player="0"],body[data-network-mode=host]:not(.kiosk):not(.client-window) .pane[data-player="0"]{flex:1}body[data-game-mode=singleplayer] .pane[data-player="1"],body[data-network-mode=host]:not(.kiosk):not(.client-window) .pane[data-player="1"]{display:none}body.kiosk #game{height:50vh;inset:0 0 auto}body.kiosk[data-game-mode=singleplayer] .pane[data-player="1"]{display:block}body.kiosk[data-game-mode=singleplayer] .pane[data-player="0"],body.kiosk[data-game-mode=singleplayer] .pane[data-player="1"]{flex:50%}body.client-window .pane{flex:1}.pane[data-active=false]{display:none}#game[data-active-renderers="1"] .pane[data-active=true]{flex:1}#game[data-active-renderers="2"] .pane[data-active=true]{flex:50%}.renderer{position:absolute;inset:0;container:pane/inline-size}.viewport{perspective:var(--perspective);perspective-origin:50%;position:absolute;inset:0;overflow:hidden}#loading-overlay{background:#000 url(/assets/menu/M_DOOM.png) 50% no-repeat;background-size:calc(82px * 4 * var(--screen-scale,1)) calc(40px * 4 * var(--screen-scale,1));image-rendering:pixelated;z-index:10000;pointer-events:none;opacity:0;transition:opacity .6s ease-out;position:fixed;inset:0}#loading-overlay.visible{opacity:1;transition:none}#loading-overlay.level-transition{background-image:none;transition:opacity .6s ease-out}#loading-overlay.level-transition.visible{transition:opacity .6s ease-in}body.kiosk #loading-overlay{background-position-x:calc(25vw - 82px * 4 * var(--screen-scale,1) / 2);bottom:50vh}@property --player-z{syntax:"<number>";inherits:true;initial-value:0}.scene{pointer-events:none;width:0;height:0;transform-style:preserve-3d;position:absolute;top:50%;left:50%}.scene *{transform-style:preserve-3d;backface-visibility:hidden;image-rendering:pixelated;position:absolute}.scene .ceiling,.scene .platform .floor{backface-visibility:visible}.sector{width:0;height:0;top:0;left:0}@property --z{syntax:"<number>";inherits:false;initial-value:0}@property --light{syntax:"<number>";inherits:true;initial-value:1}.viewport{background:url(/assets/textures/SKY1.png) 0 0/auto 70% repeat-x;background-position-x:calc(var(--player-angle) * 163px), 0;image-rendering:pixelated}.viewport:after{content:"";opacity:0;pointer-events:none;z-index:-1;background:#222;transition:opacity .5s 1s;position:absolute;inset:0}.wall{--x:calc((var(--start-x) + var(--end-x)) / 2);--y:calc((var(--start-y) + var(--end-y)) / 2);--delta-x:calc(var(--end-x) - var(--start-x));--delta-y:calc(var(--end-y) - var(--start-y));width:calc(hypot(var(--delta-x), var(--delta-y)) * 1px);height:calc((var(--ceiling-z) - var(--floor-z)) * 1px);background-repeat:repeat;background-position:calc(var(--texture-offset-x,0) * -1px) calc(var(--texture-offset-y,0) * -1px);transform-origin:0 0;transform:translate3d(calc(var(--start-x) * 1px), calc(var(--ceiling-z) * -1px), calc(var(--start-y) * -1px)) rotateY(atan2(var(--delta-y), var(--delta-x)));filter:brightness(var(--light,1))}body.show-wall-ids .wall{color:#fff;text-shadow:0 0 2px #000,0 0 2px #000;padding:2px;font-size:12px;overflow:hidden}button.wall{cursor:default;appearance:none;border:none;padding:0}@property --scroll-offset{syntax:"<length>";inherits:false;initial-value:0}@keyframes scroll-texture{0%{--scroll-offset:0px}to{--scroll-offset:-128px}}body.scroll-textures .wall.scroll-texture{background-position-x:calc(var(--texture-offset-x,0) * -1px + var(--scroll-offset));animation:3.66s linear infinite scroll-texture}.wall.unpegged{background-position-y:calc(100% + var(--texture-offset-y,0) * -1px)}.sky-wall{filter:none;display:none}body.show-sky-walls .sky-wall{background:#ff69b4;display:block}.floor{--x:calc((var(--min-x) + var(--max-x)) / 2);--y:calc((var(--min-y) + var(--max-y)) / 2);width:calc((var(--max-x) - var(--min-x)) * 1px);height:calc((var(--max-y) - var(--min-y)) * 1px);background-repeat:repeat;background-size:64px 64px;background-position:calc(var(--min-x) * -1px) calc(var(--max-y) * 1px);transform-origin:50%;transform:translate3d(calc(var(--min-x) * 1px), calc((var(--floor-z) + (var(--max-y) - var(--min-y)) / 2) * -1px), calc((var(--min-y) + var(--max-y)) / 2 * -1px)) rotateX(90deg);filter:brightness(var(--light,1))}body.show-sector-ids .floor:after{content:attr(data-sector);color:#fff;text-shadow:0 0 4px #000,0 0 4px #000;pointer-events:none;font-size:24px;position:absolute;top:50%;left:50%;translate:-50% -50%}@keyframes nukage{0%,33%{background-image:url(/assets/flats/NUKAGE1.png)}33%,66%{background-image:url(/assets/flats/NUKAGE2.png)}66%,to{background-image:url(/assets/flats/NUKAGE3.png)}}body.animated-flats .floor[data-texture^=NUKAGE]{animation:1s step-end infinite nukage}.ceiling{--x:calc((var(--min-x) + var(--max-x)) / 2);--y:calc((var(--min-y) + var(--max-y)) / 2);width:calc((var(--max-x) - var(--min-x)) * 1px);height:calc((var(--max-y) - var(--min-y)) * 1px);background-repeat:repeat;background-size:64px 64px;background-position:calc(var(--min-x) * -1px) calc(var(--max-y) * 1px);transform-origin:50%;transform:translate3d(calc(var(--min-x) * 1px), calc((var(--ceiling-z) + (var(--max-y) - var(--min-y)) / 2) * -1px), calc((var(--min-y) + var(--max-y)) / 2 * -1px)) rotateX(90deg);filter:brightness(var(--light,1))}.door{width:0;height:0;top:0;left:0}.door>.panel{width:0;height:0;transition:transform 1s ease-in-out;top:0;left:0;transform:translateY(0)}.door[data-state=open]>.panel{transform:translateY(var(--offset))}.lift{width:0;height:0;top:0;left:0}.platform{width:0;height:0;transition:transform 1s ease-in-out;top:0;left:0;transform:translateY(0)}.platform[data-state=lowered]{transform:translateY(var(--offset))}.crusher{width:0;height:0;transform:translateY(calc(var(--crusher-offset,0) * 1px));top:0;left:0}@keyframes light-glow{0%,to{--light:.75}50%{--light:1}}@keyframes light-blink{0%,49%{--light:1}50%,to{--light:.5}}@keyframes light-blink-fast{0%,49%{--light:1}50%,to{--light:.5}}@keyframes light-fire-flicker{0%,7%{--light:1}8%,15%{--light:.6}16%,23%{--light:.9}24%,31%{--light:.5}32%,47%{--light:1}48%,55%{--light:.7}56%,63%{--light:.85}64%,71%{--light:.55}72%,79%{--light:1}80%,87%{--light:.65}88%,to{--light:.9}}@keyframes light-flicker{0%,4%{--light:1}5%,8%{--light:.5}9%,50%{--light:1}51%,54%{--light:.5}55%,70%{--light:1}71%,73%{--light:.5}74%,to{--light:1}}body.sector-lights .light-glow{animation:1s ease-in-out infinite light-glow}body.sector-lights .light-blink{animation:1s step-end infinite light-blink}body.sector-lights .light-blink-fast{animation:.5s step-end infinite light-blink-fast}body.sector-lights .light-flicker{animation:2s step-end infinite light-flicker}body.sector-lights .light-fire-flicker{animation:1.5s step-end infinite light-fire-flicker}body.light-falloff .scene{--camera-forward-x:calc(sin(calc(var(--player-angle) * 57.2958deg)) * -1);--camera-forward-y:cos(calc(var(--player-angle) * 57.2958deg))}body.light-falloff .wall,body.light-falloff .floor,body.light-falloff .ceiling,body.light-falloff .enemy,body.light-falloff .barrel,body.light-falloff .pickup,body.light-falloff .decoration{--view-depth:calc((var(--x) - var(--player-x)) * var(--camera-forward-x) + (var(--y) - var(--player-y)) * var(--camera-forward-y));--light-falloff:clamp(.15, calc(1 - var(--view-depth) / 1500), 1)}body.light-falloff .wall,body.light-falloff .floor,body.light-falloff .ceiling,body.light-falloff .decoration img,body.light-falloff .sprite{filter:brightness(calc(var(--light,1) * var(--light-falloff)))}@property --cull-x{syntax:"<number>";inherits:false;initial-value:0}@property --cull-y{syntax:"<number>";inherits:false;initial-value:0}@property --cull-dist-sq{syntax:"<number>";inherits:false;initial-value:0}@keyframes cull-toggle{0%,49.9%{visibility:visible}50%,to{visibility:hidden}}@property --cull-beyond{syntax:"<number>";inherits:false;initial-value:0}body.css-distance-culling{--max-render-dist-sq:calc(2500 * 2500)}body.css-distance-culling .wall,body.css-distance-culling .floor,body.css-distance-culling .ceiling,body.css-distance-culling .enemy,body.css-distance-culling .barrel,body.css-distance-culling .pickup,body.css-distance-culling .decoration{--cull-x:calc(var(--x) - var(--player-x));--cull-y:calc(var(--y) - var(--player-y));--cull-dist-sq:calc(var(--cull-x) * var(--cull-x) + var(--cull-y) * var(--cull-y));--cull-beyond:clamp(0, calc(var(--cull-dist-sq) - var(--max-render-dist-sq)), 1);animation:1s step-end paused cull-toggle;animation-delay:calc(var(--cull-beyond) * -.5s)}@supports (display:if(style(--cull-beyond: 0): block; else: none)){body.css-distance-culling .wall,body.css-distance-culling .floor,body.css-distance-culling .ceiling,body.css-distance-culling .enemy,body.css-distance-culling .barrel,body.css-distance-culling .pickup,body.css-distance-culling .decoration{display:if(style(--cull-beyond: 0): block; else: none);animation:none}}@property --fov-tangent{syntax:"<number>";inherits:true;initial-value:1}@property --cull-depth{syntax:"<number>";inherits:false;initial-value:0}@property --cull-lateral{syntax:"<number>";inherits:false;initial-value:0}@property --cull-abs-lateral{syntax:"<number>";inherits:false;initial-value:0}@property --cull-outside{syntax:"<number>";inherits:false;initial-value:0}@property --cull-far{syntax:"<number>";inherits:false;initial-value:0}@property --cull-radius{syntax:"<number>";inherits:false;initial-value:0}@property --cull-any{syntax:"<number>";inherits:false;initial-value:0}body.css-frustum-culling{--max-render-dist-sq:calc(2500 * 2500)}body.css-frustum-culling .scene{--cam-fx:calc(sin(calc(var(--player-angle) * 57.2958deg)) * -1);--cam-fy:cos(calc(var(--player-angle) * 57.2958deg));--cam-rx:cos(calc(var(--player-angle) * 57.2958deg));--cam-ry:sin(calc(var(--player-angle) * 57.2958deg));--fov-tangent:calc(tan(atan2(50vw, var(--perspective))) + .15)}body.css-frustum-culling .wall{--cull-radius:calc(hypot(var(--end-x) - var(--start-x), var(--end-y) - var(--start-y)) / 2)}body.css-frustum-culling .floor,body.css-frustum-culling .ceiling{--cull-radius:calc(hypot(var(--max-x) - var(--min-x), var(--max-y) - var(--min-y)) / 2)}body.css-frustum-culling .wall,body.css-frustum-culling .floor,body.css-frustum-culling .ceiling,body.css-frustum-culling .enemy,body.css-frustum-culling .barrel,body.css-frustum-culling .pickup,body.css-frustum-culling .decoration{--cull-x:calc(var(--x) - var(--player-x));--cull-y:calc(var(--y) - var(--player-y));--cull-depth:calc(var(--cull-x) * var(--cam-fx) + var(--cull-y) * var(--cam-fy));--cull-lateral:calc(var(--cull-x) * var(--cam-rx) + var(--cull-y) * var(--cam-ry));--cull-abs-lateral:max(var(--cull-lateral), calc(var(--cull-lateral) * -1));--cull-outside:clamp(0, calc((var(--cull-abs-lateral) - var(--cull-depth) * var(--fov-tangent) - var(--cull-radius)) * 1000), 1);--cull-dist-sq:calc(var(--cull-x) * var(--cull-x) + var(--cull-y) * var(--cull-y));--cull-far:clamp(0, calc(var(--cull-dist-sq) - var(--max-render-dist-sq)), 1);--cull-any:clamp(0, calc((var(--cull-outside) + var(--cull-far)) * 1000), 1);animation:1s step-end paused cull-toggle;animation-delay:calc(var(--cull-any) * -.5s)}@supports (display:if(style(--cull-any: 0): block; else: none)){body.css-frustum-culling .wall,body.css-frustum-culling .floor,body.css-frustum-culling .ceiling,body.css-frustum-culling .enemy,body.css-frustum-culling .barrel,body.css-frustum-culling .pickup,body.css-frustum-culling .decoration{display:if(style(--cull-any: 0): block; else: none);animation:none}}.switch:after{content:"";background-size:inherit;background-position:inherit;background-repeat:inherit;opacity:0;position:absolute;inset:0}.switch[data-state=on]:after{opacity:1}.switch[data-texture=SW1BRCOM]:after{background-image:url(/assets/textures/SW2BRCOM.png)}.switch[data-texture=SW1BRN1]:after{background-image:url(/assets/textures/SW2BRN1.png)}.switch[data-texture=SW1BRN2]:after{background-image:url(/assets/textures/SW2BRN2.png)}.switch[data-texture=SW1BRNGN]:after{background-image:url(/assets/textures/SW2BRNGN.png)}.switch[data-texture=SW1BROWN]:after{background-image:url(/assets/textures/SW2BROWN.png)}.switch[data-texture=SW1COMM]:after{background-image:url(/assets/textures/SW2COMM.png)}.switch[data-texture=SW1COMP]:after{background-image:url(/assets/textures/SW2COMP.png)}.switch[data-texture=SW1DIRT]:after{background-image:url(/assets/textures/SW2DIRT.png)}.switch[data-texture=SW1EXIT]:after{background-image:url(/assets/textures/SW2EXIT.png)}.switch[data-texture=SW1GRAY]:after{background-image:url(/assets/textures/SW2GRAY.png)}.switch[data-texture=SW1GRAY1]:after{background-image:url(/assets/textures/SW2GRAY1.png)}.switch[data-texture=SW1METAL]:after{background-image:url(/assets/textures/SW2METAL.png)}.switch[data-texture=SW1PIPE]:after{background-image:url(/assets/textures/SW2PIPE.png)}.switch[data-texture=SW1SLAD]:after{background-image:url(/assets/textures/SW2SLAD.png)}.switch[data-texture=SW1STARG]:after{background-image:url(/assets/textures/SW2STARG.png)}.switch[data-texture=SW1STON1]:after{background-image:url(/assets/textures/SW2STON1.png)}.switch[data-texture=SW1STON2]:after{background-image:url(/assets/textures/SW2STON2.png)}.switch[data-texture=SW1STONE]:after{background-image:url(/assets/textures/SW2STONE.png)}.switch[data-texture=SW1STRTN]:after{background-image:url(/assets/textures/SW2STRTN.png)}@keyframes sprite-cycle{0%{background-position-x:0}to{background-position-x:calc(var(--w) * var(--frames) * -1px)}}@keyframes sprite-stop{0%{background-position-x:0}to{background-position-x:calc(var(--w) * (1 - var(--frames)) * 1px)}}@keyframes sprite-hide{0%{background-position-x:0}to{background-position-x:calc(var(--w) * (1 - var(--frames)) * 1px);visibility:hidden}}.sprite{--heading:0;--rows:1;width:calc(var(--w) * 1px);height:calc(var(--h) * 1px);background-repeat:no-repeat;background-size:calc(var(--w) * var(--cols,var(--frames)) * 1px) calc(var(--h) * var(--rows) * 1px);background-position-y:calc(var(--heading) * var(--h) * -1px);animation:sprite-cycle calc(var(--frames) * .25s) steps(var(--frames)) infinite}.sprite[data-state=attacking]{animation:sprite-stop .6s steps(calc(var(--frames) - 1)) forwards}.sprite[data-state=dead]{animation:sprite-stop calc(var(--frames) * .1s) steps(calc(var(--frames) - 1)) forwards}.enemy,.barrel,.pickup,.decoration{width:0;height:0;transform:translate3d(calc(var(--x) * 1px), calc(var(--floor-z) * -1px), calc(var(--y) * -1px))}.enemy{transition:--floor-z .4s ease-out}.pickup.collected{visibility:hidden}.decoration img,.pickup img,.sprite{transform-origin:50% 100%;transform:translateX(-50%) rotateY(calc(var(--player-angle) * 57.2958deg)) scaleX(var(--mirror,1));filter:brightness(var(--light,1));bottom:0}.sprite[data-type=soulsphere]{--w:25;--h:25;--frames:4;background-image:url(/assets/sprites/sheets/SOUL.png)}.sprite[data-type=health-bonus]{--w:14;--h:18;--frames:4;background-image:url(/assets/sprites/sheets/BON1.png)}.sprite[data-type=armor-bonus]{--w:16;--h:15;--frames:4;background-image:url(/assets/sprites/sheets/BON2.png)}.sprite[data-type=green-armor]{--w:31;--h:17;--frames:2;background-image:url(/assets/sprites/sheets/ARM1.png)}.sprite[data-type=blue-armor]{--w:31;--h:17;--frames:2;background-image:url(/assets/sprites/sheets/ARM2.png)}.sprite[data-type=invisibility]{--w:25;--h:25;--frames:4;background-image:url(/assets/sprites/sheets/PINS.png)}.projectile{rotate:y calc(var(--player-angle) * 57.2958deg);animation:projectile-move var(--duration) linear both, projectile-glow .15s ease-in-out infinite alternate;background-repeat:no-repeat}@keyframes projectile-move{0%{translate:calc(var(--start-x) * 1px) calc(var(--start-z) * -1px) calc(var(--start-y) * -1px)}to{translate:calc(var(--end-x) * 1px) calc(var(--end-z) * -1px) calc(var(--end-y) * -1px)}}@keyframes projectile-glow{0%{filter:brightness(1.8)}to{filter:brightness(2.5)}}.puff{transform-origin:50%;width:15px;height:15px;transform:translate3d(calc(var(--x) * 1px), calc(var(--z) * -1px), calc(var(--y) * -1px)) translate(-50%, -50%) rotateY(calc(var(--player-angle) * 57.2958deg));background:url(/assets/sprites/PUFF_SHEET.png) 0 0/60px 15px no-repeat;animation:.2s steps(3,end) forwards puff}@keyframes puff{0%{background-position-x:0}to{background-position-x:-45px}}.fireball-explosion{transform-origin:50%;width:50px;height:44px;transform:translate3d(calc(var(--x) * 1px - 25px), calc(var(--z) * -1px - 22px), calc(var(--y) * -1px)) rotateY(calc(var(--player-angle) * 57.2958deg));image-rendering:pixelated;animation:.3s step-end forwards fireball-explode}@keyframes fireball-explode{0%,33%{background:url(/assets/sprites/BAL1C0.png) 50%/contain no-repeat}33%,66%{background:url(/assets/sprites/BAL1D0.png) 50%/contain no-repeat}66%,to{background:url(/assets/sprites/BAL1E0.png) 50%/contain no-repeat}}.teleport-fog{transform-origin:50% 100%;width:42px;height:56px;transform:translate3d(calc(var(--x) * 1px), calc(var(--z) * -1px), calc(var(--y) * -1px)) translateX(-50%) rotateY(calc(var(--player-angle) * 57.2958deg));image-rendering:pixelated;animation:1.714s step-end forwards teleport-fog}@keyframes teleport-fog{0%{background:url(/assets/sprites/TFOGA0.png) bottom/contain no-repeat}10%{background:url(/assets/sprites/TFOGB0.png) bottom/contain no-repeat}20%{background:url(/assets/sprites/TFOGC0.png) bottom/contain no-repeat}30%{background:url(/assets/sprites/TFOGD0.png) bottom/contain no-repeat}40%{background:url(/assets/sprites/TFOGE0.png) bottom/contain no-repeat}50%{background:url(/assets/sprites/TFOGF0.png) bottom/contain no-repeat}60%{background:url(/assets/sprites/TFOGG0.png) bottom/contain no-repeat}70%{background:url(/assets/sprites/TFOGH0.png) bottom/contain no-repeat}80%{background:url(/assets/sprites/TFOGI0.png) bottom/contain no-repeat}90%{background:url(/assets/sprites/TFOGJ0.png) bottom/contain no-repeat}to{background:0 0}}.sprite[data-type=zombieman]{--w:48;--h:55;--cols:5;--frames:2;--rows:7;background-image:url(/assets/sprites/sheets/POSS.png)}.sprite[data-type=shotgun-guy]{--w:52;--h:60;--cols:5;--frames:2;--rows:7;background-image:url(/assets/sprites/sheets/SPOS.png)}.sprite[data-type=imp]{--w:58;--h:62;--cols:5;--frames:2;--rows:7;background-image:url(/assets/sprites/sheets/TROO.png)}.sprite[data-type=demon]{--w:64;--h:59;--cols:6;--frames:2;--rows:7;background-image:url(/assets/sprites/sheets/SARG.png)}.sprite[data-type=spectre]{--w:64;--h:59;--cols:6;--frames:2;--rows:7;filter:url(#fuzz);opacity:.35;background-image:url(/assets/sprites/sheets/SARG.png)}.sprite[data-type=spectre][data-state=dead]{filter:none}.sprite[data-type=baron]{--w:69;--h:74;--cols:7;--frames:2;--rows:7;background-image:url(/assets/sprites/sheets/BOSS.png)}body.all-enemies-shadow .enemy .sprite{filter:url(#fuzz);opacity:.35}.sprite[data-type=player]{--w:51;--h:56;--cols:7;--frames:4;--rows:7;backface-visibility:visible;background-image:url(/assets/sprites/sheets/PLAY.png);animation-play-state:paused}.enemy.player[data-player-index="1"] .sprite[data-type=player]{background-image:url(/assets/sprites/sheets/PLAY-red.png)}.enemy.player{backface-visibility:visible}.enemy.player.moving .sprite,.sprite[data-type=player][data-state=attacking],.sprite[data-type=player][data-state=dead]{animation-play-state:running}.sprite[data-type=player][data-state=dead]{animation-duration:calc(var(--frames) * .2s)}.sprite[data-type=player]:not([data-state]){animation-duration:calc(var(--frames) * .12s)}.pane[data-player="0"] .enemy.player[data-player-index="0"],.pane[data-player="1"] .enemy.player[data-player-index="1"],body.kiosk[data-game-mode=singleplayer] .pane[data-player="1"] .enemy.player[data-player-index="0"]{display:none}.enemy.player.collected{visibility:hidden}.sprite[data-type=barrel]{--w:60;--h:53;--cols:5;--frames:2;--rows:2;background-image:url(/assets/sprites/sheets/BAR1.png)}.barrel .sprite[data-state=dead]{animation-name:sprite-hide}.sprite[data-type=red-torch]{--w:26;--h:97;--frames:4;background-image:url(/assets/sprites/sheets/TRED.png)}.decoration.corpse img{image-rendering:pixelated;backface-visibility:visible}.renderer.dead .scene{--player-z:calc(var(--player-floor) + 10)}.renderer.dead .death-overlay{opacity:.35}.scene{translate:0 0 var(--perspective);rotate:x 0deg;transform:rotateY(calc(var(--player-angle) * -57.2958deg)) translate3d(calc(var(--player-x) * -1px), calc(var(--player-z) * 1px), calc(var(--player-y) * 1px));transition:--player-z .25s ease-out}@property --bob{syntax:"<number>";inherits:false;initial-value:0}@keyframes head-bob{0%,to{--bob:0}50%{--bob:6}}body.head-bob .scene{transform:rotateY(calc(var(--player-angle) * -57.2958deg)) translate3d(calc(var(--player-x) * -1px), calc(var(--player-z) * 1px + var(--bob,0) * 1px), calc(var(--player-y) * 1px));animation:.4s ease-in-out infinite paused head-bob}body.head-bob .moving .scene{animation-play-state:running}.weapon{bottom:calc(32px * var(--scale));margin-bottom:-30px;margin-left:calc(var(--w) * var(--scale) * -.5px);width:calc(var(--w) * var(--scale) * 1px);height:calc(var(--h) * var(--scale) * 1px);background-size:calc(var(--w) * var(--frames) * var(--scale) * 1px) calc(var(--h) * var(--scale) * 1px);image-rendering:pixelated;z-index:-1;pointer-events:none;background-position-x:0;background-repeat:no-repeat;transition:transform .3s ease-in .8s;position:absolute;left:50%}@supports (position-anchor:--status){.weapon{position-anchor:--status;bottom:anchor(top);left:anchor(center)}}@keyframes weapon-fire{0%{background-position-x:calc(var(--w) * var(--scale) * -1px)}to{background-position-x:calc(var(--w) * var(--frames) * var(--scale) * -1px)}}.weapon.firing{animation:weapon-fire var(--fire-duration) steps(calc(var(--frames) - 1)) forwards}@keyframes weapon-bob{0%{transform:translate(40px)translateY(-24px)}12.5%{transform:translate(28px)translateY(0)}25%{transform:translate(0)translateY(-24px)}37.5%{transform:translate(-28px)translateY(0)}50%{transform:translate(-40px)translateY(-24px)}62.5%{transform:translate(-28px)translateY(0)}75%{transform:translate(0)translateY(-24px)}87.5%{transform:translate(28px)translateY(0)}to{transform:translate(40px)translateY(-24px)}}body:not(.spectator) .renderer .weapon:not(.firing):not(.switching){animation:1.4s linear infinite paused weapon-bob}body:not(.spectator) .renderer.moving .weapon:not(.firing):not(.switching){animation-play-state:running}@keyframes weapon-switch{0%{transform:translateY(0)}40%{transform:translateY(110%)}60%{transform:translateY(110%)}to{transform:translateY(0)}}.weapon.switching{transition:none;animation:.4s ease-in-out forwards weapon-switch}.renderer.dead .weapon{transform:translateY(110%)}.weapon[data-type=FIST]{--w:147;--h:76;--frames:4;background-image:url(/assets/weapons/FIST.png)}.weapon[data-type=PISTOL]{--w:79;--h:103;--frames:5;background-image:url(/assets/weapons/PISTOL.png)}.weapon[data-type=SHOTGUN]{--w:119;--h:151;--frames:6;background-image:url(/assets/weapons/SHOTGUN.png)}.weapon[data-type=CHAINGUN]{--w:114;--h:103;--frames:3;background-image:url(/assets/weapons/CHAINGUN.png)}.weapon[data-type=CHAINGUN].firing{animation:.3s steps(2,end) infinite chaingun-fire}@keyframes chaingun-fire{0%{background-position-x:calc(var(--w) * var(--scale) * -1px)}to{background-position-x:calc(var(--w) * 3 * var(--scale) * -1px)}}.weapon[data-type=ROCKET]{--w:105;--h:119;--frames:5;background-image:url(/assets/weapons/ROCKET.png)}.weapon[data-type=CHAINSAW]{--w:154;--h:89;--frames:4;background-image:url(/assets/weapons/CHAINSAW.png)}.hud{--scale:3;z-index:1000;pointer-events:none;position:absolute;inset:0}@container pane (width<=960px){.hud{--scale:2}}.status{anchor-name:--status;pointer-events:auto;image-rendering:pixelated;justify-content:center;transition:transform .3s ease-in .8s;display:flex;position:absolute;bottom:0;left:0;right:0}@container pane (width<=640px){.status{background:#50505099;flex-wrap:wrap}}.hud-section{height:calc(32px * var(--scale));background:url(/assets/hud/STBAR.png) no-repeat;background-size:calc(320px * var(--scale)) calc(32px * var(--scale));position:relative;overflow:hidden}.hud-section-ammo{width:calc(48px * var(--scale));background-position-x:0}.hud-section-health{width:calc(58px * var(--scale));background-position-x:calc(-48px * var(--scale))}.hud-section-arms,.hud-section-frags{width:calc(37px * var(--scale));background-position-x:calc(-106px * var(--scale))}.hud-section-face{width:calc(36px * var(--scale));background-position-x:calc(-143px * var(--scale))}.hud-section-armor{width:calc(57px * var(--scale));background-position-x:calc(-179px * var(--scale))}.hud-section-keys{width:calc(13px * var(--scale));background-position-x:calc(-236px * var(--scale))}.hud-section-ammo-types{width:calc(71px * var(--scale));background-position-x:calc(-249px * var(--scale))}.hud-number{--glyph:calc(14px * var(--scale));height:calc(16px * var(--scale));width:calc(var(--glyph) * 3);font-family:STBIG,monospace;font-size:calc(16px * var(--scale));text-align:right;color:#cb0000;-webkit-font-smoothing:none;line-height:1;display:block;position:absolute}.hud-section-health .hud-number,.hud-section-armor .hud-number{width:calc(var(--glyph) * 4)}.hud-section-ammo .hud-number{left:calc(2px * var(--scale));top:calc(3px * var(--scale))}.hud-section-health .hud-number,.hud-section-armor .hud-number{left:0;top:calc(3px * var(--scale))}.hud-section-face{background-image:url(/assets/hud/STFB0.png),url(/assets/hud/STBAR.png);background-size:calc(36px * var(--scale)) calc(31px * var(--scale)), calc(320px * var(--scale)) calc(32px * var(--scale));background-position:0 calc(1px * var(--scale)), calc(-143px * var(--scale)) 0;background-repeat:no-repeat;overflow:hidden}.face-sprite{left:50%;top:calc(1px * var(--scale));width:calc(24px * var(--scale));height:calc(31px * var(--scale));background:url(/assets/hud/FACE_SHEET.png) no-repeat;background-size:calc(72px * var(--scale)) calc(155px * var(--scale));background-position-y:calc(var(--face-row,0) * -31px * var(--scale));image-rendering:pixelated;animation:1.5s step-end infinite face-idle;position:absolute;transform:translate(-50%)}@keyframes face-idle{0%,to{background-position-x:0}33%{background-position-x:calc(-24px * var(--scale))}66%{background-position-x:calc(-48px * var(--scale))}}.renderer.dead .face-sprite{background-position-x:0;animation:none}body[data-game-mode=deathmatch] .pane[data-player="1"] .hud-section-face{background-image:url(/assets/hud/STFB3.png),url(/assets/hud/STBAR.png)}body[data-game-mode=deathmatch] .pane[data-player="2"] .hud-section-face{background-image:url(/assets/hud/STFB1.png),url(/assets/hud/STBAR.png)}body[data-game-mode=deathmatch] .pane[data-player="3"] .hud-section-face{background-image:url(/assets/hud/STFB2.png),url(/assets/hud/STBAR.png)}.hud-section-keys{padding-top:calc(3px * var(--scale));padding-bottom:calc(3px * var(--scale));flex-direction:column;justify-content:space-evenly;align-items:center;display:flex}.key{width:calc(16px * var(--scale));height:calc(7px * var(--scale));image-rendering:pixelated;opacity:.15;background-position:50%;background-repeat:no-repeat;background-size:contain}.key-blue{background-image:url(/assets/hud/STKEYS0.png)}.key-yellow{background-image:url(/assets/hud/STKEYS1.png)}.key-red{background-image:url(/assets/hud/STKEYS2.png)}.renderer.has-blue-key .key-blue,.renderer.has-yellow-key .key-yellow,.renderer.has-red-key .key-red{opacity:1}.hud-section-arms{background-image:url(/assets/hud/STARMS.png),url(/assets/hud/STBAR.png);background-size:calc(40px * var(--scale)) calc(32px * var(--scale)), calc(320px * var(--scale)) calc(32px * var(--scale));background-position:calc(-2px * var(--scale)) 0, calc(-106px * var(--scale)) 0;background-repeat:no-repeat}.hud-section-frags,body[data-game-mode=deathmatch] .hud-section-arms{display:none}body[data-game-mode=deathmatch] .hud-section-frags{display:block}.frags-display{width:calc(var(--glyph) * 2);left:calc(4px * var(--scale));top:calc(3px * var(--scale))}.slot{width:calc(4px * var(--scale));height:calc(6px * var(--scale));image-rendering:pixelated;background-size:100% 100%;position:absolute}.slot[data-slot="2"]{left:calc(5px * var(--scale));top:calc(4px * var(--scale))}.slot[data-slot="3"]{left:calc(17px * var(--scale));top:calc(4px * var(--scale))}.slot[data-slot="4"]{left:calc(29px * var(--scale));top:calc(4px * var(--scale))}.slot[data-slot="5"]{left:calc(5px * var(--scale));top:calc(14px * var(--scale))}.slot[data-slot="6"]{left:calc(17px * var(--scale));top:calc(14px * var(--scale))}.slot[data-slot="7"]{left:calc(29px * var(--scale));top:calc(14px * var(--scale))}.slot[data-slot="2"]{background-image:url(/assets/hud/STGNUM2.png)}.slot[data-slot="3"]{background-image:url(/assets/hud/STGNUM3.png)}.slot[data-slot="4"]{background-image:url(/assets/hud/STGNUM4.png)}.slot[data-slot="5"]{background-image:url(/assets/hud/STGNUM5.png)}.slot[data-slot="6"]{background-image:url(/assets/hud/STGNUM6.png)}.slot[data-slot="7"]{background-image:url(/assets/hud/STGNUM7.png)}.renderer.has-weapon-2 .slot[data-slot="2"]{background-image:url(/assets/hud/STYSNUM2.png)}.renderer.has-weapon-3 .slot[data-slot="3"]{background-image:url(/assets/hud/STYSNUM3.png)}.renderer.has-weapon-4 .slot[data-slot="4"]{background-image:url(/assets/hud/STYSNUM4.png)}.renderer.has-weapon-5 .slot[data-slot="5"]{background-image:url(/assets/hud/STYSNUM5.png)}.renderer.has-weapon-6 .slot[data-slot="6"]{background-image:url(/assets/hud/STYSNUM6.png)}.renderer.has-weapon-7 .slot[data-slot="7"]{background-image:url(/assets/hud/STYSNUM7.png)}.hud-section-ammo-types{position:relative}.ammo-row{height:calc(6px * var(--scale));position:absolute;left:0}.ammo-row[data-ammo=bullets]{top:calc(5px * var(--scale))}.ammo-row[data-ammo=shells]{top:calc(11px * var(--scale))}.ammo-row[data-ammo=rockets]{top:calc(17px * var(--scale))}.ammo-row[data-ammo=cells]{top:calc(23px * var(--scale))}.ammo-cur,.ammo-max{position:absolute}.ammo-cur{left:calc(28px * var(--scale))}.ammo-max{left:calc(52px * var(--scale))}.small-number{--glyph:calc(4px * var(--scale));width:calc(var(--glyph) * 3);height:calc(6px * var(--scale));font-family:STYSN,monospace;font-size:calc(6px * var(--scale));text-align:right;color:gold;-webkit-font-smoothing:none;line-height:1;display:block;position:absolute}.damage-overlay,.pickup-overlay,.teleport-overlay,.death-overlay{pointer-events:none;opacity:0;position:absolute;inset:0}.damage-overlay{background:red}.pickup-overlay{background:gold}.teleport-overlay{background:#0f0}.death-overlay{background:#b00000;transition:opacity 1s}@keyframes flash-overlay{0%{opacity:.35}to{opacity:0}}.renderer.hurt .damage-overlay,.renderer.pickup-flash .pickup-overlay,.renderer.teleport-flash .teleport-overlay{animation:.3s ease-out forwards flash-overlay}.respawn-prompt{z-index:1100;pointer-events:none;font-family:STCFN,monospace;font-size:calc(32px * var(--screen-scale,1));padding:calc(32px * var(--screen-scale,1));text-align:center;color:gold;text-shadow:0 0 8px #000000e6;opacity:0;justify-content:center;align-items:center;display:none;position:absolute;inset:0}@keyframes respawn-prompt-fade-in{to{opacity:1}}body[data-game-mode=deathmatch] .renderer.dead .respawn-prompt{animation:.4s ease-out 2s forwards respawn-prompt-fade-in;display:flex}.join-prompt,.join-ready{z-index:1100;pointer-events:none;font-family:STCFN,monospace;font-size:calc(32px * var(--screen-scale,1));padding:calc(32px * var(--screen-scale,1));color:#cb0000;text-align:center;background:#00000073;justify-content:center;align-items:center;line-height:1.5;display:none;position:absolute;inset:0}.join-prompt{animation:1.6s ease-in-out infinite join-prompt-pulse}@keyframes join-prompt-pulse{0%,to{opacity:.6}50%{opacity:1}}body[data-game-mode=deathmatch]:not([data-game-state=attract]) .pane[data-claim-state=prompting] .join-prompt,body[data-game-mode=deathmatch]:not([data-game-state=attract]) .pane[data-claim-state=ready] .join-ready{display:flex}body[data-game-mode=deathmatch]:not([data-game-state=attract]) .pane[data-claim-state=waiting]{filter:brightness(.3)}body[data-game-mode=deathmatch] .pane[data-claim-state=prompting] .hud .status,body[data-game-mode=deathmatch] .pane[data-claim-state=ready] .hud .status,body[data-game-mode=deathmatch] .pane[data-claim-state=waiting] .hud .status{visibility:hidden}.pane-win{z-index:1200;image-rendering:pixelated;pointer-events:none;background:url(/assets/intermission/WIMAP0.png) 50%/cover no-repeat;justify-content:center;align-items:center;display:none;position:fixed;inset:0}body[data-game-state=ended] .pane-win{display:flex}.scoreboard{color:#cb0000;text-shadow:0 0 16px #000000f2;flex-direction:column;align-items:center;gap:4px;font-family:STCFN,monospace;display:flex}.scoreboard-subtitle{height:calc(16px * 2 * var(--screen-scale,1));image-rendering:pixelated;margin-bottom:calc(16px * var(--screen-scale,1))}.scoreboard-banner{font-size:calc(18px * var(--screen-scale,1));color:gold;font-palette:--stcfn-white;margin-bottom:calc(32px * var(--screen-scale,1))}.scoreboard-grid{grid-template-columns:calc(56px * var(--screen-scale,1)) repeat(var(--player-count,2), calc(64px * var(--screen-scale,1))) auto;grid-auto-rows:calc(56px * var(--screen-scale,1));gap:calc(6px * var(--screen-scale,1));place-items:center;display:grid}.scoreboard-total-label{padding-left:calc(12px * var(--screen-scale,1))}.scoreboard-total-label img{height:calc(7px * 3 * var(--screen-scale,1));image-rendering:pixelated;display:block}.scoreboard-swatch{image-rendering:pixelated;width:calc(48px * var(--screen-scale,1));height:calc(48px * var(--screen-scale,1));background:50%/cover no-repeat;border:1px solid #0006}.scoreboard-swatch.player-0{background-image:url(/assets/hud/STFB0.png)}.scoreboard-swatch.player-1{background-image:url(/assets/hud/STFB3.png)}.scoreboard-swatch.player-2{background-image:url(/assets/hud/STFB1.png)}.scoreboard-swatch.player-3{background-image:url(/assets/hud/STFB2.png)}.scoreboard-swatch-victim:after,.scoreboard-swatch-killer:after{content:"";image-rendering:pixelated;background:50%/contain no-repeat;position:absolute;inset:0}.scoreboard-swatch{position:relative}.pane[data-player="0"] .scoreboard-swatch-victim.player-0:after,.pane[data-player="1"] .scoreboard-swatch-victim.player-1:after,.pane[data-player="2"] .scoreboard-swatch-victim.player-2:after,.pane[data-player="3"] .scoreboard-swatch-victim.player-3:after{background-image:url(/assets/hud/STFDEAD0.png)}.pane[data-player="0"] .scoreboard-swatch-killer.player-0:after,.pane[data-player="1"] .scoreboard-swatch-killer.player-1:after,.pane[data-player="2"] .scoreboard-swatch-killer.player-2:after,.pane[data-player="3"] .scoreboard-swatch-killer.player-3:after{background-image:url(/assets/hud/STFST00.png)}.scoreboard-cell{font-family:WINUM,monospace;font-size:calc(24px * var(--screen-scale,1));text-align:center;min-width:calc(48px * var(--screen-scale,1));text-shadow:none}.scoreboard-total{color:gold;font-palette:--stcfn-white;padding-left:calc(12px * var(--screen-scale,1))}.pane-intermission{z-index:1200;image-rendering:pixelated;pointer-events:none;background:url(/assets/intermission/WIMAP0.png) 50%/cover no-repeat;justify-content:center;align-items:center;display:none;position:fixed;inset:0}body[data-game-state=intermission] .pane-intermission{display:flex}.intermission{align-items:center;gap:calc(64px * var(--screen-scale,1));color:#cb0000;flex-direction:column;font-family:STCFN,monospace;display:flex}.intermission-header{align-items:center;gap:calc(12px * var(--screen-scale,1));flex-direction:column;display:flex}.intermission-level,.intermission-finished{height:calc(12px * 2 * var(--screen-scale,1));image-rendering:pixelated}.intermission-rows{grid-template-columns:auto calc(120px * var(--screen-scale,1));column-gap:calc(160px * var(--screen-scale,1));row-gap:calc(24px * var(--screen-scale,1));align-items:center;display:grid}.intermission-row{display:contents}.intermission-row-time>*{margin-top:calc(24px * var(--screen-scale,1))}.intermission-label{height:calc(12px * 2 * var(--screen-scale,1));image-rendering:pixelated;justify-self:start}.intermission-value{font-family:WINUM,monospace;font-size:calc(24px * var(--screen-scale,1));min-width:calc(72px * var(--screen-scale,1));text-align:right;justify-self:end}.pane-timer{top:calc(12px * var(--screen-scale,1) + env(safe-area-inset-top,0px));z-index:1100;font-family:STCFN,monospace;font-size:calc(28px * var(--screen-scale,1));color:#dc0000;text-shadow:0 0 8px #000000e6;pointer-events:none;display:none;position:fixed;left:50%;transform:translate(-50%)}body[data-game-mode=deathmatch][data-timer-active=true] .pane-timer{display:block}.pane-attract{z-index:1300;justify-content:center;align-items:center;gap:calc(48px * var(--screen-scale,1));font-family:STCFN,monospace;font-size:calc(32px * var(--screen-scale,1));padding:calc(32px * var(--screen-scale,1));color:gold;text-shadow:0 0 16px #000000f2;pointer-events:none;text-align:center;background:#00000073;flex-direction:column;display:none;position:fixed;inset:0}.pane-attract-logo{width:calc(82px * 4 * var(--screen-scale,1));image-rendering:pixelated;-webkit-user-select:none;user-select:none}.pane-attract span{animation:1.6s ease-in-out infinite attract-pulse}@keyframes attract-pulse{0%,to{opacity:.55}50%{opacity:1}}body[data-game-state=attract] .pane-attract{display:flex}body[data-game-state=attract] .hud,body[data-game-state=attract] #spectator,body[data-game-state=attract] #ui-buttons,body[data-game-state=attract] #menu-button{display:none}body.kiosk .pane-attract,body.kiosk .pane-win,body.kiosk .pane-intermission,body.kiosk .pane-timer,body.kiosk .pane-network-lobby{position:absolute}body[data-game-mode=deathmatch]:not(.client-window):not(.kiosk) .pane[data-player="1"] .pane-attract,body[data-game-mode=deathmatch]:not(.client-window):not(.kiosk) .pane[data-player="1"] .pane-win,body[data-game-mode=deathmatch]:not(.client-window):not(.kiosk) .pane[data-player="1"] .pane-intermission,body[data-game-mode=deathmatch]:not(.client-window):not(.kiosk) .pane[data-player="1"] .pane-timer,body[data-network-mode=host]:not(.client-window):not(.kiosk) .pane[data-player="1"] .pane-network-lobby{display:none}.renderer.powerup-invulnerability .viewport{filter:saturate(0)brightness(1.5)sepia()hue-rotate(90deg)}.renderer.powerup-berserk .viewport{filter:saturate(1.3)}.renderer.powerup-invisibility .weapon{opacity:.3}.renderer.powerup-radsuit .viewport{filter:sepia(.3)hue-rotate(60deg)brightness(1.1)}.renderer.powerup-lightamp .wall,.renderer.powerup-lightamp .floor,.renderer.powerup-lightamp .ceiling{--light:1!important}#debug-menu{z-index:999;color:#aaa;cursor:default;background:#000000b3;border:1px solid #444;padding:4px 8px;font-family:monospace;font-size:12px;position:fixed;top:58px;left:12px}#debug-menu summary{cursor:pointer;-webkit-user-select:none;user-select:none}#debug-menu label{cursor:pointer;-webkit-user-select:none;user-select:none;padding:2px 0;display:block}#menu-button{top:calc(12px + env(safe-area-inset-top,0px));left:calc(30px + env(safe-area-inset-left,0px));z-index:999;width:82px;height:40px;image-rendering:pixelated;cursor:pointer;background:url(/assets/menu/M_DOOM.png) 50%/contain no-repeat;border:none;align-items:flex-end;padding:0;transition:filter .15s;display:flex;position:fixed}#menu-button:hover{filter:drop-shadow(0 0 8px #639)drop-shadow(0 0 16px #639)}#menu-button svg{opacity:.4;position:absolute;top:10px;left:-26px;rotate:-90deg}body.client-window #menu-button{pointer-events:none;cursor:default}body.client-window #menu-button:hover{filter:none}#menu-overlay{z-index:1100;background:#000c;justify-content:center;padding:120px 20px 80px;transition:opacity .3s ease-out,scale .3s ease-out;display:flex;position:fixed;inset:0;overflow-y:auto}#menu-overlay[hidden]{display:none}#menu-overlay.showing{opacity:0;transition:none;scale:1.15}#menu-overlay.hiding{opacity:0;scale:1.15}#menu-content{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:40px;display:flex}#menu-inner{flex-direction:column;align-items:center;display:flex}#menu-about{font-palette:--stcfn-white;color:#888;text-align:center;text-transform:uppercase;max-width:480px;margin:120px 0 40px;padding:0 40px;font-family:STCFN,monospace;font-size:11px;line-height:1.6}#menu-about p{margin-bottom:1em}#menu-about a{color:#aaa}.menu-column{flex-direction:column;align-items:center;gap:32px;display:flex}.menu-section{flex-direction:column;align-items:center;display:flex}.menu-heading{font-palette:--stcfn-white;color:#666;text-transform:uppercase;margin-bottom:12px;font-family:STCFN,monospace;font-size:12px}.menu-episode{image-rendering:pixelated;height:15px;margin-bottom:8px}.menu-level-list{flex-direction:column;align-items:center;gap:2px;display:flex}.menu-level{cursor:pointer;opacity:.6;background:0 0;border:none;align-items:center;gap:4px;padding:2px 4px;transition:opacity .1s;display:flex}.menu-level:hover,.menu-level.active{opacity:1}.menu-level .level-name{height:12px;image-rendering:pixelated}.menu-skill{cursor:pointer;opacity:.6;background:0 0;border:none;align-items:center;gap:4px;padding:4px;transition:opacity .1s;display:flex}.menu-skill:hover,.menu-skill.active{opacity:1}.menu-skill img{image-rendering:pixelated}.menu-mode{cursor:pointer;opacity:.6;background:0 0;border:none;align-items:center;gap:4px;padding:4px;transition:opacity .1s;display:flex}.menu-mode:hover,.menu-mode.active{opacity:1}.menu-mode .menu-mode-label{color:#dc0000;text-transform:uppercase;padding:4px 0;font-family:STCFN,monospace;font-size:16px}.menu-action{cursor:pointer;opacity:.6;background:0 0;border:none;align-items:center;gap:4px;padding:4px;transition:opacity .1s;display:flex}.menu-action:hover{opacity:1}.menu-action .menu-action-label{color:#dc0000;text-transform:uppercase;padding:4px 0;font-family:STCFN,monospace;font-size:16px}.menu-level.active:before,.menu-skill.active:before,.menu-mode.active:before{content:"";width:20px;height:19px;image-rendering:pixelated;background:url(/assets/menu/M_SKULL1.png) 50%/contain no-repeat;flex-shrink:0}.menu-level:before,.menu-skill:before,.menu-mode:before,.menu-action:before,.menu-level:after,.menu-skill:after,.menu-mode:after{content:"";flex-shrink:0;width:20px;height:19px}body.kiosk #menu-overlay{bottom:50vh;right:50vw}.pane-network-lobby{z-index:1200;image-rendering:pixelated;color:#fff;pointer-events:none;background:url(/assets/intermission/WIMAP0.png) 50%/cover no-repeat;justify-content:center;align-items:center;font-family:STCFN,monospace;display:none;position:fixed;inset:0}body[data-network-mode=host][data-game-state=lobby] .pane-network-lobby,body.network-client[data-game-state=lobby] .pane-network-lobby{display:flex}.network-lobby-inner{flex-direction:column;align-items:center;gap:24px;min-width:360px;padding:32px;display:flex}.network-lobby-title{color:#dc0000;text-transform:uppercase;letter-spacing:4px;font-size:28px}.network-slots{flex-direction:column;gap:6px;width:100%;margin:0;padding:0;list-style:none;display:flex}.network-slot{text-transform:uppercase;align-items:center;gap:12px;padding:6px 12px;font-size:16px;display:flex}.network-slot .network-slot-label{color:#ccc}.network-slot-swatch{width:calc(48px * var(--screen-scale,1));height:calc(48px * var(--screen-scale,1));image-rendering:pixelated;background:50%/cover no-repeat;border:1px solid #0006;flex-shrink:0;position:relative}.network-slot-swatch.player-0{background-image:url(/assets/hud/STFB0.png)}.network-slot-swatch.player-1{background-image:url(/assets/hud/STFB3.png)}.network-slot-swatch.player-2{background-image:url(/assets/hud/STFB1.png)}.network-slot-swatch.player-3{background-image:url(/assets/hud/STFB2.png)}.network-slot:not([data-occupant=empty]) .network-slot-swatch:after{content:"";image-rendering:pixelated;background:url(/assets/hud/STFST00.png) 50%/contain no-repeat;position:absolute;inset:0}.network-invite{flex-direction:column;align-items:center;gap:12px;margin-top:8px;display:flex}.network-invite-row{align-items:baseline;gap:12px;display:flex}.network-invite-label{color:#888;text-transform:uppercase;letter-spacing:1px;font-size:12px}.network-invite-code{color:#fff;letter-spacing:6px;font-size:28px}.network-invite-qr{box-sizing:content-box;background:#fff;width:160px;height:160px;padding:8px}.network-invite-qr svg{shape-rendering:crispedges;width:100%;height:100%;display:block}.network-invite-qr:empty{display:none}.network-action-prompt{color:#dc0000;text-transform:uppercase;letter-spacing:2px;min-height:1.2em;margin-top:8px;font-size:16px}body[data-network-ready=true] .pane[data-player="0"] .network-action-prompt:after{content:"Press fire to start game"}body[data-network-ready=true] .pane:not([data-player="0"]) .network-action-prompt:after{content:"Waiting for game to start";color:#ccc}@property --spectator-offset-x{syntax:"<number>";inherits:true;initial-value:0}@property --spectator-offset-y{syntax:"<number>";inherits:true;initial-value:0}@property --spectator-height{syntax:"<number>";inherits:true;initial-value:3000}@property --spectator-angle{syntax:"<number>";inherits:true;initial-value:0}@property --follow-height{syntax:"<number>";inherits:true;initial-value:300}@property --player-floor{syntax:"<number>";inherits:true;initial-value:0}body.spectator:not(.follow-mode) .scene{translate:0 0 var(--perspective);rotate:x -70deg;transform:rotateY(calc(var(--spectator-angle) * 57.2958deg)) translate3d(calc((var(--player-x) + var(--spectator-offset-x)) * -1px), calc(var(--spectator-height) * 1px), calc((var(--player-y) + var(--spectator-offset-y)) * 1px));transition:none}body.spectator.follow-mode .scene{--follow-dist:calc(var(--follow-height) * .7);translate:0 10vh var(--perspective);rotate:x -55deg;transform:rotateY(calc(var(--player-angle) * -57.2958deg)) translate3d(calc((var(--player-x) + sin(calc(var(--player-angle) * 57.2958deg)) * var(--follow-dist)) * -1px), calc((var(--follow-height) + var(--player-floor)) * 1px), calc((var(--player-y) - cos(calc(var(--player-angle) * 57.2958deg)) * var(--follow-dist)) * 1px));transition:none}body.spectator.follow-mode #player>.sprite{transform:translateX(-50%) rotateY(calc(var(--player-angle) * 57.2958deg)) scaleX(var(--mirror,1))}body.spectator .viewport:after{opacity:1;transition:opacity 1.5s}body.spectator .status{pointer-events:none;transition-delay:0s;transform:translateY(100%)}body.spectator .weapon{pointer-events:none;transition-delay:0s;transform:translateY(calc(100% + 100px))}#player{width:0;height:0;transform:translate3d(calc(var(--player-x) * 1px), calc(var(--player-floor) * -1px), calc(var(--player-y) * -1px));display:none;top:0;left:0;backface-visibility:visible!important}body.spectator #player{display:block}body.spectator #player>.sprite{animation:sprite-cycle calc(var(--frames) * .15s) steps(var(--frames)) infinite paused;opacity:1;transition:opacity 1s .5s}@starting-style{body.spectator #player>.sprite{opacity:0}}body.spectator #player>.marker{opacity:.4}@starting-style{body.spectator #player>.marker{opacity:0}}#player>.marker{--marker-color:#fff;opacity:0;width:80px;height:80px;transform:translateY(-10px) rotateX(90deg) rotateZ(calc(var(--player-angle) * -57.2958deg));background:conic-gradient(from -45deg, var(--marker-color) 0deg, var(--marker-color) 90deg, transparent 90deg);filter:drop-shadow(0 0 8px var(--marker-color));border-radius:50%;margin:-50px 0 0 -40px;transition:opacity 1s .5s;-webkit-mask:radial-gradient(circle,#0000 60%,#000 63%);mask:radial-gradient(circle,#0000 60%,#000 63%);backface-visibility:visible!important}#player>.marker.firing{--marker-color:#f80}#player>.sprite{opacity:0;transform-origin:50% 100%;transform:translateX(-50%) rotateY(calc(var(--spectator-angle,0) * -57.2958deg)) scaleX(var(--mirror,1));--w:45;--h:56;--frames:4;--rows:5;animation-play-state:paused;animation-duration:calc(var(--frames) * .15s);background-image:url(/assets/sprites/sheets/PLAY.png);transition:opacity .3s;bottom:0;backface-visibility:visible!important}.renderer.moving #player>.sprite{animation-play-state:running,running}#player:before{content:"";filter:blur(4px);background:#00000080;border-radius:50%;width:32px;height:32px;margin:-16px 0 0 -16px;position:absolute;transform:rotateX(90deg);backface-visibility:visible!important}body.spectator .scene :not(.sector,.ceiling){backface-visibility:visible}body.spectator .scene .ceiling{display:none}#aim-line{z-index:998;pointer-events:none;background:#ffffff26;width:1px;display:none;position:fixed;top:12px;bottom:55%;left:50%}body.spectator.follow-mode #aim-line{display:block}body.spectator #spectator-button img{filter:invert()}body[data-game-mode=deathmatch] #spectator,body[data-game-mode=deathmatch] #spectator-button{display:none}#spectator-controls{anchor-name:--spectator-controls;bottom:calc(20px + env(safe-area-inset-bottom,0px));left:calc(20px + env(safe-area-inset-left,0px));right:calc(20px + env(safe-area-inset-right,0px));z-index:1003;opacity:1;justify-content:space-between;align-items:flex-end;padding:8px;transition:opacity .3s;display:flex;position:fixed}#spectator-controls.hidden{opacity:0;pointer-events:none}#spectator-controls button{color:#ddd;cursor:pointer;-webkit-user-select:none;user-select:none;touch-action:manipulation;background:#333;border:none;width:40px;height:40px;font-size:17px;box-shadow:0 2px #000,0 -2px #000,2px 0 #000,-2px 0 #000,inset -2px -2px #555}#spectator-controls button img{filter:invert(.67);width:22px;height:22px;margin-top:2px;transition:filter .15s}#spectator-controls button:hover{color:#fff;background:#444}#spectator-controls button:hover img{filter:invert()}#spectator-controls button:active,#spectator-controls button.pressed{color:#fff;background:#555;box-shadow:0 2px #000,0 -2px #000,2px 0 #000,-2px 0 #000}#spectator-controls button:active img,#spectator-controls button.pressed img{filter:invert()}.spectator-group{gap:10px;transition:opacity .3s;display:flex}body.follow-mode #spectator-rotate,body.follow-mode #spectator-arrows{opacity:0;pointer-events:none;visibility:hidden;width:0;height:0;overflow:hidden}.spectator-stack{flex-direction:column;gap:10px;display:flex}#spectator-arrows{grid-template-rows:repeat(2,40px);grid-template-columns:repeat(3,40px);gap:10px;display:grid}#spectator-arrows button:first-child{grid-area:1/2}#spectator-arrows button:nth-child(2){grid-area:2/1}#spectator-arrows button:nth-child(3){grid-area:2/2}#spectator-arrows button:nth-child(4){grid-area:2/3}#spectator-tabs{gap:0}.spectator-tab{width:auto!important;height:40px!important;padding:0 12px!important}.spectator-tab img{filter:invert(.67);width:26px;height:26px;margin-top:2px;transition:filter .15s}.spectator-tab.active img,.spectator-tab:hover img{filter:invert()}.spectator-tab.active{color:#fff;background:#777!important}#touch-controls{display:none}@media (pointer:coarse){#touch-controls{z-index:1001;pointer-events:none;display:block;position:fixed;inset:0}body[data-game-mode=deathmatch] #touch-controls{display:none}}#touch-look-zone{position-anchor:--status;top:calc(56px + env(safe-area-inset-top,0px));bottom:anchor(top);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;margin-bottom:130px;position:fixed;left:0;right:0}#touch-joystick-zone{position-anchor:--status;bottom:anchor(top);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;width:160px;height:160px;margin-bottom:8px;transition:bottom .3s ease-in-out;position:fixed;left:0}#touch-joystick-base{position-anchor:--status;bottom:anchor(top);pointer-events:none;z-index:1002;background:#ffffff1a;border:none;border-radius:50%;width:100px;height:100px;margin-bottom:16px;transition:bottom .3s ease-in-out;position:fixed;left:24px}#touch-joystick-knob{background:#ffffff59;border-radius:50%;width:44px;height:44px;margin-top:-22px;margin-left:-22px;position:absolute;top:50%;left:50%}#touch-use{position-anchor:--status;bottom:anchor(top);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;z-index:1002;background:#ffffff26;border:none;border-radius:50%;width:64px;height:64px;margin-bottom:34px;transition:bottom .3s ease-in-out;position:fixed;right:24px}#touch-use:active{filter:brightness(1.4)}body.spectator #touch-look-zone,body.spectator #touch-joystick-zone,body.spectator #touch-joystick-base,body.spectator #touch-use,body.spectator #touch-fire{position-anchor:--spectator-controls}#touch-fire{position-anchor:--status;bottom:anchor(top);pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;z-index:1002;background:#ff502840;border:none;border-radius:50%;width:64px;height:64px;margin-bottom:34px;transition:bottom .3s ease-in-out;position:fixed;right:104px}#touch-fire:active{filter:brightness(1.4)}#ui-buttons{top:calc(12px + env(safe-area-inset-top,0px));right:calc(12px + env(safe-area-inset-right,0px));z-index:999;pointer-events:none;gap:6px;display:flex;position:fixed}body.kiosk #ui-buttons{right:calc(50vw + 12px)}#ui-buttons>button{cursor:pointer;pointer-events:auto;background:0 0;border:none;width:38px;height:38px;padding:4px;transition:filter .15s}#ui-buttons>button img{filter:invert(.55);width:100%;height:100%;transition:filter .15s}#ui-buttons>button:hover img{filter:invert()}#help-overlay{z-index:10000;background:#0000004d;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#help-overlay[hidden]{display:none}#help-content{color:#ccc;background:#323232cc;border:4px solid #000;width:90%;max-width:600px;padding:24px 32px;font-family:STCFN,monospace}#help-content table{border-collapse:collapse;width:100%}#help-content td{padding:6px 0;font-size:13px}#help-content td:first-child{white-space:nowrap;color:#fff;text-align:right;padding-right:16px}kbd{color:#fff;text-align:center;background:#222;min-width:20px;padding:5px 10px;font-family:STCFN,monospace;font-size:12px;display:inline-block;box-shadow:0 2px #000,0 -2px #000,2px 0 #000,-2px 0 #000,inset -2px -2px #333}@media (pointer:coarse){#help-button,#fullscreen-button{display:none}}#detach-button{display:none}body[data-game-mode=deathmatch]:not(.fullscreen):not(.client-window):not(:has(.pane[data-active=false])) #detach-button{display:block}@media (pointer:coarse){#detach-button{display:none!important}}
