.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}@font-face{font-family:Barlow Semi Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-semi-condensed-latin-600-normal-BkLiAYu4.woff2)format("woff2"),url(/assets/barlow-semi-condensed-latin-600-normal-DyOfdMBA.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--ink-muted:#6e6c66;--grid:#e1e0d9;--axis:#c3c2b7;--hairline:#0b0b0b1a;--hover:#0b0b0b0a;--selected:#2a78d61a;--cadence:#2a78d6;--step:#eb6834;--pace:#52514e;--contact:#898781;--flight:#1baf7a;--critical:#b42f2f;--focus:#2a78d6;--pressed:var(--ink);--on-pressed:var(--surface);--plan-easy:#e3f2e7;--plan-easy-edge:#a8d5b5;--plan-long-run:#e2edfa;--plan-long-run-edge:#a6c4ea;--plan-race-pace:#eee6fa;--plan-race-pace-edge:#c4aeea;--plan-tempo:#fbf1d3;--plan-tempo-edge:#e2c873;--plan-threshold:#fce5d3;--plan-threshold-edge:#eeae80;--plan-intervals:#fbe2e5;--plan-intervals-edge:#e9a5ae;--plan-strength:#efe9e0;--plan-strength-edge:#cbbca5;--plan-other:#ececea;--plan-other-edge:#cfcfca;--font:system-ui, -apple-system, "Segoe UI", sans-serif;--font-figures:"Barlow Semi Condensed", var(--font)}.figures dd:not(.gap),.goal-figures dd,.week-total strong,.plan-week-km strong{font-family:var(--font-figures);font-variant-numeric:tabular-nums;letter-spacing:.01em;font-weight:600}.figures dd small,.goal-figures dd small{font-family:var(--font);letter-spacing:0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#f0efec;--ink-2:#c3c2b7;--ink-muted:#9a988f;--grid:#2c2c2a;--axis:#383835;--hairline:#ffffff1a;--hover:#ffffff0d;--selected:#3987e52e;--cadence:#3987e5;--step:#d95926;--pace:#c3c2b7;--contact:#898781;--flight:#199e70;--critical:#e66767;--focus:#5598e7;--pressed:#3987e547;--on-pressed:var(--ink);--plan-easy:#1b3124;--plan-easy-edge:#2f6744;--plan-long-run:#1a2a3e;--plan-long-run-edge:#305a8c;--plan-race-pace:#29203d;--plan-race-pace-edge:#5b478e;--plan-tempo:#352d13;--plan-tempo-edge:#77622a;--plan-threshold:#38241a;--plan-threshold-edge:#86532f;--plan-intervals:#381e23;--plan-intervals-edge:#874050;--plan-strength:#2f2a22;--plan-strength-edge:#665944;--plan-other:#262624;--plan-other-edge:#4a4a46}}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page:#0d0d0d;--surface:#1a1a19;--ink:#f0efec;--ink-2:#c3c2b7;--ink-muted:#9a988f;--grid:#2c2c2a;--axis:#383835;--hairline:#ffffff1a;--hover:#ffffff0d;--selected:#3987e52e;--cadence:#3987e5;--step:#d95926;--pace:#c3c2b7;--contact:#898781;--flight:#199e70;--critical:#e66767;--focus:#5598e7;--pressed:#3987e547;--on-pressed:var(--ink);--plan-easy:#1b3124;--plan-easy-edge:#2f6744;--plan-long-run:#1a2a3e;--plan-long-run-edge:#305a8c;--plan-race-pace:#29203d;--plan-race-pace-edge:#5b478e;--plan-tempo:#352d13;--plan-tempo-edge:#77622a;--plan-threshold:#38241a;--plan-threshold-edge:#86532f;--plan-intervals:#381e23;--plan-intervals-edge:#874050;--plan-strength:#2f2a22;--plan-strength-edge:#665944;--plan-other:#262624;--plan-other-edge:#4a4a46}*{box-sizing:border-box}html,body{background:var(--page);color:var(--ink);font-family:var(--font);margin:0;font-size:15px;line-height:1.45}button,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}a{color:inherit}code{background:var(--hover);border-radius:3px;padding:1px 4px;font-size:.9em}.app{max-width:1280px;margin:0 auto;padding:0 16px 48px}.topbar{border-bottom:1px solid var(--hairline);flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;padding:14px 0;display:flex}.topbar h1{white-space:nowrap;margin:0 8px 0 0;font-size:16px;font-weight:600}.topbar-main{flex-wrap:wrap;align-items:center;gap:8px 12px;margin-right:auto;display:flex}.views{gap:4px;display:flex}.block-picker{max-width:100%;font:inherit;color:var(--ink)}.views a{min-height:44px;color:var(--ink-2);border-radius:6px;align-items:center;padding:0 10px;text-decoration:none;display:inline-flex}.views a:hover{background:var(--hover);color:var(--ink)}.views a[aria-current=page]{color:var(--ink);text-underline-offset:6px;font-weight:600;text-decoration:underline;text-decoration-thickness:2px}.btn{border:1px solid var(--hairline);background:var(--surface);cursor:pointer;border-radius:6px;align-items:center;min-height:44px;padding:0 14px;text-decoration:none;display:inline-flex}.btn:hover{background:var(--hover)}.topbar-actions{align-items:center;gap:12px;display:flex}.account{position:relative}.account-panel{z-index:3;background:var(--surface);border:1px solid var(--hairline);border-radius:6px;width:max-content;min-width:220px;max-width:calc(100vw - 32px);padding:12px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 2px 8px #0000001f}.account-label{color:var(--ink-muted);margin:0;font-size:12px}.account-email{overflow-wrap:anywhere;margin:2px 0 12px;font-size:14px}.garmin-key{border-bottom:1px solid var(--hairline);max-width:560px;margin-bottom:20px;padding-bottom:20px}.garmin-key h2{margin:0 0 8px;font-size:18px}.icon-btn{justify-content:center;width:44px;padding:0}.btn:disabled{cursor:progress;color:var(--ink-muted)}.select{border:1px solid var(--hairline);background:var(--surface);border-radius:6px;min-height:44px;padding:0 8px}.btn.primary{background:var(--ink);color:var(--surface);border-color:var(--ink);font-weight:600}.btn.primary:hover{background:var(--ink-2)}.btn.primary:disabled{color:var(--ink-muted);border-color:var(--hairline);cursor:default;background:0 0}.input{border:1px solid var(--ink-muted);background:var(--surface);min-height:44px;color:var(--ink);font:inherit;border-radius:6px;width:7rem;padding:0 10px;font-size:18px}.input.number{width:5.5rem}.input[aria-invalid=true]{border-color:var(--critical)}.goal{margin-bottom:24px}.block-summary p{margin:0}.block-head{flex-wrap:wrap;flex-basis:100%;align-items:flex-start;gap:8px 16px;display:flex}.block-head .block-summary{flex:22rem;min-width:0}.goal-summary .block-actions{gap:8px;margin-left:auto}.block-stats{flex-basis:100%}.goal-summary .block-stats-note{color:var(--ink-2);flex-basis:100%;margin:8px 0 6px;font-size:13px}.block-stats .figures{gap:12px 32px}.block-stats .figures dd:not(.gap){font-size:25px}.block-summary p+p{margin-top:4px}.block-summary .block-picker{margin-right:6px;font-size:16px;font-weight:600}.block-meta{color:var(--ink-2);display:inline-block}.goal-figures{flex-wrap:wrap;gap:8px 28px;margin:12px 0 0;display:flex}.goal-figures div{flex-direction:column;display:flex}.goal-figures dt{color:var(--ink-2);order:2;font-size:12px}.goal-figures dd{font-variant-numeric:tabular-nums;margin:0;font-size:23px;font-weight:600;line-height:1.2}.goal-figures dd small{color:var(--ink-2);margin-left:3px;font-size:13px;font-weight:400}@media (width<=560px){.goal-figures{grid-template-columns:1fr 1fr;display:grid}}.goal-summary .goal-actions,.goal-summary .confirm{margin-top:0}.confirm{flex-wrap:wrap;align-items:center;gap:8px 12px;width:100%;display:flex}.confirm p{flex-basis:100%;margin:0}.training-empty{border-bottom:1px solid var(--hairline);padding-bottom:16px}.training-empty p{max-width:40rem;margin:0 0 12px}.block-fields{margin-bottom:16px}.field.name .input{width:18rem;max-width:100%}.field.computed output{min-height:44px;color:var(--ink);font-variant-numeric:tabular-nums;align-items:center;font-size:16px;display:flex}.field.computed .placeholder{color:var(--ink-muted)}.block-dates-note{color:var(--ink-2);margin:8px 0 0;font-size:14px}.goal-form .block-confirm{margin-top:16px}.input.date{min-width:10.5rem;font-size:16px}.goal-form .select{font:inherit;color:var(--ink);font-size:16px}.block-tag{font-weight:600}.goal-summary{border-bottom:1px solid var(--hairline);flex-wrap:wrap;align-items:center;gap:8px 16px;padding-bottom:16px;display:flex}.goal-summary p{font-variant-numeric:tabular-nums;margin:0}.goal-form{background:var(--surface);border:1px solid var(--hairline);border-radius:8px;padding:20px}.goal-form h2{margin:0 0 4px;font-size:18px}.goal-form .sub{color:var(--ink-2);margin:0 0 16px;font-size:14px}.goal-fields{flex-wrap:wrap;align-items:flex-end;gap:16px 32px;display:flex}.field{color:var(--ink-2);flex-direction:column;gap:6px;font-size:13px;display:flex}.field.result output{min-height:44px;color:var(--ink-2);align-items:baseline;gap:4px;font-size:15px;display:flex}.field.result strong{color:var(--ink);font-size:32px;font-weight:600;line-height:44px}.field.result .placeholder{line-height:44px}.goal-either{color:var(--ink-2);margin:20px 0 8px;font-size:14px}.goal-math{color:var(--ink-2);max-width:62rem;margin:16px 0 0;font-size:14px}.goal-actions{gap:12px;margin-top:16px;display:flex}.notice{color:var(--ink-2);margin:0 0 16px;font-size:14px}.notice.error{color:var(--critical)}.layout{grid-template-columns:300px minmax(0,1fr);align-items:start;gap:24px;display:grid}.coming-up{border-bottom:1px solid var(--hairline);margin-bottom:16px;padding-bottom:12px}.coming-up-head{color:var(--ink-2);justify-content:space-between;align-items:baseline;gap:8px;margin:0 0 8px;padding:0 8px;font-size:12px;font-weight:600;display:flex}.coming-up-head a{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:400;overflow:hidden}.coming-days{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.coming-day{grid-template-columns:5.5rem minmax(0,1fr);align-items:start;gap:8px;padding:0 8px;display:grid}.coming-date{color:var(--ink-2);padding-top:6px;font-size:13px}.coming-day:first-child .coming-date{color:var(--ink);font-weight:600}.coming-sessions,.coming-session{flex-direction:column;gap:4px;min-width:0;display:flex}.coming-none{color:var(--ink-muted);padding-top:6px;font-size:13px}.runs .segmented,.sync{margin-bottom:12px}.btn.full{justify-content:center;width:100%}.sync .notice{margin:8px 0 0;padding:0 8px;font-size:13px}.sync .notice p{margin:0}.btn.sync-pick{justify-content:center;width:100%;font-size:13px}.sync-from{flex-direction:column;gap:8px;margin-top:8px;display:flex}.sync-from .input.date{width:100%}.sync-actions{flex-wrap:wrap;gap:4px;display:flex}.sync-actions:empty{display:none}.sync .notice .sync-actions .btn{padding:0 8px;font-size:13px}.sync-failures{margin-top:6px}.sync-failures ul{margin:4px 0 0;padding-left:18px}.empty .sync{max-width:280px}.month-nav{gap:8px;display:flex}.month-nav .select{flex:1;font-weight:600}.month-nav .btn{justify-content:center;min-width:44px;font-size:18px}.month-total{color:var(--ink-2);font-variant-numeric:tabular-nums;margin:6px 0 12px;padding:0 8px;font-size:13px}.week+.week{margin-top:16px}.week-head{color:var(--ink-2);border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:baseline;gap:8px;margin:0;padding:0 8px 6px;font-size:12px;font-weight:600;display:flex}.load{--load-run:var(--cadence);--load-planned:var(--flight);--load-caution:#fab219;--load-big-jump:#d03b3b;margin:8px 0 32px}.load-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;display:flex}.load-head h3{margin:0;font-size:16px}.load-head .sub{color:var(--ink-2);flex:1 0 100%;margin:0;font-size:14px}.load-chart{position:relative}.load-chart svg{display:block;overflow:visible}.load-bar{flex-wrap:wrap;align-items:center;gap:8px 16px;margin:10px 0 6px;display:flex}.load-bar .btn{flex-shrink:0;margin-left:auto}.load-legend{color:var(--ink-2);flex-wrap:wrap;flex:24rem;gap:4px 16px;margin:0;padding:0;font-size:12px;list-style:none;display:flex}.load-legend li{align-items:center;gap:6px;display:inline-flex}.load-legend .key{border-radius:3px;width:12px;height:12px;display:inline-block}.load-legend .key-run{background:var(--load-run)}.load-legend .key-planned{background:var(--load-planned)}.load-legend .key-tick{background:var(--load-planned);border-radius:0;height:3px}.load-legend .key-fitness,.load-legend .key-fatigue{background:var(--ink);border-radius:1px;width:16px;height:2px}.load-legend .key-fatigue{background:var(--step)}.load-legend .key-band{background:var(--ink);opacity:.12;border-radius:0;width:16px;height:10px}.load-grid{stroke:var(--grid);stroke-width:1px}.load-axis{fill:var(--ink-muted);font-variant-numeric:tabular-nums;font-size:11px}.load-run{fill:var(--load-run)}.load-planned{fill:var(--load-planned)}.load-tick{stroke:var(--load-planned);stroke-width:3px;stroke-linecap:round}.load-band{fill:var(--ink);opacity:.06}.load-fitness,.load-fatigue{fill:none;stroke:var(--ink);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}.load-fatigue{stroke:var(--step)}.load-ratio{fill:var(--ink-2);font-size:11px;font-weight:600}.load-ratio .mark.caution{fill:var(--load-caution)}.load-ratio .mark.big-jump{fill:var(--load-big-jump)}.load-hit{fill:#0000;outline:none}.load-hit:hover,.load-hit:focus-visible{fill:var(--hover)}.load-hit:focus-visible{stroke:var(--focus);stroke-width:2px}.load-tip{z-index:2;line-height:1.5;top:28px;transform:translate(-50%)}.load-flags{margin:12px 0 0;padding:0;font-size:14px;list-style:none}.load-flags li+li{margin-top:4px}.load-flag-mark{margin-right:6px}.load-flag.caution .load-flag-mark{color:var(--load-caution)}.load-flag.big-jump .load-flag-mark{color:var(--load-big-jump)}.load-flag.deload-not-lighter .load-flag-mark,.load-flag.taper-not-lighter .load-flag-mark{color:var(--ink-muted)}.load-baseline,.load-race{color:var(--ink-2);margin:8px 0 0;font-size:14px}.load-race strong{color:var(--ink);font-variant-numeric:tabular-nums}.load-how p{max-width:62rem;margin:0 0 8px}td.load-flagged{font-weight:700}.plan-week-load{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.plan-week-load strong{color:var(--ink)}.plan-week-load.caution span[aria-hidden]{color:#fab219}.plan-week-load.big-jump span[aria-hidden]{color:#d03b3b}.form-subhead{margin:24px 0 0;font-size:15px}.threshold-help{color:var(--ink-2);font-size:13px}.threshold-help p{margin:8px 0 0}.threshold-race{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.threshold-race .input{width:7.5rem}.week-head-phase{color:var(--ink)}.week-total{font-variant-numeric:tabular-nums;font-weight:400}.week-total strong{color:var(--ink);font-size:22px}.run-list{margin:0;padding:0;list-style:none}.run-list a{font-variant-numeric:tabular-nums;grid-template-columns:3.75rem 4.25rem minmax(0,1fr) auto;align-items:center;gap:2px 8px;min-height:44px;padding:8px;text-decoration:none;display:grid}.run-list .day{font-weight:600}.run-list .pace{color:var(--ink-2)}.run-list .tag{white-space:nowrap;text-overflow:ellipsis;grid-area:1/3;justify-self:start;max-width:100%;margin-left:0;overflow:hidden}.run-list .pace{grid-area:1/4}.run-list a:hover{background:var(--hover)}.run-list a[aria-current=page]{background:var(--selected)}.tag{border:1px solid var(--ink-muted);color:var(--ink-2);vertical-align:1px;border-radius:4px;margin-left:8px;padding:0 6px;font-size:12px;font-weight:400;display:inline-block}.run-list .tag{border-color:var(--plan-edge,var(--hairline));background:var(--plan-fill,none);color:var(--ink);font-weight:600}.run-list .tag.type-easy{font-weight:400}.run-list .tag.type-race{color:var(--surface)}.back{margin-bottom:12px;display:none}.detail h2{margin:0 0 2px;font-size:22px;font-weight:600}.inline-edit{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.inline-edit .icon-btn{width:36px;min-height:36px;color:var(--ink-2);background:0 0;border-color:#0000}.inline-edit .icon-btn:hover:not(:disabled){background:var(--hover);color:var(--ink)}.inline-edit .icon-btn:disabled{color:var(--ink-muted)}.inline-edit .notice,.when .notice{flex-basis:100%;margin:4px 0 0}.type-pick{color:var(--ink);border-radius:4px;align-items:center;gap:4px;padding:2px 6px;display:inline-flex;position:relative}.type-pick:hover{background:var(--hover)}.type-pick:focus-within{outline:2px solid var(--focus);outline-offset:2px}.type-pick .caret{color:var(--ink-2)}.type-pick select{opacity:0;width:100%;height:100%;font:inherit;cursor:pointer;position:absolute;inset:0}.title-input{width:20rem;max-width:100%;font-size:22px;font-weight:600}.detail .when{color:var(--ink-2);margin:0 0 20px}.figures{flex-wrap:wrap;gap:12px 36px;margin:0 0 8px;padding:0;display:flex}.figures div{flex-direction:column;display:flex}.figures dt{color:var(--ink-2);flex-wrap:wrap;order:3;align-items:center;gap:0 6px;max-width:13rem;font-size:13px;display:flex}.figures dd{margin:0;font-size:32px;font-weight:600;line-height:1.1}.figures dd small{color:var(--ink-2);margin-left:3px;font-size:14px;font-weight:400}.key{border-radius:1px;width:12px;height:2px;display:inline-block}.source{color:var(--ink-muted);margin:0 0 28px;font-size:13px}.section{margin-top:32px}.section h3{margin:0 0 2px;font-size:15px;font-weight:600}.section .sub{color:var(--ink-2);margin:0 0 12px;font-size:13px}.controls{flex-wrap:wrap;align-items:center;gap:12px 20px;margin-bottom:12px;font-size:14px;display:flex}.controls label{color:var(--ink-2);align-items:center;gap:8px;display:flex}.chart-panel{background:var(--surface);border:1px solid var(--hairline);border-radius:8px;padding:12px 8px 4px}.chart-panel+.chart-panel{margin-top:8px}.chart-title{color:var(--ink-2);align-items:center;gap:6px;margin:0 0 0 8px;font-size:13px;display:flex}.line-legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 18px;margin:0 0 6px;font-size:13px;display:flex}.line-legend>span{align-items:center;gap:6px;display:inline-flex}.key.thin{background:var(--ink-2);opacity:.5;height:1px}.key.thick{height:3px}.key.band{background:var(--ink);opacity:.12;border-radius:2px;width:14px;height:12px}.key.dashed{background:repeating-linear-gradient(90deg, var(--ink) 0 6px, transparent 6px 10px);border-radius:0;width:20px}.figures .gap .delta{vertical-align:1px;font-size:11px}.figures .gap{color:var(--ink-2);font-variant-numeric:tabular-nums;order:4;margin:2px 0 0;font-size:13px;font-weight:400}.goal-routes{color:var(--ink-2);max-width:62rem;margin:12px 0 0;font-size:15px}.goal-routes strong{color:var(--ink)}.th-note{color:var(--ink-muted);white-space:nowrap;font-weight:400}.legend-item{align-items:center;gap:6px;margin-left:10px;display:inline-flex}.timing-line{color:var(--ink-2);margin:4px 0;font-size:14px}.timing-line strong{color:var(--ink);font-weight:600}.step-bars{margin:0;padding:12px 16px;list-style:none}.step-bars li{font-variant-numeric:tabular-nums;grid-template-columns:4.75rem minmax(0,1fr) 15rem;align-items:center;gap:4px 12px;min-height:32px;font-size:13px;display:grid}.step-bars .km{color:var(--ink-2)}.step-bars .track{gap:2px;height:16px;display:flex}.step-bars .seg-contact{background:var(--contact)}.step-bars .seg-flight{background:var(--flight);border-radius:0 4px 4px 0}.step-bars .values{color:var(--ink-2);text-align:right}.step-bars .values strong{color:var(--ink);font-weight:600}.step-bars li.between .track{opacity:.45}.bars-legend{color:var(--ink-2);flex-wrap:wrap;gap:4px 16px;margin:0 0 4px;font-size:13px;display:flex}.swatch{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.chart-hint{color:var(--ink-muted);margin:2px 0 0 8px;font-size:12px}.stride-map{position:relative}.stride-map canvas{width:100%;display:block}.tooltip{pointer-events:none;background:var(--surface);border:1px solid var(--hairline);font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:6px;padding:6px 10px;font-size:13px;position:absolute;box-shadow:0 2px 8px #0000001f}.tooltip strong{font-weight:600}.tip-host{position:relative}.chart-tip{z-index:2;line-height:1.5}.tip-date{font-weight:600}.table-wrap{overflow-x:auto}table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}th,td{text-align:right;border-bottom:1px solid var(--hairline);white-space:nowrap;padding:8px 10px}th:first-child,td:first-child{text-align:left}th{color:var(--ink-2);white-space:normal;vertical-align:bottom;font-size:13px;font-weight:600}th.label-col,td.label-col{text-align:left}.empty{max-width:560px;padding:40px 0}.empty h3{margin:0 0 8px;font-size:18px}.unsaved{color:var(--ink-muted);font-weight:400}th.tick-col,td.tick-col{text-align:center;width:44px;padding:0}.tick{cursor:pointer;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.tick input{width:18px;height:18px;accent-color:var(--ink);cursor:pointer;margin:0}tr.ticked td{background:var(--selected)}tr.between td{color:var(--ink-2)}tr.pickable{cursor:pointer;-webkit-user-select:none;user-select:none}tr.pickable:hover td{background:var(--hover)}tr.pickable.ticked:hover td{background:var(--selected)}kbd{font:inherit;border:1px solid var(--ink-muted);border-radius:3px;padding:0 4px;font-size:.9em}@media (hover:none){.shift-tip{display:none}}td.missing{text-align:left;color:var(--ink-2)}.compare h2{margin:0 0 4px}.compare>.sub{color:var(--ink-2);max-width:62rem;margin:0 0 16px}.headline{max-width:62rem;margin:8px 0;font-size:17px}.empty h2{margin:0 0 8px;font-size:18px}.empty p{color:var(--ink-2);margin:0 0 12px}.dim{opacity:.5}.u-legend{display:none}@media (width<=860px){.layout{grid-template-columns:minmax(0,1fr)}.layout.has-selection .runs,.layout:not(.has-selection) .detail-col{display:none}.back{align-items:center;display:inline-flex}.goal-form{padding:16px}.block-fields .field.name,.field.name .input{width:100%}.figures{grid-template-columns:1fr 1fr;gap:16px 20px;display:grid}.figures dd:not(.gap){font-size:28px}}.narrow-only{display:none}@media (width<=560px){.wide-only{display:none}.narrow-only{display:inline}.planned{padding:12px 10px}.planned-steps th,.planned-steps td{padding:8px 5px}.planned-steps td:nth-child(2){white-space:normal}.tabs{flex-wrap:wrap}.tabs button{padding:0 10px}.step-bars{padding:12px 8px}.step-bars li{grid-template-columns:4.75rem minmax(0,1fr);padding:4px 0}.step-bars .values{text-align:left;grid-column:2}}.planned{border:1px solid var(--hairline);background:var(--surface);border-radius:8px;margin:16px 0 0;padding:12px 14px}.planned-head{grid-template-columns:11rem minmax(0,1fr) auto;align-items:start;gap:6px 14px;display:grid}.planned-head h3{color:var(--ink-2);grid-column:1/-1;margin:0;font-size:13px;font-weight:600}.planned-text p{font-variant-numeric:tabular-nums;margin:0 0 2px;font-size:14px}.planned-status{font-weight:600}.planned-note{color:var(--ink-2);white-space:pre-line}.planned-link{color:var(--ink-2);white-space:nowrap;font-size:13px}.planned-whole{margin:10px 0 0;font-size:14px}.planned-steps{margin-top:12px}.planned-steps summary{cursor:pointer;align-items:center;min-height:32px;font-size:14px;font-weight:600;display:flex}.planned-steps summary:before{content:"▸";color:var(--ink-2);margin-right:6px}.planned-steps[open] summary:before{content:"▾"}.planned-steps summary::-webkit-details-marker{display:none}.planned-reps{white-space:pre;color:var(--ink-2);font-weight:400}.planned-steps .sub{margin:4px 0 8px}td.on-target{color:var(--ink);font-weight:600}td.off-target{color:var(--ink-2)}.summary{margin:16px 0 24px}.summary-head{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:14px;display:flex}.summary-caption{color:var(--ink-2);margin:0}.segmented{border:1px solid var(--ink-muted);border-radius:6px;display:inline-flex;overflow:hidden}.segmented.full{display:flex}.segmented button{white-space:nowrap;background:var(--surface);min-height:44px;color:var(--ink-2);font:inherit;cursor:pointer;border:0;flex:1;padding:0 14px}.segmented button+button{border-left:1px solid var(--ink-muted)}.segmented button:hover{background:var(--hover)}.segmented button[aria-pressed=true]{background:var(--pressed);color:var(--on-pressed);font-weight:600}.help{color:var(--ink-2);margin-top:12px;font-size:14px}.help summary{cursor:pointer;padding:12px 0}.help ul{max-width:62rem;margin:0;padding-left:18px}.help li+li{margin-top:4px}.tabs{border-bottom:1px solid var(--hairline);scrollbar-width:none;gap:4px;display:flex;overflow-x:auto}.tabs button{min-height:44px;color:var(--ink-2);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-bottom:2px solid #0000;flex:none;margin-bottom:-1px;padding:0 14px}.tabs button:hover{color:var(--ink)}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.tab-panel{padding-top:16px}.tab-panel>.sub{color:var(--ink-2);max-width:62rem;margin:0 0 12px}.tab-panel:focus-visible{outline:2px solid var(--focus);outline-offset:4px}.subhead{margin:24px 0 8px;font-size:15px}.mark-bar{background:var(--selected);border-radius:8px;margin-bottom:12px;padding:12px 14px 2px}.mark-bar p{margin:0 0 10px}.btn.quiet{text-underline-offset:3px;background:0 0;border-color:#0000;text-decoration:underline}.key-mark{color:var(--ink-2);margin-left:6px;font-size:12px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.race-plan{max-width:34rem;margin:4px 0 12px}.goal-summary .race-result{flex-basis:100%;margin-top:4px}.plan-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px 16px;margin-bottom:12px;display:flex}.plan-head h3{margin:0 0 4px;font-size:16px}.plan-head .sub{color:var(--ink-2);max-width:40rem;margin:0}.plan-actions{flex-wrap:wrap;gap:8px;display:flex}.plan .confirm{margin-bottom:12px}.plan-calendar{border-top:1px solid var(--hairline)}.plan-weekdays,.plan-week{grid-template-columns:7.5rem repeat(7,minmax(0,1fr));gap:4px;display:grid}.plan-weekdays{color:var(--ink-muted);padding:6px 0;font-size:12px}.plan-weeks,.plan-days{margin:0;padding:0;list-style:none}.plan-week{border-bottom:1px solid var(--hairline);padding:4px 0}.plan-days{display:contents}.plan-week-head{flex-direction:column;gap:2px;margin:0;padding:6px 0;font-size:13px;font-weight:600;display:flex}.week-phase{border:1px solid var(--axis);color:var(--ink-2);vertical-align:1px;white-space:nowrap;border-radius:4px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:600;line-height:18px;display:inline-block}.week-phase.phase-race{border-color:var(--ink);background:var(--ink);color:var(--surface)}.week-phase.phase-deload{border-style:dashed}.plan-week-range{color:var(--ink-muted);font-size:12px;font-weight:400}.plan-week-km{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400}.plan-week-km strong{color:var(--ink);font-size:18px}.plan-day{border-radius:6px;flex-direction:column;gap:4px;min-width:0;min-height:5.5rem;padding:4px;display:flex}.plan-day.outside{background:0 0}.plan-day.today{background:var(--selected)}.plan-date{color:var(--ink-muted);font-variant-numeric:tabular-nums;font-size:12px}.plan-date-weekday{display:none}.plan-today{color:var(--ink);font-weight:600}.plan-session{border:1px solid var(--plan-edge,var(--hairline));background:var(--plan-fill,var(--surface));width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;padding:6px;font-size:12px;display:flex}.plan-session:hover{background-image:linear-gradient(var(--hover), var(--hover))}.plan-session>span{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}.plan-session-type{font-weight:600}.type-easy{--plan-fill:var(--plan-easy);--plan-edge:var(--plan-easy-edge)}.type-long-run{--plan-fill:var(--plan-long-run);--plan-edge:var(--plan-long-run-edge)}.type-race-pace{--plan-fill:var(--plan-race-pace);--plan-edge:var(--plan-race-pace-edge)}.type-tempo{--plan-fill:var(--plan-tempo);--plan-edge:var(--plan-tempo-edge)}.type-threshold{--plan-fill:var(--plan-threshold);--plan-edge:var(--plan-threshold-edge)}.type-intervals{--plan-fill:var(--plan-intervals);--plan-edge:var(--plan-intervals-edge)}.type-strength{--plan-fill:var(--plan-strength);--plan-edge:var(--plan-strength-edge)}.type-other{--plan-fill:var(--plan-other);--plan-edge:var(--plan-other-edge)}.type-race{--plan-fill:var(--ink);--plan-edge:var(--ink)}.plan-session.type-race,.plan-session.type-race .plan-session-km{color:var(--surface)}.plan-session.type-rest{--plan-fill:transparent;border-style:dashed}.plan-session.type-easy .plan-session-type,.plan-session.type-strength .plan-session-type,.plan-session.type-rest .plan-session-type{font-weight:400}.plan-session.type-rest .plan-session-type{color:var(--ink-2)}.plan-session-km{color:var(--ink-2);font-variant-numeric:tabular-nums}.plan-session.static{cursor:default}.plan-session.static:hover{background-image:none}.plan-result{color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:12px}a.plan-result{text-decoration:none}a.plan-result:hover{text-decoration:underline}.plan-result.done{color:var(--ink);font-weight:600}.plan-result.missed{color:var(--critical)}.plan-result.rest{color:var(--ink-muted)}.plan-result.unplanned{border:1px dashed var(--axis);border-radius:6px;padding:6px}.plan-session.missed{opacity:.55}.plan-add{min-height:28px;color:var(--ink-muted);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px dashed #0000;border-radius:6px;padding:0 6px;font-size:12px}.plan-day:hover .plan-add,.plan-add:focus-visible{border-color:var(--hairline);color:var(--ink-2)}@media (hover:hover){.plan-add.more{opacity:0}.plan-day:hover .plan-add.more,.plan-add.more:focus-visible{opacity:1}}@media (hover:none){.plan-add{border-color:var(--hairline)}}.modal{border:1px solid var(--hairline);background:var(--page);width:min(46rem,100vw - 32px);max-height:calc(100vh - 32px);color:var(--ink);border-radius:8px;padding:20px}.modal::backdrop{background:#0b0b0b66}.modal h2{margin:0 0 16px;font-size:18px}.modal .select{font:inherit;color:var(--ink);font-size:16px}.steps{border:0;min-width:0;margin:20px 0 0;padding:0}.steps legend{padding:0;font-weight:600}.steps-hint{color:var(--ink-2);margin:4px 0 12px;font-size:13px}.step-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.step-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.input.small{width:4.5rem;font-size:16px}.with-unit{align-items:center;gap:4px;display:inline-flex}.unit{color:var(--ink-muted);font-size:13px}.unit.open{min-width:6rem}.repeat{border:1px solid var(--hairline);border-radius:8px;flex-direction:column;align-items:flex-start;gap:8px;padding:10px;display:flex}.repeat-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;width:100%;display:flex}.repeat-head label{align-items:center;gap:6px;font-weight:600;display:inline-flex}.step-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.plan-totals{color:var(--ink-2);font-variant-numeric:tabular-nums;margin:12px 0 0;font-size:14px}.plan-totals strong{color:var(--ink)}.field.note{margin-top:16px}.input.textarea{resize:vertical;width:100%;min-height:auto;padding:8px 10px;font-size:16px}.modal .notice{margin:12px 0 0}.modal .confirm{margin-top:16px}.push-right{margin-left:auto}.pattern-editor .sub{color:var(--ink-2);margin:-8px 0 16px;font-size:14px}.pattern-days{border-top:1px solid var(--hairline);margin:0;padding:0;list-style:none}.pattern-days li{border-bottom:1px solid var(--hairline);grid-template-columns:7rem minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px 0;display:grid}.pattern-day{font-weight:600}.pattern-session{font-size:14px}.pattern-steps{color:var(--ink-2);font-size:12px;display:block}.pattern-session .placeholder{color:var(--ink-muted)}@media (width<=700px){.plan-weekdays{display:none}.plan-week{grid-template-columns:minmax(0,1fr);padding:8px 0}.plan-week-head{flex-flow:wrap;align-items:baseline;gap:4px 10px}.plan-week-range{margin-right:auto}.plan-week-km+.plan-week-km:before{content:"· "}.plan-days{flex-direction:column;gap:4px;display:flex}.plan-day{grid-template-columns:4rem minmax(0,1fr) 44px;align-items:start;gap:4px 8px;min-height:0;display:grid}.plan-day>:not(.plan-date){grid-column:2/-1}.plan-day .plan-session{grid-column:2}.plan-day .plan-add.more{text-align:center;grid-area:1/3;padding:0}.plan-day.outside{display:none}.plan-date{grid-row:1/span 3;padding-top:6px}.plan-date-weekday{display:inline}.plan-session{flex-flow:wrap;align-items:center;gap:2px 8px;min-height:44px;font-size:14px}.plan-add{min-height:44px;font-size:14px}.plan-result{font-size:13px}.planned-head{grid-template-columns:minmax(0,1fr)}a.plan-result{align-items:center;min-height:36px;display:flex}.plan-result.unplanned{min-height:44px}.modal{padding:16px}.step-row{border-bottom:1px solid var(--hairline);grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding-bottom:8px;display:grid}.step-row .btn.icon-btn{justify-self:end}.pattern-days li{grid-template-columns:minmax(0,1fr) auto}.pattern-day{grid-column:1/-1}}.templates{flex-direction:column;gap:20px;min-width:0;display:flex}.templates-back{align-self:flex-start}.templates>.section,.templates .load{margin:0}.templates>.preview-pace{margin-bottom:-8px}.templates-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px 24px;display:flex}.templates-head h2,.template-header h2{margin:0 0 4px}.templates-head .sub{color:var(--ink-2);max-width:62rem;margin:0}.template-list{border-top:1px solid var(--hairline);margin:0;padding:0;list-style:none}.template-list a{border-bottom:1px solid var(--hairline);color:inherit;flex-wrap:wrap;align-items:baseline;gap:2px 12px;padding:12px 8px;text-decoration:none;display:flex}.template-list a:hover{background:var(--hover)}.template-meta{color:var(--ink-2);margin:0;font-size:13px}.template-shared{border:1px solid var(--axis);border-radius:4px;margin-left:8px;padding:0 6px;font-size:11px;font-weight:600}.template-description{white-space:pre-line;max-width:62rem;margin:8px 0 0}.template-header .goal-actions{margin-top:12px}.share-panel{background:var(--surface);border:1px solid var(--hairline);border-radius:8px;padding:16px 20px}.share-panel h3{margin:0 0 2px;font-size:15px}.share-panel .sub{color:var(--ink-2);margin:0 0 12px;font-size:13px}.share-panel .confirm{margin-top:12px}.share-link{flex-wrap:wrap;gap:8px;display:flex}.share-link .input{flex:16rem;min-width:0}.preview-pace{color:var(--ink-2);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;font-size:13px;display:flex}.phase-chip{appearance:none;cursor:pointer;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%23888'/%3E%3C/svg%3E") right 5px center no-repeat;align-self:flex-start;max-width:100%;margin-left:0;padding-right:16px;font-family:inherit}.phase-chip.phase-race{background-color:var(--ink)}.phase-chip.phase-none{color:var(--ink-muted);border-style:dashed;font-weight:400}.phase-chip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.template-preview p{color:var(--ink-2);max-width:62rem;margin:16px 0 0}@media (width<=560px){.share-panel{padding:16px}.share-link .input{flex-basis:100%}.share-link .btn{flex:auto}}.plan-fold-all{justify-content:flex-end;display:flex}.plan-fold{min-height:24px;color:var(--ink-muted);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:0;font-size:12px;font-weight:400;text-decoration:underline}.plan-fold:hover{color:var(--ink)}.plan-week.folded .plan-week-head{flex-flow:wrap;grid-column:1/-1;align-items:baseline;gap:2px 12px;padding-bottom:2px}.plan-week.folded .plan-fold{margin-left:auto}.plan-strip{color:var(--ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;grid-column:2/-1;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:0 0 4px;display:grid}.plan-strip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.plan-strip-day,.plan-strip-day.plan-session{border:1px solid var(--plan-edge,var(--hairline));background:var(--plan-fill,none);white-space:nowrap;min-width:0;min-height:28px;cursor:inherit;border-radius:4px;flex-direction:row;align-items:baseline;gap:4px;padding:5px 6px;font-size:12px;display:flex;overflow:hidden}.plan-strip:hover .plan-strip-day{background-image:linear-gradient(var(--hover), var(--hover))}.plan-strip-day.empty{border-color:var(--hairline);background:0 0}.plan-strip-day.outside{visibility:hidden}.plan-strip-day.unplanned{border:1px dashed var(--axis);background:0 0}.plan-strip-day.today{box-shadow:inset 0 0 0 2px var(--focus)}.plan-strip-what{text-overflow:ellipsis;font-variant-numeric:tabular-nums;overflow:hidden}.plan-strip-date{color:var(--ink-muted);display:none}.plan-strip-day.type-race .plan-strip-date{color:var(--surface)}@media (width<=700px){.plan-strip{grid-column:1/-1;gap:3px}.plan-strip-day,.plan-strip-day.plan-session{flex-direction:column;align-items:center;gap:0;min-height:44px;padding:4px 2px;font-size:11px}.plan-strip-date{display:block}.plan-fold{min-height:32px}.plan-week.folded .plan-fold{display:none}}@media (width<=560px){.topbar{grid-template-columns:minmax(0,1fr) auto;row-gap:8px;display:grid}.topbar-main{display:contents}.topbar h1{grid-area:1/1}.topbar-actions{grid-area:1/2}.views{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.views a{justify-content:center}.tabs{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}}
