/* Application screens; the track uses the full viewport while driving. */
.playing #music-controls{top:76px;right:18px}@media(max-width:600px){.playing #music-controls{top:66px;right:10px}}
.track-picker{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;margin:12px 0;font-size:13px}.track-picker select{flex:1;min-width:0;max-width:250px;width:100%}
#setup-controllers{display:grid;gap:8px;margin:18px 0}#setup-controllers label{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:13px;padding:6px 0}
#canvas:focus{outline:none}#canvas:focus-visible{outline:2px solid var(--cyan);outline-offset:-2px}
.front{overflow-x:hidden}#front-screen{position:relative;min-height:100dvh;overflow:hidden;background:#101c19}.intro-track{position:absolute;width:110%;height:110%;right:-35%;top:-5%;opacity:.65;transform:rotate(-18deg);pointer-events:none}.intro-road{fill:none;stroke:#344b3e;stroke-width:100}.intro-line{fill:none;stroke:#9ce7db30;stroke-width:2;stroke-dasharray:10 15}.intro-racer{fill:none;stroke:#ffb267;stroke-width:7;stroke-dasharray:22 3000;animation:lap 18s linear infinite;filter:drop-shadow(0 0 8px #ffb267)}@keyframes lap{to{stroke-dashoffset:-3022}}
.front-content{position:relative;padding:clamp(28px,6vw,90px);max-width:720px;min-height:100dvh;background:linear-gradient(90deg,#101c19 25%,#101c19e8 70%,transparent)}.brand{font-size:clamp(48px,7vw,90px);letter-spacing:-5px;line-height:1.1;margin:22px 0}.brand span{display:block}.tagline{font-size:20px;line-height:1.6;color:var(--text);margin-bottom:34px}.tagline em{font-style:normal;color:var(--cyan)}.menu-stack{display:grid;gap:10px;max-width:380px}.menu-stack button{text-align:left;padding:18px 20px;background:#14241fe6}.menu-stack button span{float:right;color:var(--cyan)}.menu-stack small{display:block;font-weight:400;color:var(--muted);margin-top:7px}.front-foot{font-size:9px;letter-spacing:2px;margin-top:38px}.back-link{display:block;border:0;margin-top:16px;padding-left:0}.lesson-diagram{width:100%;max-width:360px;height:120px}#race-setup,#tutorial-page{max-width:390px}
body.playing{overflow:hidden}.playing main{display:block;max-width:none;margin:0;padding:0}.playing .game{position:fixed;inset:0}.playing .track{position:absolute;inset:0;border:0;border-radius:0}.playing #canvas{width:100%;height:100%;display:block}.playing .track-label,.playing .legend{display:none}.playing #message{position:fixed;bottom:115px;left:20px;max-width:min(500px,calc(100vw - 40px));font-size:12px;min-height:0;padding:8px 12px;border-radius:6px;background:#101918c9;pointer-events:none}
#race-hud{position:fixed;inset:0;pointer-events:none}#race-hud>.eyebrow{position:absolute;top:16px;left:22px;max-width:calc(100vw - 125px);font-size:10px;line-height:1.4}#race-hud .stats{position:absolute;top:64px;left:16px;padding:10px 12px;gap:24px;border:0;border-radius:7px;background:#101918bd}#race-hud .stats strong{font-size:20px}#race-hud .stats div{font-size:8px;letter-spacing:1px}
#confirm-bar{position:absolute;bottom:16px;left:16px;width:min(480px,calc(100vw - 32px));display:grid;grid-template-columns:1fr auto;gap:4px 18px;align-items:center;background:#101918e6;border:1px solid #9ce7db30;padding:12px 16px;border-radius:10px;pointer-events:auto}#confirm-bar .selected{font-size:8px;gap:10px;justify-content:flex-start}#confirm-bar .selected b{font-size:16px}#confirm-bar #preview{grid-column:1;margin:0;min-height:0;font-size:10px;line-height:1.4}#confirm-bar #confirm{grid-column:2;grid-row:1/3;width:auto;font-size:12px}
#session-menu{position:fixed;right:18px;top:18px;z-index:5;background:#101918e6;min-height:44px}.editing #session-menu{top:24px}.editing header{padding-right:140px}.editing header .actions{display:none}
dialog{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:28px;width:min(430px,calc(100vw - 28px));max-height:calc(100dvh - 36px);overflow:auto;box-shadow:0 24px 100px #0008}dialog::backdrop{background:#06100dc9;backdrop-filter:blur(5px)}dialog h2{margin-top:0}dialog .menu-stack{margin-top:12px}dialog h3{font-size:12px;color:var(--muted);margin-top:24px}#debug-menu{width:min(660px,calc(100vw - 28px))}#debug-menu .panel{border:0;padding:0;margin-top:24px;background:none}#fields{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.dialog-close{float:right;font-size:11px}#debug-menu #fields input{width:80px}
@media(max-width:600px){.front-content{padding:30px 24px}.brand{letter-spacing:-3px}.intro-track{right:-60%;width:150%;opacity:.35}.tagline{font-size:17px}.playing #message{bottom:124px;font-size:10px;left:12px;max-width:calc(100vw - 24px)}#race-hud .stats{gap:15px;top:64px;left:8px;padding:8px}#race-hud>.eyebrow{left:16px;top:18px}#race-hud .stats strong{font-size:17px}#race-hud .stats div{font-size:7px}#session-menu{right:10px;top:10px;padding:10px}#confirm-bar{left:8px;bottom:8px;width:calc(100vw - 16px);padding:10px;gap:4px 10px}#confirm-bar #confirm{padding:12px 10px}#fields{grid-template-columns:1fr}.editing header{padding-right:105px}.editing h1{font-size:22px}}
.showing-tutorial .brand{font-size:32px;letter-spacing:-1px;margin:14px 0}.showing-tutorial .brand span{display:inline;margin-left:8px}.showing-tutorial .tagline,.showing-tutorial .front-foot{display:none}
#tutorial-page{max-width:520px}#tutorial-page>h2{font-size:28px}#lesson-body{line-height:1.65;font-size:15px}#tutorial-drive{margin-top:12px;width:100%}
.tutorial-demo{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#152820}.tutorial-demo svg{display:block;width:100%;max-height:300px}.tutorial-demo text{fill:var(--text);stroke:none;font:10px system-ui,sans-serif;letter-spacing:.5px}.tutorial-demo figcaption{padding:10px 12px;background:#101918;font-size:11px;color:var(--muted);line-height:1.5}
.tutorial-phases{display:flex;gap:6px;margin-top:12px}.tutorial-phases button{flex:1;padding:10px 6px;font-size:12px}.tutorial-phases button[aria-pressed=true]{border-color:var(--cyan);background:#9ce7db15;color:var(--cyan)}.tutorial-caption{min-height:3.2em;font-size:14px;line-height:1.6;margin:10px 0}
.practice-meta{display:flex;justify-content:space-between;gap:12px;align-items:center;margin:12px 0;font-size:10px;letter-spacing:.6px}.practice-meta strong{white-space:nowrap;color:var(--yellow,#ffe28b)}.tutorial-practice [data-practice-map]{max-height:360px;cursor:crosshair;touch-action:manipulation}.tutorial-practice [data-practice-map]:focus-visible{outline:2px solid var(--cyan);outline-offset:-3px}.tutorial-practice .actions{flex-wrap:wrap}.tutorial-practice button{min-height:44px}.practice-tools{margin-top:8px}#practice-instructions{font-size:13px;line-height:1.6}[data-practice-outcome=success] [data-practice-status]{color:var(--cyan)}[data-practice-outcome=off-track] [data-practice-status]{color:var(--red)}
@media(prefers-reduced-motion:reduce){.intro-racer{animation:none}}
#server-race-status{position:fixed;z-index:30;left:50%;top:90px;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:10px 16px;border-radius:8px;background:#102019ee;color:var(--text);font-size:13px;text-align:center;pointer-events:none}
.finish-flag{display:inline-block;position:relative;flex:none;width:48px;height:48px;transform:rotate(-9deg)}
.finish-flag::before{content:"";position:absolute;left:8px;top:2px;width:40px;height:28px;border:1px solid #eef3df;background:repeating-conic-gradient(#eef3df 0 25%,#14201c 0 50%) 0 0/14px 14px;border-radius:0 4px 4px 0}
.finish-flag::after{content:"";position:absolute;left:6px;top:0;width:3px;height:48px;background:#eef3df;border-radius:2px}
#finish-notice{position:fixed;z-index:8;top:130px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:18px;width:max-content;max-width:calc(100vw - 32px);padding:18px 24px;border:1px solid #9ce7db70;border-radius:14px;background:#102019f5;box-shadow:0 12px 40px #0005;pointer-events:none;animation:finish-arrival .35s ease-out}
#finish-notice strong{font-size:17px}#finish-notice p{font-size:12px;margin:6px 0 0}
@keyframes finish-arrival{from{opacity:0;translate:0 -12px}to{opacity:1;translate:0 0}}
#race-results-open{position:fixed;right:18px;top:72px;z-index:5;background:#102019ed;color:var(--cyan);min-height:44px}
#race-results{width:min(680px,calc(100vw - 28px));padding:0;border-color:#9ce7db55;background:#13251f;box-shadow:0 24px 100px #000a}
.results-checkers{height:16px;background:repeating-conic-gradient(#eef3df 0 25%,#14201c 0 50%) 0 0/32px 32px;opacity:.9}
.results-content{padding:28px 32px}.results-kicker{display:flex;align-items:center;gap:16px;color:var(--cyan);font-size:10px;font-weight:800;letter-spacing:2px}
#race-results-title{font-size:clamp(28px,5vw,40px);letter-spacing:-1px;margin:18px 0 8px;outline:none}#race-results-summary{margin:0 0 24px;color:var(--text);font-size:15px}
.results-table-wrap{overflow-x:auto}#race-results table{width:100%;border-collapse:collapse;font-size:14px}#race-results caption{text-align:left;padding:0 0 14px;color:var(--muted);font-size:11px;letter-spacing:1px}
#race-results thead th{padding:10px 8px;border-bottom:1px solid var(--line);font-size:10px;letter-spacing:.6px;color:var(--muted);text-align:right}#race-results thead th:nth-child(-n+2){text-align:left}
#race-results tbody td,#race-results tbody th{padding:14px 8px;border-bottom:1px solid #eef3df10}#race-results tbody td{text-align:right;font-variant-numeric:tabular-nums}#race-results tbody th{text-align:left;font-weight:500;max-width:260px;overflow-wrap:anywhere}
#race-results tbody th strong{display:block;border-left:3px solid var(--car-color);padding-left:10px}#race-results tbody th small{display:block;padding-left:13px;margin-top:4px;color:var(--muted);font-size:10px;font-weight:400}
#race-results .results-position{text-align:left;font-size:21px;font-weight:800;color:var(--muted)}#race-results .results-winner{background:#9ce7db0d}#race-results .results-winner .results-position{color:var(--cyan)}
.results-rule{font-size:11px;line-height:1.6;margin:16px 0 22px}.results-actions{display:flex;gap:10px}.results-actions button{flex:1;width:auto;min-height:46px}
@media(max-width:600px){#finish-notice{top:116px;gap:12px;padding:14px 16px}#finish-notice strong{font-size:14px}#finish-notice p{font-size:11px}.results-content{padding:20px 16px}#race-results-summary{font-size:13px}#race-results table{font-size:12px}#race-results tbody td,#race-results tbody th{padding:12px 5px}#race-results thead th{padding:10px 5px;font-size:9px}.results-actions{flex-direction:column}#race-results-open{right:10px;top:64px}}
@media(prefers-reduced-motion:reduce){#finish-notice{animation:none}}
#music-controls{position:fixed;top:16px;right:16px;z-index:20;width:44px;height:44px}#music-toggle{display:grid;place-items:center;width:44px;height:44px;padding:10px;background:#101c19ed;color:var(--cyan);border-radius:50%}#music-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#music-toggle[aria-pressed=true]{color:var(--muted)}.music-volume-panel{position:absolute;right:0;top:100%;width:190px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#192421fa;box-shadow:0 8px 24px #0005;visibility:hidden;opacity:0;pointer-events:none}#music-controls:hover .music-volume-panel,#music-toggle:focus-visible+.music-volume-panel,.music-volume-panel:focus-within,#music-controls.touch-open .music-volume-panel{visibility:visible;opacity:1;pointer-events:auto}#music-controls label{display:grid;gap:2px;font-size:11px;margin:0;color:var(--muted)}#music-volume{width:100%;min-width:0;min-height:44px;accent-color:var(--cyan)}#music-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}#pause-menu #music-controls{position:absolute;top:14px;right:14px}#pause-menu>h2{padding-right:48px}.front .front-content>.eyebrow{display:block;padding-right:48px}
.showing-setup .brand{font-size:32px;letter-spacing:-1px;margin:14px 0 28px}.showing-setup .brand span{display:inline;margin-left:8px}.showing-setup .tagline,.showing-setup .front-foot{display:none}#track-setup{max-width:520px}.track-carousel{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;margin:24px 0 16px}.track-carousel>button{padding:0;min-height:48px;font-size:30px;color:var(--cyan)}.track-card{margin:0;min-width:0;border:1px solid var(--line);border-radius:14px;background:#152820;overflow:hidden}.track-card svg{display:block;width:100%;height:clamp(180px,30vw,280px);padding:18px}.track-card figcaption{display:grid;gap:8px;padding:16px;text-align:center;background:#101918;overflow-wrap:anywhere}.track-card strong{font-size:19px}.track-card span{font-size:11px;color:var(--muted);letter-spacing:1px}.track-upload{display:block;width:100%;min-height:44px;margin-bottom:16px}
