:root{--glass: rgba(13, 17, 25, .74);--glass-strong: rgba(10, 13, 20, .88);--stroke: rgba(255, 255, 255, .13);--text: #eef2f8;--muted: #9fb0c6;--accent: #3b82f6;--accent-2: #60a5fa;--good: #22c55e;--warn: #f59e0b;--bad: #ef4444;--radius: 14px;font-family:ui-sans-serif,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--text);font-variant-numeric:tabular-nums}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:#000;overflow:hidden}canvas{display:block}button{font:inherit;color:inherit;cursor:pointer}.hud{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.card,.toast,.helpbar,.icon-btn,.panel{backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2)}kbd{display:inline-grid;place-items:center;min-width:24px;height:24px;padding:0 6px;margin:0 2px;font:600 12px/1 inherit;font-family:inherit;color:var(--text);background:linear-gradient(#2b3342,#1d2430);border:1px solid rgba(255,255,255,.22);border-bottom-width:2px;border-radius:6px;box-shadow:0 1px #0006}.tl{position:absolute;top:16px;left:16px;display:flex;flex-direction:column;gap:10px;max-width:min(380px,70vw)}.toasts{display:flex;flex-direction:column;gap:8px;align-items:flex-start}.toast{position:relative;padding:9px 14px 9px 16px;border-radius:10px;font-size:14px;line-height:1.3;background:var(--glass-strong);border:1px solid var(--stroke);box-shadow:0 6px 20px #00000059;animation:toast-in .25s ease-out,toast-out .4s ease-in 4.1s forwards}.toast:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:4px;border-radius:0 4px 4px 0;background:var(--accent-2)}.toast.good:before{background:var(--good)}.toast.warn:before{background:var(--warn)}.toast.alert{background:#b91c1ceb;border-color:#fecaca;color:#fff;font-weight:700;box-shadow:0 0 0 2px #ef444499,0 8px 24px #7f1d1d99;animation:toast-in .25s ease-out,alert-pulse .5s ease-in-out 3,toast-out .4s ease-in 4.1s forwards}.toast.alert:before{background:#fff}@keyframes alert-pulse{50%{transform:scale(1.04)}}@keyframes toast-in{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translate(-8px)}}.tr{position:absolute;top:16px;right:16px;display:flex;align-items:center;gap:10px;pointer-events:auto}.card{padding:8px 14px;border-radius:var(--radius);background:var(--glass);border:1px solid var(--stroke)}.score{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1}.score-main{display:flex;align-items:baseline;gap:8px}.score-main span{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.score-main b{font-size:26px;font-weight:800}.score-sub{font-size:11px;color:var(--muted);margin-top:2px}.icon-btn{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--glass);border:1px solid var(--stroke);transition:background .15s,transform .15s}.icon-btn:hover{background:#ffffff24;transform:scale(1.05)}@keyframes pulse{50%{transform:scale(1.1)}}.helpbar{position:absolute;left:50%;bottom:16px;transform:translate(-50%,8px);display:flex;gap:16px;flex-wrap:wrap;justify-content:center;padding:8px 16px;border-radius:999px;font-size:12px;color:var(--muted);opacity:0;transition:opacity .6s,transform .6s;background:var(--glass);border:1px solid var(--stroke);white-space:nowrap;max-width:96vw}.helpbar.show{opacity:1;transform:translate(-50%)}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;pointer-events:auto;background:radial-gradient(ellipse at center,#080c148c,#04060ae0);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);animation:fade .25s ease-out}.overlay.danger{background:radial-gradient(ellipse at center,#460a0a9e,#0c0202eb)}@keyframes fade{0%{opacity:0}}.panel{width:min(460px,100%);padding:26px 28px;border-radius:20px;text-align:center;background:var(--glass-strong);border:1px solid var(--stroke);box-shadow:0 30px 80px #0000008c;animation:pop .28s cubic-bezier(.2,.9,.3,1.1)}.panel.wide{width:min(860px,100%);text-align:left}@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(.97)}}.panel h2{margin:6px 0 14px;font-size:30px;letter-spacing:-.01em}.panel h3{margin:0 0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--muted)}.panel p{margin:0;color:var(--muted);line-height:1.5}.logo{font-size:44px;font-weight:800;letter-spacing:-.02em}.logo span{color:var(--accent-2)}.panel header p{max-width:640px;margin-top:6px}.cols{display:grid;grid-template-columns:1.25fr 1fr;gap:26px;margin:22px 0 20px}@media (max-width: 760px){.cols{grid-template-columns:1fr}.logo{font-size:36px}}.controls{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;font-size:14px}.controls li{display:flex;align-items:center;gap:12px}.controls li>span:first-child{min-width:108px;display:inline-flex}.controls em{color:var(--muted);font-style:normal;font-size:12px}.controls .gap{flex:1}.settings{display:flex;flex-direction:column;gap:16px}.setting-head{display:flex;align-items:center;gap:8px;font-size:14px;margin-bottom:7px}.setting-head .muted{color:var(--muted);font-size:12px;margin-left:auto;margin-right:4px}.setting-head kbd:first-of-type{margin-left:auto}.setting-head .muted+kbd{margin-left:0}.seg{display:flex;border-radius:10px;overflow:hidden;border:1px solid var(--stroke);background:#ffffff0a}.seg button{flex:1;padding:9px 0;border:0;background:transparent;font-weight:600;transition:background .15s}.seg button+button{border-left:1px solid var(--stroke)}.seg button:hover{background:#ffffff14}.seg button.on{background:var(--accent);color:#fff}button.primary,button.secondary{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 26px;border-radius:12px;border:0;font-size:17px;font-weight:700;transition:transform .12s,filter .15s,background .15s}button.primary{width:100%;background:linear-gradient(180deg,#4f94ff,#2f6fe0);color:#fff;box-shadow:0 10px 26px #2f6fe073}button.primary:hover{transform:translateY(-1px);filter:brightness(1.08)}button.secondary{background:#ffffff1a;color:var(--text);border:1px solid var(--stroke);font-size:15px;padding:11px 20px}button.secondary:hover{background:#ffffff2b}button:focus-visible{outline:2px solid #fff;outline-offset:2px}.actions{display:flex;flex-direction:column;gap:10px;margin-top:18px}.stats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.stats div{padding:12px 8px;border-radius:12px;background:#ffffff0f;border:1px solid var(--stroke)}.stats b{display:block;font-size:26px;font-weight:800}.stats span{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.badge{display:inline-block;padding:4px 12px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;background:#ef444433;color:#fecaca;border:1px solid rgba(239,68,68,.55)}.reason{font-size:18px;color:var(--text)!important;font-weight:600;margin-bottom:12px!important}.tips{list-style:none;margin:0 0 4px;padding:12px 14px;text-align:left;border-radius:12px;background:#ffffff0d;border:1px solid var(--stroke);font-size:14px;color:var(--muted);display:flex;flex-direction:column;gap:6px}.tips li:before{content:"•";color:var(--warn);margin-right:8px}.panel .settings{margin:6px 0 0;text-align:left}.overlay.warn{background:radial-gradient(ellipse at center,#462d058c,#0c0802e6)}.badge.warn{background:#f59e0b33;color:#fde68a;border-color:#f59e0b99}.panel>p{margin-bottom:4px}html,body{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}canvas{touch-action:none}.overlay{display:flex;overflow:auto}.overlay>.panel{margin:auto}.touch-controls{--btn: clamp(54px, 17vh, 92px);position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;align-items:flex-end;gap:10px;padding:0 max(12px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));pointer-events:none}.tgroup{display:flex;gap:10px;align-items:flex-end;pointer-events:none}.tgroup.center{flex:1;justify-content:center;min-width:0}.trow{display:flex;gap:8px;align-items:flex-end}.tbtn{pointer-events:auto;touch-action:none;display:grid;place-items:center;align-content:center;gap:1px;min-width:var(--btn);height:var(--btn);padding:0 12px;border-radius:18px;font-size:14px;font-weight:700;letter-spacing:.02em;color:#fff;background:#0e131c66;border:1.5px solid rgba(255,255,255,.28);box-shadow:0 6px 18px #00000059;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:transform .06s,background .1s}.tbtn small{font-size:9.5px;font-weight:600;opacity:.75;letter-spacing:.04em;text-transform:uppercase}.tbtn:active,.tbtn.on{transform:scale(.94);background:#3b82f6b3;border-color:#ffffffb3}.tbtn.steer{min-width:calc(var(--btn) * 1.05)}.tbtn.pedal{min-width:calc(var(--btn) * 1.15);font-size:15px}.tbtn.pedal.gas{height:calc(var(--btn) * 1.35);background:#2296508c}.tbtn.pedal.gas:active{background:#22c55ed9}.tbtn.pedal.brake{background:#be2d2d8c}.tbtn.pedal.brake:active{background:#ef4444e0}.tbtn.look{min-width:calc(var(--btn) * .95);height:calc(var(--btn) * .78);font-size:13px}.tbtn.sig{min-width:calc(var(--btn) * .62);height:calc(var(--btn) * .78);padding:0;font-size:18px}.tbtn.sig.on{background:#22c55e8c;border-color:#5dff7a}.tbtn.sig.blink{animation:blink .7s steps(1) infinite}.hud.touch .helpbar,.hud.touch button kbd,.hud.touch .settings kbd{display:none}.overlay.rotate{z-index:50;background:#06090ef5}.overlay.rotate svg{color:var(--accent-2);margin-bottom:6px}@media (max-height: 560px){.overlay{padding:8px}.panel{padding:14px 18px;border-radius:16px}.panel.wide{width:min(780px,100%)}.logo{font-size:30px}.panel h2{font-size:22px;margin:2px 0 8px}.panel header p{font-size:13px;margin-top:2px}.cols{gap:14px;margin:10px 0 12px}.controls{font-size:12.5px;gap:6px}.controls li>span:first-child{min-width:0}.settings{gap:10px}button.primary{padding:10px 18px;font-size:15px}button.secondary{padding:8px 14px;font-size:13px}.reason{font-size:15px}.tips{font-size:12px;padding:8px 10px}.tl{top:8px;left:10px;gap:6px}.tr{top:8px;right:10px}.toast{font-size:12.5px;padding:6px 10px 6px 12px}.icon-btn{width:38px;height:38px}}@media (max-width: 760px){.tbtn.look small{display:none}.tbtn{padding:0 8px}}.hud.touch .kb-only{display:none}.navbanner{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:12px;min-width:min(420px,62vw);max-width:84vw;padding:8px 16px 8px 8px;border-radius:16px;background:var(--glass-strong);border:1px solid var(--stroke);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 8px 26px #0006}.nav-icon{position:relative;display:grid;place-items:center;width:52px;height:52px;flex:none;border-radius:12px;background:#1f6fe0;font-size:34px;line-height:1}.nav-icon sub{position:absolute;right:5px;bottom:3px;font-size:14px;font-weight:800}.nav-text{display:flex;flex-direction:column;min-width:0;flex:1}.nav-text b{font-size:18px;line-height:1.15}.nav-text span{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-dist{font-size:22px;font-weight:800;white-space:nowrap}.hud.touch .navbanner{top:8px;min-width:0;padding:5px 12px 5px 5px;gap:9px}.hud.touch .nav-icon{width:40px;height:40px;font-size:26px}.hud.touch .nav-text b{font-size:14px}.hud.touch .nav-text span{font-size:11px}.hud.touch .nav-dist{font-size:16px}.practice{margin-top:16px}.modes{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.mode{display:flex;flex-direction:column;gap:5px;text-align:left;padding:11px 13px;border-radius:12px;background:#ffffff0d;border:1.5px solid var(--stroke);transition:background .15s,border-color .15s,transform .12s}.mode:hover{background:#ffffff17}.mode b{font-size:14.5px}.mode span{font-size:12px;line-height:1.35;color:var(--muted)}.mode.on{background:#3b82f638;border-color:var(--accent-2);box-shadow:0 0 0 1px var(--accent-2) inset}.panel p.sub{margin:-6px 0 10px;font-size:14px}@media (max-width: 760px){.modes{grid-template-columns:repeat(2,1fr)}}@media (max-height: 560px){.modes{gap:7px;grid-template-columns:repeat(4,1fr)}.mode{padding:8px 9px}.mode b{font-size:12.5px}.mode span{display:none}.practice{margin-top:10px}}.tl .navbanner{position:static;transform:none;min-width:0;width:min(330px,46vw);max-width:none;padding:6px 12px 6px 6px}.tl .nav-icon{width:42px;height:42px;font-size:28px}.tl .nav-text b{font-size:15px}.tl .nav-text span{font-size:11.5px}.tl .nav-dist{font-size:17px}.hud.touch .tl .navbanner{width:min(280px,44vw)}.mapscreen{position:absolute;right:16px;bottom:16px;border-radius:14px;pointer-events:none;border:2px solid rgba(255,255,255,.16);box-shadow:0 0 0 5px #080b11d1,0 12px 34px #0000008c;background:#0e151e}.hud:not(.touch) .mapscreen{right:auto;left:16px}.hud .mapscreen.banner,.hud.touch .mapscreen{right:auto;left:50%;transform:translate(-50%);top:8px;bottom:auto;border:0;box-shadow:none;background:transparent}.muted.small,.small{font-size:12.5px;color:var(--muted);margin:0}.saved h4{margin:4px 0 6px;font-size:11px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.note.warn{padding:7px 10px;border-radius:9px;background:#f59e0b24;border:1px solid rgba(245,158,11,.5);font-size:13px}.tleft{pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:6px}.hud.touch .tbtn.tilt{min-width:0;height:clamp(30px,8vh,40px);font-size:12px;padding:0 12px;border-radius:12px}.steerrow{display:flex;gap:10px;pointer-events:none}.hud.touch .steerrow .tbtn.steer{min-width:clamp(70px,24vh,110px);height:clamp(40px,11vh,56px);font-size:20px;border-radius:14px}.eyerow{display:flex;align-items:center;gap:8px;pointer-events:none}.hud.touch .eyerow .tbtn.sig{min-width:38px;height:38px;border-radius:12px;font-size:14px}.eye{pointer-events:auto;touch-action:none;display:grid;place-items:center;gap:0;width:64px;height:40px;border-radius:20px;color:#fff;background:#0e131c66;border:1.5px solid rgba(255,255,255,.3);box-shadow:0 6px 18px #00000059;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);-webkit-user-select:none;user-select:none}.eye svg{width:40px;height:24px;margin-top:2px}.eye small{font-size:8px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.8;margin-top:-2px;margin-bottom:3px}.eye.on{background:#3b82f69e;border-color:#ffffffbf}.wheel{pointer-events:auto;touch-action:none;width:clamp(64px,19vh,98px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#0e131c59 60%,#0e131c99);box-shadow:0 8px 22px #0006;-webkit-user-select:none;user-select:none}.wheel svg{width:100%;height:100%;display:block;filter:drop-shadow(0 3px 4px rgba(0,0,0,.5))}.mapscreen{transition:opacity .15s}.mapscreen.dim{opacity:.08}.overlay .panel.wide>button.primary{position:sticky;bottom:4px;z-index:3;box-shadow:0 -14px 18px -8px #0a0d14f2,0 10px 26px #2f6fe073}.hud.touch .touch-controls{--btn: clamp(44px, 12vh, 62px);--pedal: clamp(38px, 10.5vh, 52px);padding-bottom:calc(3px + env(safe-area-inset-bottom))}.hud.touch .tbtn.pedal{min-width:calc(var(--pedal) * 1.3);height:var(--pedal);font-size:12px;border-radius:13px;padding:0 8px}.hud.touch .tbtn.pedal.gas{height:calc(var(--pedal) * 1.28)}.hud.touch .tbtn.sig{font-size:15px}.adjbar{position:absolute;left:50%;bottom:24px;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:10px 14px 10px 18px;border-radius:14px;background:var(--glass-strong);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:auto;max-width:92vw;font-size:14px}.pts{display:flex;align-items:baseline;gap:8px;padding:6px 14px;border-radius:12px;background:var(--glass-strong);border:1px solid var(--stroke);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pts small{font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--muted)}.pts b{font-size:22px;font-variant-numeric:tabular-nums}.rbdiag{margin:4px auto 10px;display:flex;flex-direction:column;align-items:center;gap:6px}.rbdiag svg{border-radius:14px;background:#1c2430}.rbdiag figcaption{display:flex;flex-direction:column;gap:2px;font-size:13px;text-align:center}.rbdiag .ok{color:#4ade80;font-weight:700}.rbdiag .bad{color:#f87171;font-weight:700}
