:root{color-scheme:dark;--bar:56px;--controls:84px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px)}*{box-sizing:border-box;font-family:system-ui,sans-serif}html,body{width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none;background:#03060c;color:#d8edff}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}button,select,.game-bar a{color:#d8edff;background:#0c1c2d;border:1px solid #427298;border-radius:4px;cursor:pointer;min-height:44px;font:600 13px system-ui;padding:8px 13px}button:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid #9edfff;outline-offset:2px}button:disabled{opacity:.45;cursor:default}[hidden]{display:none!important}.game-bar{height:calc(var(--bar) + var(--safe-top));padding:calc(6px + var(--safe-top)) calc(12px + var(--safe-right)) 6px calc(12px + var(--safe-left));display:flex;align-items:center;justify-content:space-between;gap:8px;background:#07111f;border-bottom:1px solid #25425e}.game-bar a{display:flex;align-items:center;text-decoration:none;white-space:nowrap}.game-bar>strong{color:#9edfff;font:700 16px system-ui;letter-spacing:.1em}.game-bar>strong span{font:10px system-ui;letter-spacing:0;color:#8ea3bb}.game-bar>div{display:flex;gap:6px}.game-bar button{min-width:44px}.game-bar #install{background:linear-gradient(#164166,#0a2239);border-color:#5786a9}#race{top:calc(var(--bar) + var(--safe-top));bottom:calc(var(--controls) + var(--safe-bottom));left:var(--safe-left);right:var(--safe-right);isolation:isolate}#selectLevel{left:12px;top:10px;font-size:12px}#level-select{font-size:12px;max-width:min(240px,calc(100vw - 130px));min-height:44px;padding:8px;background:#07111fe8}#time{right:12px;top:20px;font:600 19px monospace;color:#f1f7ff}#highscores{top:auto;bottom:12px;left:12px;margin:0;width:auto;max-height:none;color:#b4c4d8;font-size:11px;pointer-events:none}#acceleration{right:12px;top:auto;bottom:12px;background:#102134;width:84px}#acceleration .value{background:#66bfff}.route-hud{position:absolute;top:66px;left:12px;z-index:10;display:flex;align-items:center;gap:12px;background:#03060cc9;padding:5px 10px;border-radius:4px;pointer-events:none}.route-hud span{font:11px monospace}#direction{display:inline-block;font-size:24px;color:#8fdcff}#progress{color:#b4c4d8}.controls{position:absolute;bottom:0;left:0;right:0;height:calc(var(--controls) + var(--safe-bottom));background:#07111f;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:10px calc(12px + var(--safe-right)) calc(10px + var(--safe-bottom)) calc(12px + var(--safe-left));border-top:1px solid #25425e;gap:12px;user-select:none;-webkit-user-select:none}.actions,.touch-controls{display:flex;gap:10px;align-items:center}.steering{grid-column:1;grid-row:1}.actions{grid-column:2;grid-row:1}.thrust{grid-column:3;grid-row:1;justify-content:flex-end}.touch-controls button{touch-action:none;width:58px;height:56px;min-width:44px;font-size:24px}.touch-controls button:active,.touch-controls button.pressed{background:#4fb6ff;color:#03060c}.actions #start{background:#154569;border-color:#71b3dd;min-width:110px}.actions #pause{min-width:83px}#finish{position:absolute;z-index:11;top:45%;left:50%;transform:translate(-50%,-50%);background:#07111fee;border:1px solid #4fb6ff;padding:20px;text-align:center;width:min(88%,360px);pointer-events:none}#finish strong{font:32px monospace;color:#8fdcff}#finish p{font-size:13px}dialog{color:#d8edff;background:#081627;border:1px solid #427298;border-radius:8px;width:min(92vw,470px);max-height:88dvh;overflow:auto;padding:30px;box-shadow:0 20px 80px #000b}dialog::backdrop{background:#02060cbb;backdrop-filter:blur(4px)}dialog h1{font:500 27px system-ui;margin:18px 0}dialog p{font:14px/1.8 system-ui;color:#b4c4d8}.dialog-close{float:right;min-width:44px;font-size:23px;padding:4px}.eyebrow{font:10px monospace;letter-spacing:.08em;text-transform:uppercase}.standalone-link{display:block;color:#9edfff;font-size:13px;margin-top:20px}#offline-status{color:#8fdcff;font-size:12px}#native-install{background:#165483;width:100%}
@media(max-width:650px) and (min-height:501px){:root{--controls:144px}.controls{grid-template-columns:1fr 1fr;grid-template-rows:44px 56px;gap:12px}.actions{grid-column:1/-1;grid-row:1;justify-content:center}.steering{grid-column:1;grid-row:2}.thrust{grid-column:2;grid-row:2}.game-bar>strong span{display:none}}
@media(max-width:400px){.game-bar{padding-right:6px;padding-left:6px;gap:5px}.game-bar button,.game-bar a{padding:8px;min-height:44px;font-size:11px}.game-bar>div{gap:4px}.game-bar>strong{font-size:13px}.touch-controls{gap:8px}.touch-controls button{width:54px}.controls{padding-left:12px;padding-right:12px}#highscores{font-size:10px}#acceleration{width:62px}#level-select{max-width:calc(100vw - 105px);font-size:11px}#time{font-size:17px}}
@media(max-height:500px){:root{--bar:50px;--controls:72px}.game-bar>strong span{display:none}.game-bar{padding-top:calc(3px + var(--safe-top));padding-bottom:3px}.controls{gap:8px;padding-top:6px;padding-bottom:calc(6px + var(--safe-bottom))}.touch-controls button{height:48px;width:52px}.actions #start{min-width:98px}.actions #pause{min-width:76px}.actions,.touch-controls{gap:6px}.route-hud{top:58px;padding:3px 8px}#selectLevel{top:6px}#time{top:17px}#finish{padding:10px;top:55%}#finish p{margin:5px 0}#finish strong{font-size:24px}}
@media(max-width:490px) and (max-height:500px){:root{--controls:128px}.controls{grid-template-columns:1fr 1fr;grid-template-rows:44px 48px;gap:8px}.actions{grid-column:1/-1;grid-row:1;justify-content:center}.steering{grid-column:1;grid-row:2}.thrust{grid-column:2;grid-row:2}}

/* Signature Fallen Galaxy Race et panneaux biseautés, dans la DA du site. */
:root{--bar:68px}
.game-bar{background:linear-gradient(180deg,#0a1726,#040d18);border-bottom:1px solid #34556e;box-shadow:0 3px 15px #0005}
.game-bar .race-brand{display:flex;flex-direction:row;gap:18px;align-items:center;min-width:0;padding:0;border:0;background:none;text-decoration:none;clip-path:none;min-height:44px}
.race-brand-main{display:block;width:190px;height:auto}
.race-brand-edition{display:block;width:87px;height:auto}
button{position:relative;isolation:isolate;border:0;border-radius:0;background:linear-gradient(135deg,#5789a7,#244f6c 40%,#15374f 75%,#528eaf);clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);color:#e7f4ff;letter-spacing:.035em;text-shadow:0 1px 2px #000}
button::before{content:"";position:absolute;inset:1px;z-index:-1;pointer-events:none;clip-path:polygon(6.5px 0,100% 0,100% calc(100% - 6.5px),calc(100% - 6.5px) 100%,0 100%,0 6.5px);background:repeating-linear-gradient(0deg,transparent 0 2px,#7cc7f009 2px 3px),linear-gradient(180deg,#11324c,#081e31 46%,#061523 53%,#103955)}
button:hover:not(:disabled){filter:brightness(1.2)}
button:focus-visible{outline:none;filter:brightness(1.55);background:#b7e6ff}
.game-bar .race-brand:focus-visible{outline:2px solid #9edfff;outline-offset:3px}
.game-bar #install{background:linear-gradient(135deg,#75b7d9,#376e92 50%,#204a69)}
.actions #start{border:0;background:linear-gradient(135deg,#99dfff,#3b8abb 50%,#73b6db);text-transform:uppercase;font-size:11px;letter-spacing:.07em}
.actions #start::before{background:repeating-linear-gradient(0deg,transparent 0 2px,#7cc7f00a 2px 3px),linear-gradient(#17476a,#09243d 48%,#0c3554)}
.game-bar button,.actions button{border:0}
.touch-controls button{font-weight:500}
.touch-controls button:active,.touch-controls button.pressed{background:#c4edff;color:#fff}
.touch-controls button:active::before,.touch-controls button.pressed::before{background:linear-gradient(#255c80,#133d5b)}
#level-select{border-radius:0;border-color:#3b637f;background:linear-gradient(#0b2439,#051421);color:#d3e8f8}
#finish{clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);border-color:#487f9f;background:#071726f2}
@media(max-width:650px){:root{--bar:64px}.game-bar .race-brand{flex-direction:column;align-items:flex-start;justify-content:center;gap:0}.race-brand-main{width:122px}.race-brand-edition{width:53px;align-self:flex-end;margin-top:-1px}.game-bar{padding-top:calc(4px + var(--safe-top));padding-bottom:4px}}
@media(max-width:400px){.race-brand-main{width:108px}.race-brand-edition{width:48px}.game-bar .game-tools{gap:5px}}
@media(max-height:500px){:root{--bar:52px}.game-bar .race-brand{flex-direction:row;gap:10px}.race-brand-main{width:145px}.race-brand-edition{width:62px;align-self:center;margin:0}}
@media(max-width:490px) and (max-height:500px){.game-bar .race-brand{flex-direction:column;gap:0}.race-brand-main{width:103px}.race-brand-edition{width:43px;align-self:flex-end}}
/* Tableaux de résultats, accessibles sans interrompre les commandes tactiles. */
#history-open{position:absolute;bottom:12px;left:12px;z-index:8;font-size:11px;padding:8px 12px;min-height:44px}
#scores-dialog{width:min(920px,calc(100vw - 24px));max-width:920px;max-height:calc(100dvh - 24px);box-sizing:border-box;overflow:auto}
#publish-dialog{max-height:calc(100dvh - 24px);overflow:auto}
.scores-filters{display:flex;flex-wrap:wrap;align-items:end;gap:12px}.scores-filters label{display:flex;flex:1 1 150px;flex-direction:column;gap:6px;font-size:12px}
.scores-filters select,#publish-pseudo{color:#e4eef7;background:#0a1c2c;border:1px solid #41617c;border-radius:0;padding:10px;min-height:44px;max-width:100%;box-sizing:border-box}
.scores-table-wrap{overflow-x:auto;max-height:45dvh}.scores-table-wrap table{border-collapse:collapse;width:100%;font-size:12px;text-align:left}.scores-table-wrap th,.scores-table-wrap td{padding:12px 9px;border-bottom:1px solid #45617a55;white-space:nowrap}.scores-table-wrap th{color:#99cbea}
.score-note,#publish-form p{font-size:12px;line-height:1.6}.scores-actions{display:flex;flex-wrap:wrap;gap:10px}.consent-row{display:flex;align-items:flex-start;gap:12px;margin:18px 0;font-size:13px;line-height:1.6}.consent-row input{margin-top:4px;min-width:20px;min-height:20px}#publish-pseudo{display:block;width:100%;margin-top:8px}#scores-status,#publish-status{font-size:13px;line-height:1.6;color:#c1e8ff}#scores-dialog a,#publish-dialog a{color:#8fdcff}#delete-confirm{border:1px solid #6e5265;padding:15px;margin-top:16px}
@media(max-width:600px){.game-tools{gap:4px}.game-tools #scores-open{font-size:10px;padding:8px;min-width:44px}.race-brand-edition{display:none!important}.game-bar .race-brand-main{width:120px}#scores-dialog,#publish-dialog{padding:22px 16px}.scores-table-wrap{max-height:36dvh}}
/* Audit UI : police commune au site, commandes aérées et cibles tactiles. */
:root{--font-ui:"Segoe UI",system-ui,-apple-system,"Helvetica Neue",Roboto,Arial,sans-serif;--font-mono:ui-monospace,"SFMono-Regular",Consolas,monospace;--controls:96px}
body,button,select,input,label,a,dialog,dialog p,dialog h1{font-family:var(--font-ui)}button,select,input{font-size:13px}button,.race-link-button{min-height:48px;padding:12px 18px;line-height:1.3;font-weight:600}
.game-bar #install,.game-bar #scores-open{font-family:var(--font-ui);font-size:12px;padding:12px 16px}.game-bar button{flex-shrink:0}
#level-select,.scores-filters select{appearance:none;-webkit-appearance:none;padding:12px 42px 12px 16px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='12' viewBox='0 0 16 12'%3E%3Cpath d='m3 4 5 5 5-5' fill='none' stroke='%2399cbe5' stroke-width='1.5'/%3E%3C/svg%3E"),linear-gradient(#0b2439,#051421);background-repeat:no-repeat;background-position:right 14px center,0 0;background-size:16px 12px,auto;min-height:48px;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px)}
#level-select{width:250px;max-width:calc(100vw - 108px);font-size:12px}
#time{font-family:var(--font-mono);font-size:18px;top:24px}.route-hud{top:72px;border-radius:0;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);padding:8px 14px}
.touch-controls{gap:12px}.touch-controls button{width:64px;height:64px;min-width:64px;min-height:64px;padding:12px;font-size:28px}.actions button{min-height:48px;padding:12px 18px}.controls{gap:14px;padding:12px calc(16px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(16px + var(--safe-left))}
.race-secondary-actions{position:absolute;bottom:14px;left:14px;right:14px;display:flex;gap:10px;z-index:10;pointer-events:none}.race-secondary-actions button{pointer-events:auto;font-size:12px;min-height:46px;padding:12px 18px}
.race-secondary-actions #history-open{position:static;font-size:12px;padding:12px 18px;min-height:46px}
#highscores{bottom:74px;left:14px;padding:7px 11px;background:#06101dd9;border:1px solid #49627b55;font:11px/1.4 var(--font-ui);max-width:calc(100% - 120px);text-align:left}
#acceleration{bottom:80px;right:16px}#finish{pointer-events:auto;padding:24px;max-height:calc(100% - 28px);overflow:auto}#finish button{margin-top:8px}
dialog{border-radius:0;box-shadow:inset 3px 0 #40627b,0 20px 80px #000b;background:linear-gradient(145deg,#122537,#081421 65%);padding:30px;scrollbar-color:#436681 #07111f}
dialog h1{line-height:1.25;font-weight:500;font-size:26px}dialog p{font-size:14px;line-height:1.7}dialog .dialog-close{min-width:48px;min-height:48px;margin:0 0 12px 16px;font-size:24px;padding:8px}
#publish-pseudo,#invite-link{font:16px var(--font-ui);padding:14px 16px;min-height:50px;color:#e8f0fa;background:#07111f;border:1px solid #52728c;width:100%;box-sizing:border-box;border-radius:0}
.invite-actions{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.race-link-button{display:inline-flex;align-items:center;color:#e8f0fa;background:linear-gradient(#164365,#092137);border:1px solid #4d7898;clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px);text-decoration:none;font-size:13px}
#challenge-notice{position:absolute;top:126px;left:14px;right:14px;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:#142c3cdd;border-left:2px solid #b58a55;max-width:450px}#challenge-text{font:12px/1.5 var(--font-ui)}#challenge-dismiss{min-width:44px;min-height:44px;padding:8px}
.race-escort{position:absolute;z-index:3;width:80px;height:58px;pointer-events:none;background:url(style/images/ship.png) 0 0/auto 40px no-repeat;opacity:.55;animation:escort-drift 26s ease-in-out infinite alternate}.race-escort::after{content:"";position:absolute;top:18px;left:37px;width:40px;height:40px;background:url(style/images/ship.png) 0 0 no-repeat;opacity:.65}#race:not([data-motion="on"]) .race-escort{animation-play-state:paused}
@keyframes escort-drift{from{transform:translate3d(0,0,0)}to{transform:translate3d(220px,-120px,0)}}
@media(prefers-reduced-motion:reduce){.race-escort{animation:none}}
@media(max-width:650px) and (min-height:501px){:root{--bar:110px;--controls:164px}.game-bar{display:flex;flex-direction:column;justify-content:center;gap:8px;padding:8px 12px}.game-bar .race-brand{flex:0 0 32px;min-height:32px;justify-content:center}.game-bar .race-brand-main{width:140px}.game-bar .game-tools{display:flex;justify-content:center;gap:6px;width:100%}.game-bar .game-tools button{min-height:44px;padding:10px 12px}.game-bar .game-tools #scores-open,.game-bar .game-tools #install{padding:10px 12px;font-size:12px}.controls{grid-template-rows:48px 64px;gap:12px;padding:14px 14px calc(14px + var(--safe-bottom))}.touch-controls{gap:10px}}
@media(max-height:500px){:root{--bar:58px;--controls:88px}.game-bar .race-brand-main{width:140px}.race-brand-edition{display:none}.game-bar .game-tools button{min-height:44px;padding:10px 13px}.touch-controls button{width:60px;height:60px;min-width:60px;min-height:60px}.controls{gap:10px;padding-top:10px;padding-bottom:calc(10px + var(--safe-bottom))}.route-hud{top:64px;padding:4px 12px}#challenge-notice{top:108px}#finish{top:50%;padding:14px}#finish p{margin:6px 0}}
@media(max-width:400px){.touch-controls button{width:60px;min-width:60px}.race-secondary-actions button,.race-secondary-actions #history-open{font-size:11px;padding:12px 15px}.race-secondary-actions{gap:8px}}
@media(max-width:490px) and (max-height:500px){:root{--bar:100px;--controls:152px}.game-bar{flex-direction:column;justify-content:center;gap:6px}.game-bar .race-brand{min-height:28px;flex-direction:row}.game-bar .race-brand-main{width:130px}.game-bar .game-tools{gap:5px}.game-bar .game-tools button{padding:9px 11px;min-height:44px}.controls{grid-template-rows:48px 60px;gap:10px}}
@media(max-width:650px) and (min-height:501px){:root{--bar:118px}.game-bar .race-brand{min-height:44px;flex-basis:44px}.game-bar{padding:calc(8px + var(--safe-top)) calc(12px + var(--safe-right)) 8px calc(12px + var(--safe-left))}}
/* Paysage bas : séparer les informations plutôt que superposer les panneaux. */
@media(max-height:500px) and (min-width:491px){#highscores{top:64px;bottom:auto;left:auto;right:14px;max-width:calc(100% - 280px);font-size:10px}#acceleration{bottom:30px;right:16px}.route-hud{max-width:230px}#challenge-notice{top:64px;left:auto;right:14px;max-width:calc(100% - 290px);padding:6px 10px}#race:has(#challenge-notice:not([hidden])) #highscores{display:none}}
/* Commande unique : joystick au pouce, clavier conservé sur ordinateur. */
:root{--controls:132px}
.controls{display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:1fr;gap:20px;padding:12px calc(20px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(20px + var(--safe-left))}
.controls .actions{grid-column:2;grid-row:1;flex-direction:row;justify-content:center;gap:12px;align-items:center}
.keyboard-hint{grid-column:1;grid-row:1;font:11px/1.8 var(--font-mono);letter-spacing:.08em;color:#91b1c9}.keyboard-hint span{font:12px var(--font-ui);letter-spacing:0;color:#b4c4d8}
#joystick{grid-column:3;grid-row:1;justify-self:end;position:relative;width:108px;height:108px;min-width:108px;min-height:108px;margin:0;padding:0;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;overflow:visible;background:linear-gradient(135deg,#446b84,#0c263b 70%,#315773);clip-path:polygon(14px 0,100% 0,100% calc(100% - 14px),calc(100% - 14px) 100%,0 100%,0 14px)}
#joystick::before{inset:1px;clip-path:polygon(13px 0,100% 0,100% calc(100% - 13px),calc(100% - 13px) 100%,0 100%,0 13px);background:radial-gradient(ellipse at center,#10374c,#061624 75%)}
.joystick-ring{position:absolute;inset:10px;border:1px solid #527e9a88;border-radius:50%;box-shadow:inset 0 0 18px #0006;pointer-events:none}.joystick-crosshair{position:absolute;inset:8px;background:linear-gradient(90deg,transparent calc(50% - .5px),#82a4ba44 50%,transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),#82a4ba44 50%,transparent calc(50% + .5px));border-radius:50%}
#joystick-knob{position:absolute;top:calc(50% - 23px);left:calc(50% - 23px);width:46px;height:46px;border:1px solid #709ab5;border-radius:50%;background:radial-gradient(ellipse at 35% 25%,#49738c,#193d56 55%,#0a2033);box-shadow:0 3px 9px #0009,inset 0 1px 2px #c3e5f544;pointer-events:none;will-change:transform}
#joystick.is-active{cursor:grabbing;background:#8ec5e4;filter:none}#joystick.is-active #joystick-knob{border-color:#b0d9ef}#joystick:disabled{opacity:.4;cursor:default}#joystick:focus-visible{background:#bcdef3;filter:brightness(1.25)}
@media(max-width:650px) and (min-height:501px){:root{--controls:140px}.controls{grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr;gap:18px;padding:14px calc(16px + var(--safe-right)) calc(14px + var(--safe-bottom)) calc(16px + var(--safe-left))}.keyboard-hint{display:none}.controls .actions{grid-column:1;grid-row:1;flex-direction:column;align-items:flex-start;gap:10px}.controls .actions button{width:132px;min-height:48px}.controls #joystick{grid-column:2;grid-row:1;width:112px;height:112px;min-width:112px;min-height:112px}}
@media(max-height:500px){:root{--controls:104px}.controls{grid-template-columns:1fr auto;grid-template-rows:1fr;gap:16px;padding:10px calc(16px + var(--safe-right)) calc(10px + var(--safe-bottom)) calc(16px + var(--safe-left))}.keyboard-hint{display:none}.controls .actions{grid-column:1;grid-row:1;justify-content:flex-start;flex-direction:row;gap:12px}.controls #joystick{grid-column:2;grid-row:1;width:84px;height:84px;min-width:84px;min-height:84px}.joystick-ring{inset:7px}#joystick-knob{width:40px;height:40px;left:calc(50% - 20px);top:calc(50% - 20px)}}
@media(max-width:490px) and (max-height:500px){:root{--controls:126px}.controls .actions{flex-direction:column;align-items:flex-start;gap:8px}.controls .actions button{width:130px}.controls #joystick{width:100px;height:100px;min-width:100px;min-height:100px}}
/* Défi : largeur du contenu et bordure bleu acier. */
#challenge-notice{width:fit-content;max-width:calc(100% - 28px);right:auto;border-left-color:#34556e;gap:12px;padding:7px 10px 7px 13px}
@media(max-height:500px) and (min-width:491px){#challenge-notice{left:auto;right:14px;max-width:calc(100% - 280px)}}
/* Circuits 3–5 : stations et flottes du jeu historique, atlas partagé de quelques Ko. */
.race-scenery{position:absolute;width:50px;height:50px;z-index:3;background-image:url(assets/legacy-fleets.webp);background-repeat:no-repeat;pointer-events:none;opacity:.85}
.scenery-planet{width:100px;height:100px;background-image:url(style/images/planets.png);opacity:.75}
.scenery-moving{animation:legacy-convoy 28s ease-in-out infinite alternate;animation-play-state:paused}
#race[data-motion="on"] .scenery-moving.scenery-visible{animation-play-state:running}
@keyframes legacy-convoy{from{transform:translate3d(-45px,30px,0)}to{transform:translate3d(65px,-45px,0)}}
@media(prefers-reduced-motion:reduce){.scenery-moving{animation:none}}
/* Grand joystick : dimensions de confort, au-delà des minima tactiles. */
:root{--controls:168px}
.controls #joystick{width:144px;height:144px;min-width:144px;min-height:144px}
#joystick-knob{width:58px;height:58px;left:calc(50% - 29px);top:calc(50% - 29px)}.joystick-ring{inset:12px}
@media(max-width:650px) and (min-height:501px){:root{--controls:168px}.controls{gap:12px;padding-left:14px;padding-right:14px}.controls .actions button{width:124px}.controls #joystick{width:140px;height:140px;min-width:140px;min-height:140px}}
@media(max-height:500px){:root{--controls:96px}.controls{position:absolute;min-height:96px}.controls #joystick{position:absolute;right:calc(16px + var(--safe-right));bottom:calc(10px + var(--safe-bottom));width:112px;height:112px;min-width:112px;min-height:112px}.controls .actions{grid-column:1;justify-self:start;max-width:calc(100vw - 160px)}#joystick-knob{width:50px;height:50px;left:calc(50% - 25px);top:calc(50% - 25px)}.joystick-ring{inset:9px}}
@media(max-width:490px) and (max-height:500px){:root{--controls:138px}.controls #joystick{width:120px;height:120px;min-width:120px;min-height:120px}.controls .actions button{width:124px}}
/* Hangar : cinq silhouettes, mêmes performances. */
.race-secondary-actions #hangar-open{width:46px;min-width:46px;padding:8px;display:flex;align-items:center;justify-content:center}.race-secondary-actions #hangar-open img{display:block;width:28px;height:28px;object-fit:contain}
.ship-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0}.ship-option{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px 10px;min-height:110px;font-size:12px}.ship-option img{object-fit:contain}.ship-option[aria-pressed="true"]{background:#a5def7;filter:brightness(1.2)}.ship-option[aria-pressed="true"]::before{background:linear-gradient(#245577,#0b2c45)}
@media(max-width:400px){.ship-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.race-secondary-actions{gap:6px}.race-secondary-actions #history-open{padding-left:12px;padding-right:12px}.race-secondary-actions #invite-open{padding-left:12px;padding-right:12px}}
/* La galaxie reste sous les portes et le vaisseau, sans filtrer les HUD. */
#race-galaxy{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;opacity:.62}
#race[data-circuit="4"] #nebula{opacity:.16}#race[data-circuit="4"] #nearStarfield,#race[data-circuit="4"] #farStarfield{opacity:.5}
#race[data-circuit="4"] #player{filter:drop-shadow(0 0 3px #000) drop-shadow(0 0 2px #d3ecff)}
.environment-scenery{background-image:url(assets/environment-atlas.webp);opacity:.85}
.environment-portal{opacity:.65}
.ship-preview small{font:10px var(--font-ui);font-weight:400;color:#9dc3dc}.ship-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:400px){.ship-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Listes natives : conserver le contraste jusque dans les options ouvertes. */
#level-select,.scores-filters select{color-scheme:dark;color:#f1f6fc;background-color:#07111f}
#level-select option,#level-select optgroup,.scores-filters select option,.scores-filters select optgroup{background-color:#050b13;color:#f1f6fc}
#level-select option:checked,.scores-filters select option:checked{background-color:#18364d;color:#fff}

/* Pilotage superposé : la piste occupe tout l’espace sous la barre supérieure. */
:root{--controls:64px}
.controls{height:calc(64px + var(--safe-bottom));min-height:0;grid-template-columns:1fr auto 1fr}
.controls #joystick{display:none}
body.overlay-controls #race{bottom:0}
body.overlay-controls .controls{position:absolute;z-index:20;height:calc(164px + var(--safe-bottom));min-height:0;background:transparent;border:0;pointer-events:none;display:flex;justify-content:space-between;align-items:flex-end;padding:12px calc(16px + var(--safe-right)) calc(12px + var(--safe-bottom)) calc(16px + var(--safe-left))}
body.overlay-controls .controls .keyboard-hint{display:none}
body.overlay-controls .controls .actions{display:flex;flex-direction:column;align-items:flex-start;gap:8px;max-width:none;pointer-events:auto}
body.overlay-controls .controls .actions button{width:124px;min-height:46px}
body.overlay-controls .controls #joystick{display:block;position:relative;right:auto;bottom:auto;flex-shrink:0;pointer-events:auto;width:140px;height:140px;min-width:140px;min-height:140px;background:linear-gradient(135deg,#446b8477,#0c263b55 70%,#31577377)}
body.overlay-controls #joystick::before{background:radial-gradient(ellipse at center,#10374c88,#06162477 75%)}
body.overlay-controls .race-secondary-actions{bottom:calc(170px + var(--safe-bottom))}
body.overlay-controls #highscores{bottom:calc(224px + var(--safe-bottom))}
body.overlay-controls #acceleration{bottom:calc(170px + var(--safe-bottom));right:16px}
@media(max-height:500px){body.overlay-controls .controls{height:calc(128px + var(--safe-bottom))}body.overlay-controls .controls #joystick{width:112px;height:112px;min-width:112px;min-height:112px}body.overlay-controls .controls .actions{flex-direction:row;gap:8px}body.overlay-controls .controls .actions button{width:auto;min-width:85px}body.overlay-controls .race-secondary-actions{bottom:calc(66px + var(--safe-bottom));max-width:calc(100% - 160px)}body.overlay-controls #highscores{top:64px;bottom:auto;left:auto;right:14px;max-width:calc(100% - 290px)}body.overlay-controls #acceleration{bottom:calc(136px + var(--safe-bottom))}}

/* Fonctions secondaires regroupées, pilotage compact et centré. */
.race-tools-menu{position:relative}.race-tools-menu>summary{display:flex;align-items:center;gap:14px;cursor:pointer;list-style:none;min-height:44px;padding:10px 16px;background:linear-gradient(#153850,#071827);border:1px solid #42677f;font-size:12px;font-weight:600}.race-tools-menu>summary::-webkit-details-marker{display:none}
.race-tools-dropdown{position:absolute;z-index:50;top:calc(100% + 7px);right:0;min-width:190px;padding:6px;background:#06111ff5;border:1px solid #35546b;box-shadow:0 12px 30px #0009;display:flex;flex-direction:column;gap:5px}.game-tools .race-tools-dropdown button{text-align:left;width:100%;min-height:44px}
.controls .actions #pause{width:46px;min-width:46px;padding:6px;font:700 21px/1 monospace}
body.overlay-controls .controls{height:calc(214px + var(--safe-bottom));justify-content:center;align-items:flex-end}
body.overlay-controls .controls .actions{flex-direction:row;align-items:center;justify-content:center;gap:8px}
body.overlay-controls .controls .actions #start{width:138px}
body.overlay-controls .controls #joystick{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(66px + var(--safe-bottom));width:140px;height:140px;min-width:140px;min-height:140px}
body.overlay-controls .race-secondary-actions{bottom:calc(16px + var(--safe-bottom));left:14px;max-width:none;gap:7px}
body.overlay-controls #highscores{bottom:calc(66px + var(--safe-bottom));max-width:calc(50% - 85px);font-size:10px}
body.overlay-controls #acceleration{bottom:calc(24px + var(--safe-bottom));right:16px}
.race-secondary-actions #fullscreen{width:46px;min-width:46px;padding:8px}
#level-select option:disabled{color:#7d8d9c}
@media(max-width:600px){body.overlay-controls .race-secondary-actions{bottom:calc(82px + var(--safe-bottom))}body.overlay-controls #highscores{bottom:calc(136px + var(--safe-bottom));max-width:calc(50% - 85px)}body.overlay-controls #acceleration{bottom:24px;width:54px}}
@media(max-height:500px){body.overlay-controls .controls{height:calc(168px + var(--safe-bottom))}body.overlay-controls .controls #joystick{width:100px;height:100px;min-width:100px;min-height:100px;bottom:calc(64px + var(--safe-bottom))}body.overlay-controls .race-secondary-actions{bottom:calc(14px + var(--safe-bottom))}body.overlay-controls #highscores{top:64px;bottom:auto;max-width:calc(100% - 290px)}}
.game-bar .race-tools-dropdown #history-open,.game-bar .race-tools-dropdown #scores-open,.game-bar .race-tools-dropdown #invite-open{position:static;inset:auto;margin:0;min-height:44px;padding:12px 14px;font-size:12px;transform:none}
@media(max-width:650px){.race-tools-dropdown{left:0;right:auto}}

/* Circuit dans la barre supérieure ; démarrage centré et séparé du pilotage. */
.game-tools #selectLevel{position:relative;inset:auto;display:flex;align-items:center;margin:0;width:48px;height:44px;flex:0 0 48px}
.game-tools #level-select{width:48px;max-width:48px;min-width:48px;height:44px;padding:8px 18px 8px 10px;background-position:right 6px center;background-size:9px;font-size:14px}
.game-bar .race-brand{flex-direction:row;align-items:center;gap:12px}
.game-bar .race-brand-edition{display:block!important;width:100px;align-self:center;margin:0}
body.overlay-controls .controls{height:calc(280px + var(--safe-bottom))}
body.overlay-controls .controls #joystick{width:168px;height:168px;min-width:168px;min-height:168px;bottom:calc(100px + var(--safe-bottom))}
body.overlay-controls .controls .actions{position:absolute;left:0;right:0;bottom:calc(12px + var(--safe-bottom));height:46px;max-width:none;pointer-events:none}
body.overlay-controls .controls .actions button{position:absolute;top:0;pointer-events:auto}
body.overlay-controls .controls .actions #start{width:138px;left:50%;transform:translateX(-50%)}
body.overlay-controls .controls .actions #hangar-open{width:46px;min-width:46px;height:46px;padding:8px;left:calc(50% - 125px);display:flex;align-items:center;justify-content:center}
.controls .actions #hangar-open img{width:28px;height:28px;object-fit:contain}
body.overlay-controls .controls .actions #pause{left:calc(50% + 79px)}
body.overlay-controls .race-secondary-actions{left:auto;right:14px;bottom:calc(84px + var(--safe-bottom))}
@media(max-width:650px){.game-bar .race-brand-main{width:160px}.game-bar .race-brand-edition{width:68px}.game-tools #level-select{font-size:14px}.game-bar .game-tools{gap:6px}}
@media(max-height:500px){body.overlay-controls .controls{height:calc(222px + var(--safe-bottom))}body.overlay-controls .controls #joystick{width:120px;height:120px;min-width:120px;min-height:120px;bottom:calc(88px + var(--safe-bottom))}.game-bar .race-brand-edition{width:72px}}
@media(max-width:600px){body.overlay-controls #highscores{max-width:calc(50% - 100px)}}

/* Réacteurs arrière : orientation héritée du vaisseau. */

.pause-bars{display:inline-block;width:20px;height:21px;background:linear-gradient(90deg,currentColor 0 6px,transparent 6px 14px,currentColor 14px 20px);vertical-align:middle}
.controls .actions #pause{display:flex;align-items:center;justify-content:center}
.game-bar .race-brand{gap:7px}.game-bar .race-brand-main{width:200px}.game-bar #help{font-size:21px;min-width:48px;font-weight:750}
.game-tools #selectLevel{width:54px;flex-basis:54px}.circuit-menu{position:relative}.circuit-menu>summary{list-style:none;display:flex;align-items:center;justify-content:center;gap:8px;width:54px;height:44px;padding:7px;background:linear-gradient(#153850,#071827);border:1px solid #42677f;cursor:pointer;font-weight:700;font-size:14px;clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px)}
.circuit-menu>summary::-webkit-details-marker{display:none}.circuit-dropdown{position:absolute;left:0;top:calc(100% + 7px);z-index:55;width:260px;max-width:calc(100vw - 28px);display:flex;flex-direction:column;gap:5px;padding:7px;background:#06111ff5;border:1px solid #35546b;box-shadow:0 12px 30px #0009}.game-tools .circuit-dropdown button{position:static;width:100%;text-align:left;font-size:12px;padding:12px 14px;min-height:44px}
#race .route-hud{top:12px;left:12px;gap:7px;max-width:43%;padding:6px 9px;min-height:38px;flex-wrap:wrap}
#race #highscores{top:12px;bottom:auto;left:50%;right:auto;transform:translateX(-50%);max-width:30%;font-size:11px;line-height:1.4;padding:8px 10px;text-align:center;min-height:38px}
#race #time{top:22px;right:12px}
@media(max-width:650px){.game-bar .race-brand-main{width:168px}.game-bar .race-brand{gap:6px}.game-bar .game-tools{gap:5px}#race .route-hud{font-size:10px;max-width:44%;gap:5px;padding:5px 6px}#race .route-hud span{font-size:10px}#race #direction{font-size:19px}#race #highscores{font-size:10px;max-width:29%;padding:7px 6px}#race #time{font-size:17px}}
@media(max-width:650px){#race .route-hud{max-width:calc(50% - 80px)}}
@media(max-width:360px){.game-bar .game-tools{gap:4px}.game-tools #selectLevel{width:48px;flex-basis:48px}.circuit-menu>summary{width:48px}.race-tools-menu>summary{padding:8px 9px;gap:6px;font-size:11px}.game-bar .game-tools #install{padding:8px;font-size:11px}.game-bar #help{min-width:44px}.game-bar .game-tools #fullscreen{padding:8px;min-width:44px}}

/* Joystick circulaire uniquement, réservé aux appareils tactiles. */
body.overlay-controls .controls #joystick,body.overlay-controls .controls #joystick:active,body.overlay-controls .controls #joystick.is-active{width:176.4px;height:176.4px;min-width:176.4px;min-height:176.4px;background:transparent;border:0;border-radius:50%;clip-path:none;box-shadow:none;filter:none}
body.overlay-controls .controls #joystick::before,body.overlay-controls .controls #joystick::after{display:none}
body.overlay-controls .joystick-ring{inset:2px;background:radial-gradient(circle,#10374c55,#06162422 70%);border-color:#638ba488}
@media(max-height:500px){body.overlay-controls .controls #joystick{width:126px;height:126px;min-width:126px;min-height:126px}}

/* Barre d’outils : même géométrie et même panneau pour boutons et menus. */
.game-bar .game-tools{align-items:center}
.game-bar .game-tools>button,.game-bar .game-tools>details>summary,.game-bar .game-tools #selectLevel summary{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;box-sizing:border-box;height:46px;min-height:46px;max-height:46px;margin:0;border:0;border-radius:0;padding-block:0;line-height:1;vertical-align:middle;color:#e7f4ff;text-shadow:0 1px 2px #000;background:linear-gradient(135deg,#5789a7,#244f6c 40%,#15374f 75%,#528eaf);clip-path:polygon(7px 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%,0 7px)}
.game-bar .game-tools>button::before,.game-bar .game-tools>details>summary::before,.game-bar .game-tools #selectLevel summary::before{content:"";position:absolute;inset:1px;z-index:-1;pointer-events:none;clip-path:polygon(6.5px 0,100% 0,100% calc(100% - 6.5px),calc(100% - 6.5px) 100%,0 100%,0 6.5px);background:repeating-linear-gradient(0deg,transparent 0 2px,#7cc7f009 2px 3px),linear-gradient(180deg,#11324c,#081e31 46%,#061523 53%,#103955)}
.game-bar .game-tools>details,.game-bar .game-tools #selectLevel{height:46px;align-self:center}
.game-bar .game-tools>details>summary:hover,.game-bar .game-tools #selectLevel summary:hover{filter:brightness(1.2)}

/* Informations de course : distance à gauche, chrono au centre, record à droite. */
#race .route-hud,#race #highscores{top:12px;bottom:auto;width:min(260px,calc(50% - 64px));max-width:none;min-height:54px;padding:8px 10px;background:#03060cc9;border:0;border-radius:0;clip-path:polygon(6px 0,100% 0,100% calc(100% - 6px),calc(100% - 6px) 100%,0 100%,0 6px);box-shadow:none}
#race .route-hud{left:12px;right:auto;align-content:center;column-gap:7px;row-gap:5px}
#race #progress{flex-basis:100%}
#race #highscores{left:auto;right:12px;transform:none;display:flex;align-items:center;justify-content:center;text-align:center}
#race #time{top:12px;left:50%;right:auto;transform:translateX(-50%);width:94px;height:54px;display:flex;align-items:center;justify-content:center;margin:0;text-align:center}
@media(max-width:650px){#race .route-hud,#race #highscores{padding:7px 8px}#race #time{font-size:18px}}

/* Tuyères propres à chaque silhouette : flammes ancrées dans le sprite. */
#player::after{display:none}
.engine-plume{position:absolute;z-index:-1;display:block;width:8px;height:var(--jet-length,20px);opacity:var(--thrust,0);pointer-events:none;transform-origin:50% 0;background:radial-gradient(ellipse at 50% 0,#fff9df 0%,var(--exhaust-color) 22%,transparent 74%);clip-path:polygon(8% 0,92% 0,72% 45%,50% 100%,28% 45%);animation:none}
@media(prefers-reduced-motion:reduce){.engine-plume{animation:none}}

/* Actions secondaires à gauche, à distance du bouton de redémarrage. */
body.overlay-controls .controls .actions #pause{left:calc(16px + var(--safe-left));right:auto}
body.overlay-controls .controls .actions #hangar-open{left:calc(16px + var(--safe-left));top:-58px;right:auto}
.ship-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.ship-grid .ship-option{min-width:0;padding:12px 6px}
.ship-grid .ship-option span{overflow-wrap:anywhere;font-size:11px}
.ship-grid .ship-option small{font-size:9px}
@media(max-width:400px){.ship-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}}
.ship-grid .ship-preview span{font-size:9.5px;letter-spacing:0;overflow-wrap:normal;word-break:normal}

/* Titre du hangar lisible sans prendre le dessus sur la sélection. */
#hangar-dialog #hangar-title{font-size:clamp(19px,4.8vw,24px);line-height:1.3;letter-spacing:-.02em;margin:18px 0 16px;font-weight:500;text-wrap:balance}

/* Audit : en paysage court, éviter que le pouce masque le vaisseau au centre. */
@media(max-height:600px) and (min-width:491px){
 body.overlay-controls .controls #joystick{left:auto;right:calc(16px + var(--safe-right));transform:none;bottom:calc(78px + var(--safe-bottom));width:126px;height:126px;min-width:126px;min-height:126px}
 .game-bar .race-brand-main{width:120px}.game-bar .race-brand-edition{width:52px}.game-bar .race-brand{gap:4px}
}
#race[data-motion="off"] .engine-plume{animation-play-state:paused}
@media(max-height:600px) and (min-width:491px) and (max-width:560px){
 .game-bar .race-brand-main{width:100px}.game-bar .race-brand-edition{width:44px}
 .game-bar .game-tools{gap:4px}.game-tools #selectLevel{width:48px;flex-basis:48px}.circuit-menu>summary{width:48px}
 .race-tools-menu>summary{padding-inline:9px;gap:6px;font-size:11px}.game-bar .game-tools #install{padding-inline:8px;font-size:11px}.game-bar #help{min-width:44px}
}
.game-bar summary:focus-visible{outline:none;filter:brightness(1.55)}

/* Pilotage tactile : grande prise, retour du pouce et aucun scintillement. */
body.overlay-controls .controls #joystick{width:200px;height:200px;min-width:200px;min-height:200px}
body.overlay-controls .joystick-ring{transform:translate(var(--stick-origin-x,0px),var(--stick-origin-y,0px));border:2px solid #8eb5ce80;background:radial-gradient(circle,#17374d22 42%,#08172644 72%);transition:border-color 100ms,background 100ms}
body.overlay-controls #joystick.is-active .joystick-ring{border-color:#b4def3c4;background:radial-gradient(circle,#4b8eae20 42%,#12324a55 72%)}
body.overlay-controls #joystick-knob{width:66px;height:66px;left:calc(50% - 33px + var(--stick-origin-x,0px));top:calc(50% - 33px + var(--stick-origin-y,0px));border:2px solid #9cc6dfaa;background:radial-gradient(circle at 35% 25%,#49647ce8,#1c324be8 70%);box-shadow:0 3px 12px #0005,inset 0 1px 3px #d6efff33}
@media(min-width:700px) and (min-height:601px){body.overlay-controls .controls #joystick{width:220px;height:220px;min-width:220px;min-height:220px}}
@media(max-height:600px) and (min-width:491px){body.overlay-controls .controls #joystick{width:152px;height:152px;min-width:152px;min-height:152px}}
.engine-plume{animation:none;transition:opacity var(--jet-fade,180ms) linear,height 120ms linear;will-change:auto}
@media(prefers-reduced-motion:reduce){.engine-plume{transition:opacity 120ms linear}}
/* La rangée d’actions reste pleine largeur, y compris en paysage court. */
body.overlay-controls .controls .actions{width:100%;max-width:none;left:0;right:0;transform:none;justify-self:stretch}

/* Android : objectifs Web de 48 px et espacement de 8 px, sans changer la DA. */
button,select,.race-link-button{min-width:48px;min-height:48px}
.game-bar .game-tools{gap:8px}
.game-bar .game-tools>button,.game-bar .game-tools>details>summary,.game-bar .game-tools #selectLevel summary{height:48px;min-height:48px;max-height:48px;min-width:48px}
.game-bar .game-tools>details,.game-bar .game-tools #selectLevel{height:48px}
.game-bar .game-tools #help,.game-bar .game-tools #fullscreen{min-width:48px;width:48px;padding-inline:6px}
.game-bar .race-tools-dropdown,.game-bar .circuit-dropdown{gap:8px;padding:8px}
.game-bar .race-tools-dropdown button,.game-bar .circuit-dropdown button,.game-bar .race-tools-dropdown #history-open,.game-bar .race-tools-dropdown #scores-open,.game-bar .race-tools-dropdown #invite-open{min-height:48px}
.controls .actions #pause,.controls .actions #hangar-open,body.overlay-controls .controls .actions #pause,body.overlay-controls .controls .actions #hangar-open{width:48px;min-width:48px;height:48px;min-height:48px}
body.overlay-controls .controls .actions{height:48px}
body.overlay-controls .controls .actions #start{height:48px;min-height:48px}
.dialog-close{width:48px;height:48px;min-height:48px;min-width:48px}
.scores-filters select,dialog input:not([type="checkbox"]){min-height:48px;font-size:16px}
dialog label:has(input[type="checkbox"]){min-height:48px;display:flex;align-items:center;gap:10px}
.game-bar{padding-block:calc(5px + var(--safe-top)) 5px}
@media(min-width:651px){:root{--bar:60px}}
/* Le mode compact garde des marges pour la navigation système Android. */
@media(max-height:600px) and (min-width:491px){.game-bar{padding-block:calc(5px + var(--safe-top)) 5px}}
@media(max-height:600px) and (min-width:491px){:root{--bar:60px}}
#challenge-dismiss{min-width:48px;min-height:48px}
button,summary,.race-link-button{touch-action:manipulation}
body.overlay-controls .joystick-ring{border-color:#8eb5ceaa}
.game-bar summary:focus-visible::before{box-shadow:inset 0 0 0 2px #b2e5ff}
@media(max-width:650px){#race .route-hud span{font-size:12px}#race #highscores{font-size:12px;line-height:1.4}}
/* Tablettes en paysage et écrans pliables ouverts : dégager le centre de jeu. */
@media(orientation:landscape) and (min-width:491px) and (min-height:601px){body.overlay-controls .controls #joystick{left:auto;right:calc(24px + var(--safe-right));transform:none}}
.game-bar .race-brand{min-height:48px}
.standalone-link{min-height:48px;display:flex;align-items:center}

/* Vue clavier : piste 4:3 centrée, sans étirer les graphismes. */
body:not(.overlay-controls) #race{
 width:min(calc(100vw - var(--safe-left) - var(--safe-right)),calc((100dvh - var(--bar) - var(--safe-top) - var(--controls) - var(--safe-bottom))*4/3));
 height:auto;aspect-ratio:4/3;
 left:50%;right:auto;bottom:auto;
 top:calc((100dvh + var(--bar) + var(--safe-top) - var(--controls) - var(--safe-bottom))/2);
 transform:translate(-50%,-50%);
 box-shadow:0 0 0 1px #25425e;
}
