@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/JetBrainsMono-Light.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/JetBrainsMono-Regular.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/JetBrainsMono-Bold.woff2) format("woff2")}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--black: #000;--white: #fff;--gray-100: #f5f5f5;--gray-200: #e5e5e5;--gray-300: #d4d4d4;--gray-400: #a3a3a3;--gray-500: #737373;--gray-600: #525252;--gray-700: #404040;--gray-800: #262626;--gray-900: #171717;--accent: #ff3b30;--font: "JetBrains Mono", monospace;--max-width: 1200px;--section-gap: 120px}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font);font-weight:400;letter-spacing:.05em;color:var(--black);background:var(--white);line-height:1.6;overflow-x:hidden}.container{max-width:var(--max-width);margin:0 auto;padding:0 24px}.site-nav{display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:32px}.site-nav .nav-links{display:flex;gap:24px}.site-nav a{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;text-decoration:none;color:var(--gray-400);transition:color .2s ease}.site-nav a:hover{color:var(--gray-600)}.site-nav a.active{color:var(--black)}.gender-toggle{display:flex;border:1px solid var(--gray-300);border-radius:4px;overflow:hidden;position:absolute;right:0}.gender-toggle button{font-family:var(--font);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:6px 14px;border:none;cursor:pointer;background:transparent;color:var(--gray-400);transition:background .2s ease,color .2s ease}.gender-toggle button:hover{color:var(--gray-600)}.gender-toggle button.active{background:var(--black);color:var(--white)}header{padding:80px 0 40px;text-align:center}header h1{font-size:3rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.1}header .subtitle{font-size:.85rem;font-weight:300;color:var(--gray-500);margin-top:12px;text-transform:uppercase;letter-spacing:.15em}header .meta{display:flex;justify-content:center;gap:40px;margin-top:32px;font-size:.75rem;color:var(--gray-400);text-transform:uppercase;letter-spacing:.1em}header .meta .number{font-size:1.5rem;font-weight:700;color:var(--black);display:block;margin-bottom:4px}.chart-section{margin-bottom:var(--section-gap);opacity:0;transform:translateY(30px);transition:opacity .8s ease,transform .8s ease}.chart-section.visible{opacity:1;transform:translateY(0)}.chart-section h2{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--gray-400);margin-bottom:8px}.chart-section .section-title{font-size:1.5rem;font-weight:700;margin-bottom:40px;line-height:1.2}.section-desc{font-size:.75rem;color:var(--gray-500);max-width:600px;margin-bottom:16px;line-height:1.6;letter-spacing:.02em}.chart-legend{display:flex;gap:20px;margin-bottom:20px;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:6px;font-size:.7rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:.1em}.legend-swatch{display:inline-block;width:12px;height:12px}.legend-swatch--round{border-radius:50%}.legend-diamond{display:inline-block;width:10px;height:10px;background:var(--accent);transform:rotate(45deg)}footer{padding:80px 0;text-align:center;font-size:.7rem;color:var(--gray-400);text-transform:uppercase;letter-spacing:.15em}.footer-author{margin-top:16px;font-size:.7rem;color:var(--gray-400);text-transform:uppercase;letter-spacing:.15em}.footer-author a{color:var(--gray-500);text-decoration:none;transition:color .2s ease}.footer-author a:hover{color:var(--black)}.footer-socials{display:flex;justify-content:center;gap:16px;margin-top:10px}.footer-socials a{color:var(--gray-400)}.footer-socials a:hover{color:var(--black)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--white)}::-webkit-scrollbar-thumb{background:var(--gray-300)}.site-nav a:focus-visible,.gender-toggle button:focus-visible,.rider-select:focus-visible{outline:2px solid var(--black);outline-offset:2px}::selection{background:var(--black);color:var(--white)}@media(max-width:768px){:root{--section-gap: 64px}.container{padding:0 16px}header{padding:48px 0 24px}header h1{font-size:1.75rem}header .subtitle{font-size:.7rem}header .meta{gap:20px}header .meta .number{font-size:1.2rem}.site-nav{flex-direction:column;gap:12px}.gender-toggle{position:static}.chart-section .section-title{font-size:1.2rem;margin-bottom:24px}footer{padding:40px 0}}.breadcrumbs{margin-bottom:16px}.breadcrumbs ol{list-style:none;display:flex;gap:6px;justify-content:center;font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gray-400)}.breadcrumbs li:not(:last-child):after{content:"/";margin-left:6px;color:var(--gray-300)}.breadcrumbs a{color:var(--gray-400);text-decoration:none;transition:color .2s}.breadcrumbs a:hover{color:var(--black)}.breadcrumbs [aria-current]{color:var(--black);font-weight:700}.data-table{width:100%;border-collapse:collapse;margin:24px 0;font-size:.75rem}.data-table th{font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:.65rem;color:var(--gray-400);padding:8px 12px;text-align:left;border-bottom:2px solid var(--black)}.data-table td{padding:8px 12px;border-bottom:1px solid var(--gray-100)}.data-table tr:hover td{background:var(--gray-100)}.data-table a{color:var(--black);text-decoration:none}.data-table a:hover{text-decoration:underline}.data-table .rank-col{width:40px;color:var(--gray-400);font-weight:700}.data-table .points-col{text-align:right;font-weight:700}.race-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;margin:24px 0}.race-card{border:1px solid var(--gray-200);padding:20px;transition:border-color .2s}.race-card:hover{border-color:var(--gray-400)}.race-card a{text-decoration:none;color:inherit}.race-card h3{font-size:.85rem;font-weight:700;margin-bottom:8px}.race-card .race-meta{font-size:.7rem;color:var(--gray-500);display:flex;gap:12px;flex-wrap:wrap}.race-card .race-category{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.entity-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:40px}.entity-header h1{font-size:2rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.entity-header .entity-meta{font-size:.75rem;color:var(--gray-500);text-transform:uppercase;letter-spacing:.1em}.related-links{margin-top:80px;padding-top:40px;border-top:1px solid var(--gray-200)}.related-links h3{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.2em;color:var(--gray-400);margin-bottom:20px}.related-links ul{list-style:none;display:flex;flex-wrap:wrap;gap:10px}.related-links a{display:inline-flex;align-items:center;gap:8px;font-size:.75rem;text-decoration:none;color:var(--black);padding:6px 14px;border:1px solid var(--gray-200);transition:border-color .2s,background .2s}.related-links a:hover{border-color:var(--black);background:var(--gray-100)}.related-type{font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gray-400)}.follow-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:6px 14px;border:1px solid var(--gray-300);background:transparent;cursor:pointer;transition:all .2s}.follow-btn:hover{border-color:var(--black)}.follow-btn.followed{background:var(--black);color:var(--white);border-color:var(--black)}.share-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font);font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:6px 14px;border:1px solid var(--gray-300);background:transparent;cursor:pointer;transition:all .2s}.share-btn:hover{border-color:var(--black)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;margin:24px 0}.stat-label{font-size:.65rem;color:var(--gray-400);text-transform:uppercase;letter-spacing:.1em;display:block}.stat-value{font-weight:700;font-size:.85rem}.stat-value--large{font-size:1.5rem}.content-page{max-width:720px;margin:0 auto;padding-bottom:80px}.content-page h2{font-size:1.2rem;font-weight:700;margin:48px 0 16px;text-transform:uppercase;letter-spacing:.1em}.content-page p{font-size:.8rem;line-height:1.8;color:var(--gray-600);margin-bottom:16px}.my-section{display:none;margin-bottom:48px}.my-section.has-items{display:block}@media(max-width:768px){.entity-header{flex-direction:column;align-items:flex-start}.entity-header h1{font-size:1.5rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.chart-section{opacity:1;transform:none}}.chart-container{width:100%;position:relative}.chart-container canvas{max-width:100%}#calendar-heatmap{height:280px}#race-timeline{height:400px;overflow-x:auto}#race-timeline svg{width:100%;height:100%}#monthly-density{height:360px}#grand-tour-tracker{height:300px}.grand-tour-grid{display:grid;grid-template-columns:1fr;gap:32px}.grand-tour-grid .tour-item h3{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--gray-500);margin-bottom:8px}.grand-tour-grid .tour-item .tour-meta{display:flex;gap:24px;font-size:.65rem;color:var(--gray-400);text-transform:uppercase;letter-spacing:.1em;margin-bottom:16px}.grand-tour-grid .tour-chart{height:120px}#classics-grid{height:240px}#geo-treemap{height:400px}#rider-rankings{height:680px}#team-standings{height:520px}#points-flow{height:420px}#rider-comparison,#team-comparison{height:480px}#race-timeline .axis text{font-family:var(--font);font-size:10px;fill:var(--gray-500);letter-spacing:.05em}#race-timeline .axis line,#race-timeline .axis path{stroke:var(--gray-200)}#race-timeline .lane-label{font-family:var(--font);font-size:10px;font-weight:700;fill:var(--gray-400);text-transform:uppercase;letter-spacing:.1em}#race-timeline .race-bar{cursor:pointer;transition:opacity .2s}#race-timeline .race-bar:hover{opacity:.7}#race-timeline .race-label{font-family:var(--font);font-size:8px;fill:var(--white);pointer-events:none}#race-timeline .today-line{stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3}.upcoming-month{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.15em;color:var(--gray-400);margin-top:24px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--gray-200)}.upcoming-month:first-child{margin-top:0}.upcoming-list{margin-bottom:8px}.upcoming-row{display:grid;grid-template-columns:120px 1fr 100px 50px;align-items:baseline;gap:16px;padding:8px 0;border-bottom:1px solid var(--gray-100);font-size:.8rem}.upcoming-row:last-child{border-bottom:none}.upcoming-highlight{background:var(--gray-100);margin:0 -12px;padding:8px 12px;border-bottom-color:var(--gray-200)}.upcoming-highlight .upcoming-name{font-weight:700}.upcoming-date{font-size:.7rem;color:var(--gray-500);font-variant-numeric:tabular-nums;white-space:nowrap}.upcoming-info{display:flex;flex-direction:column;gap:2px}.upcoming-name{font-weight:400;text-decoration:none;color:inherit}.upcoming-category{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.upcoming-country{font-size:.7rem;color:var(--gray-400);text-align:right}.upcoming-countdown{font-size:.7rem;font-weight:700;color:var(--gray-400);text-align:right;font-variant-numeric:tabular-nums}.startlists-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.startlists-empty{color:var(--gray-400);font-size:.8rem}.startlist-card{border:1px solid var(--gray-200);padding:20px;position:relative;overflow:hidden}.startlist-card--major{border-color:var(--gray-300)}.startlist-card--live{border-color:var(--accent)}.startlist-accent{position:absolute;top:0;left:0;width:3px;height:100%}.startlist-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;gap:12px}.startlist-header-left{flex:1;min-width:0}.startlist-race-name{font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;line-height:1.3;text-decoration:none;color:inherit}.startlist-card--major .startlist-race-name{font-size:.9rem}.startlist-meta{display:flex;gap:12px;margin-top:6px;flex-wrap:wrap}.startlist-date{font-size:.65rem;color:var(--gray-500);font-variant-numeric:tabular-nums}.startlist-category{font-size:.6rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.startlist-country{font-size:.65rem;color:var(--gray-400)}.startlist-countdown{font-size:.65rem;font-weight:700;color:var(--gray-400);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;font-variant-numeric:tabular-nums}.startlist-countdown--live{color:var(--accent);animation:pulse-live 2s ease-in-out infinite}.startlist-riders{display:flex;flex-direction:column}.startlist-rider{display:grid;grid-template-columns:36px 1fr;gap:8px;align-items:baseline;padding:5px 0;border-top:1px solid var(--gray-100);font-size:.8rem}.startlist-rider:first-child{border-top:none}.startlist-rider-rank{font-size:.65rem;font-weight:700;color:var(--gray-400);font-variant-numeric:tabular-nums}.startlist-rider-name{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;color:inherit}.startlist-rider-team{grid-column:2;font-size:.6rem;color:var(--gray-500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:-2px;text-decoration:none}.echarts-tooltip{font-family:var(--font)!important;letter-spacing:.05em!important}@media(max-width:768px){#calendar-heatmap{height:200px}#race-timeline{height:350px}#monthly-density{height:300px}#geo-treemap{height:320px}#classics-grid{height:200px}#rider-rankings{height:600px}#team-standings{height:440px}#points-flow{height:340px}#rider-comparison,#team-comparison{height:380px}.upcoming-row{grid-template-columns:1fr 1fr;gap:4px 12px}.upcoming-date{grid-column:1 / -1}.upcoming-country{text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.startlists-grid{grid-template-columns:1fr}.grand-tour-grid .tour-meta{gap:12px;flex-wrap:wrap}.echarts-tooltip{max-width:calc(100vw - 20px)!important}}
