@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(../media/674cdcae5df32f1e-s.3p6197lbroro6.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(../media/c5277b5dfc2be681-s.2-6nj1krm0hgp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f772b02cb753e8b4-s.0nm2uymiinf0e.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(../media/226fe66173a5d036-s.3cbb3hkfjol9k.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Oswald;font-style:normal;font-weight:700;font-display:swap;src:url(../media/65968dad6bcc3c8d-s.p.2y0h0xpc5n1pm.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Oswald Fallback;src:local(Arial);ascent-override:146.51%;descent-override:35.49%;line-gap-override:0.0%;size-adjust:81.43%}.oswald_e0c06c5a-module__OU7jRa__className{font-family:Oswald,Oswald Fallback;font-style:normal;font-weight:700}.oswald_e0c06c5a-module__OU7jRa__variable{--font-brand:"Oswald", "Oswald Fallback"}
:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0d1713;--surface:#13221c;--raised:#1a2d25;--ink:#eef0dc;--muted:#a7b49f;--line:#2a3f35;--brand:#9fd36a;--blue:#79b8d8;--green:#50dfaa;--orange:#f0a35e;--red:#ef7b7b;--yellow:#e8c766;--terrain-fill:#1f3a2f}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f1f0e6;--surface:#fbfaf3;--raised:#e7e6d6;--ink:#1b2a22;--muted:#56645a;--line:#d3d3c0;--brand:#2f6b2a;--blue:#2168c5;--green:#087c57;--orange:#aa500d;--red:#bc324d;--yellow:#876300;--terrain-fill:#dfe8cf}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-family:Segoe UI,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,a.button{cursor:pointer}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:3px solid var(--yellow);outline-offset:3px}button{transition:background .15s,border-color .15s}button:hover:not(:disabled),a.button:hover{filter:brightness(1.12)}h1,h2,p{margin-top:0}.icon-button{border:1px solid var(--line);width:36px;height:36px;color:var(--ink);background:var(--surface);border-radius:8px;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button .spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dashboard{max-width:1280px;margin:auto;padding:20px 32px 12px}.eyebrow{letter-spacing:1.8px;color:var(--yellow);font-size:14px;font-weight:800}h1{letter-spacing:-2.8px;margin:6px 0 8px;font-size:clamp(38px,4.5vw,62px);font-weight:800;line-height:1.05}h1 em{color:var(--brand);font-style:normal}.dashboard h1{letter-spacing:-1.6px;font-size:clamp(28px,3vw,40px)}@media (max-width:760px){.dashboard h1{letter-spacing:-1.2px;font-size:30px}}@media (max-width:440px){.dashboard h1{font-size:26px}}.runner-head h1{letter-spacing:-.8px;font-size:24px}@media (max-width:440px){.runner-head h1{font-size:21px}}h2{letter-spacing:-.8px;margin:3px 0 0;font-size:24px;font-weight:750}.intro{color:var(--muted);margin-bottom:0;font-size:14px;line-height:1.5}.hero-row{justify-content:space-between;align-items:center;gap:18px;display:flex}.hero-row h1{min-width:0}.refresh-buttons{flex:none;align-items:center;gap:8px;display:flex}.refresh-buttons .runner-photo{box-shadow:0 0 0 2px var(--status,var(--ink));margin-left:4px}.secondary,.button{border:1px solid var(--line);background:var(--raised);color:var(--ink);border-radius:8px;padding:10px 15px;font-size:13px;font-weight:700}.button{background:var(--brand);color:var(--bg);border-color:var(--brand);display:inline-block}.terrain{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-top:14px;padding:14px 18px 10px}.section-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.terrain-key{color:var(--muted);align-items:center;gap:8px;font-size:11px;display:flex}.terrain-key i{background:var(--green);border-radius:50%;width:7px;height:7px}.log-race-start{color:var(--muted);font-size:12px}.elevation-wrap{margin-top:6px}.elevation-wrap svg{width:100%;height:clamp(75px,11vh,140px);display:block}.elevation-wrap text{fill:var(--muted);font-family:inherit;font-size:11px}.elevation-caption{color:var(--muted);justify-content:space-between;margin-top:2px;font-size:10px;display:flex}.fine-print{color:var(--muted);margin:8px 0 0;font-size:11px;line-height:1.5}.fine-print a{color:var(--brand)}footer{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px 18px;margin-top:10px;padding-top:10px;font-size:11px;display:flex}.dashboard footer{border-top:0}.footer-note{text-align:right;flex:auto;line-height:1.5}.notice{background:color-mix(in srgb, var(--yellow) 9%, var(--surface));color:var(--ink);border:1px solid color-mix(in srgb, var(--yellow) 40%, var(--line));border-radius:8px;margin:10px 0;padding:10px 12px;font-size:12px;line-height:1.5}.notice p{margin-bottom:8px}.runner{max-width:660px;margin:auto;padding:24px}.runner-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.runner-head-actions{flex:none;align-items:center;gap:8px;display:flex}.runner-head-actions>*{white-space:nowrap}.runner-title{margin:5px 0 8px;font-size:28px}.runner-title em{color:var(--green);font-style:normal}.status-card{background:var(--raised);border:1px solid var(--line);border-radius:12px;margin:14px 0;overflow:hidden}.status-main{justify-content:space-between;align-items:center;gap:14px;padding:14px;display:flex}.status-main h2{margin:2px 0 0}.status-side{flex-direction:column;align-items:flex-end;gap:8px;display:flex}.status-side>strong{letter-spacing:-.5px;color:var(--green);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:22px;font-weight:800}.status-side>strong span{letter-spacing:0;color:var(--muted);font-size:13px;font-weight:600}.status-side .undo{min-height:44px}.status-card p{margin:8px 0;font-size:14px;line-height:1.5}.status-card small{color:var(--muted);font-size:12px}.sync-head{color:var(--muted);align-items:center;font-size:13px;font-weight:700;line-height:1.4;display:flex}.sync-dot{background:var(--green);width:9px;height:9px;box-shadow:0 0 10px color-mix(in srgb, var(--green) 45%, transparent);border-radius:50%;flex:none;margin-right:8px;display:inline-block}.sync-dot.pending{background:var(--yellow);box-shadow:0 0 10px color-mix(in srgb, var(--yellow) 45%, transparent)}.sync-shell{line-height:1.5}.sync-top{border-top:1px solid var(--line);background:color-mix(in srgb, var(--surface) 55%, var(--raised));align-items:center;gap:6px;padding:8px 8px 8px 14px;display:flex}.sync-top .sync-head{flex:1;min-width:0}.sync-retry{white-space:nowrap;flex-shrink:0;min-height:40px;padding:8px 12px;font-size:12px}.sync-expand{border:1px solid var(--line);background:var(--raised);min-width:40px;min-height:40px;color:var(--ink);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0;font-size:15px;display:inline-flex}.sync-expand span{line-height:1;transition:transform .15s;display:block}.sync-expand[aria-expanded=true] span{transform:rotate(180deg)}.sync-details{padding:0 14px 4px}.tool-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-top:10px;padding:11px 0;display:flex}.tool-row strong{color:var(--ink);font-size:12px;display:block}.tool-row p{color:var(--muted);margin:3px 0 0;font-size:11px;line-height:1.45}.tool-row>button,.tool-row>a{flex-shrink:0}.capture-message{color:var(--muted);padding:10px 0;font-size:12px;line-height:1.5}.capture-message:empty{padding:0}.capture-panel{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:14px}.capture-panel .section-heading{padding-bottom:12px}.capture-panel .section-heading h2{margin:0;font-size:21px}.capture-panel .section-heading span{color:var(--muted);font-size:12px}label{margin:12px 0 6px;font-size:12px;font-weight:650;display:block}select{border:1px solid var(--line);background:var(--bg);width:100%;min-height:44px;color:var(--ink);border-radius:6px;padding:10px;font-size:13px}.checkpoint-mile{text-align:center;padding:10px 0}.checkpoint-mile strong{letter-spacing:-1.5px;color:var(--orange);font-size:36px;font-weight:750;display:block}.checkpoint-mile span{letter-spacing:1.5px;color:var(--muted);font-size:10px}.capture-buttons{grid-template-columns:1fr 1fr;gap:10px;display:grid}.capture{width:100%;min-height:64px;font-size:16px}.capture small{margin-top:5px;font-size:11px;font-weight:400;display:block}.start{min-height:44px}.history{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:12px;padding:12px 0}.history summary{cursor:pointer;font-size:13px}.history-row{border-top:1px solid var(--line);justify-content:space-between;gap:10px;margin-top:10px;padding:10px 0;font-size:12px;display:flex}.history-row small{color:var(--muted);margin-top:5px;display:block}.danger{border:1px solid var(--red);color:var(--red);white-space:nowrap;background:0 0;border-radius:6px;padding:10px;font-size:12px}.undo{border:1px solid var(--line);color:var(--muted);white-space:nowrap;background:0 0;border-radius:6px;padding:10px;font-size:12px}.undo:disabled{opacity:.4}@media (min-width:761px) and (max-height:800px){.dashboard{padding-top:12px}h1{font-size:40px}.terrain{margin-top:10px;padding-top:10px}.elevation-wrap svg{height:10vh}.terrain h2{font-size:21px}}@media (max-width:760px){.dashboard{padding:14px 16px 12px}.refresh-buttons{gap:6px}h1{letter-spacing:-2px;font-size:42px}.hero-row{gap:10px}.intro{font-size:12px}.terrain{margin-top:10px;padding:10px}.terrain .section-heading{align-items:flex-start}h2{font-size:20px}.terrain-key{max-width:125px;font-size:10px}.terrain-key i{flex-shrink:0}.elevation-wrap svg{height:auto}.fine-print,footer{font-size:10px}.elevation-caption{font-size:9px}}@media (max-width:440px){.refresh-buttons{gap:4px}.refresh-buttons .icon-button,.refresh-buttons .runner-photo{width:32px;height:32px}footer{gap:8px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.elevation-plot{position:relative}.elevation-markers{pointer-events:none;--hit:22px;position:absolute;inset:0}.elevation-marker{width:var(--hit);pointer-events:auto;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;top:0;bottom:0;transform:translate(-50%)}.elevation-marker>span{background:var(--ink);opacity:0;width:1px;height:100%;transition:opacity .15s;display:block}.elevation-marker:hover>span,.elevation-marker:focus-visible>span{opacity:.8}.elevation-marker:focus-visible{outline:2px solid var(--yellow);outline-offset:-2px}.elevation-axis,.elevation-stations{color:var(--muted);font-size:10px;position:relative}.elevation-axis{height:17px;margin-top:3px}.elevation-stations{height:14px}.elevation-axis span,.elevation-stations span{white-space:nowrap;position:absolute;transform:translate(-50%)}.elevation-axis span:first-child{transform:none}.elevation-axis span:last-child{transform:translate(-100%)}@media (min-width:761px) and (max-height:800px){.dashboard{padding-top:8px;padding-bottom:6px}.terrain{padding:8px 14px}.terrain .eyebrow{display:none}.elevation-wrap svg{height:8vh}footer{margin-top:6px;padding-top:6px}}@media (max-width:440px){.dashboard{padding-top:10px}h1{font-size:36px}.terrain{padding:8px}.terrain h2{font-size:18px}.elevation-wrap svg{height:48px}.elevation-markers{--hit:16px}.elevation-axis,.elevation-stations{font-size:8px}.elevation-axis{height:13px}.elevation-stations{height:11px}.terrain>.fine-print{font-size:9px;line-height:1.3}.dashboard>.notice{padding:7px 9px;font-size:11px}footer{font-size:9px}.terrain .eyebrow{display:none}.elevation-axis span:nth-last-child(2){transform:translate(-90%)}}.race-summary{background:var(--raised);border:1px solid var(--line);border-radius:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-top:14px;display:grid}.race-summary>div{flex-direction:column;gap:5px;min-width:0;padding:12px 18px;display:flex}.summary-next{text-align:right;border-left:1px solid var(--line);align-items:flex-end}.summary-next .summary-value,.summary-next .checkpoint-times{justify-content:flex-end}.race-summary .eyebrow{color:var(--muted);letter-spacing:1.4px;font-size:13px}.summary-state{color:var(--muted);white-space:nowrap}.summary-state[data-status=In\ Station]{color:var(--yellow)}.summary-state[data-status=Running]{color:var(--green)}.summary-state[data-status=Finished]{color:var(--blue)}.summary-state[data-status=DNF]{color:var(--red)}.summary-trophy{vertical-align:-3px;color:var(--yellow);margin-left:6px;display:inline-flex}.summary-trophy svg{width:16px;height:16px}.summary-value{flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:20px;font-weight:750;line-height:1.2;display:flex}.summary-miles{font-variant-numeric:tabular-nums;align-items:baseline;gap:6px;font-size:24px;display:flex}.summary-miles b:first-child{color:var(--green)}.summary-miles span{color:var(--muted);font-size:13px;font-weight:400}.checkpoint-times{color:var(--muted);flex-wrap:wrap;gap:0 12px;font-size:12px;display:flex}.checkpoint-times b{color:var(--ink);font-weight:600}.section-elevation{align-self:stretch;margin:6px 0 0}.section-elevation svg{border-bottom:1px solid var(--line);width:100%;height:48px;display:block}.section-elevation figcaption{color:var(--muted);font-variant-numeric:tabular-nums;gap:0 12px;margin-top:4px;font-size:11px;display:flex}.section-elevation figcaption b{font-weight:700}.leg-climb i,.leg-descent i{vertical-align:1px;margin-right:3px;font-size:9px;font-style:normal}.leg-climb{color:var(--orange)}.leg-descent{color:var(--blue)}.summary-next .section-elevation figcaption{justify-content:flex-end}@media (max-width:760px){.race-summary{margin-top:10px}.race-summary>div{gap:3px;padding:10px 12px}.race-summary .eyebrow{letter-spacing:1px;font-size:12px}.summary-value{font-size:16px}.summary-miles{gap:5px;font-size:20px}.checkpoint-times{gap:0 10px;font-size:11px}}@media (max-width:440px){.race-summary{grid-template-columns:minmax(0,1fr)}.summary-next{text-align:left;border-left:0;border-top:1px solid var(--line);align-items:flex-start}.summary-next .section-elevation figcaption,.summary-next .summary-value,.summary-next .checkpoint-times{justify-content:flex-start}.race-summary .eyebrow{font-size:11px}.summary-value{font-size:15px}}.race-timeline{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-top:12px;padding:18px}.timeline-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;display:flex}.timeline-heading>span:last-child{color:var(--muted);font-size:12px}.timeline-segments{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;display:grid}.timeline-segment{--accent:var(--blue);min-width:0}.timeline-segment:nth-child(2){--accent:var(--green)}.timeline-segment:nth-child(3){--accent:var(--orange)}.timeline-segment:nth-child(4){--accent:var(--red)}.timeline-top{flex-direction:column;gap:6px;padding-bottom:12px;display:flex}.timeline-top strong{color:var(--accent);letter-spacing:1.2px;font-size:12px}.timeline-top>span{color:var(--muted);font-size:12px}.timeline-track{background:color-mix(in srgb, var(--accent) 16%, var(--bg));border:1px solid color-mix(in srgb, var(--accent) 38%, var(--line));height:18px;position:relative}.timeline-segment:first-child .timeline-track{border-radius:20px 0 0 20px}.timeline-segment:last-child .timeline-track{border-radius:0 20px 20px 0}.timeline-fill{background:var(--accent);border-radius:inherit;height:100%;transition:width .3s}.timeline-bottom{flex-direction:column;gap:7px;padding-top:12px;display:flex}.timeline-bottom strong{font-variant-numeric:tabular-nums;font-size:15px}.timeline-bottom strong span{color:var(--muted);font-size:11px;font-weight:400}.timeline-bottom>span{color:var(--muted);font-size:12px}.timeline-segment.active .timeline-bottom>span{color:var(--accent);font-weight:700}@media (max-width:760px){.race-timeline{padding:12px}.timeline-heading{margin-bottom:14px}.timeline-heading>span:last-child{font-size:10px}.timeline-top strong{letter-spacing:.5px;font-size:10px}.timeline-top>span{font-size:10px}.home-label{display:block}.timeline-top{min-height:57px}.timeline-bottom strong{font-size:11px}.timeline-bottom strong span{font-size:9px;display:block}.timeline-bottom>span{font-size:10px}.timeline-top{height:64px;min-height:0}.elevation-axis span:nth-last-child(2){transform:translate(-125%)}}.checkpoint-log{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-top:18px;padding:18px}.table-scroll{margin-top:14px;overflow-x:auto}table{border-collapse:collapse;text-align:left;width:100%;font-size:13px}th,td{border-bottom:1px solid var(--line);padding:12px 10px}thead th{color:var(--muted);letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;font-size:11px}tbody th{color:var(--brand);font-weight:700}tbody tr:last-child>*{border-bottom:0}tbody tr:nth-child(2n){background:color-mix(in srgb, var(--raised) 40%, transparent)}td:nth-last-child(-n+4){font-variant-numeric:tabular-nums;white-space:nowrap}.dnf-mark{color:var(--red);letter-spacing:.5px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.runner{max-width:800px}.race-start{flex-wrap:wrap;align-items:center;gap:14px;margin:16px 0 24px;display:flex}.race-start time{color:var(--muted);font-size:12px}.checkin-loop{--accent:var(--blue);margin-top:24px}.checkin-loop:nth-child(2){--accent:var(--green)}.checkin-loop:nth-child(3){--accent:var(--orange)}.checkin-loop:nth-child(4){--accent:var(--red)}.checkin-loop>h2{color:var(--ink);justify-content:space-between;align-items:center;margin-bottom:12px;font-size:23px;display:flex}.checkin-loop>h2 span{letter-spacing:0;color:var(--muted);font-size:16px;font-weight:700}.checkin-loop ol{border-left:2px solid color-mix(in srgb, var(--accent) 40%, var(--line));margin:0 0 0 5px;padding:0 0 0 20px;list-style:none}.checkin-station{border:1px solid var(--line);background:var(--surface);border-radius:10px;margin-bottom:12px;padding:14px;position:relative}.checkin-station:before{content:"";background:var(--bg);border:2px solid var(--accent);border-radius:50%;width:10px;height:10px;position:absolute;top:22px;left:-28px}.checkin-station.complete:before,.checkin-station.active:before{background:var(--accent)}.checkin-station.active:before{width:16px;height:16px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 28%, transparent);top:19px;left:-31px}.checkin-station.active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 14%, var(--surface));box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 22%, transparent), 0 10px 26px #0005;border-width:2px;padding:13px}.checkin-station.active .station-heading h3,.checkin-station.active .station-heading>span{color:var(--accent)}.station-flag{background:var(--accent);color:var(--bg);letter-spacing:.8px;text-transform:uppercase;vertical-align:2px;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:10px;font-weight:800;display:inline-block}.checkin-station.locked{opacity:.55;border-style:dashed}.checkin-station.locked:before{border-color:var(--line)}.checkin-station.locked .station-actions .button:disabled,.checkin-station.locked .finish-button:disabled{background:var(--raised);color:var(--muted);border-color:var(--line)}.checkin-station.next{border-color:color-mix(in srgb, var(--accent) 55%, var(--line))}.station-lock{color:var(--muted);margin:10px 0 0;font-size:11px}.station-heading{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.station-heading h3{margin:0;font-size:15px}.station-heading>span{color:var(--accent);white-space:nowrap;font-size:15px;font-weight:700}.station-actions{grid-template-columns:1fr 1fr auto auto;gap:8px;display:grid}.station-actions button{text-transform:uppercase;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:8px 10px;display:flex}.station-actions small{opacity:.85;text-transform:none;font-size:10px;font-weight:400;line-height:1.4}.station-actions .button{background:var(--accent);border-color:var(--accent)}.finish-actions{align-items:stretch;gap:8px;display:flex}.finish-button{background:var(--green);border-color:var(--green);flex:1;min-width:0;min-height:48px}.finish-actions .danger{text-transform:uppercase;min-height:48px;padding:8px 16px}@media (max-width:640px){.checkpoint-log{padding:12px}.checkpoint-log .section-heading{flex-wrap:wrap}th,td{padding:10px 8px;font-size:11px}.runner{padding:20px 14px}.station-heading{align-items:flex-start}.station-heading h3,.station-heading>span{font-size:13px}.checkin-station{padding:12px}.checkin-station.active{padding:11px}.station-actions{grid-template-columns:1fr auto}.station-actions>.button,.station-actions>.secondary{grid-column:1}.station-actions>.undo{grid-area:1/2}.station-actions>.danger{grid-area:2/2}.station-actions small{font-size:10px}}.checkin-station.complete .station-actions button:not(.danger):not(.undo):disabled,.checkin-station.active .station-actions .button:disabled{opacity:1;background:var(--raised);color:var(--ink);border-color:var(--line)}.timeline-rail{position:relative}.station-markers{pointer-events:none;--marker-width:4px;--marker-height:24px;--marker-radius:2px;--marker-inset:8px;--marker-border:var(--accent);position:absolute;inset:0}.station-markers[data-marker=tick]{--marker-height:12px}.station-markers[data-marker=hair]{--marker-width:2px;--marker-height:28px;--marker-radius:1px;--marker-inset:6px}.station-markers[data-marker=dot]{--marker-width:12px;--marker-height:12px;--marker-radius:50%;--marker-inset:16px}.station-marker{width:24px;height:30px;color:var(--ink);pointer-events:auto;z-index:2;background:0 0;border:0;place-items:center;padding:0;display:grid;position:absolute;top:50%;transform:translate(-50%,-50%)}.station-marker>span{width:var(--marker-width);height:var(--marker-height);border-radius:var(--marker-radius);background:var(--accent);box-shadow:0 0 0 1px var(--marker-border), 0 0 0 2px var(--bg);transition:width .15s,height .15s,box-shadow .15s;display:block}.station-marker:hover>span,.station-marker:focus-visible>span{height:calc(var(--marker-height) + 6px);box-shadow:0 0 0 1px var(--marker-border), 0 0 0 2px var(--bg), 0 0 10px color-mix(in srgb, var(--accent) 55%, transparent)}.station-markers[data-marker=dot] .station-marker>span{background:var(--bg);border:2px solid var(--accent);box-shadow:0 0 0 2px var(--bg)}.station-markers[data-marker=dot] .station-marker.recorded>span{background:var(--accent);box-shadow:0 0 0 2px var(--bg)}.station-markers[data-marker=dot] .station-marker:hover>span,.station-markers[data-marker=dot] .station-marker:focus-visible>span{width:15px;height:15px;box-shadow:0 0 0 2px var(--bg), 0 0 10px color-mix(in srgb, var(--accent) 55%, transparent)}.station-marker:focus-visible{outline:none}.station-marker:focus-visible>span{outline:3px solid var(--yellow);outline-offset:3px;border-radius:3px}.station-markers[data-marker=dot] .station-marker:focus-visible>span{outline-offset:4px;border-radius:50%}.station-bubble{z-index:100;width:min(280px,100vw - 24px);color:var(--ink);background:var(--raised);border:1px solid var(--line);border-radius:10px;padding:14px;font-size:12px;position:fixed;box-shadow:0 12px 35px #0006}.station-bubble-head{align-items:center;gap:12px;display:flex}.station-bubble-head .runner-photo{box-shadow:0 0 0 1px var(--line)}.station-bubble-head strong{font-size:14px;display:block}.station-bubble-meta{color:var(--muted);margin-top:5px;font-size:11px;display:block}.station-bubble dl{margin:12px 0 0}.station-bubble dl>div{justify-content:space-between;gap:8px;margin-top:6px;display:flex}.station-bubble dt{color:var(--muted)}.station-bubble dd{font-variant-numeric:tabular-nums;margin:0;font-size:11px}.station-bubble-leg{gap:10px;display:flex}.station-bubble-leg b{font-weight:700}.course-heading{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;margin-bottom:12px;display:flex}.course-heading h2{margin:0}.course-description{color:var(--muted);margin:-4px 0 22px;font-size:12px}.course-progress{--accent:var(--blue)}.course-chart{padding:0 60px 0 16px}.continuous-course{min-width:0}.course-loop-labels{grid-template-columns:31.1fr 31.1fr 31.1fr 7.7fr;margin-bottom:14px;display:grid}.course-loop-labels>div{border-left:1px solid var(--line);flex-direction:column;gap:5px;padding-left:10px;display:flex}.course-loop-labels>div:first-child{border:0;padding-left:0}.course-loop-labels strong{font-size:13px}.course-loop-labels>div:first-child strong{color:var(--blue)}.course-loop-labels>div:nth-child(2) strong{color:var(--green)}.course-loop-labels>div:nth-child(3) strong{color:var(--orange)}.course-loop-labels>div:nth-child(4) strong{color:var(--red)}.course-loop-labels small{color:var(--muted);font-size:11px}.course-progress .timeline-track{border:0;border-radius:0;height:6px}.course-progress .timeline-fill{background:linear-gradient(to right, var(--blue) 0% 30.7921%, var(--green) 30.7921% 61.5842%, var(--orange) 61.5842% 92.3762%, var(--red) 92.3762% 100%);width:100%}.course-elevation{width:100%;height:160px;display:block;overflow:visible}.elevation-ref-line{stroke:var(--muted);stroke-width:1px;stroke-dasharray:2 4;opacity:.5}.elevation-ref{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:8px;font-size:10px;position:absolute;left:100%;transform:translateY(-50%)}.course-description{flex-wrap:wrap;justify-content:space-between;gap:2px 12px;display:flex}.runner-avatar{pointer-events:none;z-index:1;width:0;height:0;transition:left .6s,top .6s;position:absolute}.runner-avatar:after{content:"";background:var(--status,var(--ink));width:8px;height:8px;box-shadow:0 0 0 2px var(--surface);border-radius:50%;position:absolute;top:-4px;left:-4px}.runner-photo{border:2px solid var(--surface);width:36px;height:36px;box-shadow:0 0 0 2px var(--ink);border-radius:50%;flex:none;display:block;overflow:hidden}.runner-photo img{object-fit:cover;width:100%;height:100%;display:block;transform:scale(2.2)translateY(23%)}.runner-avatar .runner-photo{box-shadow:0 0 0 2px var(--status,var(--ink)), 0 2px 6px #0000004d;position:absolute;bottom:8px;left:0;transform:translate(-50%)}.runner-avatar.stopped img{filter:grayscale()}:is(.runner-avatar,.refresh-buttons,.race-profile-marker)[data-status=Running]{--status:var(--green)}:is(.runner-avatar,.refresh-buttons,.race-profile-marker)[data-status=In\ Station]{--status:var(--yellow)}:is(.runner-avatar,.refresh-buttons,.race-profile-marker)[data-status=DNF]{--status:var(--red)}.course-progress .elevation-marker{width:min(32px,6%)}.course-progress .elevation-marker>span{opacity:.8;background:radial-gradient(circle, var(--ink) 1px, transparent 1.5px) center / 3px 7px repeat-y;width:3px;height:100%;filter:drop-shadow(0 1px 1px var(--surface))}.course-progress .elevation-marker:hover,.course-progress .elevation-marker:focus-visible{background:color-mix(in srgb, var(--ink) 8%, transparent)}.course-progress .elevation-marker:hover>span,.course-progress .elevation-marker:focus-visible>span{opacity:1;background-size:3px 5px}.station-bubble-status{color:var(--ink);margin-top:10px;font-weight:700;display:block}.course-progress .station-marker{--marker-border:var(--accent);width:min(32px,6%);height:44px}.course-progress .station-marker[data-loop="2"]{--accent:var(--green)}.course-progress .station-marker[data-loop="3"]{--accent:var(--orange)}.course-progress .station-marker[data-loop="4"]{--accent:var(--red)}.course-progress .station-markers{--marker-height:14px}.course-progress .station-marker>span{background:var(--surface)}.course-progress .station-marker.recorded>span{background:var(--accent)}.course-mile-axis{height:16px;color:var(--muted);margin-top:20px;font-size:11px;position:relative}.course-mile-axis span{white-space:nowrap;position:absolute;transform:translate(-50%)}.course-mile-axis span:first-child{transform:none}.course-mile-axis span:last-child{transform:translate(-100%)}@media (max-width:760px){.course-chart{padding-inline:16px}.elevation-ref{display:none}.course-loop-labels{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.course-loop-labels>div{border:0;padding-left:0}.course-loop-labels strong{font-size:12px}.course-loop-labels small{font-size:10px}.course-elevation{height:115px}.course-mile-axis{height:14px;font-size:10px}.course-mile-axis span:nth-last-child(2){display:none}}@media (max-width:640px){.runner-head-actions .icon-button{width:44px;height:44px}}.back-link{color:var(--muted);font-size:12px;font-weight:700;display:inline-block}.back-link:hover{color:var(--brand)}.landing{max-width:960px;margin:auto;padding:14px 32px 12px}.landing-bar{justify-content:space-between;align-items:center;display:flex}.brand-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:12px;display:flex}.brand-row .brand-logo{font-size:22px}.brand-logo{font-family:var(--font-brand), sans-serif;letter-spacing:1px;text-transform:uppercase;align-items:center;font-size:28px;font-weight:700;display:inline-flex}.brand-mark{flex:none;width:auto;height:.9em;margin-right:.35em}.brand-logo em{color:var(--brand);font-style:normal}.landing-hero{align-items:center;gap:20px;padding:24px 0 22px;display:flex}.landing-hero .runner-photo{width:84px;height:84px;box-shadow:0 0 0 2px var(--brand), 0 12px 40px color-mix(in srgb, var(--brand) 25%, transparent);border-width:3px}.landing-hero h1{letter-spacing:-1px;margin:4px 0 6px;font-size:clamp(22px,2.4vw,28px)}.landing-section{margin-bottom:22px}.landing-section>h2{letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:13px;font-weight:800}.race-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:12px;display:grid}.race-list{gap:12px;display:grid}.race-empty{border:1px dashed var(--line);color:var(--muted);text-align:center;border-radius:16px;margin:0;padding:14px;font-size:13px}.race-card{border:1px solid var(--line);background:var(--surface);border-radius:12px;flex-direction:column;gap:2px;padding:16px 18px;transition:border-color .2s,transform .2s,box-shadow .2s;display:flex;position:relative}.race-card:hover{border-color:color-mix(in srgb, var(--brand) 55%, var(--line));transform:translateY(-2px);box-shadow:0 14px 40px #0000002e}.race-card.featured{background:radial-gradient(120% 140% at 100% 0%, color-mix(in srgb, var(--brand) 14%, var(--surface)) 0%, var(--surface) 55%);padding:20px 22px}.race-card-top{flex-wrap:wrap;align-items:center;gap:6px 12px;margin-bottom:6px;display:flex}.race-pill{letter-spacing:1px;text-transform:uppercase;border:1px solid;border-radius:999px;align-items:center;gap:7px;padding:4px 11px;font-size:11px;font-weight:800;display:inline-flex}.race-pill[data-state=upcoming]{color:var(--yellow)}.race-pill[data-state=live]{color:var(--green)}.race-pill[data-state=past]{color:var(--muted)}.race-pill[data-status=DNF]{color:var(--red)}.race-pill[data-status=In\ Station]{color:var(--yellow)}.race-pill[data-state=live][data-status=Finished]{color:var(--blue)}.race-pill[data-status=Not\ Started]{color:var(--muted)}.race-pill i{background:currentColor;border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.3}}.start-countdown{color:var(--yellow);align-items:center;gap:14px;margin-left:auto;display:inline-flex}.start-countdown>span{flex-direction:column;align-items:center;line-height:1;display:flex}.start-countdown b{font-variant-numeric:tabular-nums;letter-spacing:-.5px;font-size:28px;font-weight:800}.start-countdown small{letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:700}.start-countdown>span small{margin-top:4px}.start-countdown .start-label{margin-right:2px;font-size:11px}.race-countdown,.live-chip{color:var(--muted);align-items:center;gap:7px;font-size:13px;font-weight:600;display:inline-flex}.race-card h3{letter-spacing:-.6px;margin:0;font-size:20px;font-weight:800}.race-card.featured h3{letter-spacing:-.8px;font-size:clamp(21px,2.2vw,24px)}.race-card h3 a:after{content:"";border-radius:inherit;position:absolute;inset:0}.race-card h3 a:focus-visible{outline:none}.race-card:has(h3 a:focus-visible){outline:3px solid var(--yellow);outline-offset:3px}.race-when{margin:2px 0 0;font-size:13px;font-weight:600}.race-where{color:var(--muted);margin:0;font-size:13px}.race-profile-wrap{margin:10px 0 4px;position:relative}.race-profile{width:100%;height:40px;display:block}.race-card.featured .race-profile{height:56px}.race-profile-marker{pointer-events:none;width:0;height:0;transition:left .6s,top .6s;position:absolute}.race-profile-marker .runner-photo{width:28px;height:28px;box-shadow:0 0 0 2px var(--status,var(--ink)), 0 2px 6px #0000004d;position:absolute;transform:translate(-50%,-50%)}.race-stats{flex-wrap:wrap;gap:6px 24px;margin:6px 0 12px;display:flex}.race-stats dt{letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:800}.race-stats dd{margin:1px 0 0;font-size:15px;font-weight:750}.race-actions{flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:auto;display:flex}.race-actions .button,.race-links a{z-index:1;position:relative}.race-actions .button{border-radius:8px;padding:8px 14px;font-size:13px}.race-links{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.race-links a{border:1px solid var(--line);color:var(--ink);background:var(--raised);border-radius:8px;padding:8px 14px;font-size:13px;font-weight:700;display:inline-block}.race-links a:hover{border-color:var(--muted)}.landing footer{border-top:0;margin-top:8px}@media (max-width:640px){.landing{padding:12px 16px}.landing-hero{align-items:flex-start;gap:14px;padding:16px 0 18px}.landing-hero .runner-photo{width:60px;height:60px}.race-card,.race-card.featured{padding:16px}}@media (prefers-reduced-motion:reduce){.race-pill i{animation:none}.race-card:hover{transform:none}}
