:root{--lime:#d9f35c;--white:#f5f5e9;--muted:#b9c2b8;--ink:#17231f;--panel:rgba(17,29,24,.88)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#17231f;color:var(--white);font-family:Inter,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit;border:0}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:4px}button:disabled{opacity:.6;cursor:wait}#scene{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.vignette{position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(6,18,13,.6) 0%,transparent 65%),linear-gradient(0deg,rgba(5,15,10,.45),transparent 24%,transparent 78%,rgba(5,15,10,.24))}.topbar{position:fixed;z-index:10;top:0;left:0;right:0;height:92px;padding:0 4.5vw;display:flex;align-items:center;gap:28px}.brand{display:flex;align-items:center;gap:7px;color:var(--white);font-size:19px;font-style:italic;font-weight:900;letter-spacing:-.7px;text-decoration:none}.brand svg{margin-right:3px;color:var(--lime)}.brand b{color:var(--lime)}.edition{font-size:10px;font-weight:600;letter-spacing:2px;color:#d1d8cb}.edition i{display:inline-block;height:3px;width:3px;background:var(--lime);vertical-align:middle;margin:0 8px}.top-actions{margin-left:auto;display:flex;gap:12px;align-items:center}.icon-btn{background:rgba(20,35,27,.5);border:1px solid #ffffff25;padding:10px 14px;border-radius:3px;font-size:11px;letter-spacing:1px;backdrop-filter:blur(12px)}.icon-btn span{color:var(--lime);margin-left:6px}.icon-btn:hover{background:#304538}.menu{height:100%;padding:115px 4.5vw 85px;display:flex;align-items:center;justify-content:space-between;gap:5vw}.menu-copy{padding-bottom:5vh;pointer-events:none}.eyebrow{font-size:10px;letter-spacing:3px;font-weight:700;color:var(--lime)}.live-dot{display:inline-block;width:6px;height:6px;background:var(--lime);border-radius:50%;margin-right:10px;box-shadow:0 0 12px #d9f35c66}h1{font-size:clamp(42px,5.4vw,82px);letter-spacing:-2px;line-height:1.18;font-weight:900;margin:25px 0}h1 span{color:var(--lime)}.intro{font-size:14px;line-height:1.9;letter-spacing:1.5px;color:#d5dcd0}.menu-tags{display:flex;gap:20px;margin-top:32px;font-size:10px;color:#cbd4c5;letter-spacing:1px}.menu-tags span+span{border-left:1px solid #ffffff40;padding-left:20px}.setup{width:400px;flex-shrink:0;background:var(--panel);backdrop-filter:blur(24px);border:1px solid #c0d5bc28;padding:25px 25px 19px;border-radius:4px;box-shadow:0 18px 55px #0003}.section-label{display:flex;justify-content:space-between;color:#c4cec2;font-size:10px;font-weight:600;letter-spacing:1.5px;margin-bottom:16px}.section-label span:last-child{color:#88998a;font-size:10px}.stage-list{display:grid;gap:7px}.stage-option{position:relative;display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:#ffffff04;border:1px solid #ffffff12;border-radius:2px;padding:12px 14px;transition:.15s}.stage-option:hover{background:#ffffff0e}.stage-option.active{border-color:var(--lime);background:#d9f35c0d}.stage-number{font-size:10px;font-family:monospace;color:#8da08c}.stage-option.active .stage-number{color:var(--lime)}.stage-title{display:block;font-size:13px;font-weight:600;letter-spacing:.5px}.stage-sub{display:block;font-size:9px;letter-spacing:1.2px;color:#8ca08c;margin-top:4px}.stage-option svg{margin-left:auto;opacity:.55}.stage-option.active svg{opacity:1;color:var(--lime)}.stage-description p{font-size:10px;color:#acb8a9;line-height:1.8;margin:14px 0 12px;min-height:18px}.stage-stats{display:flex;justify-content:space-between;padding-bottom:17px;border-bottom:1px solid #ffffff18}.stage-stats span{font-size:9px;color:#7f927e;display:flex;flex-direction:column;gap:5px;letter-spacing:1px}.stage-stats b{font-size:13px;font-weight:500;color:#e1e9d9;letter-spacing:0}.car-label{margin-top:19px;margin-bottom:12px}.car-list{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.car-option{border:1px solid #ffffff18;background:#ffffff04;border-radius:2px;padding:9px 2px;text-align:center;font-size:10px;color:#afbdac}.car-option.active{border-color:var(--lime);color:var(--lime);background:#d9f35c0b}.car-option svg{display:block;width:80px;height:27px;margin:0 auto 5px}.car-option small{display:block;color:#7c947c;font-size:8px;margin-top:3px;letter-spacing:1px}.car-summary{display:flex;flex-direction:column;gap:5px;margin:13px 0 17px;font-size:10px;color:#9aaf97}.car-summary b{font-size:9px;color:#c3d1b8;font-weight:400;letter-spacing:.5px}.setup-bottom{display:flex;gap:8px}.primary{display:flex;align-items:center;justify-content:space-between;background:var(--lime);color:#1e2a14;padding:16px 18px;font-weight:800;font-size:14px;border-radius:2px;flex:1}.primary:hover{background:#e8ff87}.primary span{font-size:9px;letter-spacing:1px;font-weight:600}.secondary{background:#ffffff09;border:1px solid #ffffff20;border-radius:2px;width:48px;font-size:20px}.best-line{display:flex;align-items:center;justify-content:space-between;margin-top:13px;font-size:9px;color:#81947d}.best-line button{font-size:9px;color:#b8c9ae;background:none;padding:0}.menu-footer{position:absolute;left:4.5vw;right:4.5vw;bottom:28px;display:flex;justify-content:space-between;border-top:1px solid #e2eed62b;padding-top:15px;font-size:9px;letter-spacing:1.3px;color:#bfcebb}body.racing .edition{display:none}body.racing .vignette{background:linear-gradient(0deg,#06130a55,transparent 25%,transparent 75%,#06130a33)}body.racing .topbar{height:72px;padding:0 35px}body.racing .brand{font-size:15px}body.racing .brand svg{width:23px}.race-meta{position:absolute;left:36px;top:100px;text-shadow:0 2px 10px #0006}.race-meta .eyebrow{font-size:10px;letter-spacing:1.6px;color:#e8efdf}.timer{font:500 39px/1.3 "Consolas",monospace;letter-spacing:-2px;margin-top:5px;font-variant-numeric:tabular-nums}.timing-small{display:flex;gap:20px;font-size:10px;color:#dae4d1}.pace-note{position:absolute;top:92px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:12px;background:#102019b0;backdrop-filter:blur(10px);border-radius:3px;padding:12px 24px;border-bottom:2px solid var(--lime);min-width:170px}#pace-icon{font-size:42px;line-height:1;font-weight:500;color:var(--lime)}.pace-note strong{font-size:19px;display:block}.pace-note span{display:block;font-size:10px;color:#bdcdb3;margin-top:4px;letter-spacing:1px}.progress{position:absolute;top:71px;left:0;right:0;height:2px;background:#ffffff25}.progress div{height:100%;width:0;background:var(--lime)}.progress i{position:absolute;width:2px;height:6px;background:#fff7;top:-2px;left:33.333%}.progress i:last-child{left:66.666%}.map-panel{position:absolute;bottom:63px;left:25px;width:215px}.map-panel canvas{width:100%;height:150px;filter:drop-shadow(0 2px 3px #0007)}.map-panel>div{display:flex;gap:12px;align-items:baseline;justify-content:center;font-family:monospace;font-size:14px}.map-panel>div span:last-child{font:8px Inter,sans-serif;letter-spacing:2px;color:#becbb4}.driving-panel{position:absolute;bottom:65px;right:38px;width:245px}.surface-pill{display:flex;align-items:center;gap:7px;font-size:9px;color:#d4dfca}.surface-pill i{width:5px;height:5px;background:var(--lime);border-radius:50%}.surface-pill span:last-child{margin-left:auto;font-size:9px;color:#c0cfb8}.speed-row{display:flex;align-items:center;justify-content:flex-end;gap:22px}.gear{display:flex;flex-direction:column;align-items:center;border-right:1px solid #ffffff35;padding-right:22px}.gear b{font:500 33px monospace;color:var(--lime)}.gear span{font-size:7px;letter-spacing:2px;color:#b4c6ab}.speed{display:flex;align-items:baseline;gap:8px}.speed b{font:italic 500 79px/1.2 "Consolas",monospace;letter-spacing:-7px;text-shadow:0 3px 10px #0003}.speed span{font-size:8px;letter-spacing:1px}.rpm{height:5px;background:#ffffff25;transform:skewX(-15deg);margin:5px 0 12px;overflow:hidden}.rpm div{height:100%;width:0;background:var(--lime);transition:width .08s}.telemetry{display:flex;align-items:center;gap:10px;font-size:8px;color:#c8d7bd}.telemetry>span{display:flex;align-items:center;gap:5px}.telemetry i{display:block;width:34px;height:3px;background:#ffffff25}.telemetry em{display:block;height:100%;width:0;background:var(--lime)}.telemetry span:nth-child(2) em{background:#ff9b7c}.telemetry span:last-child{margin-left:auto}.hud-shortcuts{position:absolute;bottom:22px;left:36px;right:36px;display:flex;gap:20px;font-size:9px;color:#d1ddc5;align-items:center}.hud-shortcuts span:last-child{margin-left:auto;letter-spacing:1px;color:#c0cfb6}kbd{font:9px inherit;border:1px solid #ffffff40;border-radius:2px;padding:3px 5px;margin-right:4px}#countdown{position:absolute;top:40%;left:50%;transform:translate(-50%,-50%);font:italic 900 105px/1 Inter,sans-serif;color:var(--lime);text-shadow:0 4px 25px #0003}#countdown small{display:block;text-align:center;font:11px Inter,sans-serif;letter-spacing:4px;color:white;margin-top:20px}#toast{position:absolute;left:50%;top:32%;transform:translateX(-50%);background:#12241edb;border:1px solid #ffffff24;padding:12px 20px;border-radius:3px;font-size:12px;white-space:nowrap}#wrong-way{position:absolute;left:50%;top:210px;transform:translateX(-50%);font-size:12px;background:#e5b94ce6;color:#252810;padding:8px 18px;border-radius:2px}.modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:30;background:#08120dc9;backdrop-filter:blur(14px);padding:20px}.modal-card{width:450px;max-width:100%;max-height:90dvh;overflow:auto;background:#17261f;border:1px solid #d6e7ca26;border-radius:5px;padding:32px;box-shadow:0 25px 100px #0005}.modal-card .eyebrow{font-size:9px}.modal-card h2{font-size:30px;margin:15px 0 25px;letter-spacing:-.7px}.modal-card p{font-size:12px;line-height:1.9;color:#b7c7ad}.modal-card .primary{width:100%;margin-top:16px}.modal-card .text-btn{width:100%;padding:13px;background:#ffffff07;border:1px solid #ffffff16;font-size:12px;margin-top:10px;border-radius:2px}.controls-row,.setting-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff12;padding:13px 0;font-size:12px;color:#c2d0b8}.controls-row kbd{font-size:11px}.setting-row select{max-width:160px;background:#2a3d2e;border:1px solid #ffffff25;padding:7px;color:var(--white);border-radius:2px;font:11px inherit}.setting-row input{accent-color:var(--lime);width:135px}.result-time{font:40px monospace;color:var(--lime);letter-spacing:-2px}.result-table{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:25px 0}.result-table span{font-size:10px;color:#93a78c}.result-table b{display:block;font:17px monospace;color:#e0e9d7;margin-top:6px}.new-best{color:var(--lime)!important;font-size:11px!important}#loading{position:fixed;inset:0;z-index:100;background:#17231f;display:flex;align-items:center;justify-content:center;flex-direction:column}.load-brand{font:italic 900 40px Inter,sans-serif;letter-spacing:-2px}.load-brand span{color:var(--lime);margin-left:6px}.load-line{height:2px;width:220px;background:linear-gradient(90deg,transparent,var(--lime),transparent);margin-top:25px;animation:loading 1s infinite alternate}#loading p{font-size:11px;color:#abbca4;margin-top:20px;letter-spacing:2px}@keyframes loading{from{opacity:.3;transform:scaleX(.4)}to{opacity:1;transform:scaleX(1)}}.hidden{display:none!important}#error{position:fixed;inset:25%;z-index:110;background:#243329;padding:30px;line-height:1.8;border:1px solid #a4b38f}#touch{position:absolute;inset:0;pointer-events:none;z-index:12}#touch button{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;backdrop-filter:blur(6px)}.touch-steering{position:absolute;bottom:40px;left:20px;display:flex;gap:12px}.touch-steering button{width:66px;height:66px;border:1px solid #ffffff38;background:#152a23aa;border-radius:50%;font-size:22px}.touch-actions{position:absolute;right:20px;bottom:40px;display:flex;gap:10px;align-items:end}.touch-actions button{border:1px solid #ffffff38;border-radius:9px;font-size:13px}.touch-gas{background:#d9f35c8c;color:#142514;height:105px;width:66px}.touch-brake{background:#172a23b3;height:75px;width:59px;font-size:11px!important;line-height:1.7}.touch-hand{background:#172a23b3;height:48px;width:48px;font-size:10px!important}.touch-util{position:absolute;right:20px;top:190px;border:1px solid #ffffff33;background:#172a2380;padding:9px 13px;border-radius:3px;font-size:10px}#touch-reset{top:235px}#touch button.pressed{background:#e1f779aa;color:#17231f}body.touch-mode .hud-shortcuts{display:none}body.touch-mode .driving-panel{bottom:165px}body.touch-mode .map-panel{bottom:145px;width:170px}
@media(min-width:1600px){.setup{width:430px;padding:30px}.stage-option{padding:14px}.menu{gap:8vw}.menu-copy{padding-left:2vw}}@media(max-height:760px) and (min-width:851px){.topbar{height:72px}.menu{padding-top:85px;padding-bottom:50px}.setup{padding:17px 21px;width:375px}.section-label{margin-bottom:11px}.stage-option{padding:8px 12px}.stage-description p{margin:9px 0}.stage-stats{padding-bottom:12px}.car-label{margin-top:12px}.car-summary{margin:9px 0 12px}.primary{padding:14px 17px}.menu-footer{bottom:15px;padding-top:10px}}@media(max-width:850px){.topbar{padding:0 22px;height:72px;gap:12px}.edition{display:none}.menu{padding:95px 22px 45px;gap:20px}.menu-copy{flex:1}.menu-copy h1{font-size:43px}.menu-copy .eyebrow{font-size:8px;letter-spacing:2px}.intro{font-size:12px}.menu-tags{display:none}.setup{width:340px;padding:20px}.menu-footer{left:22px;right:22px;bottom:15px}.menu-footer span:last-child{display:none}}@media(max-width:640px) and (orientation:portrait){body{overflow:auto}.menu{height:100dvh;overflow:auto;display:block;padding:94px 20px 35px;background:linear-gradient(180deg,transparent,#101e16b0)}.menu-copy{padding:0;margin-bottom:30px}.menu-copy h1{font-size:44px;margin:16px 0 12px;line-height:1.15}.intro{font-size:11px;margin:0}.intro br{display:none}.setup{width:100%;background:#14231ee8}.menu-footer{display:none}.topbar{padding:0 20px;background:linear-gradient(#14251caa,transparent)}.top-actions{gap:7px}.icon-btn{padding:9px 10px}.brand{font-size:16px}.brand svg{width:23px}.race-meta{left:18px;top:95px}.timer{font-size:27px}.timing-small{font-size:8px}.pace-note{top:160px;padding:9px 16px;min-width:150px}.pace-note strong{font-size:16px}#pace-icon{font-size:32px}body.racing .topbar{padding:0 16px}.driving-panel{right:20px;width:185px;bottom:165px}.speed b{font-size:56px;letter-spacing:-4px}.speed-row{gap:15px}.gear{padding-right:15px}.gear b{font-size:26px}.surface-pill{font-size:8px}.surface-pill span:last-child{font-size:8px}.map-panel{left:4px;bottom:175px!important;width:140px!important}.map-panel canvas{height:100px}.map-panel>div{font-size:12px;gap:5px}.map-panel>div span:last-child{font-size:6px}.touch-steering{left:15px;bottom:35px;gap:9px}.touch-steering button{width:56px;height:56px}.touch-actions{right:14px;bottom:35px;gap:7px}.touch-gas{width:54px;height:92px}.touch-brake{width:48px;height:68px}.touch-hand{width:42px;height:42px}.hud-shortcuts{display:none}.telemetry{font-size:7px;gap:6px}.telemetry i{width:20px}#toast{font-size:10px;max-width:94%;white-space:normal;text-align:center}#wrong-way{top:244px}}@media(max-height:550px) and (orientation:landscape){.topbar{height:55px}.menu{padding:65px 20px 18px;align-items:flex-start;overflow-y:auto}.menu-copy{position:sticky;top:0;padding-top:30px}.menu-copy h1{font-size:40px}.intro{font-size:10px}.setup{width:330px;padding:16px}.menu-footer{display:none}body.racing .topbar{height:48px;padding:0 17px}.progress{top:48px}.race-meta{top:65px;left:20px}.timer{font-size:25px}.pace-note{top:63px;padding:7px 14px;min-width:140px}.pace-note strong{font-size:15px}#pace-icon{font-size:30px}.map-panel{bottom:98px!important;width:145px!important;left:10px}.map-panel canvas{height:100px}.driving-panel{bottom:130px!important;right:22px;width:185px}.speed b{font-size:48px;letter-spacing:-4px}.speed-row{gap:15px}.gear b{font-size:22px}.gear{padding-right:15px}.gear span{font-size:6px}.touch-steering{bottom:15px}.touch-actions{bottom:15px}.touch-steering button{width:58px;height:58px}.touch-gas{height:85px}.touch-util{top:62px;right:16px}#touch-reset{top:101px}.hud-shortcuts{bottom:15px}#countdown{font-size:70px}.modal-card{max-height:95dvh;padding:22px}.modal-card h2{margin:10px 0 18px;font-size:24px}body:not(.touch-mode) .driving-panel{bottom:42px!important}body:not(.touch-mode) .map-panel{bottom:40px!important}}
/* Explicit stacking keeps the HTML controls above the WebGL surface. */
#scene{z-index:0}.vignette{z-index:1}.menu{position:relative;z-index:2}#hud{position:fixed;inset:0;z-index:2;pointer-events:none}#error{max-width:520px;inset:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(100% - 36px);border-radius:4px;box-shadow:0 20px 100px #0009}#error strong{font-size:21px}#error p{font-size:12px;color:#c8d5bd}#error small{font-size:10px;color:#aabc9d}
