/* ===================================================================
   RACE THE GRID — interface (v2.1)
   One identity everywhere: Barlow Condensed 800 italic display in two
   tones (white / mint), Manrope for reading, uppercase micro-labels with
   wide tracking, dark glass panels with a 1 px line and a 3 px accent
   rule, one gradient primary button, one quiet secondary.
   =================================================================== */
:root{
  --teal:#1fc9b4; --mint:#5adfcb; --mint-ink:#062a24;      /* v2.2: PETRONAS-leaning teal, no neon cyan */
  --paper:#ffffff; --muted:#a9b4bd; --dim:#6f7b85; --warn:#ff7b6e; --good:#5ee39a;
  --line:rgba(255,255,255,.14); --line-strong:rgba(255,255,255,.26);
  --glass:linear-gradient(140deg,rgba(24,30,38,.92),rgba(9,13,18,.94));
  --glass-flat:rgba(12,16,22,.86);
  --display:"Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --ui:Manrope,"Segoe UI",Arial,sans-serif;
  --pad:32px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;background:#0b0f14;color:var(--paper);font-family:var(--ui);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:none}
#gl{position:fixed;inset:0;width:100%;height:100%;display:block}
button{font-family:var(--ui);cursor:pointer;color:inherit;border:0;background:none;touch-action:none}
button:focus-visible,input:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
.hidden{display:none!important}
.eyebrow{font-family:var(--ui);font-size:11px;letter-spacing:.2em;color:#c2d1d8;font-weight:700;text-transform:uppercase}
h1,h2{font-family:var(--display);font-weight:800;font-style:italic;line-height:.88;letter-spacing:-.015em;margin:20px 0;text-transform:uppercase}
h1{font-size:clamp(72px,7.4vw,116px);margin:14px 0 16px}
h2{font-size:clamp(46px,5vw,64px)}
em{font-style:inherit;color:var(--mint)}

/* ---- scene vignettes: the interface and the 3D are one picture ---- */
.vignette{position:fixed;inset:0;pointer-events:none;transition:opacity .4s;
  background:linear-gradient(90deg,rgba(6,11,16,.92) 0%,rgba(9,16,21,.62) 28%,rgba(9,16,21,0) 62%),linear-gradient(0deg,rgba(7,16,21,.7),transparent 30%,transparent 76%,rgba(8,16,23,.4))}
body[data-state=race] .vignette,body[data-state=lights] .vignette,body[data-state=finish] .vignette{background:linear-gradient(0deg,rgba(8,16,23,.62),transparent 26%,transparent 70%,rgba(8,16,23,.45))}
body.fast[data-state=race] .vignette{background:linear-gradient(0deg,rgba(8,16,23,.62),transparent 26%,transparent 70%,rgba(8,16,23,.45)),radial-gradient(ellipse at center,transparent 52%,rgba(0,0,0,.42) 100%)}
body.off[data-state=race] .vignette{background:linear-gradient(0deg,rgba(8,16,23,.62),transparent 26%,transparent 70%,rgba(8,16,23,.45)),radial-gradient(ellipse at center,transparent 48%,rgba(150,70,20,.45) 100%)}

/* ---- header / footer ---- */
.top{position:fixed;top:26px;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;align-items:center;z-index:6;pointer-events:none}
.top>*{pointer-events:auto}
.brand{border-left:3px solid var(--teal);padding-left:13px}
.brand b{display:block;font-size:16px;letter-spacing:.1em;font-weight:800}
.brand span{display:block;color:#d2d9db;font-size:10px;letter-spacing:.16em;margin-top:5px;font-weight:600}
.actions{display:flex;gap:8px}
.actions button{background:linear-gradient(#31363bcc,#191e23dd);border:1px solid rgba(221,230,234,.2);padding:11px 14px;font-size:12px;border-radius:3px;box-shadow:inset 0 1px rgba(255,255,255,.06);font-weight:700;letter-spacing:.08em}
.actions button.on{border-color:var(--mint);color:var(--mint)}
.progress{position:fixed;top:87px;left:var(--pad);right:var(--pad);height:3px;background:rgba(255,255,255,.18);z-index:5;opacity:0;transition:opacity .3s}
.progress i{display:block;height:100%;width:0;background:var(--mint)}
body[data-state=race] .progress,body[data-state=finish] .progress,body[data-state=paused] .progress{opacity:1}
.foot{position:fixed;bottom:18px;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:.1em;color:#a6b2ba;pointer-events:none;z-index:5;font-weight:600}
body[data-state=race] .foot,body[data-state=lights] .foot,body[data-state=finish] .foot,body[data-state=paused] .foot{display:none}
.presented{display:flex;gap:18px;align-items:center;letter-spacing:.14em;font-size:10px;color:#c9d2d8}
.presented b{font-family:var(--display);font-size:15px;letter-spacing:.06em;color:#e6edf1;font-weight:700}
.presented img{height:16px;width:auto;opacity:.9}
.presented b.ph{color:#8d98a2;border:1px dashed rgba(255,255,255,.3);padding:2px 8px;font-weight:600}

/* ---- HUD ---- */
.hud{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .35s;z-index:4}
body[data-state=lights] .hud,body[data-state=race] .hud,body[data-state=paused] .hud,body[data-state=finish] .hud{opacity:1}
.hud>*{pointer-events:auto}
.timing{position:absolute;top:106px;left:var(--pad);min-width:228px;padding:13px 17px;background:linear-gradient(110deg,rgba(16,22,30,.93),rgba(28,36,45,.86));border-left:3px solid #dee5e8;box-shadow:0 4px 18px rgba(0,0,0,.14)}
.timing label{font-size:10px;letter-spacing:.14em;color:#c2d1d8;font-weight:700}
.timing strong{display:block;font:500 44px/1.15 var(--display);font-variant-numeric:tabular-nums;margin-top:3px;letter-spacing:.01em}
.delta{font:600 12px var(--ui);letter-spacing:.06em;color:var(--mint);padding-top:4px;min-height:18px;font-variant-numeric:tabular-nums}
.delta.behind{color:var(--warn)}
.raceinfo{position:absolute;right:var(--pad);top:106px;display:flex;gap:24px;padding:13px 18px;background:rgba(23,31,39,.88);border-top:2px solid rgba(206,218,221,.5);font-size:10px;letter-spacing:.14em;color:#c9d2d8;font-weight:700}
.raceinfo b{display:block;font:500 24px/1 var(--display);color:#fff;margin-top:6px;font-variant-numeric:tabular-nums}
.sectors{position:absolute;right:var(--pad);top:184px;display:flex;gap:3px}
.sec{background:rgba(23,34,43,.9);padding:8px 10px;border-bottom:2px solid #8a9ba5;color:#bdc8cf;min-width:62px}
.sec span{display:block;font-size:10px;letter-spacing:.14em;font-weight:700}
.sec b{display:block;font:600 15px/1 var(--display);margin-top:6px;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.sec.live{border-color:#e6edf1}.sec.done{border-color:var(--mint)}.sec.better{border-color:var(--good)}.sec.better b{color:var(--good)}.sec.worse{border-color:var(--warn)}.sec.worse b{color:var(--warn)}
.tip{position:absolute;top:31%;left:50%;transform:translateX(-50%);font-size:13px;font-weight:600;background:rgba(23,35,42,.9);border-bottom:2px solid #8da0a7;padding:9px 16px;border-radius:2px;white-space:nowrap;letter-spacing:.02em}
.tip:empty{display:none}
.toast{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%) scale(.92);font:800 italic clamp(44px,7vw,110px) var(--display);letter-spacing:.02em;color:#ecf1f4;text-shadow:0 5px 35px #000;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;text-transform:uppercase;white-space:nowrap}
.toast.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
/* v2.2.1: the HUD light strip is gone — the countdown is the gantry's own lamps in the scene */

.tele{position:absolute;bottom:26px;right:var(--pad);display:flex;gap:17px;align-items:center;padding:24px 19px 13px;background:linear-gradient(140deg,rgba(24,32,39,.92),rgba(9,14,19,.94));border:1px solid rgba(168,182,192,.3);border-radius:5px;box-shadow:0 7px 18px rgba(0,0,0,.32),inset 0 1px rgba(218,230,238,.12)}
.tele .row{display:flex;align-items:flex-end;gap:17px}
.rpm{position:absolute;top:9px;left:12px;right:12px;height:5px;display:flex;gap:3px}
.rpm i{flex:1;height:100%;background:rgba(255,255,255,.09);border-radius:1px}
.rpm i.on{background:#6bdc76}.rpm i.on.mid{background:#d0e87c}.rpm i.on.hi{background:#bd93ff;box-shadow:0 0 8px rgba(189,147,255,.8)}
.gear{background:#090e14;border:1px solid #55646e;font:500 43px/1.4 var(--display);padding:2px 13px;color:#f0f3f7;border-radius:3px;min-width:56px;text-align:center}
.speed b{display:block;font:600 57px/.9 var(--display);font-variant-numeric:tabular-nums;letter-spacing:.01em}
.speed span{display:block;font-size:10px;letter-spacing:.13em;color:#b5bec9;margin-top:6px;font-weight:700}
.boost{width:84px}
.boost>span,.boost small{display:block;font-size:10px;letter-spacing:.12em;color:#b5c1c8;font-weight:700}
.boost small{margin-top:8px;color:var(--mint)}
.boost i{display:block;height:6px;background:rgba(182,204,207,.2);margin-top:8px}
.boost i b{display:block;width:100%;height:100%;background:var(--mint);transform-origin:left;transform:scaleX(1);transition:transform .08s linear}
.boost.active i b{background:#fff;box-shadow:0 0 10px var(--mint)}
#map{position:absolute;left:var(--pad);bottom:26px;width:180px;height:135px;background:rgba(17,27,35,.6);border:1px solid rgba(189,201,211,.2);border-radius:4px}
.fps{position:absolute;left:50%;top:96px;transform:translateX(-50%);font-size:10px;color:rgba(255,255,255,.45);letter-spacing:.1em}

/* ---- touch controls (shown on coarse pointers, any orientation) ---- */
.controls{position:fixed;left:var(--pad);right:var(--pad);bottom:24px;display:none;justify-content:space-between;align-items:flex-end;gap:12px;pointer-events:none;z-index:5}
body.touch[data-state=race] .controls,body.touch[data-state=lights] .controls{display:flex}
.controls>*{pointer-events:auto}
.steer{position:relative;flex:1;max-width:46vw;height:70px;border-radius:6px;background:linear-gradient(160deg,rgba(62,72,80,.93),rgba(23,33,41,.93));border:1px solid rgba(202,229,228,.42);border-bottom:3px solid #03090c;backdrop-filter:blur(8px);box-shadow:inset 0 1px rgba(255,255,255,.2),0 5px 13px rgba(0,0,0,.32)}
.steer span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;letter-spacing:.16em;color:#b5bec4;pointer-events:none;font-weight:800}
.steer i{position:absolute;top:8px;bottom:8px;left:50%;width:56px;margin-left:-28px;border-radius:5px;background:rgba(79,233,207,.24);border:1px solid var(--mint)}
.pedals{display:flex;gap:10px}
.pedal{height:70px;min-width:92px;padding:0 24px;border-radius:6px;font-size:13px;font-weight:800;letter-spacing:.08em;background:linear-gradient(160deg,rgba(62,72,80,.93),rgba(23,33,41,.93));border:1px solid rgba(202,229,228,.42);border-bottom:3px solid #03090c;backdrop-filter:blur(8px);box-shadow:inset 0 1px rgba(255,255,255,.2),0 5px 13px rgba(0,0,0,.32)}
.pedal.boost{color:#adf2df;border-top:2px solid #75d3bc}
.pedal.brake{color:#efc6bf;border-top:2px solid #dc968e}
.pedal.on{transform:translateY(2px);filter:brightness(1.25)}
.pedal.boost.on{background:linear-gradient(#246656,#13392e);border-color:#8de6cc}
.pedal.brake.on{background:#87392f;border-color:#f3b6a5}
/* with controls on screen, the telemetry and the map move up out of their way — landscape and portrait alike (R3) */
body.touch .tele{bottom:122px}
body.touch #map{bottom:122px}

/* ---- panels ---- */
.panel{position:fixed;inset:0;display:none;z-index:7;overflow:hidden}
body[data-state=intro] .panel.intro,body[data-state=paused] .panel.paused,body[data-state=result] .panel.result,body[data-state=error] .panel.intro{display:block}
.intro .in{position:absolute;left:7%;top:50%;transform:translateY(-46%);max-width:560px}
.lead{font-size:16px;line-height:1.55;color:#d0d7db;margin:0 0 6px}
.brief{display:flex;gap:30px;margin:16px 0 18px}
.brief span{font-size:11px;letter-spacing:.08em;color:#aebbc2;font-weight:700}
.brief b{display:block;font:500 30px/1 var(--display);color:#fff;margin-bottom:6px;font-variant-numeric:tabular-nums}
.challenge{border-left:3px solid var(--mint);background:rgba(23,39,43,.9);padding:12px 16px;margin:18px 0;max-width:420px}
.challenge .cl{display:block;font-size:11px;letter-spacing:.14em;color:#b1c3c9;font-weight:700}
.challenge b{display:block;font:500 38px/1.1 var(--display);color:#fff;font-variant-numeric:tabular-nums}
.challenge small{display:block;font-size:13px;color:#d2dbde;line-height:1.5;margin-top:4px}
body.has-challenge .brief{display:none}
.field{margin:0 0 12px;max-width:340px}
.field label{display:block;font-size:11px;letter-spacing:.14em;color:#c4cdd2;font-weight:700;margin-bottom:7px}
.field input{display:block;width:100%;background:#0a1118;border:1px solid rgba(103,117,129,.55);border-radius:3px;color:#fff;font:600 16px var(--ui);padding:13px 14px;letter-spacing:.06em;text-transform:uppercase}
.field input::placeholder{color:#5f6c76;letter-spacing:.14em}
.primary{background:linear-gradient(120deg,#b6f0e6,#48dcbf);color:var(--mint-ink);border:1px solid #a2ecdd;border-radius:3px;padding:17px 24px;min-width:260px;font-size:14px;letter-spacing:.04em;font-weight:800;box-shadow:inset 0 1px rgba(255,255,255,.5),0 6px 18px rgba(0,0,0,.28)}
.primary:hover{filter:brightness(1.08)}
.secondary{background:linear-gradient(#30373b,#1d2429);border:1px solid rgba(100,112,118,.55);border-radius:3px;padding:13px 18px;font-size:13px;color:#e4e9eb;font-weight:700;letter-spacing:.04em}
.secondary:hover{background:#3c4a4e}
.secondary:disabled{opacity:.6;cursor:default}
.keys{margin-top:12px;font-size:11.5px;line-height:1.7;color:#b1bdc4;max-width:520px}
.touchnote{display:none}
body.touch .touchnote{display:inline}

/* modals: pause, result */
.panel.paused,.panel.result{display:none;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;background:rgba(6,10,14,.35)}
.modal{position:relative;width:min(480px,94vw);margin:6vh auto 24px;background:linear-gradient(130deg,rgba(27,35,43,.97),rgba(14,21,28,.96));border:1px solid rgba(194,213,227,.3);border-top:3px solid var(--mint);backdrop-filter:blur(18px);padding:30px;text-align:center;border-radius:5px;box-shadow:0 20px 70px rgba(0,0,0,.45)}
.modal.wide{width:min(520px,94vw);text-align:left}
.modal h2{margin:14px 0 18px}
.modal .primary{width:100%;min-width:0}
.panel.paused .secondary{display:block;margin:14px auto 0}
.rtime{font:500 clamp(58px,9vw,84px)/1 var(--display);color:#e6f4f0;font-variant-numeric:tabular-nums;margin:0 0 8px;letter-spacing:.01em}
.rcompare{font-size:14px;line-height:1.6;color:#c7d1d8;min-height:20px;margin-bottom:12px}
.rsectors{display:flex;gap:28px;margin:14px 0 18px;padding:14px 0;border-block:1px solid rgba(130,148,159,.3)}
.rsectors div span{display:block;font-size:10px;letter-spacing:.14em;color:#aebfc8;font-weight:700}
.rsectors div b{display:block;font:500 26px/1.1 var(--display);margin-top:5px;font-variant-numeric:tabular-nums}
.rrow{display:flex;gap:8px;margin-top:10px}
.rrow .primary,.rrow .secondary{flex:1;padding:13px 8px;font-size:13px;min-width:0}
.share{display:flex;gap:6px;margin-top:12px}
.share input{flex:1;min-width:0;background:#0a1118;border:1px solid rgba(103,117,129,.55);border-radius:3px;color:#fff;font:500 12px var(--ui);padding:11px 12px}
.share button{padding:0 14px;border-radius:3px;border:1px solid #79878d;background:#3a4952;font-size:12px;font-weight:700;letter-spacing:.06em}
.boardwrap{margin-top:18px;border-top:1px solid rgba(130,148,159,.3);padding-top:14px}
.boardtitle{font-size:10px;letter-spacing:.24em;color:#aebfc8;font-weight:700;margin-bottom:8px}
.board{list-style:none;margin:0;padding:0;max-height:200px;overflow:auto;touch-action:pan-y}
.board li{display:flex;align-items:center;gap:12px;padding:7px 0;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px}
.board li span{width:22px;color:#8d9aa3;font:800 15px var(--display)}
.board li b{flex:1;font-weight:700;letter-spacing:.04em}
.board li em{font-style:normal;font:600 17px var(--display);font-variant-numeric:tabular-nums;color:#fff}
.board li.mine b,.board li.mine em{color:var(--mint)}
.board .empty{color:var(--dim);font-size:13px}
.modal .presented{justify-content:flex-start;margin-top:18px;padding-top:12px;border-top:1px solid rgba(130,148,159,.3)}

/* ---- portrait phones ---- */
@media (max-aspect-ratio:1/1){
  :root{--pad:16px}
  .top{top:16px}.brand b{font-size:12px}.brand span{font-size:8px;letter-spacing:.1em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}
  .actions{gap:5px}.actions button{padding:9px 8px;font-size:10px;white-space:nowrap}
  .progress{top:74px}
  .timing{top:88px;min-width:172px;padding:10px 13px}.timing strong{font-size:34px}
  .raceinfo{top:88px;gap:12px;padding:10px 12px;font-size:9px}.raceinfo b{font-size:19px}
  .sectors{top:156px}.sec{padding:5px 8px;min-width:50px}.sec b{font-size:12px}
  .tip{top:34%;bottom:auto;font-size:11px;padding:8px 12px;white-space:normal;width:max-content;max-width:92%}   /* above the car, under the timing blocks */
  .fps{top:auto;bottom:6px;font-size:9px}
  .toast{top:34%}
  .tele{gap:10px;padding:22px 12px 12px}.speed b{font-size:44px}.gear{font-size:31px;padding:1px 9px;min-width:44px}.boost{width:56px}
  #map{width:122px;height:92px}
  .intro .in{left:16px;right:16px;top:auto;bottom:56px;transform:none;max-width:none}
  h1{font-size:clamp(64px,19vw,86px);margin:16px 0 12px}
  .lead{font-size:14px;line-height:1.5}.lead br{display:none}
  .brief{gap:22px;margin:14px 0 16px}.brief b{font-size:24px}
  .keys{display:none}
  .vignette{background:linear-gradient(0deg,rgba(8,15,23,1) 4%,rgba(7,17,26,.75) 42%,transparent 82%)}
  .foot{left:16px;right:16px;bottom:14px;font-size:8px}.foot .presented{display:none}
  .modal{margin:4vh auto 20px;padding:22px}.modal h2{font-size:44px}
  .rsectors{gap:16px}.rrow{flex-direction:column}
}
/* ---- landscape phones (short viewports) ---- */
@media (max-height:520px){
  :root{--pad:18px}
  .top{top:12px}.brand b{font-size:12px}.brand span{font-size:8px}
  .actions button{padding:8px 9px;font-size:10px}
  .progress{top:56px}
  .timing{top:66px;min-width:160px;padding:8px 12px}.timing strong{font-size:30px}.delta{font-size:11px;padding-top:2px}
  .raceinfo{top:66px;gap:12px;padding:8px 12px;font-size:9px}.raceinfo b{font-size:18px;margin-top:4px}
  .sectors{top:126px}.sec{padding:4px 8px;min-width:48px}.sec b{font-size:12px}
  .tele{padding:18px 12px 10px;gap:10px}.speed b{font-size:40px}.gear{font-size:28px;padding:1px 8px;min-width:40px}.boost{width:56px}
  #map{width:125px;height:92px}
  .tip{top:22%;font-size:11px;padding:7px 12px}
  .steer{height:58px;max-width:40vw}.pedal{height:58px;min-width:72px;padding:0 16px;font-size:12px}
  body.touch .tele{bottom:96px}body.touch #map{bottom:96px}.controls{bottom:16px}
  .intro .in{left:6%;top:50%;transform:translateY(-46%);max-width:56vw}
  h1{font-size:clamp(48px,11vh,72px);margin:10px 0}.lead{font-size:12px;line-height:1.45;margin-bottom:6px}
  .brief{margin:10px 0 12px;gap:20px}.brief b{font-size:22px}.field{margin-bottom:8px}.field input{padding:9px 12px;font-size:14px}
  .primary{padding:12px 20px;min-width:220px;font-size:13px}.keys{display:none}
  .foot{display:none}
  .modal{margin:3vh auto 16px;padding:18px 22px}.modal h2{font-size:40px;margin:10px 0 12px}.rtime{font-size:52px}
  .rsectors{margin:10px 0 12px;padding:10px 0}.board{max-height:120px}
}
@media (max-width:360px){.brand span{font-size:7px}.brand b{font-size:11px}.tele{gap:7px;padding-inline:9px}.speed b{font-size:38px}.pedal{min-width:58px;padding:0 11px}#map{width:110px;height:82px}}

/* ---- loading gate (v2.2) ---- */
.loading{position:fixed;left:0;right:0;bottom:12vh;display:none;flex-direction:column;align-items:center;gap:8px;z-index:8;pointer-events:none;text-align:center}
body[data-state=loading] .loading{display:flex}
.loading b{font-family:var(--display);font-style:italic;font-weight:800;font-size:34px;letter-spacing:.01em;text-transform:uppercase;color:#fff}
.loading b i{font-style:normal;animation:ldots 1.2s infinite}.loading b i:nth-child(2){animation-delay:.2s}.loading b i:nth-child(3){animation-delay:.4s}
@keyframes ldots{0%,60%,100%{opacity:.2}30%{opacity:1}}
.loading span{font-size:11px;letter-spacing:.18em;color:#9fb0b8;text-transform:uppercase}
.loading .credit{margin-top:18px;color:#c9d3d8;letter-spacing:.22em}

/* v3.0: corner name label (real circuits) under the sector strip; the intro's circuit line */
.hud .corner{position:absolute;left:50%;top:21%;transform:translateX(-50%) translateY(-6px);font:700 13px/1 Manrope,"Segoe UI",Arial,sans-serif;letter-spacing:.22em;color:#e6edf1;opacity:0;transition:opacity .25s,transform .25s;pointer-events:none;white-space:nowrap;padding:6px 12px;border-left:2px solid var(--teal);background:rgba(11,15,20,.45);backdrop-filter:blur(4px)}
.hud .corner.on{opacity:.92;transform:translateX(-50%) translateY(0)}
body.portrait .hud .corner{top:25%;font-size:11px;letter-spacing:.18em}
@media (max-height:520px){.hud .corner{top:27%;font-size:11px}}
.intro .circuit{font:700 12px/1.3 Manrope,"Segoe UI",Arial,sans-serif;letter-spacing:.2em;color:var(--mint);margin:-6px 0 14px}

/* v3.2 — start-light strip (mirrors the gantry lamps, console style) and the predictive brake cue */
.startlights{position:absolute;top:31%;left:50%;transform:translateX(-50%);display:flex;gap:14px;padding:12px 18px;background:rgba(9,13,17,.78);border:1px solid rgba(168,182,192,.22);border-radius:6px;opacity:0;transition:opacity .2s;pointer-events:none}
body[data-state="lights"] .startlights{opacity:1}
.startlights i{width:36px;height:36px;border-radius:50%;background:#2a1414;box-shadow:inset 0 2px 6px rgba(0,0,0,.6)}
.startlights i.on{background:radial-gradient(circle at 40% 35%,#ff8a80,#ff1f1f 45%,#b00000);box-shadow:0 0 18px rgba(255,40,40,.8),0 0 4px #ff6b6b}
.startlights.go i{background:radial-gradient(circle at 40% 35%,#c9fff0,#2fe3b8 45%,#07946f);box-shadow:0 0 18px rgba(47,227,184,.8)}
.brakecue{position:absolute;top:21%;left:50%;transform:translateX(-50%) scale(.94);display:flex;align-items:baseline;gap:10px;padding:8px 18px 8px 16px;background:linear-gradient(90deg,#b3161b,#e0262c);border-radius:3px;opacity:0;transition:opacity .12s,transform .12s;pointer-events:none;box-shadow:0 6px 20px rgba(160,10,10,.35)}
.brakecue.on{opacity:1;transform:translateX(-50%) scale(1)}
.brakecue b{font:800 italic 26px var(--display);letter-spacing:.06em;color:#fff}
.brakecue span{font:700 13px var(--ui,Manrope,sans-serif);color:#ffe3e3;letter-spacing:.06em}
.kbd{display:inline-block;margin-left:8px;padding:1px 6px;border:1px solid currentColor;border-radius:3px;font-size:10px;opacity:.7}
body.portrait .startlights{top:21%;gap:9px;padding:9px 12px}body.portrait .startlights i{width:22px;height:22px}
body.portrait .brakecue{top:29%}
body.cue .hud .corner{opacity:0!important}
.hud .tip{top:30%;border-bottom:0;border-left:2px solid var(--teal);background:rgba(14,20,24,.85)}
