/* GLN Classroom Car Race v3 — GPU-friendly accents; fully disabled for reduced motion. */
.race-v3-sound{flex-shrink:0;padding:6px 11px;border-radius:9px;border:1px solid rgba(255,255,255,.32);color:#fff;background:rgba(255,255,255,.11);font:800 .76rem Inter,system-ui,sans-serif;cursor:pointer;white-space:nowrap}
.race-v3-sound:hover{background:rgba(255,255,255,.2)}
.race-v3-sound:focus-visible{outline:3px solid #facc15;outline-offset:2px}
.race-v3-sound:disabled{opacity:.5;cursor:wait}
.race-v3-standing{color:#f2f8ff}
.race-v3-standing strong{color:#ffe27f}
.race-v3-paused{padding:4px 9px;border-radius:7px;background:#ffdd87;color:#513805;font-size:.75rem;font-weight:900;letter-spacing:.04em}
.race-v3-paused[hidden]{display:none}
.race-v3-countdown{display:flex;flex-direction:column;gap:14px;justify-content:center;align-items:center;inset:0;z-index:60;background:radial-gradient(circle at center,rgba(31,57,91,.96),rgba(4,15,35,.96));backdrop-filter:blur(5px)}
.race-v3-countdown[hidden]{display:none}
.race-v3-signal{display:flex;gap:14px;padding:17px 21px;border:3px solid #71839d;border-radius:21px;background:linear-gradient(150deg,#1b273d,#07101e);box-shadow:0 17px 45px #0008,inset 0 2px 3px #ffffff25}
.race-v3-light{display:block;width:66px;height:66px;border:5px solid #01070d;border-radius:50%;background:#253244;box-shadow:inset 0 7px 15px #000c;transition:background .12s,box-shadow .12s}
.race-v3-three .race-v3-light.red{background:#fd4357;box-shadow:0 0 29px #ff3658c0,inset 0 -8px 11px #900923}
.race-v3-two .race-v3-light.amber,.race-v3-one .race-v3-light.amber{background:#ffcf42;box-shadow:0 0 29px #f6ca3da8,inset 0 -8px 11px #bb7e0e}
.race-v3-one .race-v3-light.red{background:#e45761;box-shadow:0 0 12px #ff365877}
.race-v3-go .race-v3-light.green{background:#36e796;box-shadow:0 0 40px #36e796db,inset 0 -8px 11px #078e52}
.race-v3-countdown strong#raceCountdownText{width:auto;min-width:180px;height:auto;padding:3px 26px;border:0;border-radius:18px;background:transparent;box-shadow:none;color:white;font-size:clamp(3.5rem,8vw,5.8rem);letter-spacing:.06em;line-height:1.12;text-shadow:0 4px 21px #000c;animation:none}
.race-v3-go strong#raceCountdownText{color:#6cffac;text-shadow:0 0 32px #20cb72b8}
.race-v3-cue{font:900 clamp(.66rem,1.8vw,1rem) Inter,system-ui,sans-serif;letter-spacing:.19em;color:#e9f4ff;text-align:center}
.race-v3-go .race-v3-cue{color:#8bffba}
.race-dashboard .race-track .race-car{transition:left .85s cubic-bezier(.18,.8,.25,1);will-change:left}
.race-dashboard .race-track .race-car::before{width:52px;height:9px;opacity:.6}
.race-dashboard .race-track .race-lane.is-finished{background:linear-gradient(90deg,rgba(26,168,109,.08),rgba(65,231,151,.18))}
.race-dashboard .race-track .race-lane.is-finished .race-lane-name{box-shadow:0 0 0 1px rgba(50,232,143,.75)}
.race-v3-overtaking{position:absolute;z-index:27;top:65px;left:50%;transform:translateX(-50%);max-width:min(92%,620px);padding:12px 22px;border:1px solid #fde68a;border-radius:99px;background:#152844;color:#fff5b7;font:900 .9rem Inter,system-ui,sans-serif;box-shadow:0 10px 24px #0008;pointer-events:none;text-align:center;white-space:normal;animation:raceV3Toast .28s ease-out}
.race-v3-overtaking[hidden]{display:none}
.race-v3-overtaking-lane .race-car{filter:drop-shadow(0 0 12px #9decff) drop-shadow(0 5px 5px #0008)!important}
.race-v3-overtaking-lane .race-car::after{content:"";position:absolute;right:78%;top:32%;width:80px;height:30px;background:repeating-linear-gradient(180deg,#b6f5ff80 0 3px,transparent 3px 10px);clip-path:polygon(100% 5%,0 26%,80% 45%,0 80%,100% 100%);animation:raceV3Speed .44s linear 2}
.race-leaderboard-row.race-v3-climbing{border-color:#58c2fb;background:#eafaff;animation:raceV3Stand .95s ease}
.race-v3-finish-flash{position:absolute;right:32px;top:28px;z-index:6;border:1px solid #fcd34d;border-radius:8px;padding:5px 10px;background:#142942;color:#fff;font:bold .7rem Inter,system-ui,sans-serif;box-shadow:0 0 22px #facc1566;pointer-events:none;animation:raceV3Finish 1.5s ease-out both}
.race-v3-winner{margin:8px auto 18px;font:900 clamp(1rem,2vw,1.4rem) Inter,system-ui,sans-serif;line-height:1.4;color:#ffe27e;text-align:center;text-wrap:balance}
.race-v3-confetti-burst{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}
.race-v3-confetti-burst i{position:absolute;top:-25px;left:var(--x);width:9px;height:17px;background:var(--color);animation:raceV3Confetti 2.3s var(--delay) ease-in forwards;opacity:0}
.race-v3-results-celebrating .race-podium{animation:raceV3Podium .7s ease-out both}
@keyframes raceV3Toast{from{opacity:0;transform:translate(-50%,-12px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes raceV3Speed{to{transform:translateX(-23px);opacity:0}}
@keyframes raceV3Stand{45%{transform:scale(1.02)}100%{transform:scale(1)}}
@keyframes raceV3Finish{0%{opacity:0;transform:translateY(13px) scale(.85)}20%,80%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-15px)}}
@keyframes raceV3Confetti{0%{opacity:1;transform:translateY(-10px) rotate(0)}85%{opacity:1}100%{opacity:0;transform:translateY(580px) rotate(620deg)}}
@keyframes raceV3Podium{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:720px){.race-v3-light{width:47px;height:47px}.race-v3-signal{padding:12px 16px;gap:10px}.race-v3-overtaking{top:95px;font-size:.72rem;padding:9px 13px}.race-v3-sound{font-size:.70rem}}
@media(prefers-reduced-motion:reduce){.race-dashboard .race-track .race-car,.race-v3-countdown *{transition:none!important;animation:none!important;will-change:auto!important}.race-v3-overtaking,.race-v3-climbing,.race-v3-finish-flash,.race-v3-results-celebrating .race-podium,.race-v3-confetti-burst i{animation:none!important}.race-v3-confetti-burst{display:none}}
@media print{.race-v3-sound,.race-v3-overtaking,.race-v3-finish-flash,.race-v3-countdown,.race-v3-confetti-burst{display:none!important}}

/* v3.1 finish-screen polish: the photo-ready podium remains legible after the
   one-time animation. Only the burst particles move; no endless confetti. */
.race-results .confetti,
.race-results .confetti::before,
.race-results .confetti::after {display:none!important;}
.race-results {
  min-height:540px;
  padding:26px clamp(14px,3.1vw,32px) 30px;
  background:radial-gradient(ellipse at 50% 12%,rgba(40,125,217,.36),transparent 47%),
    linear-gradient(160deg,#081a35 0%,#0c3769 57%,#081e40 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14);
}
.race-results::before,.race-results::after {top:42px;font-size:clamp(1.8rem,3.8vw,2.7rem);opacity:.48;}
.race-results .results-eyebrow {color:#9be5fb;font-size:.72rem;letter-spacing:.22em;}
.race-results h2 {margin:7px 0 8px;font-size:clamp(2rem,5vw,3.2rem);letter-spacing:-.035em;line-height:1.08;}
.race-results .race-v3-winner {
  position:relative;z-index:3;display:table;max-width:95%;
  padding:9px 20px;margin:0 auto 25px;border:1px solid rgba(255,222,138,.39);
  border-radius:999px;background:rgba(255,211,102,.11);color:#ffdfa0;
  font:850 clamp(.9rem,1.9vw,1.12rem)/1.35 Inter,system-ui,sans-serif;
  overflow-wrap:anywhere;
}
.race-results .race-podium {
  max-width:790px;gap:clamp(7px,1.3vw,14px);
  align-items:flex-end;justify-content:center;
}
.race-results .podium-place {min-width:0;width:min(32%,250px);}
.race-results .podium-place .podium-medal {font-size:1.8rem;line-height:1.35;margin-bottom:0;}
.race-results .podium-place .podium-vehicle {
  flex:0 0 auto;width:min(185px,95%);height:91px;
  margin:0 auto -7px;background-position:center bottom!important;
  animation:none;transform:none;
}
.race-results .podium-block {
  width:100%;min-height:148px;padding:15px 12px 18px;
  border:1px solid rgba(255,255,255,.25);border-radius:15px 15px 8px 8px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.24),0 14px 26px rgba(0,0,0,.22);
}
.race-results .place-1 .podium-block {min-height:200px;}
.race-results .place-2 .podium-block {min-height:158px;}
.race-results .place-3 .podium-block {min-height:137px;}
.race-results .podium-block::before {font-size:clamp(2.3rem,4vw,3.05rem);line-height:1.05;margin-bottom:1px;}
.race-results .podium-block strong {
  color:#fff;font:900 clamp(.90rem,1.55vw,1.17rem)/1.2 Inter,'Padauk',system-ui,sans-serif;
  overflow-wrap:anywhere;text-wrap:balance;max-width:100%;
}
.race-results .podium-block small {color:rgba(255,255,255,.9);font:650 .72rem/1.25 Inter,system-ui,sans-serif;}
.race-results .podium-block span {
  margin-top:3px;padding:5px 9px;border-radius:7px;
  background:rgba(5,20,42,.21);font:850 .76rem/1.2 Inter,system-ui,sans-serif;
  font-variant-numeric:tabular-nums;white-space:normal;
}
.race-results .place-1 .podium-block {background:linear-gradient(155deg,#eec33d,#b9780a);}
.race-results .place-2 .podium-block {background:linear-gradient(155deg,#9cb2c7,#546f8d);}
.race-results .place-3 .podium-block {background:linear-gradient(155deg,#c47b4b,#874329);}
.race-results .other-racers {
  background:rgba(4,20,45,.74);max-width:760px;
  margin-top:20px;border-color:rgba(255,255,255,.27);
}
.race-results .other-racers #raceOtherList>div {align-items:center;gap:9px;}
.race-results .results-actions,
.race-results .race-result-toolbar {
  position:relative;z-index:3;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;
}
.race-results .results-actions {margin-top:23px;}
.race-results .race-result-toolbar {margin-top:11px;}
.race-results .results-actions[hidden],
.race-results .race-result-toolbar[hidden] {display:none!important;}
.race-results .results-actions .button,
.race-results .race-result-toolbar .button {
  min-height:39px;min-width:145px;padding:9px 14px;border-radius:10px;
  border:1px solid rgba(223,239,255,.58);
  background:rgba(10,28,57,.82);color:#f6fbff;
  font:750 .78rem Inter,system-ui,sans-serif;
  box-shadow:0 5px 12px rgba(0,0,0,.12);
}
.race-results .results-actions .button.primary {
  color:#102749;background:linear-gradient(160deg,#9be9ff,#57c7eb);
  border-color:#a9f0ff;
}
.race-results .results-actions .button:hover,
.race-results .race-result-toolbar .button:hover {filter:brightness(1.13);}
.race-results .results-actions .button:focus-visible,
.race-results .race-result-toolbar .button:focus-visible {outline:3px solid #ffdc77;outline-offset:3px;}
/* The one-time burst floats behind, never across the results text. */
.race-results .race-v3-confetti-burst {z-index:1;}
.race-results .race-v3-confetti-burst i {width:6px;height:11px;}
/* Let students see their own lanes and vehicles while the lights count down. */
.race-v3-countdown {
  background:radial-gradient(ellipse at center,rgba(8,27,52,.77),rgba(3,13,29,.88));
  backdrop-filter:blur(1.8px);gap:12px;
}
.race-v3-signal {border-width:2px;box-shadow:0 14px 35px #0009,inset 0 2px 3px #ffffff25;}
.race-v3-cue {max-width:88%;text-shadow:0 2px 10px #000;}
@media(max-width:720px){
  .race-results {min-height:0;padding:23px 12px 25px;}
  .race-results h2 {font-size:clamp(1.85rem,7vw,2.5rem);}
  .race-results .race-v3-winner {border-radius:14px;padding:8px 12px;margin-bottom:15px;}
  .race-results .race-podium {gap:5px;}
  .race-results .podium-place {width:33%;}
  .race-results .podium-place .podium-vehicle {height:clamp(46px,11vw,70px);margin-bottom:-5px;}
  .race-results .podium-block {padding:12px 5px 14px;gap:4px;}
  .race-results .place-1 .podium-block {min-height:161px;}
  .race-results .place-2 .podium-block {min-height:132px;}
  .race-results .place-3 .podium-block {min-height:116px;}
  .race-results .podium-block::before {font-size:2rem;}
  .race-results .podium-block strong {font-size:.8rem;}
  .race-results .podium-block small {font-size:.63rem;}
  .race-results .podium-block span {padding:4px 5px;font-size:.61rem;}
  .race-results .results-actions .button,
  .race-results .race-result-toolbar .button {width:auto;min-width:min(45%,180px);font-size:.74rem;}
}
@media(max-width:420px){
  .race-results .results-actions,.race-results .race-result-toolbar{gap:7px;}
  .race-results .results-actions .button,.race-results .race-result-toolbar .button{width:100%;}
  .race-results .other-racers #raceOtherList>div{grid-template-columns:24px minmax(0,1fr) auto;font-size:.68rem;}
}
@media(prefers-reduced-motion:reduce){
  .race-results .podium-place,.race-results .podium-vehicle {animation:none!important;}
}
@media print{
  body.print-race .race-v3-winner {border:0;background:transparent;color:#111;}
  body.print-race .podium-block span {background:transparent;}
}

/* v3.2 podium polish: readable racing numbers and identities, anchored medals,
   generous projector-ready WPM/accuracy, and a subtle gold winner halo. */
.race-results .podium-place { isolation:isolate; }
.race-results .race-v32-car-stage {
  position:relative;display:flex;flex-direction:column;align-items:center;
  justify-content:flex-end;gap:0;width:100%;z-index:1;
}
.race-results .race-v32-car-stage .podium-vehicle {
  position:relative;z-index:1;margin-bottom:-3px;
}
.race-results .place-1 .race-v32-car-stage::before {
  content:'';position:absolute;pointer-events:none;z-index:0;
  left:10%;right:10%;top:2%;height:88px;border-radius:50%;
  background:radial-gradient(ellipse,#ffe5a04a 0%,#ffc83422 35%,transparent 73%);
  filter:blur(8px);
}
.race-results .race-v32-car-plate {
  position:relative;z-index:2;max-width:94%;min-width:0;
  display:flex;align-items:center;gap:7px;padding:5px 10px;
  margin:0 auto 8px;border:1px solid #b2d7f25a;border-radius:8px;
  background:linear-gradient(145deg,#172f50,#071a31);
  color:#fff;font:800 clamp(.69rem,1.25vw,.87rem)/1.2 Inter,'Padauk',system-ui,sans-serif;
  box-shadow:0 3px 10px #0006;
}
.race-results .race-v32-car-plate b {
  flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  width:25px;min-height:23px;border-radius:5px;background:#d2e9ff;color:#0b2847;
  font:950 .7rem/1 Inter,system-ui,sans-serif;
}
.race-results .race-v32-car-plate span {
  min-width:0;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;
  -webkit-line-clamp:2;overflow-wrap:anywhere;text-align:center;
}
.race-results .podium-block {position:relative;gap:5px;padding-top:22px;}
.race-results .podium-block .podium-medal.race-v32-medal {
  position:absolute;top:-17px;right:12px;z-index:3;
  display:grid;place-items:center;width:35px;height:35px;
  margin:0;border-radius:50%;border:1px solid #ffffff70;
  background:#0b2246;box-shadow:0 4px 10px #0007;
  font-size:1.5rem;line-height:1;
}
.race-results .place-1 .podium-block {
  box-shadow:inset 0 2px 0 #fff6,0 0 24px #f1bb3e42,0 14px 26px #0004;
}
.race-results .podium-block .race-v32-metrics {
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  width:100%;max-width:222px;gap:7px;margin-top:8px;
}
.race-results .podium-block .race-v32-metric {
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;min-width:0;padding:8px 5px 7px;
  border:1px solid #ffffff32;border-radius:9px;background:#08224445;
  font-variant-numeric:tabular-nums;
}
.race-results .podium-block .race-v32-metric b {
  color:#fff;font:950 clamp(1.03rem,1.85vw,1.43rem)/1 Inter,system-ui,sans-serif;
}
.race-results .podium-block .race-v32-metric small {
  color:#f8fbff;font:750 clamp(.62rem,1.05vw,.74rem)/1.12 Inter,system-ui,sans-serif;
}
.race-results .other-racers #raceOtherList>div {
  padding:10px 8px;border-radius:8px;font-size:clamp(.78rem,1.2vw,.92rem);
}
.race-results .other-racers #raceOtherList>div+div {border-top:1px solid #ffffff20;}
.race-results .other-racers h3 {font-size:1rem;}
@media(max-width:720px){
  .race-results .race-v32-car-plate {gap:4px;padding:4px 5px;margin-bottom:6px;font-size:.66rem;}
  .race-results .race-v32-car-plate b {width:19px;min-height:19px;font-size:.61rem;}
  .race-results .podium-block {padding:19px 5px 10px;}
  .race-results .podium-block .podium-medal.race-v32-medal {
    top:-12px;right:5px;width:26px;height:26px;font-size:1.09rem;
  }
  .race-results .podium-block .race-v32-metrics {gap:3px;margin-top:5px;}
  .race-results .podium-block .race-v32-metric {padding:7px 2px 6px;border-radius:6px;}
  .race-results .podium-block .race-v32-metric b {font-size:clamp(.77rem,3vw,1.04rem);}
  .race-results .podium-block .race-v32-metric small {font-size:clamp(.5rem,1.75vw,.63rem);}
  .race-results .podium-block strong {font-size:clamp(.74rem,2.45vw,.96rem);}
}
@media print{
  body.print-race .race-v32-car-plate {color:#111;background:#fff;border:1px solid #777;}
  body.print-race .race-v32-car-plate b {color:#111;background:#eee;}
  body.print-race .race-v32-metric,body.print-race .race-v32-medal {background:transparent!important;box-shadow:none!important;}
  body.print-race .race-v32-metric b,body.print-race .race-v32-metric small {color:#111!important;}
}
