:root{--bg:#f4ecd8;--panel:#fffaf0;--ink:#2b2a27;--muted:#7a7466;--line:#e2d6bb;--accent:#c0392b;--accent-ink:#fff;--pine:#4a6b5d;--ok:#2e7d4f;--danger:#c0392b;--bronze:#b0773f;--silver:#9aa3ab;--gold:#d4a017;--radius:10px;--pixel:"Jersey 10", system-ui, sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#1d1f1c;--panel:#262925;--ink:#efe8d8;--muted:#a39d8e;--line:#3a3e38;--pine:#7fa894;--ok:#6cc08e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}.embedded,.embedded body,.embedded #root{height:100%}.embedded body{overflow:hidden}.embedded #root{overscroll-behavior:contain;overflow-y:auto}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font:15px/1.45 Inter,system-ui,sans-serif}h1,h2{font-family:var(--pixel);letter-spacing:.02em;margin:0;font-weight:400}h1{color:var(--pine);font-size:34px}h2{margin-bottom:12px;font-size:26px}button{font:inherit;font-family:var(--pixel);letter-spacing:.02em;background:var(--accent);color:var(--accent-ink);cursor:pointer;touch-action:manipulation;border:0;border-radius:8px;padding:8px 14px;font-size:19px;box-shadow:0 3px #00000040}button:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px #00000040}button:disabled{opacity:.4;cursor:default}button.secondary{background:var(--line);color:var(--ink)}.climb-quit{justify-content:center;gap:12px;display:flex}button.link{box-shadow:none;color:var(--muted);letter-spacing:0;background:0 0;padding:4px 6px;font-family:inherit;font-size:14px;text-decoration:underline}.muted{color:var(--muted)}.small{font-size:13px}.right{text-align:right}.ok{color:var(--ok);font-weight:600}.mono{font-family:var(--pixel);font-variant-numeric:tabular-nums;font-size:25px}.danger{color:var(--danger)}.app{max-width:1100px;margin:0 auto;padding:16px}.header{flex-wrap:wrap;align-items:center;gap:12px 24px;margin-bottom:16px;display:flex}.brand p{color:var(--muted);margin:2px 0 0;font-size:13px}.stats{gap:20px;margin:0 0 0 auto;display:flex}.stat{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;flex-direction:column;align-items:flex-start;gap:0;margin:-2px -4px;padding:2px 4px;display:flex}.stat:hover,.stat:focus-visible{background:color-mix(in srgb, var(--line) 60%, transparent)}.stat-label{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:flex}.stat-num{font-family:var(--pixel);font-variant-numeric:tabular-nums;font-size:26px;line-height:1.2}.stat .xp{width:100%;display:block}.stat .xp-fill{display:block}.km-bag .xp-fill{background:var(--ok);transition:width .4s linear}.km-bag.full .xp-fill{background:var(--gold);animation:1.2s steps(2,end) infinite blink}.new-pip{background:var(--gold);color:#2b2a27;border-radius:4px;padding:2px 5px;font-size:10px;font-weight:600;line-height:1;animation:1.6s ease-in-out infinite pip}@keyframes pip{50%{transform:scale(1.08)}}.layout{grid-template-columns:360px 1fr;grid-template-areas:"side list";align-items:start;gap:16px;display:grid}@media (width<=960px){.layout{grid-template-columns:300px 1fr}}.layout.map-layout{grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"list side"}.map-layout>.map-route{grid-area:list;position:sticky;top:12px}@media (width<=960px){.layout.map-layout{grid-template-columns:minmax(0,1fr) 300px}}@media (width<=700px){.layout.map-layout{grid-template-columns:1fr;grid-template-areas:"list""side"}.map-layout>.map-route{position:static}}.first-climb{width:100%;margin:0 0 10px;font-size:18px;display:block}.route-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.view-toggle{gap:4px;display:flex}.view-toggle .tab{border:2px solid var(--line);border-radius:8px;margin:0;padding:2px 10px;font-size:16px}.view-toggle .tab.active{background:var(--ink);color:var(--panel);border-color:var(--ink)}.selected-card{padding:4px 14px}.col-card h2{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:2px;display:flex}.col-card .profile{margin:8px 0}.col-stats{grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0 10px;display:grid}.col-stat{border:2px solid var(--line);border-radius:8px;padding:6px 8px}.col-stat .mono{font-size:18px}.col-stat.gold-target .mono{color:var(--gold)}.col-stat.ok .mono{color:var(--ok)}.card-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:10px;display:grid}.card-actions button{width:100%}.card-actions.single{grid-template-columns:1fr}.classic-go{background:var(--gold);color:#2b2a27}.selected-card .col{border-top:none}.region-map{border:2px solid var(--ink);width:100%;height:auto;image-rendering:pixelated;--rm-ground:color-mix(in srgb, var(--rm-land) 14%, var(--panel));--rm-tree:color-mix(in srgb, var(--rm-wood) 75%, var(--panel));--rm-water:color-mix(in srgb, var(--rm-lake) 45%, var(--panel));--rm-road:color-mix(in srgb, var(--rm-path) 85%, var(--ink));--rm-land:#7a9a6a;--rm-wood:var(--pine);--rm-lake:#5f8fa8;--rm-path:#6b4f35;border-color:color-mix(in srgb, var(--rm-wood) 60%, var(--ink));border-radius:4px;margin-top:8px;display:block}.region-map.rm-vosges{--rm-land:#5f8a5a;--rm-wood:#355a4a;--rm-lake:#56809a;--rm-path:#5e4631}.region-map.rm-jura{--rm-land:#a9b85a;--rm-wood:#4f7a3e;--rm-lake:#3f8fb5;--rm-path:#8a6a3a}.region-map.rm-massif-central{--rm-land:#b08a5a;--rm-wood:#6a5a3a;--rm-lake:#6f8f9a;--rm-path:#5a3a2a}.region-map.rm-pyrenees{--rm-land:#c9955a;--rm-wood:#5f6f3a;--rm-lake:#4f98a8;--rm-path:#8a4a2a}.region-map.rm-alpes{--rm-land:#9fb3c2;--rm-wood:#35584f;--rm-lake:#3f7fb0;--rm-path:#4a4f5a}.rm-ground{fill:var(--rm-ground)}.rm-tree rect{fill:var(--rm-tree)}.rm-water{fill:var(--rm-water)}.rm-road{fill:var(--rm-road)}.rm-road.unknown{fill:color-mix(in srgb, var(--rm-road) 35%, var(--rm-ground))}.rm-node{cursor:pointer;outline:none}.rm-hit{fill:#0000}.rm-node .rm-glyph rect{fill:var(--ink)}.rm-col.rm-gold .rm-glyph rect{fill:var(--gold)}.rm-col.rm-silver .rm-glyph rect{fill:var(--silver)}.rm-col.rm-bronze .rm-glyph rect{fill:var(--bronze)}.rm-open .rm-glyph{animation:.9s steps(2,end) infinite blink}.rm-mystery{font-family:var(--pixel);fill:color-mix(in srgb, var(--rm-road) 55%, var(--rm-ground));font-size:14px}.rm-selected .rm-hit,.rm-node:focus-visible .rm-hit{stroke:var(--ink);stroke-width:1.5px;stroke-dasharray:3 2}.rm-rider{fill:var(--accent)}.rm-label{font-family:var(--pixel);fill:var(--ink);paint-order:stroke;stroke:var(--rm-ground);stroke-width:3px;pointer-events:none;font-size:10px}.layout>.side{grid-area:side}.layout>.panel{grid-area:list}@media (width<=700px){.layout{grid-template-columns:1fr;grid-template-areas:"side""list"}.stats{gap:16px;margin:0}}.panel{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);padding:16px}.cols,.items{margin:0;padding:0;list-style:none}.col,.item{border-top:1px solid var(--line);align-items:center;gap:12px;padding:10px 0;display:flex}.col:first-child,.item:first-child{border-top:0}.col-main,.item>div{flex:1;min-width:0}.col-name{align-items:center;gap:6px;font-weight:600;display:flex}.col-meta{font-size:13px}.col.done button{background:var(--pine)}.col.locked{opacity:.55}.col.locked .col-name{font-family:var(--pixel);font-weight:400}.lock{background:var(--line);width:18px;height:18px;font-family:var(--pixel);border-radius:4px;place-items:center;font-size:15px;display:inline-grid}.col.next{background:color-mix(in srgb, var(--accent) 8%, transparent);margin:0 -16px;padding:10px 16px}.discovered{font-family:var(--pixel);color:var(--accent)}.modal{position:relative;overflow:hidden}.confetti{pointer-events:none;position:absolute;inset:0}.confetti span{border-radius:1px;width:7px;height:11px;animation:1.4s ease-in forwards confetti;position:absolute;top:-10px}@keyframes confetti{to{transform:translate(var(--drift), 420px) rotate(540deg);opacity:0}}.medal{border-radius:50%;flex:none;width:12px;height:12px;display:inline-block}.medal-bronze.medal{background:var(--bronze)}.medal-silver.medal{background:var(--silver)}.medal-gold.medal{background:var(--gold)}.climb{text-align:left}.altitude{font-family:var(--pixel);font-variant-numeric:tabular-nums;margin:4px 0 12px;font-size:54px;line-height:1}.bar{background:var(--line);border-radius:4px;height:18px;position:relative;overflow:hidden}.bar-fill{background:var(--pine);height:100%}.bar-pace{background:var(--accent);width:3px;position:absolute;top:0;bottom:0}.climb-row{grid-template-columns:1fr 1fr 1fr;margin:12px 0;display:grid}.profile{width:100%;height:64px;margin-bottom:8px;display:block;overflow:visible}.profile polygon{stroke:var(--panel);stroke-width:.5px}.profile polygon.done{opacity:.45}.profile .rider{fill:var(--ink);stroke:var(--panel);stroke-width:2px}.g-easy{fill:#6aa84f;color:#6aa84f}.g-mid{fill:#e0b83a;color:#c99a10}.g-hard{fill:#e07b39;color:#e07b39}.g-steep{fill:#c0392b;color:#d9483a}.g-wall{fill:#2b2a27;color:var(--ink)}@media (prefers-color-scheme:dark){.g-wall{fill:#0c0c0b}}.gradient-tag{font-weight:600}.warning{text-align:center;height:24px;font-family:var(--pixel);color:var(--accent);opacity:0;font-size:21px;transition:opacity .15s}.warning.show{opacity:1;animation:.6s steps(2,end) infinite blink}@keyframes blink{50%{opacity:.55}}.climb-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.lanes-wrap,.pedals-row{grid-template-columns:1fr 40px;gap:8px;display:grid}.lanes-wrap{margin-bottom:10px}.lanes-wrap .lanes{margin-bottom:0}.flow-col{background:color-mix(in srgb, var(--line) 45%, transparent);border-radius:8px;align-items:flex-end;display:flex;position:relative;overflow:hidden}.flow-gauge-fill{background:var(--ok);width:100%;transition:height .12s linear,background-color .3s}.flow-col{isolation:isolate;transition:box-shadow .3s}.flow-mark{border-top:2px dashed color-mix(in srgb, var(--ink) 55%, transparent);z-index:2;pointer-events:none;height:0;position:absolute;left:0;right:0}.flow-mark:after{content:"";border:5px solid #0000;border-right-color:var(--gold);position:absolute;top:-6px;right:0}.flow-col.zone .flow-mark{border-top-color:#ffffffb3}.flow-pulse{height:calc(var(--flow) * 100%);z-index:1;pointer-events:none;background:linear-gradient(#fff 15%,#0000);animation:.26s ease-out forwards flow-pulse;position:absolute;bottom:0;left:0;right:0}@keyframes flow-pulse{0%{opacity:calc(.15 + .75 * var(--flow) * var(--flow))}to{opacity:0}}.flow-col.zone{box-shadow:0 0 12px 2px var(--gold);animation:.9s ease-in-out infinite zone-glow}.flow-col.zone .flow-gauge-fill{background:var(--gold)}@keyframes zone-glow{50%{box-shadow:0 0 18px 5px var(--gold)}}.lanes-wrap{position:relative}.zone-banner{z-index:3;text-align:center;font-family:var(--pixel);pointer-events:none;font-size:28px;animation:1.1s ease-out forwards zone-in;position:absolute;inset:20% 48px auto 0}.zone-banner-in{color:var(--gold);text-shadow:0 2px 0 #00000080, 0 0 12px var(--gold)}@keyframes zone-in{0%{opacity:0;transform:scale(.6)}15%{opacity:1;transform:scale(1.2)}70%{opacity:1}to{opacity:0;transform:translateY(-16px)}}.flow-label{text-align:center;color:var(--ink);opacity:.7;font-size:11px;position:absolute;bottom:4px;left:0;right:0}.lanes-combo{z-index:2;pointer-events:none;font-size:15px;position:absolute;top:6px;left:50%;transform:translate(-50%)}.small-mono{text-align:right;font-size:19px}.lanes{grid-template-columns:1fr 1fr;gap:8px;height:200px;margin-bottom:10px;display:grid;position:relative}.lane{background:color-mix(in srgb, var(--line) 45%, transparent);border-radius:8px;position:relative;overflow:hidden}.note{background:var(--accent);width:44px;height:14px;opacity:var(--fade,1);transform:scale(var(--fade-scale,1));border-radius:4px;margin-left:-22px;position:absolute;left:50%;box-shadow:0 2px #0000004d}.lane.side-1 .note{background:var(--pine)}.lanes-4{grid-template-columns:repeat(4,1fr);gap:6px}.hitline{background:var(--ink);opacity:.6;pointer-events:none;height:3px;position:absolute;bottom:12px;left:0;right:0}.judgement{text-align:center;font-family:var(--pixel);font-size:22px;animation:.45s ease-out forwards pop;position:absolute;bottom:24px;left:0;right:0}.judgement-perfect{color:var(--gold)}.judgement-good{color:var(--ok)}.judgement-miss{color:var(--muted)}.judgement-timing{color:var(--muted);font-size:15px;line-height:1;display:block}@keyframes pop{0%{opacity:.4;transform:scale(1.3)}30%{opacity:1;transform:scale(1)}}.pattern-tag{color:var(--muted);font-family:var(--pixel)}.pattern-tag.section-fill,.pattern-tag.section-final{color:var(--accent);animation:.6s steps(2,end) infinite blink}.note-quick{width:36px;height:10px;margin-left:-18px}.note-danseuse{height:22px;box-shadow:0 0 0 2px var(--panel), 0 0 0 4px currentColor;color:var(--gold);border-radius:6px 6px 3px 3px}.note-chord{width:80%;height:18px;box-shadow:0 0 10px var(--gold);margin-left:0;left:10%;background:var(--gold)!important}.note-hold{width:36px;opacity:calc(.85 * var(--fade,1));border:3px solid var(--gold);box-sizing:border-box;transform-origin:bottom;border-radius:8px;margin-left:-18px}.note-hold.holding{opacity:1;box-shadow:0 0 12px var(--gold)}.pedal{isolation:isolate;position:relative;overflow:visible}.pedal-label{z-index:2;position:relative}.pedal.pressed{filter:brightness(1.15);transform:translateY(2px)}.pedal-fire{z-index:1;border-radius:inherit;pointer-events:none;position:absolute;inset:0;overflow:hidden}.pedal-fire:before{content:"";transform-origin:50% 100%;background:linear-gradient(to top, #fff6c8 0 15%, var(--gold) 15% 45%, #ff7a1a 45% 75%, #d8341f 75%);clip-path:polygon(0 100%,0 55%,8% 55%,8% 25%,16% 25%,16% 45%,25% 45%,25% 5%,33% 5%,33% 35%,42% 35%,42% 15%,50% 15%,50% 0,58% 0,58% 30%,67% 30%,67% 10%,75% 10%,75% 40%,84% 40%,84% 20%,92% 20%,92% 50%,100% 50%,100% 100%);height:45%;animation:.24s steps(3,end) infinite fire-flicker;position:absolute;bottom:0;left:0;right:0}.pedal:nth-child(2n) .pedal-fire:before{animation-delay:-120ms}.pedal.fire-1 .pedal-fire:before{opacity:.7;height:30%}.pedal.fire-2 .pedal-fire:before{height:60%}.pedal.fire-3 .pedal-fire:before{height:95%}.pedal.fire-2{box-shadow:0 0 10px 1px #ff7a1a8c}.pedal.fire-3{animation:.3s steps(2,end) infinite fire-glow;box-shadow:0 0 18px 4px #ff7a1ab3}@keyframes fire-flicker{0%{transform:scaleY(1)scaleX(1)}33%{transform:scaleY(1.15)scaleX(.97)}66%{transform:scaleY(.9)scaleX(1.02)}to{transform:scaleY(1.06)scaleX(.99)}}@keyframes fire-glow{50%{box-shadow:0 0 24px 6px color-mix(in srgb, var(--gold) 70%, transparent)}}.pedal-burst{z-index:3;pointer-events:none;border-radius:inherit;animation:.3s ease-out forwards pedal-flash;position:absolute;inset:0}.pedal-burst.burst-perfect{box-shadow:inset 0 0 0 3px var(--gold), 0 0 16px var(--gold)}.pedal-burst.burst-good{box-shadow:inset 0 0 0 3px var(--ok)}.pedal-burst i{background:var(--gold);width:6px;height:6px;box-shadow:0 0 6px var(--gold);margin-left:-3px;animation:.38s ease-out forwards spark;position:absolute;top:4px;left:50%}.pedal-burst.burst-good i{background:var(--ok);box-shadow:none}.pedal-burst.burst-good i:nth-child(n+6){display:none}@keyframes pedal-flash{0%{opacity:1}to{opacity:0}}@keyframes spark{0%{opacity:1;transform:translate(0)scale(1.2)}to{transform:translate(var(--dx), var(--dy)) scale(.4);opacity:0}}.lane .note{z-index:2}.lanes.zone .lane{background:linear-gradient(to top, color-mix(in srgb, var(--gold) 28%, transparent), color-mix(in srgb, var(--line) 45%, transparent) 70%);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--gold) 60%, transparent);animation:.9s ease-in-out infinite zone-pulse}.lanes.zone .hitline{background:var(--gold);opacity:1;box-shadow:0 0 8px var(--gold)}.lanes.zone .note{box-shadow:0 0 10px var(--gold), 0 2px 0 #0000004d}@keyframes zone-pulse{50%{filter:brightness(1.12)}}@media (prefers-reduced-motion:reduce){.pedal-fire:before,.pedal.fire-3,.lanes.zone .lane,.flow-col.zone,.flow-pulse{animation:none}.flow-pulse,.pedal-burst i{display:none}}.lane-flash{pointer-events:none;height:60px;animation:.26s ease-out forwards flash;position:absolute;bottom:0;left:0;right:0}.flash-perfect{background:linear-gradient(to top, color-mix(in srgb, var(--gold) 70%, transparent), transparent)}.flash-good{background:linear-gradient(to top, color-mix(in srgb, var(--ok) 45%, transparent), transparent)}@keyframes flash{0%{opacity:1}to{opacity:0}}.shake{animation:.22s linear shake}@keyframes shake{20%{transform:translate(-5px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.combo{animation:.16s ease-out combo-pop;display:inline-block}@keyframes combo-pop{0%{transform:scale(1.35)}to{transform:scale(1)}}.combo-tier-1{color:var(--ok)}.combo-tier-2{color:var(--gold)}.combo-tier-3{color:var(--accent);text-shadow:0 0 8px var(--gold)}.climb{transition:box-shadow .3s,border-color .3s}.climb.tier-2{border-color:var(--gold)}.climb.tier-3{border-color:var(--gold);box-shadow:0 0 22px color-mix(in srgb, var(--gold) 55%, transparent)}.milestone{z-index:3;text-align:center;font-family:var(--pixel);color:var(--gold);text-shadow:0 2px #00000080;pointer-events:none;font-size:38px;animation:.9s ease-out forwards milestone;position:absolute;inset:35% 0 auto}@keyframes milestone{0%{opacity:0;transform:scale(.6)}20%{opacity:1;transform:scale(1.15)}70%{opacity:1}to{opacity:0;transform:translateY(-20px)}}.pedals{grid-template-columns:1fr 1fr;gap:8px;display:grid}.pedals-4{grid-template-columns:repeat(4,1fr);gap:6px}.pedal{-webkit-user-select:none;user-select:none;padding:20px 8px;font-size:28px}.pedal.side-1{background:var(--pine)}.overlay{z-index:10;background:#00000073;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border-radius:var(--radius);border:3px solid var(--line);width:min(420px,100%);padding:20px}.modal.success{border-color:var(--pine)}.modal.failed{border-color:var(--accent)}.modal-col{margin-top:4px;font-weight:600}.modal .bar{margin:12px 0 4px}.reward{font-family:var(--pixel);color:var(--pine);font-size:22px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.savebar{justify-items:center;gap:8px;margin-top:24px;font-size:13px;display:grid}.savebar-links{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.savebar .feedback-link{color:var(--accent);padding:4px 6px;font-size:14px;font-weight:600}.savebar-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;max-width:100%;padding:10px 12px;display:flex}.savebar-panel label{text-align:center;width:100%}.savebar-panel textarea{background:var(--bg);width:min(420px,100%);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:6px;font:12px/1.3 ui-monospace,monospace}.savebar-panel button{padding:4px 12px;font-size:17px}.savebar-message{color:var(--ok);margin:0}.tabs{border-bottom:2px solid var(--line);gap:6px;margin-bottom:16px;display:flex}.tab{color:var(--muted);box-shadow:none;background:0 0;border-radius:8px 8px 0 0;padding:8px 16px;font-size:21px}.tab.active{background:var(--panel);color:var(--ink);border:2px solid var(--line);border-bottom-color:var(--panel);margin-bottom:-2px}.side{gap:16px;display:grid}.xp{background:var(--line);border-radius:2px;height:4px;margin-top:2px;overflow:hidden}.xp-fill{background:var(--gold);height:100%}h3{font-family:var(--pixel);margin:12px 0 6px;font-size:21px;font-weight:400}.spots{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.spot{text-align:left;background:var(--line);width:100%;color:var(--ink);box-shadow:none;flex-direction:column;align-items:flex-start;gap:2px;font-family:inherit;display:flex}.spot.active{background:var(--pine);color:#fff;box-shadow:0 3px #00000040}.spot .small{opacity:.85}div.spot{border-radius:8px;gap:6px;padding:0 0 10px}.spot-main{text-align:left;width:100%;color:inherit;box-shadow:none;background:0 0;flex-direction:column;align-items:flex-start;gap:2px;font-family:inherit;display:flex}div.spot select{width:calc(100% - 28px);font:inherit;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:6px;margin:0 14px;padding:4px 6px;font-size:14px}.item-actions{flex:none;gap:6px;display:flex}.armed{background:var(--gold);color:#2b2a27}.reco-pick{margin-top:4px;display:block}.reco-pick select{font:inherit;background:var(--panel);max-width:170px;color:var(--ink);border:1px solid var(--line);border-radius:6px}.col.classic{background:color-mix(in srgb, var(--gold) 12%, transparent);border-top:2px dashed var(--gold);border-bottom:2px dashed var(--gold);margin:0 -16px;padding:12px 16px}.col.classic-locked{opacity:.6}.col.classic-won{background:color-mix(in srgb, var(--pine) 10%, transparent);border-color:var(--pine)}.col.classic button{background:var(--gold);color:#2b2a27}.classic-tag{font-family:var(--pixel);background:var(--gold);color:#2b2a27;border-radius:4px;padding:1px 6px;font-size:15px}.classic-line{margin:0 0 4px;font-size:14px}.rival-name{color:var(--accent);font-weight:600}.rival-quote{color:var(--ink);border-left:3px solid var(--accent);margin:6px 0;padding-left:10px;font-style:italic}.rival-line{align-items:center;gap:10px;display:flex}.rival-portrait{flex:none;width:64px;height:64px}.pixel-art{image-rendering:pixelated}.village-art{aspect-ratio:16/9;object-fit:cover;border-radius:8px;width:100%;margin:8px 0 4px;display:block}.portrait.portrait-art{background:0 0;border-radius:0;width:96px;height:96px}.story-modal{border-color:var(--gold);text-align:center}.story-modal h2{font-family:var(--pixel);margin-top:0;font-size:34px}.mods{gap:6px;margin:0 0 4px;display:flex}.mods span{font-size:15px;font-family:var(--pixel);background:var(--gold);color:#2b2a27;border-radius:4px;padding:1px 6px}.profile .flag{fill:var(--accent);stroke:var(--ink);stroke-width:.8px}.profile .rival{fill:var(--accent);stroke:var(--panel);stroke-width:2px}.unlock{background:color-mix(in srgb, var(--gold) 18%, transparent);border-radius:6px;padding:6px 8px;font-size:14px}.carnet{gap:16px;display:grid}.carnet-progress{align-items:center;gap:12px;display:flex}.carnet-progress .bar{flex:1}.carnet-extras{grid-template-columns:1fr 1fr;gap:16px;display:grid}@media (width<=600px){.carnet-extras{grid-template-columns:1fr}}.badges,.milestones{gap:6px;margin:0;padding:0;list-style:none;display:grid}.badge{align-items:center;gap:8px;display:flex}.badge-icon{background:var(--line);width:26px;height:26px;font-family:var(--pixel);border-radius:50%;place-items:center;display:grid}.badge.won .badge-icon{background:var(--gold);color:#2b2a27;box-shadow:0 0 8px var(--gold)}.milestones .reached{color:var(--ok);font-weight:600}.cards{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.card{background:var(--panel);border:2px solid var(--line);border-radius:var(--radius);gap:4px;padding:12px;display:grid;position:relative}.card.medal-gold{border-color:var(--gold)}.card.medal-silver{border-color:var(--silver)}.card.medal-bronze{border-color:var(--bronze)}.card-num{font-family:var(--pixel);color:var(--muted);font-size:15px;position:absolute;top:6px;left:10px}.card-medal{position:absolute;top:8px;right:10px}.card .profile{margin:14px 0 4px}.card-name{font-weight:600}.card.unknown{opacity:.55;align-content:center;justify-items:center;min-height:150px}.card-silhouette{background:var(--line);clip-path:polygon(0 100%,30% 55%,45% 70%,70% 15%,100% 100%);width:70%;height:44px}.card.unknown .card-name{font-family:var(--pixel);color:var(--muted);font-weight:400}.map-panel{max-width:620px;margin:0 auto}.map{width:100%;height:auto;image-rendering:pixelated;border-radius:8px;display:block}.map .sea{fill:#7fb3d5}.map .wave{fill:#b8d8ea}.map .land{fill:#a8c686}.map .land2{fill:#9bbb79}.map .coast{fill:#d8c79a}.map .border{fill:#8fae70}.map .foreign{fill:#c9c7b4}.map .foreign2{fill:#bfbda9}.map .road{fill:#8a7f6a}.map .road.done{fill:var(--accent)}.map .rock{fill:#7d7468}.map .peak{fill:#f2f2f2}.map .node-locked .rock{fill:#9a9a92}.map .node-locked .peak{fill:#c9c9c2}.map .node-current .rock{fill:#4a6b5d}.map .flag-px{fill:var(--gold);stroke:#2b2a27;stroke-width:1px}.map .star-px{fill:var(--gold);stroke:#2b2a27;stroke-width:.8px;paint-order:stroke;font-size:14px}.golden-star,.gold-target{color:var(--gold);font-weight:600}.carnet-region{gap:4px;margin:18px 0 8px;display:grid}.carnet-region h3,.carnet-region p{margin:0}.carnet-region.golden p{color:var(--gold);font-weight:600}.region-gold{align-items:center;gap:10px;display:flex}.region-gold .bar{flex:1;max-width:320px}.bar-fill.gold{background:var(--gold)}.map .rider-px{fill:var(--accent);animation:.7s steps(2,end) infinite bob}@keyframes bob{50%{transform:translateY(-2px)}}.map .node-label{font-family:var(--pixel);fill:#2b2a27;paint-order:stroke;stroke:#f4ecd8;stroke-width:3px;font-size:14px}.map .node-locked .node-label{fill:#6d6d66}.regions{gap:4px;margin:12px 0 0;padding:0;list-style:none;display:grid}.region{border-radius:6px;justify-content:space-between;padding:6px 8px;display:flex}.region-current{background:color-mix(in srgb, var(--pine) 18%, transparent);font-weight:600}.region-locked,.region-next{color:var(--muted)}.region{align-items:center;gap:8px}.region>span:first-child{flex:1}.region .link{padding:0 2px}.map .node-open{cursor:pointer}.map .node-open:hover .rock,.map .node-open:focus-visible .rock{filter:brightness(1.25)}.map .node-open:focus-visible{outline:none}.map .node-open:focus-visible .node-label{text-decoration:underline}.header-actions{align-items:center;gap:8px;display:flex}.header-actions .secondary{padding:6px 12px}.tip{border-radius:var(--radius);background:color-mix(in srgb, var(--gold) 16%, var(--panel));border:2px solid var(--gold);gap:12px;margin-bottom:16px;padding:14px;animation:.3s ease-out tip-in;display:flex}@keyframes tip-in{0%{opacity:0;transform:translateY(-6px)}}.tip-icon{background:var(--gold);color:#2b2a27;width:28px;height:28px;font-family:var(--pixel);border-radius:6px;flex:none;place-items:center;font-size:22px;display:grid}.tip-body strong{font-family:var(--pixel);font-size:20px;font-weight:400}.tip-body p{margin:4px 0 10px;font-size:14px}.tip-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.guide{width:min(620px,100%);max-height:85vh;overflow-y:auto}.guide dl{gap:12px;margin:0;display:grid}.guide dt{font-family:var(--pixel);color:var(--pine);font-weight:400}.guide dd{margin:2px 0 0;font-size:14px}.rate{color:var(--ok);font-variant-numeric:tabular-nums;font-size:11px}.goal{border-color:var(--accent)}.goal.ready{border-color:var(--ok);box-shadow:0 0 0 3px color-mix(in srgb, var(--ok) 25%, transparent)}.goal h2{margin-bottom:6px}.goal-name{font-family:var(--pixel);align-items:center;gap:8px;font-size:25px;display:flex}.goal p{margin:6px 0}.goal-bar{background:var(--line);border-radius:6px;height:22px;margin:8px 0;position:relative;overflow:hidden}.goal-fill{background:linear-gradient(90deg, var(--pine), var(--ok));height:100%;transition:width .3s linear}.goal.ready .goal-fill{background:var(--ok)}.goal-bar-label{color:var(--ink);text-shadow:0 1px 0 var(--panel);place-items:center;font-size:14px;display:grid;position:absolute;inset:0}.goal-actions{flex-wrap:wrap;gap:8px;display:flex}.mastery{align-items:center;gap:8px;margin-top:4px;display:flex}.mastery .mono{font-size:13px}.mastery.done{color:var(--ok)}.mastery-bar{background:var(--line);border-radius:4px;flex:1;max-width:160px;height:8px;overflow:hidden}.mastery-fill{background:var(--pine);height:100%;transition:width .3s linear}.goal-ready{font-family:var(--pixel);color:var(--ok);font-size:22px;animation:.9s steps(2,end) infinite blink}.power{margin-top:14px}.power-bar{border-radius:5px;height:10px;margin:4px 0;display:flex;overflow:hidden}.power-legend{color:var(--muted);flex-wrap:wrap;gap:4px 12px;display:flex}.power-legend i{vertical-align:-1px;border-radius:2px;width:9px;height:9px;display:inline-block}.power-base{background:var(--silver)}.power-cols{background:var(--pine)}.power-forme{background:var(--gold)}.power-bonus{background:var(--accent)}.scene{margin-bottom:10px;position:relative}.scene .profile{margin-bottom:2px}.road-scene{width:100%;height:52px;display:block}.road-scene .hills{fill:color-mix(in srgb, var(--pine) 35%, transparent)}.road-scene .road-line{fill:var(--muted)}.road-scene .road-dash{fill:var(--panel)}.road-scene .rider{fill:var(--ink);stroke:var(--panel);stroke-width:2px}.scene-caption{text-align:center}.float-gain{text-align:center;font-family:var(--pixel);color:var(--gold);text-shadow:0 1px #0006;pointer-events:none;font-size:20px;animation:1.4s ease-out forwards float-up;position:absolute;top:0;left:0;right:0}@keyframes float-up{0%{opacity:0;transform:translateY(18px)}15%{opacity:1}to{opacity:0;transform:translateY(-14px)}}.forme{margin-bottom:10px}.forme-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.forme-bar{background:var(--line);border-radius:6px;height:12px;margin:4px 0 2px;overflow:hidden}.forme-fill{background:var(--gold);height:100%;transition:width .2s linear}.levelup{z-index:20;background:var(--gold);color:#2b2a27;font-family:var(--pixel);border-radius:10px;padding:10px 18px;font-size:28px;animation:2.6s ease-out forwards levelup;position:fixed;top:16px;left:50%;transform:translate(-50%);box-shadow:0 4px #0000004d}@keyframes levelup{0%{opacity:0;transform:translate(-50%,-30px)}10%{opacity:1;transform:translate(-50%)}85%{opacity:1}to{opacity:0}}.gap{font-family:var(--pixel);margin:2px 0 4px;font-size:22px}.gap.ahead{color:var(--ok)}.gap.behind{color:var(--accent)}.summit-split{font-family:var(--pixel);text-align:center;background:var(--gold);color:#2b2a27;border-radius:6px;margin:4px 0;padding:4px 8px;font-size:20px;animation:.3s ease-out tip-in}.g-descent{color:#5b8fb9}.profile .descent-piece{fill:#8fb3cf}.lane.held{box-shadow:inset 0 -40px 30px -20px color-mix(in srgb, var(--gold) 55%, transparent)}.item-gain{color:var(--ok)}.jump-current{margin:-6px 0 8px;padding:0}.col.done button.train-here,.train-here{box-shadow:none;color:var(--muted);background:0 0;margin-top:2px;padding:2px 0;font-size:13px;display:block}.col.done button.train-here[aria-pressed=true]{color:var(--ok);font-weight:600;text-decoration:none}.atelier{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.atelier-side{gap:16px;display:grid}.atelier .souvenirs{grid-column:1/-1}.bike{width:100%;max-width:440px;margin:4px auto 8px;display:block}.bike-part{cursor:pointer;outline:none}.bike-part .tube,.bike-part .crank{fill:none;stroke:#6d6d66;stroke-width:5px;stroke-linecap:round;stroke-linejoin:round}.bike-part .bar{stroke-width:4px}.bike-part .tyre{fill:none;stroke:#2b2a27;stroke-width:6px}.bike-part .rim{fill:none;stroke:#9a9a92;stroke-width:2px}.bike-part .spoke{stroke:#9a9a92;stroke-width:1px}.bike-part .hub,.bike-part .saddle{fill:#2b2a27}.bike-part .ring{fill:none;stroke:#6d6d66;stroke-width:3px}.bike-part .chain{stroke:#6d6d66;stroke-width:2px;stroke-dasharray:3 2}.bike-part .pedal,.bike-part .caliper{fill:#9a9a92;stroke:#2b2a27;stroke-width:1.5px}.bike-part .cable{stroke:#2b2a27;stroke-width:1.5px}.bike-part.upgraded .tube,.bike-part.upgraded .crank,.bike-part.upgraded .ring,.bike-part.upgraded .chain,.bike-part.upgraded .rim,.bike-part.upgraded .spoke{stroke:var(--pine)}.bike-part.upgraded .pedal,.bike-part.upgraded .caliper{fill:var(--pine)}.bike-part:hover .tube,.bike-part:hover .crank,.bike-part:hover .ring,.bike-part:hover .chain,.bike-part:hover .rim,.bike-part:hover .tyre,.bike-part.selected .tube,.bike-part.selected .crank,.bike-part.selected .ring,.bike-part.selected .chain,.bike-part.selected .rim,.bike-part.selected .tyre{stroke:var(--accent)}.bike-part:hover .pedal,.bike-part:hover .caliper,.bike-part.selected .pedal,.bike-part.selected .caliper{fill:var(--accent)}.bike-part:focus-visible .tube,.bike-part:focus-visible .tyre{stroke-dasharray:4 2}.part-tabs{flex-wrap:wrap;gap:6px;margin:0 0 10px;display:flex}.part-tabs .tab{border:2px solid var(--line);border-radius:8px;margin:0;padding:4px 12px;font-size:18px;position:relative}.part-tabs .tab.active{background:var(--pine);color:#fff;border-color:var(--pine)}.deal-dot{background:var(--accent);vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-left:6px;display:inline-block}.item-detail{border-top:1px solid var(--line);align-items:center;gap:12px;padding-top:10px;display:flex}.item-detail>div{flex:1;min-width:0}.item-tier{flex-wrap:wrap;align-items:center;gap:6px;font-weight:600;display:flex}.item-tier .medal{width:14px;height:14px;display:inline-block}.tier-track{gap:4px;margin-top:8px;display:flex}.tier-track span{background:var(--line);border-radius:3px;flex:1;max-width:36px;height:8px}.tier-track .done{background:var(--pine)}.tier-track .current.stage-bronze{background:var(--bronze)}.tier-track .current.stage-silver{background:var(--silver)}.tier-track .current.stage-gold{background:var(--gold)}.souvenir-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.souvenir-card{border:2px solid var(--line);border-radius:8px;gap:2px;padding:8px 10px;display:grid}.souvenir-card.owned{border-color:var(--gold)}.souvenir-card.for-sale{border-style:dashed}.souvenir-card.unknown{color:var(--muted);font-family:var(--pixel);font-size:22px}@media (width<=800px){.atelier{grid-template-columns:1fr}}.power-atelier{background:#5b8fb9}.col.village{background:color-mix(in srgb, var(--pine) 8%, transparent);border-top:2px dotted var(--pine);border-bottom:2px dotted var(--pine);margin:0 -16px;padding:12px 16px}.col.village-locked{opacity:.55}.col.village-reached{background:color-mix(in srgb, var(--pine) 16%, transparent)}.village-tag{font-family:var(--pixel);background:var(--pine);color:#fff;border-radius:4px;padding:1px 6px;font-size:15px}p.village-tag{margin:0;display:inline-block}.village-modal{border-color:var(--pine);width:min(520px,100%);max-height:calc(100dvh - 32px);overflow-y:auto}.village-modal h3,.village-card h3{font-family:var(--pixel);margin:0 0 6px;font-size:20px;font-weight:400}.village-card{border-color:var(--pine)}.opponents{gap:4px;margin:4px 0 12px;padding:0;list-style:none;display:grid}.opponents li{align-items:center;gap:8px;display:flex}.opponents li .mono{color:var(--muted);margin-left:auto}.opponents li.beaten{color:var(--muted)}.opponents .medal{width:12px;height:12px;display:inline-block}.challenge-go{width:100%}.village-card .modal-actions{margin-top:12px}.scene{align-items:flex-start;gap:12px;margin:12px 0;display:flex}.portrait{background:var(--pine);color:#fff;width:56px;height:56px;font-family:var(--pixel);border-radius:8px;flex:none;place-items:center;font-size:34px;display:grid}.scene blockquote{margin:0}.scene blockquote p{margin:0 0 4px;font-style:italic}.village-part{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.souvenir{justify-content:space-between;align-items:center;gap:12px;display:flex}.souvenir p{margin:2px 0 0}.souvenir button{flex:none}.sprint-overlay{background:#0009}.climb-overlay{overscroll-behavior:contain;background:#0009}.climb-window{overscroll-behavior:contain;-webkit-user-select:none;user-select:none;width:min(520px,100%);max-height:calc(100dvh - 32px);overflow-y:auto}body:has(.climb-overlay){overflow:hidden}.embedded #root:has(.climb-overlay){overflow:hidden}.modal.sprint{border-color:var(--pine);text-align:center;-webkit-user-select:none;user-select:none;width:min(460px,100%)}.modal.sprint.failed{border-color:var(--accent)}.sprint-big{font-family:var(--pixel);justify-content:center;align-items:center;gap:12px;margin:8px 0;font-size:72px;line-height:1;display:flex}.sprint-big .medal{width:36px;height:36px}.sprint-countdown{padding:12px 0}.sprint-countdown .sprint-big{color:var(--accent);font-size:110px;animation:1s ease-out infinite pop}.sprint-row{grid-template-columns:1.2fr 1fr 1fr;align-items:end;gap:8px;display:grid}.sprint-rpm{font-size:24px}.sprint-gauge{background:var(--line);border-radius:6px;height:26px;margin:16px 0 6px;position:relative}.sprint-fill{background:linear-gradient(90deg, var(--pine), var(--ok));border-radius:6px;height:100%;transition:width 80ms linear}.sprint-mark{background:var(--ink);opacity:.35;width:3px;margin-left:-1.5px;position:absolute;top:-6px;bottom:-6px}.sprint-mark.reached{opacity:1}.sprint-mark .medal{width:16px;height:16px;position:absolute;top:-16px;left:-7px}.sprint-pads{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}.sprint-pads .pad{background:var(--pine);touch-action:none;padding:22px 0;font-size:44px}.sprint-pads .pad.pressed{filter:brightness(1.15);transform:translateY(2px);box-shadow:0 1px #00000040}.stats-panel{width:min(640px,100%);max-height:88vh;overflow-y:auto}.stats-panel h2{margin:0 0 2px}.stat-cards{gap:10px;margin-top:12px;display:grid}.stat-card{border:2px solid var(--line);border-radius:var(--radius);background:var(--bg);padding:12px 14px}.stat-card.focus{border-color:var(--pine);animation:.9s ease-out stat-focus}@keyframes stat-focus{0%{box-shadow:0 0 0 6px color-mix(in srgb, var(--pine) 40%, transparent)}}.stat-card.locked{opacity:.7;border-style:dashed}.stat-card header{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.stat-card h3{font-family:var(--pixel);color:var(--pine);align-items:center;gap:8px;margin:0;font-size:24px;font-weight:400;display:flex}.stat-value{font-family:var(--pixel);font-variant-numeric:tabular-nums;font-size:24px}.stat-card dl{grid-template-columns:max-content 1fr;gap:4px 12px;margin:8px 0 0;font-size:14px;display:grid}.stat-card dt{color:var(--muted);padding-top:2px;font-size:12px}.stat-card dd{margin:0}.stat-live{color:var(--ok);margin:8px 0 0;font-size:13px}.stat-card .power{margin-top:10px}.stat-xp{height:6px;margin-top:4px}@media (width<=560px){.stat-card dl{grid-template-columns:1fr}.stat-card dt{padding-top:4px}}.intro{width:min(460px,100%)}.intro h2{margin:2px 0 8px}.intro p{margin:0 0 10px}.intro-step{margin:0}.intro-hint{color:var(--pine);font-size:14px;font-weight:600}.intro-visual{background:color-mix(in srgb, var(--pine) 12%, var(--bg));border-radius:8px;place-items:center;height:110px;margin:-4px 0 8px;display:grid;overflow:hidden}.intro-svg{width:100%;height:100%}.intro-far{fill:color-mix(in srgb, var(--pine) 35%, var(--bg))}.intro-near{fill:var(--pine)}.intro-pole{stroke:var(--ink);stroke-width:2px}.intro-flag{fill:var(--accent)}.intro-gain{font-family:var(--pixel);fill:var(--gold);font-size:18px;animation:2.2s ease-out infinite intro-float}@keyframes intro-float{0%{opacity:0;transform:translateY(10px)}30%{opacity:1}to{opacity:0;transform:translateY(-12px)}}.intro-rhythm{align-items:center;gap:18px;display:flex}.intro-lanes{gap:8px;height:96px;display:flex;position:relative}.intro-lane{background:color-mix(in srgb, var(--ink) 8%, transparent);border-radius:6px;width:44px;height:100%;position:relative;overflow:hidden}.intro-note{background:var(--gold);border-radius:4px;width:30px;height:12px;animation:1.2s linear infinite intro-fall;position:absolute;top:-14px;left:7px}@keyframes intro-fall{0%{opacity:1;top:-14px}55%{opacity:1;top:64px}62%{opacity:0;top:64px;transform:scale(1.4)}to{opacity:0;top:64px}}.intro-key{text-align:center;font-family:var(--pixel);color:var(--muted);font-size:18px;position:absolute;bottom:2px;left:0;right:0}.intro-hit{background:var(--ink);opacity:.6;height:2px;position:absolute;top:70px;left:-4px;right:-4px}.intro-flow{background:color-mix(in srgb, var(--ink) 10%, transparent);border-radius:7px;align-items:flex-end;width:14px;height:96px;display:flex;overflow:hidden}.intro-flow-fill{background:var(--ok);width:100%;animation:4.8s ease-in-out infinite intro-flow}@keyframes intro-flow{0%{height:10%}80%{height:100%}to{height:100%}}@media (prefers-reduced-motion:reduce){.intro-note,.intro-flow-fill,.intro-gain,.new-pip{animation:none}}.clm-layout{text-align:left;grid-template-columns:84px 1fr;align-items:start;gap:16px;margin-top:8px;display:grid}.clm-gauge{width:84px;height:auto}.clm-gauge-bg{fill:color-mix(in srgb, var(--ink) 9%, var(--bg));stroke:var(--line);stroke-width:2px}.clm-bar{fill:color-mix(in srgb, var(--ok) 35%, transparent);stroke:var(--ok);stroke-width:2px}.clm-gauge.in .clm-bar{fill:color-mix(in srgb, var(--ok) 60%, transparent)}.clm-target{fill:var(--gold);stroke:var(--panel);stroke-width:2px}.clm-gauge.in .clm-target{fill:var(--ok)}.clm-target-icon{font-size:13px}.clm-km{justify-content:flex-start;margin:2px 0 8px;font-size:52px}.clm-unit{color:var(--muted);margin-left:4px;font-size:22px}.clm-stats{grid-template-columns:1fr 1fr;gap:8px;display:grid}.clm-status{font-family:var(--pixel);color:var(--danger);margin:10px 0 6px;font-size:22px}.clm-status.in{color:var(--ok)}.clm-splits{gap:3px;margin:0;padding:0;list-style:none;display:grid}.pads-1{grid-template-columns:1fr}.sprint-pads .pad-action{background:var(--bronze);flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.pad-caption{font-size:13px;font-family:var(--pixel)}.race{text-align:left;gap:6px;margin:14px 0 4px;display:grid}.race-lane{grid-template-columns:96px 1fr;align-items:center;gap:8px;font-size:13px;display:grid}.race-name{text-overflow:ellipsis;white-space:nowrap;color:var(--muted);overflow:hidden}.lane-you .race-name{color:var(--ink);font-weight:600}.race-track{background:var(--line);border-right:4px double var(--ink);border-radius:4px;height:20px;position:relative}.race-rider{color:var(--accent);font-size:18px;line-height:1;position:absolute;top:50%;transform:translate(-50%,-50%)}.race-rider .medal{width:14px;height:14px;display:block}.rank-1{color:var(--gold)}.leaderboard{text-align:left;gap:4px;max-width:320px;margin:12px auto;padding:0;list-style:none;display:grid}.leaderboard li{border-radius:6px;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:4px 8px;display:grid}.leaderboard li.you{background:color-mix(in srgb, var(--accent) 22%, transparent);font-weight:600}.leaderboard .medal{vertical-align:-1px;width:12px;height:12px;display:inline-block}.lb-rank{font-family:var(--pixel);font-size:20px}.lb-score{font-variant-numeric:tabular-nums}.cx-scene{background:linear-gradient(180deg, color-mix(in srgb, #5b8fb9 26%, var(--bg)), color-mix(in srgb, #5b8fb9 8%, var(--bg)));border-radius:8px;width:100%;height:auto;margin:12px 0 6px;display:block}.cx-hills-far{fill:color-mix(in srgb, var(--pine) 28%, var(--bg))}.cx-hills{fill:color-mix(in srgb, var(--pine) 50%, var(--bg))}.cx-ground{fill:#6b5236}.cx-ground-line{stroke:#3b2f22;stroke-width:2px}.cx-ground-mark{stroke:#8a6a45;stroke-width:2px;stroke-linecap:round}.cx-plank{fill:#f4f1ea;stroke:var(--bronze);stroke-width:1px}.cx-plank-foot{stroke:#3b2f22;stroke-width:2px}.cx-hay{fill:#e3c26a;stroke:#a9862f;stroke-width:1.2px}.cx-hay-straw{stroke:#c9a445;stroke-width:1px}.cx-hay-twine{stroke:#8a5a2b;stroke-width:1.5px}.cx-tree{fill:#6b4a2b}.cx-branch{fill:none;stroke:#6b4a2b;stroke-width:5px;stroke-linecap:round}.cx-leaves{fill:#4f7a45}.cx-post{stroke:#f4f1ea;stroke-width:2px}.cx-shadow{fill:#222;opacity:.25}.cx-bike{fill:none;stroke:var(--ink);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round}.cx-body{stroke:var(--accent);stroke-width:4px;stroke-linecap:round}.cx-arm{stroke:var(--accent);stroke-width:2px;stroke-linecap:round}.cx-leg{stroke:var(--ink);stroke-width:2.4px;stroke-linecap:round}.cx-leg.back{stroke-opacity:.55}.cx-head{fill:#f0c9a0;stroke:var(--ink);stroke-width:1px}.cx-ghost{opacity:.45}.ghost-bronze .cx-body,.ghost-bronze .cx-arm{stroke:var(--bronze)}.ghost-silver .cx-body,.ghost-silver .cx-arm{stroke:var(--silver)}.ghost-gold .cx-body,.ghost-gold .cx-arm{stroke:var(--gold)}.cx-ghost-name{fill:var(--ink);font-size:9px}.cx-finish-light{fill:#f4f1ea}.cx-finish-dark{fill:#222}.cx-finish-label{font-family:var(--pixel);fill:#f4f1ea;paint-order:stroke;stroke:#222;stroke-width:3px;font-size:14px}.cx-flash{font-family:var(--pixel);paint-order:stroke;stroke:#222;stroke-width:3px;font-size:24px}.flash-chute{fill:var(--danger)}.cx-streak{font-family:var(--pixel);fill:var(--ink);font-size:14px}.cx-lap{background:var(--line);border-radius:3px;height:6px;position:relative}.cx-lap-fill{background:var(--pine);border-radius:3px;height:100%}.cx-lap-ghost{border-radius:50%;width:10px;height:10px;margin-left:-5px;position:absolute;top:-2px}.cx-instruction{min-height:1.5em;margin:8px 0 0}.cx-instruction.warn{color:var(--accent);font-weight:600}.surface-sec{color:var(--ok)}.surface-boue,.surface-sable{color:var(--danger)}.region-tabs{gap:6px;margin:-4px 0 12px;display:flex}.region-tabs .tab{border:2px solid var(--line);border-radius:8px;margin:0;padding:4px 12px;font-size:18px}.region-tabs .tab.active{background:var(--pine);color:#fff;border-color:var(--pine)}.carnet-region{font-family:var(--pixel);color:var(--pine);margin:18px 0 8px;font-size:24px;font-weight:400}.ready-notice{border:1px dashed var(--accent);color:var(--ink);border-radius:8px;margin:6px 0;padding:6px 10px}.summit-medal{font-family:var(--pixel);justify-content:center;align-items:center;gap:12px;margin:14px 0 6px;font-size:30px;display:flex}.summit-medal .medal{width:44px;height:44px;box-shadow:inset 0 -4px 0 #0000002e, 0 0 0 4px color-mix(in srgb, currentColor 0%, var(--panel))}.summit-medal.medal-gold{color:var(--gold)}.summit-medal.medal-silver{color:var(--silver)}.summit-medal.medal-bronze{color:var(--bronze)}.modal .col-stats{margin:10px 0}.new-best{color:var(--ok);font-family:var(--pixel);font-size:16px}.summit-medal span:last-child{display:inline-block}.summit-medal span:last-child:first-letter{text-transform:uppercase}.souvenir-locked{color:var(--muted);text-align:right;max-width:16em}.power-advice{gap:4px;margin:8px 0;display:grid}.pa-row{flex-wrap:wrap;justify-content:space-between;gap:8px;display:flex}.pa-bar{background:var(--line);border-radius:4px;height:8px;overflow:hidden}.pa-fill{border-radius:4px;height:100%}.pa-ready .pa-fill{background:var(--ok)}.pa-close .pa-fill{background:var(--gold)}.pa-far .pa-fill{background:var(--danger)}.pa-ready .pa-verdict{color:var(--ok)}.pa-close .pa-verdict{color:var(--gold)}.pa-far .pa-verdict{color:var(--danger)}.stage{gap:8px;margin:10px 0;display:grid}.stage p{margin:0}.stage-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.stage-bar{background:var(--line);border-radius:5px;height:10px;overflow:hidden}.stage-fill{background:var(--pine);height:100%;transition:width .4s linear}.stage-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.stage-option{text-align:left;gap:2px;padding:8px 10px;display:grid}.stage-option .small{opacity:.8;font-family:Inter,system-ui,sans-serif;font-size:12px}.stage-done{background:color-mix(in srgb, var(--gold) 22%, transparent);border-radius:8px;padding:10px}.descent-view{background:color-mix(in srgb, var(--line) 45%, transparent);border-radius:8px;align-content:center;gap:14px;min-height:200px;margin-bottom:10px;padding:12px;display:grid}.bend-sign{font-family:var(--pixel);align-items:center;gap:10px;font-size:24px;display:flex}.bend-sign .bend-count{white-space:nowrap;margin-left:auto;font-family:Inter,system-ui,sans-serif;font-size:12px}.bend-sign{flex-wrap:wrap;line-height:1.1}.bend-arrow{background:var(--gold);width:40px;height:40px;color:var(--ink);border-radius:6px;place-items:center;font-size:26px;display:inline-grid}.bend-epingle .bend-arrow{background:var(--danger);color:#fff}.bend-courbe .bend-arrow{background:var(--ok);color:#fff}.approach,.relance{gap:6px;display:grid}.approach-bar{background:var(--panel);border:1px solid var(--line);border-radius:6px;height:26px;position:relative;overflow:hidden}.approach-zone{background:color-mix(in srgb, var(--ok) 35%, transparent);border-left:2px solid var(--ok);border-right:2px solid var(--ok);position:absolute;top:0;bottom:0}.approach-fill{background:var(--ink);opacity:.75;border-radius:0 4px 4px 0;position:absolute;top:6px;bottom:6px;left:0}.approach-fill.in-zone{background:var(--ok);opacity:1}.relance-title{font-family:var(--pixel);color:var(--accent);text-align:center;font-size:30px}.relance-strokes{text-align:center;font-size:20px}.relance-fill{background:var(--accent);opacity:.6;position:absolute;top:0;bottom:0;left:0}.brake-result{font-family:var(--pixel);text-align:center;font-size:20px}.brake-perfect{color:var(--ok)}.brake-early{color:var(--gold)}.brake-late,.brake-none{color:var(--danger)}.descent-big{text-align:center;gap:6px;display:grid}.descent-big p{margin:0}.descent-title{font-family:var(--pixel);text-align:center;font-size:34px;line-height:1}.descent-title.small-title{color:var(--accent);font-size:22px}.verdict-great .descent-title{color:var(--ok)}.verdict-good .descent-title{color:var(--pine)}.verdict-bad .descent-title{color:var(--danger)}.descent-buttons{grid-template-columns:1fr 1fr;gap:8px;display:grid}.descent-button.dim{opacity:.45}.descent-button{-webkit-user-select:none;user-select:none;touch-action:manipulation;width:100%;padding:22px 8px;font-size:30px}.descent-button.phase-approach{background:var(--gold);color:var(--ink)}.descent-button.phase-relance{background:var(--accent)}.descent-button.phase-opening,.descent-button.phase-turn,.descent-button.phase-rest{background:var(--line);color:var(--muted);box-shadow:none}.center{text-align:center}.first-stage{border-color:var(--pine);max-height:calc(100dvh - 32px);overflow-y:auto}.first-stage h2{margin:4px 0 2px}.first-stage p{margin:6px 0}.first-stage-scene{background:color-mix(in srgb, var(--pine) 12%, var(--bg));border-radius:8px;margin:-4px 0 6px;overflow:hidden}.first-stage-scene svg{width:100%;height:auto;image-rendering:pixelated;display:block}.fs-hills rect{fill:color-mix(in srgb, var(--pine) 30%, var(--bg))}.fs-road,.fs-dashes rect{fill:var(--ink)}.fs-wind rect{fill:var(--ink);opacity:.35;animation:.8s steps(2,end) infinite fs-wind}.fs-i{fill:var(--ink)}.fs-j{fill:var(--accent)}.fs-v{fill:var(--gold)}.fs-dashes{animation:.5s steps(4,end) infinite fs-road}.fs-rider rect{animation:.5s step-end infinite fs-bob}@keyframes fs-road{0%{transform:translate(0)}to{transform:translate(-8px)}}@keyframes fs-bob{50%{transform:translateY(-.5px)}}@keyframes fs-wind{50%{transform:translate(-3px)}}.first-stage-back{font-family:var(--pixel);color:var(--pine);font-size:24px;line-height:1.1}.first-stage-bag{margin:0 0 6px;padding-left:18px}.first-stage-bag li{font-weight:600}.first-stage-close{background:color-mix(in srgb, var(--gold) 20%, transparent);border-radius:8px;padding:8px 10px}@media (prefers-reduced-motion:reduce){.fs-dashes,.fs-rider rect,.fs-wind rect{animation:none}}@media (width<=700px),(pointer:coarse) and (height<=500px){.climb-overlay,.sprint-overlay{place-items:stretch stretch;padding:0}.climb-window,.sprint-overlay>.modal.sprint{border:0;border-radius:0;flex-direction:column;width:100%;height:100dvh;max-height:none;display:flex;overflow-y:auto}.climb-window>.climb{border:0;border-radius:0;flex-direction:column;flex:1;padding-bottom:0;display:flex}.sprint-overlay>.modal.sprint{padding-bottom:0}.climb>.pedals-row,.climb>.descent-buttons,.sprint-overlay>.modal.sprint>.sprint-pads{z-index:4;background:var(--panel);padding:10px 0 max(14px, env(safe-area-inset-bottom));margin-top:auto;position:sticky;bottom:0}.pedal,.descent-button,.sprint-pads .pad{min-height:112px}.climb>.lanes-wrap{flex:200px;min-height:200px;margin-bottom:10px}.climb>.lanes-wrap>.lanes{height:auto;margin-bottom:0}.climb>.climb-keys{display:none}.climb>.climb-quit{order:-1;align-self:flex-end;margin-bottom:-8px}}
