:root{--ink: #eef2f4;--dim: #9fb0b8;--panel: rgba(14, 18, 20, .72);--line: rgba(255, 255, 255, .12);--ok: #7fc98a;--warn: #e0a53c;--danger: #e2603f;--accent: #7fb2d9}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#0e1214}body{font:13px/1.35 ui-sans-serif,-apple-system,SF Pro Text,system-ui,sans-serif;color:var(--ink);-webkit-user-select:none;user-select:none;touch-action:none}#view{display:block;width:100vw;height:100vh}#hud{position:fixed;inset:0;pointer-events:none;padding:env(safe-area-inset-top) 14px 14px 14px}.hud-block{position:absolute;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hud-main{top:14px;left:14px;min-width:250px}.hud-attitude{top:14px;right:14px;min-width:190px}.hud-wheels{bottom:14px;right:14px;min-width:210px}.row{display:flex;align-items:baseline;gap:10px;justify-content:space-between}.row.big{font-size:15px;margin-bottom:8px}.row.small{font-size:11px;color:var(--dim);margin-top:6px}#hud-gear{font-size:28px;font-weight:650;line-height:1;letter-spacing:-.02em}.range{font-size:10px;letter-spacing:.08em;padding:2px 6px;border-radius:4px;border:1px solid var(--line);color:var(--dim)}.range.on{color:#0e1214;background:var(--accent);border-color:var(--accent)}.speed{margin-left:auto;font-size:12px;color:var(--dim)}.speed b{font-size:20px;color:var(--ink);font-variant-numeric:tabular-nums}.bar{position:relative;height:6px;border-radius:3px;background:#ffffff1a;overflow:hidden}.bar i{display:block;height:100%;width:0%;background:var(--accent);transition:width .06s linear}.bar i.over{background:var(--danger)}.bar u{position:absolute;top:0;right:6.25%;width:1px;height:100%;background:#e2603fcc}.locks{gap:4px}.lock{flex:1;text-align:center;font-size:9px;letter-spacing:.06em;padding:3px 0;border:1px solid var(--line);border-radius:4px;color:#ffffff59}.lock.on{color:#0e1214;background:var(--ok);border-color:var(--ok)}.lock.warn{color:#0e1214;background:var(--warn);border-color:var(--warn)}.hud-attitude b{font-variant-numeric:tabular-nums;color:var(--ink)}.hud-attitude b.warn{color:var(--warn)}.hud-attitude b.danger{color:var(--danger)}.tilt{margin-top:8px;height:4px;border-radius:2px;background:#ffffff1a;overflow:hidden}.tilt i{display:block;height:100%;width:0%;background:var(--ok)}.tilt i.warn{background:var(--warn)}.tilt i.danger{background:var(--danger)}.wheelgrid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.wcell{border:1px solid var(--line);border-radius:6px;padding:5px 7px;min-height:40px;display:flex;flex-direction:column;gap:2px}.wcell b{font-size:11px;font-weight:550}.wcell span{font-size:10px;color:var(--dim);font-variant-numeric:tabular-nums}.wcell.air{border-color:#e2603f80;background:#e2603f1f}.wcell.air b{color:var(--danger)}.wcell.slip{border-color:#e0a53c8c;background:#e0a53c1a}#keys{position:fixed;left:14px;bottom:14px;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);max-width:320px}#keys h2{margin:0 0 8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-weight:550}#keys dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:11px}#keys dt{color:var(--accent);font-family:ui-monospace,SFMono-Regular,monospace;white-space:nowrap}#keys dd{margin:0;color:var(--dim)}#keys .hint{margin:10px 0 0;font-size:10px;color:#fff6;line-height:1.4}#keys.hidden{display:none}#toast{position:fixed;left:50%;top:18px;transform:translate(-50%);background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:12px;opacity:0;transition:opacity .25s;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}#toast.show{opacity:1}#loading{position:fixed;inset:0;display:grid;place-items:center;background:#0e1214;color:var(--dim);font-size:13px;letter-spacing:.02em;transition:opacity .4s}#loading.done{opacity:0;pointer-events:none}.lil-gui{--background-color: rgba(14,18,20,.86);--widget-color: rgba(255,255,255,.1);--font-size: 11px;--input-font-size: 11px}
