html{overflow:hidden}html,body{height:100dvh;width:100dvw}body{margin:0;background-color:#000;color:#fff;font-family:Monospace;font-size:13px;line-height:1.5;overscroll-behavior:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-user-callout:none}*{touch-action:manipulation}body.game-active{cursor:none}#loginButton{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}select,input,textarea,button{font-family:inherit;font-size:inherit;line-height:inherit}#loadingScreen{position:fixed;top:0;left:0;width:100%;height:100%;background:#000;display:flex;justify-content:center;align-items:center;z-index:9999}.loading-container{text-align:center}.spinner{width:50px;height:50px;border:3px solid #333;border-top:3px solid #fff;border-radius:50%;margin:0 auto 20px;animation:spin 1s linear infinite}.progress-container{width:250px;height:6px;background:#333;border-radius:3px;margin:0 auto 10px;overflow:hidden}#loading-progress-bar{width:0;height:100%;background:#fff;transition:width .3s ease-out}#loading-progress-text{color:#fff;font-size:18px;font-weight:700;margin-bottom:10px}#loading-message{color:#999;font-size:14px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#canvas{position:fixed;top:0;left:0;z-index:-2;background:#000;touch-action:none;-webkit-user-select:none!important;user-select:none!important;-webkit-touch-callout:none!important;-webkit-user-drag:none!important}#termsOverlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000f2;z-index:99999;display:flex;justify-content:center;align-items:center}.terms-container{display:flex;flex-direction:column;max-width:600px;max-height:90vh;width:90%;background:#000c;border:1px solid rgba(255,255,255,.2);border-radius:8px;overflow:hidden}.terms-content{flex:1;overflow-y:auto;padding:20px 25px;min-height:0}.terms-content h2{margin-top:0;margin-bottom:5px;text-align:center}.terms-content .terms-updated{text-align:center;color:#888;margin-bottom:20px;font-size:12px}.terms-content h4{margin-top:18px;margin-bottom:8px;color:#fff}.terms-content p{margin:0 0 10px;color:#ccc;line-height:1.5}.terms-content ul{margin:0 0 10px;padding-left:20px;color:#ccc}.terms-content li{margin-bottom:5px}.terms-footer{padding:15px 25px 20px;border-top:1px solid rgba(255,255,255,.1);background:#0006;display:flex;flex-direction:column;align-items:center;gap:15px}.terms-checkbox-label{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:14px}.terms-checkbox-label input[type=checkbox]{-ms-transform:scale(1.3);-moz-transform:scale(1.3);-webkit-transform:scale(1.3);-o-transform:scale(1.3);transform:scale(1.3);cursor:pointer}.terms-checkbox-label input[type=checkbox]:disabled{opacity:.4;cursor:not-allowed}.terms-checkbox-label:has(input:disabled){opacity:.5;cursor:not-allowed}.terms-footer .menu-button{min-width:150px}.terms-footer .menu-button:disabled{opacity:.5;cursor:not-allowed}.terms-footer .menu-button:disabled:hover{background:#4caf5066}#blocker,#blocker:before,#gameHUD{position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none}#blocker{z-index:1;background-color:#0000004d;pointer-events:none}#blocker:before{content:"";background-color:#000;background-image:url(/nullpoint-favicon.svg);background-repeat:no-repeat;background-position:center;background-size:contain;opacity:.6;mix-blend-mode:difference;z-index:-1}#splashScreenTitle{font-size:20px;margin:10px;line-height:1.2;overflow:hidden;white-space:nowrap;position:absolute;right:0}.word{display:inline-flex;white-space:nowrap}.word span{display:inline-block;transition:all .8s cubic-bezier(.65,0,.35,1)}.keep{flex-shrink:0}.hide{overflow:hidden;max-width:6ch;opacity:1;will-change:max-width,opacity}@media(max-width:200px){.hide{max-width:0;opacity:0}}.menu-button{padding:10px 20px}@media(max-width:450px){.menu-button{padding:3px!important;margin:0 2px 5px!important;max-width:70px;overflow:hidden;letter-spacing:-1.2px}#hud-ammo,#hud-health,#hud-ping{font-size:20px!important}}#splashLogo{cursor:pointer;pointer-events:auto}#IngameLogo{position:absolute;top:10px;right:10px;white-space:nowrap;font-size:18px;font-style:italic;color:#fff;cursor:pointer;pointer-events:auto}.game-logo{z-index:1000;opacity:.6;transition:opacity .3s ease;display:inline-block;mix-blend-mode:difference}.game-logo img{vertical-align:middle;width:50px;height:50px}.game-logo:hover{opacity:1}#IngameLogo:hover,#cameraMode:hover{cursor:default}#instructions{width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-start;align-items:center;text-align:center;font-size:14px;pointer-events:none}#instructions h2{text-align:center;margin-top:0;margin-bottom:20px;color:#fff}.menu-buttons{display:block;white-space:nowrap;margin-top:60px}.menu-button{outline:none;background:#0006;border:1px solid rgba(255,255,255,.1);color:#fff;padding:10px 20px;cursor:pointer;transition:all .3s;border-radius:8px;pointer-events:auto}.menu-button:focus{outline:1px solid rgba(255,255,255,.3)}.menu-button.active{background:#ffffff1a;border-color:#ffffff4d}.menu-button.hidden{display:none}@media(max-width:450px){.menu-button:has([data-scroll]),.menu-button[data-scroll]{position:relative;overflow:hidden;white-space:nowrap}.menu-button[data-scroll]{color:transparent}.menu-button[data-scroll]:after{color:#fff;content:attr(data-scroll);position:absolute;left:6px;top:50%;transform:translateY(-50%);white-space:nowrap;animation:scroll-text 4.5s ease-in-out infinite alternate;pointer-events:none}@keyframes scroll-text{0%{transform:translateY(-50%)}to{transform:translate(-25%,-50%)}}}#backButton{background:#ffffff0d;border-color:#fff3}#backButton:hover{background:#ffffff1a;border-color:#ffffff4d}#backButton:focus{outline:1px solid rgba(255,255,255,.4)}.tab-content{display:none;pointer-events:auto}.tab-content.active{display:block!important}#keys{overflow-y:auto;overflow-x:hidden;max-height:calc(100dvh - 220px)}#keys,#aboutContent{text-align:left}#keysList,#settings-inner,#multiplayerInnner,#aboutInner{max-height:calc(100dvh - 220px);min-width:300px;max-width:500px;overflow-y:auto;overflow-x:hidden;padding:10px}#aboutContent .settings-container,#aboutInner{max-width:none!important}#aboutInner a,#aboutInner a:visited,#aboutInner a:hover,#aboutInner a:active,#aboutTermsTarget a,#aboutTermsTarget a:visited,#aboutTermsTarget a:hover,#aboutTermsTarget a:active{color:#fff}.settings-container{position:absolute;left:50%;transform:translate(-50%);top:110px;min-width:300px;max-width:500px;margin:0 auto;background:#0006;border-radius:8px;padding:20px}.setting-item{margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:10px}.setting-item input[type=checkbox]{-ms-transform:scale(1.5);-moz-transform:scale(1.5);-webkit-transform:scale(1.5);-o-transform:scale(1.5);transform:scale(1.5)}.setting-item label{flex:1;text-align:left}.setting-item input[type=range]{flex:1;background:#ffffff1a;height:6px;-webkit-appearance:none;border-radius:3px;outline:none}.setting-item input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:#fff;cursor:pointer}.setting-actions{margin-top:30px;text-align:center}#sensitivityValue{min-width:50px;display:inline-block}.setting-item input[type=range]:focus{outline:2px solid rgba(255,255,255,.8);box-shadow:0 0 8px #ffffff80}.setting-item input[type=range]:focus::-webkit-slider-thumb{background:#fff;box-shadow:0 0 8px #fffc;transform:scale(1.2)}.setting-item input[type=checkbox]:focus{outline:2px solid rgba(255,255,255,.8);box-shadow:0 0 8px #ffffff80}#resetSettings:focus{outline:2px solid rgba(255,255,255,.8);background:#fff3;box-shadow:0 0 8px #ffffff80}.setting-item input[type=range],.setting-item input[type=checkbox],#resetSettings{transition:all .2s ease}@keyframes focus-pulse{0%{box-shadow:0 0 #fffc}70%{box-shadow:0 0 0 6px #fff0}to{box-shadow:0 0 #fff0}}.setting-item input[type=range]:focus,.setting-item input[type=checkbox]:focus,#resetSettings:focus{animation:focus-pulse 1.5s infinite}.time-inputs{display:flex;align-items:center;gap:5px;margin-top:5px}.time-select{width:70px;padding:5px}.time-separator{font-weight:700;font-size:16px}#cameraControl{position:absolute;top:2dvmin;left:2dvmin}.menu-input{width:100%;padding:8px;background:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff;font-family:inherit;font-size:inherit}.menu-input:focus{outline:none;border-color:#ffffff80;box-shadow:0 0 0 2px #ffffff40}#multiplayerButtons:not(:has(button[style=""]),:has(button:not([style]))){display:none}.mp-actions{display:flex;gap:10px;margin-top:20px;justify-content:center}.mp-actions .menu-button{flex:1}.menu-button.small{padding:5px 10px;font-size:11px}.menu-button.danger{background:#c8323266}.menu-button.danger:hover{background:#c8323299}.room-info{background:#0000004d;padding:15px;border-radius:8px;margin:20px 0}.room-info h3{margin-top:0;margin-bottom:15px}.room-code-display{display:flex;align-items:center;gap:10px;margin-bottom:10px}.room-code-text{font-family:monospace;font-size:16px;background:#ffffff1a;padding:5px 10px;border-radius:4px;flex:1}.player-count{margin-bottom:10px;color:#fffc}.player-list{max-height:160px;overflow-y:auto;background:#0003;border-radius:4px;padding:10px}.player-item{padding:5px 0;border-bottom:1px solid rgba(255,255,255,.1)}.player-item:last-child{border-bottom:none}.player-item.local{color:#4caf50}#performanceStats{display:none;position:fixed;display:flex;bottom:10px;gap:10px}#performanceStats div{visibility:visible!important;position:relative!important;top:unset!important;left:unset!important;cursor:pointer!important;opacity:.9!important;z-index:10000!important;display:flex;width:100dvw;justify-content:center}#performanceStats div canvas{position:relative!important;top:unset!important;left:unset!important}#performanceStats div canvas:not([style*=display]){display:none!important}#container{width:100dvw;height:100dvh}#cameraMode{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:3px;padding:2px 5px;cursor:pointer;pointer-events:auto;mix-blend-mode:difference}#cameraMode option{background:#333;color:#fff}#mobileControls{pointer-events:auto;--unit: 8px;--glass-bg: rgba(0, 0, 0, .35);--glass-border: rgba(255, 255, 255, .2);--solid-border: rgba(255, 255, 255, 1)}#mobileControls #joystick-left,#mobileControls #joystick-right{width:calc(14 * var(--unit))!important;height:calc(14 * var(--unit))!important;position:fixed;z-index:1000}#mobileControls #joystick-left{bottom:calc(9 * var(--unit));left:calc(.5 * var(--unit))}#mobileControls #joystick-right{bottom:calc(9 * var(--unit));right:calc(.5 * var(--unit))}#mobileControls #joystick-left #nipple_0_0 .back,#mobileControls #joystick-right #nipple_1_1 .back{width:calc(14 * var(--unit))!important;height:calc(14 * var(--unit))!important;margin-left:calc(-7 * var(--unit))!important;margin-top:calc(-7 * var(--unit))!important;background:var(--glass-bg)!important;border:1px solid var(--solid-border)!important;opacity:1!important}#mobileControls #joystick-left #nipple_0_0 .front,#mobileControls #joystick-right #nipple_1_1 .front{width:calc(5 * var(--unit))!important;height:calc(5 * var(--unit))!important;margin-left:calc(-2.5 * var(--unit))!important;margin-top:calc(-2.5 * var(--unit))!important;background:#fff!important;border:1px solid rgba(255,255,255,.5)!important;box-shadow:0 2px 8px #0006!important;opacity:1!important;text-align:center;align-content:center;color:#000;font-size:calc(1.8 * var(--unit));font-weight:600;letter-spacing:.02em;overflow:hidden}#mobileControls #joystick-left #nipple_0_0 .front:before{content:"MOVE"}#mobileControls #joystick-right #nipple_1_1 .front:before{content:"LOOK"}#mobileControls .touch-button{position:fixed;width:calc(6 * var(--unit));height:calc(6 * var(--unit));border-radius:50%;background:var(--glass-bg);border:1px solid var(--glass-border);color:#ffffffe6;font-size:calc(1.5 * var(--unit));font-weight:600;letter-spacing:-.02em;text-shadow:0 1px 2px rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.1;overflow:hidden;white-space:pre-wrap;-webkit-user-select:none;user-select:none;touch-action:none;z-index:1001;cursor:pointer;transition:all .15s ease}#mobileControls .touch-button:active,#mobileControls .touch-button.active{background:#ffffff40;transform:scale(.95)}#mobileControls .touch-button.toggled{background:#50c87866;border-color:#50c87880}#mobileControls #btn-reloadtButton{bottom:calc(16.5 * var(--unit));right:calc(15 * var(--unit))}#mobileControls #btn-crouch{bottom:calc(12.5 * var(--unit));left:calc(15 * var(--unit))}#mobileControls #btn-jump{bottom:calc(8.5 * var(--unit));right:calc(15 * var(--unit))}#mobileControls .top-row-btn{top:10px;right:calc(9 * var(--unit));transform:translate(200px);opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s ease;pointer-events:none}#mobileControls .top-row-btn.visible{transform:translate(0);opacity:1;pointer-events:auto}#mobileControls #btn-menu{right:calc(9 * var(--unit));transition-delay:0s}#mobileControls #btn-menu.visible{transition-delay:.15s}#mobileControls #btn-console{right:calc(17 * var(--unit));transition-delay:.05s}#mobileControls #btn-console.visible{transition-delay:.1s}#mobileControls #btn-snapshot{right:calc(25 * var(--unit));transition-delay:.1s}#mobileControls #btn-snapshot.visible{transition-delay:.05s}#mobileControls #btn-record{right:calc(33 * var(--unit));transition-delay:.15s}#mobileControls #btn-record.visible{transition-delay:0s}#hud-container{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:100;font-family:monospace;font-weight:700}#hud-ammo,#hud-health,#hud-ping{position:absolute;color:#fff;font-size:24px;line-height:1.2;text-shadow:2px 2px 4px rgba(0,0,0,.8)}body{--horzOffset: 20px}#hud-ammo{bottom:10px;left:var(--horzOffset);white-space:pre}#hud-health{bottom:10px;right:var(--horzOffset)}#hud-ping{bottom:40px;right:var(--horzOffset)}#hud-ping.excellent{color:#0f0}#hud-ping.good{color:#ff0}#hud-ping.fair{color:#f90}#hud-ping.poor{color:red}#hud-recording{position:fixed;top:60px;right:20px;color:#f33;font-size:18px;font-weight:700;display:none;align-items:center;gap:8px;text-shadow:2px 2px 4px rgba(0,0,0,.8);animation:rec-pulse 1.5s ease-in-out infinite;z-index:10000;pointer-events:none;font-family:monospace}#hud-recording .rec-dot{width:12px;height:12px;background-color:#f33;border-radius:50%;animation:rec-blink 1s ease-in-out infinite}@keyframes rec-blink{0%,50%{opacity:1}51%,to{opacity:.3}}@keyframes rec-pulse{0%,to{opacity:1}50%{opacity:.8}}::-webkit-scrollbar{width:10px;background-color:#0003}::-webkit-scrollbar-thumb{background-color:#ffffff4d;border-radius:5px}::-webkit-scrollbar-thumb:hover{background-color:#ffffff80}*{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) rgba(0,0,0,.2)}#console{font-family:Fira Code,Consolas,Courier New,monospace;position:fixed;bottom:calc(-30% - 15px);height:30%;box-shadow:0 -2px 12px #0f06;left:0;width:100%;background:#0000008c;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#0f0;font-size:13px;transition:bottom .3s ease;display:flex;flex-direction:column;z-index:9999;border-top:1px solid rgba(0,255,0,.3)}#console.active{bottom:0}#consoleOutput{flex:1;overflow-y:auto;padding:10px 10px 20px;white-space:pre-wrap}#consoleOutput .chat{color:#8f8}#consoleInputWrapper{border-top:1px solid #0f0;padding:10px;display:flex;align-items:center}#consoleInput{pointer-events:auto;flex:1;background:transparent;border:none;color:#0f0;font-size:16px;outline:none;font-family:Fira Code,Consolas,Courier New,monospace}.highlight{color:#ff0}.error{color:#f33}.cmd{color:#0ff}.arg{color:#ccc}.output-line{margin-bottom:2px}#chatNotifications{position:fixed;top:80px;left:50%;transform:translate(-50%);max-width:80%;pointer-events:none;z-index:10000}.chatMessage{background-color:#000c;color:#fff;padding:12px 24px;border-radius:8px;font-size:16px;margin-top:8px;word-wrap:break-word;box-shadow:0 4px 12px #00000080;opacity:1;transition:opacity .5s}#gameNotifications{position:fixed;top:80px;right:20px;max-width:300px;pointer-events:none;z-index:10000}.gameNotification{background-color:#000000bf;color:#fff;padding:8px 16px;border-radius:6px;font-size:14px;margin-bottom:6px;word-wrap:break-word;box-shadow:0 2px 8px #0006;opacity:1;transition:opacity .5s;border-left:3px solid #888}.gameNotification.notification-join{border-left-color:#4caf50}.gameNotification.notification-leave{border-left-color:#ff9800}.gameNotification.notification-kick{border-left-color:#f44336}.gameNotification.notification-death{border-left-color:#9c27b0}.gameNotification.notification-respawn{border-left-color:#2196f3}.chatMessage-private{border-left:3px solid #9c27b0}.private-label{color:#ce93d8;font-size:12px;margin-right:4px}.chat-private{color:#ce93d8}.modal-dialog{display:none;position:fixed;inset:0;background:#000000b3;border:none;padding:0;width:100dvw;height:100dvh;z-index:10000;-webkit-box-align:center;-webkit-align-items:center;align-items:center;-webkit-box-pack:center;-webkit-justify-content:center;justify-content:center}.modal-dialog.open{display:-webkit-box;display:-webkit-flex;display:flex}.modal-container{display:flex;position:relative;width:100%;height:100%;align-items:center;justify-content:center;opacity:1;pointer-events:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.selectable{-webkit-user-select:text;-ms-user-select:text;user-select:text}.modal-content{background:#000000d9;border:1px solid rgba(255,255,255,.2);border-radius:8px;width:80dvw;max-width:500px;color:#fff;padding:20px;box-shadow:0 4px 20px #0009;animation:modal-in .3s ease forwards;pointer-events:auto}.modal-title{font-size:24px;margin-top:0;margin-bottom:15px;text-align:center}.modal-message{margin-bottom:20px;font-size:16px;line-height:1.5}.modal-buttons{display:flex;justify-content:center;gap:15px}.modal-button{outline:none;background:#0006;border:1px solid rgba(255,255,255,.1);color:#fff;padding:10px 20px;cursor:pointer;transition:all .3s;border-radius:8px;min-width:100px}.modal-button:hover{background:#ffffff26}.modal-button:focus{outline:1px solid rgba(255,255,255,.5);box-shadow:0 0 0 2px #ffffff40}.modal-button.primary{background:#4caf5066}.modal-button.danger{background:#f006}@keyframes modal-in{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-content input{width:100%;padding:8px;background-color:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:4px;color:#fff;margin-bottom:20px}.modal-content input:focus{outline:none;border-color:#ffffff80;box-shadow:0 0 0 2px #ffffff40}#crosshair{position:fixed;pointer-events:none;z-index:999999;left:50%;top:50%;transform:translate(-50%,-50%);display:none}#crosshair .ring{width:30px;height:30px;border:2px solid rgba(255,255,255,.8);box-shadow:0 0 4px #000c;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transition:transform .08s ease-out,border-color .08s ease-out}#crosshair .dot{width:4px;height:4px;background:#fff;box-shadow:0 0 3px #000c;border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#crosshair .crosshair-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font:700 14px monospace;text-transform:uppercase;letter-spacing:1px;white-space:nowrap;text-shadow:0 0 4px rgba(0,0,0,.9),0 0 8px rgba(0,0,0,.7);opacity:0;transition:opacity .15s ease-out;pointer-events:none}#crosshair.show-text .ring,#crosshair.show-text .dot{opacity:.3}#crosshair.show-text .crosshair-text{opacity:1}#crosshair.shoot .ring{border-color:#ff6b6b;transform:translate(-50%,-50%) scale(.7)}#crosshair.hit .ring{border-color:#4ecdc4;transform:translate(-50%,-50%) scale(1.3)}#crosshair.reload .ring{border-color:#f9a86f;animation:reloadPulse .5s ease-in-out infinite}#crosshair.reload .crosshair-text{color:#fff}@keyframes reloadPulse{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.15)}}#crosshair.empty .ring{border-color:#f44;animation:emptyShake .1s ease-in-out 3}#crosshair.empty .crosshair-text{color:#f44;pointer-events:auto;cursor:pointer}@keyframes emptyShake{0%,to{transform:translate(-50%,-50%) scale(1)}25%{transform:translate(calc(-50% - 3px),-50%) scale(1)}75%{transform:translate(calc(-50% + 3px),-50%) scale(1)}}#crosshair.blocked .ring{border-color:#888;animation:blockedShake .05s ease-in-out 3}@keyframes blockedShake{0%,to{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,calc(-50% - 2px)) scale(.9)}}#flash{position:fixed;inset:0;pointer-events:none;z-index:100;opacity:0;transition:opacity .1s ease-out}#flash.hit{background:radial-gradient(circle,rgba(78,205,196,.3) 0%,transparent 50%);opacity:1}#flash.damage{background:radial-gradient(circle,rgba(255,100,100,.4) 0%,transparent 60%);opacity:1}.hit-popup{position:fixed;pointer-events:none;z-index:1000;color:#4ecdc4;font:700 24px monospace;text-shadow:0 0 10px rgba(78,205,196,.8);animation:hitFloat 1s ease-out forwards}.hit-popup.damage{color:#ff6b6b;text-shadow:0 0 10px rgba(255,107,107,.8)}@keyframes hitFloat{0%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0;transform:translate(-50%,-60px) scale(1.5)}}
