@import url('./tokens.css');
.session-setup{display:flex;align-items:center;gap:1rem;padding:0 1rem .6rem;min-height:56px}.session-setup label{display:flex;gap:.5rem;align-items:center;font:.55rem var(--font-data);color:var(--muted)}.session-setup select{font:.75rem var(--font-body);color:var(--paper);background:#18201b;border:1px solid #53604d;padding:.55rem .65rem;max-width:100%;min-height:38px;cursor:pointer}.session-setup select:focus-visible{outline:2px solid var(--signal);outline-offset:2px}.session-setup>button{font:.7rem var(--font-data);min-height:38px;padding:.5rem .9rem;border-color:#bb613c}.session-setup>p{margin:0 0 0 auto;font:.65rem var(--font-data);color:var(--muted)}.sandbox-main .race-stage{height:calc(100svh - 214px)}
.opponents-hud{position:absolute;z-index:2;left:1.5rem;top:7rem;pointer-events:none;background:#0f1714d9;padding:.65rem .8rem;border-left:2px solid #d4d9c7;min-width:128px}.opponents-hud>div{display:flex;gap:1rem;align-items:center}.opponents-hud span{font:.5rem var(--font-data);color:#bcc6b8}.opponents-hud output{font:600 1.8rem/1 var(--font-display)}.opponents-hud ol{padding:0;margin:.5rem 0 0;list-style:none;display:grid;gap:.25rem}.opponents-hud li{font:.65rem var(--font-data);border-left:3px solid var(--rival);padding-left:.55rem;color:#cbd2c6}.opponents-hud .is-you{color:#fff;font-weight:700}.race-stage[data-presentation=grid] .opponents-hud{visibility:hidden}.contact-feedback{position:absolute;left:50%;top:70%;z-index:2;transform:translateX(-50%);padding:.35rem .65rem;font:.6rem var(--font-data);color:#ffd8b8;background:#742915dd;pointer-events:none}.race-stage[data-contact=true]{border-color:#ff935e}
*{box-sizing:border-box}body{margin:0;background:var(--ink);color:var(--paper);font:16px/1.5 var(--font-body)}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer;border:1px solid #53604d66;background:#111813cc}button:disabled{opacity:.4;cursor:wait}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--signal);outline-offset:3px}[hidden]{display:none!important}kbd{font:.7rem var(--font-data);border:1px solid #53604d;padding:.1rem .25rem;border-radius:2px}.skip{position:fixed;top:-80px;left:1rem;z-index:30;background:var(--paper);color:var(--ink);padding:1rem}.skip:focus{top:1rem}.monogram{font:600 2.6rem/1 var(--font-display);letter-spacing:-.07em}.monogram span{color:var(--signal)}
.sandbox-header{height:64px;padding:.5rem 2rem;border-bottom:var(--hairline);display:flex;align-items:center;gap:1.5rem}.sandbox-signature{font:.62rem/1.6 var(--font-data);color:var(--muted)}.sandbox-header nav{display:flex;align-items:center;gap:1.8rem;margin-left:auto;font-size:.8rem}.sandbox-header nav [aria-current]{color:var(--signal)}.sandbox-header nav span{font:.6rem var(--font-data)}.sandbox-main{padding:0 1rem}.sandbox-title{height:76px;padding:.7rem 1rem;display:flex;align-items:center;gap:2rem}.eyebrow{font:.6rem/1.5 var(--font-data);letter-spacing:.09em;color:var(--signal)}.sandbox-title h1{font:600 2.8rem/.9 var(--font-display);letter-spacing:-.025em;margin:.15rem 0}.sandbox-title em{font-style:normal}.sandbox-title>p{margin:0 0 0 auto;font:.65rem/1.7 var(--font-data);color:var(--muted)}.trial-badge{font:.65rem/1.7 var(--font-data);padding-left:1.5rem;border-left:var(--hairline);color:var(--muted)}
.race-stage{height:calc(100svh - 158px);min-height:520px;position:relative;background:#26322a;isolation:isolate;overflow:hidden;border:1px solid #4b5947}#race-view{position:absolute;inset:0}#race-view canvas{width:100%;height:100%;display:block;touch-action:pan-y}.race-loading{position:absolute;top:40%;width:100%;text-align:center;color:var(--muted)}.race-stage:after{content:'';position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(#10161180,transparent 18%,transparent 68%,#090f0bd9);box-shadow:inset 0 0 110px #0a100c22}
.race-hud{position:absolute;top:1.2rem;left:1.5rem;display:flex;gap:1.8rem;z-index:2;pointer-events:none;background:#0f1714bd;padding:.65rem 1rem;border-left:2px solid var(--signal);backdrop-filter:blur(8px)}.race-hud>div{display:flex;flex-direction:column}.race-hud span{font:.58rem/1.6 var(--font-data);letter-spacing:.05em;color:#a6b4a7}.race-hud output{font:600 2.3rem/1 var(--font-display);font-variant-numeric:tabular-nums}.race-hud>div:first-child output{color:var(--signal)}.sector-hud output{font-size:1.5rem;margin-top:.4rem}
.race-tools{position:absolute;z-index:4;right:1.2rem;top:1.2rem;display:flex;gap:.4rem}.race-tools>div{display:flex}.race-tools button{padding:.5rem .7rem;min-height:38px;font:.65rem var(--font-data);backdrop-filter:blur(8px)}.race-tools [aria-pressed=true]{border-color:#97b082;color:#c9ddb9}.race-tools button:hover{border-color:var(--signal)}#zoom-in,#zoom-out{font-size:1rem;min-width:34px}.track-map{position:absolute;top:4.5rem;right:1.2rem;z-index:2;width:145px;pointer-events:none;background:#101711a8;padding:.5rem}#minimap{display:block;width:100%}#map-road{fill:none;stroke:#bccbb0;stroke-width:5;stroke-linecap:round}#map-car{fill:var(--signal);stroke:white;stroke-width:2}.track-map>span{font:.52rem var(--font-data);display:block;text-align:center;color:#bcc7b6}.grip-hud{position:absolute;top:calc(4.5rem + 120px);right:1.2rem;z-index:2;width:145px;padding:.45rem .6rem;background:#101711bf;font:.5rem/1.6 var(--font-data);color:#c0cabc;pointer-events:none}.grip-hud>div{display:flex;align-items:center;gap:.35rem;margin-bottom:.2rem}.grip-hud i{--grip:1;display:block;width:38px;height:4px;background:#465142;overflow:hidden}.grip-hud i:after{content:'';display:block;height:100%;background:#bed798;transform:scaleX(var(--grip));transform-origin:left}.race-stage[data-handling=understeer] #front-grip:after,.race-stage[data-handling=oversteer] #rear-grip:after{background:var(--signal)}
.race-overlay{position:absolute;z-index:3;left:2rem;bottom:8.5rem;width:340px;max-width:calc(100% - 4rem);padding:1.3rem 1.6rem;background:#101914d9;border-left:2px solid var(--signal);backdrop-filter:blur(12px)}.race-overlay h2{font:600 3.7rem/.88 var(--font-display);letter-spacing:-.02em;margin:.7rem 0 1rem}.race-overlay p{font-size:.78rem;color:#b6c2b3;max-width:280px;margin:0 0 1rem}.primary-action{display:flex;justify-content:space-between;align-items:center;gap:1rem;width:100%;background:var(--signal);color:var(--ink);border:0;font-size:.85rem;font-weight:700;min-height:47px;padding:.7rem 1rem}.primary-action:hover{background:var(--paper)}.demo-action{font:.65rem var(--font-data);display:block;width:100%;margin-top:.6rem;padding:.7rem .35rem;min-height:38px}.medal-targets{display:block;margin-top:.9rem;color:#a6b29f;font:.5rem var(--font-data);letter-spacing:.02em}.demo-banner{position:absolute;z-index:5;top:6.4rem;left:1.5rem;color:#b8c7a5;font:.65rem var(--font-data);padding:.4rem .6rem;background:#101914cf}.demo-banner button{margin-left:.7rem;border-color:#708668;padding:.4rem .65rem;font:inherit;color:var(--paper)}.countdown{position:absolute;inset:35% 0 auto;text-align:center;font:600 8rem/.9 var(--font-display);color:var(--signal);z-index:4;pointer-events:none;text-shadow:0 5px 30px #000a}
.race-bottom{position:absolute;z-index:2;left:1.5rem;right:1.2rem;bottom:1.3rem;display:flex;align-items:end;gap:1.5rem}.dashboard{display:flex;align-items:center;gap:1rem;padding:.6rem .9rem;background:#101914dd;border:1px solid #75876b33;backdrop-filter:blur(10px)}.gear-box{border-right:1px solid #53604d88;padding-right:1rem;display:flex;flex-direction:column;align-items:center}.gear-box output{font:600 3.8rem/.9 var(--font-display);color:var(--signal)}.gear-box span{font:.5rem var(--font-data);color:#a7b39e}.speed-readout{display:flex;align-items:baseline;gap:.4rem;min-width:105px}.speed-readout output{font:600 3.8rem/.9 var(--font-display);font-variant-numeric:tabular-nums}.speed-readout>span{font:.55rem var(--font-data);color:#b8c4b0}.rev-readout{width:125px;align-self:center}#rpm-strip{--rpm:.13;width:100%;height:8px;background:#364130;overflow:hidden}#rpm-strip:after{content:'';display:block;width:100%;height:100%;background:linear-gradient(90deg,#aecb8c 65%,#f5bd58 65%,#f5bd58 83%,#ff6536 83%);transform:scaleX(var(--rpm));transform-origin:left}.rev-readout>span{font:.6rem var(--font-data);color:#b8c4b0;display:block;margin-top:.4rem}.pedal-readouts{height:38px;display:flex;gap:5px}.pedal-readouts i{--level:0;width:5px;height:100%;background:#364130;position:relative}.pedal-readouts i:after{content:'';position:absolute;inset:0;transform:scaleY(var(--level));transform-origin:bottom;background:#abc987}#pedal-brake:after{background:#ff6536}.race-bottom>p{font:.62rem/1.6 var(--font-data);color:#bac6b3;margin:0 auto .5rem 0;max-width:235px}.race-actions{display:flex;gap:.4rem}.race-actions button{font-size:.72rem;min-height:39px;padding:.5rem .7rem}.race-actions kbd{margin-left:.3rem}.race-stage[data-offroad=true]{border-color:var(--signal)}.race-stage[data-offroad=true] #race-message{color:var(--signal)}.drift-hud{position:absolute;right:1.4rem;top:calc(4.5rem + 183px);z-index:2;display:flex;flex-direction:column;text-align:right;opacity:.65;pointer-events:none}.drift-hud output{font:600 2.8rem/1 var(--font-display)}.drift-hud span{font:.52rem var(--font-data);letter-spacing:.05em}.drift-hud.is-active{color:var(--signal);opacity:1;transform:scale(1.06);transform-origin:right center}
.touch-controls{display:none;justify-content:space-between;gap:.5rem;margin-top:.5rem;user-select:none}.touch-controls>div{display:flex;gap:.35rem}.touch-controls button{min-width:51px;min-height:52px;padding:.5rem .65rem;touch-action:none;user-select:none;-webkit-user-select:none;font:600 .8rem var(--font-body)}.touch-controls button[data-drive=left],.touch-controls button[data-drive=right]{font-size:1.4rem}.touch-controls .pedal-gas{background:var(--signal);border-color:var(--signal);color:var(--ink)}.touch-controls .pedal-drift{color:#c5d9b0;border-color:#8b9e7b;font-size:.65rem}.touch-controls button.is-held{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.race-instructions{display:flex;justify-content:space-between;gap:2rem;align-items:start;padding:1rem 1rem 1.5rem;font-size:.72rem;color:var(--muted)}.race-instructions p{margin:0}.race-instructions p:first-child{display:flex;flex-direction:column;gap:.4rem}.race-instructions p>span>span{margin-left:.5rem}.race-instructions>a{white-space:nowrap;border-bottom:var(--hairline)}.penalty{color:var(--signal)}.sandbox-footer{display:flex;justify-content:space-between;gap:2rem;padding:1rem 2rem;border-top:var(--hairline);font:.6rem var(--font-data);color:var(--muted)}.no-script{padding:1rem;border:1px solid var(--signal)}
@media(pointer:coarse){.touch-controls{display:flex}.race-instructions p:first-child>span:last-child{display:none}.race-instructions .eyebrow:after{content:' / MAINTIENS LES COMMANDES'}}
@media(max-width:1000px){.rev-readout{width:85px}.race-tools{top:6.5rem;left:1.5rem;right:auto}.track-map{top:1.2rem}.grip-hud{top:calc(1.2rem + 120px)}.drift-hud{top:calc(1.2rem + 180px)}.demo-banner{top:9.5rem}.race-bottom>p{max-width:160px;font-size:.55rem}.race-bottom{gap:.8rem}.dashboard{gap:.65rem}.race-instructions{gap:1rem}}
@media(max-width:700px){.sandbox-header{height:54px;padding:.5rem 1rem}.sandbox-signature{display:none}.sandbox-header nav{gap:1rem;font-size:.75rem}.sandbox-header nav a:last-child{display:none}.sandbox-title{height:67px;padding:.5rem 0;gap:1rem}.sandbox-title h1{font-size:2.4rem}.sandbox-title>p{font-size:.52rem;max-width:145px}.trial-badge{display:none}.sandbox-main{padding:0 .65rem}.race-stage{height:calc(100svh - 194px);min-height:460px}.race-hud{top:.75rem;left:.7rem;gap:1rem;padding:.5rem .6rem}.race-hud span{font-size:.46rem}.race-hud output{font-size:1.75rem}.sector-hud{display:none!important}.race-tools{top:5.4rem;left:.7rem;gap:.3rem;right:.7rem;justify-content:start}.race-tools button{font-size:.53rem;padding:.35rem .45rem;min-height:32px}#zoom-in,#zoom-out{font-size:.85rem;min-width:28px}.track-map{top:8.4rem;right:.7rem;width:92px;background:#10171177}.track-map>span{font-size:.41rem}.grip-hud{top:calc(8.4rem + 73px);right:.7rem;width:92px;font-size:.41rem;padding:.3rem .4rem}.grip-hud i{width:23px}.grip-hud>div{gap:.2rem}.drift-hud{top:calc(8.4rem + 119px);right:.7rem}.drift-hud output{font-size:1.9rem}.drift-hud span{font-size:.43rem}.race-overlay{bottom:6.5rem;left:.7rem;right:.7rem;max-width:calc(100% - 1.4rem);width:auto;padding:.9rem 1rem}.race-overlay h2{font-size:2.65rem;margin:.4rem 0 .7rem}.race-overlay h2 br{display:none}.race-overlay p{font-size:.68rem;margin-bottom:.7rem;max-width:none}.race-overlay .eyebrow{font-size:.5rem}.medal-targets{font-size:.45rem;margin-top:.6rem}.demo-action{min-height:32px;padding:.5rem;font-size:.56rem}.primary-action{min-height:41px;font-size:.76rem;padding:.5rem .7rem}.demo-banner{top:8.1rem;left:.7rem;font-size:.48rem;max-width:calc(100% - 1.4rem)}.demo-banner button{margin-left:.3rem;padding:.35rem .4rem}.race-bottom{left:.7rem;right:.7rem;bottom:.65rem;gap:.45rem;flex-wrap:wrap}.dashboard{padding:.5rem .6rem;gap:.6rem;flex:1}.gear-box{padding-right:.6rem}.gear-box output{font-size:2.8rem}.speed-readout{min-width:72px}.speed-readout output{font-size:2.8rem}.rev-readout{width:70px;flex:1}.pedal-readouts{height:29px}.race-bottom>p{order:-1;flex-basis:100%;max-width:none;font-size:.5rem;margin:0;text-align:left}.race-actions{flex-direction:column;gap:.3rem}.race-actions button{min-height:29px;padding:.25rem .45rem;font-size:.55rem}.race-actions kbd{display:none}.touch-controls{display:flex}.touch-controls button{min-width:46px;padding:.5rem .5rem}.race-instructions{flex-wrap:wrap;padding:.85rem .3rem 1rem}.race-instructions p:first-child{width:100%}.race-instructions p>span>span{display:inline-block;margin-top:.3rem}.race-instructions>a{margin-left:auto}.sandbox-footer{padding:1rem;gap:1rem}.sandbox-footer>span:nth-child(2){display:none}.countdown{top:36%;font-size:6rem}}
@media(max-height:500px) and (orientation:landscape){.sandbox-header{height:43px;padding:.25rem 1rem}.sandbox-header .monogram{font-size:2rem}.sandbox-title{height:44px;padding:.35rem .5rem}.sandbox-title h1{font-size:2rem}.sandbox-title .eyebrow{display:none}.sandbox-title>p,.trial-badge{font-size:.5rem}.race-stage{height:calc(100svh - 151px);min-height:185px}.race-hud{top:.5rem;left:.6rem;padding:.3rem .5rem;gap:.9rem}.race-hud span{font-size:.42rem}.race-hud output{font-size:1.4rem}.sector-hud{display:none!important}.race-tools{top:.5rem;right:.6rem;left:auto;gap:.2rem}.race-tools button{min-height:28px;font-size:.48rem;padding:.25rem .4rem}#zoom-in,#zoom-out{font-size:.8rem;min-width:24px}.track-map,.grip-hud,.drift-hud{display:none}.race-overlay{bottom:auto;top:29%;left:1rem;padding:.5rem .75rem;width:240px;max-width:43%}.race-overlay h2{font-size:1.8rem;margin:.2rem 0 .4rem}.race-overlay h2 br{display:none}.race-overlay .eyebrow,.race-overlay p,.medal-targets{display:none}.primary-action{min-height:32px;font-size:.65rem;padding:.35rem .5rem}.demo-action{min-height:26px;font-size:.48rem;margin-top:.3rem;padding:.25rem}.race-bottom{bottom:.5rem;left:.6rem;right:.6rem;gap:.5rem}.dashboard{padding:.35rem .5rem;gap:.6rem}.gear-box{padding-right:.5rem}.gear-box output,.speed-readout output{font-size:2.1rem}.speed-readout{min-width:65px}.rev-readout{width:80px}.rev-readout>span{font-size:.45rem}.pedal-readouts{height:24px}.race-bottom>p{max-width:150px;font-size:.45rem}.race-actions{flex-direction:row}.race-actions button{min-height:29px;font-size:.56rem;padding:.3rem .45rem}.race-actions kbd{display:none}.demo-banner{top:3.7rem;left:auto;right:.6rem;font-size:.48rem}.demo-banner button{padding:.25rem .4rem}.countdown{top:30%;font-size:4rem}.touch-controls{display:flex;margin-top:.4rem}.touch-controls button{min-height:44px;padding:.35rem .6rem}.race-instructions{padding-top:.7rem}}
#aid-tc,#aid-abs{font-weight:400;color:#597056;margin-left:.4rem;font-size:.5rem}#aid-tc.active,#aid-abs.active{color:#ffc269}

/* Driving feedback stays beside the instruments, leaving the road clear. */
.race-bottom>#race-message{font:500 .875rem/1.35 var(--font-body);max-width:310px;background:#101914e8;padding:.5rem .7rem;margin-bottom:0;border-left:2px solid #75876b}
#drive-message{display:block;font-weight:600}#corner-info{display:block;font-size:.875rem;color:#c3cabb;margin-top:.2rem}
.race-stage[data-advice=brake] #race-message{border-color:var(--signal);color:#ff966e}
.race-stage[data-advice=approach] #race-message,.race-stage[data-advice=steering] #race-message{border-color:#ffd387;color:#ffd387}
#steering-status{display:block;line-height:1.35;margin-top:.25rem;color:#c3cabb}
.race-stage[data-steering-limited=true] #steering-status,.race-stage[data-steering-limited=true] #grip-status{color:#ffd387}
.grip-hud{font-size:.625rem;width:155px}.grip-hud i{flex:1}
@media(max-width:1000px){.race-bottom>#race-message{max-width:210px}.drift-hud{top:calc(1.2rem + 194px)}}
@media(max-width:700px){.race-bottom>#race-message{max-width:none;flex-basis:100%;padding:.4rem .6rem;font-size:.875rem}#corner-info{display:inline;margin-left:.4rem}.grip-hud{width:112px;font-size:.55rem}.drift-hud{top:calc(8.4rem + 143px)}}
@media(max-height:500px) and (orientation:landscape){.race-bottom>#race-message{font-size:.75rem;max-width:240px;flex-basis:auto;padding:.3rem .5rem}#corner-info{font-size:.75rem;margin-left:0;display:block}}

@media(max-height:500px) and (orientation:landscape){.race-stage:is([data-phase="ready"],[data-phase="paused"],[data-phase="finished"]) .dashboard{visibility:hidden}}

/* A quiet pre-grid shot; the driving instruments return on the countdown. */
.race-stage[data-presentation="grid"] :is(.race-hud,.track-map,.grip-hud,.drift-hud,.race-bottom){visibility:hidden}
.race-stage[data-presentation="grid"] .race-overlay{background:linear-gradient(110deg,#0c1419f2,#0c1419bd);border-color:#e8834e}
@media(min-width:701px) and (max-width:1000px) and (min-height:501px){
 .race-stage[data-presentation="grid"] .race-overlay{left:50%;transform:translateX(-50%);bottom:2rem;width:440px;padding:1rem 1.4rem}
 .race-stage[data-presentation="grid"] .race-overlay h2{font-size:2.8rem;margin:.5rem 0 .7rem}
 .race-stage[data-presentation="grid"] .race-overlay h2 br{display:none}
 .race-stage[data-presentation="grid"] .race-overlay p{max-width:none}
}
.sandbox-main .session-setup select{border-radius:0}
@media(max-width:1100px){.session-setup>p{display:none}}
@media(min-width:701px) and (max-width:1000px){.opponents-hud{top:10rem}.race-stage[data-demo=true] .opponents-hud{top:12rem}}
@media(max-width:700px){.session-setup{padding:0 0 .5rem;gap:.4rem;min-height:70px}.session-setup label{flex:1;min-width:0;display:block;font-size:.48rem}.session-setup select{width:100%;display:block;margin-top:.2rem;padding:.5rem .3rem;font-size:.67rem}.session-setup>button{font-size:.58rem;padding:.4rem .45rem;margin-top:.85rem}.sandbox-main .race-stage{height:calc(100svh - 264px);min-height:470px}.opponents-hud{top:.75rem;left:auto;right:.7rem;min-width:0;padding:.45rem .55rem}.opponents-hud>div{display:block}.opponents-hud span{display:block;font-size:.42rem}.opponents-hud output{font-size:1.5rem}.opponents-hud ol{display:none}.race-stage[data-mode=race] .race-hud{gap:.8rem}}
@media(max-height:500px) and (orientation:landscape){.session-setup{min-height:42px;padding-bottom:.2rem}.session-setup label{display:flex}.session-setup select{min-height:28px;padding:.2rem}.session-setup>button{min-height:28px;margin:0}.sandbox-main .race-stage{height:calc(100svh - 193px);min-height:210px}.opponents-hud{top:3.5rem;left:auto;right:.6rem;padding:.3rem .5rem}.opponents-hud ol{display:none}.opponents-hud output{font-size:1.3rem}.opponents-hud span{font-size:.42rem}}
@media(min-width:1001px){.race-stage[data-demo=true] .opponents-hud{top:10rem}}
