@font-face{font-family:Fredoka;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/Fredoka-SemiBold.woff2)format("woff2")}@font-face{font-family:Fredoka;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/Fredoka-Bold.woff)format("woff")}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/AtkinsonHyperlegible-Regular.woff2)format("woff2")}:root{--snow:#f6f9fc;--snow-deep:#dde7f0;--ice:#bfe0f7;--sky:#4f9be0;--ink:#22263a;--ink-soft:#5b6275;--asphalt:#474d5b;--asphalt-deep:#2c3039;--kerb:#e0463f;--go:#4cbb6a;--go-deep:#2f8f4e;--sun:#ffc53d;--sun-deep:#e6a600;--stop:#e8465e;--rock:#a7b0c0;--pine:#2f6f53;--font-display:"Fredoka", "Atkinson Hyperlegible", system-ui, -apple-system, sans-serif;--font-body:"Atkinson Hyperlegible", system-ui, -apple-system, sans-serif;--step-0:17px;--step-1:21px;--step-2:27px;--step-3:34px;--step-4:44px;--step-5:56px}*,:before,:after{box-sizing:border-box}:root{--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}html,body,#root{height:100%}body{font-family:var(--font-body);font-size:var(--step-0);color:var(--ink);background:var(--snow);-webkit-font-smoothing:antialiased;margin:0;line-height:1.5}button{font:inherit}.st-btn{font-family:var(--font-display);font-weight:600;font-size:var(--step-1);color:var(--ink);background:var(--sun);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);cursor:pointer;touch-action:manipulation;border-radius:999px;padding:10px 26px;transition:transform 80ms,box-shadow 80ms}.st-btn:hover{box-shadow:0 5px 0 var(--ink);transform:translateY(-1px)}.st-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.st-btn:focus-visible{outline:3px solid var(--sky);outline-offset:3px}.st-btn:disabled{background:var(--snow-deep);color:var(--ink-soft);cursor:not-allowed;box-shadow:0 4px 0 var(--ink-soft);border-color:var(--ink-soft);transform:none}.st-panel .st-btn{align-self:flex-start}.st-title{min-height:100dvh;padding:max(24px, var(--safe-top)) max(20px, var(--safe-right)) max(24px, var(--safe-bottom)) max(20px, var(--safe-left));background:linear-gradient(180deg, var(--sky) 0%, var(--ice) 45%, var(--snow) 70%);place-items:center;display:grid;position:relative}.st-title-peaks{pointer-events:none;height:min(42vh,300px);position:absolute;bottom:0;left:0;right:0}.st-title-peaks span{position:absolute;inset:0}.st-title-ridge-far{background:var(--rock);clip-path:polygon(0 100%,0 62%,14% 30%,27% 58%,43% 18%,58% 52%,72% 26%,88% 56%,100% 38%,100% 100%)}.st-title-ridge-near{background:var(--snow-deep);clip-path:polygon(0 100%,0 78%,18% 48%,34% 76%,52% 40%,70% 72%,86% 54%,100% 80%,100% 100%)}.st-title-col{text-align:center;flex-direction:column;align-items:center;gap:clamp(8px,2.2vh,20px);width:100%;max-width:560px;display:flex;position:relative}.st-title-name{font-family:var(--font-display);color:var(--snow);text-shadow:.07em .07em 0 var(--ink);margin:0;font-size:clamp(34px,min(11vw,9vh),64px);font-weight:700;line-height:1.05}.st-title-sub{max-width:34ch;font-size:var(--step-1);margin:0}.st-title-play{padding:.45em 1.6em;font-size:clamp(24px,3.6vh,34px)}.st-title-stars{font-family:var(--font-display);font-weight:600;font-size:var(--step-1);align-items:center;gap:8px;margin:0;display:flex}.st-title-stars svg{width:28px;height:28px}.st-title-quiet{background:var(--snow);padding:8px 18px;font-size:16px}.st-title-keep{background:var(--go);padding:8px 18px;font-size:16px}.st-title-erase{color:var(--stop)}.st-title-confirm{flex-direction:column;align-items:center;gap:8px;max-width:40ch;display:flex}.st-title-confirm p{margin:0;font-size:15px;line-height:1.35}.st-title-gate{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;font-size:15px;display:flex}.st-title-gate-input{width:5ch;font:inherit;font-family:var(--font-display);text-align:center;color:var(--ink);background:var(--snow);border:2px solid var(--ink);border-radius:8px;padding:4px 6px}.st-title-gate-input:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.st-title-confirm-actions{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}@media (height<=460px){.st-title-confirm{gap:6px;max-width:none}.st-title-confirm p,.st-title-gate{font-size:14px}.st-title-confirm .st-btn{padding:6px 14px;font-size:15px}}.st-app{min-height:100dvh;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:radial-gradient(120% 80% at 50% 0%, #ffffffb3, transparent 60%), radial-gradient(90% 60% at 100% 100%, #bfe0f780, transparent 60%), var(--snow);flex-direction:column;display:flex}.st-header{justify-content:space-between;align-items:center;gap:16px;padding:14px clamp(16px,4vw,40px);display:flex}.st-brand{font-family:var(--font-display);font-weight:700;font-size:var(--step-3);color:var(--ink);align-items:baseline;gap:12px;margin:0;line-height:1;display:flex}.st-brand small{font-family:var(--font-body);font-weight:400;font-size:var(--step-0);color:var(--ink-soft)}@media (width<=640px){.st-brand{font-size:var(--step-2)}.st-brand small{display:none}}@media (width<=400px){.st-header{gap:10px;padding:12px}.st-brand{font-size:var(--step-1)}}.st-stars-total{font-family:var(--font-display);font-weight:600;font-size:var(--step-1);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);white-space:nowrap;background:#fff;border-radius:999px;flex-shrink:0;align-items:center;gap:8px;padding:6px 16px 6px 12px;display:inline-flex}.st-stars-total svg{width:22px;height:22px}.st-main{flex:1;grid-template-columns:minmax(0,1fr) clamp(240px,34vw,360px);min-height:0;display:grid}@media (orientation:portrait),(width<=620px){.st-main{grid-template-rows:auto 1fr;grid-template-columns:minmax(0,1fr)}}.st-map-wrap{align-content:safe center;padding:8px clamp(8px,3vw,32px) 24px;display:grid;position:relative;overflow:auto;container-type:inline-size}.st-map{width:100%;height:auto;font-family:var(--font-display);border:3px solid var(--ink);box-shadow:0 6px 0 var(--ink);background:var(--sky);border-radius:24px;display:block}.st-track-kerb-base{fill:none;stroke:#fff;stroke-width:4.8px;stroke-linecap:butt}.st-track-kerb{fill:none;stroke:var(--kerb);stroke-width:4.8px;stroke-linecap:butt;stroke-dasharray:.55 .55}.st-track{fill:none;stroke:var(--asphalt);stroke-width:3.2px;stroke-linecap:round}.st-track-line{fill:none;stroke:#ffffffd9;stroke-width:.28px;stroke-linecap:round;stroke-dasharray:1.3 1.1}.st-track-kerb-base.st-edge-locked{stroke:#fdfefe}.st-track-kerb.st-edge-locked{stroke:#eca8a7}.st-track.st-edge-locked{stroke:#a7acb4}.st-track-line.st-edge-locked{stroke:#fff6}.st-node{cursor:pointer;outline:none}.st-node:focus-visible .st-node-disc{stroke:var(--sky);stroke-width:1.4px}.st-node-shadow{fill:#22263a40}.st-node-disc{stroke:var(--ink);stroke-width:.8px}.st-node-open .st-node-disc{fill:#fff}.st-node-started .st-node-disc{fill:var(--go)}.st-node-mastered .st-node-disc{fill:var(--sun)}.st-node-locked .st-node-disc{fill:var(--rock);stroke:var(--ink-soft)}.st-node-glyph{font-family:var(--font-display);fill:var(--ink);text-anchor:middle;dominant-baseline:central;pointer-events:none;letter-spacing:-.05px;font-size:3.1px;font-weight:700}@container (width<=460px){.st-node-glyph{font-size:4.2px}}.st-node-locked .st-node-glyph{fill:#22263a8c}.st-node-lock{fill:var(--ink);stroke:var(--snow);stroke-width:.35px}.st-node-star{fill:var(--snow-deep);stroke:var(--ink);stroke-width:.3px}.st-node-star.on{fill:var(--sun)}.st-node-halo{fill:none;stroke:var(--go-deep);stroke-width:.9px;opacity:0;transform-box:fill-box;transform-origin:50%;animation:2.2s ease-out infinite st-halo}.st-node-ring{fill:none;stroke:var(--ink);stroke-width:.9px;stroke-dasharray:1.2 .9}@keyframes st-halo{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}.st-sign-post{fill:#7c8798}.st-sign-board{fill:#fff;stroke:var(--ink);stroke-width:.5px}.st-sign-band{fill:var(--sky)}.st-sign-text{font-family:var(--font-display);fill:var(--ink);text-anchor:middle;font-size:2.9px;font-weight:700}.st-peak-far{fill:#a9bcd3}.st-peak-near{fill:#7d93b0}.st-peak-cap{fill:#f7fafe}.st-ground{fill:var(--snow)}.st-drift{fill:var(--ice);opacity:.45}.st-pine{fill:var(--pine)}.st-pine-snow{fill:none;stroke:#fff;stroke-width:.35px;stroke-linecap:round}.st-flag-pole{stroke:var(--ink);stroke-width:.3px}.st-panel{border-left:3px solid var(--ink);background:#fff;flex-direction:column;gap:16px;min-height:0;padding:24px 24px 32px;display:flex}@media (orientation:portrait),(width<=620px){.st-panel{border-left:0;border-top:3px solid var(--ink)}}.st-panel-empty{color:var(--ink-soft);max-width:30ch}.st-panel-empty h2,.st-panel h2{font-family:var(--font-display);font-weight:700;font-size:var(--step-2);color:var(--ink);margin:0 0 6px;line-height:1.15}.st-panel p{max-width:34ch;margin:0}.st-panel-status{font-family:var(--font-display);font-weight:600;font-size:var(--step-1);align-items:center;gap:10px;display:flex}.st-panel-status .st-star-row svg{width:26px;height:26px}.st-star-row{gap:2px;display:inline-flex}.st-star-row svg path{fill:var(--snow-deep);stroke:var(--ink);stroke-width:1.5px}.st-star-row svg.on path{fill:var(--sun)}.st-panel-locked{color:var(--ink-soft)}.st-panel-practice{color:var(--ink-soft);font-size:15px}.st-results{min-height:100dvh;padding:max(24px, var(--safe-top)) max(24px, var(--safe-right)) max(24px, var(--safe-bottom)) max(24px, var(--safe-left));background:linear-gradient(180deg, var(--sky) 0%, var(--ice) 45%, var(--snow) 70%);place-items:center;display:grid}.st-results-card{border:4px solid var(--ink);box-shadow:0 8px 0 var(--ink);text-align:center;background:#fff;border-radius:32px;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:520px;padding:32px 36px 36px;display:flex}.st-results-card h1{font-family:var(--font-display);font-weight:700;font-size:var(--step-4);margin:0;line-height:1.05}.st-results-sub{color:var(--ink-soft);margin:0}.st-big-stars{gap:8px;margin:8px 0;display:flex}.st-big-stars svg{width:84px;height:84px;animation:.42s cubic-bezier(.2,1.5,.4,1) forwards st-star-in;transform:scale(0)}.st-big-stars svg:nth-child(2){animation-delay:.22s}.st-big-stars svg:nth-child(3){animation-delay:.44s}.st-big-stars svg path,.st-title-stars svg path{fill:var(--snow-deep);stroke:var(--ink);stroke-width:1.4px}.st-big-stars svg.on path,.st-title-stars svg.on path{fill:var(--sun)}@keyframes st-star-in{to{transform:scale(1)}}.st-results-line{font-family:var(--font-display);font-weight:600;font-size:var(--step-2);margin:0}.st-results-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:12px;display:flex}@media (orientation:landscape) and (height<=520px){.st-results-card{gap:6px;padding:12px 20px 16px}.st-results-card h1{font-size:var(--step-2)}.st-big-stars{gap:6px;margin:2px 0}.st-big-stars svg{width:44px;height:44px}.st-results-line{font-size:var(--step-1)}.st-results-actions{margin-top:4px}}.st-rotate{place-items:center;height:96px;margin:4px 0;display:grid}.st-rotate-phone{border:3px solid var(--ink);background:var(--sky);width:44px;height:72px;box-shadow:0 4px 0 var(--ink);border-radius:10px;animation:2.4s ease-in-out infinite st-rotate-turn}@keyframes st-rotate-turn{0%,25%{transform:rotate(0)}55%,85%{transform:rotate(-90deg)}to{transform:rotate(0)}}@media (prefers-reduced-motion:reduce){.st-node-halo{opacity:.6;animation:none}.st-big-stars svg{animation:none;transform:none}.st-btn{transition:none}.st-rotate-phone{animation:none;transform:rotate(-90deg)}}.gr-root{background:#4f9be0;position:fixed;inset:0;overflow:hidden}.gr-canvas,.gr-stage{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.gr-canvas{width:100%;height:100%}.gr-btn{pointer-events:auto;font-family:var(--font-display);color:var(--ink);background:var(--sun);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);cursor:pointer;touch-action:manipulation;border-radius:999px;padding:10px 22px;font-size:18px;font-weight:600;transition:transform 80ms,box-shadow 80ms}.gr-btn:hover{box-shadow:0 5px 0 var(--ink);transform:translateY(-1px)}.gr-btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(3px)}.gr-btn:focus-visible{outline:3px solid var(--sky);outline-offset:3px}.gr-btn-quiet{background:var(--snow);padding:8px 16px;font-size:16px}.gr-btn-quiet[aria-pressed=true]{background:var(--stop);color:#fff}.gr-btn-go{padding:14px 44px;font-size:26px}.gr-note kbd,.gr-keys kbd{font-family:var(--font-display);border:2px solid var(--ink);color:var(--ink);background:#fff;border-bottom-width:4px;border-radius:8px;padding:1px 8px;font-size:.85em;font-weight:600}.gr-overlay{padding:max(16px, var(--safe-top)) max(16px, var(--safe-right)) max(16px, var(--safe-bottom)) max(16px, var(--safe-left));background:#22263a52;place-items:center;display:grid;position:absolute;inset:0;overflow:auto}.gr-card{background:var(--snow);border:4px solid var(--ink);box-shadow:0 8px 0 var(--ink);text-align:center;border-radius:28px;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:880px;padding:28px 32px 30px;display:flex}.gr-card-title{font-family:var(--font-display);color:var(--ink);margin:0;font-size:34px;font-weight:700;line-height:1.1}.gr-card-body{color:var(--ink);max-width:40ch;margin:0;font-size:18px;line-height:1.45}.gr-card-fine{color:var(--ink-soft);max-width:44ch;margin:0;font-size:15px;line-height:1.4}.gr-keys{color:var(--ink);flex-wrap:wrap;justify-content:center;gap:8px 22px;margin:0;padding:0;font-size:16px;list-style:none;display:flex}.gr-card-actions{flex-direction:column;align-items:center;gap:4px;margin-top:4px;display:flex}.gr-picker,.gr-level-picker{--gr-gap:12px;justify-content:center;gap:var(--gr-gap);flex-wrap:wrap;width:100%;display:flex}.gr-picker{--gr-cols:5}.gr-level-picker{--gr-cols:3}.gr-map-picker{--gr-cols:4}.gr-car,.gr-level{--gr-col:calc((100% - (var(--gr-cols) - 1) * var(--gr-gap)) / var(--gr-cols) - 1px);pointer-events:auto;touch-action:manipulation;flex:0 1 var(--gr-col);max-width:var(--gr-col);border:3px solid var(--snow-deep);cursor:pointer;color:var(--ink);text-align:center;background:#fff;border-radius:20px;flex-direction:column;align-items:center;transition:transform 80ms;display:flex}.gr-car:hover,.gr-level:hover{transform:translateY(-2px)}.gr-car:focus-visible,.gr-level:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.gr-car-on,.gr-level-on{border-color:var(--ink);box-shadow:0 4px 0 var(--ink);background:#fff8dd}.gr-map-picker .gr-level{border-color:var(--ink);box-shadow:0 4px 0 var(--ink)}.gr-car{justify-content:flex-start;gap:5px;padding:7px 6px 8px}.gr-level{justify-content:center;gap:6px;padding:16px 12px 18px}.gr-car-name{font-family:var(--font-display);font-size:14px;font-weight:700;line-height:1.15}.gr-level-name{font-family:var(--font-display);font-size:22px;font-weight:700;line-height:1}.gr-level-tag{color:var(--ink-soft);font-size:13px;line-height:1.3}.gr-showroom{flex-direction:column;align-items:center;gap:10px;width:100%;display:flex}.gr-show-stars{font-family:var(--font-display);align-items:center;gap:8px;margin:0;font-size:18px;font-weight:600;line-height:1.1;display:flex}.gr-show-stars svg{flex:none;width:20px;height:20px}.gr-show-stars svg path{fill:var(--snow-deep);stroke:var(--ink);stroke-width:1.4px}.gr-show-stars svg.on path{fill:var(--sun)}.gr-show-next{font-family:var(--font-body);color:var(--ink-soft);border-left:2px solid var(--snow-deep);padding-left:8px;font-size:14px}.gr-stage{border:3px solid var(--ink);background:var(--ice);width:100%;max-width:560px;height:clamp(130px,20vh,210px);box-shadow:0 4px 0 var(--ink);cursor:grab;border-radius:20px;position:relative;overflow:hidden}.gr-stage:active{cursor:grabbing}.gr-stage-btns{gap:8px;display:flex;position:absolute;bottom:10px;right:10px}.gr-stage-btns .gr-btn{box-shadow:0 3px 0 var(--ink);padding:6px 14px;font-size:14px}.gr-stage-boost[aria-pressed=true]{background:var(--go);color:#fff}.gr-show-name{font-family:var(--font-display);margin:0;font-size:24px;font-weight:700;line-height:1.1}.gr-show-line{max-width:44ch;min-height:2.7em;color:var(--ink-soft);margin:0;font-size:15px;line-height:1.35}.gr-show-locked{font-family:var(--font-display);color:var(--ink);justify-content:center;align-items:center;gap:8px;font-weight:600;display:flex}.gr-show-line .gr-lock{flex:none;width:19px;height:19px}.gr-lock{fill:currentColor}.gr-car-paint{border:2px solid var(--ink);background:var(--gr-paint,var(--snow-deep));border-radius:8px;place-items:center;width:100%;height:20px;display:grid}.gr-car-paint .gr-lock{width:13px;height:13px;color:var(--ink)}.gr-car-locked .gr-car-name{color:var(--ink-soft)}.gr-car-locked .gr-car-paint{opacity:.6}.gr-car-shown{outline:3px solid var(--sky);outline-offset:2px}@media (height<=820px){.gr-card{gap:10px;padding:20px 24px 22px}.gr-btn-go{padding:11px 36px;font-size:22px}.gr-showroom{gap:6px}.gr-show-stars{font-size:16px}.gr-show-name{font-size:20px}.gr-show-line{min-height:2.5em}.gr-stage{height:clamp(128px,19vh,210px)}.gr-car{gap:4px;padding:5px 5px 6px}.gr-car-paint{height:16px}}@media (height<=740px){.gr-card:has(.gr-showroom) .gr-card-body{display:none}}@media (width<=640px){.gr-card{gap:6px;padding:12px 12px 14px}.gr-keys{gap:4px 16px}.gr-picker{--gr-cols:4}.gr-level-picker,.gr-map-picker{--gr-cols:2}.gr-car{gap:3px;padding:4px 4px 5px}.gr-car-name{font-size:13px}.gr-car-paint{height:14px}.gr-level{padding:6px 8px}.gr-stage-btns{bottom:8px;right:8px}.gr-stage-btns .gr-btn{padding:5px 11px;font-size:13px}.gr-card-title{font-size:26px}.gr-card-actions{flex-flow:wrap;justify-content:center;gap:8px}.gr-stage{height:clamp(104px,16vh,210px)}}@media (orientation:landscape) and (height<=520px){.gr-card:has(.gr-showroom){gap:5px;padding:8px 14px 10px}.gr-card:has(.gr-showroom) .gr-card-title{font-size:22px}.gr-showroom{grid-template-columns:minmax(0,280px) minmax(0,1fr);grid-template-areas:"stand stars""stand roster""name roster""line roster";align-items:center;gap:4px 16px;display:grid}.gr-showroom .gr-stage{grid-area:stand;align-self:stretch;max-width:none;height:auto;min-height:118px}.gr-show-stars{grid-area:stars;justify-content:center;font-size:15px}.gr-show-name{grid-area:name;font-size:18px}.gr-show-line{grid-area:line;min-height:2.4em;font-size:13px}.gr-showroom .gr-picker{--gr-cols:4;--gr-gap:8px;grid-area:roster}.gr-car{gap:3px;padding:3px 4px 4px}.gr-car-name{font-size:12px}.gr-car-paint{height:14px}.gr-card:has(.gr-showroom) .gr-card-actions{flex-direction:row;justify-content:center;gap:10px;margin-top:0}.gr-btn-go{padding:8px 26px;font-size:17px}}@media (prefers-reduced-motion:reduce){.gr-btn,.gr-car,.gr-level{transition:none}}
