*{box-sizing:border-box}html,body{color:#fff;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none;background:#1a1410;height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:hidden}#app,#app>canvas{display:block;position:fixed;inset:0}#app>canvas{width:100%;height:100%}.hidden{display:none!important}#splash{text-align:center;padding:max(10px, env(safe-area-inset-top)) 16px max(10px, env(safe-area-inset-bottom));cursor:pointer;background:linear-gradient(#2814328c,#140a0ad9);flex-direction:column;align-items:center;display:flex;position:absolute;inset:0}#splash h1{letter-spacing:-.02em;text-transform:uppercase;text-shadow:0 4px #000;margin:auto 0 0;font-size:clamp(28px,min(9vw,15vh),84px);font-weight:900;line-height:.95}#splash h1 span{color:#c79bff}#splash .sub{opacity:.75;margin:min(16px,3vh) 0 min(28px,5vh)}#status{border:2px solid #fff;border-radius:999px;margin:0 0 auto;padding:10px 22px;font-weight:700}#splash .install{opacity:.85;margin:0;font-size:13px}#splash .credits{opacity:.8;margin:8px 0 0;font-size:12px;line-height:1.5}@media (max-height:400px){#splash .sub,#status{font-size:14px}#status{padding:6px 18px}#splash .install,#splash .credits{font-size:11px;line-height:1.35}}#splash .credits a{color:#e3ccff;text-underline-offset:2px}#hud{pointer-events:none;position:absolute;inset:0}.speedo{top:max(12px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));text-shadow:0 2px #000,0 0 8px #0009;font-variant-numeric:tabular-nums;font-size:40px;font-weight:900;position:absolute}.speedo small{margin-left:4px;font-size:14px}#fps{top:max(8px, env(safe-area-inset-top));left:max(16px, env(safe-area-inset-left));text-shadow:0 1px #000;font:12px ui-monospace,monospace;position:absolute}.keys{opacity:.8;white-space:nowrap;text-shadow:0 1px #000;font-size:13px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.touch{pointer-events:none;position:absolute;inset:0}#app:has(.touch) .keys{display:none}:is(#app:has(#splash:not(.hidden)) .touch,#app:has(#tweaks-panel:not(.hidden)) .touch,#app:has(#map-full:not(.hidden)) .touch){display:none}.stick{left:max(20px, env(safe-area-inset-left));bottom:max(24px, env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;background:#ffffff1f;border:2px solid #ffffff59;border-radius:50%;justify-content:center;align-items:center;width:150px;height:150px;display:flex;position:absolute}.touch[data-mode=car] .stick{border-radius:55px;width:180px;height:110px}.touch[data-mode=car] .foot-only,.touch[data-mode=foot] .car-only,.touch[data-flying] .walk-only,.touch:not([data-flying]) .fly-only{display:none}.stick-knob{background:#ffffff8c;border-radius:50%;width:64px;height:64px}.btn{pointer-events:auto;color:#fff;touch-action:none;-webkit-tap-highlight-color:transparent;background:#ffffff26;border:2px solid #ffffff73;border-radius:50%;font-size:22px;font-weight:900;position:absolute}.btn.down{background:#c79bff8c}.btn-gas{right:max(20px, env(safe-area-inset-right));bottom:max(40px, env(safe-area-inset-bottom));width:92px;height:92px}.btn-brake{right:calc(max(20px, env(safe-area-inset-right)) + 104px);bottom:max(24px, env(safe-area-inset-bottom));width:76px;height:76px}.btn-action{right:calc(max(20px, env(safe-area-inset-right)) + 14px);bottom:calc(max(40px, env(safe-area-inset-bottom)) + 108px);width:64px;height:64px;font-size:14px}.touch[data-mode=foot] .btn-action{right:max(20px, env(safe-area-inset-right));bottom:max(40px, env(safe-area-inset-bottom));width:92px;height:92px;font-size:16px}.btn-sprint{right:calc(max(20px, env(safe-area-inset-right)) + 104px);bottom:max(24px, env(safe-area-inset-bottom));width:76px;height:76px;font-size:15px}.btn-enter{right:max(20px, env(safe-area-inset-right));top:calc(max(12px, env(safe-area-inset-top)) + 56px);width:64px;height:64px;font-size:26px}.touch[data-mode=foot] .btn-enter:not(.ready){opacity:.35}.btn-enter.ready{background:#c79bff8c;border-color:#fff;animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{transform:scale(1.1)}}.btn-reset{right:calc(max(20px, env(safe-area-inset-right)) + 80px);top:calc(max(12px, env(safe-area-inset-top)) + 64px);width:48px;height:48px;font-size:20px}#mute{top:max(10px, env(safe-area-inset-top));pointer-events:auto;cursor:pointer;background:#00000040;border:0;border-radius:999px;padding:6px 10px;font-size:18px;position:absolute;left:50%;transform:translate(-50%)}#prompt{left:50%;top:calc(max(10px, env(safe-area-inset-top)) + 116px);text-shadow:0 2px #000,0 0 8px #0009;white-space:nowrap;font-size:18px;font-weight:800;position:absolute;transform:translate(-50%)}.mission{pointer-events:none;text-shadow:0 2px #000,0 0 8px #0009;position:absolute;inset:0}.mission-banner{text-align:center;width:min(90vw,640px);position:absolute;top:34%;left:50%;transform:translate(-50%)}.mission-banner-title{letter-spacing:-.01em;text-transform:uppercase;color:#c79bff;-webkit-text-stroke:1.5px #000;font-size:clamp(26px,min(6vw,10vh),56px);font-style:italic;font-weight:900}.mission-banner[data-kind=passed] .mission-banner-title{color:#ffc23d}.mission-banner[data-kind=failed] .mission-banner-title{color:#ff4a4a}.mission-banner-text{margin-top:6px;font-size:18px;font-weight:700}#quit-mission{top:max(10px, env(safe-area-inset-top));pointer-events:auto;font:inherit;color:#fff;cursor:pointer;white-space:nowrap;background:#00000059;border:0;border-radius:999px;padding:8px 12px;font-size:14px;font-weight:800;position:absolute;left:calc(50% + 86px)}@media (max-width:520px){#quit-mission .quit-long{display:none}}#quit-confirm{pointer-events:auto;z-index:20;background:#00000073;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#quit-confirm.hidden{display:none}.quit-box{text-align:center;background:#140e1af5;border:2px solid #c79bff;border-radius:12px;width:min(86vw,340px);padding:18px}.quit-box b{font-size:20px}.quit-box p{opacity:.85;margin:8px 0 16px}.quit-buttons{gap:10px;display:flex}.quit-buttons button{min-height:48px;font:inherit;color:#fff;cursor:pointer;background:#2c2038;border:1px solid #8a6bb3;border-radius:8px;flex:1;font-weight:800}.quit-buttons [data-yes]{background:#7a2a3a;border-color:#d06070}.mission-clock{top:calc(max(10px, env(safe-area-inset-top)) + 40px);font-variant-numeric:tabular-nums;font-size:34px;font-weight:900;position:absolute;left:50%;transform:translate(-50%)}.mission-clock.urgent{color:#ff4a4a}.mission-objective{top:calc(max(10px, env(safe-area-inset-top)) + 84px);text-align:center;color:#ffd98a;max-width:min(70vw,560px);font-size:16px;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}.mission-subtitle{bottom:calc(max(12px, env(safe-area-inset-bottom)) + 34px);text-align:center;width:min(56vw,560px);font-size:19px;font-weight:800;position:absolute;left:50%;transform:translate(-50%)}.mission-board{left:max(16px, env(safe-area-inset-left));bottom:calc(max(12px, env(safe-area-inset-bottom)) + 26px);background:#00000073;border-radius:8px;width:min(34vw,360px);padding:8px 10px;font-size:14px;font-weight:700;line-height:1.3;position:absolute}.mission-board-title{color:#ffd98a;text-transform:uppercase;letter-spacing:.06em;margin:6px 0 3px;font-size:12px}.mission-board-title:first-child{margin-top:0}.mission-board-row{gap:8px;margin:3px 0;display:flex}.mission-board-text{flex:1}.mission-board-note{white-space:nowrap}.mission-board-row.done{opacity:.55}.mission-board-row.done .mission-board-text:before{content:"✓ ";color:#8f8}#app:has(.touch) .mission-board{bottom:auto;top:calc(max(10px, env(safe-area-inset-top)) + var(--minimap) + 26px);width:min(36vw,300px);padding:6px 8px;font-size:11px}#app:has(.touch) .mission-board-title{font-size:10px}@media (max-height:500px){.mission-clock{top:calc(max(8px, env(safe-area-inset-top)) + 34px);font-size:26px}.mission-objective{top:calc(max(8px, env(safe-area-inset-top)) + 66px);font-size:14px}#prompt{top:calc(max(8px, env(safe-area-inset-top)) + 90px);font-size:15px}.mission-banner-text,.mission-subtitle{font-size:15px}.mission-subtitle{width:min(48vw,440px)}}#room-btn{top:max(10px, env(safe-area-inset-top));pointer-events:auto;cursor:pointer;color:#fff;background:#00000040;border:0;border-radius:999px;padding:6px 10px;font-size:18px;position:absolute;left:calc(50% + 34px)}#room-btn[data-count]:not([data-count=""]):after{content:attr(data-count);margin-left:4px;font-size:13px;font-weight:800}#room-panel{pointer-events:auto;touch-action:auto;-webkit-user-select:text;user-select:text;z-index:5;background:#140e1aeb;border:2px solid #c79bff;border-radius:14px;width:min(360px,100% - 24px);max-height:calc(100% - 24px);padding:14px 16px;font-size:15px;position:absolute;top:50%;left:50%;overflow-y:auto;transform:translate(-50%,-50%)}#room-panel h2{margin:0 0 8px;font-size:18px}#room-panel button,#room-panel input{font:inherit;color:#fff;background:#2c2038;border:1px solid #8a6bb3;border-radius:8px;padding:6px 10px}#room-panel button:disabled{opacity:.4}#room-panel input{background:#110c16;flex:1;min-width:0}#room-panel input[data-code-input]{text-transform:uppercase;letter-spacing:3px;max-width:90px}.room-close{position:absolute;top:8px;right:8px;padding:2px 8px!important}.room-code{margin-bottom:8px;font-size:15px}.room-code b{letter-spacing:4px;color:#ffd27a;-webkit-user-select:all;user-select:all;font-size:28px}.room-row{align-items:center;gap:8px;margin:8px 0;display:flex}.room-status{color:#d8c8ea;margin:6px 0;font-size:13px}.room-status.error{color:#ff9a8a}.room-list{margin:6px 0;padding-left:18px;font-size:14px}.room-leave{margin-top:4px}#toast{left:50%;top:calc(max(10px, env(safe-area-inset-top)) + 48px);white-space:nowrap;text-overflow:ellipsis;background:#0009;border-radius:8px;max-width:calc(100% - 24px);padding:6px 12px;font-size:15px;font-weight:700;position:absolute;overflow:hidden;transform:translate(-50%)}.name-tags{position:absolute;inset:0;overflow:hidden}.name-tag{color:#ffe9a8;text-shadow:0 1px #000,0 0 6px #000c;white-space:nowrap;font-size:14px;font-weight:800;position:absolute;top:0;left:0}#tweaks-btn{top:max(10px, env(safe-area-inset-top));pointer-events:auto;cursor:pointer;color:#fff;background:#00000040;border:0;border-radius:999px;min-width:38px;padding:6px 12px;font-size:18px;font-weight:900;position:absolute;right:calc(50% + 30px)}#tweaks-btn.on{background:#c79bffb3}#tweaks-panel{pointer-events:auto;touch-action:pan-y;width:min(420px,100%);padding:max(8px, env(safe-area-inset-top)) max(10px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) 10px;background:#140e1af0;border-left:2px solid #c79bff;flex-direction:column;font-size:15px;display:flex;position:absolute;top:0;bottom:0;right:0}#tweaks-panel button{font:inherit;color:#fff;-webkit-tap-highlight-color:transparent;background:#2c2038;border:1px solid #8a6bb3;border-radius:8px;padding:8px 12px;font-weight:700}#tweaks-panel button:active{background:#4a3566}.tw-head{border-bottom:1px solid #3d2d50;align-items:center;gap:8px;padding-bottom:8px;display:flex}.tw-head b{font-size:18px}.tw-paused{text-transform:uppercase;letter-spacing:1px;opacity:.6;font-size:12px}.tw-count{color:#ffd98a;margin-left:auto;font-size:13px}.tw-out{color:#fff;-webkit-user-select:text;user-select:text;background:#110c16;border:1px solid #8a6bb3;border-radius:8px;height:120px;margin-top:8px;font:12px ui-monospace,monospace}.tw-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding-top:4px;overflow-y:auto}.tw-section{border-bottom:1px solid #3d2d50;padding:4px 0 10px}.tw-section summary{cursor:pointer;align-items:center;min-height:44px;font-size:16px;font-weight:800;list-style:none;display:flex}.tw-section summary::-webkit-details-marker{display:none}.tw-section summary:before{content:"▸";opacity:.7;width:18px}.tw-section[open] summary:before{content:"▾"}.tw-section .tw-switch{min-width:64px;margin-left:auto;background:#3d7a3a!important;border-color:#6fc46a!important}.tw-section.off .tw-switch{background:#4a2030!important;border-color:#a05070!important}.tw-section.off .tw-knob{opacity:.45}.tw-knob{padding:6px 0 2px}.tw-label{opacity:.9;justify-content:space-between;gap:8px;font-size:14px;display:flex}.tw-label output{font-variant-numeric:tabular-nums;white-space:nowrap}.tw-knob.changed .tw-label output{color:#ffd98a;font-weight:800}.tw-control{align-items:center;gap:6px;display:flex}#tweaks-panel .tw-step{flex:none;width:40px;height:36px;padding:0;font-size:20px}.tw-control input[type=range]{accent-color:#c79bff;touch-action:pan-y;flex:1;min-width:0;height:36px;margin:0}#tweaks-panel .tw-reset-section{opacity:.8;margin-top:8px;padding:6px 10px;font-size:13px}.tw-presets{gap:6px;display:flex}#tweaks-panel .tw-presets button{flex:1;min-height:44px;padding:6px 4px}#tweaks-panel .tw-presets button[aria-checked=true]{background:#6b4a9a;border-color:#c79bff}.tw-note{opacity:.8;margin:8px 0 4px;font-size:13px}.tw-row{justify-content:space-between;align-items:center;min-height:44px;font-size:14px;display:flex}#tweaks-panel .tw-row .tw-switch{min-width:64px;min-height:40px}.tw-section .tw-switch.off{background:#4a2030!important;border-color:#a05070!important}.bubbles{position:absolute;inset:0;overflow:hidden}.bubble{color:#111;white-space:nowrap;background:#fff;border:2px solid #111;border-radius:12px;padding:4px 9px;font-size:15px;font-weight:900;position:absolute;top:0;left:0}.bubble:after{content:"";border:6px solid #0000;border-top-color:#111;margin-left:-6px;position:absolute;bottom:-9px;left:50%}:root{--minimap:150px}@media (max-height:500px){:root{--minimap:112px}}#minimap{top:max(10px, env(safe-area-inset-top));left:max(14px, env(safe-area-inset-left));width:var(--minimap);height:var(--minimap);pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent;position:absolute}#minimap canvas{box-sizing:border-box;border:3px solid #000000bf;border-radius:50%;width:100%;height:100%;display:block;box-shadow:0 0 0 1px #ffffff59,0 2px 10px #00000080}.minimap-north{color:#fff;text-align:center;background:#111;border-radius:50%;width:16px;height:16px;font:900 10px/16px system-ui,sans-serif;position:absolute;top:calc(50% - 8px);left:calc(50% - 8px)}.minimap-label{max-width:calc(var(--minimap) + 60px);text-overflow:ellipsis;white-space:nowrap;color:#e3d1ff;text-shadow:0 1px #000,0 0 4px #000;font-size:12px;font-weight:800;position:absolute;top:calc(100% + 2px);left:50%;overflow:hidden;transform:translate(-50%)}#fps{left:calc(max(14px, env(safe-area-inset-left)) + var(--minimap) + 10px)}#map-full{pointer-events:auto;z-index:5;background:#2c3036;position:absolute;inset:0}#map-full canvas{touch-action:none;cursor:crosshair;width:100%;height:100%;display:block}.map-bar{top:max(10px, env(safe-area-inset-top));right:max(12px, env(safe-area-inset-right));gap:8px;display:flex;position:absolute}.map-bar button{color:#fff;cursor:pointer;background:#000000b3;border:0;border-radius:999px;min-width:42px;height:42px;padding:0 12px;font:800 18px system-ui,sans-serif}.map-bar .map-clear{background:#8250c8d9;font-size:14px}.map-legend{left:max(12px, env(safe-area-inset-left));bottom:max(12px, env(safe-area-inset-bottom));pointer-events:none;background:#0009;border-radius:8px;flex-wrap:wrap;align-items:center;gap:6px 14px;padding:6px 12px;font-size:13px;font-weight:700;display:flex;position:absolute}.map-legend span:before{content:"";background:var(--c);vertical-align:-1px;border:1.5px solid #000;border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}.map-legend em{opacity:.75;font-style:normal}.heat{right:max(14px, env(safe-area-inset-right));top:calc(max(12px, env(safe-area-inset-top)) + 54px);background:#00000059;border-radius:14px;align-items:center;gap:6px;padding:4px 8px;display:flex;position:absolute}.beacon{background:#3a3c42;border-radius:8px 8px 2px 2px;width:16px;height:14px;box-shadow:inset 0 -3px #23242a}.beacon.on{background:#6a2228}.beacon.on:nth-child(2n){background:#23366e}.beacon.flash{animation:.5s step-end infinite beacon-red}.beacon.flash:nth-child(2n){animation-name:beacon-blue}@keyframes beacon-red{0%{background:#ff3030;box-shadow:0 0 10px #ff3030}50%{box-shadow:none;background:#6a2228}}@keyframes beacon-blue{0%{box-shadow:none;background:#23366e}50%{background:#3a7bff;box-shadow:0 0 10px #3a7bff}}.tickets{text-shadow:0 1px #000;margin-left:4px;font-size:13px;font-weight:800}.ticket{left:50%;bottom:calc(max(12px, env(safe-area-inset-bottom)) + 26px);color:#2a2620;pointer-events:auto;cursor:pointer;background:#f3ecd6;border-top:6px solid #1d3f9a;width:min(380px,100% - 40px);padding:12px 16px 10px;font-family:Courier New,ui-monospace,monospace;position:absolute;transform:translate(-50%)rotate(-1.5deg);box-shadow:0 6px 24px #00000080}.ticket-head{letter-spacing:.04em;border-bottom:1px dashed #8a8270;padding-bottom:6px;font-size:11px;font-weight:700}.ticket-line{margin:10px 0 8px;font-size:17px;font-weight:700}.ticket-for{margin:0 0 4px;font-size:14px}.ticket-note{margin:0;font-size:12px;font-style:italic}.ticket-skip{text-align:right;opacity:.6;margin-top:8px;font-size:11px}
