@import url('https://fonts.googleapis.com/css2?family=Barlow+Condensed:ital,wght@0,500;0,600;0,700;0,800;0,900;1,800;1,900&family=Barlow:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{font-family:'Barlow','Noto Sans KR',sans-serif;color:#f3f5ee;background:#141916;--lime:#d8ff3e;--muted:#a3aaa2;--line:#ffffff24}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--lime);outline-offset:5px}button{border:0}button:hover{filter:brightness(1.12)}button:disabled{opacity:.4;cursor:wait}#world,.vignette,#menu,#hud{position:fixed;inset:0;width:100%;height:100%}#world{display:block}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(10,16,13,.91) 0%,rgba(10,16,13,.66) 25%,transparent 65%),linear-gradient(0deg,rgba(8,14,11,.92),transparent 28%,transparent 78%,rgba(8,14,11,.5));transition:opacity .6s}#menu{padding:0 4.1vw}header{height:110px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:#f4f6ee;font-size:30px;font-weight:800;letter-spacing:-1px;display:flex;align-items:center;gap:10px}.brand-mark{color:var(--lime);letter-spacing:-8px;font-style:italic;font-size:39px;margin-right:8px}.brand-sub{font-size:10px;letter-spacing:2.7px;font-weight:500;border-left:1px solid var(--line);padding-left:18px;margin-left:9px}.top-right{display:flex;align-items:center;gap:35px}.edition{font-size:11px;letter-spacing:2px;color:#c3c7bd}.icon-button{padding:10px 14px;background:#ffffff07;border:1px solid var(--line);font-size:17px}.icon-button span{font-size:10px;letter-spacing:1px;margin-left:5px}.hero{position:absolute;left:4.1vw;top:23%;}.eyebrow{font-size:11px;letter-spacing:2.4px;font-weight:600;display:flex;align-items:center;gap:10px}.live-dot{width:6px;height:6px;background:var(--lime);border-radius:50%}h1{font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(84px,8.8vw,142px);font-weight:800;font-style:italic;line-height:.88;letter-spacing:-.035em;margin:25px 0 27px}h1 em{color:var(--lime);font-style:inherit}.hero-description{font-size:16px;line-height:1.85;color:#c2c9c0;margin:0 0 30px}.hero-actions{display:flex;align-items:center;gap:27px}.start-button{background:var(--lime);color:#11170b;min-width:206px;padding:20px 23px;font-weight:800;display:flex;align-items:center;justify-content:space-between;font-size:16px;transform:skew(-8deg);transition:background .2s}.start-button span{font-size:24px;line-height:1}.text-button{background:none;font-size:13px;color:#c5cbbf;padding:14px 0}.text-button span{margin-left:13px;font-size:18px}.session-note{display:flex;align-items:center;gap:8px;margin-top:26px;font-size:9px;letter-spacing:1.2px;color:#9aab96}.session-note span{color:var(--lime)}.session-note i{height:3px;width:3px;background:#71806b;border-radius:50%;margin:0 4px}.car-caption{position:absolute;right:9%;top:40%;display:flex;gap:17px;align-items:center;opacity:.85}.fine-line{width:45px;height:1px;background:#d5dfc4}.car-caption div{display:flex;flex-direction:column;gap:3px}.car-caption b{font-size:18px;font-style:italic;letter-spacing:2px}.car-caption div span{font-size:8px;letter-spacing:2px}.car-number{font-family:'Barlow Condensed',sans-serif;font-size:40px;font-weight:700;color:var(--lime);margin-left:12px}.track-card{position:absolute;right:4.1vw;bottom:133px;width:357px;background:linear-gradient(120deg,#1d251fdc,#101914eb);backdrop-filter:blur(18px);border:1px solid #a1b39438;padding:21px 23px 0}.card-top{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.7px;color:#d0d8c7}.track-index{color:var(--lime)}.track-info{display:flex;align-items:center;justify-content:space-between;height:126px}.location{font-size:8px;letter-spacing:.9px;color:#a7b59e;white-space:nowrap}h2{font-size:22px;margin:8px 0 4px;letter-spacing:-1px}.track-info p{font-size:9px;letter-spacing:1px;color:#a1ae97;margin:0}.track-info canvas{width:135px;height:95px;margin-right:-8px}.track-stats{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding:15px 0}.track-stats>div{display:flex;gap:6px;align-items:baseline}.track-stats b{font-family:'Barlow Condensed',sans-serif;font-size:25px;font-weight:600}.track-stats span{font-size:8px;letter-spacing:.5px;color:#a9b89e}.track-stats .weather{color:var(--lime);gap:5px}.track-stats .weather b{color:white;font-size:19px}.personal-best{display:flex;align-items:center;gap:13px;background:#ffffff06;border-top:1px solid var(--line);padding:15px 23px;margin:0 -23px;font-size:9px;letter-spacing:1px}.personal-best strong{margin-left:auto;font-variant-numeric:tabular-nums;font-size:15px;letter-spacing:0}.pb-label{color:#a1b294;border:1px solid #ffffff25;padding:3px 5px;font-size:8px}footer{height:96px;position:absolute;bottom:0;left:4.1vw;right:4.1vw;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}nav{display:flex;gap:40px;height:100%}.nav-item{background:none;position:relative;display:flex;gap:12px;align-items:center;font-weight:600;font-size:13px;color:#a0ad99}.nav-item span{font-size:9px;color:#72816c}.nav-item.active{color:var(--lime)}.nav-item.active:before{content:'';position:absolute;top:-1px;height:2px;background:var(--lime);width:100%}.footer-note{font-size:9px;letter-spacing:1.4px;color:#8d9a84}.footer-note b{color:#cdd6c3;font-weight:500}.version{font-size:9px;letter-spacing:1.2px;color:#86937f}[hidden]{display:none!important}body.racing .vignette{opacity:0}#hud{pointer-events:none;text-shadow:0 2px 8px #0008}.hud-top{padding:30px;display:flex;align-items:flex-start;justify-content:space-between;background:linear-gradient(#07120ea6,transparent);height:200px}.session-box,.timing-box{display:flex;flex-direction:column;gap:7px}.session-box{font-size:12px;letter-spacing:2px}.session-box b{font-size:20px;letter-spacing:1px}.session-box>span:last-child{letter-spacing:1px;color:#d3dccb}.lime{color:var(--lime)}.timing-box{position:absolute;left:50%;transform:translateX(-50%);width:285px;text-align:center}.timing-box>span{font-size:10px;letter-spacing:3px}.timing-box>b{font-family:'Barlow Condensed',sans-serif;font-size:52px;font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.timing-box>div{display:flex;justify-content:space-between;font-size:12px}.timing-box strong{font-weight:500;margin-left:5px}.timing-box .sectors{gap:5px;margin-top:5px}.sectors span{background:#15221bcc;flex:1;padding:8px 4px;border-bottom:2px solid #677260;font-variant-numeric:tabular-nums;font-size:11px}.pause-button{pointer-events:auto}.hud-bottom{position:absolute;bottom:25px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:flex-end}.minimap-box{display:flex;align-items:center;flex-direction:column;background:radial-gradient(ellipse,#101f1660,transparent 70%)}.minimap-box canvas{width:230px;height:160px}.minimap-box>span{font-size:11px;letter-spacing:1px}.speedometer{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:245px;background:linear-gradient(transparent,#101910b0);padding:15px 20px 10px}.rpm{display:flex;gap:4px;justify-content:center}.rpm i{width:12px;height:5px;background:#ffffff25;transform:skew(-15deg)}.rpm i.on{background:var(--lime);box-shadow:0 0 8px #d8ff3e88}.rpm i.red.on{background:#ff5f60}.speed-row{display:flex;gap:22px;justify-content:center;align-items:center}.gear,.speed{display:flex;flex-direction:column;align-items:center}.gear b{font:600 48px 'Barlow Condensed',sans-serif;color:var(--lime)}.gear span,.speed span{font-size:9px;letter-spacing:2px}.speed b{font:600 78px 'Barlow Condensed',sans-serif;line-height:1.05;font-variant-numeric:tabular-nums}.pedals{display:flex;gap:14px;margin-top:12px}.pedals>span{font-size:9px;display:flex;align-items:center;gap:5px;flex:1}.pedals i{display:block;height:3px;background:var(--lime);width:0;max-width:62px}.pedals>span:nth-child(2) i{background:#f66859}.race-help{display:flex;flex-direction:column;gap:9px;font-size:11px;color:#e1e7d9}kbd{font-family:inherit;font-size:10px;border:1px solid #fff5;border-radius:2px;padding:3px 5px;display:inline-block;min-width:24px;text-align:center;margin-right:8px;background:#0003}#race-message{position:absolute;top:26%;left:50%;transform:translateX(-50%);padding:15px 24px;background:#101b17df;border-left:3px solid var(--lime);font-size:15px;opacity:0;transition:opacity .2s;white-space:nowrap}#race-message.visible{opacity:1}#race-message.warning{border-color:#ff785b;color:#ffb5a3}dialog{color:var(--text);background:#171e19;border:1px solid #526044;width:min(550px,92vw);padding:40px;max-height:85vh;overflow:auto;box-shadow:0 30px 120px #000a}dialog::backdrop{background:#030905af;backdrop-filter:blur(12px)}.modal-close{position:absolute;right:16px;top:12px;background:none;font-size:28px;color:#adb9a5}dialog h2{font-size:30px;margin:8px 0 24px}dialog p,dialog li{font-size:14px;line-height:1.9;color:#b9c7af}dialog .eyebrow{color:var(--lime);font-size:10px}.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin:22px 0 30px}.control-grid>div{font-size:13px;display:flex;align-items:center;gap:5px}.rules{border-top:1px solid var(--line);padding-top:18px}.rules b{font-size:13px}.rules ul{padding-left:18px}.rules a{color:#bac998;font-size:11px}.modal-actions{display:flex;flex-direction:column;gap:12px}.modal-actions button{padding:16px;background:#2b3724;text-align:left}.modal-actions .primary{background:var(--lime);color:#161d0d;font-weight:700}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:18px 0;border-top:1px solid var(--line);font-size:14px}.settings-row select{color:white;background:#293522;padding:10px;border:1px solid #ffffff33;font:inherit}.record-row{display:grid;grid-template-columns:30px 1fr 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--line);align-items:center;font-size:13px}.record-row strong{color:var(--lime);font-size:18px;font-variant-numeric:tabular-nums}.record-row small{color:#a7b59e;text-align:right}.empty-records{padding:25px 0}.touch-controls{display:none}.touch-controls button{pointer-events:auto;touch-action:none;background:#14221bd0;border:1px solid #ffffff40;padding:20px;border-radius:8px;min-width:64px;font-weight:700}.touch-controls>div{display:flex;gap:10px}#error{position:fixed;inset:0;display:grid;place-content:center;text-align:center;background:#111812;padding:25px}#error button{padding:16px;background:var(--lime);color:#12180c}body.racing{user-select:none;-webkit-user-select:none}#hud,#menu{transition:opacity .4s}
@media(min-width:1700px){.hero{top:25%}.track-card{width:390px}.car-caption{top:37%}}
@media(max-height:760px) and (min-width:801px){header{height:85px}.hero{top:22%}h1{font-size:clamp(80px,8.5vw,118px);margin:20px 0}.hero-description{font-size:14px;margin-bottom:20px}.session-note{margin-top:19px}.track-card{bottom:107px}footer{height:76px}}
@media(max-width:1000px){.brand-sub,.edition,.footer-note{display:none}.track-card{width:300px}.track-info canvas{width:110px}.track-info h2{font-size:20px}.track-stats b{font-size:21px}.hero{top:22%}h1{font-size:100px}.car-caption{right:8%;top:30%}.hero-actions{gap:18px}.start-button{min-width:170px}.session-note{font-size:8px;letter-spacing:.6px}}
@media(max-width:700px){header{height:77px}.brand{font-size:25px}.hero{top:122px;left:6%}.eyebrow{font-size:8px;letter-spacing:1.7px}h1{font-size:82px;margin:18px 0}.hero-description{font-size:13px;margin-bottom:20px}.hero-actions{gap:20px}.start-button{padding:16px 20px;min-width:175px;font-size:14px}.text-button{font-size:12px}.session-note,.car-caption,.version{display:none}.track-card{width:88%;right:6%;bottom:90px;padding:15px 18px 0}.card-top{font-size:8px}.track-info{height:82px}.track-info canvas{width:130px;height:75px}.track-info h2{font-size:20px;margin:6px 0}.track-stats{padding:10px 0}.track-stats b{font-size:21px}.personal-best{padding:11px 18px;margin:0 -18px}.track-info .location{font-size:7px}footer{height:68px;left:6%;right:6%}nav{width:100%;justify-content:space-between;gap:0}.nav-item{font-size:12px}.vignette{background:linear-gradient(90deg,#0c1513bb,transparent),linear-gradient(0deg,#08120ff5,transparent 55%,#08120f55)}.hud-top{padding:18px}.session-box b{font-size:12px}.session-box{font-size:8px;letter-spacing:1px}.session-box>span:last-child{font-size:9px;max-width:100px}.timing-box{width:165px}.timing-box>b{font-size:36px}.timing-box>div{font-size:9px}.timing-box .sectors{gap:2px}.sectors span{font-size:8px;padding:5px 1px}.timing-box>span{font-size:8px}.hud-bottom{bottom:125px;left:15px;right:15px}.minimap-box canvas{width:120px;height:100px}.minimap-box>span{font-size:8px}.speedometer{left:auto;right:0;transform:none;width:175px;padding:10px}.speed b{font-size:57px}.gear b{font-size:34px}.race-help{display:none}.rpm{gap:3px}.rpm i{width:8px}.speed-row{gap:20px}.touch-controls{position:absolute;bottom:25px;left:18px;right:18px;display:flex;justify-content:space-between}.touch-controls button{padding:20px 15px;font-size:12px;min-width:54px}#race-message{top:23%;font-size:12px;max-width:92vw;white-space:normal;text-align:center}dialog{padding:30px 24px}.control-grid{grid-template-columns:1fr;gap:10px}}
@media(max-width:700px) and (max-height:760px){.hero{top:105px}h1{font-size:64px}.hero-description{display:none}.track-card{bottom:80px}.track-info{height:65px}.track-stats{padding:7px 0}.personal-best{padding-top:8px;padding-bottom:8px}}
@media(pointer:coarse) and (min-width:701px){.touch-controls{position:absolute;bottom:20px;left:25px;right:25px;display:flex;justify-content:space-between}.hud-bottom{bottom:125px}.race-help{display:none}}
#drs{font-size:9px;letter-spacing:1px;padding:1px 6px;border:1px solid #ffffff30;color:#ffffff40;font-weight:800}#drs.available{color:#d9e4d6;border-color:#3ee06a}#drs.open{background:#3ee06a;border-color:#3ee06a;color:#06140b}
/* Helmet opening framing the driver's-eye view. */
.visor{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .35s;background:radial-gradient(ellipse 125% 105% at 50% 62%,transparent 58%,rgba(3,5,5,.38) 76%,rgba(2,3,3,.9) 100%),linear-gradient(180deg,rgba(2,3,3,.55),transparent 9%)}
body.racing.driver-view .visor{opacity:1}
body.driver-view .speedometer{left:auto;right:0;transform:none;bottom:0}
body.driver-view .race-help{margin-bottom:150px}
@media(max-width:700px){body.driver-view .race-help{margin-bottom:0}}
.track-switch{display:flex;align-items:center;gap:8px}.track-arrow{pointer-events:auto;background:#ffffff0d;border:1px solid var(--line);color:#e8eee0;width:24px;height:22px;padding:0;font-size:15px;line-height:1}.track-arrow:hover{background:var(--lime);color:#11170b}.card-top{align-items:center}
