:root{color-scheme:dark;--ink:#f0ecdd;--muted:#c3c8b9;--amber:#e6bc75;--line:#e8e6d025;--panel:#1c2725ed;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:#34443a;color:var(--ink);overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:5px}button:disabled{cursor:default;opacity:.45}[hidden]{display:none!important}#rally{position:relative;width:100%;height:100svh;min-height:320px;overflow:hidden;isolation:isolate}#world,.vignette{position:absolute;inset:0}#world canvas{display:block;width:100%;height:100%;touch-action:none}.vignette{pointer-events:none;background:linear-gradient(#101b245f,transparent 35%,transparent 65%,#111c2870),radial-gradient(ellipse,transparent 40%,#14231a38);z-index:1}.race-header{position:absolute;left:30px;right:30px;top:max(22px,env(safe-area-inset-top));display:flex;align-items:center;gap:16px;z-index:3}.icon-button{display:grid;place-items:center;border:1px solid #e4e7d32b;background:#18261c30;border-radius:50%;width:39px;height:39px;font-size:22px;backdrop-filter:blur(8px)}.icon-button:hover{background:#27392ae0}.race-brand{display:flex;flex-direction:column;gap:3px}.race-brand span{font-size:9px;letter-spacing:.24em;color:#e6e6cda6}.race-brand strong{font-size:15px;font-weight:500;letter-spacing:.15em}.header-actions{margin-left:auto;display:flex;gap:12px}.time-panel,.target-panel{position:absolute;top:101px;z-index:2;display:flex;flex-direction:column;gap:8px;text-shadow:0 2px 14px #142318b3}.time-panel{left:37px}.overline{font-size:12px;letter-spacing:.13em;color:var(--muted)}.time-panel>strong{font-size:clamp(33px,3.7vw,54px);font-weight:500;letter-spacing:-.045em;font-variant-numeric:tabular-nums;line-height:1}.time-limit{font-size:11px;color:#e0e5d6b3}.time-limit i{display:inline-block;height:3px;width:3px;border-radius:50%;background:currentColor;margin:0 8px;vertical-align:middle}.time-panel.danger>strong{color:#ffb88e}.target-panel{right:37px;width:173px;border-left:1px solid #e1e5d536;padding-left:18px}.target-panel strong{font-size:24px;font-weight:500;font-variant-numeric:tabular-nums}.target-panel>span:last-of-type{font-size:11px;color:var(--muted)}#open-board{padding:4px 0;text-align:left;border:0;background:none;font-size:11px;color:var(--amber)}.course-progress{position:absolute;top:38px;left:50%;width:min(28vw,350px);transform:translate(-50%);z-index:2;text-align:center}.progress-line{height:2px;background:#d5dbc65c;position:relative;margin-bottom:13px}.progress-line>span{position:absolute;left:0;top:0;height:2px;background:var(--amber);width:0;transition:width .2s}.progress-line i{position:absolute;top:-3px;width:8px;height:8px;background:#8a9b87;border:1px solid #e1d2ad;border-radius:50%;left:26%}.progress-line i:nth-of-type(2){left:53%}.progress-line i:nth-of-type(3){left:77%}.progress-line i.passed{background:var(--amber)}.progress-line b{position:absolute;right:-8px;top:-12px;font-size:21px;font-weight:400}.course-progress>span{font-size:10px;letter-spacing:.12em;color:var(--muted)}.terrain-notice{position:absolute;left:50%;top:104px;transform:translate(-50%);z-index:2;border:1px solid #d8ddc524;background:#253c2c55;border-radius:20px;padding:7px 16px;font-size:11px;letter-spacing:.12em;color:#eee4c6;backdrop-filter:blur(8px)}.race-toast{position:absolute;top:27%;left:50%;transform:translate(-50%);z-index:5;white-space:nowrap;font-size:14px;color:var(--amber);text-shadow:0 2px 12px #000;pointer-events:none}.drive-controls{position:absolute;left:39px;bottom:max(34px,env(safe-area-inset-bottom));z-index:3;text-align:center;user-select:none}#joystick{position:relative;width:128px;height:128px;border:1.5px solid #eee8cd7a;border-radius:50%;background:#dddac514;box-shadow:inset 0 0 24px #f7ebc20c;touch-action:none;cursor:grab;backdrop-filter:blur(3px)}#joystick.active{cursor:grabbing;background:#efe6c41f;border-color:#f1d9a4}.joystick-ring{position:absolute;inset:27%;border:1px solid #f1e8c025;border-radius:50%}.joystick-knob{position:absolute;left:50%;top:50%;width:46px;height:46px;transform:translate(-50%,-50%);border-radius:50%;background:linear-gradient(150deg,#f3e9cce6,#b8baa6e0);border:2px solid #ede5cc80;box-shadow:0 4px 12px #131d2840,inset 0 1px 2px #fff6;pointer-events:none}.joystick-arrow{position:absolute;color:#f5e9bf7a;font-size:14px;line-height:1;pointer-events:none}.joystick-arrow.up{top:8px;left:calc(50% - 5px)}.joystick-arrow.down{bottom:8px;left:calc(50% - 5px)}.joystick-arrow.left{left:9px;top:calc(50% - 6px)}.joystick-arrow.right{right:9px;top:calc(50% - 6px)}.joystick-caption{margin:12px 0 0;font-size:10px;color:#e4e5cfab;letter-spacing:.08em}.keyboard-help{position:absolute;left:193px;bottom:49px;z-index:2;color:#d9ddc9a8;font-size:10px}.keyboard-help>div{display:flex;align-items:center;gap:6px;margin-top:6px}.keyboard-help kbd{display:grid;place-items:center;width:20px;height:21px;border:1px solid #e7e8d137;border-radius:4px;font:11px inherit}.keyboard-help small{font-size:9px;opacity:.6;margin-left:4px}.speed-panel{position:absolute;bottom:38px;left:50%;transform:translate(-50%);display:flex;align-items:baseline;gap:9px;z-index:2}.speed-panel strong{font-size:52px;font-weight:300;line-height:1;font-variant-numeric:tabular-nums}.speed-panel>span{font-size:11px;color:var(--muted)}#speed-bar{position:absolute;left:0;bottom:-10px;width:0;height:2px;max-width:100%;background:var(--amber);transition:width .12s}.route-map{position:absolute;bottom:33px;right:38px;width:111px;z-index:2;text-align:center}.route-map svg{width:77px;height:139px;filter:drop-shadow(0 2px 6px #12251b)}#map-track{fill:none;stroke:#ece3c574;stroke-width:2.3}#map-checkpoints circle{fill:#7c8871;stroke:#dfc99c;stroke-width:1.4}#map-checkpoints circle.passed{fill:var(--amber)}#map-car{fill:#f7ddb0;stroke:#15261d;stroke-width:1.7}.route-map>span{display:flex;flex-direction:column;gap:5px;font-size:9px;letter-spacing:.07em;color:#cfd5bf}.route-map b{font-weight:400;font-size:10px;color:#f2e6c3}.countdown{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;flex-direction:column;pointer-events:none;background:radial-gradient(ellipse,#182a1b22,transparent 70%)}.countdown>span{font-size:12px;letter-spacing:.3em;color:#f4e7c4}.countdown strong{font-weight:300;font-size:120px;line-height:1.2;text-shadow:0 4px 30px #14251966}.countdown p{font-size:12px;color:#eee8d7;letter-spacing:.04em}.modal-backdrop{position:absolute;inset:0;z-index:10;background:#111e2255;backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}.pause-card,.result-card,.board-card{border:1px solid #e0e4ce29;border-radius:14px;background:var(--panel);box-shadow:0 20px 90px #111e2355;padding:34px;width:min(440px,100%)}.pause-card{text-align:center}.pause-card h1{font-size:30px;font-weight:500}.pause-card p{color:var(--muted);font-size:13px;margin-bottom:28px}.primary-button,.quiet-button{display:block;width:100%;padding:15px 18px;border-radius:5px;font-size:14px;letter-spacing:.08em;border:1px solid #d8d9c33d}.primary-button{background:#ede0c5;color:#253128;font-weight:600}.primary-button:hover{background:#f8ecd3}.quiet-button{background:transparent;margin-top:12px}.quiet-button:hover{background:#ffffff09}.pause-card>a,.result-home{display:block;margin-top:24px;font-size:11px;color:var(--muted)}.result-backdrop{justify-content:flex-end;padding:38px 5vw;backdrop-filter:blur(2px);background:linear-gradient(90deg,transparent,#14222075)}.result-card{width:min(400px,45vw);padding:32px}.result-card h1{font-size:30px;font-weight:500;letter-spacing:.02em;margin:16px 0}.result-score{display:flex;align-items:baseline;gap:10px}.result-score strong{font-size:76px;font-weight:400;letter-spacing:-.05em;font-variant-numeric:tabular-nums}.result-score span{font-size:21px}#result-improvement{font-size:13px;color:var(--amber);min-height:16px;margin:0 0 21px}.result-card dl{margin:0;border-top:1px solid var(--line)}.result-card dl div{display:flex;justify-content:space-between;gap:15px;padding:14px 0;border-bottom:1px solid var(--line);font-size:13px}.result-card dt{color:var(--muted)}.result-card dd{margin:0;font-variant-numeric:tabular-nums}.result-next{font-size:12px;line-height:1.8;color:var(--muted);margin:18px 0 8px}#save-status{font-size:11px;color:#bcc5ad;line-height:1.6;min-height:16px}#save-status button{border:0;background:transparent;color:var(--amber);text-decoration:underline}.primary-button>span{float:right}.result-home{text-align:center;margin-top:14px}.board-card{width:min(580px,100%)}.board-heading{display:flex;align-items:center;justify-content:space-between}.board-heading h1{font-size:31px;font-weight:500;margin:10px 0}.board-rule{font-size:11px;color:var(--muted)}.board-scroll{max-height:45svh;overflow:auto;margin-top:20px}.board-card table{width:100%;border-collapse:collapse;font-size:14px;table-layout:fixed}.board-card th{font-size:11px;color:var(--muted);font-weight:400;text-align:left;padding:10px}.board-card th:first-child{width:60px}.board-card th:last-child{width:90px;text-align:right}.board-card td{padding:15px 10px;border-top:1px solid var(--line);overflow-wrap:anywhere}.board-card td:last-child{text-align:right;font-variant-numeric:tabular-nums}.board-card .is-me{background:#dfbf7520;color:var(--amber)}#board-status{font-size:12px;color:var(--muted);line-height:1.6}.board-card>a{display:block;font-size:11px;margin-top:20px;color:var(--muted);text-align:center}#rally[data-phase=ended] .drive-controls,#rally[data-phase=ended] .keyboard-help{opacity:0;pointer-events:none}#rally[data-phase=paused] .drive-controls{opacity:.3}#rally[data-phase=countdown] #joystick{opacity:.5}@media(max-width:800px){.keyboard-help{display:none}.race-header{left:20px;right:20px;top:max(15px,env(safe-area-inset-top))}.time-panel{left:23px;top:86px}.target-panel{right:23px;top:86px;width:148px;padding-left:12px}.target-panel strong{font-size:20px}.race-brand strong{font-size:13px}.course-progress{width:24vw;top:31px}.drive-controls{left:23px;bottom:max(23px,env(safe-area-inset-bottom))}.route-map{right:23px;bottom:24px;width:80px}.speed-panel{bottom:31px}.speed-panel strong{font-size:42px}.result-card{width:380px;max-width:100%;padding:24px}.result-backdrop{padding:20px}.result-score strong{font-size:62px}.result-card h1{font-size:26px}}@media(max-width:540px)and (orientation:portrait){.race-brand span{font-size:8px}.race-brand strong{font-size:12px}.race-header{gap:10px}.icon-button{width:34px;height:34px;font-size:20px}.course-progress{top:194px;width:calc(100% - 58px)}.time-panel{top:86px}.time-panel>strong{font-size:35px}.target-panel{top:86px;width:136px}.terrain-notice{top:230px;font-size:10px;padding:5px 12px}.drive-controls{bottom:max(28px,env(safe-area-inset-bottom));left:22px}#joystick{width:124px;height:124px}.joystick-caption{font-size:9px}.speed-panel{bottom:77px;left:59%}.speed-panel strong{font-size:33px}.speed-panel>span{font-size:9px}.route-map{right:16px;bottom:31px;width:56px}.route-map svg{height:107px;width:56px}.route-map>span{font-size:8px}.countdown p{font-size:10px}.result-backdrop{justify-content:center}.result-card{width:100%;max-width:370px}.result-card h1{font-size:25px}.result-card dl div{padding:12px 0}.result-next{margin:14px 0}.board-card{padding:23px}.race-toast{top:40%;font-size:12px}}@media(max-height:540px)and (orientation:landscape){#rally .speed-panel{bottom:43px}.race-header{top:12px}.race-brand span{display:none}.icon-button{width:31px;height:31px;font-size:18px}.time-panel,.target-panel{top:63px}.time-panel>strong{font-size:30px}.time-limit{font-size:9px}.target-panel{gap:4px}.course-progress{top:25px}.terrain-notice{top:62px}.drive-controls{bottom:15px}#joystick{width:100px;height:100px}.joystick-knob{width:38px;height:38px}.joystick-caption{margin-top:6px;font-size:9px}.route-map{bottom:14px}.route-map svg{height:88px;width:49px}.speed-panel{bottom:23px}.speed-panel strong{font-size:35px}.countdown strong{font-size:86px}.result-backdrop{padding:12px}.result-card{padding:18px 23px;max-height:calc(100svh - 24px);overflow:auto;width:350px}.result-card h1{font-size:22px;margin:10px 0}.result-score strong{font-size:44px}#result-improvement{margin-bottom:12px;font-size:11px}.result-card dl div{padding:8px 0;font-size:12px}.result-next{margin:10px 0;font-size:11px}.primary-button,.quiet-button{padding:10px}.result-home{margin-top:10px}.pause-card{padding:23px;max-height:95svh;overflow:auto}.pause-card h1{font-size:24px;margin:12px 0}.pause-card p{margin-bottom:18px}.pause-card>a{margin-top:16px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}@media(pointer:coarse){.keyboard-help{display:none}}.target-panel>span:last-of-type{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}@media(max-width:350px)and (orientation:portrait){.time-panel>strong{font-size:30px}.target-panel{width:128px}.time-limit{font-size:9px}.target-panel strong{font-size:18px}}#rally[data-phase=ended] .time-panel,#rally[data-phase=ended] .target-panel,#rally[data-phase=ended] .course-progress,#rally[data-phase=ended] .terrain-notice,#rally[data-phase=ended] .speed-panel,#rally[data-phase=ended] .route-map{display:none}.course-warning{position:absolute;z-index:5;top:42%;left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - 32px);padding:11px 16px;border:1px solid #ffb18d80;border-radius:12px;background:#392d25ed;color:#ffe3ca;font-size:13px;line-height:1.65;text-align:center;pointer-events:none;box-shadow:0 4px 18px #0003}.course-progress.missed>span{color:#ffb18d}.progress-line i.missed,#map-checkpoints circle.missed{fill:#e87953;background:#e87953;stroke:#ffe3ca;stroke-width:2.5}.course-progress.missed #progress-fill{background:#e87953}@media(max-width:600px)and (min-height:501px){.course-warning{top:51%;font-size:12px;max-width:calc(100% - 24px)}}.garage-backdrop{z-index:12;padding:16px;background:#14231bc9}.garage-card{width:min(720px,100%);max-height:calc(100svh - 32px);display:flex;flex-direction:column;background:#202e28f5;border:1px solid var(--line);border-radius:20px;padding:24px;box-shadow:0 16px 70px #0004}.garage-card h1{font-size:25px;margin:8px 0}.garage-note{color:var(--muted);font-size:13px;margin:0 0 16px}.garage-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;overflow:auto;min-height:0;padding:5px;overscroll-behavior:contain}.garage-car{min-width:0;border:1px solid var(--line);border-radius:10px;background:#101b174d;padding:4px 6px 9px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:13px}.garage-car img{width:100%;height:82px;object-fit:contain;pointer-events:none}.garage-car:hover{background:#ffffff0c}.garage-car[aria-pressed=true]{border-color:var(--amber);background:#e6bc7515;box-shadow:inset 0 0 0 1px var(--amber)}.garage-selection{display:flex;justify-content:space-between;gap:12px;padding:15px 5px 8px;flex-wrap:wrap}.garage-selection span{font-size:12px;color:var(--muted)}.garage-actions{display:flex;align-items:center;gap:16px}.garage-actions button{flex:1}.garage-card .primary-button{margin:8px 0;min-height:44px}#choose-car{margin:0;padding:4px 10px;font-size:13px}#rally[data-mode=duel] #choose-car{display:none}#rally[data-phase=garage] .drive-controls,#rally[data-phase=garage] .keyboard-help{opacity:.25;pointer-events:none}@media(max-width:600px){.garage-card{padding:16px}.garage-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.garage-car img{height:67px}.garage-card h1{font-size:22px}.garage-actions{gap:8px}.garage-actions button{font-size:13px}}@media(max-height:500px){.garage-card{padding:12px 18px}.garage-card h1{font-size:20px;margin:4px 0}.garage-note{margin-bottom:6px}.garage-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.garage-car img{height:48px}.garage-car{font-size:11px;padding-bottom:4px}.garage-selection{padding:7px 5px 0}.garage-actions button{font-size:13px}.garage-card .overline{display:none}}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) :is(.target-panel,.online-panel,#choose-car,.keyboard-help,.time-limit){display:none}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel{top:82px;gap:5px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel>strong{font-size:29px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel>.overline{font-size:9px}#rally[data-chase=true] .terrain-notice{opacity:0;pointer-events:none}#rally[data-chase=true] .route-map svg{height:85px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .race-brand strong{font-size:12px}@media(max-width:540px)and (orientation:portrait){#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .course-progress{top:73px;width:calc(100% - 46px)}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel{top:117px;gap:4px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel>strong{font-size:22px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .terrain-notice{top:119px;left:auto;right:22px;transform:none;font-size:9px}#rally[data-chase=true] .route-map{bottom:28px;opacity:.85}}@media(max-height:540px)and (orientation:landscape){#rally .speed-panel{bottom:43px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel{top:61px;gap:3px}#rally:is([data-phase=racing],[data-phase=duel-racing],[data-phase=countdown],[data-phase=resume]) .time-panel>strong{font-size:23px}}.garage-character{margin:4px 5px 10px;color:var(--muted);font-size:12px;line-height:1.5;flex-shrink:0}.garage-specs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 5px 12px;flex-shrink:0}.garage-specs div{border-top:1px solid var(--line);padding-top:8px}.garage-specs dt{font-size:10px;color:var(--muted)}.garage-specs dd{font-size:12px;margin:5px 0 0;font-variant-numeric:tabular-nums}.garage-selection,.garage-actions,.garage-note,.garage-card h1{flex-shrink:0}@media(max-width:600px){.garage-specs{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.garage-grid{min-height:90px}.garage-character{margin-bottom:8px}}@media(max-height:500px){.garage-specs{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:3px;gap:5px}.garage-specs div{padding-top:3px}.garage-specs dd{margin-top:2px;font-size:11px}.garage-character{margin:2px 5px 4px;font-size:11px}.garage-note{font-size:11px}.garage-grid{min-height:62px}}#time-penalty{font-size:10px;color:#f2bc87}#drive-feedback{display:block;font-size:10px;line-height:1.8;margin-top:9px;letter-spacing:.04em;color:#c9d7be;border-top:2px solid #c9d7be80;padding-top:3px}#drive-feedback[data-kind=brake]{color:#ffa592;border-color:#ffa592}#drive-feedback[data-kind=slip]{color:#f5c77d;border-color:#f5c77d}#drive-feedback[data-kind=landing]{color:#dac5ff;border-color:#dac5ff}.split-live{position:absolute;z-index:5;left:50%;top:30%;transform:translate(-50%);font-size:13px;color:var(--cream);background:#17271fe6;border-radius:12px;padding:10px 16px;pointer-events:none;white-space:nowrap}.split-live:empty{display:none}.result-card{max-height:calc(100svh - 32px);overflow:auto}.result-score strong{font-size:clamp(36px,6vw,64px);font-variant-numeric:tabular-nums}.result-score>span{font-size:11px}.split-summary{margin-top:14px}.split-summary table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.split-summary th{font-size:10px;font-weight:400;color:var(--muted);text-align:left;padding:6px 0}.split-summary td{padding:7px 0;border-top:1px solid var(--line)}.split-summary th:last-child,.split-summary td:last-child{text-align:right}.split-summary [data-pace=faster]{color:#b4d6aa}.split-summary [data-pace=slower]{color:#f2bc87}#split-reference{font-size:10px;line-height:1.6;color:var(--muted);margin:8px 0}@media(max-width:540px){.split-live{top:32%;font-size:11px}.result-card{padding:20px}.result-card dl div{padding:8px 0}.result-next{font-size:11px}.split-summary td{padding:6px 0}}@media(max-height:500px){.split-live{top:32%;font-size:11px}#drive-feedback{font-size:9px;margin-top:5px}.result-card{max-height:calc(100svh - 24px)}}#rally{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}#joystick.floating{position:fixed;left:0;top:0;transform:translate(-50%,-50%);z-index:5}.touch-steering .joystick-caption{visibility:hidden}.brake-control{position:fixed;right:max(32px,env(safe-area-inset-right));bottom:max(28px,env(safe-area-inset-bottom));z-index:5;width:76px;height:100px;border:0;background:transparent;padding:0;touch-action:none;display:flex;flex-direction:column;align-items:center;color:#f0d6a8;filter:drop-shadow(0 3px 8px #10251866)}.brake-control[hidden]{display:none}.brake-control.floating{right:auto;bottom:auto;transform:translate(-50%,-50%);pointer-events:none}.brake-control.active svg{transform:perspective(180px) rotateX(18deg) translateY(2px)}.brake-control.active .pedal-face{fill:#6a6347}.brake-control:focus-visible{outline:1px solid var(--amber);outline-offset:5px;border-radius:10px}.brake-control svg{height:76px;width:58px;overflow:visible;transform:perspective(180px) rotateX(0)}.brake-control .pedal-arm{fill:#596354;stroke:#d0c3a2;stroke-width:1.3}.brake-control .pedal-base{fill:#293b30;stroke:#b1b395;stroke-width:1.3}.brake-control .pedal-face{fill:#34473a;stroke:#e9c88d;stroke-width:2}.brake-control .pedal-tread{fill:none;stroke:#e9c88d;stroke-width:3;stroke-linecap:round}.brake-control circle{fill:#d8c59c}.brake-control>span{font-size:11px;letter-spacing:.18em;text-shadow:0 1px 3px #172a20}.speed-panel{display:grid;grid-template-columns:auto auto;column-gap:8px;row-gap:0;align-items:baseline}#drive-feedback{grid-column:1/-1;white-space:nowrap}@media(max-width:540px)and (orientation:portrait){#rally[data-phase] .speed-panel{left:50%;bottom:200px}}@media(pointer:fine){#rally:is([data-phase=racing],[data-phase=duel-racing]) .route-map{bottom:142px}#rally:not([data-phase]) .speed-panel{bottom:156px}}.desktop-hint{display:none}@media(pointer:fine){.touch-hint{display:none}.desktop-hint{display:inline}}.training-entry{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:12px 16px;margin-top:12px;border:1px solid #e8e6d033;border-radius:14px;color:var(--ink);text-decoration:none;font-size:14px;text-align:left}.training-entry:hover{background:#e8e6d012}.training-entry-detail{display:inline-block;margin-left:12px;font-size:12px;color:var(--muted)}.garage-card>.training-entry{margin:12px 0 16px;background:#e8e6d009}.online-panel{position:absolute;z-index:6;right:30px;top:235px;width:205px;border:1px solid #d4ddcf33;border-radius:14px;background:#1e302ade;padding:13px;backdrop-filter:blur(12px);color:#edf0e4}.online-heading{display:flex;justify-content:space-between;font-size:13px;font-weight:600}.online-heading b{color:#e6be7e}#online-status{font-size:11px;line-height:1.5;color:#c0c8bd;margin:7px 0}#online-players{max-height:225px;overflow:auto}.online-person{width:100%;border:0;border-top:1px solid #ffffff12;background:none;color:inherit;padding:8px 0;display:flex;gap:8px;justify-content:space-between;text-align:left;cursor:pointer;font:inherit;font-size:12px}.online-person span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.online-person small{white-space:nowrap;color:#e9bf7e;font-size:10px}.online-person:disabled{opacity:.5;cursor:default}#online-more{border:0;background:none;color:#e9bf7e;padding:9px 0 0;cursor:pointer;font-size:11px}.duel-live{position:absolute;z-index:7;left:50%;top:130px;transform:translate(-50%);padding:8px 14px;border-radius:20px;background:#203a31df;display:flex;align-items:center;gap:12px;max-width:80%;font-size:12px;color:#fff}.duel-live button{background:transparent;border:0;color:#efc384;cursor:pointer;white-space:nowrap}.duel-live[hidden]{display:none}#duel-dialog{z-index:40}#duel-dialog .pause-card{max-height:90dvh;overflow:auto;width:min(420px,90vw)}#duel-title{overflow-wrap:anywhere}#duel-detail{white-space:pre-line;line-height:1.8}#duel-board-link{display:block;margin-top:16px}#duel-board-link[hidden]{display:none}.board-tabs{display:flex;gap:8px;margin:14px 0}.board-tabs button{border:1px solid #ffffff33;background:transparent;color:inherit;padding:7px 15px;border-radius:20px;cursor:pointer}.board-tabs button[aria-pressed=true]{background:#eed3a3;color:#21372e}body:has(#duel-dialog:not([hidden])) .drive-controls{pointer-events:none}#map-opponent{fill:#70dcff;stroke:#123f4c;stroke-width:1.4}@media(max-width:600px){.online-panel{top:185px;right:12px;width:143px;padding:9px;border-radius:10px}.online-person{padding:6px 0;font-size:11px}.online-heading{font-size:11px}#online-status{font-size:10px}#online-players{max-height:180px}.duel-live{top:144px;font-size:10px;max-width:95%;width:max-content;padding:7px 10px}.duel-live span{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.keyboard-help{display:none}}@media(max-height:500px){.online-panel{top:153px;right:15px;width:160px;padding:8px}#online-players{max-height:115px}.online-person{padding:5px 0}#online-status{margin:4px 0}.duel-live{top:95px}.route-map{display:none}}.online-heading{cursor:pointer;list-style:none}.online-heading::-webkit-details-marker{display:none}.online-heading span:before{content:"\25be  ";color:#d8c39e}.online-panel:not([open]) .online-heading span:before{content:"\25b8  "}@media(max-width:600px){.online-panel{top:255px}.online-panel[open]{max-height:40dvh;overflow:auto}.online-panel:not([open]){width:115px}#rally[data-mode=duel] .target-panel{display:none}}@media(max-height:500px){.online-panel{top:165px}.online-panel:not([open]){width:140px}}#rally[data-mode=duel] .target-panel{display:none}.rally-car-label{position:absolute;transform:translate(-50%,-100%);padding:3px 7px;border-radius:8px;color:#fff9df;background:#20372cbd;font:500 11px/1.3 system-ui;white-space:nowrap;pointer-events:none;max-width:150px;overflow:hidden;text-overflow:ellipsis}#duel-sync-status{font-size:11px;opacity:.85}.duel-live{flex-wrap:wrap;justify-content:center;max-width:calc(100% - 32px)}.rally-debug-toggle{position:absolute;z-index:40;left:50%;transform:translate(-50%);bottom:5px;height:26px;padding:3px 13px;border:1px solid #d8d9c34d;border-radius:16px;background:#20372ce8;color:#e6d4a7;font:11px/1.3 system-ui}.rally-debug-panel{position:absolute;z-index:41;top:62px;right:12px;width:min(360px,calc(100% - 24px));max-height:calc(100svh - 250px);overflow:auto;overscroll-behavior:contain;padding:12px;border:1px solid #d8d9c34d;border-radius:12px;background:#172b25f5;box-shadow:0 8px 24px #0005;color:#f0ecdd;font:11px/1.45 system-ui}.debug-heading{display:flex;justify-content:space-between;align-items:center;font-size:14px;gap:12px}.rally-debug-panel button{border:1px solid #d8d9c34d;border-radius:6px;background:#33483b;color:#f0ecdd;padding:7px 9px;font:12px system-ui;min-height:32px}.debug-heading button{background:transparent}.debug-help,.debug-message{font-size:11px;line-height:1.5;color:#c3c8b9;margin:8px 0}.debug-message{color:#edce8c}.rally-debug-panel dl{display:grid;grid-template-columns:1fr 1.2fr;gap:5px 8px;margin:8px 0;font-variant-numeric:tabular-nums}.rally-debug-panel dt{color:#bccabf}.rally-debug-panel dd{margin:0;overflow-wrap:anywhere;text-align:right}.debug-actions{display:flex;flex-wrap:wrap;gap:6px;position:sticky;top:0;background:#172b25;padding:6px 0}.debug-copy{width:100%;min-height:100px;font:10px monospace;background:#102018;color:#fff;border:1px solid #d8d9c34d}@media(max-height:500px){.rally-debug-panel{top:44px;max-height:calc(100svh - 180px)}.rally-debug-toggle{bottom:2px;height:21px}}.online-heading{align-items:center;gap:8px}.online-heading span{white-space:nowrap}.historical-board{display:block;margin-top:12px;font-size:12px;opacity:.7}
