:root{--red:#ff2a3c;--red-dim:#ff2a3c59;--cyan:#52d6ff;--green:#39ff9a;--amber:#ffb02e;--text:#e9edf3;--muted:#8a93a0;--panel:#0a0c109e;--panel-strong:#08090cdb;--line:#ffffff1a;--font-head:"Orbitron", "Rajdhani", "Hiragino Sans", "Noto Sans JP", sans-serif;--font-num:"Rajdhani", "Orbitron", "Hiragino Sans", "Noto Sans JP", sans-serif;--font-jp:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Yu Gothic", sans-serif;--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{width:100%;height:100%;color:var(--text);font-family:var(--font-num);-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;background:#020203;margin:0;overflow:hidden}.app{position:fixed;inset:0}.app canvas{display:block}.overlay{pointer-events:none;position:absolute;inset:0}.overlay>*{pointer-events:auto}button{font-family:var(--font-head);cursor:pointer;color:inherit;border:none}.btn{letter-spacing:.18em;border:1px solid var(--line);clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);text-transform:uppercase;background:linear-gradient(#ffffff12,#ffffff05);min-width:170px;padding:14px 28px;font-size:15px;font-weight:700;transition:background .15s,border-color .15s,transform .1s;position:relative}.btn:hover{background:linear-gradient(#ffffff24,#ffffff0a)}.btn:active{transform:scale(.98)}.btn.primary{background:linear-gradient(#ff3b4c,#c8101f);border-color:#ff6a78;box-shadow:0 0 30px #ff2a3c59}.btn.primary:hover{background:linear-gradient(#ff5463,#d81527)}.btn.small{min-width:0;padding:9px 16px;font-size:12px}.btn .key{font-family:var(--font-num);opacity:.6;letter-spacing:.05em;margin-left:8px;font-size:11px}.kicker{font-family:var(--font-head);letter-spacing:.4em;color:var(--red);text-transform:uppercase;font-size:11px}.jp{font-family:var(--font-jp);letter-spacing:.02em}html[lang=en] .jp{font-family:var(--font-num);letter-spacing:.03em;font-weight:500}html[lang=en] .title-desc{text-wrap:pretty}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px)}.loading{background:#020203;flex-direction:column;justify-content:center;align-items:center;gap:18px;display:flex;position:absolute;inset:0}.loading .bar{background:#ffffff14;width:220px;height:2px;overflow:hidden}.loading .bar i{background:var(--red);width:40%;height:100%;animation:1.1s ease-in-out infinite loadbar;display:block}@keyframes loadbar{0%{transform:translate(-100%)}to{transform:translate(250%)}}.title-screen{background:linear-gradient(90deg,#020203eb 0%,#0202038c 45%,#02020300 75%);flex-direction:column;justify-content:center;padding:6vh 7vw;display:flex;position:absolute;inset:0}.logo{font-family:var(--font-head);letter-spacing:.04em;text-shadow:0 0 40px #ff2a3c40;margin:10px 0 6px;font-size:clamp(44px,8.5vw,118px);font-weight:900;line-height:.92}.logo span{color:#0000;-webkit-text-stroke:1.5px var(--text);display:block}.logo em{color:var(--red);font-style:normal}.subtitle{font-family:var(--font-head);letter-spacing:.5em;color:var(--muted);margin-bottom:34px;font-size:clamp(11px,1.3vw,15px)}.title-desc{color:#b9c0ca;max-width:480px;margin-bottom:30px;font-size:14px;line-height:1.8}.menu-col{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.lang-switch{top:calc(18px + var(--safe-t));right:calc(7vw + var(--safe-r));background:var(--panel);-webkit-backdrop-filter:blur(10px);position:absolute}.title-foot{bottom:calc(18px + var(--safe-b));color:var(--muted);letter-spacing:.1em;justify-content:space-between;font-size:12px;display:flex;position:absolute;left:7vw;right:7vw}.select-screen{padding:calc(28px + var(--safe-t)) 5vw calc(24px + var(--safe-b));background:linear-gradient(#020203bf,#02020300 30% 60%,#020203e6);flex-direction:column;display:flex;position:absolute;inset:0}.select-head{justify-content:space-between;align-items:flex-end;gap:20px;display:flex}.select-head h2{font-family:var(--font-head);letter-spacing:.08em;margin:6px 0 0;font-size:clamp(22px,3.2vw,40px)}.select-foot{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-top:auto;display:flex}.car-card{width:min(420px,100%);padding:20px 22px}.car-card h3{font-family:var(--font-head);letter-spacing:.06em;margin:4px 0 6px;font-size:26px}.car-card p{color:#b9c0ca;margin:0 0 14px;font-size:13px;line-height:1.6}.stat-row{letter-spacing:.12em;color:var(--muted);grid-template-columns:130px 1fr 26px;align-items:center;gap:10px;margin:6px 0;font-size:12px;display:grid}.stat-row .bar{background:#ffffff14;height:4px;position:relative}.stat-row .bar i{background:linear-gradient(90deg,#ff2a3c,#ff7a86);position:absolute;inset:0 auto 0 0}.stat-row b{color:var(--text);text-align:right}.paints{align-items:center;gap:10px;margin-top:14px;display:flex}.paint-chip{border:2px solid #0000;border-radius:50%;width:30px;height:30px;box-shadow:inset 0 -6px 10px #0006}.paint-chip.active{border-color:var(--red);box-shadow:0 0 0 3px #ff2a3c40,inset 0 -6px 10px #0006}.locked-car{opacity:.5;letter-spacing:.2em;padding:14px 18px;font-size:12px}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:26px;display:grid}.mode-card{text-align:left;min-height:210px;font-family:var(--font-num);flex-direction:column;gap:10px;padding:20px;transition:border-color .15s,background .15s,transform .15s;display:flex}.mode-card:hover{transform:translateY(-2px)}.mode-card.active{border-color:var(--red);background:#ff2a3c14;box-shadow:0 0 40px #ff2a3c1f}.mode-card h3{font-family:var(--font-head);letter-spacing:.08em;margin:0;font-size:17px}.mode-card p{color:#b9c0ca;margin:0;font-size:13px;line-height:1.6}.mode-card .best{letter-spacing:.12em;color:var(--muted);margin-top:auto;font-size:12px}.mode-card .best b{color:var(--text);font-size:15px}.levels{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lv{width:40px;height:34px;font-family:var(--font-head);border:1px solid var(--line);background:#ffffff0d;font-size:12px}.lv.active{border-color:var(--red);background:#ff2a3c33}.lv:disabled{opacity:.3;cursor:not-allowed}.hud{pointer-events:none;font-family:var(--font-num);position:absolute;inset:0}.hud .tl{top:calc(16px + var(--safe-t));left:calc(18px + var(--safe-l));max-width:46vw;position:absolute}.mode-badge{font-family:var(--font-head);letter-spacing:.25em;border-left:3px solid var(--red);background:var(--panel);align-items:center;gap:10px;padding:6px 10px;font-size:11px;display:inline-flex}.objective{color:#c3cad3;text-shadow:0 1px 3px #000;margin-top:6px;font-size:13px}.timer{font-family:var(--font-head);letter-spacing:.06em;text-shadow:0 2px 8px #000;margin-top:8px;font-size:26px;font-weight:700}.hud .tc{top:calc(16px + var(--safe-t));gap:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.chip{background:var(--panel);border:1px solid var(--line);letter-spacing:.14em;color:var(--muted);white-space:nowrap;text-align:center;padding:7px 12px;font-size:12px}.chip b{font-family:var(--font-head);color:var(--text);letter-spacing:.04em;margin-top:1px;font-size:17px;display:block}.chip.ok b{color:var(--green)}.chip.warn b{color:var(--amber)}.hud .tr{top:calc(14px + var(--safe-t));right:calc(14px + var(--safe-r));pointer-events:auto;gap:8px;display:flex;position:absolute}.icon-btn{background:var(--panel);border:1px solid var(--line);letter-spacing:.15em;min-width:38px;height:38px;padding:0 12px;font-size:11px}.speedo{right:calc(22px + var(--safe-r));bottom:calc(18px + var(--safe-b));width:220px;height:200px;position:absolute}.speedo svg{position:absolute;inset:0}.speedo .val{text-align:center;font-family:var(--font-head);text-shadow:0 0 16px #000c;font-size:54px;font-weight:700;line-height:1;position:absolute;top:66px;left:0;right:0}.speedo .unit{text-align:center;letter-spacing:.3em;color:var(--muted);font-size:12px;position:absolute;top:124px;left:0;right:0}.speedo .gear{text-align:center;font-family:var(--font-head);color:var(--red);font-size:22px;position:absolute;top:146px;left:0;right:0}.nitro{right:calc(22px + var(--safe-r));bottom:calc(10px + var(--safe-b));width:220px;position:absolute}.nitro .label{letter-spacing:.2em;color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:11px;display:flex}.nitro .track{clip-path:polygon(4px 0,100% 0,calc(100% - 4px) 100%,0 100%);background:#ffffff14;height:6px;position:relative;overflow:hidden}.nitro .fill{background:linear-gradient(90deg,#2c7dff,#52d6ff);position:absolute;inset:0 auto 0 0;box-shadow:0 0 12px #52d6ff}.nitro .fill.burn{background:linear-gradient(90deg,#7f6bff,#d9f4ff)}.attitude{left:calc(22px + var(--safe-l));flex-direction:column;align-items:center;gap:8px;width:150px;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.horizon{background:#00000059;border:1px solid #ffffff40;border-radius:50%;width:120px;height:120px;position:relative;overflow:hidden}.horizon .sky{transform-origin:50%;background:linear-gradient(#52d6ff40 50%,#ff8c3c38 50%);height:300%;position:absolute;top:-100%;left:-60%;right:-60%}.horizon .sky:after{content:"";background:#fffc;height:1px;position:absolute;top:50%;left:0;right:0}.horizon .plane{background:var(--red);width:54px;height:2px;box-shadow:0 0 8px var(--red);margin-left:-27px;position:absolute;top:50%;left:50%}.horizon .plane:after{content:"";background:var(--red);width:2px;height:12px;margin-left:-1px;position:absolute;top:-5px;left:50%}.att-vals{letter-spacing:.15em;color:var(--muted);gap:12px;font-size:11px;display:flex}.att-vals b{color:var(--text)}.thr-tags{gap:6px;display:flex}.tag{letter-spacing:.2em;border:1px solid var(--line);color:var(--muted);padding:3px 6px;font-size:10px}.tag.on{color:#02121a;background:var(--cyan);border-color:var(--cyan)}.hint{left:calc(18px + var(--safe-l));bottom:calc(16px + var(--safe-b));letter-spacing:.08em;color:#e9edf38c;text-shadow:0 1px 3px #000;font-size:12px;line-height:1.7;position:absolute}.hint kbd{font-family:var(--font-num);color:var(--text);border:1px solid #ffffff40;border-radius:2px;margin-right:4px;padding:0 5px;font-size:11px}.banner{text-align:center;pointer-events:none;animation:.35s cubic-bezier(.2,1.4,.4,1) bannerIn;position:absolute;top:30%;left:0;right:0}.banner .big{font-family:var(--font-head);letter-spacing:.06em;text-shadow:0 0 30px #000000e6,0 0 60px;font-size:clamp(36px,7vw,88px);font-weight:900}.banner .sub{font-family:var(--font-head);letter-spacing:.3em;color:var(--text);text-shadow:0 2px 8px #000;margin-top:4px;font-size:clamp(14px,1.8vw,22px)}.banner.perfect .big{color:#ffd84a}.banner.good .big{color:var(--green)}.banner.rough .big{color:var(--amber)}.banner.crash .big{color:var(--red)}.banner.info .big{color:#fff;font-size:clamp(60px,12vw,150px)}.banner.go .big{color:var(--green);font-size:clamp(60px,12vw,150px)}@keyframes bannerIn{0%{opacity:0;transform:scale(1.6)}to{opacity:1;transform:scale(1)}}.popups{pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:52%;left:0;right:0}.popup{font-family:var(--font-head);letter-spacing:.16em;border-left:3px solid var(--cyan);background:#00000073;padding:6px 14px;font-size:clamp(14px,1.7vw,20px);font-weight:700;animation:2.6s forwards popIn}.popup.stunt{color:#ffd84a;border-color:#ffd84a}.popup.bad{border-color:var(--red)}.popup small{color:var(--muted);margin-left:10px;font-size:11px}@keyframes popIn{0%{opacity:0;transform:translateY(14px)}10%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0;transform:translateY(-10px)}}.skip-hint{bottom:calc(26px + var(--safe-b));text-align:center;letter-spacing:.3em;color:var(--muted);font-size:12px;animation:1.4s infinite blink;position:absolute;left:0;right:0}@keyframes blink{50%{opacity:.3}}.intro-card{max-width:560px;position:absolute;bottom:18vh;left:7vw}.intro-card h2{font-family:var(--font-head);letter-spacing:.06em;margin:8px 0;font-size:clamp(26px,4vw,48px)}.results{padding:calc(16px + var(--safe-t)) 16px calc(16px + var(--safe-b));touch-action:pan-y;background:radial-gradient(#0202038c,#020203e6);justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow-y:auto}.results-card{background:var(--panel-strong);border:1px solid var(--line);border-top:3px solid var(--red);touch-action:pan-y;width:min(980px,100%);max-height:100%;padding:26px 30px;overflow-y:auto}.results-card.success{border-top-color:var(--green)}.res-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.res-title{font-family:var(--font-head);letter-spacing:.04em;margin:6px 0;font-size:clamp(30px,5vw,56px);font-weight:900;line-height:1}.res-title.ok{color:var(--green)}.res-title.ng{color:var(--red)}.res-grade{font-family:var(--font-head);letter-spacing:.25em;font-size:14px}.res-total{text-align:right;margin-left:auto}.res-total .num{font-family:var(--font-head);font-size:clamp(34px,5vw,58px);font-weight:900;line-height:1}.res-total .best{letter-spacing:.16em;color:var(--muted);margin-top:6px;font-size:12px}.new-record{font-family:var(--font-head);letter-spacing:.25em;color:#1a1400;background:#ffd84a;margin-top:6px;padding:3px 10px;font-size:12px;animation:.9s infinite blink;display:inline-block}.res-body{grid-template-columns:1.15fr 1fr;gap:22px;margin-top:20px;display:grid}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.stat{border:1px solid var(--line);background:#ffffff09;padding:10px 12px}.stat .k{letter-spacing:.2em;color:var(--muted);font-size:10px}.stat .v{font-family:var(--font-head);margin-top:3px;font-size:20px}.stat .v small{color:var(--muted);font-size:11px;font-family:var(--font-num);margin-left:3px}.breakdown{letter-spacing:.08em;font-size:13px}.breakdown .line{color:#c3cad3;border-bottom:1px dashed #ffffff14;justify-content:space-between;padding:5px 0;display:flex}.breakdown .line b{font-family:var(--font-head);font-size:13px}.breakdown .line.neg b{color:var(--red)}.board{margin-top:14px;font-size:12px}.board .row{color:#b9c0ca;border-bottom:1px solid #ffffff0d;grid-template-columns:26px 1fr 80px 70px;gap:6px;padding:4px 0;display:grid}.board .row.me{color:#ffd84a}.res-actions{flex-wrap:wrap;gap:10px;margin-top:22px;display:flex}.fail-reason{letter-spacing:.18em;color:#ffb3ba;font-size:14px}.modal-back{z-index:20;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.modal{background:var(--panel-strong);border:1px solid var(--line);border-top:3px solid var(--red);touch-action:pan-y;width:min(560px,100%);max-height:92vh;padding:24px 26px;overflow-y:auto}.modal h2{font-family:var(--font-head);letter-spacing:.12em;margin:4px 0 16px;font-size:22px}.setting{border-bottom:1px solid #ffffff0f;justify-content:space-between;align-items:center;gap:16px;padding:10px 0;font-size:14px;display:flex}.setting small{color:var(--muted);margin-top:2px;font-size:12px;display:block}.seg{border:1px solid var(--line);display:flex}.seg button{letter-spacing:.1em;background:0 0;padding:7px 10px;font-size:11px}.seg button.active{background:var(--red)}.toggle{background:#ffffff1f;border-radius:12px;flex:none;width:46px;height:24px;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle.on{background:var(--red)}.toggle.on:after{transform:translate(22px)}.modal input[type=range]{width:160px;accent-color:var(--red)}.modal input[type=text]{border:1px solid var(--line);color:var(--text);font-family:var(--font-head);letter-spacing:.1em;background:#ffffff0f;width:160px;padding:7px 10px}.controls-table{border-collapse:collapse;width:100%;font-size:13px}.controls-table td{vertical-align:top;border-bottom:1px solid #ffffff0f;padding:6px 4px}.controls-table td:first-child{width:40%;color:var(--muted)}.controls-table kbd{font-family:var(--font-num);color:var(--text);border:1px solid #ffffff4d;border-radius:2px;margin-right:3px;padding:0 6px}.tips{color:#c3cad3;margin:14px 0 0;padding-left:18px;font-size:13px;line-height:1.8}.pause-screen{background:#020203b3;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.pause-screen .menu-col{align-items:stretch}.replay-bar{left:50%;bottom:calc(18px + var(--safe-b));flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;max-width:96vw;padding:10px 12px;display:flex;position:absolute;transform:translate(-50%)}.replay-progress{background:#ffffff1a;width:200px;height:4px;position:relative}.replay-progress i{background:var(--red);position:absolute;inset:0 auto 0 0}.replay-label{top:calc(18px + var(--safe-t));font-family:var(--font-head);letter-spacing:.4em;color:var(--red);font-size:13px;animation:1.6s infinite blink;position:absolute;left:50%;transform:translate(-50%)}.touch{pointer-events:none;position:absolute;inset:0}.touch .pad{bottom:calc(18px + var(--safe-b));pointer-events:auto;align-items:flex-end;gap:12px;display:flex;position:absolute}.touch .pad.left{left:calc(16px + var(--safe-l))}.touch .pad.right{right:calc(16px + var(--safe-r))}.tbtn{width:74px;height:74px;font-family:var(--font-head);letter-spacing:.08em;color:var(--text);touch-action:none;-webkit-backdrop-filter:blur(4px);background:#0e10148c;border:1.5px solid #ffffff38;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;font-size:11px;line-height:1.2;display:flex}.tbtn .ic{font-size:24px;line-height:1}.tbtn.big{width:92px;height:92px}.tbtn.down{border-color:var(--red);background:#ff2a3c73}.tbtn.cyan.down{border-color:var(--cyan);background:#52d6ff66}.tbtn.sm{width:58px;height:58px;font-size:10px}.touch .stack{flex-direction:column;align-items:center;gap:12px;display:flex}@media (max-width:900px) and (min-height:521px){.mode-grid{grid-template-columns:1fr;gap:10px;margin-top:14px;overflow-y:auto}.mode-card{min-height:0;padding:14px}.res-body{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.attitude{width:110px;top:34%;transform:none}.horizon{width:84px;height:84px}}@media (max-width:700px),(max-height:520px){.speedo{transform-origin:100% 100%;transform:scale(.72)}.nitro{width:160px}.hud .tc .chip b{font-size:14px}.timer{font-size:20px}.objective,.hint{display:none}.select-screen{touch-action:pan-y;overflow-y:auto}}.touch-device .speedo{bottom:auto;top:calc(64px + var(--safe-t));right:calc(8px + var(--safe-r));transform-origin:100% 0;transform:scale(.6)}.touch-device .nitro{bottom:auto;top:calc(196px + var(--safe-t));right:calc(14px + var(--safe-r));width:140px}.touch-device .hint{display:none}@media (orientation:portrait){.touch-device .hud .tc{top:calc(118px + var(--safe-t))}.logo{font-size:15vw}.title-screen{background:linear-gradient(#0202031a 0%,#02020399 45%,#020203f2 100%);justify-content:flex-end;padding-bottom:14vh}}@media (max-height:520px){.select-screen{padding:calc(10px + var(--safe-t)) calc(16px + var(--safe-r)) calc(10px + var(--safe-b)) calc(16px + var(--safe-l))}.select-head h2{font-size:20px}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.mode-card{gap:5px;min-height:0;padding:10px 12px}.mode-card h3{font-size:13px}.mode-card p{font-size:11px;line-height:1.4}.mode-card .best{font-size:10px}.car-card{width:min(380px,60vw);padding:10px 14px}.car-card h3{margin:2px 0;font-size:18px}.car-card p{display:none}.stat-row{grid-template-columns:110px 1fr 20px;margin:2px 0;font-size:10px}.paints{margin-top:6px}.paint-chip{width:24px;height:24px}.btn{min-width:130px;padding:10px 18px;font-size:13px}.locked-car{display:none}.title-screen{padding:4vh 6vw}.title-desc{margin-bottom:14px;font-size:12px}.subtitle{margin-bottom:12px}.logo{font-size:15vh}.menu-col{flex-flow:wrap}.title-foot{display:none}.lang-switch{top:calc(10px + var(--safe-t));right:calc(16px + var(--safe-r))}.touch-device .hud .tc,.hud .tc{top:calc(50px + var(--safe-t));left:58%}.hud .tc .opt{display:none}.touch-device .chip{padding:4px 8px;font-size:10px}.touch-device .chip b{font-size:13px}.results-card{padding:14px 16px}.res-body{grid-template-columns:1.1fr 1fr;gap:12px;margin-top:10px}.stats-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.stat{padding:6px 8px}.stat .v{font-size:15px}.res-actions{margin-top:10px}.banner{top:22%}}
