*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:#0b1220;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Helvetica Neue",Arial,sans-serif;color:#fff;touch-action:none;-webkit-user-select:none;user-select:none;overscroll-behavior:none}
#app{position:fixed;inset:0}
#c{position:absolute;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
.overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:calc(env(safe-area-inset-top) + 14px) 16px calc(env(safe-area-inset-bottom) + 14px);background:radial-gradient(120% 80% at 50% 0%,rgba(20,40,80,.82),rgba(5,8,16,.94));text-align:center;overflow-y:auto}
.brand h1{font-size:44px;line-height:.95;font-weight:900;letter-spacing:-1px;text-transform:uppercase;font-style:italic;background:linear-gradient(180deg,#fff,#9fc4ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand.small h1{font-size:28px}
.kicker{font-size:11px;letter-spacing:3px;color:#7fd1ff;font-weight:700}
.bar{width:70%;max-width:320px;height:6px;border-radius:3px;background:#1d2a44;overflow:hidden}.bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#00a86b,#7fd1ff);transition:width .2s}
#loadtxt{font-size:13px;color:#9ab}
.route{font-size:13px;color:#c6d4e8;max-width:360px;line-height:1.35}
.cars{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;max-width:400px}
.car{background:#fff;border-radius:14px;overflow:hidden;border:3px solid transparent;color:#111;text-align:left;cursor:pointer;position:relative}
.car.on{border-color:#00c27a;box-shadow:0 0 0 3px rgba(0,194,122,.35)}
.car img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:#fff}
.car .nm{font-weight:800;font-size:13px;padding:2px 8px 0}
.car .st{font-size:10px;color:#556;padding:0 8px 7px}
.car .bars{display:flex;gap:3px;padding:0 8px 8px}.car .bars i{flex:1;height:4px;border-radius:2px;background:#dde}.car .bars i.f{background:#00a86b}
.row{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}
.tod button{background:#16233b;color:#cfe;border:1px solid #2b3e60;border-radius:20px;padding:8px 13px;font-size:14px;font-weight:600}
.tod button.on{background:#e8f4ff;color:#0b1220;border-color:#fff}
.go{background:linear-gradient(180deg,#00d084,#00995f);color:#fff;border:0;border-radius:16px;font-size:22px;font-weight:900;letter-spacing:1px;padding:14px 48px;box-shadow:0 6px 0 #00663f,0 10px 24px rgba(0,0,0,.5);font-style:italic}
.go:active{transform:translateY(3px);box-shadow:0 3px 0 #00663f}
.small{font-size:12px;color:#9ab}
.link{background:none;border:0;color:#7fd1ff;font-size:12px;text-decoration:underline;padding:4px}
.link.big{font-size:15px}
#hud{position:absolute;inset:0;pointer-events:none}
.tl{position:absolute;left:10px;top:calc(env(safe-area-inset-top) + 8px);text-shadow:0 2px 6px rgba(0,0,0,.8)}
.pos{font-size:44px;font-weight:900;font-style:italic;line-height:1}.pos sup{font-size:18px}.pos small{font-size:18px;opacity:.75}
.time{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;margin-top:2px}
.tc{position:absolute;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top) + 92px);width:min(70vw,340px);text-align:center}
.cpname{display:inline-block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#00704a;border:2px solid #fff;border-radius:6px;padding:4px 9px;font-size:13px;font-weight:700;box-shadow:0 3px 10px rgba(0,0,0,.4)}
.cpbar{height:4px;background:rgba(255,255,255,.25);border-radius:2px;margin-top:6px;overflow:hidden}.cpbar i{display:block;height:100%;width:0;background:#7fffb2}
#map{position:absolute;right:8px;top:calc(env(safe-area-inset-top) + 8px);width:96px;height:128px;border-radius:10px;background:rgba(8,16,30,.72);border:1px solid rgba(255,255,255,.25)}
.speed{position:absolute;right:14px;bottom:calc(env(safe-area-inset-bottom) + 132px);text-align:right;text-shadow:0 2px 6px rgba(0,0,0,.8)}
.speed b{font-size:46px;font-weight:900;font-style:italic;font-variant-numeric:tabular-nums;display:block;line-height:1}.speed span{font-size:12px;letter-spacing:2px;opacity:.8}
.nitro{position:absolute;right:14px;bottom:calc(env(safe-area-inset-bottom) + 92px);width:120px;height:30px;border-radius:15px;background:rgba(0,0,0,.45);border:2px solid #6cf;overflow:hidden;pointer-events:auto;display:flex;align-items:center;justify-content:center}
.nitro i{position:absolute;left:0;top:0;bottom:0;width:100%;background:linear-gradient(90deg,#0af,#7ff);opacity:.75}
.nitro span{position:relative;font-weight:900;font-size:13px;letter-spacing:2px;font-style:italic}
.nitro.on{border-color:#fff;box-shadow:0 0 18px #3cf}
.pad{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 14px);width:42vw;height:74px;border-radius:18px;background:rgba(255,255,255,.12);border:2px solid rgba(255,255,255,.28);display:flex;align-items:center;justify-content:center;font-size:30px;pointer-events:auto;color:rgba(255,255,255,.85)}
.pad.left{left:10px}.pad.right{right:10px}.pad.act{background:rgba(127,209,255,.35)}
.btn.brake{position:absolute;left:14px;bottom:calc(env(safe-area-inset-bottom) + 98px);width:84px;height:40px;border-radius:12px;background:rgba(200,30,30,.45);border:2px solid rgba(255,120,120,.7);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:13px;letter-spacing:1px;pointer-events:auto}
.btn.brake.act{background:rgba(255,50,50,.8)}
.pausebtn{position:absolute;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top) + 8px);width:38px;height:30px;border-radius:8px;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;font-weight:900;pointer-events:auto;font-size:13px}
.toast{position:absolute;left:50%;top:calc(env(safe-area-inset-top) + 150px);transform:translateX(-50%);background:rgba(0,112,74,.94);border:3px solid #fff;border-radius:10px;padding:7px 13px;font-weight:800;font-size:15px;text-align:center;box-shadow:0 8px 30px rgba(0,0,0,.5);max-width:86vw;pointer-events:none;line-height:1.25}
.toast small{display:block;font-size:13px;font-weight:600;opacity:.9}
.toast.red{background:rgba(190,20,20,.92)}.toast.gold{background:rgba(200,140,0,.94)}
.count{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);font-size:110px;font-weight:900;font-style:italic;text-shadow:0 6px 24px rgba(0,0,0,.7);pointer-events:none}
.fade{position:absolute;inset:0;background:#000;opacity:0;pointer-events:none;transition:opacity .25s}
#finish h2{font-size:40px;font-weight:900;font-style:italic}
.ftime{font-size:30px;font-weight:800;font-variant-numeric:tabular-nums}
.fbest{font-size:14px;color:#ffd75e}
.results{list-style:none;width:100%;max-width:340px;background:rgba(255,255,255,.07);border-radius:12px;padding:6px 12px;text-align:left}
.results li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.08);font-size:15px}
.results li.me{color:#7fffb2;font-weight:800}
@media (orientation:landscape){
 .brand.small h1{font-size:22px}.cars{grid-template-columns:repeat(4,1fr);max-width:760px}.car .st{display:none}
 .overlay{gap:8px}.tc{top:calc(env(safe-area-inset-top) + 10px)}
 .pad{width:22vw;height:64px}
}

.lapc{font:800 12px/1.2 system-ui,Arial;color:#ffd23f;letter-spacing:.04em;margin-top:2px;text-shadow:0 1px 3px #000}
#laps button{min-width:64px}

/* v7: 8-car picker. Phone portrait: 2 columns in their own scroll box; short landscape: one swipeable row; desktop: 4 x 2 */
#menu{justify-content:flex-start}
#menu>:first-child{margin-top:auto}#menu>:last-child{margin-bottom:auto}
.cars{grid-auto-rows:max-content;align-content:start;max-height:max(230px,calc(100dvh - 405px));overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;padding:3px;border-radius:16px;flex:0 0 auto;scrollbar-width:thin}
.car img{aspect-ratio:16/10}
.car .new{position:absolute;top:6px;right:6px;background:#ff3b5c;color:#fff;font-size:9px;font-weight:900;letter-spacing:1px;padding:2px 6px;border-radius:8px}
.carhint{font-size:11px;color:#8fa6c4;margin-top:-6px}
@media (orientation:landscape){
 .cars{max-width:820px;max-height:none;overflow:visible}
 .car img{aspect-ratio:16/9}
 .carhint{display:none}
}
@media (orientation:landscape) and (max-height:560px){
 .brand.small .kicker,.route{display:none}
 .cars{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:132px;overflow-x:auto;overflow-y:hidden;touch-action:pan-x;max-width:100%;width:auto}
 .car .nm{font-size:11px}.car .bars{padding:0 6px 6px}
}

/* v12: paint picker for the selected car */
.paint{display:flex;flex-direction:column;align-items:center;gap:3px;flex:0 0 auto}
.pnm{font-size:12px;color:#c6d4e8;letter-spacing:.3px}.pnm b{color:#fff}
.sws{display:flex;gap:4px;flex-wrap:wrap;justify-content:center}
.sw{width:44px;height:44px;border-radius:50%;border:0;background:transparent;padding:4px;cursor:pointer;transition:transform .12s}
.sw i{display:block;width:100%;height:100%;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.3),0 1px 4px rgba(0,0,0,.6)}
.sw.on{box-shadow:0 0 0 3px #00c27a}.sw:hover{transform:scale(1.08)}
.cars{max-height:max(200px,calc(100dvh - 480px))}
@media (orientation:landscape){ .cars{max-height:none} }
@media (orientation:landscape) and (max-height:560px){
 .paint{flex-direction:row;gap:8px}.pnm{min-width:110px;text-align:right}.sws{flex-wrap:nowrap}
 .sw{width:40px;height:40px}
}

/* v13: camera view toggle (chase / inside) */
.viewbtn{position:absolute;right:8px;top:calc(env(safe-area-inset-top) + 144px);width:58px;height:58px;border-radius:14px;background:rgba(0,0,0,.45);border:2px solid rgba(255,255,255,.35);display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:auto;cursor:pointer;gap:1px}
.viewbtn b{font-size:22px;line-height:1}.viewbtn span{font-size:9px;font-weight:900;letter-spacing:1px}
.viewbtn.on{border-color:#7fd1ff;background:rgba(0,40,70,.55)}

/* v7 photoreal cockpit overlay (inside view) */
#cabin{position:absolute;inset:0;pointer-events:none;overflow:hidden;will-change:transform}
#cabin.hidden{display:none}
#cabin .cab-top,#cabin .cab-bot{position:absolute;background-repeat:no-repeat}
#cabin .cab-cl{position:absolute;border-radius:4px}
#cabin .cab-wh{position:absolute;transform-origin:50% 50%;will-change:transform;filter:drop-shadow(0 6px 10px rgba(0,0,0,.45))}
#cabin .cab-glare{position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,0) 0%,rgba(255,255,255,.035) 30%,rgba(255,255,255,0) 50%)}

/* v15: interior colour picker + cabin preview (new minivans / Yukon) */
.trow{display:flex;align-items:center;gap:8px}
.tprev{width:96px;height:54px;object-fit:cover;object-position:20% 70%;border-radius:8px;background:linear-gradient(#9cc4ea,#dcebf7 60%,#8a8f86 61%);box-shadow:0 1px 4px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.25)}
.trim .sw{width:38px;height:38px}
@media (orientation:landscape) and (max-height:560px){ .tprev{width:72px;height:40px} }
#menu:has(#trim:not(.hidden)) .cars{max-height:max(180px,calc(100dvh - 540px))}
@media (orientation:landscape){ #menu:has(#trim:not(.hidden)) .cars{max-height:none} }
