*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:#030d15;color:#f5fcff}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #ffe275;outline-offset:3px}[hidden]{display:none!important}.shell{position:relative;max-width:500px;height:100vh;height:100dvh;margin:auto;display:flex;flex-direction:column;background:#071b26;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);overflow:hidden}header{display:flex;align-items:center;gap:12px;padding:10px 14px;flex-shrink:0}header b{font-size:17px;letter-spacing:2px}header small{display:block;font-size:11px;color:#9ab8c4}.exit,#pause{display:grid;place-items:center;width:36px;height:36px;border:1px solid #335965;border-radius:11px;color:white;background:#102c38;text-decoration:none;font-size:24px}#pause{margin-left:auto;font-size:15px}.dashboard{display:flex;justify-content:space-around;text-align:center;padding:6px;background:#102b37;border-block:1px solid #254550;flex-shrink:0}.dashboard small{display:block;color:#91b1bd;font-size:9px;letter-spacing:1.5px}.dashboard strong{font-size:22px}.prompt{text-align:center;padding:12px 8px;background:linear-gradient(120deg,#123744,#0a242f);z-index:2;flex-shrink:0}.prompt small{font-size:10px;letter-spacing:2px;color:#8debcf}.prompt h1{font-size:clamp(22px,6vw,30px);margin:2px 0;color:#ffe380;line-height:1.1}.track{position:relative;flex:1;min-height:0;overflow:hidden;touch-action:none;background:#1c232d}canvas{width:100%;height:100%;position:absolute;inset:0}.lane-glow{position:absolute;inset:0 50% 0 5%;background:linear-gradient(transparent,#64ffbd16);transition:transform .14s;pointer-events:none}.lane-glow.right{transform:translateX(100%)}#gates{position:absolute;top:0;left:0;right:0;will-change:transform}.gate{position:absolute;left:6%;width:38%;min-height:60px;border:2px solid #82d9e1;border-radius:14px;padding:10px 5px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:clamp(14px,3.8vw,18px);font-weight:800;line-height:1.15;background:linear-gradient(#173c4b,#09212f);box-shadow:0 5px 0 #030d16,0 0 20px #68dfdd30;overflow-wrap:break-word}.gate:nth-child(2){left:56%}.gate.correct{background:#155440;border-color:#9affb6}.gate.wrong{background:#642632;border-color:#ff8a8a}#car{position:absolute;width:clamp(44px,14vw,62px);height:24%;max-height:140px;object-fit:fill;left:25%;bottom:12px;transform:translateX(-50%);transition:left .14s ease-out;filter:drop-shadow(0 8px 8px #0008);pointer-events:none}.catch-line{position:absolute;left:5%;right:5%;bottom:calc(12px + min(24%,140px) / 2);border-top:2px dashed #ffdf7a55}#feedback{position:absolute;top:25%;left:8%;right:8%;text-align:center;font-size:clamp(18px,5vw,25px);font-weight:900;pointer-events:none;text-shadow:0 3px 6px #000;z-index:4;color:#aaffcd}#feedback.bad{color:#ffb4b4}.track.hit{animation:shake .28s}footer{display:flex;align-items:center;gap:8px;padding:8px 12px;flex-shrink:0;background:#0c2633}footer button{flex:1;min-height:48px;background:#163f4e;border:1px solid #477384;border-radius:14px;color:white;font-weight:800;font-size:16px}footer button.active{background:#ffe080;border-color:#ffe080;color:#082431}footer span{font-size:10px;color:#a3bac5;text-align:center}.overlay{position:absolute;inset:0;z-index:10;background:#061722df;backdrop-filter:blur(9px);display:flex;align-items:center;justify-content:center;padding:20px}.panel{width:100%;max-height:100%;padding:26px 22px;text-align:center;border:1px solid #40747b;border-radius:28px;background:radial-gradient(ellipse at top,#204e58,#0b2634 70%);box-shadow:0 20px 60px #0008}.tag{font-size:10px;letter-spacing:2px;color:#90ead0;font-weight:800}.panel h2{font-size:clamp(35px,12vw,64px);line-height:1;margin:16px 0;letter-spacing:-2px}.panel h2 em{font-style:normal;color:#ffe080}.panel p{font-size:16px;line-height:1.5;color:#d1e4e8;margin:14px 0 22px}.primary{width:100%;min-height:52px;border:0;border-radius:15px;background:#ffe080;color:#082431;font-size:18px;font-weight:900;box-shadow:0 4px 0 #a58131}.panel>a{display:block;color:#afcbd4;margin-top:18px;font-size:13px;text-decoration:none}#review{margin:15px 0;text-align:left;font-size:14px}#review div{padding:8px 10px;border-radius:9px;background:#ffffff09;margin:5px 0}#review strong{color:#ffe080}#review span{display:block;color:#a1e5ca;font-size:13px}@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@media(max-height:640px){header{padding:6px 12px}.prompt{padding:6px}.dashboard strong{font-size:18px}footer button{min-height:42px}.panel{padding:18px}.panel h2{font-size:40px;margin:10px 0}.panel p{font-size:14px;margin:12px 0}#review div{padding:5px 8px}}@media(prefers-reduced-motion:reduce){.track.hit{animation:none}}

/* Grand Prix cockpit: carbon, racing red, telemetry and compact aero panels. */
body{background:#08090c}.shell{background:#111217}header{background:repeating-linear-gradient(135deg,#181a20 0 3px,#14161b 3px 6px);border-top:3px solid #f0313e;border-bottom:1px solid #33343c}header b{font-style:italic;letter-spacing:2px;font-weight:950}header small{color:#ed6971;font-size:9px;letter-spacing:1.5px}.exit,#pause{border-radius:5px;border-color:#4e505b;background:#23252c}.dashboard{background:#14161c;border-color:#353740;gap:2px;padding:5px 10px}.dashboard>div{flex:1;border-right:1px solid #3b3d46}.dashboard>div:last-child{border:0}.dashboard small{color:#b1b3bf;letter-spacing:2px}.dashboard strong{font-style:italic;font-variant-numeric:tabular-nums;color:#fff;font-weight:950}.dashboard>div:last-child strong{color:#ff6470}.prompt{padding:9px 8px 11px;background:linear-gradient(105deg,#c71625,#ed2837 60%,#9d1120);box-shadow:0 5px 18px #0008;clip-path:polygon(0 0,100% 0,100% 86%,94% 100%,6% 100%,0 86%)}.prompt small{color:#ffcad0;font-size:9px;font-weight:800}.prompt h1{color:white;font-style:italic;font-weight:950;letter-spacing:-.7px}.track{background:#17191f}.lane-glow{background:linear-gradient(transparent,#ff263913);transition:transform .085s}.gate{border-radius:4px;border:1px solid #f1f1f5;border-top:4px solid #f33143;background:linear-gradient(135deg,#282b35,#101219);color:white;box-shadow:0 5px 0 #0008;font-weight:900;text-transform:uppercase;font-size:clamp(13px,3.65vw,17px);min-height:58px;clip-path:polygon(0 0,90% 0,100% 20%,100% 100%,10% 100%,0 80%)}.gate.correct{border-top-color:#7dffc1}.gate.wrong{border-top-color:#ff6470}#car{transition:left .085s ease-out;filter:drop-shadow(0 7px 5px #000a)}.catch-line{border-color:#fff3}footer{background:#15171d;border-top:2px solid #393c47;padding:7px 12px}footer button{border-radius:5px;background:linear-gradient(#30333f,#20222b);border-color:#535561;font-style:italic;min-height:44px}footer button.active{background:#e32638;border-color:#ff6975;color:#fff;box-shadow:0 0 16px #ee263944}footer span{font-weight:850;letter-spacing:1px;color:#f19199;font-size:10px;min-width:52px}.overlay{background:#080a10e8}.panel{border-radius:8px;border-color:#42444f;border-top:5px solid #f0313e;background:repeating-linear-gradient(135deg,#1c1e27 0 3px,#181a22 3px 6px);position:relative}.panel:before{content:"";display:block;width:80px;height:16px;margin:0 auto 18px;background:conic-gradient(#fff 25%,#17191f 0 50%,#fff 0 75%,#17191f 0) 0 0/16px 16px;transform:skew(-12deg)}.tag{color:#ff737e;font-style:italic;letter-spacing:1.6px}.panel h2{font-style:italic;font-weight:950;text-transform:uppercase;letter-spacing:-3px}.panel h2 em{color:#ff3d50}.panel p{color:#d2d3dc}.primary{border-radius:5px;background:#ef293c;color:white;font-style:italic;text-transform:uppercase;box-shadow:0 4px 0 #8a1022}.panel>a{color:#bbbcc7}#review strong{color:#ff7e88}#feedback{font-style:italic;font-size:clamp(18px,5vw,24px)}@media(max-height:640px){.prompt{padding:5px 8px 8px}.panel:before{margin-bottom:10px;height:12px}}

#car{transition:left .22s cubic-bezier(.2,.75,.25,1);transform-origin:50% 60%;will-change:left,transform}
@media(prefers-reduced-motion:reduce){#car{transition:left .08s linear}}

#race-progress{display:inline-block;margin-left:10px;padding:2px 6px;border:1px solid #ffffff60;border-radius:3px;color:#fff;font-variant-numeric:tabular-nums}
#boost-cue{position:absolute;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;flex-direction:column;background:linear-gradient(transparent,#090b13e6 30%,#090b13e6 70%,transparent);text-align:center;pointer-events:none;animation:boost-in .35s ease-out}
#boost-cue strong{font-size:clamp(32px,10vw,48px);font-style:italic;font-weight:950;color:#fff;letter-spacing:-2px;text-shadow:4px 4px 0 #e3253d}
#boost-cue span{color:#ff5d70;font-size:13px;letter-spacing:2px;font-weight:850;margin:12px 0}#boost-cue small{font-size:13px;color:#e1e4ed}
.boosted .lane-glow{background:linear-gradient(transparent,#ff26392c)}@keyframes boost-in{from{opacity:0;transform:scale(1.3)}to{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){#boost-cue{animation:none}}

/* Sweep the car and counter-steer while short tyre streaks dissipate. */
#car{transition:none;z-index:3;transform-origin:50% 42%}
.tyre-trail{position:absolute;width:7px;height:45px;border-radius:50%;background:linear-gradient(transparent,#e9edf67a,#a3a7b13b);filter:blur(2px);transform-origin:50% 0;pointer-events:none;z-index:2;opacity:0}

.home-screen{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;background:#070c14;overflow:hidden;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
.home-screen:before{content:"";position:absolute;inset:-20px;background:url("assets/lane-rush-game-assets/home-lights-out.png") center/cover;filter:blur(18px);opacity:.45;pointer-events:none}
.home-art{position:relative;width:min(100%,calc((100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom)) * .5568));aspect-ratio:936/1681;max-height:100%;flex-shrink:0}
.home-art>img{display:block;width:100%;height:100%;object-fit:contain}
.home-actions{position:absolute;left:10%;right:10%;bottom:19%;display:flex;flex-direction:column;align-items:center;gap:8px}
.home-actions .primary{position:relative;overflow:hidden;min-height:clamp(34px,6dvh,54px);font-size:clamp(15px,4.5vw,22px);border:1px solid #ff7180;border-radius:9px;background:linear-gradient(160deg,#ff344c,#e3112a 55%,#a9061b);box-shadow:0 3px 0 #86091b,0 0 20px #ff193c66;text-shadow:0 2px 1px #930819;font-weight:950}
.home-actions .primary:before{content:"";position:absolute;inset:0 auto 0 0;width:23%;background:conic-gradient(#ffffff20 25%,transparent 0 50%,#ffffff20 0 75%,transparent 0) 0 0/20px 20px;transform:skew(-15deg);pointer-events:none}
.home-actions .primary span{margin-left:12px}.home-actions>a{color:#bcc5d6;font-size:clamp(11px,3.3vw,15px);text-decoration:none;padding:3px 8px;text-shadow:0 2px 3px #000}

/* Neon night race, matching the title artwork. */
.shell{background:#090d16;box-shadow:0 0 40px #f019301c;border-inline:1px solid #53607355}
header{background:linear-gradient(115deg,#151c29,#080d16 70%);border-top:2px solid #ff2548;border-bottom:1px solid #62718955;padding:10px 13px;box-shadow:0 0 18px #fa183126;z-index:3}
header b{font-size:19px;letter-spacing:1.8px;text-shadow:0 2px 0 #02050c,0 0 15px #ffffff30}header small{color:#ff526e;letter-spacing:1.6px}
.exit,#pause{border-radius:9px;background:linear-gradient(145deg,#253043,#0d1420);border:1px solid #596779;color:#e9f2ff;box-shadow:inset 0 1px 0 #ffffff18}
.dashboard{background:linear-gradient(#111926,#080d16);border-bottom:1px solid #5a6b8155;padding:8px 12px}.dashboard small{font-size:9px;letter-spacing:1.7px;color:#94a8c2}.dashboard strong{font-size:24px;line-height:1.2;text-shadow:0 0 14px #ffffff25}.dashboard>div{border-color:#66748a40}.dashboard>div:last-child strong{color:#ff385a;text-shadow:0 0 15px #f9244560}
.prompt{background:radial-gradient(ellipse at center,#ae1534,#471023 75%,#110e1c);clip-path:none;border-top:1px solid #ff476860;border-bottom:2px solid #ff3155;box-shadow:0 5px 22px #fb183847;padding:9px 10px 10px;position:relative}.prompt:before,.prompt:after{content:"";position:absolute;top:50%;width:12%;height:2px;background:linear-gradient(90deg,transparent,#ff647c);box-shadow:0 0 10px #ff345e}.prompt:before{left:0}.prompt:after{right:0;transform:rotate(180deg)}.prompt h1{color:#f3f7ff;text-shadow:0 2px 2px #350511,0 0 20px #ff8b9b44;font-size:clamp(23px,6vw,30px)}.prompt small{color:#ffc5cf;font-size:9px;letter-spacing:2px}#race-progress{background:#100e1d55;border-color:#ff698b80;border-radius:5px}
.track:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(90deg,#ff123438,transparent 15%,transparent 85%,#ff123438),linear-gradient(#0a0e1640,transparent 25%,#03050c25)}
.track:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;box-shadow:inset 5px 0 12px #ff204942,inset -5px 0 12px #ff204942}
#gates{z-index:2}.gate{border-radius:9px;clip-path:none;border:1px solid #a1b7cc;border-top:3px solid #ff3156;background:linear-gradient(145deg,#243244,#0a111d 80%);box-shadow:0 4px 0 #03060b,0 0 14px #ff20492b,inset 0 1px 0 #ffffff28;color:#f7fbff;text-shadow:0 2px 2px #0007}.gate.correct{background:linear-gradient(135deg,#205940,#0b2829);border-color:#88ffbd;box-shadow:0 0 22px #5bffa74a}.gate.wrong{background:linear-gradient(135deg,#77203a,#290c1c);border-color:#ff577a;box-shadow:0 0 22px #ff274b55}
.lane-glow{background:linear-gradient(transparent,#ff1c3815)}.catch-line{border-color:#fc476747;z-index:2}#car{filter:drop-shadow(0 7px 5px #000a) drop-shadow(0 0 12px #ff183533)}
footer{background:linear-gradient(#111b2b,#070d16);border-top:1px solid #677b9355;box-shadow:0 -5px 22px #0005;z-index:3;padding:9px 12px;gap:10px}footer button{border-radius:9px;background:linear-gradient(145deg,#263548,#111a29);border:1px solid #657890;font-size:15px;box-shadow:inset 0 1px 0 #ffffff18,0 3px 0 #030810}footer button.active{background:linear-gradient(135deg,#ff3657,#cb092b 75%);border-color:#ff6b87;box-shadow:0 0 18px #ff274a4d,inset 0 1px 0 #ffffff35,0 3px 0 #79051c}footer span{color:#ff718b;font-size:9px;text-shadow:0 0 10px #f8314f}
@media(max-height:640px){header{padding:6px 12px}.dashboard{padding:5px 10px}.dashboard strong{font-size:21px}.prompt{padding:6px 8px 8px}footer{padding:7px 12px}}

/* Transform-only impact and tyre effects keep animation off layout work. */
.shell.wrong-impact{animation:race-impact .42s ease-out}
.shell.wrong-impact:after{content:"";position:absolute;inset:0;z-index:9;pointer-events:none;background:radial-gradient(ellipse,transparent 40%,#ff17375c);border:2px solid #ff345a;animation:impact-flash .42s ease-out forwards}
.tyre-trail{animation:tyre-fade .6s ease-out forwards;will-change:transform,opacity}
.overlay{-webkit-backdrop-filter:blur(9px)}
@keyframes race-impact{0%,100%{transform:translate3d(0,0,0)}15%{transform:translate3d(-7px,2px,0) rotate(-.5deg)}30%{transform:translate3d(7px,-2px,0) rotate(.5deg)}45%{transform:translate3d(-5px,1px,0)}60%{transform:translate3d(4px,-1px,0)}80%{transform:translate3d(-2px,0,0)}}
@keyframes impact-flash{0%,25%{opacity:1}100%{opacity:0}}
@keyframes tyre-fade{0%{opacity:0;transform:translate3d(0,0,0) scaleY(.1)}25%{opacity:.65;transform:translate3d(calc(var(--trail-distance) * .35),15px,0) rotate(var(--trail-angle)) scaleY(1)}60%{opacity:.35;transform:translate3d(calc(var(--trail-distance) * .75),55px,0) rotate(var(--trail-angle)) scaleY(1.4)}100%{opacity:0;transform:translate3d(var(--trail-distance),100px,0) scaleY(1.8)}}
@media(prefers-reduced-motion:reduce){.shell.wrong-impact{animation:none}.tyre-trail{display:none}}

/* Finish-line report shares the title page's wet-road and neon lighting. */
.race-report{background:linear-gradient(#040912d9,#070c15b8),url("assets/lane-rush-game-assets/home-lights-out.png") center 72%/cover;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);padding:18px}
.race-report .panel{background:linear-gradient(145deg,#101927ed,#060d17f0);border:1px solid #71839a85;border-radius:22px;box-shadow:0 24px 70px #000b,inset 0 1px 0 #d5e5ff28,0 0 30px #f4213922;padding:25px 20px;overflow:hidden;position:relative}
.race-report .panel:before{height:18px;width:86px;margin-bottom:18px;filter:drop-shadow(0 0 8px #c4e0ff38)}
.race-report .panel:after{content:"";position:absolute;top:0;left:10%;right:10%;height:2px;background:#ff3254;box-shadow:0 0 22px 5px #ff24465c;pointer-events:none}
.race-report .tag{color:#ff637e;letter-spacing:2px;font-size:10px;display:inline-block;padding:6px 13px;border-radius:20px;border:1px solid #f7436444;background:#d5223e15}
.race-report #title{font-size:clamp(34px,10vw,52px);margin:18px 0 16px;letter-spacing:-1.5px;color:#f0f6ff;text-shadow:0 3px 0 #4f6376,0 0 24px #c4dbf72c;line-height:1.1}
.race-report #description{display:flex;justify-content:center;gap:0;margin:0 0 18px;padding:12px 0;border-block:1px solid #8eabc326;background:linear-gradient(90deg,transparent,#45617a15,transparent)}
.race-report #description>span{flex:1}.race-report #description>span+span{border-left:1px solid #8eabc333}.race-report #description strong{display:block;color:#f8fcff;font-size:27px;font-style:italic;font-weight:950;line-height:1.1}.race-report #description small{display:block;color:#99aec6;letter-spacing:1px;font-size:9px;margin-top:5px;font-weight:700}
.race-report #review{margin:0 0 18px}.race-report #review:before{content:"MISSED MATCHES";display:block;color:#8fa7c1;font-size:9px;letter-spacing:1.8px;margin:0 0 9px;font-weight:800}
.race-report #review div{position:relative;margin:7px 0;padding:10px 13px 10px 17px;border-radius:9px;border:1px solid #6b839733;background:linear-gradient(110deg,#f1203f13,#1f314335);box-shadow:inset 3px 0 0 #f12a4a}
.race-report #review strong{font-size:14px;color:#f4d4dd;display:block}.race-report #review span{font-size:14px;color:#c3e2f3;margin-top:3px;line-height:1.2}.race-report #review span:before{content:"\2192  ";color:#ff5470}
.race-report .primary{position:relative;border-radius:10px;background:linear-gradient(150deg,#ff3d5b,#e31031 60%,#af0822);border:1px solid #ff7a91;box-shadow:0 4px 0 #78071b,0 0 25px #ff1e453c;font-size:18px;min-height:50px;text-shadow:0 2px 0 #930a24}.race-report .panel>a{margin-top:15px;color:#b2c3d9;font-size:13px;padding:3px}
@media(max-height:640px){.race-report{padding:12px}.race-report .panel{padding:17px}.race-report .panel:before{margin-bottom:10px;height:12px}.race-report #title{margin:11px 0;font-size:36px}.race-report #description{padding:8px 0;margin-bottom:12px}.race-report #review{margin-bottom:12px}.race-report #review div{padding:7px 12px}.race-report .panel>a{margin-top:10px}.race-report .primary{min-height:45px}}

.practice-note{margin:0 0 6px;color:#e6edf8;font-size:clamp(11px,3.2vw,14px);line-height:1.5;text-align:center;text-shadow:0 2px 5px #000;font-weight:600}

.flow-panel h2{font-size:clamp(32px,9vw,45px);line-height:1.05}.flow-panel ol{list-style:none;counter-reset:flow;text-align:left;padding:0;margin:20px 0}.flow-panel li{counter-increment:flow;position:relative;padding:10px 0 10px 42px;border-bottom:1px solid #ffffff15}.flow-panel li:before{content:counter(flow);position:absolute;left:0;top:12px;display:grid;place-items:center;width:29px;height:29px;border-radius:50%;background:#ed2340;color:white;font-weight:900}.flow-panel li strong{display:block;font-size:16px;color:#fff}.flow-panel li span{display:block;font-size:14px;line-height:1.4;color:#bbccdf;margin-top:4px}.flow-panel p{font-size:13px;margin:12px 0 18px}
#powerup{position:absolute;top:15%;left:7%;right:7%;z-index:7;pointer-events:none;opacity:0;text-align:center;font-size:clamp(16px,4.6vw,22px);font-style:italic;font-weight:950;color:#eefff5;text-shadow:0 0 15px #64ffbd,0 3px 3px #000;padding:12px 4px;background:linear-gradient(90deg,transparent,#093f36d9,transparent);border-block:1px solid #8affa366}
#powerup.show{animation:powerup-burst .95s ease-out forwards}.count-beat strong{font-size:90px!important;animation:count-pulse .6s ease-out}
@keyframes powerup-burst{0%{opacity:0;transform:translate3d(0,25px,0) scale(.65)}20%{opacity:1;transform:translate3d(0,0,0) scale(1.1)}40%,65%{opacity:1;transform:translate3d(0,0,0) scale(1)}100%{opacity:0;transform:translate3d(0,-35px,0) scale(1.08)}}
@keyframes count-pulse{from{opacity:.3;transform:scale(1.5)}to{opacity:1;transform:scale(1)}}
@media(max-height:640px){.flow-panel{padding:16px}.flow-panel h2{margin:10px 0;font-size:32px}.flow-panel ol{margin:10px 0}.flow-panel li{padding-top:7px;padding-bottom:7px}.flow-panel li span{font-size:13px}.flow-panel:before{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){.count-beat strong{animation:none}#powerup.show{animation:impact-flash .95s ease-out forwards}}



/* The explicit car sway setting also controls trails under Reduced Motion. */
.track.car-sway-enabled .tyre-trail{display:block}
