:root{--ink:#f6f3ec;--ink-dim:#f6f3ec9e;--glass:#0e121875;--glass-strong:#0e1218c7;--line:#ffffff24;--accent:#ffb35c;--accent-deep:#ff7a3d;--good:#7fe0a6;--font:"Outfit", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;background:#0b0f14;margin:0;overflow:hidden}#app,#app canvas{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui button,#ui input,#ui .panel,#ui .title{pointer-events:auto}.hidden{display:none!important}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}kbd{border:1px solid var(--line);min-width:1.6em;font-family:var(--mono);text-align:center;background:#ffffff0f;border-bottom-width:2px;border-radius:5px;margin:0 .12em;padding:.05em .4em;font-size:.78em;display:inline-block}.vignette{background:radial-gradient(at 50% 45%,#0000 70%,#0000001f 100%);position:fixed;inset:0}.brand{letter-spacing:.55em;padding-left:.55em;font-size:22px;font-weight:300}.brand.big{text-shadow:0 4px 40px #00000059;font-size:clamp(34px,7vw,72px);font-weight:200}.loading{pointer-events:auto;background:radial-gradient(circle at 50% 40%,#1c2733,#080b10 70%);place-items:center;transition:opacity .8s;display:grid;position:fixed;inset:0}.loading-inner{justify-items:center;gap:22px;display:grid}.bar{background:#ffffff1f;border-radius:2px;width:min(280px,70vw);height:2px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--accent-deep), var(--accent));transform-origin:0;height:100%;transition:transform .2s;transform:scaleX(0)}.loading-text{color:var(--ink-dim);letter-spacing:.08em;font-size:13px}.title{background:linear-gradient(#080a0e1a 0%,#080a0e0d 45%,#080a0ea6 100%);place-items:center;animation:1.2s both fade-in;display:grid;position:fixed;inset:0}.title-inner{text-align:center;justify-items:center;gap:18px;margin-top:30vh;padding:16px;display:grid}.tagline{color:var(--ink-dim);letter-spacing:.12em;margin-top:-6px;font-size:15px}.title-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:14px;display:flex}.primary,.secondary{letter-spacing:.04em;border-radius:999px;padding:13px 26px;font-size:15px;transition:transform .15s,background .2s,box-shadow .2s}.primary{background:linear-gradient(135deg, var(--accent), var(--accent-deep));color:#1b1208;font-weight:600;box-shadow:0 10px 30px #ff7a3d59}.secondary{border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a}.primary:hover,.secondary:hover{transform:translateY(-1px)}.secondary:hover{background:#ffffff2e}.secondary.wide{width:100%;margin-top:6px;padding:10px;font-size:13px}.keys{color:var(--ink-dim);flex-wrap:wrap;justify-content:center;gap:8px 18px;max-width:640px;margin-top:14px;font-size:13px;display:flex}.seed{font-family:var(--mono);color:#ffffff59;letter-spacing:.1em;font-size:11px}.hud{transition:opacity .4s;animation:.8s both fade-in;position:fixed;inset:0}.hud.faded{opacity:0}.hud.faded button{pointer-events:none}.top-left{align-items:flex-start;gap:14px;display:flex;position:absolute;top:18px;left:18px}.minimap-wrap{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:50%;width:124px;height:124px;overflow:hidden;box-shadow:0 6px 30px #0000002e}.minimap-wrap canvas{width:100%;height:100%;display:block}.trip{font-variant-numeric:tabular-nums;text-shadow:0 1px 8px #00000073;gap:4px;padding-top:10px;display:grid}.trip-row{gap:10px;font-size:14px;display:flex}.trip .label{color:var(--ink-dim);letter-spacing:.16em;text-transform:uppercase;width:38px;padding-top:2px;font-size:11px}.top-right{gap:8px;display:flex;position:absolute;top:18px;right:18px}.icon-btn{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:12px;place-items:center;width:42px;height:42px;transition:background .2s,transform .15s;display:grid}.icon-btn:hover{background:#282e38b3;transform:translateY(-1px)}.icon-btn.small{border-radius:9px;width:32px;height:32px}.toast{background:var(--glass-strong);border:1px solid var(--line);letter-spacing:.03em;opacity:0;white-space:nowrap;border-radius:999px;padding:9px 18px;font-size:14px;transition:opacity .3s,transform .3s;position:absolute;top:24px;left:50%;transform:translate(-50%,-12px)}.toast.show{opacity:1;transform:translate(-50%)}.hint{color:var(--ink-dim);background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:10px;max-width:calc(100vw - 300px);padding:8px 12px;font-size:12px;transition:opacity 1.5s;position:absolute;bottom:18px;left:18px}.hint.gone{opacity:0}.dash{justify-items:center;gap:6px;display:grid;position:absolute;bottom:18px;right:22px}.autodrive-chip{letter-spacing:.2em;background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink-dim);border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:11px;display:flex}.autodrive-chip .dot{background:#ffffff59;border-radius:50%;width:7px;height:7px}.autodrive-chip.on{color:var(--ink);border-color:#7fe0a673}.autodrive-chip.on .dot{background:var(--good);box-shadow:0 0 10px var(--good);animation:1.8s ease-in-out infinite pulse}.speedo{filter:drop-shadow(0 4px 18px #00000059);width:210px;height:210px;position:relative}.speedo svg{width:100%;height:100%;overflow:visible}.speedo .track,.speedo .rpm,.speedo .rpm-red{fill:none;stroke-width:3px;stroke-linecap:round}.speedo .track{stroke:#ffffff1f}.speedo .rpm-red{stroke:#ff503c8c;stroke-linecap:butt}.speedo .rpm{stroke:#ffffffbf}.speedo .speed-track,.speedo .speed-arc{fill:none;stroke-width:7px;stroke-linecap:round}.speedo .speed-track{stroke:#0a0e1459}.speedo .speed-arc{stroke:var(--accent);transition:stroke-dasharray 80ms linear}.speedo .tick{stroke:#ffffff59;stroke-width:1px}.speedo .tick.major{stroke:#ffffffbf;stroke-width:1.6px}.speedo .tick-label{fill:#ffffff8c;text-anchor:middle;font-size:8.5px;font-family:var(--font)}.readout{place-content:center;justify-items:center;margin-top:-4px;display:grid;position:absolute;inset:0}.speed-value{font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-shadow:0 2px 16px #0006;font-size:54px;font-weight:300;line-height:1}.speed-unit{letter-spacing:.24em;color:var(--ink-dim);margin-top:4px;font-size:11px}.gear-box{align-items:baseline;gap:6px;font-size:18px;font-weight:500;display:flex;position:absolute;bottom:14px;left:50%;transform:translate(-50%)}.gear-label{letter-spacing:.2em;color:var(--ink-dim);font-size:9px}.paused{text-align:center;letter-spacing:.4em;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#06080c59;place-content:center;font-size:34px;font-weight:200;display:grid;position:fixed;inset:0}.paused small{letter-spacing:.12em;color:var(--ink-dim);margin-top:8px;font-size:13px}.panel{-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-left:1px solid var(--line);-webkit-user-select:auto;user-select:auto;background:linear-gradient(#0e1218db,#0a0d12e6);width:min(360px,100vw);padding:20px 22px 28px;transition:transform .35s cubic-bezier(.2,.8,.2,1);position:fixed;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(105%)}.panel.open{transform:translate(0)}.panel header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.panel h2{letter-spacing:.3em;text-transform:uppercase;margin:0;font-size:15px;font-weight:300}.panel section{border-bottom:1px solid #ffffff12;padding:14px 0}.panel h3{letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin:0 0 10px;font-size:11px;font-weight:500}.row{gap:8px;padding:7px 0;font-size:14px;display:grid}.row em{color:var(--ink-dim);float:right;font-variant-numeric:tabular-nums;font-style:normal}.row.toggle{cursor:pointer;grid-template-columns:1fr auto;align-items:center}.row code{font-family:var(--mono);color:var(--ink-dim)}input[type=range]{appearance:none;background:#ffffff24;border-radius:4px;outline:none;width:100%;height:4px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--ink);border:3px solid var(--accent-deep);cursor:pointer;border-radius:50%;width:16px;height:16px}input[type=range]::-moz-range-thumb{background:var(--ink);border:3px solid var(--accent-deep);cursor:pointer;border-radius:50%;width:12px;height:12px}input[type=checkbox]{appearance:none;cursor:pointer;background:#ffffff29;border-radius:999px;width:38px;height:22px;transition:background .2s;position:relative}input[type=checkbox]:after{content:"";background:var(--ink);border-radius:50%;width:16px;height:16px;transition:transform .2s;position:absolute;top:3px;left:3px}input[type=checkbox]:checked{background:var(--accent-deep)}input[type=checkbox]:checked:after{transform:translate(16px)}.segmented{background:#ffffff12;border-radius:10px;gap:2px;padding:3px;display:flex}.segmented button{color:var(--ink-dim);border-radius:8px;flex:1;padding:7px 4px;font-size:12px;transition:background .2s,color .2s}.segmented button.active{color:var(--ink);background:#ffffff29}.swatches{flex-wrap:wrap;gap:10px;display:flex}.swatch{background:var(--c);border:2px solid #fff3;border-radius:50%;width:28px;height:28px;transition:transform .15s;box-shadow:inset 0 -4px 8px #00000040}.swatch.active{border-color:var(--ink);transform:scale(1.12)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pulse{50%{opacity:.45}}@media (max-width:640px){.speedo{width:160px;height:160px}.speed-value{font-size:40px}.hint{display:none}.minimap-wrap{width:92px;height:92px}.top-right{flex-direction:column;top:auto;bottom:230px;right:16px}}.panel{width:min(400px,100vw)}.tabs{flex-wrap:wrap;gap:4px;margin:6px 0 4px;display:flex}.tab{letter-spacing:.04em;color:var(--ink-dim);background:#ffffff0d;border-radius:999px;padding:7px 11px;font-size:12px;transition:background .2s,color .2s}.tab:hover{background:#ffffff1a}.tab.active{color:#1b1208;background:linear-gradient(135deg, var(--accent), var(--accent-deep));font-weight:600}.row em{font-size:11px}.cards{grid-template-columns:1fr 1fr;gap:8px;display:grid}.card{text-align:left;background:#ffffff0d;border:1px solid #ffffff14;border-radius:12px;gap:4px;padding:11px 12px;transition:background .2s,border-color .2s,transform .15s;display:grid}.card:hover{background:#ffffff17;transform:translateY(-1px)}.card strong{font-size:14px;font-weight:500}.card span{color:var(--ink-dim);font-size:11.5px;line-height:1.35}.card.active{border-color:var(--accent);background:#ffb35c1f}.card.current strong:after{content:" ●";color:var(--good);vertical-align:middle;font-size:9px}.segmented{flex-wrap:wrap}.segmented button{min-width:0}.swatches{align-items:center}.swatch.custom{cursor:pointer;background:conic-gradient(#f55,#fd5,#5f7,#5df,#75f,#f5d,#f55);position:relative;overflow:hidden}.swatch.custom input{opacity:0;cursor:pointer;position:absolute;inset:0}.text-input{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;background:#ffffff0f;border-radius:9px;outline:none;padding:8px 10px;font-size:13px}.text-input:focus{border-color:var(--accent)}select.text-input option{background:#151a21}input[type=text].text-input{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase}.file-input{color:var(--ink-dim);font-size:12px}.file-input::file-selector-button{border:1px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;background:#ffffff14;border-radius:8px;margin-right:10px;padding:7px 12px}.seed-row{align-items:center;gap:8px;display:flex}.primary.wide{width:100%;margin-top:8px;padding:11px;font-size:13px}.primary.attention{animation:1.6s ease-in-out infinite glow}.primary.small,.secondary.small{padding:8px 16px;font-size:13px}.weather-grid{grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:10px;display:grid}.weather-btn{color:var(--ink-dim);background:#ffffff0d;border:1px solid #0000;border-radius:12px;justify-items:center;gap:4px;padding:10px 2px 8px;font-size:11px;display:grid}.weather-btn i{color:var(--ink);font-size:20px;font-style:normal}.weather-btn.active{border-color:var(--accent);color:var(--ink);background:#ffb35c1f}.transport{align-items:center;gap:8px;margin:10px 0 4px;display:flex}.np-text{min-width:0;margin-left:4px;display:grid}.np-text b{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.np-text span{color:var(--ink-dim);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.now-playing{background:var(--glass);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;align-items:center;gap:4px;max-width:320px;padding:6px 12px 6px 6px;display:flex;position:absolute;bottom:64px;left:18px}.now-playing .mini{border-radius:50%;place-items:center;width:30px;height:30px;display:grid}.now-playing .mini:hover{background:#ffffff1a}.title-meta{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px;display:flex}.chip{border:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0a0e1459;border-radius:999px;align-items:baseline;gap:8px;padding:7px 14px;font-size:13px;display:flex}.chip span{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim);font-size:10px}.chip b{font-weight:500}.chip:hover{background:#141a228c}.trip-row.place{color:var(--ink-dim);font-size:12px}.photo-bar{background:var(--glass-strong);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:var(--ink-dim);pointer-events:auto;white-space:nowrap;border-radius:999px;align-items:center;gap:12px;padding:8px 10px 8px 18px;font-size:13px;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.milestone{opacity:0;background:linear-gradient(135deg,#281e10d9,#14100ad9);border:1px solid #ffb35c73;border-radius:16px;align-items:center;gap:12px;padding:12px 20px 12px 14px;display:flex;position:fixed;top:76px;left:50%;transform:translate(-50%,-10px);box-shadow:0 10px 40px #ff8c3c2e}.milestone.show{animation:5s both milestone}.milestone i{color:var(--accent);font-size:26px;font-style:normal}.milestone b{font-weight:500;display:block}.milestone span{color:var(--ink-dim);font-size:12px}.stats{grid-template-columns:1fr 1fr;gap:8px;display:grid}.stat{background:#ffffff0d;border-radius:12px;gap:2px;padding:12px;display:grid}.stat b{font-variant-numeric:tabular-nums;font-size:18px;font-weight:400}.stat span{color:var(--ink-dim);letter-spacing:.04em;font-size:11px}.milestones{gap:6px;display:grid}.ms{opacity:.55;background:#ffffff08;border-radius:10px;align-items:center;gap:10px;padding:8px 10px;display:flex}.ms.done{opacity:1;background:#ffb35c14}.ms i{color:var(--accent);font-size:16px;font-style:normal}.ms b{font-size:13px;font-weight:500;display:block}.ms span{color:var(--ink-dim);font-size:11px}@keyframes glow{50%{box-shadow:0 0 0 4px #ffb35c40,0 10px 30px #ff7a3d59}}@keyframes milestone{0%{opacity:0;transform:translate(-50%,-10px)}8%,85%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-6px)}}.touch-controls{pointer-events:none;z-index:40;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;position:fixed;inset:0}.touch-controls>*{pointer-events:auto}.touch-steer{left:max(20px, env(safe-area-inset-left));bottom:max(20px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(14px)saturate(1.3);touch-action:none;background:#10141c6b;border:1px solid #ffffff2e;border-radius:52px;width:min(38vw,300px);height:104px;position:absolute;box-shadow:0 10px 30px #00000059}.touch-steer-track{background:linear-gradient(90deg,#ffffff14,#ffffff47 50%,#ffffff14);border-radius:2px;height:4px;margin-top:-2px;position:absolute;top:50%;left:26px;right:26px}.touch-steer-knob{background:linear-gradient(#fffffff2,#e2e8f0d1);border-radius:50%;width:62px;height:62px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 6px 18px #0006,inset 0 1px #ffffffe6}.touch-steer-hint{letter-spacing:.14em;color:#ffffff73;font-size:10px;font-weight:600;position:absolute;bottom:9px;left:50%;transform:translate(-50%)}.touch-pedals{right:max(20px, env(safe-area-inset-right));bottom:max(20px, env(safe-area-inset-bottom));align-items:flex-end;gap:14px;display:flex;position:absolute}.touch-pedal{-webkit-backdrop-filter:blur(14px)saturate(1.3);color:#ffffffeb;letter-spacing:.08em;touch-action:none;background:#10141c6b;border:1px solid #fff3;border-radius:50%;width:92px;height:92px;font:600 13px/1 Outfit,system-ui,sans-serif;transition:transform 90ms,background 90ms;box-shadow:0 10px 30px #00000059}.touch-pedal.is-handbrake{width:72px;height:72px;font-size:11px}.touch-pedal.is-go{width:108px;height:108px;font-size:15px}.touch-pedal.is-held{transform:scale(.94)}.touch-pedal.is-go.is-held{background:#34c77bc7;border-color:#a0ffc899}.touch-pedal.is-brake.is-held{background:#e24a3ec7;border-color:#ffb2aa99}.touch-pedal.is-handbrake.is-held{background:#f0b43cc7;border-color:#ffe0a099}.touch-actions{right:max(20px, env(safe-area-inset-right));top:max(16px, env(safe-area-inset-top));gap:10px;display:flex;position:absolute}.touch-action{-webkit-backdrop-filter:blur(14px)saturate(1.3);color:#ffffffd1;touch-action:none;background:#10141c6b;border:1px solid #ffffff2e;border-radius:50%;width:46px;height:46px;font-size:18px;line-height:1;transition:transform 90ms,background 90ms,color 90ms}.touch-action.is-held{transform:scale(.92)}.touch-action.is-on{color:#06121f;background:#60b2ffb8;border-color:#bee2ffb3}@media (max-height:420px){.touch-steer{width:min(34vw,260px);height:88px}.touch-pedal{width:78px;height:78px}.touch-pedal.is-go{width:92px;height:92px}.touch-pedal.is-handbrake{width:62px;height:62px}}.touch-controls.is-hidden{opacity:0;pointer-events:none;transform:translateY(14px)}.touch-controls{transition:opacity .22s,transform .22s}@media (pointer:coarse){.speedo{transform-origin:100% 100%;transform:scale(.74)translateY(-52%)}}.touch-controls.is-hidden,.touch-modebar.is-hidden{visibility:hidden;transition:opacity .22s,transform .22s,visibility 0s linear .22s}.touch-modebar{left:max(20px, env(safe-area-inset-left));bottom:calc(max(20px, env(safe-area-inset-bottom)) + 116px);z-index:41;-webkit-tap-highlight-color:transparent;gap:10px;transition:opacity .22s;display:flex;position:fixed}.touch-modebar.is-auto{left:50%;bottom:max(18px, env(safe-area-inset-bottom));transform:translate(-50%)}.touch-modebar.is-hidden{opacity:0;pointer-events:none}@media (max-height:420px){.touch-modebar{bottom:calc(max(20px, env(safe-area-inset-bottom)) + 98px)}.touch-modebar.is-auto{bottom:max(14px, env(safe-area-inset-bottom))}}@media (pointer:coarse){.hint{display:none}}@media (pointer:coarse) and (max-height:420px){.speedo{transform:scale(.6)translateY(-58%)}}.touch-mode,.touch-reset{-webkit-backdrop-filter:blur(14px)saturate(1.3);color:#ffffffeb;letter-spacing:.04em;touch-action:manipulation;background:#10141c80;border:1px solid #fff3;border-radius:22px;height:44px;padding:0 18px;font:600 14px/1 Outfit,system-ui,sans-serif}.touch-mode.is-auto{color:#1a0d04;background:#ff8a3de0;border-color:#ffd2aab3;height:52px;padding:0 26px;font-size:16px}.touch-mode:active,.touch-reset:active{transform:scale(.95)}
