:root{--glass:#1213169e;--glass-strong:#101114e0;--glass-border:#ffffff17;--glass-highlight:#ffffff14;--grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.045 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--hover:#ffffff14;--divider:#ffffff1a;--text:#f6f5f2;--text-2:#f6f5f2ad;--text-3:#f6f5f270;--taxi:#ffc21a;--taxi-ink:#17140a;--sign-green:#0b6a46;--highway:#c08a3e;--ok:#5ee08f;--warn:#ffc857;--bad:#ff7a6b;--edge:20px;--bar-h:50px;--r-panel:16px;--r-ctl:10px;--shadow:0 18px 40px -18px #000000b3, 0 2px 8px #0003;--ease-out:cubic-bezier(.22, 1, .36, 1);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--font-sign:"Overpass", "Inter", "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;color:var(--text);font-family:var(--font-sans);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;overscroll-behavior:none;background-color:#0a0b0d;font-size:14px;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0}:focus-visible{outline-offset:2px;outline:2px solid #ffffffd9}.icon-sprite{width:0;height:0;position:absolute;overflow:hidden}.icon{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:18px;height:18px}.icon-sm{width:14px;height:14px}kbd{min-width:19px;height:19px;font-family:var(--font-sans);font-variant-numeric:tabular-nums;color:var(--text-2);background:#ffffff14;border-radius:5px;flex:none;justify-content:center;align-items:center;padding:0 5px;font-size:10.5px;font-weight:650;line-height:1;display:inline-flex;box-shadow:inset 0 0 0 1px #ffffff12,inset 0 -1px #0000004d}#canvas-container{z-index:1;cursor:grab;width:100vw;height:100vh;position:fixed;inset:0}#canvas-container:active{cursor:grabbing}body:before,body:after{content:"";z-index:5;pointer-events:none;transition:opacity .35s;position:fixed;left:0;right:0}body:before{background:linear-gradient(#00000038,#0000);height:120px;top:0}body:after{background:linear-gradient(#0000,#0000005c);height:210px;bottom:0}.panel{background:var(--grain), var(--glass);-webkit-backdrop-filter:blur(22px)saturate(170%);backdrop-filter:blur(22px)saturate(170%);border:1px solid var(--glass-border);border-radius:var(--r-panel);box-shadow:inset 0 1px 0 var(--glass-highlight), var(--shadow)}#loading-overlay{z-index:100;background:radial-gradient(120% 90% at 50% 38%,#1b1e24 0%,#0c0d10 55%,#060607 100%);place-items:center;transition:opacity .6s,visibility .6s;display:grid;position:fixed;inset:0}#loading-overlay.hidden{opacity:0;visibility:hidden;pointer-events:none}.loader{text-align:center;animation:rise-in .8s var(--ease-out) both;flex-direction:column;align-items:center;max-width:calc(100vw - 40px);display:flex}.mta-bullet.loader-bullet{width:56px;height:56px;margin-bottom:22px;font-size:21px}.loader-title{letter-spacing:-.03em;font-size:34px;font-weight:650;line-height:1.1}.loader-track{background:#ffffff1a;border-radius:3px;width:240px;height:3px;margin:26px 0 14px;position:relative;overflow:hidden}.loader-fill{border-radius:inherit;background:var(--taxi);transform-origin:0;transition:transform .3s;position:absolute;inset:0;transform:scaleX(0)}.loader-percent{font-variant-numeric:tabular-nums;color:var(--taxi);margin-bottom:10px;font-size:24px}.loader-actions{gap:20px;margin-top:24px;font-size:13px;display:flex}.loader-actions a,.loader-actions button{color:var(--text-2);align-items:center;min-height:44px;text-decoration:underline;display:inline-flex}.loader-actions [hidden]{display:none}.fullscreen-status{max-width:280px;margin-top:8px;padding:12px;font-size:12px}.fullscreen-status[hidden],#btn-fullscreen[hidden]{display:none}.loader-track.is-indeterminate .loader-fill{will-change:transform;width:35%;transition:none;animation:1.5s cubic-bezier(.45,0,.25,1) infinite loader-sweep;transform:translate(-100%)}#loading-status{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12.5px}@keyframes loader-sweep{0%{transform:translate(-100%)}to{transform:translate(290%)}}@keyframes rise-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.hud{z-index:10;pointer-events:none;transition:opacity .3s ease, transform .4s var(--ease-out);position:fixed}.hud>*{pointer-events:auto}.hud-top-left{top:max(var(--edge), env(safe-area-inset-top));left:max(var(--edge), env(safe-area-inset-left))}.hud-top-right{top:var(--edge);right:var(--edge)}.hud-bottom-left{left:var(--edge);bottom:var(--edge);flex-direction:column;align-items:flex-start;gap:10px;display:flex}.hud-bottom-center{left:50%;bottom:var(--edge);flex-direction:column;align-items:center;gap:10px;display:flex;transform:translate(-50%)}.hud-bottom-right{right:var(--edge);bottom:var(--edge)}body.hud-minimized:before,body.hud-minimized:after,body.hud-minimized .hud:not(.hud-top-right){opacity:0}body.hud-minimized .hud:not(.hud-top-right),body.hud-minimized .hud:not(.hud-top-right)>*{pointer-events:none}body.hud-minimized .hud-top-left{transform:translateY(-10px)}body.hud-minimized .hud-bottom-left,body.hud-minimized .hud-bottom-right{transform:translateY(12px)}body.hud-minimized .hud-bottom-center{transform:translate(-50%,12px)}body.hud-minimized .toolbar>:not(#btn-toggle-hud){display:none}.brand{height:var(--bar-h);align-items:center;gap:11px;padding:0 18px 0 9px;display:flex}.mta-bullet{background:var(--taxi);width:30px;height:30px;color:var(--taxi-ink);letter-spacing:-.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:12.5px;font-weight:800;display:inline-flex;box-shadow:inset 0 -1px #0000002e}.brand-heading{align-items:center;gap:10px;display:flex}.brand-titles h1{letter-spacing:-.01em;font-size:14.5px;font-weight:650;line-height:1.2}.repo-link{color:var(--text-2);white-space:nowrap;flex:none;padding:3px 0;font-size:11px;line-height:1;text-decoration:none}.repo-link:hover,.repo-link:focus-visible{color:var(--text);text-underline-offset:3px;text-decoration:underline}.brand-subtitle{color:var(--text-3);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11.5px;line-height:1.4}#hud-fps{color:var(--text-2);font-weight:650}#hud-fps.fps-ok{color:var(--ok)}#hud-fps.fps-warn{color:var(--warn)}#hud-fps.fps-bad{color:var(--bad)}.toolbar{height:var(--bar-h);align-items:center;gap:2px;padding:0 5px;display:flex}.toolbar-divider{background:var(--divider);flex:none;width:1px;height:20px;margin:0 5px}.time-switch{gap:2px;display:flex}.time-btn{border-radius:var(--r-ctl);height:36px;color:var(--text-2);transition:background-color .2s ease, color .2s ease, gap .35s var(--ease-out), padding .35s var(--ease-out);align-items:center;gap:0;padding:0 9px;display:inline-flex}.time-btn:hover{color:var(--text);background:var(--hover)}.time-btn .seg-label{opacity:0;white-space:nowrap;max-width:0;transition:max-width .4s var(--ease-out), opacity .25s ease;font-size:13px;font-weight:600;overflow:hidden}.time-btn.active,.time-btn.active:hover{background:var(--text);color:#121314;gap:7px;padding:0 12px 0 10px}.time-btn.active .seg-label{opacity:1;max-width:120px}.tool-btn{border-radius:var(--r-ctl);white-space:nowrap;height:36px;color:var(--text);align-items:center;gap:7px;padding:0 11px;font-size:13px;font-weight:600;transition:background-color .2s;display:inline-flex}.tool-btn:hover,.tool-btn.is-open{background:var(--hover)}.tool-btn .icon-sm{color:var(--text-3);transition:transform .3s var(--ease-out);margin-left:-2px}.tool-btn.is-open .icon-sm{transform:rotate(180deg)}.tool-btn.icon-only{justify-content:center;width:36px;padding:0}.icon-show,body.hud-minimized .icon-hide{display:none}body.hud-minimized .icon-show{display:block}.tool-btn:active,.time-btn:active,.icon-btn:active,.mode-btn:active,.camera-current:active,.pop-item:active{transform:scale(.97)}.popover{min-width:264px;max-height:calc(100vh - 2 * var(--edge) - 64px);overscroll-behavior:contain;scrollbar-width:thin;color:var(--text);background:var(--grain), var(--glass-strong);-webkit-backdrop-filter:blur(26px)saturate(170%);backdrop-filter:blur(26px)saturate(170%);border:1px solid var(--glass-border);box-shadow:inset 0 1px 0 var(--glass-highlight), 0 28px 60px -22px #000c, 0 4px 14px #0000004d;transform-origin:100% 0;transition:opacity .18s ease, transform .26s var(--ease-out), overlay .26s allow-discrete, display .26s allow-discrete;border-radius:14px;margin:0;padding:6px;position:fixed;inset:auto;overflow-y:auto}.popover[data-side=above]{transform-origin:100% 100%}.popover:not(:popover-open){opacity:0;transform:translateY(-4px)scale(.98)}.popover[data-side=above]:not(:popover-open){transform:translateY(4px)scale(.98)}@starting-style{.popover:popover-open{opacity:0;transform:translateY(-4px)scale(.98)}.popover[data-side=above]:popover-open{transform:translateY(4px)scale(.98)}}.pop-title{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);padding:9px 10px 6px;font-size:10.5px;font-weight:650}.pop-title:not(:first-child){border-top:1px solid var(--divider);margin-top:5px;padding-top:12px}.pop-item{text-align:left;width:100%;color:var(--text);border-radius:9px;justify-content:space-between;align-items:center;gap:16px;padding:8px 10px;font-size:13px;font-weight:550;transition:background-color .15s;display:flex}.pop-item:hover{background:var(--hover)}.pop-item.active,.pop-item.active:hover{background:var(--text);color:#121314}.pop-item.active kbd{color:#0000008c;box-shadow:none;background:#00000014}.tp-btn{flex-direction:column;align-items:flex-start;gap:1px}.pop-sub{color:var(--text-3);font-size:11.5px;font-weight:500}.location{pointer-events:none;flex-direction:column;align-items:flex-start;gap:7px;display:flex}.location-place{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.1em;text-transform:uppercase;color:#ffffffeb;text-shadow:0 1px 2px #000000b3,0 0 14px #0006;max-width:320px;animation:rise-in .4s var(--ease-out) both;font-size:11px;font-weight:700;overflow:hidden}.location-signs{animation:rise-in .4s var(--ease-out) both;align-items:center;gap:6px;display:flex}.location-near{letter-spacing:.06em;text-transform:uppercase;color:#ffffffd9;text-shadow:0 1px 2px #000000b3;font-size:11px;font-weight:650}.street-sign{text-overflow:ellipsis;white-space:nowrap;max-width:210px;font-family:var(--font-sign);letter-spacing:.01em;color:#fff;background:linear-gradient(180deg, #ffffff1a, #fff0 55%), var(--sign-green);outline-offset:-4px;border-radius:6px;outline:1.5px solid #ffffffeb;padding:9px 13px 7px;font-size:15px;font-weight:700;line-height:1.05;overflow:hidden;box-shadow:0 1px #00000059,0 10px 22px -10px #000000bf}.radar{-webkit-backdrop-filter:none;backdrop-filter:none;cursor:pointer;width:228px;height:228px;transition:transform .35s var(--ease-out);background:#78a6b5;border:4px solid #171b16;border-radius:50%;position:relative;overflow:hidden;box-shadow:0 0 0 1px #e0e1d1b3,0 5px 18px #0006}.radar:hover{transform:translateY(-2px)}.radar:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #ffffff0f,inset 0 0 18px #0000003d}#minimap-canvas{width:100%;height:100%;display:block}.radar-north{color:#fff;pointer-events:none;background:#0a0c0fb8;border-radius:50%;place-items:center;width:17px;height:17px;font-size:9px;font-weight:800;line-height:1;display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:inset 0 0 0 1px #ffffff24}.radar-key{z-index:1;color:#ffffffd9;background:#0a0c0f99;transition:background-color .2s,color .2s;display:none;position:absolute;top:9px;right:9px}.radar:hover .radar-key{color:var(--taxi-ink);background:var(--taxi);box-shadow:none}.controls-hint{color:#ffffffe0;text-shadow:0 1px 2px #000000bf;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:6px 16px;max-width:600px;font-size:12px;font-weight:500;display:flex}.hint{white-space:nowrap;animation:rise-in .35s var(--ease-out) both;align-items:center;gap:3px;display:inline-flex}.hint kbd{color:#fff;text-shadow:none;background:#0c0d0f8c;box-shadow:inset 0 0 0 1px #ffffff29}.hint-label{margin-left:4px}.mode-switch{gap:2px;padding:5px;display:flex;position:relative}.mode-indicator{z-index:0;width:var(--ind-w,0px);transform:translateX(var(--ind-x,0px));background:var(--taxi);transition:transform .45s var(--ease-out), width .45s var(--ease-out);border-radius:12px;position:absolute;top:5px;bottom:5px;left:0;box-shadow:inset 0 1px #ffffff73,inset 0 -1px #0000001f,0 4px 12px -4px #00000080}.mode-switch.no-anim .mode-indicator{transition:none}.mode-btn{z-index:1;white-space:nowrap;height:42px;color:var(--text-2);border-radius:12px;align-items:center;gap:8px;padding:0 12px 0 11px;font-size:13.5px;font-weight:600;transition:color .25s,background-color .2s;display:inline-flex;position:relative}.mode-btn:hover{color:var(--text);background:var(--hover)}.mode-btn.active,.mode-btn.active:hover{color:var(--taxi-ink);background:0 0}.mode-btn .icon{stroke-width:1.7px;width:20px;height:20px}.mode-btn kbd{margin-left:2px;transition:color .25s,background-color .25s}.mode-btn.active kbd{color:#17140a9e;box-shadow:none;background:#17140a1a}.cluster{width:272px;overflow:hidden}.gauge{padding:13px 16px 15px}.gauge-top{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.gauge-label{text-overflow:ellipsis;white-space:nowrap;letter-spacing:.1em;text-transform:uppercase;min-width:0;color:var(--text-3);font-size:10.5px;font-weight:650;overflow:hidden}.gauge-alt{font-variant-numeric:tabular-nums;color:var(--text-2);opacity:0;flex:none;font-size:12px;font-weight:600;transition:opacity .3s}body[data-mode=helicopter] .gauge-alt{opacity:1}.gauge-alt-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:10.5px}.gauge-speed{align-items:baseline;gap:6px;margin-top:5px;display:flex}.gauge-boost{color:var(--taxi);letter-spacing:.04em;white-space:nowrap;margin-left:auto;font-size:9px;font-weight:700}#hud-speed{letter-spacing:-.035em;font-variant-numeric:tabular-nums;font-size:42px;font-weight:600;line-height:1}.gauge-unit{letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);font-size:12px;font-weight:650}.gauge-meter{background:#ffffff1a;border-radius:4px;height:4px;margin-top:12px;position:relative;overflow:hidden}#hud-speed-meter{border-radius:inherit;background:var(--text);transform-origin:0;transition:transform .25s linear,background-color .2s;position:absolute;inset:0;transform:scaleX(0)}body.is-boosting #hud-speed-meter{background:var(--taxi)}.camera-switch{border-top:1px solid var(--divider);align-items:center;gap:2px;padding:4px;display:flex}.icon-btn{border-radius:var(--r-ctl);width:36px;height:36px;color:var(--text-2);flex:none;place-items:center;transition:background-color .15s,color .15s;display:inline-grid}.icon-btn:hover{color:var(--text);background:var(--hover)}.camera-current{border-radius:var(--r-ctl);flex:1;justify-content:center;align-items:center;gap:8px;min-width:0;height:36px;padding:0 8px;font-size:13px;font-weight:600;transition:background-color .15s;display:inline-flex}.camera-current:hover,.camera-current.is-open{background:var(--hover)}.camera-current .icon{color:var(--text-3)}#hud-active-camera{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fullmap-modal{z-index:90;background:#0a1118;transition:opacity .25s,visibility .25s;position:fixed;inset:0}.fullmap-modal.hidden{opacity:0;visibility:hidden;pointer-events:none}.fullmap-canvas-wrap{cursor:crosshair;position:absolute;inset:0;overflow:hidden}.fullmap-canvas-wrap.is-panning{cursor:grabbing}#fullmap-canvas{touch-action:none;width:100%;height:100%;display:block}.fullmap-header{top:var(--edge);left:var(--edge);right:var(--edge);pointer-events:none;align-items:stretch;gap:10px;display:flex;position:absolute}.fullmap-header>*{pointer-events:auto}.fullmap-modal:not(.hidden) .fullmap-header,.fullmap-modal:not(.hidden) .map-controls,.fullmap-modal:not(.hidden) .fullmap-footer{animation:rise-in .45s var(--ease-out) both}.fullmap-title{align-items:center;gap:12px;min-width:0;padding:9px 20px 9px 11px;display:flex}.fullmap-title h2{letter-spacing:-.01em;white-space:nowrap;font-size:14.5px;font-weight:650;line-height:1.2}.fullmap-subtitle{color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;font-size:12px;line-height:1.4;overflow:hidden}.fullmap-search-wrap{min-width:180px;color:var(--text-3);cursor:text;flex:0 440px;align-items:center;gap:10px;padding:0 16px;transition:background-color .2s,border-color .2s,color .2s;display:flex}.fullmap-search-wrap:focus-within{color:var(--text-2);background:var(--grain), var(--glass-strong);border-color:#ffffff3d}.fullmap-search{min-width:0;height:100%;color:var(--text);font:inherit;-webkit-user-select:text;user-select:text;background:0 0;border:0;outline:none;flex:1;font-size:13.5px}.fullmap-search::placeholder{color:var(--text-3)}.fullmap-close{border-radius:var(--r-panel);height:auto;margin-left:auto;padding:0 14px 0 12px}.fullmap-close:hover{background:var(--grain), var(--glass-strong)}.map-controls{top:50%;right:var(--edge);flex-direction:column;align-items:center;gap:10px;display:flex;position:absolute;translate:0 -50%}.map-compass{border-radius:50%;place-items:center;width:46px;height:46px;display:grid}.map-compass svg{width:44px;height:44px}.map-compass text{font:800 7.5px var(--font-sans);fill:#fff}.map-zoom{border-radius:14px;flex-direction:column;gap:2px;padding:4px;display:flex}#map-relief[aria-pressed=true]{color:var(--accent,#ffc21a);background:#ffc21a26}.fullmap-footer{left:50%;bottom:var(--edge);max-width:min(560px, calc(100% - 2 * var(--edge) - 2 * 200px));display:flex;position:absolute;translate:-50%}.fullmap-status{min-width:0;color:var(--text-2);white-space:nowrap;text-overflow:ellipsis;padding:10px 16px;font-size:12.5px;font-weight:500;overflow:hidden}.fullmap-legend{right:var(--edge);bottom:var(--edge);color:var(--text-2);white-space:nowrap;align-items:center;gap:14px;padding:10px 16px;font-size:12px;font-weight:500;display:flex;position:absolute}.fullmap-modal:not(.hidden) .fullmap-legend{animation:rise-in .45s var(--ease-out) both}.legend-item{align-items:center;gap:7px;display:inline-flex}.legend-swatch{flex:none;display:inline-block}.player-swatch{clip-path:polygon(50% 0,100% 100%,50% 78%,0 100%);background:#fff;width:10px;height:11px}.landmark-swatch{background:#fff;border-radius:50%;width:9px;height:9px;box-shadow:0 0 0 2px #0b0f14,0 0 0 3px #ffffff59}.gps-swatch,.bridge-swatch{border-radius:2px;width:16px;height:4px}.gps-swatch{background:var(--taxi)}.bridge-swatch{background:var(--highway)}.legend-counts{border-left:1px solid var(--divider);color:var(--text-3);padding-left:14px}@media (width<=1800px){.legend-counts{display:none}}@media (width<=1360px){.fullmap-legend{display:none}}@media (width<=1240px){.controls-hint,.mode-btn kbd{display:none}}@media (width<=1080px){.mode-label,.tool-label,.tool-btn kbd{display:none}.mode-btn{padding:0 12px}.tool-btn:not(.icon-only):not(.fullmap-close){gap:4px;padding:0 9px}}@media (width<=820px){:root{--edge:12px}.hud-top-left{top:calc(max(var(--edge), env(safe-area-inset-top)) + 62px)}.brand>.mta-bullet,.brand-subtitle{display:none}.brand-heading h1{font-size:12px}.brand .repo-link{display:none}.brand{height:44px;padding:0 12px}.repo-link{align-items:center;gap:4px;min-height:44px;font-size:12px;display:flex}.radar{width:180px;height:180px}.cluster{width:220px}#hud-speed{font-size:34px}.fullmap-title>div{display:none}.fullmap-title{padding:9px}.fullmap-footer{max-width:calc(100% - 2 * var(--edge));bottom:calc(var(--edge) + 34px)}.map-controls{top:auto;bottom:calc(var(--edge) + 96px);translate:none}}@media (width<=620px){.time-btn.active .seg-label{display:none}.time-btn.active{gap:0;padding:0 9px}.radar{width:148px;height:148px}.hud-bottom-right{bottom:calc(var(--edge) + 64px)}.gauge{display:none}.camera-switch{border-top:0}}#touch-controls{z-index:12;left:max(var(--edge), env(safe-area-inset-left));right:max(var(--edge), env(safe-area-inset-right));bottom:calc(max(var(--edge), env(safe-area-inset-bottom)) + 72px);pointer-events:none;-webkit-touch-callout:none;justify-content:space-between;align-items:flex-end;gap:16px;display:flex;position:fixed}#touch-controls[hidden],.touch-action[hidden]{display:none}.touch-movement{text-align:center}.touch-steering{gap:12px;padding-bottom:22px;display:none}body[data-mode=car] .touch-steering,body[data-mode=cyclist] .touch-steering{display:flex}body[data-mode=car] .touch-movement,body[data-mode=cyclist] .touch-movement{display:none}#touch-stick{background:radial-gradient(circle, #ffffff0f 32%, transparent 33%), var(--glass);width:136px;height:136px;box-shadow:var(--shadow), inset 0 0 0 12px #ffffff06;pointer-events:auto;touch-action:none;border:1px solid #ffffff38;border-radius:50%;position:relative}.touch-stick-axis:before,.touch-stick-axis:after{content:"";background:#ffffff1f;position:absolute}.touch-stick-axis:before{width:1px;top:16px;bottom:16px;left:50%}.touch-stick-axis:after{height:1px;top:50%;left:16px;right:16px}#touch-stick-knob{width:48px;height:48px;transform:translate(calc(-50% + var(--stick-x,0px)), calc(-50% + var(--stick-y,0px)));pointer-events:none;background:#f6f5f2cc;border:1px solid #ffffff73;border-radius:50%;position:absolute;top:50%;left:50%;box-shadow:0 4px 16px #0000004d}#touch-stick.is-pressed #touch-stick-knob{background:var(--taxi);border-color:var(--taxi)}.touch-caption,.touch-look-hint{color:var(--text-2);text-shadow:0 1px 5px #000;font-size:11px;font-weight:550}.touch-caption{margin-top:8px;display:block}.touch-look-hint{top:calc(max(var(--edge), env(safe-area-inset-top)) + 120px);right:max(var(--edge), env(safe-area-inset-right));padding:4px;position:fixed}.touch-actions{grid-template-columns:repeat(2,64px);gap:10px;padding-bottom:22px;display:grid}.touch-action{background:var(--glass-strong);width:64px;height:64px;box-shadow:var(--shadow);pointer-events:auto;touch-action:none;border:1px solid #ffffff38;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;font-size:11px;font-weight:650;display:flex}.touch-action>[aria-hidden]{font-size:23px;line-height:1}.touch-boost,.touch-super{color:var(--taxi);border-color:#ffc21aa6}.touch-super{grid-area:1/1}.touch-boost{grid-area:1/2}.touch-gas{grid-area:2/2}.touch-brake{grid-area:2/1}.touch-gas,.touch-brake{border-radius:18px}.touch-action.is-pressed{color:var(--taxi-ink);background:var(--taxi);border-color:var(--taxi)}body.touch-enabled .controls-hint,body.touch-enabled .gauge,body.touch-enabled kbd,body.touch-enabled .toolbar-divider,body.touch-enabled .seg-label,body.touch-enabled .hud-bottom-left .location{display:none}body.touch-enabled .radar{width:112px;height:112px;display:block}body.touch-enabled .hud-top-right{top:max(var(--edge), env(safe-area-inset-top));right:max(var(--edge), env(safe-area-inset-right))}body.touch-enabled .toolbar{gap:2px;padding:4px}body.touch-enabled .time-btn,body.touch-enabled .time-btn.active{gap:0;min-width:44px;height:44px;padding:0 8px}body.touch-enabled .tool-btn{min-width:44px;min-height:44px}body.touch-enabled .tool-label{display:none}body.touch-enabled .hud-bottom-center{bottom:max(var(--edge), env(safe-area-inset-bottom))}body.touch-enabled .mode-label{font-size:10px;display:block}body.touch-enabled .mode-btn{flex-direction:column;justify-content:center;gap:3px;width:62px;height:48px;padding:0}body.touch-enabled .hud-bottom-right{top:calc(max(var(--edge), env(safe-area-inset-top)) + 62px);right:max(var(--edge), env(safe-area-inset-right));bottom:auto}body.touch-enabled .cluster{width:230px}body.touch-enabled .camera-switch{border:0}body.touch-enabled .camera-switch .icon-btn{width:44px;height:44px}body.touch-enabled .hud-bottom-left{left:max(var(--edge), env(safe-area-inset-left));top:calc(max(var(--edge), env(safe-area-inset-top)) + 122px);max-width:calc(100% - 2 * var(--edge));bottom:auto}body.touch-enabled .fullmap-header{top:max(var(--edge), env(safe-area-inset-top));left:max(var(--edge), env(safe-area-inset-left));right:max(var(--edge), env(safe-area-inset-right))}body.touch-enabled .map-controls .icon-btn{width:44px;height:44px}body.touch-enabled .pop-item{min-height:44px}body.touch-enabled .data-attribution{bottom:calc(max(var(--edge), env(safe-area-inset-bottom)) + 62px);font-size:8px}@media (width<=440px){body.touch-enabled .hud-top-right{left:max(var(--edge), env(safe-area-inset-left))}body.touch-enabled .toolbar{grid-template-columns:repeat(4,1fr);gap:2px;height:auto;display:grid}body.touch-enabled .tool-btn:not(.icon-only){padding:0 6px}body.touch-enabled .time-switch{grid-column:1/-1;justify-content:space-evenly;gap:0}body.touch-enabled .hud-top-left,body.touch-enabled .hud-bottom-right{top:calc(max(var(--edge), env(safe-area-inset-top)) + 108px)}body.touch-enabled .hud-bottom-left{top:calc(max(var(--edge), env(safe-area-inset-top)) + 172px)}.touch-look-hint{top:calc(max(var(--edge), env(safe-area-inset-top)) + 164px)}}@media (width<=360px){body.touch-enabled .toolbar{height:auto}body.touch-enabled .hud-bottom-right .cluster{width:210px}body.touch-enabled .hud-top-left{display:none}.touch-look-hint{top:calc(max(var(--edge), env(safe-area-inset-top)) + 172px)}}@media (height<=500px){body.touch-enabled .hud-bottom-left{top:calc(max(var(--edge), env(safe-area-inset-top)) + 64px);display:flex;left:158px}body.touch-enabled .radar{width:88px;height:88px}body.touch-enabled .hud-bottom-right{top:calc(max(var(--edge), env(safe-area-inset-top)) + 58px)}#touch-controls{bottom:max(var(--edge), env(safe-area-inset-bottom))}body.touch-enabled .hud-top-left{top:max(var(--edge), env(safe-area-inset-top))}body.touch-enabled .touch-look-hint{display:none}body.touch-enabled .data-attribution{font-size:7px;bottom:1px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.data-attribution{z-index:35;color:#ffffffa6;text-align:right;text-shadow:0 1px 3px #000;max-width:calc(100vw - 24px);font:9px/1.4 Inter,sans-serif;position:fixed;bottom:4px;right:12px}.data-attribution a{color:inherit;text-decoration:none}.data-attribution a:hover{color:#fff;text-decoration:underline}
