:root{--paper: #0b0f1a;--raised: #172134;--surface: #121a2b;--surface-alt: #0d1524;--border: #26324b;--border-mid: #2f3d5c;--border-soft: #1b2438;--muted: #828db0;--text-2: #aeb7cd;--ink-2: #d3d9e8;--ink: #eef1f8;--disabled: #3a465f;--neutral-delta: #6d7796;--accent: #ffb020;--accent-hover: #ffc24d;--accent-wash: rgba(255, 176, 32, .12);--accent-line: rgba(255, 176, 32, .42);--gain: #3ad07e;--perte: #ff5b52;--gender-men: #6f9fce;--gender-women: #cf8fc6;--gender-mixed: #9aa3bd;--prof-flat: #7f8aa8;--prof-desc: #5f7fa6;--prof-g1: #c9a54e;--prof-g2: #d98b3f;--prof-g3: #cf6b3a;--prof-g4: #c24b3a;--prof-fill-top: rgba(255, 176, 32, .11);--prof-fill-bot: rgba(255, 176, 32, 0);--prof-band: rgba(255, 255, 255, .035);--jersey-yellow: #ffce3a;--jersey-yellow-border: #b8901f;--jersey-green: #2fc46b;--jersey-green-border: #1c8f4b;--jersey-polka: #ffffff;--jersey-polka-border: #c9d2e6;--jersey-polka-shadow: inset 0 0 0 1.5px #fff, inset 0 0 0 3px #d64b4b;--jersey-white: #eef1f8;--jersey-white-border: #9aa3bd;--stage-p1-border: #2b3856;--stage-p2-border: #3a465f;--stage-p3-border: #55658a;--stage-p4-bg: #3f4d6e;--stage-p5-bg: var(--ink);--font-ui: "Saira", system-ui, -apple-system, sans-serif;--font-display: "Saira Condensed", "Saira", "Arial Narrow", system-ui, sans-serif;--font-num: "JetBrains Mono", ui-monospace, "SF Mono", monospace;--text-h1: 40px;--text-h1-tablet: 31px;--text-h1-phone: 25px;--text-hero: 32px;--text-hero-tablet: 27px;--text-hero-phone: 24px;--text-h2: 26px;--text-h2-phone: 19px;--text-winner: 25px;--text-winner-phone: 19px;--text-name: 15px;--text-name-phone: 13px;--text-body: 13px;--text-cell: 12px;--text-cap: 10px;--tracking-display: -.01em;--tracking-h2: .005em;--tracking-cap: .16em;--pad-page: 28px;--pad-page-tablet: 20px;--pad-page-phone: 16px;--row-min-height: 44px;--radius-badge: 3px;--radius-control: 5px;--radius-card: 7px;--radius-hero: 8px;--border-strong: 1.5px;--transition: .12s ease}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}::selection{background:var(--accent);color:#10141f}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:var(--surface-alt)}::-webkit-scrollbar-thumb{background:var(--border);border:3px solid var(--surface-alt);border-radius:6px}::-webkit-scrollbar-thumb:hover{background:#38466a}:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.num,.mono{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.cap{font:500 var(--text-cap) / 1 var(--font-num);letter-spacing:var(--tracking-cap);text-transform:uppercase;color:var(--muted)}.row{display:grid;align-items:center;gap:12px;min-height:var(--row-min-height);box-sizing:border-box;padding:9px 16px;border-bottom:1px solid var(--border-soft);transition:background var(--transition)}.row:hover{background:var(--raised)}.row--leader{background:var(--raised);border-left:3px solid var(--jersey-gc-fill, var(--jersey-yellow));padding-left:13px}.row--out{opacity:.45}.jersey{width:9px;height:9px;border-radius:2px;flex:none}.jersey--gc{background:var(--jersey-gc-fill, var(--jersey-yellow));border:1px solid var(--jersey-gc-border, var(--jersey-yellow-border))}.jersey--points{background:var(--jersey-points-fill, var(--jersey-green));border:1px solid var(--jersey-points-border, var(--jersey-green-border))}.jersey--mountain{background:var(--jersey-mountain-fill, var(--jersey-polka));border:1px solid var(--jersey-mountain-border, var(--jersey-polka-border));box-shadow:inset 0 0 0 1.5px var(--jersey-mountain-fill, #fff),inset 0 0 0 3px var(--jersey-mountain-dots, #d64b4b)}.jersey--youth{background:var(--jersey-youth-fill, var(--jersey-white));border:1px solid var(--jersey-youth-border, var(--jersey-white-border))}.delta--gain{color:var(--gain)}.delta--perte{color:var(--perte)}.delta--neutre,.delta--inconnu{color:var(--neutral-delta)}.stage-type{font:400 9.5px var(--font-num);padding:3px 7px;border-radius:var(--radius-badge);white-space:nowrap}.stage-type--1{border:1px solid var(--stage-p1-border);color:var(--text-2)}.stage-type--2{border:1px solid var(--stage-p2-border);color:var(--ink-2)}.stage-type--3{border:1px solid var(--stage-p3-border);color:var(--ink-2)}.stage-type--4{background:var(--stage-p4-bg);border:1px solid var(--stage-p4-bg);color:#fff}.stage-type--5{background:var(--stage-p5-bg);border:1px solid var(--stage-p5-bg);color:var(--paper)}.stage-type--tt{border:1px solid var(--muted);color:var(--ink-2)}.badge{font:600 9.5px var(--font-num);letter-spacing:.09em;padding:4px 8px;border-radius:var(--radius-badge)}.badge--live{background:var(--accent);color:#10141f}.badge--upcoming{border:1px solid var(--disabled);color:var(--text-2)}.badge--done{background:var(--raised);color:var(--muted)}.badge--status{border:1px solid var(--disabled);color:var(--text-2);font-size:8.5px;padding:2px 5px}.btn{font:700 12.5px var(--font-display);letter-spacing:.04em;text-transform:uppercase;padding:8px 15px;border-radius:var(--radius-control);border:var(--border-strong) solid var(--border);background:transparent;color:var(--ink);cursor:pointer;transition:background var(--transition),border-color var(--transition)}.btn:hover{background:var(--raised);border-color:var(--accent-line)}.btn--primary{background:var(--accent);color:#10141f;border-color:var(--accent)}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn:disabled{border-color:var(--border);color:var(--disabled);cursor:default;background:transparent}.tab{font:500 13px var(--font-ui);padding:11px 15px;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer}.tab[aria-selected=true]{font-weight:600;color:var(--ink);border-bottom-color:var(--accent)}.skeleton{background:var(--border-soft);border-radius:2px;height:9px}@media (prefers-reduced-motion: no-preference){.skeleton{animation:skeleton-pulse 1.2s ease-in-out infinite}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.block-error{border:1px solid var(--perte);border-radius:var(--radius-card);padding:14px;color:var(--perte)}.odo{display:inline-block;will-change:transform}@media (prefers-reduced-motion: no-preference){.odo--roll{animation:odo-roll .3s cubic-bezier(.2,.75,.2,1)}}@keyframes odo-roll{0%{transform:translateY(-.85em);filter:blur(3px);opacity:0}55%{filter:blur(0);opacity:1}to{transform:translateY(0)}}@media (max-width: 900px){:root{--pad-page: var(--pad-page-tablet)}[data-col=team],[data-col=time],[data-col=distance],[data-col=date],[data-col=winner],[data-col=morpho],[data-col=riders]{display:none}[data-secondary-line]{display:block}.stage-cursor__item{min-width:30px;height:var(--row-min-height)}}@media (max-width: 620px){:root{--pad-page: var(--pad-page-phone);--text-h1: var(--text-h1-phone);--text-hero: var(--text-hero-phone);--text-h2: var(--text-h2-phone);--text-winner: var(--text-winner-phone);--text-name: var(--text-name-phone)}}@media (min-width: 901px){[data-secondary-line]{display:none}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased}.mono{font-family:var(--font-num)}.cap{display:block;font-family:var(--font-num);font-size:var(--text-cap);letter-spacing:var(--tracking-cap);text-transform:uppercase;color:var(--muted)}.eyebrow{font-family:var(--font-num);font-size:var(--text-cap);letter-spacing:var(--tracking-cap);text-transform:uppercase;color:var(--muted);margin:0 0 6px}.eyebrow a{color:inherit}a{color:inherit;text-decoration:none}h1,h2,h3{font-family:var(--font-display);font-weight:700;text-transform:uppercase;letter-spacing:var(--tracking-h2);text-wrap:balance;margin:0;line-height:1.05}h1{font-size:var(--text-h1);letter-spacing:var(--tracking-display)}h2{font-size:var(--text-h2);margin-bottom:12px}h3{font-size:var(--text-name)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.page{max-width:960px;margin:0 auto;padding:var(--pad-page)}@media (max-width: 620px){.page{padding:var(--pad-page-phone)}}.page-header{margin-bottom:20px}.footnote{color:var(--muted);font-size:var(--text-cell);margin-top:8px}.empty-state{color:var(--muted);font-style:italic}.row-meta{color:var(--muted);margin-left:10px;font-size:var(--text-cell)}.row-subline{display:block;color:var(--text-2);font-size:var(--text-cell);margin-top:2px}.global-nav{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.global-nav__inner{max-width:960px;margin:0 auto;padding:14px 28px;display:flex;align-items:center;gap:24px}@media (max-width: 620px){.global-nav__inner{padding:12px 16px}}.global-nav__brand{font-family:var(--font-display);font-weight:800;font-size:19px;text-transform:uppercase;letter-spacing:var(--tracking-display)}.global-nav__inner nav{display:flex;gap:18px;flex:1}.global-nav__inner nav a{color:var(--text-2);font-family:var(--font-display);font-weight:600;font-size:14px;text-transform:uppercase;letter-spacing:.04em;padding:6px 0;border-bottom:2px solid transparent}.global-nav__inner nav a.is-active{color:var(--ink);border-color:var(--accent)}.global-nav__search{display:inline-flex;align-items:center;justify-content:center;color:var(--text-2);padding:6px;margin-right:4px;border-radius:var(--radius-control)}.global-nav__search:hover{color:var(--ink);background:var(--raised)}.global-nav__search.is-active{color:var(--accent)}.global-nav__lang{display:flex;gap:4px}.global-nav__lang button{background:none;border:1px solid var(--border);border-radius:var(--radius-control);padding:4px 8px;font-family:var(--font-num);font-size:11px;cursor:pointer;color:var(--text-2)}.global-nav__lang button.is-active{background:var(--accent);color:#10141f;border-color:var(--accent)}.race-context-bar{position:sticky;z-index:15;background:var(--raised);border-bottom:1px solid var(--border);box-shadow:inset 0 1px 0 var(--accent-line)}.race-context-bar__inner{max-width:960px;margin:0 auto;padding:10px 28px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px}@media (max-width: 620px){.race-context-bar__inner{padding:10px 16px}}.race-context-bar__meta{display:flex;align-items:baseline;gap:10px}.race-context-bar__meta strong{font-family:var(--font-display);font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:.01em}.race-context-bar__meta .mono{font-size:11px;color:var(--text-2);letter-spacing:.06em}.race-context-bar__tabs{display:flex;gap:14px}.race-context-bar__tabs a{font-family:var(--font-display);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-2)}.race-context-bar__tabs a.is-active{color:var(--ink);border-bottom:2px solid var(--accent)}.stage-cursor{list-style:none;display:flex;gap:3px;padding:0 28px 8px;margin:0;max-width:960px;margin-inline:auto;overflow-x:auto}@media (max-width: 620px){.stage-cursor{padding:0 16px 8px}}.stage-cursor li{flex-shrink:0}.stage-cursor a{display:flex;align-items:center;justify-content:center;min-width:30px;height:30px;font-family:var(--font-num);font-size:12px;border-radius:var(--radius-control);color:var(--muted);background:var(--surface);border:1px solid var(--border-soft)}@media (max-width: 620px){.stage-cursor a{min-width:44px;height:44px}}.stage-cursor a.is-current{background:var(--accent);color:#10141f;font-weight:700;border-color:var(--accent)}.stage-cursor a.is-upcoming{color:var(--disabled);background:transparent;border-color:var(--border-soft)}.stage-cursor a:hover:not(.is-current){border-color:var(--accent-line);color:var(--ink-2)}.hero-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-hero);padding:28px;margin-bottom:28px;background-image:radial-gradient(120% 90% at 88% -20%,var(--accent-wash),transparent 55%)}.hero-card h1{font-size:var(--text-hero);margin-bottom:6px}.hero-card .mono{color:var(--text-2);font-size:12px;letter-spacing:.04em}.hero-card__today{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-soft)}.hero-card__route{font-family:var(--font-display);font-weight:700;font-size:var(--text-winner);text-transform:uppercase;margin:4px 0 8px}.hero-card__jerseys{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:20px 0}.hero-card:not(.hero-card--offseason) .eyebrow{color:var(--accent);display:inline-flex;align-items:center;gap:8px}.hero-card:not(.hero-card--offseason) .eyebrow:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 0 var(--accent-line);animation:live-ping 1.9s ease-out infinite}@keyframes live-ping{0%{box-shadow:0 0 #ffb02080}70%{box-shadow:0 0 0 9px #ffb02000}to{box-shadow:0 0 #ffb02000}}@media (prefers-reduced-motion: reduce){.hero-card:not(.hero-card--offseason) .eyebrow:before{box-shadow:0 0 0 2px #ffb02040}}.jersey-holder{background:var(--surface-alt);border-radius:var(--radius-control);padding:10px;border-left:3px solid var(--border)}.jersey-holder--gc{border-left-color:var(--jersey-gc-fill, var(--jersey-yellow))}.jersey-holder--points{border-left-color:var(--jersey-points-fill, var(--jersey-green))}.jersey-holder--mountain{border-left-color:var(--jersey-mountain-dots, #d64b4b)}.jersey-holder--youth{border-left-color:var(--jersey-youth-fill, var(--jersey-white))}.jersey-holder span,.jersey-holder a{display:block}.jersey-holder a{color:var(--ink)}.jersey-holder a:hover{color:var(--accent)}.jersey-holder .mono{color:var(--accent);font-size:12px;margin-top:2px}.btn-link{color:var(--accent);font-weight:600;font-family:var(--font-display);text-transform:uppercase;letter-spacing:.04em}.btn-link:hover{color:var(--accent-hover)}.race-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.race-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:16px;display:block;transition:border-color var(--transition),background var(--transition)}.race-card:hover{border-color:var(--accent-line);background:var(--raised)}.race-card h3{margin:4px 0 6px}.race-card .mono{color:var(--muted);font-size:11px;letter-spacing:.08em}.race-card__status{font-size:var(--text-cell);color:var(--muted)}.stage-header{margin-bottom:20px}.stage-header h1{font-size:var(--text-hero)}.stage-header__date{color:var(--text-2);margin:4px 0 12px;font-family:var(--font-num);font-size:12px}.stage-header__meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.stage-header__meta .mono{color:var(--text-2);font-size:12px}.stage-zone{border-radius:var(--radius-card);padding:20px;margin-bottom:20px;border:1px solid var(--border)}.stage-zone--paper{background:var(--surface)}.stage-zone--raised{background:var(--raised)}.stage-zone h2{color:var(--ink)}.stage-winner{font-family:var(--font-display);font-weight:700;font-size:var(--text-winner);text-transform:uppercase;margin-bottom:14px}.stage-winner strong{color:var(--jersey-gc-fill, var(--jersey-yellow))}.stage-winner .mono{font-size:var(--text-body);color:var(--text-2);font-weight:400;text-transform:none}.points-gained-blocks{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:20px}@media (max-width: 620px){.points-gained-blocks{grid-template-columns:1fr}}.points-gained-block{background:var(--surface-alt);border-radius:var(--radius-control);padding:12px}.points-gained-block h3{color:var(--text-2);margin-bottom:6px}.points-gained-list{list-style:none;margin:0;padding:0}.points-gained-list li{display:flex;justify-content:space-between;align-items:baseline;padding:6px 0;border-bottom:1px solid var(--border-soft);flex-wrap:wrap}.points-gained-list .mono{color:var(--accent)}.points-gained-list .row-subline{color:var(--muted)}.jersey-tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:1px solid var(--border)}.jersey-tabs button{background:none;border:none;padding:8px 14px;cursor:pointer;font-family:var(--font-display);font-weight:600;font-size:13px;text-transform:uppercase;letter-spacing:.03em;color:var(--text-2);border-bottom:2px solid transparent;margin-bottom:-1px}.jersey-tabs button.is-active{color:var(--ink);border-color:var(--accent)}.jersey-tabs button.jersey-tab--gc.is-active{border-bottom-color:var(--jersey-gc-fill, var(--jersey-yellow))}.jersey-tabs button.jersey-tab--points.is-active{border-bottom-color:var(--jersey-points-fill, var(--jersey-green))}.jersey-tabs button.jersey-tab--mountain.is-active{border-bottom-color:var(--jersey-mountain-dots, var(--jersey-mountain-fill, #d64b4b))}.jersey-tabs button.jersey-tab--youth.is-active{border-bottom-color:var(--jersey-youth-fill, var(--jersey-white))}.data-table{width:100%;border-collapse:collapse;background:var(--surface);border-radius:var(--radius-card);overflow:hidden}.data-table thead th{text-align:left;font-family:var(--font-num);font-size:var(--text-cap);letter-spacing:var(--tracking-cap);text-transform:uppercase;color:var(--muted);background:var(--surface-alt);padding:8px 10px;border-bottom:1.5px solid var(--border-mid)}.data-table td{padding:8px 10px;font-size:var(--text-cell);border-bottom:1px solid var(--border-soft);color:var(--ink-2)}.data-table tbody tr{min-height:var(--row-min-height)}.data-table tbody tr:hover{background:var(--raised);cursor:pointer}.data-table tbody tr:hover td:first-child{box-shadow:inset 3px 0 0 var(--accent)}.data-table tr.is-leader{background:var(--raised);font-weight:700}.data-table tr.is-leader td:first-child,.data-table tr.is-jersey--gc td:first-child{box-shadow:inset 3px 0 0 var(--jersey-gc-fill, var(--jersey-yellow))}.data-table tr.is-jersey--points td:first-child{box-shadow:inset 3px 0 0 var(--jersey-points-fill, var(--jersey-green))}.data-table tr.is-jersey--mountain td:first-child{box-shadow:inset 3px 0 0 var(--jersey-mountain-dots, #d64b4b)}.data-table tr.is-jersey--youth td:first-child{box-shadow:inset 3px 0 0 var(--jersey-youth-fill, var(--jersey-white))}.data-table tr.is-out{opacity:.45}.data-table tr.is-upcoming td,.data-table tr.is-upcoming a{color:var(--disabled)}.row-detail td{background:var(--surface-alt)}.row-detail__grid{display:flex;gap:24px;padding:6px 0}.rider-link{display:inline-flex;align-items:center;gap:7px;font-weight:500;color:var(--ink);min-width:0}.rider-link:hover{color:var(--accent)}.rider-link__name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-avatar{width:22px;height:22px;border-radius:50%;object-fit:cover;flex:0 0 auto;background:var(--border-soft)}.row-avatar--placeholder{width:22px;height:22px;border-radius:50%;flex:0 0 auto;background:var(--border-soft)}.avatar-initials{display:flex;align-items:center;justify-content:center;flex:0 0 auto;background:hsl(var(--avatar-hue, 220) 42% 38%);color:#f4f6fb;font-family:var(--font-display);font-weight:700;letter-spacing:.02em;text-transform:uppercase;overflow:hidden;-webkit-user-select:none;user-select:none}.row-avatar.avatar-initials{font-size:8.5px}.search-result-photo.avatar-initials,.team-rider-photo.avatar-initials{font-size:12px}.rider-photo.avatar-initials{font-size:30px;letter-spacing:.04em}.flag{display:inline-block;width:20px;height:15px;flex:0 0 auto;border-radius:2px;object-fit:cover;box-shadow:inset 0 0 0 1px #ffffff1f;vertical-align:middle}.flag--inline{width:18px;height:13px}.flag--code{width:auto;height:auto;box-shadow:none;font-family:var(--font-num);font-size:10px;letter-spacing:.08em;color:var(--muted);border:1px solid var(--disabled);border-radius:var(--radius-badge);padding:1px 4px}.eyebrow--flag{display:inline-flex;align-items:center;gap:7px}.eyebrow--flag .flag{width:22px;height:16px}.race-flag{display:inline-block;width:1.05em;height:.78em;border-radius:2px;object-fit:cover;box-shadow:inset 0 0 0 1px #ffffff1f;flex:0 0 auto}.race-context-bar__meta{align-items:center}.hero-card h1{display:flex;align-items:center;gap:.35em;flex-wrap:wrap}.btn-show-more{display:block;width:100%;margin-top:10px;padding:10px 14px;background:var(--surface);color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-control);font-family:var(--font-display);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition)}.btn-show-more:hover{background:var(--raised);color:var(--ink);border-color:var(--accent-line)}@media (max-width: 900px){.col-hide-mobile{display:none}.col-show-mobile{display:block}}@media (min-width: 901px){.col-show-mobile{display:none}}.status-badge{display:inline-block;font-family:var(--font-num);font-size:10px;color:var(--muted);border:1px solid var(--disabled);border-radius:var(--radius-badge);padding:1px 5px;margin-left:6px}.jersey-dot{display:inline-block;width:9px;height:9px;border-radius:2px;flex-shrink:0}.jersey-dot--gc{background:var(--jersey-gc-fill, var(--jersey-yellow));box-shadow:inset 0 0 0 1px var(--jersey-gc-border, var(--jersey-yellow-border))}.jersey-dot--points{background:var(--jersey-points-fill, var(--jersey-green));box-shadow:inset 0 0 0 1px var(--jersey-points-border, var(--jersey-green-border))}.jersey-dot--mountain{background:var(--jersey-mountain-fill, var(--jersey-polka));box-shadow:inset 0 0 0 1.5px var(--jersey-mountain-fill, #fff),inset 0 0 0 3px var(--jersey-mountain-dots, #d64b4b)}.jersey-dot--youth{background:var(--jersey-youth-fill, var(--jersey-white));box-shadow:inset 0 0 0 1px var(--jersey-youth-border, var(--jersey-white-border))}.delta-badge{font-family:var(--font-num);font-size:var(--text-cell);font-weight:700;letter-spacing:.02em}.delta-badge--gain{color:var(--gain)}.delta-badge--perte{color:var(--perte)}.delta-badge--neutre{color:var(--neutral-delta)}.delta-badge--inconnu{color:var(--neutral-delta);opacity:.6}.stage-tokens{display:inline-flex;gap:4px}.stage-token{display:inline-block;font-size:11px;padding:2px 8px;border-radius:var(--radius-badge);border:1px solid var(--stage-p1-border);color:var(--ink-2);font-family:var(--font-num)}.stage-token--intensity-1{border-color:var(--stage-p1-border);color:var(--text-2)}.stage-token--intensity-2{border-color:var(--stage-p2-border)}.stage-token--intensity-3{border-color:var(--stage-p3-border)}.stage-token--intensity-4{background:var(--stage-p4-bg);color:#fff;border-color:var(--stage-p4-bg)}.stage-token--intensity-5{background:var(--stage-p5-bg);color:var(--paper);border-color:var(--stage-p5-bg)}.stage-token--tt{border-style:dashed}.is-notable{font-weight:700;color:var(--accent)}.difficulty-profile{margin-top:24px}.difficulty-profile h3{color:var(--text-2)}.difficulty-profile__subtitle{color:var(--text-2);font-size:var(--text-body);margin:0 0 12px}.difficulty-profile__bars{display:flex;align-items:flex-end;gap:3px;height:90px;background:var(--surface-alt);border-radius:var(--radius-control);padding:8px;border:1px solid var(--border)}.difficulty-bar{flex:1;background:var(--border-mid);border-radius:1px;min-height:3%}.difficulty-bar.is-current{background:var(--accent)}.difficulty-bar:hover{background:var(--stage-p3-border)}.difficulty-bar.is-current:hover{background:var(--accent-hover)}.difficulty-profile__rank{font-family:var(--font-display);font-weight:700;text-transform:uppercase;margin:10px 0 2px}.difficulty-profile__note{color:var(--muted);font-size:var(--text-cell)}.elevation-profile{margin-top:24px}.elevation-profile__head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}.elevation-profile__head h3{color:var(--text-2)}.elevation-profile__summary{color:var(--muted);font-size:var(--text-cell)}.elevation-profile__plot{position:relative;width:100%;border:1px solid var(--border);border-radius:var(--radius-card);background:var(--surface);padding:4px;touch-action:pan-y;cursor:crosshair}.elevation-profile__plot:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.elevation-profile__svg{display:block;width:100%;height:auto}.elevation-profile__band{fill:var(--prof-band)}.elevation-profile__grid{stroke:var(--border-soft);stroke-width:1}.elevation-profile__axis{fill:var(--muted);font-family:var(--font-num);font-size:11px}.elevation-profile__peak{fill:var(--text-2)}.elevation-profile__peaklabel{fill:var(--ink-2);font-family:var(--font-num);font-size:10px;font-weight:600}.elevation-profile__cursor{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3}.elevation-profile__dot{fill:var(--accent);stroke:var(--paper);stroke-width:1.5}.elevation-profile__tip{position:absolute;top:6px;transform:translate(-50%);display:flex;gap:8px;white-space:nowrap;padding:4px 8px;background:var(--raised);border:1px solid var(--border-mid);border-radius:var(--radius-badge);font-size:var(--text-cell);pointer-events:none}.elevation-profile__tip .mono{font-size:11px}.elevation-profile__climbs{list-style:none;margin:10px 0 0;padding:0}.elevation-profile__climbs li{border-bottom:1px solid var(--border-soft)}.elevation-profile__climbs button{display:flex;align-items:center;gap:10px;width:100%;padding:8px 4px;background:none;border:0;cursor:pointer;color:var(--ink-2);text-align:left;font:inherit;min-height:var(--row-min-height)}.elevation-profile__climbs button:hover{background:var(--raised)}.elevation-profile__cat{flex:none;font:600 9.5px var(--font-num);letter-spacing:.06em;text-transform:uppercase;padding:3px 6px;border-radius:var(--radius-badge);border:1px solid var(--prof-flat);color:var(--text-2)}.elevation-profile__cat--1{border-color:var(--prof-g2);color:var(--prof-g2)}.elevation-profile__cat--2{border-color:var(--prof-g1);color:var(--prof-g1)}.elevation-profile__cat--hc{border-color:var(--prof-g4);color:var(--prof-g4)}.elevation-profile__climbname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elevation-profile__climbs .row-meta{margin-left:0;flex:none}.elevation-profile__hint{color:var(--muted);font-size:var(--text-cap);margin:8px 0 0}@media (max-width: 620px){.elevation-profile__climbs .row-meta{display:none}}@keyframes skeleton-pulse{0%,to{opacity:.4}50%{opacity:.75}}.skeleton-line,.skeleton-block,.skeleton-table-row>div{background:var(--border-soft);border-radius:var(--radius-badge);animation:skeleton-pulse 1.4s ease-in-out infinite}.skeleton-block{border-radius:var(--radius-card)}.skeleton-table{display:flex;flex-direction:column;gap:10px}.skeleton-table-row{display:flex;gap:16px;align-items:center;height:var(--row-min-height)}.block-error{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-control);padding:20px;text-align:center;color:var(--text-2)}.btn-retry{margin-top:8px;background:var(--accent);color:#10141f;border:none;border-radius:var(--radius-control);padding:8px 16px;cursor:pointer;font-family:var(--font-display);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.btn-retry:hover{background:var(--accent-hover)}.rider-header{display:flex;align-items:center;gap:20px;margin-bottom:24px}.rider-photo,.row-avatar,.team-rider-photo,.search-result-photo{object-position:50% 8%}.rider-photo{width:88px;height:88px;border-radius:50%;object-fit:cover}.rider-photo-wrap{display:inline-flex;border-radius:50%;flex:0 0 auto}.rider-photo-wrap--world,.rider-photo-wrap--national{padding:3px}.rider-photo-wrap--world{background:repeating-linear-gradient(180deg,#0069b4 0,#0069b4 20%,#e30613 0,#e30613 40%,#1a1a1a 0,#1a1a1a 60%,#f4c500 0,#f4c500 80%,#009a44 0,#009a44)}.rider-photo-wrap--national{background:linear-gradient(135deg,#f8dd8a,#c99a26 55%,#9c7414)}.rider-tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0 0}.rider-role{font:600 10.5px var(--font-display);letter-spacing:.06em;text-transform:uppercase;padding:3px 8px;border-radius:var(--radius-badge);border:1px solid var(--border-mid);color:var(--ink-2)}.rider-role--secondary{color:var(--muted);border-color:var(--border-soft)}.champion-badge{display:inline-flex;align-items:center;gap:6px;font:600 10.5px var(--font-display);letter-spacing:.06em;text-transform:uppercase;padding:3px 8px 3px 4px;border-radius:var(--radius-badge);background:var(--surface-alt);border:1px solid var(--border);color:var(--ink)}.champion-badge--world:before{content:"";width:12px;height:15px;border-radius:2px;flex:0 0 auto;background:repeating-linear-gradient(180deg,#0069b4 0,#0069b4 20%,#e30613 0,#e30613 40%,#1a1a1a 0,#1a1a1a 60%,#f4c500 0,#f4c500 80%,#009a44 0,#009a44)}.rider-photo--placeholder,.team-rider-photo--placeholder,.search-result-photo--placeholder{background:var(--border-soft)}.rider-header .mono{color:var(--text-2);font-size:12px}.rider-stats{display:flex;gap:20px;margin-bottom:28px}.rider-stat{display:flex;flex-direction:column;gap:2px}.rider-races-list{list-style:none;margin:0;padding:0}.rider-races-list li{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--border-soft);min-height:var(--row-min-height)}.jersey-won-list{display:inline-flex;gap:4px;margin-left:auto}.jersey-won{width:13px;height:17px;border-radius:2px 2px 3px 3px;flex:0 0 auto}.jersey-won--gc{background:var(--jersey-gc-fill, var(--jersey-yellow));box-shadow:inset 0 0 0 1px var(--jersey-gc-border, var(--jersey-yellow-border))}.jersey-won--points{background:var(--jersey-points-fill, var(--jersey-green));box-shadow:inset 0 0 0 1px var(--jersey-points-border, var(--jersey-green-border))}.jersey-won--mountain{background:var(--jersey-mountain-fill, var(--jersey-polka));box-shadow:inset 0 0 0 1.5px var(--jersey-mountain-fill, #fff),inset 0 0 0 3.5px var(--jersey-mountain-dots, #d64b4b)}.jersey-won--youth{background:var(--jersey-youth-fill, var(--jersey-white));box-shadow:inset 0 0 0 1px var(--jersey-youth-border, var(--jersey-white-border))}.team-riders-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.team-riders-list li{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-control);padding:8px 12px;min-height:var(--row-min-height)}.team-rider-photo{width:36px;height:36px;border-radius:50%;object-fit:cover;flex-shrink:0}.participants-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}.participant-team-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:14px}.participant-team-card h3{color:var(--text-2);margin-bottom:8px}.participant-team-card ul{list-style:none;margin:0;padding:0}.participant-team-card li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--border-soft);min-height:var(--row-min-height)}.participant-rider__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.participant-rider__rank{color:var(--muted);font-size:var(--text-cell);flex:0 0 auto;min-width:20px;text-align:right}html{scroll-behavior:smooth}.minimap{margin-bottom:28px}.minimap__months{position:relative;height:16px;font-family:var(--font-num);font-size:10.5px;letter-spacing:.06em;color:var(--muted)}.minimap__months span{position:absolute;transform:translate(2px)}.minimap__track{position:relative;background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius-control)}.minimap__today{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--accent);z-index:3}.minimap__race{position:absolute;height:6px;min-width:4px;border-radius:2px;opacity:.85;transition:opacity var(--transition),outline-color var(--transition)}.minimap__race:hover{opacity:1}.minimap__race.is-ongoing{opacity:1;outline:2px solid var(--accent);outline-offset:1px}.agenda__month{margin-bottom:22px}.agenda__month h2{font-size:15px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-2);font-family:var(--font-display);font-weight:600;padding-bottom:6px;border-bottom:1px solid var(--border-soft);margin-bottom:4px}.agenda__month ul{list-style:none;margin:0;padding:0}.agenda__race{border-bottom:1px solid var(--border-soft);scroll-margin-top:120px}.agenda__race>a{display:grid;grid-template-columns:132px 20px 1fr 140px 84px;align-items:center;gap:12px;padding:11px 8px;min-height:var(--row-min-height);color:var(--ink)}.agenda__race>a:hover{background:var(--panel-2)}.agenda__race:target{background:var(--accent-wash)}.agenda__race--ongoing{box-shadow:inset 3px 0 0 var(--accent)}.agenda__dates{color:var(--muted);font-size:var(--text-cell);white-space:nowrap}.agenda__name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agenda__span{position:relative;height:4px;background:var(--border-soft);border-radius:2px;overflow:hidden}.agenda__span span{position:absolute;top:0;bottom:0;border-radius:2px;opacity:.9}.agenda__status{justify-self:end;font-family:var(--font-num);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.agenda__status--ongoing{color:var(--accent)}@media (max-width: 720px){.agenda__race>a{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.agenda__name{flex:1 1 100%;order:-1;white-space:normal}.agenda__span{display:none}.agenda__status{margin-left:auto}}.search-input{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius-control);font-family:var(--font-ui);font-size:var(--text-body);margin-bottom:20px;background:var(--surface);color:var(--ink)}.search-input::placeholder{color:var(--muted)}.search-input:focus-visible{border-color:var(--accent)}.search-results{list-style:none;margin:0;padding:0}.search-results li{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-soft);min-height:var(--row-min-height)}.search-result-photo{width:32px;height:32px;border-radius:50%;object-fit:cover}.teams-list{list-style:none;margin:0;padding:0}.teams-list li{display:flex;align-items:center;gap:10px;padding:11px 4px;border-bottom:1px solid var(--border-soft);min-height:var(--row-min-height)}.teams-list__name{flex:1;min-width:0;color:var(--ink);font-weight:500}.teams-list__name:hover{color:var(--accent)}.teams-list .row-meta{margin-left:0}.teams-group{margin-bottom:22px}.teams-group__head{position:sticky;top:56px;z-index:5;display:flex;align-items:center;gap:10px;margin:0 0 6px;padding:8px 4px;background:var(--paper);border-bottom:1.5px solid var(--border-mid);font-size:var(--text-h2-phone)}.teams-group__cat{color:var(--ink)}.teams-group__count{margin-left:auto;color:var(--muted);font-size:var(--text-cell);font-weight:400}.filter-bar{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:center;margin-bottom:22px}.filter-bar__label{font:500 var(--text-cap) / 1 var(--font-num);letter-spacing:var(--tracking-cap);text-transform:uppercase;color:var(--muted)}.segmented{display:inline-flex;flex-wrap:wrap;border:1px solid var(--border);border-radius:var(--radius-control);overflow:hidden;background:var(--surface)}.segmented__btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;font:600 12.5px var(--font-display);text-transform:uppercase;letter-spacing:.03em;color:var(--text-2);background:transparent;border:0;cursor:pointer;border-left:1px solid var(--border);transition:background var(--transition),color var(--transition)}.segmented__btn:first-child{border-left:0}.segmented__btn:hover{background:var(--raised);color:var(--ink)}.segmented__btn.is-active{background:var(--accent);color:#10141f}.segmented__count{font-family:var(--font-num);font-size:10px;font-weight:400;opacity:.75}.gender-tag{display:inline-flex;align-items:center;gap:5px;flex:none;font-family:var(--font-num);line-height:1}.gender-tag__glyph{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:11px;border:1px solid currentColor}.gender-tag--label .gender-tag__glyph{width:18px;height:18px;font-size:12px}.gender-tag__text{font-size:var(--text-cap);letter-spacing:var(--tracking-cap);text-transform:uppercase}.gender-tag--men{color:var(--gender-men)}.gender-tag--women{color:var(--gender-women)}.gender-tag--mixed{color:var(--gender-mixed)}.team-tag{font:600 9.5px var(--font-num);letter-spacing:.09em;text-transform:uppercase;padding:3px 7px;border-radius:var(--radius-badge);border:1px solid var(--disabled);color:var(--text-2)}.race-card__top{display:flex;align-items:center;justify-content:space-between;gap:8px}.minimap__race.is-women{background-image:repeating-linear-gradient(45deg,transparent 0 2px,rgba(255,255,255,.4) 2px 4px)}.agenda__race .gender-tag{margin-right:2px}
