:root{font-family:Arial,Microsoft YaHei,sans-serif;color:#eceeea;background:#090b0d;font-synthesis:none;--red: #ff3a28;--muted: #747b80;--line: #ffffff16;--yellow: #d9ff43}*{box-sizing:border-box}body{margin:0}button,a,select{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;border:0;cursor:pointer;background:none}button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--yellow);outline-offset:5px}button:hover{color:var(--yellow)}button:disabled{opacity:.4;cursor:wait}a{color:inherit;text-decoration:none}.hidden{display:none!important}header{height:96px;margin:0 4vw;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:30px}.brand{display:flex;align-items:center;gap:14px;font-size:21px;font-weight:900;letter-spacing:2px}.brand-mark{font-style:italic;background:var(--red);padding:6px 10px;color:#090b0d;letter-spacing:-5px;font-size:30px;transform:skew(-9deg)}.brand-mark span{color:#fff}.brand-sub{font-size:8px;display:block;letter-spacing:3.3px;color:#83898d;margin-top:5px}nav{display:flex;gap:36px}nav button{font-size:12px;color:#898e91;padding:12px 0}nav button span{font-size:9px;margin-left:8px;color:#4e5457}.nav-active{color:#fff!important}#mute{font-size:10px;letter-spacing:1px}#soundState{color:var(--red);padding-left:10px}.season-label{display:flex;align-items:center;gap:15px;font-size:10px;letter-spacing:2px;margin:28px 4vw 34px;color:#9caaa9}.season-label b{color:#f4f6f2}.season-label>span:last-child{margin-left:auto;font-size:9px;color:#687375}.red-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);box-shadow:0 0 12px #ff392874}.season-line{height:1px;width:70px;background:#ffffff20}.hero-grid{margin:0 4vw;display:grid;grid-template-columns:37% 63%;min-height:650px}.race-info{padding-right:45px;position:relative}.round-line{display:flex;justify-content:space-between;align-items:center;font:10px monospace;color:#929c9e;letter-spacing:2px;margin-bottom:28px}#raceFlag{font-size:26px}.eyebrow{font-size:9px;font-weight:600;letter-spacing:3px;color:var(--red);margin:0 0 15px}h1{font-size:clamp(35px,3.7vw,66px);line-height:1.1;font-weight:850;letter-spacing:-2px;margin:0 0 20px}h1 span{display:block;color:#f0f1ed}.circuit-name{font-size:13px;color:#889194;letter-spacing:.4px;margin-bottom:30px}.race-facts{display:grid;grid-template-columns:1fr 1fr;gap:22px 15px;border-top:1px solid var(--line);padding-top:22px}.race-facts span{display:block;font-size:9px;color:#777f84;margin-bottom:8px}.race-facts strong{font-size:13px;font-weight:500;letter-spacing:.3px}#globeWrap{height:210px;position:relative;margin-top:5px}canvas{display:block;width:100%;height:100%}#globe{height:210px}.globe-caption{position:absolute;bottom:0;left:0;right:0;display:flex;font:8px monospace;gap:12px;color:#6d777c;align-items:center}.globe-caption>span:last-child{margin-left:auto;font-size:7px}.crosshair{font-size:20px;color:var(--red)}.nav-controls{display:flex;gap:10px;align-items:center;margin-top:18px;border:1px solid var(--line);height:42px}.nav-controls button{width:42px;height:40px;font-size:18px}.nav-controls select{width:100%;color:#d5d9d7;background:transparent;border:none;font-size:10px;padding:10px;outline:none}.nav-controls option{background:#16191b}.track-panel{border:1px solid var(--line);background:radial-gradient(ellipse at 50% 40%,#232b2b55,transparent 65%),#101315;min-width:0;position:relative;overflow:hidden}.panel-top{display:flex;justify-content:space-between;padding:22px 25px;font:9px monospace;letter-spacing:1.5px;color:#909a9e}.panel-top i{margin-right:8px}#trackStage{height:410px;position:relative;touch-action:pan-y}#track3d{position:absolute;inset:0}.track-watermark{font-family:Impact,Arial,sans-serif;font-size:240px;color:#ffffff06;position:absolute;right:24px;top:40px;pointer-events:none;line-height:1}.track-instruction{position:absolute;bottom:10px;left:25px;color:#596468;font-size:9px;letter-spacing:1px}#trackLabels{position:absolute;inset:0;pointer-events:none}.track-label{position:absolute;transform:translate(-50%,-50%);font:8px monospace;padding:3px 5px;background:#0c1013b3;border:1px solid #ffffff19;color:#c3cbc9;white-space:nowrap}.track-label.entry{pointer-events:auto;background:var(--red);color:#fff;font-size:9px;cursor:pointer;border:0;padding:6px 9px}.track-label.pit{background:var(--yellow);color:#17210e}.track-bottom{padding:24px 25px;border-top:1px solid var(--line);display:flex;gap:20px;justify-content:space-between;align-items:center}.track-bottom h2{font-size:19px;letter-spacing:-.7px;margin:0}.track-bottom .eyebrow{font-size:7px;letter-spacing:2px;display:block;margin-bottom:10px}.track-actions{display:flex;flex-direction:column;gap:7px;min-width:150px}.primary{background:var(--red);padding:15px 20px;color:#fff;font-size:12px;text-align:left;display:flex;justify-content:space-between;gap:28px;align-items:center;transition:background .2s}.primary:hover{background:#f25440;color:#fff}.primary span{font-size:20px}.secondary{padding:12px 18px;border:1px solid #4a5151;font-size:11px;display:flex;justify-content:space-between}.data-disclosure{display:flex;justify-content:space-between;align-items:center;padding:12px 25px;border-top:1px solid var(--line);font-size:8px;color:#6e7b7d}.data-disclosure button{font-size:8px}.calendar-strip{display:flex;gap:0;margin:30px 4vw 0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#4a4e4d transparent;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.calendar-stop{min-width:96px;padding:17px 18px;border-right:1px solid var(--line);text-align:left;position:relative;color:#7e898b}.calendar-stop span{display:block;font:8px monospace;margin-bottom:8px;color:#4b595c}.calendar-stop b{font-size:10px;font-weight:500;white-space:nowrap}.calendar-stop.active{background:#ff39280b;color:#fff}.calendar-stop.active:before{content:"";height:2px;background:var(--red);position:absolute;top:0;left:0;right:0}.calendar-stop.active span{color:var(--red)}footer{margin:22px 4vw;display:flex;justify-content:space-between;color:#4f5a5e;font-size:7px;letter-spacing:1px}#intro{position:fixed;inset:0;z-index:100;background:radial-gradient(ellipse at 50% 50%,#242021,#090b0d 70%);display:flex;flex-direction:column;justify-content:space-between;padding:35px 5vw;transition:opacity .5s,visibility .5s}#intro.leaving{opacity:0;visibility:hidden;pointer-events:none}.intro-top,.intro-bottom{display:flex;justify-content:space-between;font:9px monospace;letter-spacing:2px;color:#788286}.intro-top span:first-child{font-weight:900;color:#fff}.intro-content{text-align:center;align-self:center}.intro-content h2{font-family:Impact,Arial Black,sans-serif;letter-spacing:-4px;font-size:clamp(70px,10vw,145px);line-height:.9;margin:22px 0 30px;font-style:italic}.intro-content h2 span{color:var(--red)}.lights{display:flex;gap:14px;justify-content:center;margin-bottom:25px}.lights i{width:32px;height:60px;border-radius:9px;background:radial-gradient(circle at 50% 25%,#352019 0 10px,transparent 11px),radial-gradient(circle at 50% 75%,#352019 0 10px,transparent 11px),#050607;border:1px solid #3d2926}.lights i.on{background:radial-gradient(circle at 50% 25%,#ff2714 0 10px,transparent 11px),radial-gradient(circle at 50% 75%,#ff2714 0 10px,transparent 11px),#050607;box-shadow:0 0 30px #ff2b1944}.intro-content p:not(.eyebrow){font-size:11px;color:#a3aaab}.intro-content .primary{margin:25px auto 12px;min-width:240px}.intro-content small{display:block;font-size:8px;color:#596368;margin-top:17px}#skipIntro{font-size:10px;color:#98a1a2}dialog{background:#14191b;color:#d9e1df;border:1px solid #384246;max-width:700px;width:90vw;padding:35px;max-height:85vh;line-height:1.8;font-size:13px}dialog::backdrop{background:#000b;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}dialog h2{font-size:26px}dialog a{color:var(--yellow)}#closeDialog{float:right;font-size:26px}#toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%);padding:14px 22px;background:#252f31;border:1px solid #75807c;font-size:12px;z-index:200;max-width:90vw}#game{padding:25px 4vw}.game-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;gap:20px}.game-header button{font-size:11px;border:1px solid var(--line);padding:12px}.game-header h2{margin:8px 0 0;font-size:22px}.game-header>div{text-align:center}.game-header .eyebrow{font-size:8px}.game-layout{display:grid;grid-template-columns:1fr 260px;gap:22px}#gameSurface{min-height:590px;height:calc(100vh - 240px);position:relative;background:#101719;border:1px solid var(--line);overflow:hidden;touch-action:none}#lapCanvas,#pitCanvas{position:absolute;inset:0;touch-action:none;cursor:none}#gameHint{position:absolute;top:20px;left:20px;right:20px;text-align:center;font-size:12px;color:#dce4df;pointer-events:none;line-height:1.8;background:#090e1188;padding:12px}#timerCard{position:absolute;bottom:20px;left:50%;transform:translate(-50%);background:#080b0ee8;border:1px solid #46504c;min-width:320px;pointer-events:none}#timerCard>div:first-child{padding:14px 20px;display:flex;align-items:center;gap:25px}#timerLabel{font:9px monospace;color:#858f91;max-width:90px}#totalTime{font:30px monospace;letter-spacing:-1px}.sectors{display:flex}.sectors>div{flex:1;font:9px monospace;padding:10px;background:#333b3d;border-right:1px solid #000;color:#fff}.sectors b{display:block;margin-top:5px;font-weight:400}.sectors .purple{background:#9629c4}.sectors .green{background:#28704a}.sectors .yellow{background:#b59c27}.sectors .grey{background:#394145}.leaderboard{background:#111719;border:1px solid var(--line);padding:25px 22px}.leaderboard h3{font-size:21px;margin:10px 0 25px}.leaderboard .eyebrow{font-size:7px;letter-spacing:2px}.personal-best{padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.personal-best span{font:8px monospace;color:#7c888c;display:block;margin-bottom:10px}.personal-best strong{font:29px monospace;color:var(--yellow)}.rank-head{display:flex;justify-content:space-between;font-size:8px;color:#6f7b7d;margin:22px 0 15px}#rankList{padding:0;list-style:none;max-height:280px;overflow:auto}#rankList li{display:flex;gap:18px;padding:12px 0;border-bottom:1px solid var(--line);font:12px monospace}#rankList li span:first-child{color:#78888a}#rankList small{display:block;font:8px monospace;color:#59696c;margin-top:5px}.local-note{font-size:9px;line-height:1.8;color:#6e7b7d;margin-top:25px}#clearRecords{font-size:9px;text-decoration:underline;color:#899594}#storageWarning{font-size:10px;color:#edc46f}#pitReticle{position:absolute;pointer-events:none;font:26px monospace;color:#dbff70;transform:translate(-50%,-50%);text-shadow:0 0 10px black}#gameResult{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:#0b1419e8;border:1px solid var(--yellow);padding:25px 35px;text-align:center;pointer-events:none;font-size:18px;width:max-content;max-width:85%}#gameResult small{display:block;font-size:11px;margin-top:12px;color:#899b9c}@media(min-width:1600px){#app{max-width:1800px;margin:auto}.hero-grid{min-height:760px}#trackStage{height:510px}#globeWrap,#globe{height:260px}}@media(max-width:950px){header{height:78px}nav{gap:15px}.hero-grid{grid-template-columns:37% 63%}.race-info{padding-right:22px}.track-bottom{flex-direction:column;align-items:stretch}.track-actions{flex-direction:row}.track-actions button{flex:1}.track-bottom h2{font-size:16px}#trackStage{height:390px}.game-layout{grid-template-columns:1fr 210px}.leaderboard{padding:20px 14px}#gameSurface{min-height:540px}}@media(max-width:650px){header{margin:0 20px;height:72px}.brand{font-size:15px;gap:10px}.brand-mark{font-size:25px}.brand-sub{font-size:6px}nav{display:none}#mute{font-size:8px}.season-label{margin:22px 20px;gap:10px;font-size:8px}.season-label>span:last-child{display:none}.hero-grid{display:flex;flex-direction:column;margin:0 20px}.race-info{padding:0;display:grid;grid-template-columns:1fr 120px;gap:0 10px}.round-line{grid-column:1/3;margin-bottom:20px}.race-info>.eyebrow{grid-column:1;margin-bottom:12px}h1{font-size:39px;grid-column:1;letter-spacing:-1px}.circuit-name{font-size:10px;grid-column:1;margin-top:0}.race-facts{grid-column:1/3;gap:18px;padding-bottom:20px}.race-facts strong{font-size:12px}.race-facts span{font-size:8px}#globeWrap{grid-column:2;grid-row:2/5;margin:0;height:155px}#globe{height:155px}.globe-caption{display:none}.nav-controls{grid-column:1/3;margin:0 0 20px}.track-panel{margin-top:0}#trackStage{height:320px}.panel-top{padding:18px;font-size:8px}.track-bottom{padding:20px}.track-actions .primary{padding:14px 12px;font-size:11px}.track-actions .secondary{padding:14px 12px}.track-bottom h2{font-size:19px}.data-disclosure{padding:12px 16px;font-size:7px}.calendar-strip{margin:25px 20px 0}.calendar-stop{min-width:84px;padding:14px}footer{margin:20px;line-height:1.8;gap:20px}footer span:first-child{display:none}footer span{font-size:6px}.intro-top span:last-child{display:none}.intro-content h2{font-size:92px}.intro-bottom{font-size:7px}.game-header{flex-wrap:wrap;margin-bottom:15px;gap:10px}.game-header>div{order:-1;flex-basis:100%}.game-header button{font-size:10px}#game{padding:20px 12px}.game-layout{display:flex;flex-direction:column}#gameSurface{height:60vh;min-height:400px}.leaderboard{padding:20px}.leaderboard h3{font-size:19px}.personal-best{display:flex;justify-content:space-between;align-items:center;padding:14px 0}.personal-best span{margin:0}.personal-best strong{font-size:25px}#rankList{max-height:160px}#gameHint{left:10px;right:10px;font-size:10px;padding:8px;top:10px}#timerCard{min-width:270px;bottom:12px}#totalTime{font-size:25px}#timerCard>div:first-child{padding:10px 15px}.sectors>div{padding:8px}.track-watermark{font-size:180px}.track-label{font-size:7px}dialog{padding:24px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}#explore{position:relative;isolation:isolate}#worldBackdrop{position:absolute;z-index:-1;width:110vw;height:105vh;min-height:700px;left:-40vw;top:-100px;opacity:.56;pointer-events:none;-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 60%,transparent 100%);mask-image:linear-gradient(90deg,#000 0%,#000 60%,transparent 100%)}.race-info{background:linear-gradient(90deg,rgba(9,11,13,.5),transparent);text-shadow:0 2px 15px #000}.track-panel{background:#0c1012a6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@media(max-width:650px){#worldBackdrop{width:160vw;height:85vh;min-height:550px;left:-55vw;top:-40px;opacity:.6}.race-info{background:linear-gradient(90deg,rgba(9,11,13,.6),transparent)}}#explore{overflow:clip}@media(max-height:500px){#intro{padding:14px 5vw;overflow-y:auto;justify-content:flex-start;gap:8px}.intro-content h2{font-size:54px;line-height:.9;margin:8px}.intro-content h2 br{display:none}.intro-content .eyebrow{margin:4px}.lights{margin:8px;gap:10px}.lights i{height:40px;width:25px;background-size:100% 100%}.intro-content .primary{margin:8px auto;min-height:32px}.intro-content small{margin:5px}.intro-bottom{display:none}.intro-content p:not(.eyebrow){margin:5px}}#touchStart{position:absolute;width:40px;height:40px;border:1px solid #d9ff43;border-radius:50%;transform:translate(-50%,-50%);color:#d9ff43;display:grid;place-items:center;font-size:9px;background:#d9ff4312;pointer-events:none;box-shadow:0 0 18px #d9ff4320}@media(max-width:950px)and (max-height:500px){body.playing header{display:none}body.playing #game{padding:0 10px}.game-header{height:42px;min-height:42px;padding:4px 0;margin:0;display:flex;align-items:center}.game-header h2{font-size:15px;margin:0}.game-header .eyebrow{display:none}.game-header button{padding:8px}.game-layout{display:block}#gameSurface{height:calc(100dvh - 48px);min-height:280px}#gameHint{top:6px;left:6px;right:6px;padding:8px;font-size:9px}#timerCard{bottom:7px;transform:translate(-50%) scale(.7);transform-origin:bottom center}.leaderboard{margin-top:10px}}#elevationSummary{font-size:9px;color:#8d9e9e;margin:0;padding:8px 24px;border-top:1px solid #ffffff08}.track-label.height{color:#8ca8a1;border:0;background:#101819c9;transform:translate(-50%,-160%);font-size:8px;padding:3px}.track-label.entry{font-family:Arial,Microsoft YaHei,sans-serif}
