:root{--ink:#0f1a2e;--panel:#0d162abd;--panel-border:#ffffff1f;--text:#f4f7ff;--muted:#9fb1d1;--accent:#ffd11a;--red:#ff3b47;--green:#2fd081;--font:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif}*{box-sizing:border-box}html,body{height:100%;font-family:var(--font);color:var(--text);-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;background:#dfe8f5;margin:0;overflow:hidden}#viewport{position:fixed;inset:0}#viewport canvas{width:100%;height:100%;display:block}body.aiming #viewport{cursor:none}#ui{pointer-events:none;position:fixed;inset:0}.hidden{display:none!important}.hud{position:absolute;inset:0}.hud:before{content:"";pointer-events:none;background:radial-gradient(#0000 55%,#14234647 100%);position:absolute;inset:0}.hud.on-title>:not(.screen){opacity:0}.panel{background:var(--panel);border:1px solid var(--panel-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:14px;position:absolute;box-shadow:0 8px 30px #0a142840}.race-panel{min-width:210px;padding:14px 18px 12px;top:18px;left:18px}.race-panel .row{justify-content:space-between;align-items:baseline;gap:18px;line-height:1.55;display:flex}.label{letter-spacing:.14em;color:var(--muted);font-size:12px;font-weight:700}.value{font-variant-numeric:tabular-nums;letter-spacing:.02em;font-size:22px;font-weight:800}.penalty{color:var(--red);min-height:0;margin-top:4px;font-size:13px;font-weight:700}.penalty:empty{display:none}.progress{background:#ffffff26;border-radius:2px;height:4px;margin-top:10px;overflow:hidden}.progress-fill{background:var(--accent);transform-origin:0;height:100%;transform:scaleX(0)}.stamina{align-items:center;gap:12px;padding:10px 14px;display:flex;bottom:18px;left:18px}.stamina-bar{background:#ffffff26;border-radius:4px;width:140px;height:8px;overflow:hidden}.stamina-fill{transform-origin:0;background:linear-gradient(90deg,#39c6ff,#8be8ff);height:100%;transition:background .2s}.stamina.active .stamina-fill{background:linear-gradient(90deg, var(--accent), #fff2a8)}.stamina.low .stamina-fill{background:var(--red)}.stamina.locked{opacity:.45}.stamina.locked .label:after{content:" · DOWNHILL"}.shooting-panel{text-align:center;padding:12px 22px 10px;top:18px;left:50%;transform:translate(-50%)}.shooting-title{letter-spacing:.22em;color:var(--accent);font-size:13px;font-weight:800}.dots{justify-content:center;gap:12px;margin:9px 0 6px;display:flex}.dot{background:#111;border:2.5px solid #ffffffd9;border-radius:50%;width:22px;height:22px;transition:background .15s,transform .15s,box-shadow .15s}.dot.hit{background:#fff;transform:scale(1.12);box-shadow:0 0 12px #ffffffe6}.dot.miss{background:var(--red);border-color:var(--red)}.hint{color:var(--muted);font-size:11px}.conditions{justify-content:center;align-items:center;gap:18px;margin:2px 0 6px;font-size:12px;font-weight:700;display:flex}.conditions .label{letter-spacing:.16em;color:var(--muted);margin-right:6px;font-size:10px}.wind{font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:flex}.wind-arrow{color:#8be8ff;font-size:13px}.breath{align-items:center;display:flex}.breath-bar{background:#ffffff26;border-radius:3px;width:80px;height:6px;overflow:hidden}.breath-fill{transform-origin:0;background:linear-gradient(90deg,#39c6ff,#8be8ff);height:100%}.breath.holding .breath-fill{background:linear-gradient(90deg, var(--accent), #fff2a8)}.breath.empty .breath-fill{background:var(--red)}.loop-panel{text-align:center;padding:10px 22px 9px;top:18px;left:50%;transform:translate(-50%)}.loop-title{letter-spacing:.18em;color:var(--red);font-size:13px;font-weight:800}.loop-bar{background:#ffffff26;border-radius:3px;width:220px;height:5px;margin:8px auto 6px;overflow:hidden}.loop-fill{background:var(--red);transform-origin:0;height:100%;transform:scaleX(0)}.map-loop{stroke:#ff7878b3}.map-loop.owed{stroke:#ff3b3b;stroke-width:3.2px}.map-rival{fill:#2f3d5c;stroke:#fff;stroke-width:1.2px}.sight{--x:50vw;--y:50vh;background:radial-gradient(circle at var(--x) var(--y), transparent 0, transparent 22vmin, #050a1452 27vmin, #050a149e 70vmin);opacity:0;transition:opacity .35s;position:absolute;inset:0}body.aiming .sight{opacity:1}.reticle{opacity:0;--steady:1;--ring:54px;transition:opacity .25s;position:absolute;top:0;left:0}body.aiming .reticle{opacity:1}.reticle .ring{width:var(--ring);height:var(--ring);left:calc(var(--ring) / -2);top:calc(var(--ring) / -2);border:2px solid #fffffff2;border-radius:50%;position:absolute;box-shadow:0 0 0 1px #00000080,inset 0 0 0 1px #0006}.reticle .ring:before,.reticle .ring:after{content:"";background:#ffffffe6;position:absolute}.reticle .ring:before{width:2px;height:10px;box-shadow:0 calc(var(--ring) + 10px) 0 #ffffffe6;margin-left:-1px;top:-10px;left:50%}.reticle .ring:after{width:10px;height:2px;box-shadow:calc(var(--ring) + 10px) 0 0 #ffffffe6;margin-top:-1px;top:50%;left:-10px}.reticle .pip{background:color-mix(in srgb, var(--green) calc(var(--steady) * 100%), var(--red));border-radius:50%;width:6px;height:6px;position:absolute;top:-3px;left:-3px;box-shadow:0 0 6px #0009}.rifle{aspect-ratio:400/260;opacity:0;transform-origin:80% 100%;width:52vmin;transition:opacity .3s;position:absolute;bottom:-4vmin;right:-2vmin}body.aiming .rifle{opacity:1}.rifle svg{filter:drop-shadow(0 6px 10px #00000080);width:100%;height:100%}.muzzle-flash{aspect-ratio:1;opacity:0;mix-blend-mode:screen;background:radial-gradient(circle,#fff 0,#ffe59a 18%,#ffa028a6 38%,#0000 68%);width:26%;position:absolute;top:2%;left:78%;transform:translate(-50%,-50%)}.muzzle-flash.on{opacity:1}.message{letter-spacing:.06em;text-align:center;white-space:nowrap;color:#fff;text-shadow:0 4px 24px #0a14328c,0 2px #0a143259;opacity:0;font-weight:900;transition:opacity .25s,transform .25s;position:absolute;top:38%;left:50%;transform:translate(-50%,-50%)scale(.85)}.message.show{opacity:1;transform:translate(-50%,-50%)scale(1)}.message.big{font-size:clamp(64px,12vw,150px)}.message.info{font-size:clamp(26px,4vw,44px)}.toast{background:var(--panel);border:1px solid var(--panel-border);white-space:nowrap;opacity:0;border-radius:999px;padding:10px 18px;font-size:17px;font-weight:800;transition:opacity .2s,transform .2s;position:absolute;top:24%;left:50%;transform:translate(-50%,10px)}.toast.show{opacity:1;transform:translate(-50%)}.toast.good{color:var(--green)}.toast.bad{color:var(--red)}.wrong-way{background:var(--red);color:#fff;letter-spacing:.2em;border-radius:10px;padding:10px 26px;font-size:20px;font-weight:900;animation:.6s ease-in-out infinite alternate pulse;position:absolute;top:120px;left:50%;transform:translate(-50%)}@keyframes pulse{0%{opacity:.65}to{opacity:1}}.beacon{position:absolute;top:0;left:0}.beacon-ring{border:3px solid var(--accent);border-radius:50%;width:44px;height:44px;animation:1s ease-out infinite beacon;position:absolute;top:-22px;left:-22px;box-shadow:0 0 10px #00000059}.beacon-arrow{border-left:9px solid #0000;border-right:9px solid #0000;border-top:14px solid var(--accent);width:0;height:0;position:absolute;top:-52px;left:-9px}@keyframes beacon{0%{opacity:1;transform:scale(.6)}to{opacity:.2;transform:scale(1.3)}}.minimap-panel{padding:6px;top:18px;right:18px}.minimap{width:190px;height:190px;display:block}.keys{color:#0f1a2ebf;font-size:12px;position:absolute;bottom:16px;right:18px}.keys b{color:var(--ink)}.screen{pointer-events:auto;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.screen.loading{color:var(--ink);z-index:4;background:linear-gradient(#dfe8f5,#b9cbe6);flex-direction:column;gap:18px}.loading-text{letter-spacing:.04em;font-weight:700}.spinner{border:4px solid #0f1a2e26;border-top-color:var(--ink);border-radius:50%;width:42px;height:42px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.screen.title,.screen.results{background:radial-gradient(#0f1a2e26,#0f1a2e8c)}.title-card{color:var(--ink);text-align:center;background:#fffffff0;border-radius:22px;min-width:380px;padding:34px 40px 26px;box-shadow:0 30px 80px #0a143259}.title-card h1{letter-spacing:.08em;margin:0;font-size:46px;font-weight:900}.subtitle{color:#4a5a78;margin:6px 0 20px;font-weight:600}.controls{text-align:left;color:#33415c;grid-template-columns:1fr 1fr;gap:8px 26px;width:max-content;margin:0 auto 24px;font-size:14px;display:grid}kbd{min-width:26px;font:700 12px var(--font);color:var(--ink);text-align:center;background:#eef2f9;border:1px solid #ccd6e6;border-bottom-width:3px;border-radius:6px;margin-right:4px;padding:2px 7px;display:inline-block}button.primary{pointer-events:auto;cursor:pointer;color:#fff;font:800 16px var(--font);letter-spacing:.06em;background:linear-gradient(#ff4a3d,#d61f2c);border:0;border-radius:12px;padding:13px 34px;transition:transform .1s;box-shadow:0 8px 20px #d61f2c59}button.primary:hover{transform:translateY(-1px)}button.primary:active{transform:translateY(1px)}.small{color:#6a7894;margin:10px 0 0;font-size:12px}.menu-buttons{flex-direction:column;align-items:center;gap:10px;width:220px;margin:18px auto 22px;display:flex}.menu-buttons.row{flex-direction:row;justify-content:center;width:auto;margin:0 auto}.menu-buttons button{width:100%}.menu-buttons.row button{width:auto}button.secondary{pointer-events:auto;cursor:pointer;color:var(--ink);font:800 16px var(--font);letter-spacing:.06em;background:#fff;border:2px solid #ccd6e6;border-radius:12px;padding:11px 32px;transition:transform .1s,border-color .15s}button.secondary:hover{border-color:#8fa3c4;transform:translateY(-1px)}button.secondary:active{transform:translateY(1px)}button.primary:focus-visible,button.secondary:focus-visible{outline-offset:2px;outline:3px solid #39a0ff}.profile-line{color:#33415c;margin:14px 0 0;font-weight:700}.title-card h2{letter-spacing:.06em;margin:18px 0 6px;font-size:22px;font-weight:900}.settings{text-align:left;gap:6px;width:300px;margin:0 auto;display:grid}.settings h2{text-align:center}.settings label{letter-spacing:.14em;text-transform:uppercase;color:#4a5a78;margin-top:10px;font-size:12px;font-weight:800}.settings input,.settings select{font:600 16px var(--font);color:var(--ink);background:#fff;border:2px solid #ccd6e6;border-radius:10px;padding:10px 12px}.settings input:focus,.settings select:focus{border-color:#39a0ff;outline:none}.settings .small{text-align:center}.settings .menu-buttons{margin-bottom:0}@media (max-width:480px){.title-card{width:calc(100vw - 32px);min-width:0;padding:26px 18px 20px}.settings{width:100%}.controls{display:none}}.results-card h1{margin-bottom:18px;font-size:54px}.result-grid{text-align:left;grid-template-columns:auto auto;gap:8px 40px;width:max-content;margin:0 auto 18px;font-size:17px;display:grid}.result-grid b{text-align:right;font-variant-numeric:tabular-nums}.result-grid .pen{color:#d61f2c}.result-grid small{color:#6a7894;font-weight:600}.result-grid .final-label{border-top:2px solid #e1e7f2;padding-top:8px;font-weight:800}.result-grid .final{border-top:2px solid #e1e7f2;padding-top:8px;font-size:30px;font-weight:900}.stages{width:max-content;margin:0 auto 14px}.stage-row{color:#33415c;justify-content:space-between;align-items:center;gap:16px;margin:6px 0;font-size:14px;display:flex}.stage-row .dots{gap:7px;margin:0}.stage-row .dot{border-width:2px;border-color:#1a1d24;width:16px;height:16px}.stage-row .dot.hit{box-shadow:none;background:#13a86b;border-color:#13a86b;transform:none}.results-card{max-height:calc(100vh - 32px);overflow-y:auto}.standings{text-align:left;width:min(100%,360px);margin:0 auto 14px;font-size:14px}.standing{color:#33415c;font-variant-numeric:tabular-nums;border-radius:6px;grid-template-columns:24px 1fr 40px 76px;gap:8px;padding:3px 8px;display:grid}.standing.head{letter-spacing:.12em;color:#6a7894;font-size:11px;font-weight:800}.standing.me{color:var(--ink);background:#fff1b8;font-weight:800}.standing .rank,.standing .misses,.standing .gap{text-align:right}.standing small{color:#6a7894;margin-left:4px;font-weight:600}.best{color:#4a5a78;margin-bottom:16px;font-weight:700}.best.new{color:#13a86b}.fatal{width:min(440px,100vw - 32px);color:var(--ink);text-align:center;pointer-events:auto;background:#fff;border-radius:14px;padding:24px 30px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 30px 80px #0a143259}.fatal h2{margin:0 0 8px;font-size:20px}.fatal p{color:#4a5a78;margin:6px 0 0}.fatal code{color:#b00020;font-size:12px}.debug-panel{pointer-events:auto;border:1px solid var(--panel-border);color:#dbe4f5;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);-webkit-user-select:text;user-select:text;background:#090e1ae6;border-radius:14px;width:372px;padding:12px 14px 16px;font-size:12px;position:absolute;top:220px;bottom:18px;right:18px;overflow-y:auto}.debug-header{justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:14px;display:flex}.debug-header span{color:var(--muted);font-size:11px}.debug-stats>div,.debug-compat>div{border-bottom:1px solid #ffffff0d;justify-content:space-between;gap:12px;padding:2px 0;display:flex}.debug-stats span,.debug-compat span{color:var(--muted)}.debug-stats b,.debug-compat b{font-variant-numeric:tabular-nums;text-align:right}.debug-compat .wrap{flex-direction:column;gap:0}.debug-compat .wrap b{text-align:left;font-weight:500}.debug-stats small,.debug-label small{color:#7f90b0;font-weight:400}.debug-stats .busy{color:var(--accent);font-weight:700}.bad{color:var(--red)}.debug-group{margin-top:10px}.debug-label{color:var(--muted);margin-bottom:4px;font-weight:600}.debug-buttons{flex-wrap:wrap;gap:4px;display:flex}.debug-buttons button{cursor:pointer;color:#dbe4f5;font:600 12px var(--font);background:#ffffff0f;border:1px solid #ffffff24;border-radius:7px;flex:1;padding:6px 4px}.debug-buttons button.active{background:var(--accent);color:var(--ink);border-color:var(--accent)}.debug-buttons button:disabled{opacity:.5;cursor:wait}.debug-section{letter-spacing:.08em;text-transform:uppercase;color:#fff;border-top:1px solid #ffffff1a;margin:14px 0 6px;padding-top:10px;font-size:11px;font-weight:800}.debug-sliders{opacity:.45;transition:opacity .2s}.debug-panel.gpu-driven .debug-sliders{opacity:1}.debug-slider{margin:6px 0}.slider-row{align-items:center;gap:8px;display:flex}.slider-row input{accent-color:var(--accent);flex:1}.slider-value{text-align:right;font-variant-numeric:tabular-nums;width:46px}.debug-toggle{cursor:pointer;align-items:center;gap:8px;margin:5px 0;display:flex}.debug-toggle input{accent-color:var(--accent)}.debug-notes{color:#9fb1d1;margin-top:12px;font-size:11px;line-height:1.45}.debug-notes p{margin:6px 0}.debug-notes b{color:#dbe4f5}.debug-notes code{color:var(--accent)}.split-panel{font-variant-numeric:tabular-nums;width:236px;padding:10px 12px 8px;top:232px;right:18px}.split-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.split-head .label{font-size:11px}.split-place{font-size:20px;font-weight:900}.split-place.lead{color:var(--accent)}.split-row{border-radius:6px;grid-template-columns:18px 1fr auto;gap:8px;padding:2px 6px;font-size:14px;font-weight:600;display:grid}.split-row .rank{text-align:right;color:var(--muted)}.split-row small{color:var(--muted);margin-left:3px;font-weight:600}.split-row .gap{text-align:right}.split-row.me{background:#ffd11a38;font-weight:800}.split-row.me .rank{color:var(--text)}.split-skip{background:var(--panel-border);height:1px;margin:3px 6px}.screen.pause{z-index:3;background:#0f1a2e73}.pause-card{min-width:300px}.pause-card .menu-buttons{margin-bottom:8px}@media (max-width:480px){.split-panel{width:220px;top:auto;bottom:64px;right:16px}}.settings fieldset{border:0;min-width:0;margin:10px 0 0;padding:0}.settings legend{letter-spacing:.14em;text-transform:uppercase;color:#4a5a78;margin-bottom:6px;padding:0;font-size:12px;font-weight:800}.swatches{flex-wrap:wrap;gap:8px;display:flex}.swatch{cursor:pointer;position:relative}.swatch input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.swatch span{background:var(--c);border-radius:50%;width:28px;height:28px;transition:transform .1s;display:block;box-shadow:inset 0 0 0 1px #0f1a2e40}.swatch:hover span{transform:scale(1.1)}.swatch input:checked+span{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--ink)}.swatch input:focus-visible+span{outline-offset:4px;outline:3px solid #39a0ff}.segmented{display:flex}.segmented label{cursor:pointer;flex:1;position:relative}.segmented input{opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute}.segmented span{text-align:center;color:#4a5a78;background:#fff;border:2px solid #ccd6e6;padding:8px 0;font-weight:800;display:block}.segmented label:first-of-type span{border-radius:10px 0 0 10px}.segmented label:last-of-type span{border-left:0;border-radius:0 10px 10px 0}.segmented input:checked+span{background:var(--ink);border-color:var(--ink);color:#fff}.segmented input:focus-visible+span{outline-offset:2px;outline:3px solid #39a0ff}.race-wrap{width:100%;position:relative}.race-wrap.locked button.primary{color:#6a7894;box-shadow:none;cursor:not-allowed;background:#c5cedd;transform:none}.tooltip{background:var(--ink);color:#fff;opacity:0;pointer-events:none;z-index:2;border-radius:8px;width:max-content;max-width:260px;padding:8px 12px;font-size:13px;font-weight:700;line-height:1.3;transition:opacity .15s,transform .15s;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px)}.tooltip:after{content:"";border:6px solid #0000;border-top-color:var(--ink);margin-left:-6px;position:absolute;top:100%;left:50%}.race-wrap.locked:hover .tooltip,.race-wrap.locked:focus-within .tooltip,.race-wrap.refused .tooltip{opacity:1;transform:translate(-50%)}.race-wrap.refused button.primary{animation:.35s refuse}@keyframes refuse{20%,60%{translate:-6px}40%,80%{translate:6px}}@media (prefers-reduced-motion:reduce){.race-wrap.refused button.primary{animation:none}}body.graphics-off{background:#000}body.graphics-off #viewport{visibility:hidden}.screen.title .title-card{max-height:calc(100vh - 32px);overflow-y:auto}.settings-layout{text-align:left;align-items:stretch;gap:28px;display:flex}.settings-layout .settings{flex:none;margin:0}.preview{background:radial-gradient(at 50% 38%,#f7faff 0%,#dfe8f5 55%,#c4d3ea 100%);border-radius:18px;flex:none;width:340px;min-height:420px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #0f1a2e14}.preview-stage,.preview-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.preview-label{text-align:center;letter-spacing:.14em;text-transform:uppercase;color:#4a5a78;font-size:11px;font-weight:800;position:absolute;bottom:14px;left:0;right:0}.preview-off{color:#5a6680;font:800 13px var(--font);letter-spacing:.2em;text-transform:uppercase;background:#000;justify-content:center;align-items:center;display:none;position:absolute;inset:0}.preview.off .preview-off{display:flex}.preview.off .preview-label{display:none}@media (max-width:820px){.settings-layout{flex-direction:column;gap:16px}.preview{order:-1;width:100%;min-height:240px}.settings-layout .settings{width:100%}}.settings{width:320px}.kit-colors .swatches{flex-wrap:nowrap;gap:6px;margin:6px 0 0;padding-left:74px;position:relative}.kit-colors .swatches legend{letter-spacing:.1em;margin:0;font-size:11px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.kit-colors .swatch span{width:24px;height:24px}@media (max-width:820px){.settings{width:100%}}
