:root{--ink:#f4f1ea;--ink-dim:#b9b3c6;--ink-faint:#7d7789;--bg:#0b0d12;--panel:#100f1ad1;--panel-line:#e8b93c47;--gold:#e8b93c;--gold-deep:#a8791a;--rose:#c2708a;--violet:#2a2350;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-display:"Haettenschweiler", "Arial Narrow", "Oswald", var(--font-ui);--ease:cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:none;margin:0;padding:0;overflow:hidden}body{-webkit-user-select:none;user-select:none}#stage{z-index:0;position:fixed;inset:0}#stage canvas{width:100%;height:100%;display:block}.noscript{text-align:center;letter-spacing:.04em;z-index:999;place-items:center;padding:2rem;font-size:1rem;display:grid;position:fixed;inset:0}.rotate-hint{z-index:900;opacity:0;transition:opacity .35s var(--ease);background:#06060cf0;place-items:center;display:grid;position:fixed;inset:0}.rotate-hint[hidden]{display:none}.rotate-hint.is-in{opacity:1}.rotate-hint__inner{text-align:center;flex-direction:column;align-items:center;gap:1rem;display:flex}.rotate-hint__icon{width:84px;height:84px;color:var(--gold);animation:rotate-nudge 2.6s var(--ease) infinite}.rotate-hint__title{margin:0;font-size:1.15rem;font-weight:600}.rotate-hint__sub{letter-spacing:.22em;color:var(--ink-faint);margin:0;font-size:.72rem}@keyframes rotate-nudge{0%,40%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}.stamp{color:#fff6ef;font-family:var(--font-display);letter-spacing:0;background:#c2352f;flex-direction:column;justify-content:center;align-items:center;gap:.1em;padding:.35em .28em;line-height:1;display:flex;box-shadow:inset 0 0 0 2px #fff0e629}.stamp__glyph{font-size:clamp(1.6rem,5.4vmin,3.1rem)}.hud__district-alt,.hud__street-alt,.hud__shop-alt,.hud__bus-alt,.hud__weapon-alt,.caption__alt,.roster__alt,.mission__card-title-alt,.mission__objective-alt,.mission__offer-alt,.dialogue__name-alt,.dialogue__text-alt{display:none!important}.loading{z-index:400;transition:opacity .6s var(--ease);flex-direction:column;justify-content:space-between;padding:clamp(1.2rem,4vmin,3rem);display:flex;position:fixed;inset:0}.loading.is-leaving{opacity:0;pointer-events:none}.loading__scrim{z-index:-1;pointer-events:none;background:linear-gradient(#090712db 0%,#0907122e 34%,#09071233 55%,#090712eb 100%),radial-gradient(120% 80% at 50% 40%,#0000 30%,#05040ca8 100%);position:absolute;inset:0}.loading__lockup{align-items:flex-start;gap:clamp(.7rem,2vmin,1.4rem);display:flex}.lockup__text{flex-direction:column;gap:.15em;display:flex}.lockup__title{font-family:var(--font-display);letter-spacing:.012em;text-transform:uppercase;color:var(--ink);text-shadow:0 3px #c2352fd9,0 10px 34px #000000bf;margin:0;font-size:clamp(2.4rem,9.5vmin,6.2rem);line-height:.88}.lockup__sub{letter-spacing:.42em;color:var(--gold);text-transform:uppercase;margin:.35em 0 0;font-size:clamp(.62rem,1.9vmin,.95rem)}.lockup__tag{letter-spacing:.24em;color:var(--ink-faint);margin:.25em 0 0;font-size:clamp(.58rem,1.6vmin,.8rem)}.loading__footer{flex-direction:column;gap:clamp(.6rem,1.6vmin,1.1rem);max-width:min(760px,92vw);display:flex}.caption{align-items:center;gap:.85rem;display:flex}.caption__spinner{border:2px solid #e8b93c3d;border-top-color:var(--gold);border-radius:50%;flex:none;width:26px;height:26px;animation:.95s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.caption__text{flex-direction:column;gap:.1em;min-width:0;display:flex}.caption__label{letter-spacing:.16em;text-transform:uppercase;color:var(--ink);font-size:clamp(.95rem,2.9vmin,1.6rem);font-weight:600}.caption__label.is-in{animation:caption-in .45s var(--ease) both}.caption__alt{letter-spacing:.3em;color:var(--ink-dim);font-size:clamp(.58rem,1.6vmin,.82rem)}@keyframes caption-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.meter{align-items:center;gap:clamp(.7rem,2vmin,1.2rem);display:flex}.meter__track{background:#ffffff1c;flex:1;height:5px;position:relative;overflow:hidden}.meter__fill{background:linear-gradient(90deg, var(--gold-deep), var(--gold));width:0%;transition:width .22s linear;position:absolute;inset:0 auto 0 0;box-shadow:0 0 14px #e8b93c99}.meter__readout{font-variant-numeric:tabular-nums;align-items:baseline;gap:.12em;min-width:4.2ch;display:flex}.meter__num{color:var(--gold);font-size:clamp(1.5rem,5vmin,2.9rem);font-weight:700;line-height:1}.meter__pct{color:var(--ink-faint);font-size:clamp(.7rem,2vmin,1.05rem)}.loading__phase,.loading__note{letter-spacing:.2em;color:var(--ink-faint);text-transform:uppercase;font-size:clamp(.52rem,1.4vmin,.7rem)}.loading__note{letter-spacing:.06em;text-transform:none;opacity:.72;max-width:70ch}@media (prefers-reduced-motion:reduce){.caption__spinner{animation-duration:3s}.caption__label.is-in{animation:none}.meter__fill{transition:none}}.menu{z-index:300;opacity:0;transition:opacity .5s var(--ease);flex-direction:column;justify-content:center;align-items:flex-start;gap:clamp(1rem,3vmin,2.2rem);padding:clamp(1.2rem,4vmin,3rem);display:flex;position:fixed;inset:0}.menu.is-in{opacity:1}.menu__scrim{z-index:-1;pointer-events:none;background:linear-gradient(100deg,#07060ee6 0%,#07060ec7 26%,#07060e47 52%,#07060e0f 74%,#07060e66 100%),linear-gradient(#07060e00 66%,#07060e8c 100%);position:absolute;inset:0}.menu__lockup{align-items:center;gap:clamp(.6rem,1.8vmin,1.2rem);display:flex}.menu__title{font-family:var(--font-display);letter-spacing:.03em;text-transform:uppercase;text-shadow:0 3px #c2352fcc,0 8px 28px #000000b3;margin:0;font-size:clamp(1.7rem,6.4vmin,4.1rem);line-height:.9}.menu__sub{letter-spacing:.4em;color:var(--gold);text-transform:uppercase;margin:.2em 0 0;font-size:clamp(.56rem,1.6vmin,.82rem)}.menu__nav{width:min(340px,84vw)}.menu__list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.menu__btn{width:100%;color:var(--ink-dim);cursor:pointer;text-align:left;transition:background .18s var(--ease), border-color .18s var(--ease), color .18s var(--ease), transform .18s var(--ease);background:#0e0d188c;border:1px solid #0000;border-left:2px solid #ffffff24;align-items:baseline;gap:.7rem;padding:clamp(.5rem,1.4vmin,.78rem) clamp(.8rem,2vmin,1.1rem);display:flex}.menu__btn-label{font-size:clamp(.92rem,2.5vmin,1.15rem);font-weight:500}.menu__btn-sub{letter-spacing:.22em;color:var(--ink-faint);margin-left:auto;font-size:clamp(.5rem,1.3vmin,.64rem)}.menu__item.is-selected .menu__btn{border-left-color:var(--gold);color:var(--ink);background:#e8b93c21;transform:translate(3px)}.menu__item--primary .menu__btn{color:var(--ink);background:#e8b93c33;font-weight:600}.menu__item--primary.is-selected .menu__btn{background:var(--gold);color:#17130a}.menu__item--primary.is-selected .menu__btn-sub{color:#17130a9e}.menu__panel{z-index:2;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);animation:panel-in .22s var(--ease) both;background:#07060ebd;justify-content:center;align-items:center;padding:clamp(.8rem,3vmin,2rem);display:flex;position:absolute;inset:0}.menu__panel[hidden]{display:none}@keyframes panel-in{0%{opacity:0}to{opacity:1}}.card{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);flex-direction:column;width:min(760px,94vw);max-height:min(86vh,620px);display:flex;box-shadow:0 24px 70px #0000009e}.card__head{border-bottom:1px solid #ffffff14;padding:clamp(.8rem,2.2vmin,1.3rem) clamp(1rem,2.6vmin,1.6rem) .7rem;position:relative}.card__title{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;margin:0;font-size:clamp(1.1rem,3vmin,1.7rem)}.card__sub{letter-spacing:.3em;color:var(--ink-faint);margin:.15em 0 0;font-size:.56rem}.card__close{width:30px;height:30px;color:var(--ink-dim);cursor:pointer;background:0 0;border:1px solid #ffffff29;font-size:.8rem;line-height:1;position:absolute;top:.6rem;right:.7rem}.card__close:hover{color:var(--gold);border-color:var(--gold)}.card__body{overscroll-behavior:contain;flex-direction:column;gap:.5rem;min-height:0;padding:clamp(.7rem,2vmin,1.2rem) clamp(1rem,2.6vmin,1.6rem) clamp(.9rem,2.2vmin,1.4rem);display:flex;overflow-y:auto}.card__section{letter-spacing:.1em;text-transform:uppercase;align-items:baseline;gap:.6rem;margin:.7rem 0 .2rem;font-size:clamp(.8rem,2vmin,1rem);display:flex}.card__section span{letter-spacing:.24em;color:var(--ink-faint);font-size:.52rem}.card__text,.card__foot{color:var(--ink-dim);margin:0;font-size:clamp(.72rem,1.8vmin,.86rem);line-height:1.6}.card__foot{color:var(--ink-faint);margin-top:.5rem;font-size:.68rem}.roster{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.6rem;display:grid}.roster__card{text-align:left;color:var(--ink-dim);cursor:pointer;transition:border-color .18s var(--ease), background .18s var(--ease);background:#ffffff09;border:1px solid #ffffff17;flex-direction:column;gap:.3rem;padding:.85rem;display:flex}.roster__card.is-active{border-color:var(--gold);background:#e8b93c1a}.roster__swatch{background:linear-gradient(90deg, var(--a), var(--b));width:100%;height:4px}.roster__name{color:var(--ink);font-size:clamp(.86rem,2.2vmin,1.02rem);font-weight:600}.roster__alt,.roster__tag{letter-spacing:.16em;color:var(--ink-faint);text-transform:uppercase;font-size:.58rem}.roster__blurb{margin-top:.2rem;font-size:.72rem;line-height:1.5}.roster__stats{letter-spacing:.14em;color:var(--gold);font-variant-numeric:tabular-nums;gap:.5rem;margin-top:.35rem;font-size:.52rem;display:flex}.option{border-bottom:1px solid #ffffff0e;align-items:center;gap:.8rem;padding:.42rem 0;display:flex}.option__label{flex:1;font-size:clamp(.74rem,1.9vmin,.88rem)}.option__value{color:var(--gold);font-variant-numeric:tabular-nums;text-align:right;min-width:4ch;font-size:.68rem}.segmented{flex-wrap:wrap;gap:.25rem;display:flex}.segmented__btn{letter-spacing:.14em;color:var(--ink-dim);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1f;padding:.3rem .55rem;font-size:.56rem}.segmented__btn.is-active{background:var(--gold);border-color:var(--gold);color:#17130a}.option input[type=range]{width:min(160px,40vw);accent-color:var(--gold)}.option input[type=checkbox]{width:16px;height:16px;accent-color:var(--gold)}.keys{flex-direction:column;gap:.18rem;display:flex}.keys__row{border-bottom:1px solid #ffffff0d;grid-template-columns:minmax(88px,.9fr) 2fr 1.1fr;align-items:center;gap:.6rem;padding:.28rem 0;display:grid}.keys__row kbd{font-family:var(--font-ui);letter-spacing:.08em;color:var(--ink);text-align:center;background:#ffffff12;border:1px solid #ffffff24;border-bottom-width:2px;padding:.2rem .4rem;font-size:.62rem}.keys__action{font-size:clamp(.7rem,1.8vmin,.84rem)}.keys__touch{color:var(--ink-faint);letter-spacing:.08em;font-size:.62rem}.credits{flex-direction:column;gap:.42rem;margin:0;padding:0;list-style:none;display:flex}.credits li{flex-direction:column;gap:.1rem;display:flex}.credits a{color:var(--gold);border-bottom:1px solid #e8b93c4d;align-self:flex-start;font-size:.78rem;text-decoration:none}.credits span{color:var(--ink-faint);font-size:.64rem}.menu__footer{justify-content:space-between;align-items:center;gap:1rem;display:flex;position:absolute;bottom:clamp(1rem,3vmin,2rem);left:clamp(1.2rem,4vmin,3rem);right:clamp(1.2rem,4vmin,3rem)}.tip{align-items:center;gap:.6rem;min-width:0;display:flex}.tip__tag{letter-spacing:.2em;color:#fff6ef;background:#c2352f;flex:none;padding:.16rem .42rem;font-size:.5rem}.tip__text{color:var(--ink-dim);text-overflow:ellipsis;white-space:nowrap;font-size:clamp(.62rem,1.6vmin,.76rem);overflow:hidden}.tip__text.is-in{animation:tip-in .6s var(--ease) both}@keyframes tip-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.menu__build{letter-spacing:.2em;color:var(--ink-faint);text-transform:uppercase;flex:none;font-size:.52rem}.toast{z-index:600;opacity:0;background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);max-width:min(520px,88vw);color:var(--ink);text-align:center;transition:opacity .4s var(--ease), transform .4s var(--ease);pointer-events:none;padding:.7rem 1.1rem;font-size:clamp(.72rem,1.8vmin,.86rem);line-height:1.5;position:fixed;bottom:clamp(1.2rem,5vmin,3rem);left:50%;transform:translate(-50%,14px)}.toast.is-in{opacity:1;transform:translate(-50%)}@media (max-height:460px){.menu{gap:.5rem;padding-top:.6rem;padding-bottom:.6rem}.menu__lockup{gap:.5rem}.menu__title{font-size:clamp(1.05rem,3.6vh,1.5rem)}.menu__sub{letter-spacing:.28em;margin-top:.1em;font-size:.48rem}.stamp--menu .stamp__glyph{font-size:clamp(.7rem,2.6vh,1rem)}.menu__btn{padding:.4rem .75rem}.menu__btn-label{font-size:.9rem}.menu__panel{max-height:none}.menu__footer{font-size:.82em;bottom:.5rem}}@media (prefers-reduced-motion:reduce){.tip__text.is-in{animation:none}.menu__btn{transition:none}}.savecode__row{flex-wrap:wrap;align-items:center;gap:.6rem;margin:.7rem 0 .2rem;display:flex}.savecode__code{letter-spacing:.12em;color:var(--gold);word-break:break-all;-webkit-user-select:all;user-select:all;cursor:text;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(1rem,3.6vmin,1.45rem)}.savecode__form{flex-wrap:wrap;gap:.5rem;margin-top:.3rem;display:flex}.savecode__input{letter-spacing:.1em;text-transform:uppercase;min-width:0;color:var(--ink);background:#ffffff0f;border:1px solid #ffffff29;border-radius:0;flex:12rem;padding:.5rem .65rem;font:16px ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.savecode__input:focus{border-color:var(--gold);outline:none}.savecode__btn{padding:.5rem .9rem;font-size:.62rem}.savecode__status{min-height:1.3em}.savecode__status.is-error{color:#e8806a}.hud{z-index:200;pointer-events:none;font-family:var(--font-ui);transition:opacity .3s var(--ease);position:fixed;inset:0}.hud.is-hidden{opacity:0}.hud__area{max-width:min(38ch,52vw);position:absolute;top:clamp(.9rem,3vmin,1.8rem);left:clamp(.9rem,3vmin,1.8rem)}.hud__district{align-items:baseline;gap:.55rem;display:flex}.hud__district-name{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--ink);text-shadow:0 2px 12px #000000d9;font-size:clamp(1.1rem,3.4vmin,1.9rem)}.hud__district-alt{letter-spacing:.24em;color:var(--gold);text-shadow:0 2px 10px #000000e6;font-size:clamp(.6rem,1.7vmin,.85rem)}.hud__blurb{color:var(--ink-dim);text-shadow:0 1px 8px #000000e6;margin:.2rem 0 0;font-size:clamp(.62rem,1.6vmin,.78rem);line-height:1.45}.hud__street{border-right:2px solid var(--gold);text-align:right;background:#0a0a1299;flex-direction:column;align-items:flex-end;gap:.12rem;padding:.42rem .7rem;display:flex;position:absolute;top:clamp(.9rem,3vmin,1.8rem);right:clamp(.9rem,3vmin,1.8rem)}.hud__street-primary{color:var(--ink);text-shadow:0 1px 8px #000000e6;font-size:clamp(.72rem,1.9vmin,.92rem);font-weight:500}.hud__street-alt{letter-spacing:.18em;color:var(--ink-dim);font-size:clamp(.52rem,1.4vmin,.66rem)}.hud__minimap{background:#090a1099;border:1px solid #e8b93c59;border-radius:50%;width:132px;height:132px;position:absolute;bottom:clamp(.9rem,3vmin,1.8rem);left:clamp(.9rem,3vmin,1.8rem);overflow:hidden;box-shadow:0 6px 26px #0009}.hud__map{width:132px;height:132px;display:block}.hud__stamina{background:#ffffff1f;width:132px;height:3px;position:absolute;bottom:calc(clamp(.9rem,3vmin,1.8rem) + 144px);left:clamp(.9rem,3vmin,1.8rem)}.hud__stamina-fill{background:var(--gold);width:100%;height:100%;transition:width .12s linear}.hud__stamina-fill.is-low{background:#c2352f}.hud__fps{letter-spacing:.14em;color:var(--gold);font-variant-numeric:tabular-nums;background:#0a0a1299;padding:.2rem .5rem;font-size:.68rem;position:absolute;top:clamp(.9rem,3vmin,1.8rem);left:50%;transform:translate(-50%)}@media (max-height:460px){.hud__minimap,.hud__map{width:96px;height:96px}.hud__stamina{width:96px;bottom:calc(clamp(.9rem,3vmin,1.8rem) + 106px)}.hud__blurb{display:none}}.hud__drive{text-align:right;pointer-events:none;grid-template-columns:auto auto;align-items:end;gap:.2rem .8rem;display:grid;position:absolute;bottom:clamp(.9rem,3vmin,1.8rem);right:clamp(.9rem,3vmin,1.8rem)}.hud__drive[hidden]{display:none}.hud__speed{grid-column:1/-1;justify-content:flex-end;align-items:baseline;gap:.35rem;display:flex}.hud__speed-value{font-family:var(--font-display,system-ui);color:#f4efe2;text-shadow:0 2px 10px #000000bf;font-variant-numeric:tabular-nums;font-size:clamp(2.2rem,7vmin,3.6rem);font-weight:700;line-height:.9}.hud__speed-unit{letter-spacing:.16em;text-transform:uppercase;color:#f4efe29e;font-size:.7rem}.hud__gear{color:#e8c53c;text-align:center;font-variant-numeric:tabular-nums;background:#0c0d14b8;border:1px solid #e8c53c8c;border-radius:4px;min-width:2.1rem;padding:.25rem .5rem;font-size:1.3rem;font-weight:700}.hud__tacho{background:#ffffff29;border-radius:2px;align-self:center;width:clamp(5rem,14vmin,8rem);height:4px;overflow:hidden}.hud__tacho-fill{background:linear-gradient(90deg,#6ad39a,#e8c53c 70%,#d8503c);width:0%;height:100%;transition:width 80ms linear}.hud__nitro{grid-column:1/-1;justify-content:flex-end;align-items:center;gap:.5rem;margin-top:.2rem;display:flex}.hud__nitro-label{letter-spacing:.16em;color:#00d4ff;text-shadow:0 0 10px #00d4ff99;font-size:.65rem;font-weight:700}.hud__nitro-bar{background:#ffffff29;border-radius:2px;width:clamp(5rem,14vmin,8rem);height:5px;overflow:hidden;box-shadow:0 0 6px #00d4ff40}.hud__nitro-fill{background:linear-gradient(90deg,#08f,#00e5ff 60%,#fa0);width:100%;height:100%;transition:width 60ms linear}.hud__nitro.is-boosting .hud__nitro-fill{background:linear-gradient(90deg,#00e5ff,#f70 70%,#f20);box-shadow:0 0 12px #00e5ff}.hud__stunt{text-align:center;pointer-events:none;background:#0a0e16e0;border:2px solid #e8c53c;border-radius:6px;padding:.8rem 1.6rem;animation:.3s cubic-bezier(.18,.89,.32,1.28) stuntPop;position:absolute;top:15%;left:50%;transform:translate(-50%);box-shadow:0 8px 32px #000c,0 0 20px #e8c53c73}.hud__stunt[hidden]{display:none}.hud__stunt-title{font-family:var(--font-display,system-ui);color:#fce166;letter-spacing:.18em;text-transform:uppercase;text-shadow:0 0 12px #fce16699;font-size:clamp(1.2rem,3.5vmin,1.8rem);font-weight:800}.hud__stunt-sub{color:#fff;letter-spacing:.1em;margin-top:.3rem;font-size:.9rem}@keyframes stuntPop{0%{opacity:0;transform:translate(-50%)scale(.8)}to{opacity:1;transform:translate(-50%)scale(1)}}.hud__drift{letter-spacing:.22em;color:#e8c53c;text-shadow:0 0 14px #e8c53c8c;grid-column:1/-1;font-size:.72rem}.hud__drift[hidden]{display:none}.hud__radio{letter-spacing:.12em;color:#f4efe28c;grid-column:1/-1;font-size:.66rem}.hud.is-driving .hud__stamina{display:none}@media (max-height:460px){.hud__speed-value{font-size:clamp(1.7rem,9vmin,2.4rem)}.hud__drive{gap:.1rem .5rem}}.touch{pointer-events:none;z-index:30;touch-action:none;-webkit-user-select:none;user-select:none;position:fixed;inset:0}.touch[hidden]{display:none}.touch__wheel,.touch__pedal,.touch__aux-btn{pointer-events:auto;touch-action:none;position:absolute}.touch__wheel{place-items:center;width:min(38vw,190px);height:clamp(56px,13vh,84px);display:grid;bottom:clamp(.8rem,5vh,2.4rem);left:clamp(.8rem,4vw,2rem)}.touch__wheel-track{background:#0e10189e;border:1px solid #ffffff29;border-radius:999px;width:100%;height:60%;position:relative}.touch__wheel.is-down .touch__wheel-track{border-color:#e8c53cb3}.touch__wheel-knob{background:#f4efe2d1;border-radius:999px;width:34%;height:76%;position:absolute;top:50%;left:50%;transform:translate(-50%)}.touch__label{letter-spacing:.2em;color:#f4efe280;font-size:.58rem}.touch__pedals{gap:.6rem;display:flex;position:absolute;bottom:clamp(.8rem,5vh,2.4rem);right:clamp(.8rem,4vw,2rem)}.touch__pedal{color:#f4efe2;letter-spacing:.12em;background:#0e10189e;border:1px solid #fff3;border-radius:14px;align-content:center;gap:.2rem;width:clamp(64px,15vw,96px);height:clamp(72px,17vh,110px);font-size:.72rem;font-weight:700;display:grid}.touch__pedal em{opacity:.6;font-size:.58rem;font-style:normal}.touch__pedal--gas.is-down{background:#3c8c5ab8}.touch__pedal--brake.is-down{background:#aa3c32b8}.touch__aux{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;max-width:46vw;display:flex;position:absolute;top:clamp(4.6rem,12vh,7rem);right:clamp(.8rem,4vw,2rem)}.touch__aux-btn{color:#f4efe2;letter-spacing:.12em;background:#0e10189e;border:1px solid #fff3;border-radius:10px;padding:.5rem .7rem;font-size:.62rem;font-weight:700}.touch__aux-btn--wide{flex-basis:100%}.touch__aux-btn em{opacity:.55;margin-left:.3rem;font-style:normal}.touch__aux-btn.is-down{background:#e8c53c59}.hud__vitals{pointer-events:none;align-items:center;gap:.75rem;display:flex;position:absolute;top:1rem;left:1rem}.hud__health{background:#0a0c108c;border:1px solid #ffffff59;border-radius:.3rem;width:11rem;height:.6rem;overflow:hidden}.hud__health-fill{background:linear-gradient(90deg,#d94f4f,#e8b93c);width:100%;height:100%;transition:width .16s ease-out}.hud__health-fill.is-low{background:linear-gradient(90deg,#b3271f,#d94f4f);animation:.9s ease-in-out infinite hud-pulse}@keyframes hud-pulse{0%,to{opacity:1}50%{opacity:.55}}.hud__wallet{font:600 1rem/1 var(--font-mono,monospace);color:#f2e6c8;text-shadow:0 1px 3px #000c;min-width:4.5rem}.hud__wallet.is-broke{color:#e06a5a}.hud__shop{text-align:center;pointer-events:none;background:#0a0c10c7;border:1px solid #e8b93c8c;border-radius:.4rem;min-width:15rem;padding:.6rem 1rem;position:absolute;bottom:7rem;left:50%;transform:translate(-50%)}.hud__shop[hidden]{display:none}.hud__shop.is-blocked{border-color:#e06a5a99}.hud__shop-name{color:#f2e6c8;font:600 1.05rem/1.2 inherit}.hud__shop-alt{opacity:.65;font:400 .8rem/1.2 inherit}.hud__shop-price{font:700 1.3rem/1 var(--font-mono,monospace);color:#8fd66a;margin:.3rem 0 .15rem}.hud__shop.is-blocked .hud__shop-price{color:#e06a5a}.hud__shop-hint{opacity:.8;font:400 .78rem/1.3 inherit}.hud.is-driving .hud__shop{bottom:12rem}.hud__bus{text-align:center;pointer-events:none;background:#0a0c10c7;border:1px solid #78aae699;border-radius:.4rem;min-width:15rem;padding:.6rem 1rem;position:absolute;bottom:12.5rem;left:50%;transform:translate(-50%)}.hud__bus[hidden]{display:none}.hud__bus-name{color:#cfe2f8;font:600 1.05rem/1.2 inherit}.hud__bus-alt{opacity:.65;font:400 .8rem/1.2 inherit}.hud__bus-stop{color:#8fd66a;margin:.25rem 0 .15rem;font:500 .9rem/1.25 inherit}.hud__bus-hint{opacity:.8;font:400 .78rem/1.3 inherit}.hud__bus.is-rail{border-color:#0073b9d9;box-shadow:0 0 14px #00538a73}.hud__bus.is-rail .hud__bus-name{color:#70c4ff}.hud__bus.is-rail .hud__bus-stop{color:#d0e8ff}.hud.is-driving .hud__bus{bottom:17.5rem}.hud.is-driving .hud__bus.is-riding{text-align:left;min-width:0;max-width:19rem;left:1.25rem;transform:none}@media (max-height:460px){.hud__shop{bottom:5rem}.hud__shop.is-driving,.hud.is-driving .hud__shop{bottom:8.5rem}.hud__bus{bottom:9.5rem}.hud.is-driving .hud__bus{bottom:13rem}}@keyframes wanted-strobe{0%,to{border-color:#ff3232d9;box-shadow:0 0 16px #ff282880,inset 0 0 8px #ff282833}50%{border-color:#3c78ffd9;box-shadow:0 0 16px #326eff80,inset 0 0 8px #326eff33}}@keyframes star-pulse{0%,to{text-shadow:0 0 12px #ff4a4acc;transform:scale(1)}50%{text-shadow:0 0 20px #ff7878;transform:scale(1.18)}}.hud__wanted{pointer-events:none;background:#090a10d1;border:1px solid #ff4a4a66;border-radius:8px;flex-direction:column;align-items:center;gap:.22rem;padding:.45rem .9rem .5rem;animation:1.2s ease-in-out infinite wanted-strobe;display:flex;position:absolute;top:1.1rem;left:50%;transform:translate(-50%)}.hud__wanted-stars{font:400 1.5rem/1 var(--font-mono,monospace);letter-spacing:.16em}.hud__wanted-stars .is-on{color:#ff4a4a;text-shadow:0 0 12px #ff4a4abf;animation:.8s ease-in-out infinite star-pulse;display:inline-block}.hud__wanted-stars span:not(.is-on){color:#e2ded23d}.hud__wanted-label{letter-spacing:.22em;color:#ff9a8e;font:700 .72rem/1 inherit}.hud__wanted-label span{opacity:.65;letter-spacing:.1em;font-weight:400}.hud__wanted-crime{color:#ffd9a8;text-align:center;max-width:15rem;min-height:.85rem;font:400 .72rem/1.15 inherit}.hud__evade{background:#e2ded229;border-radius:2px;width:9.5rem;height:3px;margin-top:.12rem;overflow:hidden}.hud__evade-fill{background:#e8b93c;width:0;height:100%;transition:width 90ms linear}.hud__evade-fill.is-free{background:#8fd66a}.hud__weapon{text-align:right;pointer-events:none;background:#090a10b3;border:1px solid #e2ded229;border-radius:8px;min-width:8.5rem;padding:.45rem .7rem .5rem;position:absolute;bottom:1.1rem;right:1.1rem}.hud__weapon-name{letter-spacing:.06em;font:700 .82rem/1.1 inherit}.hud__weapon-alt{opacity:.6;font:400 .7rem/1.2 inherit}.hud__ammo-value{font:700 1.5rem/1 var(--font-mono,monospace);color:#e8b93c}.hud__ammo-value.is-empty{color:#e06a5a}.hud__weapon.is-melee .hud__ammo-value{color:#e2ded2b3;font-size:.82rem}.hud__reload{background:#e2ded229;border-radius:2px;height:3px;margin-top:.28rem;overflow:hidden}.hud__reload-fill{background:#4fb3d9;width:0;height:100%}.hud__reticle{pointer-events:none;width:16px;height:16px;margin:-8px 0 0 -8px;position:absolute;top:50%;left:50%}.hud__reticle:before,.hud__reticle:after{content:"";background:#fff0d6d9;position:absolute}.hud__reticle:before{width:16px;height:2px;top:7px;left:0}.hud__reticle:after{width:2px;height:16px;top:0;left:7px}.hud.is-driving .hud__weapon{bottom:9.5rem}@media (max-height:460px){.hud__wanted{padding:.3rem .7rem .35rem;top:.5rem}.hud__wanted-stars{font-size:1.15rem}.hud__weapon{bottom:.5rem}.hud__weapon.is-driving{bottom:8.5rem}}.touch__drive,.touch__foot{pointer-events:none;position:absolute;inset:0}.touch__drive[hidden],.touch__foot[hidden]{display:none}.touch__stick{left:calc(clamp(.9rem, 4vw, 2.2rem) + env(safe-area-inset-left));bottom:calc(clamp(.9rem, 5vh, 2.4rem) + env(safe-area-inset-bottom));pointer-events:auto;touch-action:none;background:#0e10186b;border:2px solid #ffffff38;border-radius:50%;width:clamp(112px,30vmin,150px);height:clamp(112px,30vmin,150px);position:absolute}.touch__stick.is-down{border-color:#e8c53cb3}.touch__stick-knob{pointer-events:none;background:#f4efe2c7;border-radius:50%;width:42%;height:42%;margin:-21% 0 0 -21%;position:absolute;top:50%;left:50%}.touch__btns{right:calc(clamp(.7rem, 3vw, 1.8rem) + env(safe-area-inset-right));bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom));grid-template-columns:repeat(4, var(--tb,56px));grid-auto-rows:var(--tb,56px);pointer-events:none;gap:8px;display:grid;position:absolute}.touch__btn,.touch__menu{pointer-events:auto;touch-action:none;color:#f4efe2;letter-spacing:.1em;background:#0e10188c;border:1px solid #ffffff3d;border-radius:50%;padding:0;font-size:.62rem;font-weight:700}.touch__btn--big{background:#96282299;border-radius:999px;grid-area:1/4/span 2;font-size:.78rem}.touch__btn.is-down,.touch__btn.is-on,.touch__menu.is-down{color:#14161c;background:#e8c53c73}.touch__menu{top:calc(.6rem + env(safe-area-inset-top));border-radius:10px;width:40px;height:40px;font-size:.75rem;position:absolute;left:50%;transform:translate(-50%)}@media (orientation:portrait){.touch__btns{--tb:50px;grid-template-columns:repeat(3, var(--tb))}.touch__btn--big{border-radius:50%;grid-area:3/3/span 1}}.webgl-missing{text-align:center;color:#f4efe2;z-index:100;background:#0d0f14;place-content:center;gap:.6rem;padding:2rem;font-family:system-ui,sans-serif;display:grid;position:fixed;inset:0}.webgl-missing span{opacity:.7;max-width:28rem}.is-touch .hud__minimap{bottom:auto;left:auto;right:calc(.6rem + env(safe-area-inset-right));top:calc(.6rem + env(safe-area-inset-top));width:84px;height:84px}.is-touch .hud__map{width:84px;height:84px}.is-touch .hud__stamina{bottom:auto;left:auto;right:calc(.6rem + env(safe-area-inset-right));top:calc(.6rem + env(safe-area-inset-top) + 90px);width:84px}.is-touch .hud__area{left:calc(.6rem + env(safe-area-inset-left));max-width:min(34ch,40vw)}.is-touch .hud__vitals{left:calc(.6rem + env(safe-area-inset-left))}.is-touch .hud__blurb{display:none}.is-touch .hud__wanted{left:auto;right:calc(.6rem + env(safe-area-inset-right));top:calc(.6rem + env(safe-area-inset-top) + 100px);transform-origin:100% 0;transform:scale(.78)}.is-touch .hud__weapon{right:calc(clamp(.7rem, 3vw, 1.8rem) + env(safe-area-inset-right));bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom) + 132px);min-width:0;padding:.25rem .5rem .3rem}.is-touch .hud__fps{top:auto;bottom:.3rem}.is-touch .dialogue{top:calc(.5rem + env(safe-area-inset-top));width:min(30rem,46vw);padding:.5rem .75rem .6rem;bottom:auto}.is-touch .mission__card{left:auto;right:calc(84px + 1.3rem + env(safe-area-inset-right));top:calc(.6rem + env(safe-area-inset-top));min-width:0;max-width:30vw;padding:.35rem .55rem}.is-touch .mission__offer{bottom:calc(.6rem + env(safe-area-inset-bottom))}.is-touch .touch__btns{grid-template-columns:repeat(5, var(--tb,54px));--tb:54px}.is-touch .touch__btn--big{grid-area:1/5/span 2}@media (orientation:portrait){.is-touch .touch__btns{--tb:50px;grid-template-columns:repeat(3, var(--tb))}.is-touch .touch__btn--big{border-radius:50%;grid-area:3/3/span 1}.is-touch .hud__weapon{bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom) + 180px)}.is-touch .hud__area{max-width:58vw}.is-touch .mission__card{right:auto;left:calc(.6rem + env(safe-area-inset-left));top:calc(4.6rem + env(safe-area-inset-top));max-width:62vw}.is-touch .dialogue{top:auto;bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom) + 226px);width:94vw}.is-touch .mission__offer{bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom) + 190px)}}.is-touch .mission__offer{left:calc(.6rem + env(safe-area-inset-left));bottom:calc(clamp(.9rem, 5vh, 2.4rem) + env(safe-area-inset-bottom) + clamp(112px, 30vmin, 150px) + .6rem);max-width:46vw;transform:none}.is-touch .mission__offer-key{font-size:0}.is-touch .mission__offer-key:after{content:"USE";letter-spacing:.08em;font-size:.56rem}.is-touch .dialogue{width:min(30rem,40vw);left:61%}@media (orientation:portrait){.is-touch .dialogue{width:94vw;left:50%}.is-touch .mission__offer{max-width:94vw;bottom:calc(clamp(.7rem, 4vh, 2rem) + env(safe-area-inset-bottom) + 190px)}}.is-touch .hud__area{top:calc(2.3rem + env(safe-area-inset-top))}.touch__pedal,.touch__aux-btn{position:relative}.is-touch .hud__drive{left:50%;right:auto;bottom:calc(.4rem + env(safe-area-inset-bottom));transform:translate(-50%)}.is-touch .touch__aux{top:calc(.6rem + env(safe-area-inset-top));right:calc(84px + 1.3rem + env(safe-area-inset-right));max-width:44vw}.is-touch .touch__menu{top:auto;bottom:calc(.5rem + env(safe-area-inset-bottom))}@media (orientation:portrait){.is-touch .touch__aux{top:calc(4.4rem + env(safe-area-inset-top));right:calc(.6rem + env(safe-area-inset-right));max-width:70vw}.is-touch .hud__drive{bottom:calc(clamp(72px, 17vh, 110px) + 1.6rem + env(safe-area-inset-bottom));left:auto;right:calc(.6rem + env(safe-area-inset-right));transform:none}.is-touch .mission__offer{max-width:calc(100vw - 7.5rem)}}.is-touch .hud.is-driving .hud__weapon{display:none}.is-touch .hud__wanted:not(:has(.is-on)){display:none}@media (orientation:portrait){.is-touch .touch__aux{right:calc(84px + 1.2rem + env(safe-area-inset-right));top:calc(4.4rem + env(safe-area-inset-top));max-width:calc(100vw - 84px - 2rem)}}.hud__weather{font:500 .75rem/1.1 var(--font-mono,monospace);color:#e6dcc4;text-shadow:0 1px 3px #000c;white-space:nowrap;opacity:.9}@media (max-width:520px){.hud__weather{display:none}}.hud__clock{font:600 .95rem/1 var(--font-mono,monospace);color:#f2e6c8;text-shadow:0 1px 3px #000c;white-space:nowrap}.mission{z-index:210;pointer-events:none;font-family:var(--font-ui);position:fixed;inset:0}.mission[hidden]{display:none}.mission__card{background:var(--panel);border:1px solid var(--panel-line);border-left:3px solid var(--gold);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);min-width:15rem;max-width:min(30rem,44vw);animation:mission-slide .28s var(--ease);padding:.6rem .85rem .7rem;position:absolute;top:clamp(.9rem,3vmin,1.8rem);left:clamp(12rem,26vw,24rem)}@keyframes mission-slide{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}.mission__card[hidden]{display:none}.mission__card-head{flex-wrap:wrap;align-items:baseline;gap:.5rem;display:flex}.mission__card-title{font-family:var(--font-display);letter-spacing:.05em;text-transform:uppercase;color:var(--gold);font-size:clamp(.95rem,2.4vmin,1.25rem)}.mission__card-title-alt{letter-spacing:.14em;color:var(--ink-faint);font-size:clamp(.62rem,1.6vmin,.8rem)}.mission__card-progress{letter-spacing:.16em;text-transform:uppercase;color:var(--gold-deep);margin-top:.2rem;font-size:clamp(.56rem,1.5vmin,.7rem)}.mission__objective{color:var(--ink);margin-top:.4rem;font-size:clamp(.8rem,2vmin,.95rem);line-height:1.35}.mission__objective-alt{color:var(--ink-dim);margin-top:.1rem;font-size:clamp(.72rem,1.8vmin,.88rem);line-height:1.4}.mission__offer{background:var(--panel);border:1px solid var(--panel-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:mission-pop .24s var(--ease);align-items:center;gap:.7rem;padding:.5rem .9rem .55rem .55rem;display:flex;position:absolute;bottom:clamp(11rem,26vh,15rem);left:50%;transform:translate(-50%)}@keyframes mission-pop{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.mission__offer[hidden]{display:none}.mission__offer-key{border:1px solid var(--gold);width:1.7rem;height:1.7rem;color:var(--gold);place-items:center;font-size:.8rem;font-weight:700;display:grid}.mission__offer-title{color:var(--ink);font-size:clamp(.8rem,2vmin,.95rem)}.mission__offer-alt{color:var(--ink-dim);margin-top:.05rem;font-size:clamp(.7rem,1.7vmin,.85rem)}.dialogue{z-index:220;border:1px solid color-mix(in srgb, var(--speaker,#e8b93c) 55%, transparent);border-left:3px solid var(--speaker,#e8b93c);pointer-events:none;width:min(52rem,88vw);animation:dialogue-in .2s var(--ease);background:#0c0b14ed;padding:.85rem 1.1rem .95rem;position:fixed;bottom:clamp(4.5rem,13vh,7rem);left:50%;transform:translate(-50%);box-shadow:0 12px 40px #00000080}@keyframes dialogue-in{0%{opacity:0;transform:translate(-50%)translateY(10px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.dialogue[hidden]{display:none}.dialogue.is-narration{border-left-style:dashed}.dialogue__drain{background:#ffffff14;height:2px;position:absolute;top:0;left:0;right:0}.dialogue__drain-fill{background:var(--speaker,#e8b93c);opacity:.85;width:0;height:100%;transition:opacity .2s var(--ease)}.dialogue__drain.is-choice .dialogue__drain-fill{opacity:.25}.dialogue__head{align-items:baseline;gap:.55rem;min-height:1.1rem;display:flex}.dialogue__name{font-family:var(--font-display);letter-spacing:.06em;text-transform:uppercase;color:var(--speaker,#e8b93c);font-size:clamp(.85rem,2.2vmin,1.1rem)}.dialogue__name-alt{letter-spacing:.14em;color:var(--ink-faint);font-size:clamp(.62rem,1.6vmin,.78rem)}.dialogue.is-narration .dialogue__name,.dialogue.is-narration .dialogue__name-alt{display:none}.dialogue__text{color:var(--ink);margin-top:.35rem;font-size:clamp(.85rem,2.1vmin,1.02rem);line-height:1.4}.dialogue__text-alt{color:var(--ink-dim);margin-top:.15rem;font-size:clamp(.78rem,1.9vmin,.95rem);line-height:1.45}.dialogue__choices{pointer-events:auto;flex-direction:column;gap:.35rem;margin-top:.7rem;display:flex}.dialogue__choices[hidden]{display:none}.dialogue__choice{text-align:left;color:var(--ink);font:inherit;cursor:pointer;transition:background .15s var(--ease), border-color .15s var(--ease);background:#ffffff0d;border:1px solid #ffffff1f;flex-direction:column;gap:.1rem;padding:.4rem .65rem;display:flex}.dialogue__choice:hover,.dialogue__choice:focus-visible{border-color:var(--gold);background:#e8b93c24;outline:none}.dialogue__choice[hidden]{display:none}.dialogue__choice span:first-child{font-size:clamp(.8rem,2vmin,.95rem)}.dialogue__choice span:last-child{color:var(--ink-dim);font-size:clamp(.72rem,1.8vmin,.86rem)}@media (max-height:460px){.mission__card{padding:.4rem .6rem;top:.4rem}.mission__offer{bottom:8.5rem}.dialogue{padding:.6rem .8rem .7rem;bottom:.5rem}}.dispatch{color:#e9edf3;background:#151c25;border:1px solid #566474;border-radius:12px;width:min(940px,90vw);max-height:86vh;padding:28px;font-family:system-ui,sans-serif}.dispatch::backdrop{background:#070c14b8}.dispatch header{justify-content:space-between;align-items:center;gap:20px;display:flex}.dispatch h2{margin:0;font-size:24px}.dispatch h3{color:#f4c05f;margin:26px 0 12px}.dispatch h4{margin:0 0 8px;font-size:16px}.dispatch p{color:#b9c7d7;font-size:14px;line-height:1.5}.dispatch__jobs{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.dispatch article{background:#202b38;border:1px solid #344456;flex-direction:column;padding:16px;display:flex}.dispatch article p{flex:1;margin:0 0 16px}.dispatch button{color:#102030;cursor:pointer;background:#f4c05f;border:0;border-radius:5px;padding:10px 14px;font-weight:700}.dispatch button:disabled{opacity:.4;cursor:default}.dispatch button:focus-visible{outline-offset:3px;outline:3px solid #fff}@media (max-width:720px){.dispatch__jobs{grid-template-columns:1fr}.dispatch{padding:18px}}
