*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font-body);-webkit-font-smoothing:antialiased}button,select,input{font:inherit}button,a,select{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}svg{display:block}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button{border:0}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-display);line-height:1.13}h1{font-size:clamp(34px,7vw,56px);font-weight:600;letter-spacing:-.035em;text-wrap:balance}h2{font-size:24px;letter-spacing:-.025em;font-weight:600}h3{font-size:19px;font-weight:500}p{color:var(--muted);line-height:1.6}.eyebrow,.small-label{font-size:11px;letter-spacing:.13em;font-weight:700;text-transform:uppercase;color:var(--muted)}.eyebrow.accent{color:var(--accent-text)}.num{font-variant-numeric:tabular-nums;letter-spacing:-.035em;font-family:var(--font-display)}.muted{color:var(--muted)}.accent-text{color:var(--accent-text)}.masthead{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;border-bottom:1px solid var(--line);background:var(--bg);gap:16px}.brand{display:flex;align-items:center;gap:9px;font:600 18px/1.05 var(--font-display);letter-spacing:.04em}.brand svg{width:34px;height:34px;color:var(--accent-fill)}.brand-sub{display:block;font:600 9px/1 var(--font-body);letter-spacing:.18em;color:var(--muted);margin-top:7px}.header-actions{display:flex;align-items:center;gap:8px}.timezone{display:none;color:var(--muted);font-size:12px}.avatar{width:33px;height:33px;border-radius:50%;display:grid;place-items:center;background:var(--surface-2);font-size:11px;font-weight:700}.icon-button{width:44px;height:44px;border-radius:50%;background:transparent;color:var(--muted-strong);display:grid;place-items:center}.icon-button svg{width:21px;height:21px}.icon-button:hover{background:var(--surface-2)}#main{width:100%;max-width:1180px;margin:0 auto;padding:30px 22px 20px;outline:none}.page-heading{margin-bottom:26px}.page-heading .eyebrow{margin-bottom:9px}.page-heading p{margin-top:10px;font-size:13px}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:15px}.phase{font-size:11px;font-weight:600;border-radius:5px;padding:5px 8px;background:var(--accent-soft);color:var(--accent-text);white-space:nowrap}.grid{display:grid;grid-auto-flow:dense;gap:22px}.section{margin-top:32px}#main .section{padding:0}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.text-link{font-size:12px;color:var(--accent-text);display:inline-flex;align-items:center;min-height:44px;gap:4px;font-weight:600}.text-link svg{width:14px;height:14px}.panel{padding:24px;background:var(--surface);border-radius:var(--radius);min-width:0}.session-panel{position:relative;overflow:hidden;background:var(--surface);padding:25px;border-radius:var(--radius);border-top:3px solid var(--accent-fill)}.session-top{display:flex;justify-content:space-between;align-items:center;gap:10px}.session-icon{width:37px;height:37px;border-radius:50%;background:var(--accent-soft);display:grid;place-items:center;color:var(--accent-text)}.session-icon svg{width:20px;height:20px}.session-panel h2{font-size:30px;margin-top:18px;max-width:90%}.session-description{font-size:14px;margin-top:12px}.big-distance{font-size:66px;font-weight:500;line-height:1;letter-spacing:-.05em;margin:23px 0}.big-distance span{font-size:20px;letter-spacing:0;color:var(--muted);margin-left:8px}.metric-row{display:flex;gap:22px;flex-wrap:wrap}.metric{flex:1;min-width:85px}.metric b{display:block;font-size:17px;font-weight:500;margin-top:5px;color:var(--ink)}.session-notes{margin-top:22px;border-top:1px solid var(--line);padding-top:17px;font-size:13px;line-height:1.7;color:var(--muted-strong)}.session-notes p{color:var(--muted-strong);margin-bottom:10px}.primary{min-height:48px;border-radius:10px;display:flex;align-items:center;justify-content:center;gap:9px;background:var(--accent-fill);color:var(--accent-on-fill);font-size:14px;font-weight:700;width:100%;margin-top:19px;transition:background .2s,transform .2s}.primary:hover{transform:translateY(-2px)}.primary svg{width:19px;height:19px}.primary.completed{background:var(--success-soft);color:var(--success)}.save-note{font-size:10px;text-align:center;color:var(--muted);margin-top:10px}.gym-row{display:flex;gap:14px;align-items:center;padding:21px 0;border-bottom:1px solid var(--line)}.gym-row .session-icon{color:var(--muted-strong);background:var(--surface-2);flex:none}.gym-row h3{margin-top:3px}.gym-row p{font-size:12px;margin-top:4px}.gym-row .icon-button{margin-left:auto;flex:none}.coach-inline{padding:18px 0;display:flex;gap:12px}.coach-inline svg{width:20px;height:20px;flex:none;color:var(--accent-text);margin-top:3px}.coach-inline p{font-size:13px}.coach-inline strong{display:block;color:var(--ink);font-weight:500;margin-bottom:4px}.tomorrow{display:flex;align-items:center;justify-content:space-between;padding:20px 0;border-bottom:1px solid var(--line);gap:20px}.tomorrow h3{margin:5px 0;font-size:20px}.tomorrow p{font-size:12px}.tomorrow .num{font-size:31px;white-space:nowrap}.tomorrow .num span{font-size:12px;color:var(--muted)}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:20px 0 14px}.mini-day{color:var(--muted);background:transparent;border-radius:10px;text-align:center;padding:8px 0;min-height:64px;font-size:10px}.mini-day strong{font-family:var(--font-display);display:block;font-size:16px;font-weight:500;color:var(--ink);margin:4px 0}.mini-day .dot{width:4px;height:4px;background:var(--line-strong);border-radius:100%;display:block;margin:0 auto}.mini-day.current{background:var(--accent-soft);color:var(--accent-text)}.mini-day.current strong{color:var(--accent-text)}.mini-day.done .dot{background:var(--success)}.progress-track{height:5px;background:var(--surface-2);border-radius:5px;overflow:hidden;margin:10px 0}.progress-track span{display:block;height:100%;background:var(--accent-fill);border-radius:5px}.between{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted)}.between strong{color:var(--ink);font-weight:500}.goal-hero{background:var(--surface);border-radius:var(--radius);padding:25px;position:relative;overflow:hidden}.goal-hero h2{font-size:32px;margin:9px 0}.goal-numbers{display:flex;align-items:center;gap:20px;margin:24px 0 19px}.goal-number strong{font-size:47px;font-weight:500;line-height:1.1;display:block}.goal-arrow{color:var(--muted);width:22px;flex:none}.goal-number span{font-size:11px;color:var(--muted);display:block;margin-top:6px}.goal-target strong{color:var(--accent-text)}.goal-bottom{display:flex;gap:25px;padding-top:16px;border-top:1px solid var(--line)}.goal-bottom b{font-family:var(--font-display);font-weight:500;font-size:23px;display:block}.goal-note{font-size:12px;margin-top:17px}.goal-ring-wrap{display:flex;align-items:center;gap:23px;margin:22px 0}.ring{position:relative;width:150px;flex:none}.ring svg{width:100%;transform:rotate(-90deg)}.ring circle{fill:none;stroke-width:9}.ring-bg{stroke:var(--surface-2)}.ring-value{stroke:var(--accent-fill);stroke-linecap:round}.ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ring-label b{font:500 29px var(--font-display);letter-spacing:-.05em}.ring-label span{font-size:10px;color:var(--muted)}.ring-side strong{font:500 26px var(--font-display);display:block}.ring-side p{font-size:11px;margin:4px 0 13px}.ring-side .small-label{font-size:9px}.stat-lines{border-top:1px solid var(--line);padding-top:6px}.stat-line{display:flex;justify-content:space-between;gap:16px;padding:11px 0;font-size:12px;color:var(--muted)}.stat-line strong{color:var(--ink);font-weight:500;font-size:14px}.countdown{display:flex;gap:16px;align-items:center;border-bottom:1px solid var(--line);padding:18px 0}.countdown .count-number{font:500 35px/1 var(--font-display);color:var(--accent-text);width:63px;text-align:center}.countdown .count-number span{font:500 10px var(--font-body);color:var(--muted);display:block;letter-spacing:.1em;margin-top:5px}.countdown h3{font-size:18px}.countdown p{font-size:12px;margin-top:4px}.calendar-toolbar{display:flex;align-items:center;gap:7px;margin-bottom:18px}.calendar-toolbar .icon-button{background:var(--surface);border-radius:10px;flex:none}.calendar-toolbar select{width:100%;min-height:46px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:0 10px;font-size:13px}.week-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:22px}.calendar-day{background:var(--surface-2);color:var(--muted);border-radius:10px;text-align:center;padding:9px 0;min-height:98px;font-size:10px;min-width:0;transition:background .2s}.calendar-day b{display:block;color:var(--ink);font:500 23px var(--font-display);margin:7px 0}.calendar-day span{display:block;font-size:9px;white-space:nowrap}.calendar-day.selected{background:var(--accent-fill);color:var(--accent-on-fill)}.calendar-day.selected b{color:var(--accent-on-fill)}.calendar-day.quality:not(.selected),.calendar-day.race:not(.selected){background:var(--accent-soft);color:var(--accent-text)}.calendar-day.today{box-shadow:inset 0 0 0 1px var(--accent)}.calendar-day.empty{background:transparent;opacity:.5;cursor:default}.calendar-legend{display:flex;gap:15px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin:16px 0 0}.legend-dot{width:7px;height:7px;border-radius:2px;background:var(--accent-fill);display:inline-block;margin-right:5px}.legend-dot.history{background:var(--muted-strong)}.legend-dot.easy{background:var(--surface-2);outline:1px solid var(--line-strong)}.detail-panel{margin-top:20px;padding:22px;border-radius:var(--radius);background:var(--surface)}.detail-panel h3{font-size:25px;margin:9px 0 15px}.detail-panel .metric-row{margin-bottom:18px}.detail-panel p{font-size:13px}.day-actual{margin-top:17px;padding-top:13px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.timeline{display:flex;flex-direction:column;margin-top:16px}.week-row{display:grid;grid-template-columns:32px 1fr auto;gap:13px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;min-height:66px}.week-row .week-no{width:30px;height:30px;border-radius:50%;background:var(--surface-2);display:grid;place-items:center;font-size:11px;color:var(--muted)}.week-row.active .week-no{color:var(--accent-text);background:var(--accent-soft)}.week-row strong{display:block;font-weight:500;font-size:13px}.week-row p{font-size:11px;margin-top:3px}.week-row .num{font-size:21px}.week-row .num span{font-size:10px;color:var(--muted)}.chart-container{background:var(--surface);padding:23px 18px;border-radius:var(--radius)}.chart-container h2{padding:0 4px}.chart-subtitle{font-size:11px;margin:6px 4px 0}.chart-controls{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:18px 4px 6px}.segmented{display:flex;gap:3px;background:var(--surface-2);padding:3px;border-radius:9px}.segmented button{background:transparent;min-height:35px;color:var(--muted);border-radius:7px;padding:0 12px;font-size:10px}.segmented button.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px var(--shadow)}.chart{width:100%;height:auto;overflow:visible}.chart text{fill:var(--muted);font:12px var(--font-body)}.chart .gridline{stroke:var(--line);stroke-width:1}.chart .actual-bar{fill:var(--muted-strong)}.chart .plan-bar{fill:var(--accent-fill)}.chart .plan-bar.down{fill:var(--accent-text);opacity:.65}.chart .data-point{cursor:pointer}.chart .data-point:focus-visible{outline:none;stroke:var(--ink);stroke-width:3}.chart .trend{stroke:var(--accent-fill);fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.chart .point{fill:var(--accent-fill);stroke:var(--surface);stroke-width:2}.chart-readout{min-height:40px;font-size:11px;color:var(--muted-strong);padding:8px 4px 0}.load-band{display:flex;align-items:center;justify-content:space-between;padding:19px 0;margin-bottom:22px;border-bottom:1px solid var(--line);gap:16px}.load-band h3{font-size:19px;margin-top:4px}.load-band p{font-size:11px;margin-top:3px}.load-value{text-align:right}.load-value b{font:500 32px var(--font-display);color:var(--success);display:block}.load-value span{font-size:10px;color:var(--muted)}.pr-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 24px}.pr-item{padding:19px 0;border-bottom:1px solid var(--line)}.pr-item strong{font:500 28px var(--font-display);display:block;margin:6px 0}.pr-item p{font-size:10px}.pr-item .small-label{font-size:10px}.activity{padding:21px 0;border-bottom:1px solid var(--line)}.activity-top{display:flex;gap:10px;align-items:center}.activity-top .avatar{background:var(--accent-soft);color:var(--accent-text);width:30px;height:30px;font-size:9px}.activity-top strong{display:block;font-size:11px;font-weight:500}.activity-top span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.activity-top .activity-icon{margin-left:auto;color:var(--accent-text);width:20px}.activity h3{margin:14px 0;font-size:21px}.activity-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.activity-stats b{display:block;font:500 19px var(--font-display);margin-top:3px}.activity-stats span{font-size:10px;color:var(--muted)}.activity-foot{font-size:10px;color:var(--muted);margin-top:12px;display:flex;justify-content:space-between;align-items:center}.activity-foot a{color:var(--accent-text);min-height:32px;display:inline-flex;align-items:center}.secondary{min-height:46px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:10px;width:100%;font-size:12px;margin-top:18px}.coach-feature{background:var(--accent-soft);border-radius:var(--radius);padding:24px}.coach-feature h2{font-size:29px;margin:13px 0}.coach-feature p{font-size:13px;color:var(--ink)}.tip-row{padding:22px 0;border-bottom:1px solid var(--line);display:flex;gap:17px}.tip-number{color:var(--accent-text);font:500 24px var(--font-display);width:24px;flex:none}.tip-row h3{font-size:20px}.tip-row p{font-size:13px;margin-top:9px}.guide-item{border-bottom:1px solid var(--line);padding:17px 0}.guide-item summary{cursor:pointer;min-height:35px;list-style:none;display:flex;justify-content:space-between;align-items:center;font-size:14px}.guide-item summary::-webkit-details-marker{display:none}.guide-item summary span{font-size:11px;color:var(--accent-text);display:flex;align-items:center;gap:8px}.guide-item summary svg{width:14px}.guide-item p{font-size:12px;margin-top:12px}.guide-item[open] summary svg{transform:rotate(180deg)}.alert{padding:14px 0;border-top:1px solid var(--line);margin-top:20px;font-size:11px;color:var(--muted)}.empty-state{padding:40px 0}.empty-state h2{margin-bottom:14px}.no-script{padding:30px}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:var(--ink);color:var(--bg);padding:12px}.skip-link:focus{top:10px}.loading{padding:40px 0}.loading p{margin-top:20px}#navigation{position:fixed;bottom:0;left:0;right:0;z-index:20;display:grid;grid-template-columns:repeat(5,1fr);background:var(--bg);border-top:1px solid var(--line);padding:9px 4px max(10px,env(safe-area-inset-bottom));gap:0}#navigation a{font-size:9px;font-weight:500;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:48px;color:var(--muted);border-radius:10px}#navigation svg{width:20px;height:20px}#navigation a.active{color:var(--accent-text)}#navigation a:hover{background:var(--surface)}#source-footer{max-width:1180px;padding:20px 22px 108px;font-size:10px;color:var(--muted);line-height:1.8}#source-footer .footer-line{display:flex;align-items:center;justify-content:space-between;gap:12px}#source-footer a{color:var(--accent-text)}#toast{position:fixed;bottom:94px;left:50%;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:var(--ink);color:var(--bg);border-radius:10px;padding:13px 20px;font-size:12px;z-index:40;transition:opacity .2s,transform .2s;min-width:240px;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}.screen{animation:view-in .25s ease-out}@keyframes view-in{from{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:760px){.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.span-all{grid-column:1/-1}.timezone{display:block}.masthead{padding:0 36px}#main{padding:38px 34px}.goal-number strong{font-size:54px}.session-panel{padding:30px}.week-calendar{gap:9px}.calendar-day{min-height:112px}.calendar-day span{font-size:11px}.calendar-day b{font-size:27px}.panel{padding:29px}.two-column-chart{grid-template-columns:1.25fr 1fr}.feed-wrap{max-width:650px}.chart-container{padding:25px}.goal-ring-wrap{gap:30px}.ring{width:170px}.ring-label b{font-size:32px}#source-footer{padding-left:34px;padding-right:34px}}
@media(min-width:1100px){.masthead{height:88px}.app-shell{padding-left:215px}#navigation{top:88px;bottom:0;right:auto;width:215px;display:flex;flex-direction:column;padding:35px 20px;border-top:0;border-right:1px solid var(--line);gap:7px}#navigation a{flex-direction:row;justify-content:flex-start;padding:0 15px;gap:14px;font-size:13px;min-height:48px}#navigation a.active{background:var(--accent-soft)}#navigation svg{width:21px;height:21px}#source-footer{margin-left:215px;padding-bottom:30px}#main{padding:43px 42px}.page-heading{margin-bottom:31px}h1{font-size:50px}.session-panel h2{font-size:33px}.big-distance{font-size:79px}.section{margin-top:36px}.goal-hero{padding:30px}.chart-container{padding:30px}#toast{bottom:30px}}
@media(max-width:370px){#main{padding-left:16px;padding-right:16px}.masthead{padding:0 16px}.goal-numbers{gap:12px}.goal-number strong{font-size:41px}.ring{width:132px}.goal-ring-wrap{gap:16px}.ring-side strong{font-size:23px}.metric-row{gap:12px}.session-panel{padding:21px}.panel{padding:21px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
