:root{--hud-bg:#080c148c;--hud-fg:#f2f5fa;--accent:#ffb000;--ok:#3ccf6e;--warn:#fc3;--bad:#ff4a3d;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{height:100%;color:var(--hud-fg);touch-action:none;-webkit-user-select:none;user-select:none;background:#0b1426;margin:0;overflow:hidden}#game,#game canvas{width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>:not(.hud):not(.touch):not(.editor):not(.garage):not(.room){pointer-events:auto}#loading{text-align:center;background:#0b1426;flex-direction:column;justify-content:center;align-items:center;gap:16px;padding:16px;font-size:1.3rem;display:flex;position:fixed;inset:0}#loading button{font:inherit;background:var(--accent);color:#111;border:0;border-radius:10px;padding:10px 18px;font-size:1rem}#loading.hidden{display:none}.touch{pointer-events:none;position:fixed;inset:0}.touch button{pointer-events:auto;touch-action:none;color:#fff;background:#0a0e1866;border:2px solid #ffffff59;border-radius:50%;width:84px;height:84px;font-size:1.6rem}.touch button.on{background:#ffb0008c}.touch button.small{width:60px;height:60px;font-size:1rem}.touch-left{left:calc(16px + env(safe-area-inset-left));gap:14px;display:flex;position:absolute;bottom:24px}.touch-right{right:calc(16px + env(safe-area-inset-right));align-items:flex-end;gap:14px;display:flex;position:absolute;bottom:24px}.touch-right .gas{width:100px;height:100px}.touch-top{gap:10px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.touch-top button{width:48px;height:48px;font-size:1.2rem}.rotate-hint{display:none}@media (orientation:portrait){.rotate-hint{pointer-events:auto;background:#080c14d9;place-items:center;font-size:1.3rem;display:grid;position:fixed;inset:0}}.hud{pointer-events:none;text-shadow:0 1px 3px #0009;position:fixed;inset:0}.hud-laps{top:calc(12px + env(safe-area-inset-top));left:calc(16px + env(safe-area-inset-left));background:var(--hud-bg);font-variant-numeric:tabular-nums;border-radius:10px;padding:8px 12px;line-height:1.4;position:absolute}.hud-fps{opacity:.7;font-size:.75rem;position:absolute;bottom:8px;left:50%;transform:translate(-50%)}.hud-speed{right:calc(16px + env(safe-area-inset-right));text-align:right;font-variant-numeric:tabular-nums;position:absolute;bottom:140px}.hud-speed span{min-width:2.2ch;font-size:3rem;font-weight:800;line-height:1;display:block}.hud-speed-row{justify-content:flex-end;align-items:flex-end;gap:10px;display:flex}.hud-gear{background:var(--hud-bg);border-radius:8px;margin-bottom:4px;padding:2px 9px;font-size:1.5rem;font-weight:800}.hud-gear.reverse{color:var(--bad)}.hud-rpm{justify-content:flex-end;gap:2px;margin-bottom:6px;display:flex}.hud-rpm i{background:#ffffff26;border-radius:2px;width:6px;height:14px}.hud-rpm i.on{background:var(--ok)}.hud-rpm i.on:nth-child(n+11){background:var(--warn)}.hud-rpm i.on.red{background:var(--bad)}.hud.cockpit .hud-speed{display:none}.hud-map{left:calc(16px + env(safe-area-inset-left));top:calc(96px + env(safe-area-inset-top));background:var(--hud-bg);border-radius:12px;width:128px;height:128px;position:absolute}.hud-map .track-out{fill:none;stroke:#0000008c;stroke-width:5px;stroke-linejoin:round;stroke-linecap:round}.hud-map .track-in{fill:none;stroke:#c9d3e0;stroke-width:2.4px;stroke-linejoin:round;stroke-linecap:round}.hud-map .start{fill:#fff;stroke:#111;stroke-width:1px}.hud-map .others circle{stroke:#fff;stroke-width:.8px}.hud-map .me{fill:var(--accent);stroke:#111;stroke-width:.8px}@media (max-height:500px){.hud-map{width:92px;height:92px;top:calc(84px + env(safe-area-inset-top))}}.hud-damage{top:calc(12px + env(safe-area-inset-top));right:calc(64px + env(safe-area-inset-right));background:var(--hud-bg);text-align:center;border-radius:10px;padding:8px;font-size:.75rem;position:absolute}.hud-damage rect{fill:var(--ok);transition:fill .3s}.hud-damage rect.cabin{fill:#ffffff40}.hud-broken,.hud-toast{opacity:0;border-radius:10px;padding:10px 18px;font-weight:700;transition:opacity .3s;position:absolute;top:30%;left:50%;transform:translate(-50%)}.hud-broken{background:var(--bad)}.hud-toast{background:var(--hud-bg);font-size:1.3rem;top:20%}.hud-broken.show,.hud-toast.show{opacity:1}@media (pointer:fine){.hud-speed{bottom:24px}}.hud{--hud-big:1.6;--hud-mid:1.3}@media (pointer:coarse){.hud{--hud-big:1.3;--hud-mid:1.15}}.hud:not(.cockpit) .hud-speed{transform:scale(var(--hud-big));transform-origin:100% 100%}.hud:not(.cockpit) .hud-laps{transform:scale(var(--hud-mid));transform-origin:0 0}.hud:not(.cockpit) .hud-damage{transform:scale(var(--hud-mid));transform-origin:100% 0}.hud:not(.cockpit) .hud-map{transform:scale(var(--hud-mid));transform-origin:0 0;top:calc(96px * var(--hud-mid) + env(safe-area-inset-top))}.race{pointer-events:none;color:var(--hud-fg);position:fixed;inset:0}.race-pos{top:calc(12px + env(safe-area-inset-top));background:var(--hud-bg);font-variant-numeric:tabular-nums;border-radius:10px;padding:6px 14px;font-weight:700;position:absolute;left:50%;transform:translate(-50%)}.race-pos:empty{display:none}.race-center{text-shadow:0 4px 24px #0009;text-align:center;white-space:nowrap;justify-items:center;gap:6px;font-size:clamp(3rem,14vw,8rem);font-weight:900;display:grid;position:absolute;top:32%;left:50%;transform:translate(-50%,-50%)}.race-center small{font-size:1.2rem;font-weight:600}.race-result{font-size:clamp(2rem,9vw,4.5rem)}.hud-pause{top:calc(12px + env(safe-area-inset-top));right:calc(16px + env(safe-area-inset-right));background:var(--hud-bg);width:40px;height:40px;color:var(--hud-fg);pointer-events:auto;border:0;border-radius:50%;font-size:1.1rem;position:absolute}@media (pointer:coarse){.hud-pause{display:none}}.menu{padding:24px calc(24px + env(safe-area-inset-left));background:linear-gradient(90deg,#060a12e0 0%,#060a128c 45%,#060a1200 75%);justify-content:flex-start;align-items:center;display:flex;position:fixed;inset:0;overflow:auto}.menu.pause{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#060a12b3;justify-content:center}.menu[hidden]{display:none}.menu h1{letter-spacing:.02em;margin:0 0 18px;font-size:clamp(2rem,6vw,3.4rem);font-weight:800}.menu h1:after{content:"";background:var(--accent);border-radius:2px;width:64px;height:4px;margin-top:8px;display:block}.menu nav{gap:8px;min-width:min(300px,100vw - 48px);display:grid}.menu button{font:inherit;text-align:left;color:var(--hud-fg);cursor:pointer;background:#141c2cd9;border:1px solid #ffffff1f;border-radius:10px;padding:11px 16px;transition:background .15s,transform .15s}.menu button:hover:not(:disabled),.menu button:focus-visible{background:#283652f2;outline:none;transform:translate(3px)}.menu button.primary{background:var(--accent);color:#111;border-color:#0000;font-weight:700}.menu button:disabled{opacity:.45;cursor:not-allowed}.menu nav button{gap:2px;display:grid;position:relative}.menu nav button small{opacity:.65;text-overflow:ellipsis;white-space:nowrap;font-size:.78rem;font-weight:400;overflow:hidden}.menu nav button.more{padding-right:36px}.menu nav button.more:after{content:"›";opacity:.6;font-size:1.4rem;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.menu .hint{opacity:.75;max-width:420px;margin:10px 0 0;font-size:.85rem}.menu .error{color:var(--bad);margin:0;font-size:.9rem}.menu-panel{gap:14px;width:min(460px,100vw - 48px);display:grid}.menu-panel h2{margin:0;font-size:1.5rem}.menu-body{gap:12px;display:grid}.menu .who{opacity:.8;margin:-10px 0 14px}.menu .version{opacity:.5;margin:12px 0 0;font-size:12px}.menu .auth h1{margin-bottom:4px}.link-box{gap:8px;display:grid}.link-box input{width:100%}.link-actions{gap:8px;display:flex}.admin{width:min(760px,100vw - 32px);max-height:calc(100vh - 48px);overflow:auto}.admin-note{gap:6px;font-size:.9rem;display:grid}.admin-note input{width:100%}.admin-tree ul{border-left:1px solid #ffffff26;margin:0;padding-left:18px;list-style:none}.admin-tree>ul{border-left:0;padding-left:0}.admin-row{flex-wrap:wrap;align-items:center;gap:6px 8px;padding:6px 0;display:flex}.admin-row small{opacity:.65}.admin-row .badge{background:#ffffff24;border-radius:6px;padding:2px 6px;font-size:.75rem}.admin-row .badge.bad{background:var(--bad);color:#111}.admin-actions{flex-wrap:wrap;gap:6px;margin-left:auto;display:flex}.menu .admin-row button{padding:5px 10px;font-size:.85rem}.menu .back{justify-self:start}.form{gap:12px;display:grid}.form label{gap:6px;font-size:.95rem;display:grid}.form label.check{align-items:center;gap:8px;display:flex}.form select,.form input:not([type=checkbox]):not([type=range]){font:inherit;color:var(--hud-fg);background:#141c2c;border:1px solid #334;border-radius:8px;padding:9px 10px}.form input[type=range]{width:100%}.cars{gap:8px;display:grid}.cars .car{gap:2px;display:grid}.cars .car span{opacity:.75;font-size:.85rem}.cars .car.on{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.keys{border-collapse:collapse}.keys td{padding:4px 14px 4px 0}.keys td:first-child{color:var(--accent);white-space:nowrap;font-family:ui-monospace,monospace}.tracks{gap:8px;display:grid}.track-row{align-items:center;gap:8px;display:flex}.track-row b{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}@media (max-width:600px){.menu{background:#060a12cc;align-items:flex-start}}.editor{pointer-events:none;font-size:.9rem;position:fixed;inset:0}.editor[hidden]{display:none}.editor>*{pointer-events:auto}.ed-side{background:#080c14e6;border-right:1px solid #ffffff14;flex-direction:column;gap:10px;width:320px;padding:12px;display:flex;position:absolute;top:0;bottom:64px;left:0;overflow-y:auto}.ed-side header{gap:8px;display:flex}.ed-side button,.ed-bar button,.ed-dialog button{font:inherit;color:var(--hud-fg);cursor:pointer;background:#1a2334;border:1px solid #ffffff24;border-radius:8px;padding:7px 11px}.ed-side button:hover:not(:disabled),.ed-bar button:hover:not(:disabled){background:#26324a}.ed-side button:disabled,.ed-bar button:disabled{opacity:.45;cursor:not-allowed}.ed-bar button.primary,.ed-dialog button.primary{background:var(--accent);color:#111;border-color:#0000;font-weight:700}.ed-name{font:inherit;color:var(--hud-fg);background:#141c2c;border:1px solid #334;border-radius:8px;flex:1;padding:7px 9px;font-weight:700}.ed-list{border:1px solid #ffffff14;border-radius:8px;max-height:34vh;margin:0;padding:0;list-style:none;overflow-y:auto}.ed-list li{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-bottom:1px solid #ffffff0d;padding:6px 9px;overflow:hidden}.ed-list li:hover{background:#ffffff0d}.ed-list li.on{background:#ffd4002e;box-shadow:inset 3px 0 #ffd400}.ed-list li.bad{color:#ff8a80}.ed-add{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.ed-props,.ed-track,.ed-jumps{gap:8px;display:grid}.ed-tools{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.ed-side button.on,.ed-bar button.on{background:#ffd40038;border-color:#ffd400}.ed-note{opacity:.7;margin:0;font-size:.8rem}.ed-jumps fieldset{border:1px solid #f2c20073;border-radius:6px;gap:6px;margin:0;padding:6px 8px 8px;display:grid}.ed-jumps legend{align-items:center;gap:6px;font-size:.85rem;display:flex}.ed-props h3{justify-content:space-between;align-items:center;margin:4px 0 0;font-size:1rem;display:flex}.ed-side label{gap:4px;display:grid}.ed-side label.check{align-items:center;gap:8px;display:flex}.ed-side select{font:inherit;color:var(--hud-fg);background:#141c2c;border:1px solid #334;border-radius:8px;padding:6px}.ed-num span{grid-template-columns:1fr 64px 18px;align-items:center;gap:6px;display:grid}.ed-num input[type=number]{font:inherit;width:100%;color:var(--hud-fg);background:#141c2c;border:1px solid #334;border-radius:6px;padding:4px 6px}.ed-num i{opacity:.6;font-size:.8rem;font-style:normal}.ed-track summary{cursor:pointer;font-weight:700}.ed-help{opacity:.6;margin:0;font-size:.75rem}.ed-bar{background:#080c14eb;border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:16px;min-height:64px;padding:8px 14px;display:flex;position:absolute;bottom:0;left:0;right:0}.ed-status ul{color:#ff8a80;margin:4px 0 0;padding-left:18px;font-size:.8rem}.ed-status .bad{color:#ff8a80}.ed-status .ok{color:var(--ok)}.ed-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.ed-dialog{background:#00000073;place-items:center;display:grid;position:absolute;inset:0}.ed-dialog[hidden]{display:none}.ed-dialog-box{background:#0f1624;border:1px solid #ffffff1a;border-radius:12px;gap:12px;width:min(520px,100vw - 32px);padding:18px;display:grid}.ed-dialog-box h3{margin:0}.ed-dialog-box label{gap:4px;display:grid}.ed-dialog .copy{gap:6px;display:flex}.ed-dialog .copy input{font:inherit;color:var(--hud-fg);background:#141c2c;border:1px solid #334;border-radius:8px;flex:1;padding:7px;font-size:.85rem}.garage{pointer-events:none;position:fixed;inset:0}.garage>*{pointer-events:auto}.garage-side{background:#080c14e6;align-content:start;gap:10px;width:min(340px,100vw);padding:14px;display:grid;position:absolute;top:0;bottom:0;left:0;overflow-y:auto}.garage-side header{align-items:center;gap:10px;display:flex}.garage-side h2{margin:0}.garage-side h3{margin:6px 0 0;font-size:.95rem}.garage-side button{font:inherit;color:var(--hud-fg);cursor:pointer;text-align:left;background:#1a2334;border:1px solid #ffffff24;border-radius:8px;padding:8px 11px}.garage-tabs{background:#ffffff0d;border-radius:10px;grid-template-columns:repeat(4,1fr);gap:4px;padding:3px;display:grid}.garage-side .garage-tabs button{text-align:center;background:0 0;border:0;padding:7px 4px;font-size:.85rem}.garage-side .garage-tabs button.on{box-shadow:inset 0 -2px 0 var(--accent);background:#24304a}.car-cards{grid-template-columns:1fr 1fr;gap:8px;display:grid}.car-card{cursor:pointer;text-align:center;background:#161f30;border:1px solid #ffffff1f;border-radius:10px;gap:2px;padding:6px 6px 8px;font-size:.82rem;display:grid;position:relative}.car-card:hover{border-color:#ffffff4d}.car-card.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.car-card img{aspect-ratio:32/19;object-fit:contain;background:radial-gradient(at 50% 70%,#2a3550,#161f30 70%);border-radius:6px;width:100%}.car-card img:not([src]){visibility:visible}.car-card b{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.car-card small{opacity:.65;text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.car-card.add{color:var(--accent);border-style:dashed;place-content:center}.car-card.add span{font-size:2rem;line-height:1}.garage-side .car-edit{background:#080c14bf;border-radius:6px;padding:2px 7px;font-size:.85rem;position:absolute;top:4px;right:4px}.paints{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.paints button,.paint-custom{aspect-ratio:1;border:2px solid #fff3;border-radius:50%;padding:0}.paints button.on{box-shadow:0 0 0 2px var(--accent);border-color:#fff}.paint-custom{background:conic-gradient(red,#ff0,#0f0,#0ff,#00f,#f0f,red);place-items:center;display:grid;overflow:hidden}.paint-custom input{opacity:0;cursor:pointer;width:100%;height:100%}.garage-sheet{-webkit-backdrop-filter:blur(14px)saturate(1.3);background:#0a0f1973;border:1px solid #ffffff1f;border-radius:14px;gap:6px;width:min(300px,100vw - 28px);padding:12px 14px;display:grid;position:absolute;top:14px;right:14px;box-shadow:0 8px 30px #00000059;pointer-events:none!important}.garage-sheet h3{margin:0;font-size:1rem}.garage-sheet .hint{opacity:.75;margin:0;font-size:.8rem}.stats{gap:2px;margin:0;font-size:.85rem;display:grid}.stats dt{justify-content:space-between;display:flex}.stats dt span{opacity:.7}.stats dd{background:#ffffff1a;border-radius:3px;height:6px;margin:0 0 6px;overflow:hidden}.stats dd i{background:var(--accent);height:100%;display:block}.garage-side label{gap:4px;display:grid}.garage-side label.check{align-items:center;gap:8px;display:flex}.garage-side .hint{opacity:.7;margin:0;font-size:.8rem}.aero,.dyn{grid-template-columns:1fr auto;gap:3px 10px;margin:0;font-size:.85rem;display:grid}.aero dt,.dyn dt{opacity:.75}.aero dd,.dyn dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:600}.dyn small{opacity:.8;margin-left:4px;font-size:.78rem}.dyn small.good{color:#3ce07a;opacity:1}.dyn small.bad{color:#ff5a4f;opacity:1}.garage-side h3 .sub{opacity:.65;font-size:.78rem;font-weight:400}.views{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.views button{text-align:center}.views button.on{border-color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent)}@media (max-width:700px){.garage-side{width:100vw;height:55vh;top:auto}.garage-sheet{width:min(220px,100vw - 16px);padding:8px 10px;font-size:.8rem;top:8px;right:8px}.garage-sheet .stats{font-size:.75rem}.garage-sheet .stats dd{margin-bottom:3px}}
