:root{--ink:#14221d;--panel:#13221eef;--cream:#ede9d6;--muted:#afbaae;--lime:#d5ec6c;--line:#ffffff22;--orange:#e6ac62}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--cream);font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button,a,label,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0}button:disabled{opacity:.5;cursor:wait}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:4px}[hidden]{display:none!important}#world{position:fixed;inset:0;width:100%;height:100%;display:block}#vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,#0f201bdd 0%,#10211a66 36%,transparent 59%),linear-gradient(0deg,#0d2018bd,transparent 32%,transparent 85%,#0a211e88)}body.playing #vignette{background:linear-gradient(0deg,#0c171aa8,transparent 28%,transparent 75%,#0c171a8a)}#damageFlash{position:fixed;inset:0;pointer-events:none;box-shadow:inset 0 0 140px 30px #ba412d;opacity:0;transition:opacity .05s}#topbar{position:absolute;z-index:5;top:0;left:0;right:0;height:84px;padding:21px 40px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ede9d61b}#brand{display:flex;align-items:center;gap:15px;text-decoration:none;font-weight:800;font-size:11px;letter-spacing:1.4px}#brand small{display:block;font-size:8px;letter-spacing:1.8px;color:var(--muted);margin-top:7px}.brand-mark{font-family:Impact,'Arial Narrow',sans-serif;font-size:33px;font-style:italic;letter-spacing:-1px}.brand-mark span{font-family:Arial;font-weight:900;color:var(--lime);font-size:22px;letter-spacing:-5px;margin-right:6px}.top-actions{display:flex;align-items:center;gap:21px}.quiet,.text-button{background:none;letter-spacing:1.4px;font-size:10px;font-weight:800;padding:10px 0}.quiet:hover,.text-button:hover{color:var(--lime)}.status{font-size:9px;letter-spacing:1.2px;display:flex;align-items:center;gap:8px}.status i{width:6px;height:6px;border-radius:50%;background:#d2b77b}.status.online i{background:var(--lime)}.hero{position:absolute;left:5%;top:15%;width:410px}.eyebrow,.tiny-label,.section-label{font-size:9px;letter-spacing:1.9px;font-weight:700}.eyebrow{color:var(--lime);margin-bottom:19px;display:flex;align-items:center;gap:12px}.line{width:23px;height:2px;background:var(--lime)}h1{font-family:Impact,'Arial Narrow',sans-serif;font-style:italic;line-height:.85;font-size:clamp(65px,6.9vw,108px);letter-spacing:-1.3px;font-weight:900;margin:0 0 25px}h1 em{color:var(--lime);font-style:inherit}.hero-copy{font-size:14px;line-height:1.65;color:#dedfca;margin:0 0 25px}.primary{background:var(--lime);color:var(--ink);font-size:11px;letter-spacing:1.1px;font-weight:900;padding:17px 23px;text-align:center;transition:background .2s,transform .2s;border:1px solid var(--lime)}.primary:hover{background:#e3f591;transform:translateY(-1px)}.primary.big{width:285px;text-align:left;display:flex;align-items:center;justify-content:space-between;font-size:12px;padding:20px 22px}.primary.big span{font-size:24px;line-height:17px}.hero-links{display:flex;gap:27px;margin-top:14px}.text-button span{margin-left:9px;color:var(--lime)}.track-picker{position:absolute;top:17%;right:3%;width:297px;background:#10211bcf;padding:20px;backdrop-filter:blur(12px);border:1px solid #cad1ae30}.section-label{display:flex;justify-content:space-between;font-size:8px;letter-spacing:1.1px;margin-bottom:20px;color:var(--muted)}.section-label span:last-child{color:var(--lime)}.track-card{padding:13px 11px 13px;border:1px solid #b0c5a620;margin-bottom:9px;cursor:pointer;background:#152c2580;position:relative;transition:background .15s,border .15s;text-align:left;width:100%}.track-card:hover{background:#294035}.track-card.selected{border-color:var(--lime);background:#334333d9}.track-card .card-top{display:flex;align-items:center;justify-content:space-between;font-size:8px;letter-spacing:1.2px;color:var(--muted)}.track-card.selected .card-top{color:var(--lime)}.track-card h3{font-size:16px;letter-spacing:-.4px;margin:8px 0}.track-card p{font-size:9px;line-height:1.5;margin:0;color:var(--muted)}.track-card canvas{float:right;width:69px;height:46px;margin:7px -2px 5px 10px}.track-card .track-desc{font-size:10px;line-height:1.5;clear:both;margin-top:11px;padding-top:9px;border-top:1px solid #ffffff18}.track-footnote{font-size:9px;line-height:1.6;color:var(--muted);text-align:center;margin-top:12px}.garage-caption{position:absolute;left:48%;bottom:15%;transform:translateX(-15%);text-align:left}.garage-caption .tiny-label{color:#e3e8c9;text-shadow:0 1px 5px #000}.garage-caption h2{font-family:Impact,'Arial Narrow',sans-serif;font-size:30px;margin:9px 0 5px;font-style:italic;letter-spacing:.7px;text-shadow:0 2px 8px #000}.garage-caption p{font-size:8px;letter-spacing:1.2px;color:#e2e7ce}.garage-caption div{display:flex;gap:8px;margin-top:13px}.garage-caption div span{border:1px solid #e5edcc66;padding:6px;font-size:7px;letter-spacing:1px;background:#15291e77}.menu-footer{position:absolute;bottom:0;left:0;right:0;padding:25px 40px;display:flex;gap:28px;align-items:center;border-top:1px solid #ffffff20;font-size:8px;letter-spacing:1px;color:var(--muted);background:#13251bab}.menu-footer b{color:var(--cream);margin-right:8px}.version{margin-left:auto}.import-link{cursor:pointer;color:var(--lime)}.challenge-banner{background:#d5ec6c22;border-left:3px solid var(--lime);font-size:12px;line-height:1.6;padding:10px 15px;margin-bottom:15px;max-width:340px}
body.playing #topbar{height:48px;padding:8px 25px;background:#13251b66}body.playing #brand>span:last-child{display:none}body.playing .brand-mark{font-size:23px}body.playing .brand-mark span{font-size:17px}body.playing .status{font-size:8px}#hud{position:fixed;inset:0;pointer-events:none}.race-top{position:absolute;top:72px;left:35px;right:35px;display:flex;align-items:flex-start;gap:27px}.lap-block{border-right:1px solid #ffffff50;padding-right:25px}.lap-block>.tiny-label{display:block;color:var(--lime)}.lap-block strong{font-size:44px;font-weight:800;display:block;line-height:1.1;margin:8px 0}.lap-block strong span{font-size:19px;color:var(--muted)}.lap-block>span:last-child{font-size:12px;font-variant-numeric:tabular-nums}.clock-block{display:flex;flex-direction:column;gap:7px}.clock-block strong{font-size:42px;font-weight:700;letter-spacing:-1.4px;font-variant-numeric:tabular-nums}.clock-block>span:last-child{font-size:10px;color:var(--lime);letter-spacing:1px}.condition-block{margin-left:auto;width:225px}.condition-block>div:first-child{display:flex;justify-content:space-between;align-items:center}.condition-block strong{font-size:17px}.meter{height:7px;background:#182e25b3;margin:13px 0 8px;border:1px solid #afbea34d}.meter i{display:block;height:100%;width:100%;background:var(--lime);transition:width .1s}.condition-block>span{font-size:8px;letter-spacing:1px;color:var(--muted)}.speed-block{position:absolute;bottom:94px;left:45px}.speed-block>.tiny-label{color:var(--muted)}.speed-block>div{display:flex;align-items:center;gap:13px}.speed-block strong{font-size:91px;line-height:1.15;font-family:Impact,'Arial Narrow',sans-serif;font-style:italic;font-variant-numeric:tabular-nums}.speed-block>div>span{font-size:10px;line-height:1.7;color:var(--muted)}.speed-block b{display:inline-block;font-size:20px;color:var(--lime);border:1px solid #cce39c55;min-width:29px;text-align:center}.speed-block>span:last-child{font-size:10px;color:var(--lime);letter-spacing:1px}.boost-block{position:absolute;bottom:90px;left:50%;transform:translateX(-50%);width:360px}.boost-header{display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:1.4px}.boost-header b{color:var(--lime)}kbd{font:700 9px Arial;display:inline-block;padding:4px 7px;border:1px solid #e1edcd55;background:#16251ba6;border-radius:2px;letter-spacing:.5px}.boost-meter{position:relative;height:21px;background:#14281c9c;border:1px solid #dde8b460;transform:skew(-12deg);margin:10px 2px 6px;overflow:hidden}.boost-meter i{display:block;width:0;height:100%;background:var(--lime)}.boost-meter span{position:absolute;top:0;height:100%;width:2px;background:#12241ca6;left:25%}.boost-meter span:nth-child(3){left:50%}.boost-meter span:nth-child(4){left:75%}.reserve{height:3px;background:#16251c;margin:0 3px 10px;transform:skew(-12deg)}.reserve i{display:block;height:100%;width:100%;background:#e1cba0}.boost-caption{display:flex;justify-content:space-between;font-size:7px;letter-spacing:.8px;color:var(--muted)}.map-block{position:absolute;right:30px;bottom:70px;width:210px;background:#13271ba6;border:1px solid #e1edcd22;padding:13px}.map-block>div{display:flex;justify-content:space-between;font-size:8px}.map-block canvas{display:block;width:100%;height:123px}.race-controls{position:absolute;bottom:26px;left:35px;right:35px;display:flex;gap:24px;align-items:center;font-size:8px;letter-spacing:1px;color:var(--muted)}.race-controls kbd{margin-right:5px}.race-controls button{pointer-events:auto;margin-left:auto;background:none;font-size:9px;letter-spacing:1px}.race-hint{position:absolute;left:50%;top:24%;transform:translateX(-50%);font-size:13px;font-weight:900;letter-spacing:1.8px;text-align:center;text-shadow:0 1px 8px #000;background:#172a1caa;padding:9px 16px;border-left:2px solid var(--lime)}.race-hint:empty{display:none}.gate-hint{position:absolute;left:50%;top:31%;transform:translateX(-50%);color:var(--lime);font-size:10px;letter-spacing:1px;text-shadow:0 2px 6px black}#countdown{position:fixed;inset:28% 0 auto;text-align:center;font-size:140px;font-family:Impact,sans-serif;font-style:italic;color:var(--lime);text-shadow:0 7px 0 #14271d,0 0 90px #111;pointer-events:none}#recoveryOverlay{position:fixed;left:50%;top:34%;transform:translateX(-50%);text-align:center;display:flex;flex-direction:column;gap:10px;background:#13251be6;border:1px solid var(--orange);padding:25px 45px;pointer-events:none}#recoveryOverlay strong{font-size:56px;color:var(--orange)}#recoveryOverlay>span:last-child{font-size:10px;letter-spacing:1.2px}#toast{position:fixed;top:98px;left:50%;transform:translateX(-50%) translateY(-10px);background:var(--panel);border:1px solid #d5ec6c66;border-left:4px solid var(--lime);padding:14px 24px;max-width:650px;font-size:12px;line-height:1.5;z-index:30;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
dialog{background:#14261fee;color:var(--cream);border:1px solid #bdcdaa55;box-shadow:0 40px 100px #0009;padding:35px;max-width:780px;width:calc(100% - 40px);max-height:88vh;overflow:auto;backdrop-filter:blur(20px)}dialog::backdrop{background:#07140eb8;backdrop-filter:blur(7px)}dialog h2{font-family:Impact,'Arial Narrow',sans-serif;font-style:italic;font-size:40px;line-height:1.05;letter-spacing:.5px;margin:12px 0 19px}dialog h2 em{color:var(--lime);font-style:inherit}dialog p{font-size:13px;line-height:1.7;color:#c6d0bf}dialog h3{font-size:20px;margin:8px 0}dialog .close{position:absolute;right:17px;top:12px;background:transparent;font-size:29px;color:var(--muted)}.instructions-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:20px}.instructions-grid>div{display:grid;grid-template-columns:110px 1fr;gap:5px}.instructions-grid kbd{grid-row:span 2;align-self:start;justify-self:start}.instructions-grid b{font-size:12px;color:var(--lime)}.instructions-grid span{font-size:11px;line-height:1.5;color:var(--muted)}.settings-row{display:flex;gap:25px;font-size:11px;padding:15px 0}.settings-row label{display:flex;align-items:center;gap:7px}.muted{font-size:11px!important;color:var(--muted)!important}.secondary,.small-button{border:1px solid #c5d0b966;background:#203829;color:var(--cream);padding:15px 17px;font-size:10px;font-weight:800;letter-spacing:1px}.secondary:hover,.small-button:hover{background:#385236}.small-button{padding:10px}.button-row{display:flex;gap:10px;flex-wrap:wrap}.result-time{font-family:Impact,'Arial Narrow',sans-serif;font-style:italic;font-size:75px;color:var(--lime);letter-spacing:1px}.lap-splits{display:flex;gap:30px;margin:15px 0}.lap-splits div{font-size:10px;color:var(--muted);letter-spacing:1.3px}.lap-splits strong{display:block;font-size:18px;color:var(--cream);margin-top:6px;letter-spacing:0;font-variant-numeric:tabular-nums}hr{border:0;border-top:1px solid var(--line);margin:26px 0}.form-row{display:flex;gap:17px}.form-row label{flex:1;font-size:10px;letter-spacing:.7px;color:var(--muted)}input:not([type=checkbox]):not([type=range]),select{background:#0e2019;color:var(--cream);border:1px solid #bcccac55;padding:12px;font-size:13px;min-width:0}.form-row input{display:block;width:100%;margin-top:8px}.checkbox-row{display:flex;align-items:center;gap:9px;font-size:11px;color:var(--muted);margin:15px 0;line-height:1.6}input[type=checkbox]{accent-color:var(--lime);width:16px;height:16px}.share-status{font-size:12px;line-height:1.6;color:var(--lime);margin-top:15px;white-space:pre-wrap}#shareLinkRow{display:flex;gap:8px;margin-top:15px}#shareLink{flex:1}#pauseDialog{width:420px}#pauseDialog .primary,#pauseDialog .secondary{display:block;width:100%;margin-top:12px}#pauseDialog .text-button{display:block;margin:15px auto 0}.challenge-list{min-height:65px}.challenge-item{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:17px 0;border-top:1px solid var(--line)}.challenge-item strong{font-size:15px;display:block;margin-bottom:7px}.challenge-item span{font-size:10px;color:var(--muted)}.challenge-item .challenge-time{font-size:23px;font-weight:800;color:var(--lime)}#replayBar{position:fixed;left:25px;right:25px;bottom:25px;z-index:12;background:#11291deb;border:1px solid #d8e9b755;padding:18px;display:flex;align-items:center;gap:14px}#replayBar>div{display:flex;flex-direction:column;gap:7px;max-width:235px}#replayBar .tiny-label{color:var(--lime);font-size:8px}#replayTitle{font-size:12px}#replayClock{font-size:11px;min-width:47px;font-variant-numeric:tabular-nums}#replaySeek{flex:1;min-width:40px;accent-color:var(--lime)}#replayBar select{font-size:10px;padding:8px;max-width:145px}#touchControls{position:fixed;bottom:25px;left:20px;right:20px;display:flex;justify-content:space-between;pointer-events:none}#touchControls>div{display:flex;gap:9px}#touchControls button{pointer-events:auto;background:#183629cc;border:1px solid #c4de9477;min-width:48px;height:47px;touch-action:none;font-size:11px}#fatal{position:fixed;left:15%;right:15%;top:35%;padding:30px;background:#14261f;border:1px solid var(--orange);z-index:100;line-height:1.7}.error{color:#e9a18d!important}
@media(min-width:1700px){.hero{top:19%}.track-picker{top:22%;right:6%;width:340px}.track-card{padding:19px 14px}.garage-caption{bottom:16%}h1{font-size:124px}}
@media(max-height:750px) and (min-width:1000px){.hero{top:17%;left:4%;width:360px}h1{font-size:80px;margin-bottom:18px}.hero-copy{font-size:12px;margin-bottom:15px}.track-picker{top:17%;width:270px;padding:15px}.track-card{padding:10px;margin-bottom:7px}.track-card .track-desc{font-size:9px;margin-top:7px;padding-top:7px}.track-footnote{display:none}.garage-caption{bottom:16%;left:48%}.menu-footer{padding:19px 30px}.hero .eyebrow{font-size:8px;margin-bottom:15px}.primary.big{padding:17px 20px}.hero-links{margin-top:8px}}
@media(max-width:1000px){#topbar{padding:20px}.top-actions{gap:12px}.status{display:none}.hero{left:4%;top:16%;width:300px}h1{font-size:76px}.hero-copy{font-size:12px}.hero .eyebrow{font-size:7px}.track-picker{right:3%;width:245px;top:16%;padding:14px}.garage-caption{left:43%;bottom:14%;transform:none}.garage-caption h2{font-size:23px}.garage-caption p{display:none}.garage-caption div{gap:4px}.garage-caption div span{font-size:6px}.menu-footer{gap:17px;padding:22px;font-size:7px}.menu-footer span:nth-child(3){display:none}.boost-block{width:300px}.speed-block{left:25px}.map-block{width:160px;right:20px}.race-top{left:25px;right:25px}.condition-block{width:180px}.clock-block strong{font-size:35px}.race-controls{gap:12px}#replayBar{gap:8px;padding:12px}#replayBar>div{max-width:160px}#replayFollow{max-width:100px!important}}
@media(max-width:650px){#topbar{height:65px;padding:12px 16px}#brand>span:last-child{font-size:9px}#brand small{font-size:6px}.quiet{font-size:8px}.hero{top:95px;left:22px;width:56%}h1{font-size:64px}.hero .eyebrow{display:none}.hero-copy{font-size:10px;margin-bottom:15px}.primary.big{width:230px;padding:17px;font-size:10px}.hero-links{gap:15px}.hero-links button{font-size:8px}.track-picker{top:auto;bottom:92px;left:15px;right:15px;width:auto;padding:10px}.section-label{margin-bottom:9px;font-size:7px}#trackCards{display:flex;gap:6px}.track-card{width:33.333%;padding:8px;margin:0}.track-card h3{font-size:12px;line-height:1.1}.track-card canvas{float:none;width:100%;height:28px;margin:4px 0}.track-card .card-top{font-size:6px}.track-card p{font-size:7px}.track-card .track-desc,.track-footnote{display:none}.garage-caption{left:auto;right:20px;bottom:290px}.garage-caption h2{font-size:19px}.garage-caption .tiny-label{font-size:6px}.garage-caption div{display:none}.menu-footer{gap:12px;padding:17px 18px;line-height:1.7;flex-wrap:wrap}.menu-footer span:nth-child(2){max-width:155px}.version{font-size:6px}.race-top{top:66px;left:15px;right:15px;gap:13px}.lap-block{padding-right:10px}.lap-block strong{font-size:30px}.lap-block strong span{font-size:14px}.lap-block>span:last-child{font-size:10px}.clock-block strong{font-size:26px}.clock-block .tiny-label{font-size:7px}.clock-block>span:last-child{font-size:7px}.condition-block{width:96px}.condition-block .tiny-label{font-size:6px}.condition-block strong{font-size:12px}.condition-block>span{font-size:6px}.meter{margin:9px 0 5px}.speed-block{left:20px;bottom:137px}.speed-block strong{font-size:59px}.speed-block>.tiny-label{font-size:7px}.speed-block>span:last-child{font-size:7px}.boost-block{left:auto;right:20px;bottom:160px;transform:none;width:185px}.boost-header{font-size:7px;letter-spacing:.6px}.boost-caption{font-size:6px}.boost-caption>span:first-child{max-width:125px}.map-block{width:115px;bottom:220px;padding:8px}.map-block canvas{height:80px}.map-block .tiny-label{font-size:6px}.race-controls{bottom:87px;left:20px;right:20px;font-size:6px;gap:12px}.race-controls span:nth-child(3){display:none}.race-hint{font-size:9px;top:28%;width:80%}.gate-hint{font-size:8px;top:34%;width:85%;text-align:center}.instructions-grid{grid-template-columns:1fr}.form-row{flex-direction:column}.settings-row{flex-direction:column;gap:10px}dialog{padding:25px}dialog h2{font-size:30px}.result-time{font-size:56px}.button-row{gap:7px}.button-row button{font-size:8px;padding:12px}.lap-splits{gap:20px}.lap-splits strong{font-size:15px}#replayBar{left:10px;right:10px;bottom:10px;flex-wrap:wrap;gap:7px}#replayBar>div{width:100%;max-width:none}#replayBar input{min-width:90px}#replayBar select{max-width:95px!important}.challenge-banner{font-size:10px}#toast{max-width:90%;width:90%;font-size:11px}}

/* v0.2 roll-cage / lifelines. Metal stays around the view, not across the road. */
#cageHUD{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.cage-outline{stroke:#0a1414;stroke-width:25;opacity:.96}.cage-tube{stroke:url(#tube);stroke-width:18}.cage-highlight{stroke:#a4b5a3;stroke-width:1.5;opacity:.65}.cage-bolts{fill:#a6b09a;stroke:#14241e;stroke-width:2}.cage-crack{display:none}.cage-crack.active{display:block}.crack-cut{fill:none;stroke:#080d0e;stroke-width:5;stroke-linejoin:miter}.crack-rust{fill:none;stroke:#ef9b66;stroke-width:2;stroke-linecap:round}.lifelines{display:flex;gap:7px;margin:13px 0 9px}.lifelines i{height:10px;flex:1;background:var(--lime);border:1px solid #edffd180;transform:skew(-12deg)}.lifelines i.broken{background:repeating-linear-gradient(120deg,#82442f 0 9px,#ed9868 10px 12px,#19251e 13px 16px);border-color:#ef9b66}.condition-block{width:253px}.condition-block strong{font-size:13px}.condition-block>span{font-size:8px;line-height:1.5}.condition-block.danger #carStatus,.condition-block.danger #condition{color:#ffa16f}#handlingReadout{font-size:9px;color:#dfddba;letter-spacing:1px}#handlingReadout.slipping{color:#ffab72}.race-hint{top:26%}.boost-meter i{transition:width .07s linear}.boost-block.firing .boost-meter i{background:#ffe69b}#wreckDialog{max-width:460px;border-color:#db9163}#wreckDialog .eyebrow{color:#efa06e}#wreckDialog h2 em{color:#efa06e;font-style:italic}.clock-block>span:nth-last-child(2){font-size:10px;color:var(--lime);letter-spacing:1px}
@media(max-width:800px){#handlingReadout{font-size:8px}.condition-block{width:190px}.condition-block strong{font-size:11px}.condition-block>span{font-size:7px}.cage-outline{stroke-width:20}.cage-tube{stroke-width:14}.race-hint{top:29%}}

#handlingReadout{position:fixed;left:45px;bottom:250px;padding:5px 7px;background:#13271b99;border-left:2px solid #b7c878;color:#eee8d3}#handlingReadout.slipping{border-color:#f4a36b}@media(max-width:800px){#handlingReadout{left:22px;bottom:220px}}
