:root{--bg:#f4f6f7;--panel:#fff;--panel-2:#f6f8f9;--panel-3:#eef1f3;--border:#e6eaed;--border-bright:#d6dce0;--border-2:#d6dce0;--border-soft:#eef1f3;--hover:#121a220a;--text:#161b20;--text-dim:#5a6670;--text-faint:#8a949d;--text-ghost:#b3bbc2;--coral:#db5b34;--run:#db5b34;--blue:#2f72c9;--bike:#2f72c9;--go:#0f9d6c;--swim:#0f9d6c;--amber:#b9790f;--strength:#b9790f;--red:#cf3f3f;--injury:#cf3f3f;--go-soft:#0f9d6c1a;--amber-soft:#b9790f1f;--run-fill:#db5b3417;--bike-fill:#2f72c917;--swim-fill:#0f9d6c1a;--strength-fill:#b9790f1c;--injury-fill:#cf3f3f14;--font-display:"Archivo", system-ui, sans-serif;--font-sans:"Archivo", system-ui, sans-serif;--sans:"Archivo", system-ui, sans-serif;--font-mono:"Spline Sans Mono", ui-monospace, monospace;--mono:"Spline Sans Mono", ui-monospace, monospace;--r:14px;--r-card:14px;--r-mid:10px;--r-sm:8px;--r-pill:999px;--shadow:0 1px 2px #1018200a, 0 6px 20px -12px #1018201f;--shadow-sm:0 1px 2px #1018200d;--gut:16px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0c0f0d;--panel:#141916;--panel-2:#19201c;--panel-3:#1f2723;--border:#222a26;--border-bright:#2c352f;--border-2:#2c352f;--border-soft:#1a211d;--hover:#ffffff0a;--text:#e7ede9;--text-dim:#8c988f;--text-faint:#5b675e;--text-ghost:#3c453f;--coral:#e87a52;--run:#e87a52;--blue:#5aa9e6;--bike:#5aa9e6;--go:#3ddc97;--swim:#3ddc97;--amber:#efb045;--strength:#efb045;--red:#e35d5d;--injury:#e35d5d;--go-soft:#3ddc971f;--amber-soft:#efb04524;--run-fill:#e87a5221;--bike-fill:#5aa9e621;--swim-fill:#3ddc9721;--strength-fill:#efb04521;--injury-fill:#e35d5d21;--shadow:0 1px 0 #0006, 0 8px 24px -12px #0009;--shadow-sm:0 1px 0 #0000004d;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-display);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;padding-bottom:env(safe-area-inset-bottom);font-size:15px;line-height:1.5;transition:background-color .15s,color .15s}h1,h2,h3,h4{letter-spacing:-.02em;margin:0;font-weight:700;line-height:1.1}button{cursor:pointer;color:inherit;font-family:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"tnum" 1}.num{font-family:var(--font-mono);font-feature-settings:"tnum" 1;letter-spacing:-.01em}.c-run{color:var(--coral)}.c-bike{color:var(--blue)}.c-swim{color:var(--go)}.c-strength{color:var(--amber)}.c-brick{color:var(--text)}.c-other{color:var(--text-dim)}.c-injury{color:var(--red)}.bg-run{background:var(--coral)}.bg-bike{background:var(--blue)}.bg-swim{background:var(--go)}.bg-strength{background:var(--amber)}.bg-brick{background:var(--text)}.bg-other{background:var(--text-dim)}.panel,.countdown,.chart-panel{box-shadow:var(--shadow)}.label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-size:10.5px;font-weight:500}.section-label{align-items:center;gap:10px;margin:24px 2px 11px;display:flex}.section-label:first-child{margin-top:0}.section-label .rule{background:var(--border);flex:1;height:1px}.section-label .count{font-family:var(--font-mono);color:var(--text-ghost);font-size:10.5px}.pill{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:var(--r-pill);border:1px solid var(--border-bright);color:var(--text-dim);white-space:nowrap;background:0 0;align-items:center;gap:5px;padding:3px 9px;font-size:10.5px;font-weight:500;display:inline-flex}.pill .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.pill .ic{width:11px;height:11px}.pill.done{color:var(--go);border-color:var(--go-soft);background:var(--swim-fill)}.pill.skipped{color:var(--text-faint);border-color:var(--border)}.pill.today{color:var(--text);border-color:var(--border-bright);background:var(--panel-3)}.pill.sev-active{color:var(--injury);border-color:var(--injury-fill);background:var(--injury-fill)}.pill.sev-improving{color:var(--strength);border-color:var(--strength-fill);background:var(--strength-fill)}.pill.sev-monitoring{color:var(--bike);border-color:var(--bike-fill);background:var(--bike-fill)}.pill.sev-resolved{color:var(--text-faint);border-color:var(--border)}.pill.z1,.pill.z2{color:var(--swim);border-color:var(--swim-fill)}.pill.z3{color:var(--strength);border-color:var(--strength-fill)}.pill.z4,.pill.z5{color:var(--run);border-color:var(--run-fill)}.pill.flag{color:var(--injury);border-color:var(--injury-fill);background:var(--injury-fill)}.disc-dot{border-radius:2px;flex:none;width:8px;height:8px}.mgrid{background:var(--border);border:1px solid var(--border);border-radius:var(--r-mid);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.mcell{background:var(--panel-2);padding:10px 11px}.mcell .mk{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-size:9.5px}.mcell .mv{font-family:var(--font-mono);letter-spacing:-.02em;margin-top:4px;font-size:16px}.mcell .mv small{color:var(--text-faint);margin-left:2px;font-size:10.5px}@media (width<=560px){.mgrid{grid-template-columns:repeat(3,1fr)}}.coach-note{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r-mid);gap:10px;margin-top:12px;padding:12px;display:flex}.coach-note .cn-av{background:var(--panel-3);border:1px solid var(--border-bright);width:22px;height:22px;color:var(--go);font-family:var(--font-mono);border-radius:50%;flex:none;place-items:center;margin-top:1px;font-size:10px;display:grid}.coach-note .cn-body{flex:1;min-width:0}.coach-note .cn-who{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-bottom:5px;font-size:10px}.coach-note .cn-text{color:var(--text);font-size:13px;line-height:1.55}.coach-note.amber .cn-av{color:var(--strength)}.coach-note.amber .cn-who{color:var(--strength);opacity:.85}.fuel-inline{border-radius:var(--r-mid);background:var(--strength-fill);border:1px solid var(--strength-fill);align-items:center;gap:9px;margin-top:11px;padding:10px 12px;display:flex}.fuel-inline .ic{width:16px;height:16px;color:var(--strength);flex:none}.fuel-inline .ft{color:var(--text);font-size:12.5px;line-height:1.5}.fuel-inline .ft b{color:var(--strength);font-family:var(--font-mono);font-weight:500}.countdown{border:1px solid var(--border);border-radius:var(--r-card);background:linear-gradient(110deg, var(--run-fill), transparent 55%), var(--panel);flex-direction:column;margin-bottom:16px;display:flex;overflow:hidden}.cd-row{align-items:stretch;display:flex}.cd-main{flex-direction:column;flex:1;justify-content:center;gap:5px;min-width:0;padding:14px 16px;display:flex}.cd-main .cd-k{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-size:10px}.cd-main .cd-goal{letter-spacing:-.01em;font-size:15px;font-weight:600}.cd-main .cd-goal .accent{color:var(--run)}.cd-days{text-align:right;border-left:1px solid var(--border);background:var(--panel-2);flex-direction:column;flex:none;justify-content:center;padding:12px 18px;display:flex}.cd-days .n{font-family:var(--font-mono);letter-spacing:-.03em;color:var(--text);font-size:30px;line-height:1}.cd-days .u{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--text-faint);margin-top:4px;font-size:9.5px}.cd-track{background:var(--border-soft);height:4px;position:relative}.cd-track .fill{background:linear-gradient(90deg, var(--run), var(--strength));position:absolute;inset:0 auto 0 0}.cd-foot{border-top:1px solid var(--border-soft);justify-content:space-between;align-items:center;gap:10px;padding:7px 16px 9px;display:flex}.cd-foot .cf-k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-ghost);font-size:9.5px}.prog{background:var(--border-soft);border-radius:999px;height:5px;overflow:hidden}.prog .f{border-radius:999px;height:100%}.chips{flex-wrap:wrap;gap:7px;display:flex}.chip{font-family:var(--font-mono);letter-spacing:.03em;border-radius:var(--r-pill);background:var(--panel);border:1px solid var(--border);color:var(--text-dim);align-items:center;gap:7px;min-height:40px;padding:8px 12px;font-size:11px;display:inline-flex}.chip .disc-dot{border-radius:50%;width:7px;height:7px}.chip.on{color:var(--text);background:var(--panel-3);border-color:var(--border-bright)}.chip:hover:not(.on){color:var(--text)}.chip .cnt{color:var(--text-faint);font-size:10px}.rest-state{border:1px dashed var(--border-bright);border-radius:var(--r-card);text-align:center;background:var(--panel);padding:26px 18px}.rest-state .ic{width:30px;height:30px;color:var(--text-faint);margin-bottom:10px}.rest-state .rt{font-size:15px;font-weight:600}.rest-state .rs{font-family:var(--font-mono);color:var(--text-faint);margin-top:5px;font-size:11.5px;line-height:1.5}.wk{background:var(--panel);border:1px solid var(--border);border-radius:var(--r-mid);box-shadow:var(--shadow-sm);overflow:hidden}.wk+.wk{margin-top:7px}.wk-head{text-align:left;width:100%;color:var(--text);background:0 0;border:none;align-items:center;gap:13px;padding:12px 13px 12px 0;display:flex}.wk-head:hover{background:var(--hover)}.wk-bar{background:0 0;flex:none;align-self:stretch;width:4px;margin:-12px 0}.wk-num{border-radius:var(--r-sm);background:var(--panel-2);border:1px solid var(--border-bright);flex-direction:column;flex:none;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.wk-num .wn-k{font-family:var(--font-mono);letter-spacing:.1em;color:var(--text-ghost);text-transform:uppercase;font-size:8px}.wk-num .wn-v{font-family:var(--font-mono);color:var(--text);font-size:17px;line-height:1}.wk-mid{flex:1;min-width:0}.wk-focus{flex-wrap:wrap;align-items:center;gap:9px;font-size:13.5px;font-weight:600;display:flex}.wk-dates{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.02em;margin-top:3px;font-size:10.5px;display:block}.wk-lr{text-align:right;flex-direction:column;flex:none;align-items:flex-end;display:flex}.wk-lr .lr-v{font-family:var(--font-mono);letter-spacing:-.02em;font-size:18px}.wk-lr .lr-v small{color:var(--text-faint);font-size:10px}.wk-lr .lr-k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-ghost);font-size:8.5px}.wk.deload{background:linear-gradient(90deg, var(--strength-fill), transparent 40%), var(--panel)}.wk.deload .wk-bar{background:var(--strength)}.wk.race{background:linear-gradient(90deg, var(--run-fill), transparent 45%), var(--panel);border-color:var(--run-fill)}.wk.race .wk-bar{background:var(--run)}.wk.current{box-shadow:inset 0 0 0 1px var(--go), var(--shadow-sm)}.wk.current .wk-bar{background:var(--swim)}.wk-body{border-top:1px solid var(--border-soft);padding:4px 13px 13px}.wk-chev{width:15px;height:15px;color:var(--text-ghost);flex:none;margin-right:13px;transition:transform .2s}.wk.open .wk-chev{transform:rotate(180deg)}.inj{border:1px solid var(--border);border-radius:var(--r-card);background:var(--panel);box-shadow:var(--shadow-sm);overflow:hidden}.inj+.inj{margin-top:11px}.inj.active-inj{border-color:var(--injury-fill);background:linear-gradient(180deg, var(--injury-fill), transparent 30%), var(--panel)}.inj-head{align-items:flex-start;gap:13px;padding:15px;display:flex}.inj-ic{border:1px solid var(--border-bright);background:var(--panel-2);border-radius:10px;flex:none;place-items:center;width:38px;height:38px;display:grid}.inj-ic .ic{width:20px;height:20px}.inj-main{flex:1;min-width:0}.inj-title{letter-spacing:-.01em;font-size:15.5px;font-weight:700}.inj-loc{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.03em;margin-top:3px;font-size:11px}.inj-meta{font-family:var(--font-mono);color:var(--text-faint);flex-wrap:wrap;align-items:center;gap:8px;margin-top:9px;font-size:10.5px;display:flex}.sev-meter{align-items:center;gap:9px;margin:10px 0 2px;display:flex}.sev-meter .sm-track{background:var(--border-soft);border-radius:999px;flex:1;height:6px;position:relative;overflow:hidden}.sev-meter .sm-fill{border-radius:999px;position:absolute;inset:0 auto 0 0}.sev-meter .sm-lab{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);font-size:10px}.inj-detail{border-top:1px solid var(--border-soft);padding:2px 15px 14px}.ftable{border:1px solid var(--border);border-radius:var(--r-card);background:var(--panel);box-shadow:var(--shadow-sm);overflow:hidden}.ftable .fr{border-bottom:1px solid var(--border-soft);grid-template-columns:1.1fr 1fr 1fr;display:grid}.ftable .fr:last-child{border-bottom:none}.ftable .fr.head{background:var(--panel-2)}.ftable .fc{padding:12px 13px}.ftable .fr.head .fc{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-size:9.5px}.ftable .fc .big{font-family:var(--font-mono);letter-spacing:-.01em;font-size:15px}.ftable .fc .big small{color:var(--text-faint);font-size:10px}.ftable .fc .dur{font-size:13px;font-weight:600}.ftable .fc .durn{font-family:var(--font-mono);color:var(--text-faint);margin-top:2px;font-size:10.5px}.fuel-src{gap:8px;display:grid}.fsrc{border:1px solid var(--border);border-radius:var(--r-mid);background:var(--panel);align-items:center;gap:12px;padding:11px 13px;display:flex}.fsrc .fs-ic{background:var(--panel-2);border:1px solid var(--border-bright);border-radius:8px;flex:none;place-items:center;width:30px;height:30px;display:grid}.fsrc .fs-ic .ic{width:16px;height:16px;color:var(--strength)}.fsrc .fs-name{font-size:13.5px;font-weight:600}.fsrc .fs-note{font-family:var(--font-mono);color:var(--text-faint);margin-top:2px;font-size:10.5px}.fsrc .fs-val{font-family:var(--font-mono);color:var(--text-dim);text-align:right;margin-left:auto;font-size:12.5px}.review{border:1px solid var(--border);border-radius:var(--r-card);background:var(--panel);box-shadow:var(--shadow-sm);overflow:hidden}.review+.review{margin-top:13px}.rv-head{border-bottom:1px solid var(--border-soft);flex-wrap:wrap;align-items:center;gap:12px;padding:15px;display:flex}.rv-badge{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;border-radius:var(--r-sm);flex:none;padding:4px 9px;font-size:9.5px}.rv-badge.week{color:var(--swim);background:var(--swim-fill);border:1px solid var(--swim-fill)}.rv-badge.month{color:var(--bike);background:var(--bike-fill);border:1px solid var(--bike-fill)}.rv-title{font-size:15px;font-weight:700}.rv-range{font-family:var(--font-mono);color:var(--text-faint);margin-top:2px;font-size:10.5px}.rv-stats{gap:18px;margin-left:auto;display:flex}.rv-stat{text-align:right}.rv-stat .v{font-family:var(--font-mono);letter-spacing:-.02em;font-size:16px}.rv-stat .k{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin-top:2px;font-size:8.5px}.rv-body{padding:6px 15px 15px}.rv-block{border-bottom:1px solid var(--border-soft);padding:13px 0}.rv-block:last-child{border-bottom:none}.rv-block .rb-k{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;align-items:center;gap:8px;margin-bottom:7px;font-size:10px;display:flex}.rv-block .rb-k .ic{width:14px;height:14px}.rv-block.good .rb-k{color:var(--go)}.rv-block.improve .rb-k{color:var(--strength)}.rv-block.focus .rb-k{color:var(--bike)}.rv-block .rb-text{color:var(--text);font-size:13px;line-height:1.6}.chart-wrap{border:1px solid var(--border);border-radius:var(--r-card);background:radial-gradient(700px 300px at 80% -20%, var(--run-fill), transparent 60%), var(--panel);box-shadow:var(--shadow);padding:16px 16px 8px;position:relative}.chart-head{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px;display:flex}.chart-head .ch-title{font-size:15px;font-weight:600}.chart-head .ch-sub{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.03em;margin-top:3px;font-size:10.5px}.chart-legend{flex-wrap:wrap;gap:16px;padding:8px 2px 6px;display:flex}.chart-legend .lg{font-family:var(--font-mono);color:var(--text-dim);align-items:center;gap:7px;font-size:10.5px;display:flex}.chart-legend .lg .sw{border-radius:2px;width:12px;height:3px}.chart-legend .lg .sw.dot{border-radius:50%;width:9px;height:9px}.chart-legend .lg .sw.ring{width:9px;height:9px;box-shadow:inset 0 0 0 1.5px var(--swim);background:0 0;border-radius:50%}.log-foot{font-family:var(--font-mono);text-align:center;color:var(--text-ghost);letter-spacing:.1em;text-transform:uppercase;padding:22px 0 6px;font-size:10.5px}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}::selection{background:var(--go-soft)}:focus-visible{outline:2px solid var(--go);outline-offset:2px}
