:root{--accent:#ffc22e;--accent-2:#4be3a5;--bad:#ff4d5e;--ink:#0b0e12;--panel:#0a0e138c;--stroke:#ffffff24;--mono:ui-monospace, "SF Mono", "Cascadia Mono", Menlo, Consolas, monospace;--sans:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{color:#eef3f7;height:100%;font-family:var(--sans);-webkit-font-smoothing:antialiased;user-select:none;touch-action:none;background:#05070a;margin:0;padding:0;overflow:hidden}#app{position:fixed;inset:0}#viewport{width:100%;height:100%;display:block;position:absolute;inset:0}.hidden{display:none!important}#hud{pointer-events:none;position:absolute;inset:0}.panel{background:var(--panel);-webkit-backdrop-filter:blur(9px)saturate(1.2);border:1px solid var(--stroke);border-radius:12px;padding:10px 12px;position:absolute;box-shadow:0 8px 32px #00000059}.timing{min-width:178px;top:16px;left:16px}.timing .row{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.timing .row+.row{margin-top:2px}.timing .label{letter-spacing:.16em;color:#8ea0b0;font-size:10px;font-weight:600}.timing .value{font-variant-numeric:tabular-nums;font-size:20px;font-weight:700}.timing .value.big{font-size:26px}.timing .value.big small{color:#8ea0b0;font-size:13px;font-weight:600}.timing .row.sub .value{font-size:14px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.dim{color:#93a3b1}.sectors{gap:4px;margin-top:8px;display:flex}.sectors i{background:#ffffff21;border-radius:2px;flex:1;height:4px;transition:background .2s}.sectors i.good{background:var(--accent-2);box-shadow:0 0 10px #4be3a5b3}.sectors i.bad{background:var(--bad)}.sectors i.purple{background:#b48cff}.map{padding:8px;top:16px;right:16px}.map canvas{background:#00000040;border-radius:8px;width:172px;height:172px;display:block}.mapinfo{text-align:center;color:#a8b6c2;letter-spacing:.06em;font-size:11px;font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:6px}.mapinfo .sep{opacity:.5;margin:0 6px}.center{text-align:center;letter-spacing:.04em;text-shadow:0 6px 30px #000c;opacity:0;font-weight:800;transition:opacity .25s;position:absolute;top:22%;left:50%;transform:translate(-50%)}.center.show{opacity:1}.center .big{font-size:clamp(34px,6vw,72px);line-height:1}.center .small{color:#cfe0ee;margin-top:8px;font-size:clamp(13px,1.6vw,18px);font-weight:600}.countdown{letter-spacing:-.04em;color:#fff;text-shadow:0 0 60px #ffc22ea6,0 12px 40px #000000b3;opacity:0;pointer-events:none;font-size:clamp(90px,18vw,230px);font-weight:900;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)}.countdown.tick{animation:.9s cubic-bezier(.2,.9,.2,1) forwards pop}@keyframes pop{0%{opacity:0;transform:translate(-50%,-50%)scale(1.7)}18%{opacity:1;transform:translate(-50%,-50%)scale(1)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-50%)scale(.86)}}.dash{grid-template-columns:168px 1fr;align-items:end;width:300px;height:168px;display:grid;position:absolute;bottom:22px;right:26px}.dial{width:168px;height:168px;position:absolute;bottom:0;right:0;overflow:visible}.dial-bg{fill:#080b0f9e;stroke:#ffffff1a;stroke-width:1px}.dial-track{fill:none;stroke:#ffffff1f;stroke-width:9px;stroke-linecap:round}.dial-fill{fill:none;stroke:url(#rpmGrad);stroke-width:9px;stroke-linecap:round;filter:drop-shadow(0 0 6px #ffc22e8c)}#dialTicks line{stroke:#ffffff4d;stroke-width:2px}#dialTicks text{fill:#8ea0b0;font-size:9px;font-family:var(--mono);text-anchor:middle}.speedo{text-align:right;padding-right:8px;position:absolute;bottom:30px;right:168px}.speed{font-variant-numeric:tabular-nums;text-shadow:0 4px 24px #0009;font-size:58px;font-weight:800;line-height:.9}.unit{letter-spacing:.2em;color:#8ea0b0;margin-top:2px;font-size:11px}.gearbox{flex-direction:column;gap:6px;display:flex;position:absolute;bottom:6px;left:0}.gear{color:var(--accent);text-shadow:0 0 26px #ffc22e73;font-size:44px;font-weight:900;line-height:.9}.drivetrain{flex-direction:column;gap:5px;display:flex}.mode{letter-spacing:.18em;color:#8ea0b0;font-size:10px;font-weight:700}.pedals{gap:4px;display:flex}.pedal{background:#ffffff24;border-radius:2px;width:34px;height:4px;display:block;position:relative;overflow:hidden}.pedal:after{content:"";transform:scaleX(var(--v,0));transform-origin:0;background:var(--accent-2);position:absolute;inset:0}.pedal.brake:after{background:var(--bad)}.boostwrap{text-align:center;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.boostlabel{letter-spacing:.3em;color:#8ea0b0;margin-bottom:4px;font-size:9px;font-weight:700}.boostbar{background:#ffffff1f;border-radius:3px;width:220px;height:6px;overflow:hidden}.boostbar i{transform-origin:0;background:linear-gradient(90deg,#4be3a5,#7ee8ff);width:100%;height:100%;display:block;box-shadow:0 0 12px #4be3a599}.inputs{color:#9fb0be;font-size:11px;line-height:1.65;bottom:16px;left:16px}.inputs b{text-align:center;border:1px solid var(--stroke);color:#e7eef4;background:#ffffff1a;border-radius:4px;min-width:16px;margin:0 1px;padding:0 4px;font-size:10px;display:inline-block}.overlay{-webkit-backdrop-filter:blur(6px);z-index:10;background:radial-gradient(120% 90% at 50% 20%,#141a228c,#030508eb);place-items:center;display:grid;position:absolute;inset:0}.menu-card,.loader-card{text-align:center;border:1px solid var(--stroke);background:#0a0d12b8;border-radius:18px;width:min(520px,92vw);padding:34px 32px 26px;box-shadow:0 30px 80px #0009}h1{letter-spacing:-.03em;margin:0;font-size:clamp(38px,7vw,62px);font-weight:900;line-height:.94}h1 span,.logo span{color:var(--accent)}h1.err{color:var(--bad);font-size:40px}.tag{color:#93a3b1;letter-spacing:.05em;margin:10px 0 24px;font-size:13px}.menu-actions{justify-content:center;gap:10px;display:flex}button{font:inherit;letter-spacing:.08em;cursor:pointer;border:1px solid var(--stroke);color:#e9f1f7;background:#ffffff12;border-radius:10px;padding:13px 22px;font-size:14px;font-weight:700;transition:transform .12s,background .15s,box-shadow .15s}button:hover{background:#ffffff24;transform:translateY(-1px)}button.primary{color:#221704;background:linear-gradient(#ffd45e,#f2a712);border-color:#ffd77a;box-shadow:0 8px 26px #f2a71259}button.primary:hover{box-shadow:0 12px 34px #f2a71280}.settings{text-align:left;gap:10px;margin-top:24px;display:grid}.set{color:#a9b8c5;letter-spacing:.04em;justify-content:space-between;align-items:center;gap:14px;font-size:12px;display:flex}select,input[type=range]{accent-color:var(--accent)}select{font:inherit;color:#e9f1f7;border:1px solid var(--stroke);background:#ffffff14;border-radius:7px;padding:6px 8px;font-size:12px}input[type=range]{width:130px}input[type=checkbox]{width:16px;height:16px}.backend{letter-spacing:.16em;color:#6d7f8d;font-size:10px;font-family:var(--mono);margin-top:18px}.logo{letter-spacing:-.02em;font-size:34px;font-weight:900}.bar{background:#ffffff1a;border-radius:3px;height:5px;margin:22px 0 10px;overflow:hidden}.bar i{background:linear-gradient(90deg, var(--accent), var(--accent-2));width:0%;height:100%;transition:width .25s;display:block}.loadtext{letter-spacing:.18em;color:#7b8d9b;text-transform:uppercase;font-size:11px}@media (width<=780px){.dash{transform-origin:100% 100%;transform:scale(.82)}.map canvas{width:128px;height:128px}.inputs{display:none}}
