:root{--paper:#f3f3eb;--ink:#18302b;--muted:#627068;--line:#d9ded2;--green:#35654b;--lime:#d9ee7b;--coral:#ad5337;--night:#122b25;--track:#3b5145;--night-text:#edf3e7;--night-muted:#bbccbb;--sans:"Avenir Next","Avenir","Trebuchet MS",sans-serif;--serif:"Baskerville","Iowan Old Style","Palatino Linotype",Georgia,serif}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 var(--sans)}
main{max-width:1440px;margin:auto;padding:28px 38px 24px}
a{color:inherit;text-underline-offset:4px}
button,input,select{font:inherit;color:inherit}
button,select{cursor:pointer}
button,a,summary{touch-action:manipulation}
button:disabled,input:disabled,select:disabled{cursor:default;opacity:.5}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--coral);outline-offset:4px}
[hidden]{display:none!important}
::selection{background:var(--lime);color:var(--ink)}
.masthead{display:flex;justify-content:space-between;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--line);gap:24px}
.wordmark{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:30px;line-height:1}
.wordmark span{font-size:16px;font-weight:650;letter-spacing:.12em}
.wordmark small{display:block;font-size:9px;letter-spacing:.2em;margin-top:8px;font-weight:500}
nav{display:flex;flex-wrap:wrap;gap:24px;font-size:14px}
nav a{text-decoration:none;padding:6px 0}
nav a[aria-current]{border-bottom:2px solid var(--green)}
.heading{display:grid;grid-template-columns:1fr 450px;gap:30px;align-items:center;margin:34px 0 12px}
h1{font:normal clamp(38px,4.1vw,60px)/1.08 var(--serif);letter-spacing:-.03em;margin:0 0 12px;text-wrap:balance}
h1 em{font-weight:400}
.heading p{margin:0;max-width:62ch;color:var(--muted);font-size:14px}
h2{font:normal 29px/1.2 var(--serif);margin:0 0 14px;letter-spacing:-.015em}
h3{font-size:16px;font-weight:600;margin:0 0 8px}
.bests{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;border-bottom:1px solid var(--line)}
.best{border:0;border-bottom:2px solid transparent;background:transparent;text-align:left;padding:12px 9px 13px;min-width:0}
.best[aria-pressed=true]{border-color:var(--green);background:#e8eddf}
.best:hover{background:#e8eddf}
.best .label{display:block;font-size:12px;font-weight:600}
.best strong{font-size:25px;font-weight:500;letter-spacing:-.03em;font-variant-numeric:tabular-nums;display:block;white-space:nowrap;line-height:1.4}
.best small{display:block;font-size:11px;color:var(--muted)}
.best .empty{color:var(--muted)}
.status{font-size:11px;line-height:1.6;color:var(--muted);margin:14px 0 20px;max-width:110ch}
.status.error{color:var(--coral)}
.race-shell{background:var(--night);color:var(--night-text);border-radius:16px;padding:22px 24px 18px;overflow:hidden}
.race-shell button:focus-visible,.race-shell input:focus-visible,.race-shell select:focus-visible{outline-color:var(--lime)}
.race-shell ::selection{background:var(--lime);color:var(--night)}
.panel-heading{display:flex;justify-content:space-between;align-items:baseline;gap:15px;margin-bottom:14px}
.panel-heading h2{font-size:26px;margin:0}
.panel-heading>span{font-size:12px;color:var(--night-muted)}
.race-stage{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:26px;align-items:stretch}
.course-panel{min-width:0;display:flex;flex-direction:column;justify-content:space-between}
.course-hud{display:flex;justify-content:space-between;gap:15px;align-items:flex-start;padding:6px 6px 0}
.course-hud>div>span{display:block;color:var(--night-muted);font-size:12px}
.course-hud small{font-size:11px}
.race-clock{display:block;font-size:37px;font-weight:450;line-height:1.2;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:3px}
.scene-moment{font-size:12px;margin:4px 0;color:var(--night-muted);text-align:right}
.course-scene{position:relative;width:100%;aspect-ratio:1000/550;margin:0 auto;isolation:isolate}
.course-map{width:100%;height:100%;display:block;overflow:visible}
.course-verge{fill:none;stroke:#637c58;stroke-width:100;opacity:.35}
.course-road{fill:none;stroke:var(--track);stroke-width:83}
.course-centre{fill:none;stroke:#a6b99b;stroke-width:1.5;stroke-dasharray:9 12;opacity:.45}
.course-distance{font:400 52px var(--serif);fill:#d7e0cc;letter-spacing:-.03em}
.course-distance tspan{font:400 26px var(--sans)}
.course-caption{font:12px var(--sans);fill:#bbccbb;letter-spacing:.13em}
.course-markers path{stroke:#cad7bd;stroke-width:1;opacity:.5}
.course-markers text{font:16px var(--sans);fill:#c9d7c1}
.runner-layer{position:absolute;inset:0;pointer-events:none}
.ghost{position:absolute;width:44px;height:48px;padding:0;border:0;background:transparent;transform:translate(-50%,-62%);color:var(--runner);pointer-events:auto;z-index:3;border-radius:10px}
.ghost-figure{display:block;height:38px;width:29px;margin:auto;transform:scaleX(var(--facing,1));opacity:.85}
.ghost svg{display:block;width:100%;height:100%;overflow:visible;fill:currentColor;stroke:currentColor;stroke-width:3.6;stroke-linecap:round;stroke-linejoin:round}
.ghost svg path{fill:none}
.ghost-number{position:absolute;top:-4px;right:-1px;display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:var(--runner);color:var(--night);font-size:10px;font-weight:700}
.ghost[aria-pressed=true]{z-index:7}
.ghost[aria-pressed=true] .ghost-figure{opacity:1;filter:drop-shadow(0 2px 2px #061b16)}
.ghost[aria-pressed=true]:after{content:"";position:absolute;bottom:1px;left:10px;width:25px;height:5px;border-bottom:2px solid currentColor;border-radius:50%}
.ghost-label{position:absolute;bottom:calc(100% + 9px);left:50%;width:64px;transform:translateX(calc(-50% + var(--label-shift,0px)));white-space:nowrap;background:#11281f;color:var(--runner);padding:4px;font-size:11px;border:1px solid currentColor;border-radius:4px;opacity:0;pointer-events:none}
.ghost-heart{display:none;align-items:center;justify-content:center;gap:4px;margin-top:2px;color:#ff7474;font-variant-numeric:tabular-nums}
.ghost[aria-pressed=true] .ghost-heart{display:flex}
.ghost-heart strong{font-size:13px;font-weight:600}
.ghost .heart-icon{width:12px;height:12px;fill:currentColor;stroke:none;stroke-width:0;transform-origin:center}
.ghost .heart-icon path{fill:currentColor}
.ghost.has-heart[aria-pressed=true] .heart-icon{animation:ghost-heart-beat 1.4s ease-in-out infinite}
@keyframes ghost-heart-beat{0%,40%,100%{transform:scale(1)}12%,27%{transform:scale(1.13)}20%,35%{transform:scale(1)}}
.ghost:hover .ghost-label,.ghost:focus-visible .ghost-label,.ghost[aria-pressed=true] .ghost-label{opacity:1}
.is-playing .ghost:not(.finished) .runner-arm{transform-origin:17px 17px;transform:rotate(var(--gait))}
.is-playing .ghost:not(.finished) .runner-arm.back{transform:rotate(calc(-1 * var(--gait)))}
.is-playing .ghost:not(.finished) .runner-leg{transform-origin:14px 26px;transform:rotate(var(--gait))}
.is-playing .ghost:not(.finished) .runner-leg.back{transform:rotate(calc(-1 * var(--gait)))}
.scene-footer{display:flex;justify-content:space-between;gap:14px;font-size:11px;color:var(--night-muted);padding:7px 5px 0}
.race-commentary{color:var(--night-text)}
.scene-footer>span:last-child{text-align:right}
.timing-tower{border-left:1px solid #49604e;padding-left:22px;min-width:0}
.tower-heading{display:flex;justify-content:space-between;gap:8px;align-items:baseline;padding-bottom:5px}
.tower-heading h3{font-size:15px;margin:0}
.tower-heading>span{font-size:10px;color:var(--night-muted)}
.timing-row{display:grid;grid-template-columns:25px 1fr auto;gap:10px;align-items:center;width:100%;text-align:left;border:0;border-bottom:1px solid #354e3e;background:transparent;padding:12px 4px;color:var(--night-text);min-height:87px}
.timing-row:hover{background:#233e30}
.timing-row[aria-pressed=true]{background:#294331}
.timing-place{font-size:24px;font-weight:450;align-self:start;color:var(--runner);line-height:1.4;font-variant-numeric:tabular-nums}
.timing-identity{display:flex;flex-direction:column;align-items:flex-start;gap:1px;font-size:14px;font-weight:550;line-height:1.5}
.timing-identity>span:first-child{white-space:nowrap;color:var(--runner)}
.timing-identity small{font-size:10px;color:var(--night-muted);font-weight:400}
.timing-tag{font-size:9px;letter-spacing:.045em;white-space:nowrap;color:var(--night-muted);font-weight:400}
.timing-live{font-size:10px;color:var(--night-text);font-weight:400;font-variant-numeric:tabular-nums}
.timing-progress{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.timing-leader{display:inline-block;border:1px solid var(--night-muted);border-radius:3px;padding:0 5px;color:var(--night-text);font-size:9px;font-weight:500;line-height:1.5;white-space:nowrap}
.timing-record{display:flex;flex-direction:column;text-align:right;font-variant-numeric:tabular-nums;line-height:1.5}
.timing-record strong{font-size:22px;font-weight:500;letter-spacing:-.025em;white-space:nowrap}
.timing-record>span{font-size:12px}
.timing-record small{font-size:9px;color:var(--night-muted)}
.tower-note{font-size:10px;line-height:1.6;margin:10px 0 0;max-width:45ch;color:var(--night-muted)}
.race-controls{display:flex;align-items:center;gap:20px;margin-top:23px;border-top:1px solid #49604e;padding-top:18px}
.transport-buttons{display:flex;gap:7px}
.race-controls button{font-size:12px;border-radius:7px;padding:9px 14px;min-height:42px;border:1px solid #718567;background:transparent}
.race-controls button:hover{background:#304b35}
.race-controls .race-play{background:var(--lime);border-color:var(--lime);color:var(--night);display:flex;align-items:center;gap:5px;min-width:128px;justify-content:center;font-weight:600}
.race-controls .race-play:hover{background:#e5f59d}
.race-play svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.race-speed{margin-left:auto;display:flex;gap:8px;align-items:center;font-size:11px;color:var(--night-muted)}
.race-speed select{background:var(--night);color:var(--night-text);border:1px solid #718567;border-radius:5px;padding:6px 5px;min-height:36px;accent-color:var(--lime)}
.race-total{font-size:11px;color:var(--night-muted);font-variant-numeric:tabular-nums}
.race-scrub{display:block;margin:13px 0 5px}
.race-scrub input{width:100%;height:25px;margin:0;accent-color:var(--lime);cursor:pointer}
.race-checkpoints{display:flex;gap:4px;flex-wrap:wrap}
.race-checkpoints button{font-size:11px;min-height:35px;min-width:44px;flex:1;border:0;border-radius:4px;background:transparent;color:var(--night-muted);padding:5px 8px;white-space:nowrap}
.race-checkpoints button:hover,.race-checkpoints button[aria-pressed=true]{background:#2c4833;color:var(--lime)}
.race-explainer{font-size:11px;line-height:1.6;max-width:115ch;color:var(--night-muted);margin:10px 0 0}
.source-grid{display:grid;grid-template-columns:1fr 1fr;gap:50px;margin:36px 0 26px;align-items:start}
.sector-intro,.selected-date{font-size:13px;color:var(--muted);margin:0 0 17px;max-width:65ch}
.sector-intro strong{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}
.split-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.split-cell{border:0;border-right:1px solid var(--line);background:transparent;padding:13px 3px;text-align:center;min-width:0}
.split-cell:last-child{border-right:0}
.split-cell:hover{background:#e6ecdd}
.split-cell>span{display:block;font-size:11px;color:var(--muted)}
.split-cell strong{display:block;font-size:22px;line-height:1.6;font-variant-numeric:tabular-nums;font-weight:500}
.split-cell small{display:block;font-size:12px;font-variant-numeric:tabular-nums}
.split-cell.lost small{color:#99442e}
.split-cell.gained small{color:#245a3d}
.footnote{font-size:11px;line-height:1.7;color:var(--muted);margin:13px 0 0;max-width:75ch}
.sector-insight{font:normal 23px/1.45 var(--serif);margin:28px 0 16px;max-width:37ch}
.sector-insight strong{font-weight:400;color:var(--coral)}
.comparison-context{font-size:12px;line-height:1.8;color:var(--muted);max-width:68ch}
.selected-time{font-size:38px;line-height:1.2;letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin-top:17px}
.selected-time small{font:14px var(--sans);letter-spacing:0;color:var(--muted);margin-left:12px;white-space:nowrap}
.segment-labels{display:flex;justify-content:space-between;gap:10px;font-size:12px;margin-top:16px}
.segment-track{position:relative;height:6px;background:#dce3d3;border-radius:5px;margin:8px 0 12px;overflow:hidden}
.segment-track span{position:absolute;top:0;height:100%;background:var(--green);border-radius:5px}
.segment-method{margin:3px 0 22px;font-size:12px;color:var(--muted)}
summary{cursor:pointer;color:var(--ink);padding:9px 0}
.native-lap{font-size:12px;line-height:1.6;margin-top:12px}
.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px 12px;margin:14px 0 25px}
.metrics div>span{display:block;color:var(--muted);font-size:10px}
.metrics strong{display:block;font-size:22px;font-weight:500;line-height:1.3;font-variant-numeric:tabular-nums}
.metrics small{font-size:11px;font-weight:400;color:var(--muted)}
.weather{border-top:1px solid var(--line);padding-top:17px;font-size:13px;color:var(--muted)}
.weather h3{color:var(--ink)}
.weather strong{color:var(--ink);font-weight:500}
.replay-link{display:inline-flex;margin-top:18px;background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:7px;text-decoration:none;font-size:13px}
.replay-link:hover{background:var(--green)}
.method{margin:28px 0 18px;border-top:1px solid var(--line);padding-top:8px;font-size:12px;color:var(--muted)}
.method p{max-width:75ch;line-height:1.8;margin:8px 0 15px}
.arrival-state{font-size:11px;color:var(--muted);margin:15px 0}
.empty-state{padding:50px 10px;min-height:240px}
.empty-state h3{font:italic 33px var(--serif);margin:0 0 12px}
.empty-state p{color:var(--night-muted);max-width:65ch}
footer{border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;gap:18px;color:var(--muted);font-size:11px;margin-top:24px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:1400px){.course-hud{padding-top:8px}.race-stage{grid-template-columns:minmax(0,1fr) 365px}.course-scene{margin-top:-12px}.timing-row{min-height:92px}.timing-record strong{font-size:24px}}
@media(max-width:1100px){.heading{grid-template-columns:1fr 390px;gap:20px}.best strong{font-size:23px}.race-stage{grid-template-columns:minmax(0,1fr) 310px;gap:16px}.timing-tower{padding-left:16px}.timing-identity{font-size:13px}.timing-record strong{font-size:21px}.course-caption{font-size:13px}.source-grid{gap:30px}.scene-footer{display:block}.scene-footer>span{display:block;text-align:left!important}}
@media(max-width:850px){main{padding:23px 22px}.heading{grid-template-columns:1fr;margin-top:27px;gap:18px}.heading h1{font-size:48px}.bests{max-width:560px}.best strong{font-size:26px}.race-stage{grid-template-columns:1fr}.course-panel{border-bottom:1px solid #49604e;padding-bottom:16px}.course-scene{max-width:700px;margin-top:-10px}.scene-footer{display:flex}.scene-footer>span:last-child{text-align:right!important}.timing-tower{border-left:0;padding-left:0;margin-top:2px}.timing-row{min-height:80px;grid-template-columns:32px 1fr auto;padding:11px 7px}.timing-record strong{font-size:24px}.timing-identity{font-size:15px}.timing-tag{font-size:10px}.timing-live{font-size:11px}.timing-record small{font-size:10px}.timing-record>span{font-size:13px}.tower-heading{padding:0 7px 6px}.tower-heading>span,.tower-note{font-size:11px}.source-grid{gap:35px;grid-template-columns:1fr}.race-total{display:none}.race-speed{margin-left:auto}.scene-footer{font-size:12px}.race-explainer{font-size:12px}.race-checkpoints button{font-size:12px}.status{font-size:11px}.race-controls{margin-top:20px}.race-shell{padding:20px}.source-grid h2{font-size:28px}.split-cell strong{font-size:25px}.split-cell small{font-size:13px}.sector-intro{font-size:14px}}
@media(max-width:520px){main{padding:20px 15px}.masthead{display:block;padding-bottom:17px}.masthead nav{margin-top:20px;gap:18px;font-size:12px}.heading{margin-top:26px}.heading h1{font-size:43px;max-width:14ch}.heading p{font-size:13px;max-width:42ch}.bests{gap:2px}.best{padding:10px 6px}.best .label{font-size:11px}.best strong{font-size:22px}.best small{font-size:10px}.status{margin:14px 0 16px}.race-shell{margin:0 -3px;padding:17px 12px;border-radius:13px}.panel-heading{margin-bottom:17px}.panel-heading h2{font-size:24px}.panel-heading>span{font-size:10px}.race-clock{font-size:32px}.course-hud>div>span{font-size:11px}.course-hud small{display:none}.scene-moment{font-size:10px;max-width:15ch}.course-scene{width:100%;margin:0;aspect-ratio:1000/620}.course-map{height:100%;overflow:visible}.runner-layer{top:5.645%;bottom:5.645%}.course-caption{font-size:16px;letter-spacing:.04em}.course-distance{font-size:55px}.course-markers text{font-size:21px}.ghost{width:40px;height:43px}.ghost-figure{height:31px;width:23px}.ghost-label{font-size:10px;bottom:calc(100% + 7px)}.ghost-number{font-size:9px;right:0;top:0;width:15px;height:15px}.scene-footer{font-size:11px;display:block;padding-top:11px}.scene-footer>span:last-child{text-align:left!important;color:var(--night-muted);font-size:10px;margin-top:4px}.race-stage{gap:15px}.timing-row{min-height:85px}.timing-identity{font-size:14px}.timing-tag{font-size:9px}.timing-record strong{font-size:23px}.timing-record small{font-size:9px}.timing-place{font-size:25px}.race-controls{flex-wrap:wrap;gap:12px 8px;padding-top:15px}.race-speed{font-size:10px;gap:5px}.race-speed select{font-size:12px;padding:5px 2px}.race-controls button{padding:8px 10px}.race-controls .race-play{min-width:111px}.race-controls .race-photo{font-size:11px}.race-checkpoints{gap:0}.race-checkpoints button{padding:6px 2px;font-size:11px;min-width:37px}.race-checkpoints .race-all-finish{min-width:61px}.race-explainer{font-size:11px}.source-grid{margin-top:30px;gap:31px}.split-cell>span{font-size:10px}.split-cell strong{font-size:22px}.split-cell small{font-size:11px}.sector-insight{font-size:23px}.selected-time{font-size:37px}.metrics strong{font-size:22px}.metrics div>span{font-size:9px}.metrics{gap:14px 8px}.segment-labels{font-size:11px}.method{font-size:12px}.footnote{font-size:11px}footer{font-size:10px;display:block}footer span{display:block;margin-top:5px}}
.race-stage{row-gap:0}.course-panel{grid-column:1;grid-row:1}.timing-tower{grid-column:2;grid-row:1}.race-controls,.race-scrub,.race-checkpoints,.race-explainer{grid-column:1/-1}
@media(max-width:850px){#ranking{display:grid}.race-stage{display:contents}.course-panel{grid-row:1;grid-column:1}.race-controls{grid-row:2;margin-top:15px;border-top:0;padding-top:0}.race-scrub{grid-row:3}.race-checkpoints{grid-row:4}.race-explainer{grid-row:5;margin-bottom:19px}.timing-tower{grid-row:6;grid-column:1;border-top:1px solid #49604e;padding-top:17px}.course-markers text{font-size:24px}.course-caption{font-size:18px}}
@media(max-width:520px){.course-markers text{font-size:36px}.course-caption{display:none}.ghost{width:44px;height:48px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.is-playing .ghost path{transform:none!important}}
