:root{--bg:#0b0d11;--panel:#0c0e13d6;--panel-border:#ffffff1a;--text:#f4f4f5;--muted:#f4f4f59e;--accent:#f5c518;--red:#ff3b4e;--green:#2bd96b;--blue:#5aa0ff;--radius:14px;--font:"Segoe UI", Roboto, "Helvetica Neue", system-ui, -apple-system, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);font:15px/1.45 var(--font);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation;margin:0;overflow:hidden}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}[hidden]{display:none!important}h1,h2{margin:0}h2{letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:12px;font-weight:800}kbd{min-width:1.6em;font:600 12px/1.4 var(--font);text-align:center;color:var(--text);background:#ffffff14;border:1px solid #ffffff40;border-bottom-width:2px;border-radius:5px;padding:1px 6px;display:inline-block}.green{color:var(--green);font-weight:700}.red{color:var(--red);font-weight:700}.blue{color:var(--blue);font-weight:700}.muted{color:var(--muted)}.logo{font:italic 900 clamp(38px, 6vw, 64px) / .95 var(--font);letter-spacing:-.02em;text-shadow:0 4px 24px #0000008c;transform:skew(-8deg)}.logo span{color:var(--accent);margin-left:.12em}.loading{text-align:center;background:radial-gradient(circle at 50% 40%, #1a1d24, var(--bg));z-index:50;place-content:center;gap:10px;transition:opacity .5s;display:grid;position:fixed;inset:0}.loading.done{opacity:0;pointer-events:none}.loading p{color:var(--muted);margin:0}.screen{z-index:10;position:fixed;inset:0}.modal{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:30;background:#0405088c;place-items:center;padding:16px;display:grid;overflow-y:auto}.modal.dialog{z-index:40}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);padding:20px;box-shadow:0 20px 60px #00000073}.panel.narrow{width:min(460px,100%)}.panel.center{text-align:center;gap:10px;display:grid}.panel.center h2{color:var(--text);letter-spacing:.05em;font-size:22px}.btn{appearance:none;color:var(--text);font:700 15px/1 var(--font);cursor:pointer;background:#ffffff14;border:1px solid #ffffff29;border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:13px 18px;transition:background .15s,transform .1s,border-color .15s;display:inline-flex}.btn:hover{background:#ffffff24}.btn:active{transform:translateY(1px)}.btn:focus-visible,.car-card:focus-visible,.segmented button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn.primary{color:#111;letter-spacing:.02em;text-transform:uppercase;background:linear-gradient(#ffd43b,#f0b400);border-color:#ffdd57;font-size:17px;font-style:italic;font-weight:900}.btn.primary:hover{background:linear-gradient(#ffe066,#f5c518)}.btn.primary kbd{color:#111;background:#00000014;border-color:#0000004d}.btn.ghost{background:0 0}.menu{padding:max(20px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(20px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left));pointer-events:none;flex-direction:column;justify-content:space-between;display:flex;overflow-y:auto}.menu>*{pointer-events:auto}.brand .tagline{color:#ffffffd9;text-shadow:0 2px 8px #000000b3;margin:10px 0 0;font-weight:600}.menu-panel{gap:12px;width:min(460px,100%);padding:16px 18px;display:grid}.menu-settings{align-content:start;gap:12px;display:grid}.menu-row{grid-template-columns:1.2fr 1fr;gap:12px;display:grid}.menu-row.small .btn{padding:10px 12px;font-size:14px}.car-list{gap:8px;display:grid}.car-card{text-align:left;color:var(--text);font:inherit;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:11px;grid-template-columns:12px 1fr auto;align-items:center;gap:3px 12px;padding:8px 12px;transition:background .15s,border-color .15s;display:grid}.car-card:hover{background:#ffffff14}.car-card[aria-checked=true]{border-color:var(--accent);background:#f5c5181a}.car-swatch{border-radius:4px;grid-row:span 2;width:12px;height:100%;min-height:36px}.car-name{font-size:17px;font-style:italic;font-weight:900}.car-best{color:var(--accent);white-space:nowrap;font-size:12px;font-weight:700}.car-stats{color:var(--muted);flex-wrap:wrap;grid-column:2/4;gap:2px 12px;font-size:12.5px;display:flex}.car-stats b{color:var(--text);font-weight:700}.car-tagline{color:var(--muted);grid-column:2/4;font-size:12.5px;display:none}.car-card[aria-checked=true] .car-tagline{display:block}.segmented{background:#ffffff0f;border-radius:10px;flex-wrap:wrap;gap:4px;padding:4px;display:flex}.segmented button{appearance:none;color:var(--muted);font:700 13px/1 var(--font);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:7px;flex:1;padding:9px 6px}.segmented button[aria-checked=true]{background:var(--text);color:#111}.howto{gap:6px;margin:0 0 14px;padding-left:20px;display:grid}.keys{border-collapse:collapse;width:100%;margin-bottom:10px}.keys th{text-align:left;color:var(--muted);white-space:nowrap;padding:5px 8px 5px 0;font-weight:600}.keys td{padding:5px 0}#help .btn{width:100%;margin-top:6px}.help-sub{margin-top:4px}.btn.profile-btn{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.btn.wide{width:100%}.btn.danger{color:var(--red);border-color:#ff3b4e66}.btn:disabled{opacity:.5;cursor:default}input[type=text]{-webkit-user-select:text;user-select:text;width:100%;min-width:0;color:var(--text);font:600 16px/1.2 var(--font);background:#00000059;border:1px solid #fff3;border-radius:10px;padding:11px 12px}input[type=text]:focus{outline:2px solid var(--accent);outline-offset:1px}input[type=text]::placeholder{color:#f4f4f559}.form-panel{gap:12px;display:grid}.form-panel p{margin:0}.pf-view{gap:12px;display:grid}.pf-form{gap:6px;display:grid}.pf-form label{color:var(--muted);font-size:13px;font-weight:700}.pf-inline{gap:8px;display:flex}.pf-inline .btn{flex:none;font-size:15px}.pf-note{color:var(--muted);font-size:13px}.pf-keybox{color:var(--accent);letter-spacing:.05em;text-align:center;word-break:break-all;-webkit-user-select:all;user-select:all;background:#f5c5181a;border:1px dashed #f5c51899;border-radius:10px;padding:12px;font:800 clamp(15px,4.4vw,20px)/1.25 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:block}.pf-warn{color:var(--accent);font-size:13px}.pf-status{font-size:13px;font-weight:600}.pf-status:empty{display:none}.pf-status.good,.board-status.good{color:var(--green)}.pf-status.warn,.board-status.warn{color:var(--accent)}.pf-status.bad{color:var(--red)}.pf-bests{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.pf-bests th,.pf-bests td{text-align:left;border-bottom:1px solid #ffffff14;padding:4px 6px}.pf-bests th{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:12px}.pf-keydetails summary{cursor:pointer;color:var(--muted);font-size:13px;font-weight:700}.pf-keydetails[open]{gap:8px;display:grid}.busy{cursor:progress}.board-panel{width:min(560px,100%);max-height:calc(100vh - 24px);flex-direction:column;gap:10px;max-height:calc(100dvh - 24px);padding:16px 18px;display:flex;overflow:hidden}.board-panel>*{flex:none}.board-map{letter-spacing:normal;text-transform:none;font-weight:600}.board-panel>.board-wrap{flex:0 auto;min-height:90px;overflow-y:auto}.board-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.board-table th,.board-table td{text-align:right;white-space:nowrap;border-bottom:1px solid #ffffff14;padding:5px 6px}.board-table th:nth-child(2),.board-table td.name{text-align:left}.board-table thead th{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#15181e;font-size:12px;position:sticky;top:0}.board-table td.name{text-overflow:ellipsis;max-width:11em;font-weight:700;overflow:hidden}.board-table td.rank{color:var(--muted);font-weight:700}.board-table tr.p1 td.rank{color:#ffd43b}.board-table tr.p2 td.rank{color:#d9dee6}.board-table tr.p3 td.rank{color:#e0a36a}.board-table td.et{font-weight:800}.board-table tr.me td{background:#f5c51824}.board-table tr.me td.name{color:var(--accent)}.board-table tr.gap td{text-align:center;color:var(--muted);border:0}.board-status{color:var(--muted);margin:8px 0 0;font-size:13px}.board-note{color:var(--muted);margin:0;font-size:12px}@media (max-width:480px){.board-table .opt{display:none}}@media (max-height:480px){.board-note{display:none}}.hud{pointer-events:none;z-index:5;--edge:max(14px, env(safe-area-inset-left));position:fixed;inset:0}.hud button{pointer-events:auto}.hud-top{top:max(12px, env(safe-area-inset-top));left:var(--edge);right:var(--edge);align-items:center;gap:16px;padding-right:52px;display:flex;position:absolute}.progress{flex:1;align-items:center;gap:10px;max-width:520px;display:flex}.progress-track{background:#00000073;border:1px solid #ffffff2e;border-radius:4px;flex:1;height:8px;position:relative}.progress-track:after{content:"";background:repeating-linear-gradient(0deg,#fff 0 4px,#111 4px 8px);width:4px;height:16px;position:absolute;top:-5px;right:-2px}.progress-mark{border:2px solid #fff;border-radius:50%;width:14px;height:14px;margin:-7px 0 0 -7px;transition:left 50ms linear;position:absolute;top:50%;left:0}.progress-mark.player{background:var(--accent);z-index:1}.progress-mark.rival{background:var(--red);border-color:#ffffffb3}.progress-label{color:#fffc;text-shadow:0 1px 4px #000;white-space:nowrap;font-size:12px;font-weight:700}.timer{font:italic 900 clamp(24px, 4vw, 38px) / 1 var(--font);font-variant-numeric:tabular-nums;text-shadow:0 2px 10px #000000b3;margin-left:auto}.hud-tree{top:max(46px, calc(env(safe-area-inset-top) + 38px));left:var(--edge);background:#0a0b0ec7;border:1px solid #ffffff1f;border-radius:10px;grid-template-columns:repeat(2,20px);gap:4px 8px;padding:8px 10px;transition:opacity .4s;display:grid;position:absolute}.hud-tree.faded{opacity:0}.bulb{background:#ffffff12;border:2px solid #0009;border-radius:50%;justify-self:center;width:20px;height:20px}.bulb.small{border-width:1px;width:10px;height:10px}.bulb.on.stage,.bulb.on.prestage{background:#ffe7b0;box-shadow:0 0 8px #ffe7b0}.bulb.on.amber{background:#ffa21a;box-shadow:0 0 14px #ffa21a}.bulb.on.green{background:#2bff5a;box-shadow:0 0 18px #2bff5a}.bulb.on.red{background:#f22;box-shadow:0 0 18px #f22}.bulb-label{text-align:center;letter-spacing:.04em;color:var(--muted);font-size:9px;font-weight:800}.message{text-align:center;opacity:0;transition:opacity .18s,transform .18s;position:absolute;top:24%;left:0;right:0;transform:scale(.85)}.message.show{opacity:1;transform:scale(1)}.message-big{font:italic 900 clamp(26px, 5vw, 54px) / 1 var(--font);letter-spacing:-.01em;text-shadow:0 3px #00000059,0 6px 30px #0009}.message-small{text-shadow:0 2px 8px #000000e6;margin-top:8px;font-size:clamp(14px,2.2vw,20px);font-weight:700}.message.good .message-big{color:var(--green)}.message.warn .message-big{color:var(--accent)}.message.bad .message-big{color:var(--red)}.message.nitro .message-big{color:var(--blue)}.hint{bottom:max(18px, env(safe-area-inset-bottom));width:max-content;max-width:min(640px, calc(100% - 2 * var(--edge) - 2 * clamp(150px, 24vmin, 250px)));text-align:center;background:#0a0b0eb8;border-radius:10px;padding:8px 14px;font-size:14px;font-weight:600;line-height:1.6;transition:opacity .3s;position:absolute;left:50%;transform:translate(-50%)}.hint:empty{opacity:0}.tacho{right:var(--edge);bottom:max(14px, env(safe-area-inset-bottom));width:clamp(150px,24vmin,250px);height:clamp(150px,24vmin,250px);position:absolute}.nitro-gauge{left:var(--edge);bottom:max(20px, env(safe-area-inset-bottom));gap:6px;width:clamp(120px,18vmin,180px);display:grid;position:absolute}.nitro-label{font:italic 900 16px/1 var(--font);color:var(--blue);text-shadow:0 1px 6px #000}.nitro-bar{background:#00000080;border:1px solid #5aa0ff80;border-radius:6px;height:12px;overflow:hidden}.nitro-fill{transform-origin:0;background:linear-gradient(90deg,#3b6cff,#8fd1ff);width:100%;height:100%}.nitro-gauge.active .nitro-fill{box-shadow:0 0 14px #5aa0ff}.icon-btn{top:max(10px, env(safe-area-inset-top));right:var(--edge);width:42px;height:42px;color:var(--text);font:800 14px/1 var(--font);cursor:pointer;background:#0a0b0eb3;border:1px solid #fff3;border-radius:10px;position:absolute}.icon-btn.camera{top:max(58px, calc(env(safe-area-inset-top) + 48px));font-size:11px}.start-lights{top:max(40px, calc(env(safe-area-inset-top) + 34px));background:#0a0b0ec7;border:1px solid #ffffff24;border-radius:999px;align-items:center;gap:clamp(8px,2vmin,14px);padding:10px 16px;transition:opacity .4s;display:none;position:absolute;left:50%;transform:translate(-50%)}.touch-mode .start-lights{display:flex}.touch-mode .hud-tree{display:none}.start-lights.faded{opacity:0}.sl{background:#ffffff14;border:2px solid #0009;border-radius:50%;width:clamp(30px,9vmin,52px);height:clamp(30px,9vmin,52px)}.sl.stage{width:14px;height:14px}.sl.stage.on{background:#ffe7b0;box-shadow:0 0 10px #ffe7b0}.sl.amber.on{background:#ffa21a;box-shadow:0 0 22px #ffa21a}.sl.go.on{background:#2bff5a;box-shadow:0 0 30px #2bff5a}.sl.go.red{background:#f22;box-shadow:0 0 30px #f22}.edge-glow{pointer-events:none;transition:box-shadow .12s;position:absolute;inset:0}.edge-glow.go{box-shadow:inset 0 0 70px 16px #2bff5a99}.edge-glow.shift{box-shadow:inset 0 0 60px 12px #5aa0ff8c}.edge-glow.red{box-shadow:inset 0 0 80px 18px #f229}.touch{display:none}.touch-mode .touch{display:block}.touch-mode .hint,.touch-mode .nitro-gauge{display:none}.touch-mode .tacho{left:50%;right:auto;bottom:max(6px, env(safe-area-inset-bottom));width:clamp(96px,18vmin,150px);height:clamp(96px,18vmin,150px);transform:translate(-50%)}.touch-mode .message{top:30%}.t-zone{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;transition:background .12s,opacity .3s;display:none;position:absolute;bottom:0}.prelaunch .t-start,.racing .t-left,.racing .t-right{display:block}.t-start{background:linear-gradient(#0000,#f5c51808 40%,#f5c51838);height:72%;left:0;right:0}.t-start.pressed{background:linear-gradient(#0000,#f5c5180f 30%,#f5c51866)}.t-start.go{background:linear-gradient(#0000,#2bff5a1a 30%,#2bff5a8c)}.t-left,.t-right{width:38%;height:70%}.t-left{background:radial-gradient(130% 100% at 0 100%,#5aa0ff3d,#5aa0ff0d 65%,#0000 80%);border-top-right-radius:40px;left:0}.t-right{background:radial-gradient(130% 100% at 100% 100%,#f5c5183d,#f5c5180a 65%,#0000 80%);border-top-left-radius:40px;right:0}.t-right.pressed{background:radial-gradient(130% 100% at 100% 100%,#f5c5186b,#f5c51814 70%,#0000 85%)}.t-right.due{background:radial-gradient(130% 100% at 100% 100%,#5aa0ff9e,#5aa0ff24 70%,#0000 85%)}.t-right.dim,.t-left.nitro-empty{opacity:.35}.t-left.nitro-ready{background:radial-gradient(130% 100% at 0 100%,#5aa0ff80,#5aa0ff1a 70%,#0000 85%)}.t-left.nitro-active{background:radial-gradient(130% 100% at 0 100%,#8fd1ff99,#8fd1ff24 70%,#0000 85%)}.t-caption{bottom:max(16px, env(safe-area-inset-bottom));text-shadow:0 2px 6px #000000d9;pointer-events:none;gap:3px;max-width:calc(100% - 40px);display:grid;position:absolute}.t-start .t-caption{left:max(18px, env(safe-area-inset-left));max-width:calc(50% - 90px)}.t-left .t-caption{left:max(18px, env(safe-area-inset-left))}.t-right .t-caption{right:max(18px, env(safe-area-inset-right));text-align:right}.t-title{font:italic 900 clamp(20px, 4.2vmin, 28px) / 1 var(--font)}.t-start .t-title{font-size:clamp(26px,6vmin,40px)}.t-sub{color:#ffffffd9;font-size:12px;font-weight:700}.t-start.go .t-title{color:#2bff5a}.t-right.due .t-title,.t-left .t-title{color:#8fc2ff}.t-nitro-bar{background:#00000080;border-radius:4px;width:110px;height:8px;display:block;overflow:hidden}.t-nitro-fill{transform-origin:0;background:linear-gradient(90deg,#3b6cff,#8fd1ff);height:100%;display:block}@media (orientation:portrait){.t-left,.t-right{border-radius:0;width:50%;height:38%}.t-start{height:45%}.t-start .t-caption{left:50%;bottom:max(24px, env(safe-area-inset-bottom));text-align:center;width:max-content;max-width:calc(100% - 32px);transform:translate(-50%)}.touch-mode .tacho{top:calc(max(58px, env(safe-area-inset-top) + 48px) + 52px);bottom:auto;left:auto;right:var(--edge);width:clamp(96px,26vmin,130px);height:clamp(96px,26vmin,130px);transform:none}}.results .panel{width:min(520px,100%);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);padding:16px 18px;overflow-y:auto}.result-title{font:italic 900 clamp(30px, 5vw, 46px) / 1 var(--font);letter-spacing:-.01em;color:var(--text);text-transform:none;margin-bottom:6px}.result-title.win{color:var(--green)}.result-title.lose{color:var(--red)}.result-sub{color:var(--muted);margin:0 0 10px;font-weight:600}.timeslip{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-bottom:12px}.timeslip th,.timeslip td{text-align:right;border-bottom:1px solid #ffffff14;padding:4px 8px}.timeslip thead th{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:12px}.timeslip tbody th{text-align:left;color:var(--muted);font-weight:600}.timeslip td.best{color:var(--green);font-weight:800}.timeslip tr.total td{font-size:17px;font-weight:900}.timeslip tr.total th{color:var(--text)}.badges{flex-wrap:wrap;gap:6px;margin:0 0 14px;padding:0;list-style:none;display:flex}.badges li{background:#ffffff14;border:1px solid #ffffff1f;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:700}.badges li.good{color:var(--green);border-color:#2bd96b66}.badges li.warn{color:var(--accent);border-color:#f5c51866}.badges li.bad{color:var(--red);border-color:#ff3b4e66}.result-board{background:#ffffff0f;border-radius:10px;justify-content:space-between;align-items:center;gap:8px 10px;margin:0 0 14px;padding:8px 10px;font-size:14px;font-weight:700;display:flex}.result-board.good{color:var(--green);background:#2bd96b1a}.result-board.warn{color:var(--accent)}.result-board .rb-text{flex:auto;min-width:0}.result-board .rb-action{flex:none;padding:8px 12px;font-size:13px}.noscript{place-content:center;display:grid;position:fixed;inset:0}@media (max-width:720px){.menu{justify-content:flex-start;gap:14px}.brand .tagline{display:none}.menu-panel{gap:10px;margin-top:auto;padding:14px}.settings-row{grid-template-columns:1fr;gap:10px}.car-card{padding:8px 10px}.car-stats{font-size:12px}.hud-tree{grid-template-columns:repeat(2,16px);gap:3px 6px;padding:6px 8px}.bulb{width:16px;height:16px}.bulb.small{width:8px;height:8px}.progress-label{display:none}}@media (max-height:520px){.menu{padding-top:max(10px, env(safe-area-inset-top));padding-bottom:max(10px, env(safe-area-inset-bottom));justify-content:flex-start;gap:8px}.logo{font-size:30px}.brand .tagline,.car-tagline{display:none!important}.menu-panel{width:min(860px,100%);max-height:calc(100vh - 56px);grid-template-columns:1.25fr 1fr;align-items:start;gap:10px 14px;max-height:calc(100dvh - 56px);margin-top:0;padding:10px 14px;overflow-y:auto}.car-list{gap:6px}.car-stats{font-size:11.5px}.settings-row{grid-template-columns:1fr;gap:8px}.car-card{gap:1px 10px;padding:5px 10px}.car-name{font-size:15px}.hud-tree{grid-template-rows:repeat(2,14px);grid-template-columns:none;grid-auto-flow:column;align-items:center;gap:4px 5px;padding:5px 8px;top:34px;left:50%;transform:translate(-50%)}.bulb{border-width:1px;width:14px;height:14px}.bulb.small{width:7px;height:7px}.bulb-label{padding-left:4px}}@media (max-height:760px){.result-title{margin-bottom:2px;font-size:clamp(26px,4.4vw,36px)}.result-sub{margin-bottom:6px}.timeslip{margin-bottom:8px}.timeslip th,.timeslip td{padding:2px 8px}.timeslip tr.total td{font-size:16px}.badges{margin-bottom:8px}.badges li{padding:3px 9px;font-size:12px}.result-board{margin-bottom:8px;padding:4px 4px 4px 10px;font-size:13px}.result-board .rb-action{padding:6px 10px}}@media (prefers-reduced-motion:reduce){.message,.loading,.progress-mark{transition:none}}
