:root{--brand-primary:#6dd5fa;--brand-secondary:#2193b0;--brand-tertiary:#7bc950;--brand-error:#ff5252;--bg:#121212;--surface:#1e1e1e;--sport-indoor:#22d3ee;--sport-road:#3b82f6;--sport-mtb:#eab308;--sport-running:#f97316;--sport-hike:#22c55e;--sport-walk:#2dd4bf;--sport-swim:#14b8a6;--sport-strength:#a855f7;--sport-other:#9ca3af;--chart-power:#00bcd4;--chart-target:#ffc107;--chart-heart-rate:#ff5252;--chart-velocity:#4caf50;--chart-elevation:#8d6e63;--chart-cadence:#ff9800;--zone-z1-recovery:#9e9e9e;--zone-z2-endurance:#2196f3;--zone-z3-tempo:#4caf50;--zone-z4-threshold:#ffc107;--zone-z5-vo2-max:#ff9800;--zone-z6-anaerobic:#ff5252;--grade-descent:#3b9eda;--grade-flat:#9aa0a6;--grade-moderate:#f4c21b;--grade-steep:#f08000;--grade-very-steep:#e5352b;--grade-extreme:#8e1d10;--feedback-on-target:#4caf50;--feedback-above-target:#ff5252;--feedback-below-target:#2196f3;--feedback-countdown:#ff9800;--feedback-success:#4caf50}@media (prefers-color-scheme:light){:root{--brand-primary:#2193b0;--brand-secondary:#6dd5fa;--brand-tertiary:#5cad2c;--brand-error:#d32f2f;--bg:#fafafa;--surface:#fff}}:root[data-theme=dark]{--brand-primary:#6dd5fa;--brand-secondary:#2193b0;--brand-tertiary:#7bc950;--brand-error:#ff5252;--bg:#121212;--surface:#1e1e1e}:root[data-theme=light]{--brand-primary:#2193b0;--brand-secondary:#6dd5fa;--brand-tertiary:#5cad2c;--brand-error:#d32f2f;--bg:#fafafa;--surface:#fff}:root{--surface-2:#232729;--line:#2e3335;--line-soft:#24292b;--text:#eceff1;--text-dim:#a3acb0;--text-mute:#6d7679;--shadow:0 1px 0 #ffffff0a inset, 0 8px 24px #00000059}@media (prefers-color-scheme:light){:root{--surface-2:#e9eef1;--line:#d8e0e4;--line-soft:#e6ecef;--text:#10181b;--text-dim:#4f5d63;--text-mute:#7c8a90;--shadow:0 1px 2px #10181b0f, 0 6px 18px #10181b12}}:root[data-theme=dark]{--surface-2:#232729;--line:#2e3335;--line-soft:#24292b;--text:#eceff1;--text-dim:#a3acb0;--text-mute:#6d7679;--shadow:0 1px 0 #ffffff0a inset, 0 8px 24px #00000059}:root[data-theme=light]{--surface-2:#e9eef1;--line:#d8e0e4;--line-soft:#e6ecef;--text:#10181b;--text-dim:#4f5d63;--text-mute:#7c8a90;--shadow:0 1px 2px #10181b0f, 0 6px 18px #10181b12}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-width:1024px;margin:0;font:400 14px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.display{font-variant-numeric:tabular-nums;letter-spacing:.01em;font-family:Avenir Next Condensed,HelveticaNeue-CondensedBold,Arial Narrow,Roboto Condensed,system-ui,sans-serif}.label{letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);font-family:Avenir Next Condensed,Arial Narrow,system-ui,sans-serif;font-size:10.5px;font-weight:600}.num{font-variant-numeric:tabular-nums}:focus-visible{outline:2px solid var(--brand-secondary);outline-offset:2px;border-radius:4px}.boot{min-height:100vh;color:var(--text-mute);place-items:center;display:grid}.app{grid-template-columns:216px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:26px;padding:20px 12px;display:flex}.brand{align-items:center;gap:9px;padding:0 8px;display:flex}.brand-mark{background:linear-gradient(150deg, var(--brand-secondary), var(--brand-primary));color:#062730;border-radius:6px;place-items:center;width:24px;height:24px;font-size:13px;font-weight:800;display:grid}.brand-name{letter-spacing:-.01em;font-size:14.5px;font-weight:700}.nav{flex-direction:column;gap:2px;display:flex}.nav-group{margin-bottom:6px;padding:0 8px 6px}.nav-item{width:100%;color:var(--text-dim);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:10px;padding:8px 10px;font-size:13.5px;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text)}.nav-item[aria-current=page]{background:color-mix(in srgb, var(--brand-secondary) 15%, transparent);color:var(--text);font-weight:600}.nav-item[aria-current=page] .dot{background:var(--brand-secondary)}.dot{background:var(--text-mute);border-radius:50%;flex:none;width:6px;height:6px}.side-foot{margin-top:auto;padding:0 8px}.athlete{border-top:1px solid var(--line);align-items:center;gap:9px;padding-top:14px;display:flex}.avatar{background:var(--surface-2);border:1px solid var(--line);width:28px;height:28px;color:var(--text-dim);border-radius:50%;flex:none;place-items:center;font-size:11px;font-weight:700;display:grid}.signout-link{color:var(--text-mute);cursor:pointer;background:0 0;border:0;padding:0;font-size:11px;text-decoration:underline}.main{flex-direction:column;min-width:0;display:flex}.topbar{align-items:baseline;gap:14px;padding:22px 28px 0;display:flex}.page-title{letter-spacing:-.015em;margin:0;font-size:20px;font-weight:700}.page-sub{color:var(--text-mute);font-size:13px}.content{padding:20px 28px 40px}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px}.card-head{border-bottom:1px solid var(--line-soft);align-items:center;gap:10px;padding:13px 18px;display:flex}.card-title{letter-spacing:-.005em;font-size:13px;font-weight:650}.grid-3{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.tile{padding:15px 18px 16px;position:relative;overflow:hidden}.tile-top{align-items:center;gap:8px;display:flex}.tile-val{letter-spacing:-.015em;margin:9px 0 4px;font-size:40px;font-weight:700;line-height:1.02}.tile-foot{color:var(--text-dim);align-items:center;gap:7px;font-size:12px;display:flex}.rides{flex-direction:column;display:flex}.ride{border-bottom:1px solid var(--line-soft);grid-template-columns:3px 1fr auto;align-items:center;gap:0 13px;padding:12px 18px;display:grid}.ride:last-child{border-bottom:0}.ride:hover{background:var(--surface-2)}.ride-stripe{background:var(--brand-secondary);border-radius:2px;align-self:stretch}.ride-name{font-size:13.5px;font-weight:600}.ride-meta{color:var(--text-mute);margin-top:2px;font-size:11.5px}.ride-nums{text-align:right;gap:18px;display:flex}.ride-num-v{font-size:17px;font-weight:700}.ride-empty{color:var(--text-mute);padding:18px;font-size:13px}.ride-export{flex-wrap:wrap;align-items:baseline;gap:6px 12px;padding:0 18px 16px;display:flex}.note{border-radius:8px;gap:9px;margin-bottom:14px;padding:11px 13px;font-size:12.5px;line-height:1.5;display:flex}.note-error{background:color-mix(in srgb, var(--brand-error) 12%, transparent);border:1px solid color-mix(in srgb, var(--brand-error) 30%, transparent);color:var(--text)}.signin{place-items:center;min-height:100vh;display:grid}.signin-card{background:var(--surface);border:1px solid var(--line);width:340px;box-shadow:var(--shadow);border-radius:12px;flex-direction:column;gap:12px;padding:28px;display:flex}.signin-sub{color:var(--text-mute);margin:0 0 6px;font-size:13px}.signin-error{color:var(--brand-error);margin:0;font-size:12.5px}.btn{border:1px solid var(--line);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;border-radius:7px;justify-content:center;align-items:center;gap:7px;padding:9px 14px;font-size:13.5px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--text-mute)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--brand-secondary);color:#062730;border-color:#0000}.btn-primary:hover{background:color-mix(in srgb, var(--brand-secondary) 85%, #fff)}.site{max-width:1080px;margin:0 auto;padding:0 28px 60px}.site-bar{border-bottom:1px solid var(--line-soft);background:var(--bg);z-index:3;align-items:center;gap:28px;padding:18px 0;display:flex;position:sticky;top:0}.brand.is-link{cursor:pointer;color:inherit;background:0 0;border:0;padding:0}.site-nav{gap:22px;margin-left:auto;display:flex}.site-nav a{color:var(--text-dim);font-size:13.5px;text-decoration:none}.site-nav a:hover{color:var(--text)}.hero{max-width:720px;padding:64px 0 34px}.hero-title{letter-spacing:-.02em;margin:0 0 16px;font-size:42px;font-weight:700;line-height:1.1}.hero-lede{color:var(--text-dim);margin:0 0 26px;font-size:16px;line-height:1.6}.hero-actions{align-items:center;gap:10px;display:flex}.hero-actions .btn{text-decoration:none}.hero-actions-secondary{margin-top:12px}.stores{margin-top:18px}.store-row{flex-wrap:wrap;align-items:stretch;gap:10px;display:flex}.store-btn{border:1px solid var(--line);background:var(--surface-2);min-width:172px;color:var(--text);font:inherit;text-align:left;cursor:pointer;border-radius:9px;flex-direction:column;justify-content:center;padding:10px 16px;text-decoration:none;display:flex;position:relative}a.store-btn:hover{border-color:var(--text-mute)}.store-btn:disabled{cursor:default;opacity:.75;padding-right:64px}.store-kicker{letter-spacing:.04em;text-transform:uppercase;color:var(--text-mute);font-size:10.5px;display:block}.store-name{font-size:16px;font-weight:700;line-height:1.25;display:block}.store-soon{background:var(--brand-secondary);color:#062730;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:1px 6px;font-size:9.5px;font-weight:700;position:absolute;top:8px;right:10px}.store-note{max-width:52ch;color:var(--text-mute);margin:10px 0 0;font-size:13px}.dl-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;max-width:620px;margin-top:16px;display:grid}.dl-card{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:22px 18px;display:flex}.dl-name{font-size:16px;font-weight:700}.dl-req{color:var(--text-mute);margin-bottom:12px;font-size:12.5px}.shot-wrap{margin:8px 0 12px}.shot{border:1px solid var(--line);width:100%;height:auto;box-shadow:var(--shadow);border-radius:12px;display:block}.site-section{padding:52px 0 0;scroll-margin-top:76px}.site-h2{letter-spacing:-.01em;margin:0 0 10px;font-size:24px}.site-p{max-width:68ch;color:var(--text-dim);margin:0 0 20px;font-size:14.5px;line-height:1.65}.feature-grid{grid-template-columns:repeat(2,1fr);gap:14px;margin-top:18px;display:grid}.feature-title{margin:0 0 7px;font-size:15px}.feature-body{color:var(--text-dim);margin:0;font-size:13.5px;line-height:1.6}.site-foot{border-top:1px solid var(--line-soft);color:var(--text-mute);margin-top:56px;padding-top:20px;font-size:12.5px}.site-foot a{color:var(--text-dim)}.chart{width:100%;position:relative}.chart-grid{stroke:var(--line-soft);stroke-width:1px}.chart-zero{stroke:var(--text-mute);stroke-width:1px;stroke-dasharray:3 3}.chart-crosshair{stroke:var(--text-mute);stroke-width:1px}.chart-tick{fill:var(--text-mute);font-variant-numeric:tabular-nums;font-size:10px}.chart-line{fill:none;stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.chart-dot{stroke:var(--surface);stroke-width:2px}.chart-legend{flex-wrap:wrap;gap:14px;padding:4px 0 2px 42px;display:flex}.chart-legend-item{color:var(--text-dim);align-items:center;gap:6px;font-size:12px;display:inline-flex}.chart-swatch{border-radius:2px;flex:none;width:9px;height:9px}.chart-tip{background:var(--surface);border:1px solid var(--line);min-width:130px;box-shadow:var(--shadow);pointer-events:none;z-index:2;border-radius:8px;padding:8px 10px;position:absolute;transform:translate(-50%)}.chart-tip-x{margin-bottom:5px}.chart-tip-row{align-items:center;gap:7px;font-size:12px;line-height:1.7;display:flex}.chart-tip-label{color:var(--text-dim);flex:1}.chart-tip-val{color:var(--text);font-weight:600}.route-map{width:100%;margin:4px 0 8px;display:block}.route-path{fill:none;stroke:var(--brand-primary);stroke-width:6px;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.stat-row{flex-wrap:wrap;gap:26px;padding:4px 0 6px;display:flex}.stat-val{font-size:21px;font-weight:700;line-height:1.2}.card-note{color:var(--text-mute);font-size:12px}.table{border-collapse:collapse;width:100%;font-size:13px}.table th{border-bottom:1px solid var(--line);text-align:left;letter-spacing:.13em;text-transform:uppercase;color:var(--text-mute);padding:7px 10px;font-family:Avenir Next Condensed,Arial Narrow,system-ui,sans-serif;font-size:10.5px;font-weight:600}.table td{border-bottom:1px solid var(--line-soft);padding:9px 10px}.table tbody tr{cursor:pointer}.table tbody tr:hover{background:var(--surface-2)}.table .is-num{text-align:right}.table .is-dim{color:var(--text-dim)}.table-foot{justify-content:center;padding:12px 0 4px;display:flex}.ride.is-link{border:0;border-bottom:1px solid var(--line-soft);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0}.nav-link{color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:13.5px}.nav-link:hover{color:var(--text)}.public-body{padding:34px 0 0}.prose{max-width:74ch}.prose-title{letter-spacing:-.01em;margin:0 0 6px;font-size:25px}.prose-lede{color:var(--text-dim);margin:0 0 4px;font-size:14.5px}.prose-block{margin-top:26px}.prose-h3{margin:0 0 8px;font-size:15.5px}.prose p{color:var(--text-dim);margin:0 0 12px;font-size:14.5px;line-height:1.7}.prose-list{margin:0 0 12px;padding-left:20px}.prose-list li{color:var(--text-dim);margin-bottom:7px;font-size:14.5px;line-height:1.65}.prose-table-wrap{margin-bottom:12px;overflow-x:auto}.prose-table-wrap .table tbody tr{cursor:default}.prose-table-wrap .table tbody tr:hover{background:0 0}.pick.is-link{border:0;border-bottom:1px solid var(--line-soft);width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0}.pick.is-link:hover .ride-name{color:var(--brand-primary)}.tabs{gap:4px;display:flex}.tab{color:var(--text-dim);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;padding:5px 11px;font-size:13px;font-weight:600}.tab:hover{color:var(--text)}.tab.is-on{background:var(--surface-2);border-color:var(--line);color:var(--text)}.profile{background:var(--surface-2);border-radius:6px;flex:none;align-items:flex-end;gap:1px;width:132px;padding:3px;display:flex;overflow:hidden}.profile-bar{border-radius:1px 1px 0 0;min-width:1px}.picks{flex-direction:column;display:flex}.pick{border-bottom:1px solid var(--line-soft);align-items:center;gap:14px;padding:11px 0;display:flex}.pick:last-child{border-bottom:0}.pick-text{flex:1;min-width:0}.queued{align-items:center;gap:14px;padding:6px 0 10px;display:flex}.queued-text{min-width:0}.set-card{margin-bottom:14px;padding-bottom:4px}.set-row{border-top:1px solid var(--line-soft);grid-template-columns:1fr auto;align-items:center;gap:24px;padding:13px 0;display:grid}.set-row:first-of-type{border-top:0}.set-row-label{font-size:13.5px;font-weight:600}.set-row-hint{color:var(--text-mute);max-width:62ch;margin-top:2px;font-size:12px;line-height:1.45}.set-row-control{justify-content:flex-end;display:flex}.set-inline{align-items:center;gap:10px;display:flex}.set-input{border:1px solid var(--line);background:var(--surface-2);color:var(--text);font:inherit;border-radius:7px;padding:7px 10px;font-size:13.5px}.set-input:hover{border-color:var(--text-mute)}.set-input.is-text{width:220px}.set-input.is-select{cursor:pointer;width:190px}.set-num{align-items:center;gap:7px;display:flex}.set-num .set-input{text-align:right;width:88px}.set-unit{width:26px}.set-btn{border:1px solid var(--line);background:var(--surface-2);color:var(--text-dim);font:inherit;cursor:pointer;border-radius:7px;padding:7px 11px;font-size:13px}.set-btn:hover{border-color:var(--text-mute);color:var(--text)}.set-link{color:var(--brand-secondary);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;font-size:12.5px}.set-link:hover{text-decoration:underline}.set-toggle{border:1px solid var(--line);background:var(--surface-2);cursor:pointer;border-radius:999px;flex:none;width:42px;height:24px;padding:0;transition:background .15s,border-color .15s;position:relative}.set-toggle.is-on{background:var(--brand-secondary);border-color:#0000}.set-knob{background:var(--text-mute);border-radius:50%;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:3px;left:3px}.set-toggle.is-on .set-knob{background:#062730;transform:translate(18px)}.set-slider{align-items:center;gap:12px;display:flex}.set-slider input{width:180px;accent-color:var(--brand-secondary);cursor:pointer}.set-slider-val{text-align:right;width:40px;color:var(--text-dim);font-size:13px}.set-badge{border:1px solid var(--line);color:var(--text-mute);border-radius:999px;padding:5px 10px;font-size:12.5px}.set-badge.is-on{border-color:color-mix(in srgb, var(--brand-secondary) 45%, transparent);color:var(--text)}.set-flash{background:var(--surface-2);border:1px solid var(--line);box-shadow:var(--shadow);opacity:0;pointer-events:none;border-radius:999px;padding:8px 14px;font-size:12.5px;transition:opacity .2s,transform .2s;position:fixed;bottom:22px;right:22px;transform:translateY(6px)}.set-flash.is-on{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
