:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#f7f5ef;background:#18262e;font-synthesis:none;--orange:#ff6b35;--ink:#101a20;--muted:#a9b6bb;--border:rgba(255,255,255,.15);font-size:16px}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:wait}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #45d5e2;outline-offset:4px}[hidden]{display:none!important}#world{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(7,17,24,.95),rgba(9,21,30,.78) 27%,rgba(5,17,22,.12) 64%),linear-gradient(0deg,rgba(5,15,20,.8),transparent 28%)}body.in-race .vignette{background:linear-gradient(0deg,rgba(7,14,20,.25),transparent 30%,transparent 78%,rgba(7,14,20,.3))}.topbar{position:fixed;top:0;left:0;right:0;padding:28px 4%;display:flex;align-items:center;justify-content:space-between;z-index:5}.brand{display:flex;align-items:center;gap:12px;font-size:13px;font-weight:850;letter-spacing:.11em}.brand small{display:block;font-size:9px;letter-spacing:.23em;color:#b5c4c9;margin-top:5px}.brand-mark{display:flex;width:92px;height:65px;background:var(--orange);color:#121a20;align-items:center;justify-content:center;font-weight:950;font-size:35px;font-style:italic;letter-spacing:-5px;border-radius:3px}.brand-mark span{font-size:22px;align-self:start;letter-spacing:0}.brand-mark.small{width:52px;height:38px;font-size:24px;letter-spacing:-3px}.brand-mark.small span{font-size:15px}.top-actions{display:flex;gap:8px}.icon-button{background:rgba(13,25,33,.45);color:white;border:1px solid var(--border);min-width:42px;min-height:42px;padding:0 12px;border-radius:99px;backdrop-filter:blur(12px);font-size:13px}.icon-button:hover{background:rgba(45,65,77,.7)}.menu-copy{position:absolute;top:50%;left:6%;transform:translateY(-54%);width:min(450px,42vw);z-index:2}.eyebrow{font-size:10px;letter-spacing:.2em;font-weight:800;display:flex;align-items:center;gap:8px;color:#c8dbdf}.live-dot{height:6px;width:6px;border-radius:50%;background:#a9ec86;box-shadow:0 0 12px #96e87580}.menu-copy h1{font-size:clamp(48px,6.1vw,90px);line-height:.99;letter-spacing:-.065em;margin:24px 0;font-weight:880}.menu-copy h1 em{font-style:normal;color:var(--orange)}.intro{font-size:16px;line-height:1.6;color:#c0ccd0;margin:0 0 24px}.driver-config{display:grid;grid-template-columns:1fr;gap:7px}.driver-config label{font-size:10px;color:#b8c6cb;font-weight:750;letter-spacing:.13em}.driver-config input{background:#10202a99;border:1px solid #54707d77;color:#fff;width:100%;border-radius:9px;padding:12px 14px;font-weight:650;min-height:44px}.driver-config input::placeholder{color:#8b9da6}.colors{display:flex;gap:11px;padding:8px 0 13px}.color-button{border:2px solid transparent;width:26px;height:26px;border-radius:50%;background:var(--color);box-shadow:inset 0 0 0 3px #12212a;transition:transform .15s}.color-button[aria-pressed=true]{border-color:#fff;transform:scale(1.18)}.menu-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px}.button{min-height:48px;border:1px solid transparent;border-radius:9px;padding:12px 16px;font-size:14px;font-weight:750;display:flex;align-items:center;justify-content:center;gap:16px;transition:background .18s,transform .18s}.button:hover{transform:translateY(-1px)}.button.primary{background:var(--orange);color:#14212a}.button.primary:hover{background:#ff8558}.button.secondary{color:#f4f6f5;border:1px solid #a6b9c54d;background:rgba(22,39,49,.6)}.button.subtle{background:transparent;color:#c0cdd1}.menu-small{display:flex;align-items:center;gap:12px;margin-top:18px;color:#b0c1c8;font-size:12px}.menu-small button{background:none;border:0;padding:0;color:#d5e2e7;text-underline-offset:4px}.menu-small button:hover{text-decoration:underline}.tiny{font-size:10px;color:#8198a5;line-height:1.7}.vehicle-caption{position:fixed;right:6%;bottom:22%;display:flex;flex-direction:column;gap:10px;text-align:right;text-shadow:0 2px 15px #0009}.vehicle-caption>span{font-size:11px;font-weight:800;letter-spacing:.2em;color:#e3e8e5}.vehicle-caption strong{font-size:23px;letter-spacing:-.04em}.vehicle-caption small{font-size:11px;color:#cad6d6}.caption-rule{height:2px;width:42px;background:var(--orange);align-self:flex-end}.circuit-strip{position:absolute;bottom:0;left:6%;right:6%;border-top:1px solid #bacdd23d;padding:22px 0 28px;display:flex;gap:65px}.circuit-strip small{display:block;font-size:9px;letter-spacing:.17em;color:#94aab7;font-weight:700;margin-bottom:10px}.circuit-strip strong{font-size:20px;font-weight:700;letter-spacing:-.03em}.circuit-strip strong span{font-size:12px;color:#b5c6cc;font-weight:500;letter-spacing:0}.strip-controls{margin-left:auto}kbd{font-size:11px;font-family:inherit;padding:4px 8px;border:1px solid #bdd0d147;border-radius:4px;color:#eef3f1}.loading{position:fixed;z-index:30;inset:0;background:#101a20;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;color:#aabcbd;font-size:14px}.dots{animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}.overlay-view{position:fixed;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;padding:90px 20px 24px;background:#101c2677;backdrop-filter:blur(10px);overflow:auto}.panel{width:min(580px,100%);background:#101f2cee;border:1px solid #b4cdd22b;padding:32px;border-radius:18px;box-shadow:0 20px 100px #0006;max-height:100%;overflow:auto}.panel h1{font-size:36px;line-height:1.06;letter-spacing:-.05em;margin:12px 0}.muted{font-size:13px;line-height:1.6;color:#aabbc4}.room-share{margin:25px 0 18px;border:1px solid #94b5c444;border-radius:11px;background:#1c3442;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px}.room-share small{display:block;font-size:9px;letter-spacing:.15em;color:#b9ced6}.room-share strong{display:block;font-size:31px;letter-spacing:.17em;line-height:1.4}.room-share button{font-size:12px}.roster,.result-list{list-style:none;padding:0;margin:16px 0}.roster li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid #b0cbd21c;font-size:14px}.driver-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.roster li small{font-size:10px;color:#8ea6b2;margin-left:auto}.slot-empty{opacity:.35}.panel-actions{display:flex;gap:10px;margin-top:22px;flex-wrap:wrap}.panel-actions .primary{flex:1}.connection-text{font-size:10px;text-align:center;margin-top:18px;color:#a4c99b}.race-top{position:fixed;top:max(22px,env(safe-area-inset-top));left:28px;right:28px;display:flex;justify-content:space-between;align-items:flex-start;gap:22px;z-index:3}.race-position{padding:12px 20px;border-left:3px solid var(--orange);background:#142833dc;backdrop-filter:blur(10px)}.race-position small,.race-metrics small{display:block;font-size:9px;letter-spacing:.15em;color:#adc1c9;font-weight:800}.race-position strong{font-size:36px;font-style:italic;line-height:1.2}.race-position strong #field-size{font-size:19px;color:#839ca9;font-weight:500}.race-metrics{display:flex;background:#142833db;backdrop-filter:blur(10px);border-radius:9px;gap:28px;padding:15px 22px;margin-left:auto}.race-metrics b{display:block;margin-top:7px;font-size:20px;font-variant-numeric:tabular-nums;font-weight:720}.leaderboard{position:fixed;top:135px;left:28px;list-style:none;margin:0;padding:0;width:190px;z-index:3}.leaderboard li{display:flex;gap:9px;align-items:center;border-bottom:1px solid #ffffff1c;padding:9px 11px;background:#122531aa;font-size:11px}.leaderboard li.me{background:#ff6b35e6;color:#14232b;font-weight:800}.leaderboard li .driver-dot{width:6px;height:6px}.leaderboard li span.name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.leaderboard li em{font-style:normal;color:#c5dbda;font-size:9px;margin-left:auto}.countdown{position:fixed;z-index:3;top:35%;left:0;right:0;text-align:center;pointer-events:none;font-size:clamp(80px,16vw,190px);font-weight:900;font-style:italic;letter-spacing:-.08em;text-shadow:0 8px 35px #0007;color:#fff}.countdown.go{color:#b6f48a}.race-notice{position:fixed;top:22%;left:50%;transform:translateX(-50%);z-index:4;background:#0e2237dc;border:1px solid #8cb2c43b;padding:12px 20px;border-radius:10px;font-size:13px;color:#edf3ea;text-align:center;max-width:80%}.race-bottom{position:fixed;bottom:44px;left:28px;right:34px;display:flex;justify-content:space-between;align-items:flex-end;z-index:2;pointer-events:none}.map-card{width:200px;background:#132935a8;border-radius:12px;padding:4px 8px 11px;backdrop-filter:blur(8px)}.map-card canvas{display:block;width:100%;height:auto}.map-card>span{display:block;font-size:8px;letter-spacing:.2em;color:#bacdd3;text-align:center}.speedometer{display:flex;align-items:flex-end;position:relative;gap:9px;text-shadow:0 3px 15px #0009}.speedometer>strong{font-size:90px;font-style:italic;line-height:.94;font-weight:800;letter-spacing:-.08em;font-variant-numeric:tabular-nums}.speedometer>div:not(.rpm-track){display:flex;flex-direction:column;gap:5px;align-items:center;margin-left:3px}.speedometer b{font-size:23px;border:1px solid #e7efef60;padding:4px 9px;border-radius:5px;color:#ffb28e}.speedometer small{font-size:9px;letter-spacing:.15em}.rpm-track{position:absolute;bottom:-12px;left:8px;right:0;background:#94adad40;height:4px}.rpm-track span{display:block;height:100%;width:0;background:var(--orange);transition:width .12s}.race-hints{position:fixed;bottom:12px;left:0;right:0;text-align:center;display:flex;gap:22px;justify-content:center;font-size:9px;color:#c0d1d4;z-index:2;text-shadow:0 1px 4px #000}.touch-controls{display:none;position:fixed;bottom:max(14px,env(safe-area-inset-bottom));left:14px;right:14px;justify-content:space-between;z-index:5;pointer-events:none}.touch-controls>div{display:flex;gap:9px}.touch-controls button{touch-action:none;user-select:none;pointer-events:auto;width:68px;height:60px;border-radius:14px;border:1px solid #afc4d16b;background:#173145aa;color:#f3f6f2;font-weight:800;font-size:18px;backdrop-filter:blur(6px)}.touch-controls .gas{background:#ff6b35c9;color:#101f29;font-size:14px}.touch-controls .brake{font-size:12px}.touch-controls button.pressed{background:#faf5e9;color:#0d2130}.result-list li{display:flex;align-items:center;gap:14px;padding:17px 0;border-bottom:1px solid #a7c5cb22}.result-list li strong{font-size:24px;font-style:italic;color:#ff946a}.result-list li span:not(.driver-dot){flex:1;font-size:14px}.result-list li b{font-size:16px;font-variant-numeric:tabular-nums}.result-list li:first-child strong{color:#e8c46b}dialog{color:#f4f7f3;background:#152937;border:1px solid #b3c7d350;border-radius:18px;box-shadow:0 22px 90px #0008;padding:32px;max-width:520px;width:calc(100% - 28px);max-height:calc(100dvh - 50px)}dialog::backdrop{background:#04151c99;backdrop-filter:blur(8px)}dialog h2{font-size:28px;letter-spacing:-.04em;margin:5px 35px 18px 0}dialog p{color:#b0c5ce;font-size:13px;line-height:1.7}.dialog-close{position:absolute;right:12px;top:10px;width:36px;height:36px;border:0;background:none;color:#ccdbdf;font-size:28px}.dialog-field{display:block;margin:18px 0;font-size:12px;color:#c6d6de}.dialog-field input,.dialog-field select{display:block;background:#203b4b;color:#fff;border:1px solid #7e99ab66;border-radius:8px;padding:12px;margin-top:8px;width:100%}.dialog-field input.code-input{text-transform:uppercase;font-size:25px;letter-spacing:.25em;text-align:center}.dialog-check{display:flex;gap:10px;font-size:13px;align-items:center;margin:20px 0}.dialog-error{color:#ffb2a7!important;min-height:20px}.control-table{display:grid;gap:10px;margin:22px 0}.control-table>div{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px}.room-list{display:flex;flex-direction:column;gap:8px}.room-list button{display:flex;gap:12px;justify-content:space-between;align-items:center;padding:14px;background:#254456;color:#fff;border:1px solid #a4c4d433;border-radius:8px;text-align:left}.room-list small{color:#bdd1d6}.toast{position:fixed;z-index:25;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#eff4ea;color:#152937;padding:13px 20px;border-radius:10px;box-shadow:0 6px 50px #0005;font-size:13px;max-width:90%;text-align:center}.error-screen{position:fixed;inset:0;z-index:40;background:#102331;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:30px;gap:16px}.error-screen p{max-width:550px;line-height:1.7}.error-screen button{padding:12px;border-radius:8px}.in-race #topbar{display:none}#error-screen h1{font-size:36px}body.menu-small-height .menu-copy{top:51%;transform:translateY(-50%)}
@media(min-width:1450px){.menu-copy{width:500px}.intro{font-size:18px}.menu-buttons .button{padding:16px 18px}.driver-config{max-width:440px}.menu-buttons{max-width:440px}}
@media(max-height:760px) and (min-width:851px){.topbar{padding-top:18px;padding-bottom:18px}.menu-copy{top:49%;transform:translateY(-49%);width:400px}.menu-copy h1{font-size:60px;margin:17px 0}.intro{font-size:14px;margin-bottom:14px}.colors{padding-bottom:9px}.menu-note{display:none}.circuit-strip{padding:16px 0}.vehicle-caption{bottom:23%}.menu-small{margin-top:12px}}
@media(max-width:850px){.topbar{padding:20px 24px}.menu-copy{left:5%;width:48vw}.menu-copy h1{font-size:62px}.intro{font-size:14px}.menu-buttons{grid-template-columns:1fr;gap:8px}.menu-buttons .button{justify-content:space-between}.vehicle-caption{right:5%;bottom:28%}.vehicle-caption strong{font-size:18px}.circuit-strip{gap:35px;left:5%;right:5%}.strip-controls{display:none}.menu-note{max-width:250px}.race-metrics{gap:18px}.leaderboard{width:160px}.map-card{width:175px}.speedometer>strong{font-size:74px}}
@media(pointer:coarse){.touch-controls{display:flex}.race-hints{display:none}.race-bottom{bottom:94px}.map-card{width:150px}.leaderboard{top:120px}.touch-controls button{width:70px}}
@media(max-width:600px){.topbar{padding:calc(14px + env(safe-area-inset-top)) 20px 14px}.brand{font-size:10px;gap:8px}.brand small{font-size:7px}.brand-mark.small{width:43px;height:32px;font-size:21px}.top-actions{gap:5px}.icon-button{min-width:36px;min-height:36px;font-size:11px;padding:0 10px}.menu-copy{left:6%;top:auto;bottom:100px;transform:none;width:88%;max-width:430px}.menu-copy h1{font-size:57px;margin:15px 0}.eyebrow{font-size:8px}.intro{font-size:13px;margin-bottom:13px}.menu-buttons{grid-template-columns:1fr 1fr}.button{font-size:12px;padding:12px;gap:8px}.driver-config{grid-template-columns:1fr auto;gap:5px 13px;align-items:center}.driver-config label{grid-column:1/-1;font-size:9px}.driver-config input{padding:10px;min-width:0}.colors{gap:5px;padding:0}.color-button{width:21px;height:21px;box-shadow:inset 0 0 0 2px #182a32}.menu-buttons{margin-top:14px}.menu-small{font-size:11px;margin-top:14px}.menu-note{display:none}.vehicle-caption{top:125px;bottom:auto;right:6%;font-size:8px}.vehicle-caption strong{font-size:14px}.vehicle-caption small,.caption-rule{display:none}.circuit-strip{padding:15px 0 20px;gap:0;justify-content:space-between;bottom:env(safe-area-inset-bottom);left:6%;right:6%}.circuit-strip small{font-size:8px;margin-bottom:5px}.circuit-strip strong{font-size:16px}.circuit-strip strong span{font-size:10px}.vignette{background:linear-gradient(0deg,#091820 0%,#10212bdd 40%,#0c1a2322 83%,#091c2599)}.overlay-view{padding:85px 12px 15px}.panel{padding:22px;border-radius:14px}.panel h1{font-size:29px}.room-share{padding:12px;gap:10px}.room-share strong{font-size:25px}.room-share button{font-size:10px;padding:10px}.roster li{padding:10px 0}.race-top{top:calc(12px + env(safe-area-inset-top));left:12px;right:12px;gap:8px}.race-position{padding:9px 12px}.race-position strong{font-size:25px}.race-position strong #field-size{font-size:14px}.race-position small{font-size:7px}.race-metrics{gap:14px;padding:12px}.race-metrics b{font-size:14px}.race-metrics small{font-size:7px}.race-top .icon-button{min-width:34px;padding:0 8px}.leaderboard{top:calc(105px + env(safe-area-inset-top));left:12px;width:128px}.leaderboard li{font-size:9px;padding:7px 8px;gap:5px}.race-bottom{left:13px;right:18px;bottom:94px}.speedometer>strong{font-size:60px}.speedometer b{font-size:16px}.map-card{width:120px}.touch-controls>div{gap:6px}.touch-controls button{width:61px;height:60px}.race-notice{font-size:11px;padding:9px 14px;top:26%;width:max-content}.result-list li{gap:10px}.result-list li b{font-size:12px}.result-list li span:not(.driver-dot){font-size:12px}.toast{font-size:11px;width:max-content}}
@media(max-height:720px) and (max-width:600px){.menu-copy{bottom:86px}.menu-copy h1{font-size:43px;margin:9px 0}.intro{font-size:12px;margin-bottom:8px}.vehicle-caption{top:100px}.colors{gap:4px}.menu-buttons{margin-top:9px}.menu-small{margin-top:10px}.circuit-strip{padding-bottom:13px}.driver-config input{padding:8px;min-height:38px}.button{min-height:42px}.menu-copy .eyebrow{font-size:7px}}
@media(max-height:500px) and (orientation:landscape){.topbar{padding:12px 20px}.brand small{display:none}.menu-copy{left:5%;bottom:55px;top:auto;transform:none;width:390px;max-width:53%}.menu-copy h1{font-size:40px;margin:8px 0;line-height:1}.menu-copy h1 br{display:none}.intro{display:none}.eyebrow{font-size:7px}.driver-config{grid-template-columns:1fr auto;gap:4px 10px}.driver-config label{grid-column:1/-1}.driver-config input{min-height:35px;padding:8px}.colors{gap:6px;padding:0}.color-button{width:22px;height:22px}.menu-buttons{grid-template-columns:1fr 1fr;margin-top:8px}.button{min-height:37px;font-size:11px}.menu-small{font-size:10px;margin-top:8px}.menu-note{display:none}.circuit-strip{padding:10px 0;gap:40px}.circuit-strip small{display:none}.circuit-strip strong{font-size:14px}.vehicle-caption{bottom:75px;top:auto}.race-top{top:8px}.race-position{padding:6px 14px}.race-position strong{font-size:25px}.race-metrics{padding:8px 16px}.race-metrics b{font-size:14px}.leaderboard{top:87px}.leaderboard li{padding:5px 8px;font-size:9px}.race-bottom{bottom:85px}.map-card{width:105px}.speedometer>strong{font-size:50px}.overlay-view{padding:55px 18px 12px}.panel{padding:20px}.panel h1{font-size:25px}.room-share{margin:12px 0}.roster{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}.panel-actions{margin-top:12px}.roster li{padding:8px 0}.panel .muted{margin:5px 0}.touch-controls button{height:48px;width:64px}.touch-controls{bottom:12px}.race-notice{top:22%}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
