:root{color:#d8dee9;background:#090b12;font-family:ui-monospace,Cascadia Mono,Segoe UI Mono,monospace;font-synthesis:none}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{display:block}.game-shell{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;height:100dvh;overflow:hidden;background:radial-gradient(circle,#1c2230,#090b12 70%)}#game{display:block;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;outline:none;touch-action:none}.start-menu{position:absolute;z-index:100;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;background:radial-gradient(circle,#18364ee0,#04080ef7 72%)}.start-menu h1{margin:0 0 1rem;color:#eaf8ff;font-size:clamp(3rem,10vw,7rem);letter-spacing:.12em;text-shadow:0 0 1.4rem #3cbcff}.menu-options{display:grid;width:min(25rem,82vw);gap:.65rem;margin-bottom:.5rem;padding:.9rem 1rem;border:1px solid rgb(114 211 255 / 45%);border-radius:.5rem;background:#04121ead}.menu-options label{display:flex;align-items:center;gap:.7rem;color:#dceef7;font-weight:700;cursor:pointer}.menu-options input{width:1.25rem;height:1.25rem;accent-color:#64ceff}.menu-options .volume-option{display:grid;grid-template-columns:auto 1fr 3.2rem}.volume-option input[type=range]{width:100%;height:1.25rem}.volume-option output{color:#85dbff;text-align:right}.menu-options .city-option{display:grid;grid-template-columns:auto 1fr}.city-option select{width:100%;padding:.2rem .4rem;border:1px solid rgb(114 211 255 / 45%);border-radius:.3rem;color:#eaf8ff;background:#051e30eb;font:700 1rem/1.2 inherit}.menu-options .loading-option{color:#ffd76a}.menu-note{width:min(28rem,84vw);margin:.2rem 0 0;color:#dceff8c7;font-size:clamp(.72rem,2.5vw,.9rem);line-height:1.4;text-align:center}.start-menu button{width:min(25rem,82vw);padding:.8rem 1rem;border:2px solid #72d3ff;border-radius:.5rem;color:#eaf8ff;background:#051e30eb;font:700 clamp(1rem,3vw,1.35rem)/1.2 inherit;cursor:pointer}.start-menu button:hover,.start-menu button:focus-visible{color:#071018;background:#80dcff}.start-menu button:disabled{opacity:.45;cursor:wait}.start-menu[hidden]{display:none}.mobile-controls{position:absolute;z-index:40;inset:0;pointer-events:none;touch-action:none;user-select:none;-webkit-user-select:none}.mobile-controls button{width:clamp(3.2rem,12vw,4.8rem);height:clamp(3.2rem,12vw,4.8rem);border:2px solid rgb(180 232 255 / 78%);border-radius:50%;color:#fff;background:#071c2b94;box-shadow:inset 0 0 .7rem #4ac0ff47,0 .2rem .5rem #00000059;font:800 clamp(.65rem,2.4vw,.9rem)/1 inherit;pointer-events:auto;touch-action:none}.mobile-controls button.pressed{background:#49bbebd1;transform:scale(.94)}.touch-stick{position:absolute;bottom:1rem;bottom:max(1rem,env(safe-area-inset-bottom));width:clamp(8.5rem,25vw,12rem);height:clamp(8.5rem,25vw,12rem);border:.2rem solid rgb(184 229 248 / 55%);border-radius:50%;background:radial-gradient(circle,#27637f47 0 18%,#071b287a 20% 68%,#439dc347 70%);box-shadow:inset 0 0 1.2rem #4ec4f53d,0 .3rem 1rem #00000047;pointer-events:auto;touch-action:none}.move-stick{left:1rem;left:max(1rem,env(safe-area-inset-left))}.look-stick{right:1rem;right:max(1rem,env(safe-area-inset-right))}.stick-knob{position:absolute;top:31%;left:31%;width:38%;height:38%;border:.18rem solid rgb(220 245 255 / 78%);border-radius:50%;background:radial-gradient(circle at 35% 30%,#94e0ffd1,#144a63e0);box-shadow:0 .25rem .65rem #00000073;pointer-events:none}.stick-label{position:absolute;top:10%;left:50%;translate:-50% 0;color:#e2f7ff9e;font-size:clamp(.55rem,1.8vw,.78rem);font-weight:800;pointer-events:none}.touch-actions{position:absolute;right:.8rem;right:max(.8rem,env(safe-area-inset-right));bottom:calc(1rem + clamp(9rem,26vw,12.5rem));bottom:calc(max(1rem,env(safe-area-inset-bottom)) + clamp(9rem,26vw,12.5rem));display:flex;align-items:flex-end;gap:clamp(.3rem,1.5vw,.7rem)}.touch-actions .touch-primary{width:clamp(4.4rem,16vw,6.2rem);height:clamp(4.4rem,16vw,6.2rem);border-color:#ffe57d}.mobile-controls[hidden]{display:none}.controls{position:absolute;bottom:.75rem;margin:0;padding:.35rem .55rem;color:#c7ccd8;background:#090b12bf;font-size:clamp(.65rem,1.5vw,.85rem);pointer-events:none}.death-message{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;color:#f2e7d5;background:#370000b8;text-align:center;text-shadow:.12rem .12rem #170000}.death-message[hidden]{display:none}.death-message strong{font-size:clamp(3rem,10vw,8rem)}.death-message span{font-size:clamp(1rem,2vw,1.6rem)}.death-message button{min-width:min(18rem,72vw);padding:.8rem 1.4rem;border:2px solid #ffd2bd;border-radius:.55rem;color:#fff5ef;background:#741308e0;font:800 clamp(1.1rem,4vw,1.6rem)/1 inherit;pointer-events:auto;touch-action:manipulation;cursor:pointer}.death-message button:active,.death-message button.pressed{background:#e5482f;transform:scale(.97)}.town-map{position:absolute;z-index:90;inset:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;place-items:center;gap:.65rem;padding:.7rem;padding:max(.7rem,env(safe-area-inset-top)) max(.7rem,env(safe-area-inset-right)) max(.7rem,env(safe-area-inset-bottom)) max(.7rem,env(safe-area-inset-left));background:#030a12f0}.town-map[hidden]{display:none}.town-map header{display:grid;text-align:center}.town-map header strong{color:#eaf8ff;font-size:clamp(1.25rem,3vw,2.1rem);letter-spacing:.12em}.town-map header span{color:#8fdcff;font-size:clamp(.75rem,1.8vw,1rem)}.town-map-frame{position:relative;max-width:100%;max-height:100%;aspect-ratio:1280 / 1096}.town-map-frame img{display:block;width:100%;height:100%;object-fit:contain;border:2px solid rgb(151 222 255 / 70%);box-shadow:0 0 1.5rem #000}.town-map-frame svg{position:absolute;inset:0;width:100%;height:100%}.town-region{fill:transparent;stroke:transparent;stroke-width:18;cursor:pointer;pointer-events:all;transition:fill .12s ease}.town-region:hover,.town-region:focus,.town-region.selected{fill:#5ad7ff6b;outline:none}.town-region.selected{stroke:#ffe36e;stroke-width:22}.town-map-marker{fill:#ffed66;stroke:#0a1520;stroke-width:15;pointer-events:none}.town-map>button{padding:.55rem 1.25rem;border:1px solid #8fdcff;border-radius:.4rem;color:#eaf8ff;background:#0b344b;font:800 .9rem/1 inherit;cursor:pointer}.town-map>button span{color:#8fdcff}.town-map-controls{margin:0;color:#dff5ff;font-size:clamp(.7rem,1.8vw,.95rem);text-align:center}.town-announcement{position:absolute;z-index:35;top:15%;left:50%;translate:-50% 0;padding:.65rem 1.4rem;border-block:1px solid rgb(180 231 255 / 75%);color:#fff;background:linear-gradient(90deg,transparent,rgb(3 20 32 / 88%) 18% 82%,transparent);font:700 clamp(1.05rem,3vw,2rem)/1.2 inherit;letter-spacing:.08em;white-space:nowrap;text-shadow:0 0 .6rem #49c7ff;pointer-events:none}.town-announcement[hidden]{display:none}.boundary-warning{position:absolute;z-index:38;top:24%;left:50%;display:grid;min-width:min(24rem,82vw);translate:-50% 0;padding:.8rem 1.5rem;border:2px solid #ff8a70;border-radius:.45rem;color:#fff3eb;background:#4d0a05e0;box-shadow:0 0 1.2rem #ff2d1473;text-align:center;pointer-events:none}.boundary-warning strong{font-size:clamp(1.4rem,4vw,2.5rem);letter-spacing:.12em}.boundary-warning span{font-size:clamp(.75rem,2vw,1rem)}.boundary-warning[hidden]{display:none}.compass{position:absolute;z-index:32;top:.65rem;top:max(.65rem,env(safe-area-inset-top));left:50%;width:clamp(12rem,30vw,23rem);height:3.15rem;overflow:hidden;translate:-50% 0;border:1px solid rgb(184 231 255 / 62%);border-radius:.4rem;color:#f4fbff;background:linear-gradient(90deg,#030f1840,#030f18d9 24% 76%,#030f1840);box-shadow:0 .2rem .65rem #00000059;pointer-events:none}.compass:before,.compass:after{position:absolute;z-index:2;top:0;bottom:0;width:22%;content:""}.compass:before{left:0;background:linear-gradient(90deg,rgb(3 15 24 / 92%),transparent)}.compass:after{right:0;background:linear-gradient(-90deg,rgb(3 15 24 / 92%),transparent)}.compass-pointer{position:absolute;z-index:4;top:0;left:50%;width:0;height:0;translate:-50% 0;border-top:.55rem solid #ffd957;border-right:.36rem solid transparent;border-left:.36rem solid transparent;filter:drop-shadow(0 0 .2rem #ffcf2f)}.compass-tape{position:absolute;top:.55rem;left:50%;width:1800px;height:1.2rem;translate:calc(-50% + var(--compass-offset, 0px)) 0;background:repeating-linear-gradient(90deg,transparent 0 24px,rgb(220 241 250 / 65%) 24px 25px);will-change:translate}.compass-tape span{position:absolute;translate:-50% 0;font:800 .82rem/1 inherit;text-shadow:0 1px 2px #000}.compass-tape span.cardinal{color:#ffd957;font-size:1rem}.compass output{position:absolute;z-index:4;bottom:.18rem;left:50%;translate:-50% 0;color:#dff5ff;font:800 .72rem/1 inherit;white-space:nowrap}@media(orientation:portrait){.compass{width:min(46vw,14rem)}}.minimap{position:absolute;z-index:30;top:.75rem;top:max(.75rem,env(safe-area-inset-top));left:.75rem;left:max(.75rem,env(safe-area-inset-left));width:clamp(8.5rem,16vw,12rem);aspect-ratio:1280 / 1097;overflow:hidden;padding:0;border:2px solid rgb(184 231 255 / 78%);border-radius:.45rem;background:#10202a;box-shadow:0 .25rem .8rem #0000008c;cursor:pointer}.minimap img,.minimap svg{position:absolute;inset:0;width:100%;height:100%}.minimap img{object-fit:fill}.minimap svg{pointer-events:none}.minimap-marker{fill:#ffe95b;stroke:#101820;stroke-width:24}.minimap-outside{fill:#020305}.minimap>span{position:absolute;right:.25rem;bottom:.2rem;padding:.12rem .3rem;border-radius:.2rem;color:#fff;background:#030f18c7;font:800 .65rem/1 inherit;pointer-events:none}.minimap:hover,.minimap:focus-visible{border-color:#fff;filter:brightness(1.12)}.control-guide{position:absolute;z-index:31;left:.75rem;left:max(.75rem,env(safe-area-inset-left));bottom:.75rem;bottom:max(.75rem,env(safe-area-inset-bottom));max-width:min(31rem,72vw);padding:.55rem .75rem;border-left:3px solid #65d2ff;color:#dff5ff;background:#030f18c7;box-shadow:0 .2rem .7rem #00000059;pointer-events:none}.control-guide div{display:flex;align-items:center;gap:.65rem}.control-guide strong{color:#fff;font-size:.75rem;letter-spacing:.08em}.control-guide span{color:#8fffa8;font-size:.62rem}.control-guide p{margin:.25rem 0 0;font-size:clamp(.65rem,1.4vw,.82rem);line-height:1.35}.control-guide span[hidden],.control-guide[hidden]{display:none}.action-prompt{position:absolute;z-index:36;bottom:16%;left:50%;translate:-50% 0;padding:.55rem 1rem;border:1px solid rgb(255 232 137 / 75%);border-radius:.35rem;color:#fff7cf;background:#0c1216db;font:800 clamp(.78rem,2vw,1rem)/1 inherit;letter-spacing:.05em;white-space:nowrap;pointer-events:none}.action-prompt[hidden]{display:none}@media(pointer:coarse){.minimap{width:clamp(7.5rem,25vw,10rem)}.action-prompt{bottom:32%}}.road-name{position:absolute;bottom:4rem;left:50%;translate:-50% 0;min-width:15rem;padding:.55rem 1rem;border:2px solid #72bdff;color:#e4f5ff;background:#031937d1;font-size:clamp(1rem,2vw,1.5rem);text-align:center;text-transform:uppercase;pointer-events:none}.road-debug{position:absolute;top:.75rem;left:.75rem;margin:0;padding:.6rem;color:#bde8ff;background:#030e1dd1;font:.8rem/1.45 ui-monospace,monospace;pointer-events:none}.facade-debug{position:absolute;top:.75rem;right:.75rem;margin:0;padding:.6rem;color:#d9ffd7;background:#0a1b0cdb;font:.8rem/1.45 ui-monospace,monospace;pointer-events:none}.build-version{position:absolute;z-index:20;top:.45rem;right:.6rem;right:max(.6rem,env(safe-area-inset-right));padding:.1rem .35rem;border:1px solid rgb(130 190 225 / 35%);border-radius:.25rem;color:#cde8f8b3;background:#030f188c;font:700 .62rem/1.1 ui-monospace,monospace;letter-spacing:.04em;pointer-events:none}.altitude{position:absolute;top:.75rem;left:50%;translate:-50% 0;padding:.4rem .65rem;color:#e4f5ff;background:#030e1dc7;font-size:clamp(.75rem,1.5vw,1rem);pointer-events:none}.gearometer{position:absolute;right:clamp(1rem,3vw,2.5rem);bottom:clamp(3.5rem,8vh,5.5rem);width:clamp(9rem,16vw,12rem);aspect-ratio:1;padding:.45rem;border:.35rem solid #111820;border-radius:50%;color:#eff8ff;background:#929ba0;box-shadow:0 0 0 .18rem #aab2b5,0 .4rem 1rem #0000008c,inset 0 0 .5rem #000;pointer-events:none}.gearometer-dial{position:relative;width:100%;height:100%;overflow:hidden;border:.3rem solid #080b0d;border-radius:50%;background:radial-gradient(circle at 50% 47%,#30383d 0 38%,transparent 39%),conic-gradient(from 220deg,#f0f4f5 0 5deg,#151b1f 5deg 32deg,#f0f4f5 32deg 37deg,#151b1f 37deg 64deg,#16bff2 64deg 157deg,#ed3030 157deg 225deg,#151b1f 225deg 360deg);box-shadow:inset 0 0 0 .4rem #161d21,inset 0 0 1rem #000}.dial-mark{position:absolute;z-index:2;top:8%;left:calc(50% - .11rem);width:.22rem;height:13%;border-radius:.1rem;background:#eef5f7;box-shadow:0 0 .18rem #000;transform-origin:50% 323%}.mark-1{transform:rotate(-105deg)}.mark-2{transform:rotate(-63deg)}.mark-3{transform:rotate(-21deg)}.mark-4{transform:rotate(21deg)}.mark-5{transform:rotate(63deg)}.mark-6{transform:rotate(105deg)}.gearometer-needle{--needle-angle: -112deg;position:absolute;z-index:3;bottom:50%;left:calc(50% - .1rem);width:.2rem;height:38%;border-radius:1rem;background:#f12626;box-shadow:0 0 .3rem #ff3b26;transform:rotate(var(--needle-angle));transform-origin:50% 100%;transition:transform 90ms linear}.gearometer-pin{position:absolute;z-index:4;left:calc(50% - .52rem);top:calc(50% - .52rem);width:1.04rem;height:1.04rem;border:2px solid #c9d6df;border-radius:50%;background:radial-gradient(circle at 35% 30%,#edf4f5,#79858b 58%,#222b30)}.gearometer-speed{position:absolute;z-index:5;right:12%;bottom:13%;min-width:2.6em;padding:.08em .18em;border:.14rem solid #191d14;color:#efff62;background:#343a16;font:800 clamp(1rem,2.5vw,1.65rem)/1 "Cascadia Mono",monospace;letter-spacing:.05em;text-align:center;text-shadow:0 0 .35rem #d9ff35}.gearometer-gears{position:absolute;z-index:6;top:7%;right:-17%;display:grid;gap:.14rem;padding:.25rem;border:.18rem solid #11171b;border-radius:.3rem;color:#576169;background:#151b1f;font:900 clamp(.65rem,1.4vw,.95rem)/1 monospace;text-align:center}.gearometer-gears[data-gear=R] .gear-r{color:#ffe74f;text-shadow:0 0 .35rem #ffce21}.gearometer-gears[data-gear=HI] .gear-hi,.gearometer-gears[data-gear=LO] .gear-lo{color:#ffef58;text-shadow:0 0 .35rem #ffce21}.road-name[hidden],.road-debug[hidden],.facade-debug[hidden],.gearometer[hidden]{display:none}
