:root{--ground: #f3f3f0;--surface: #ffffff;--ink: #0c0d0f;--ink-soft: rgba(12,13,15,.72);--ink-label: rgba(12,13,15,.63);--hairline: rgba(12,13,15,.1);--fill-quiet: rgba(12,13,15,.06);--glass: rgba(250,250,248,.82);--amber: #f2a65a;--amber-ink: #9a500a;--on-amber: #0c0d0f;--dusk: #d07a8f;--dusk-ink: #9e3f57;--light-night: #0f1322;--light-day: #dfe6ee;--light-dawn: #f1d9b0;--weather-cold: #3b5bdb;--weather-hot: #d9533c;--rain: rgba(12,13,15,.22);--font-sans: Geist, system-ui, -apple-system, sans-serif;--type-hero: 500 96px/.86 var(--font-sans);--track-hero: -.055em;--type-week: 500 72px/.9 var(--font-sans);--track-week: -.05em;--type-stat: 500 24px/28px var(--font-sans);--track-stat: -.02em;--type-lede: 400 16px/22px var(--font-sans);--track-lede: 0;--type-body: 400 14px/20px var(--font-sans);--track-body: 0;--type-label: 500 11px/14px var(--font-sans);--track-label: .12em;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 34px;--radius-band: 6px;--radius-stat: 18px;--radius-card: 20px;--radius-pill: 30px;--radius-chip: 14px;--header: 50px;--tabbar: 60px;--tabbar-gap: 18px;--target: 44px;--band: 12px;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ground: #050607;--surface: rgba(255,255,255,.025);--ink: #f4f4f2;--ink-soft: rgba(244,244,242,.78);--ink-label: rgba(244,244,242,.56);--hairline: rgba(255,255,255,.11);--fill-quiet: rgba(255,255,255,.08);--glass: rgba(14,15,18,.86);--amber-ink: #f2a65a;--dusk-ink: #d07a8f;--light-day: #eef2f6;--light-dawn: #f6e6c8;--rain: rgba(255,255,255,.18);color-scheme:dark}}:root[data-theme=dark]{--ground: #050607;--surface: rgba(255,255,255,.025);--ink: #f4f4f2;--ink-soft: rgba(244,244,242,.78);--ink-label: rgba(244,244,242,.56);--hairline: rgba(255,255,255,.11);--fill-quiet: rgba(255,255,255,.08);--glass: rgba(14,15,18,.86);--amber-ink: #f2a65a;--dusk-ink: #d07a8f;--light-day: #eef2f6;--light-dawn: #f6e6c8;--rain: rgba(255,255,255,.18);color-scheme:dark}:root{--paper: var(--ground);--muted: var(--ink-label);--rule: var(--ink);--forest: var(--amber);--forest-ink: var(--on-amber);--indigo: var(--surface);--indigo-ink: var(--ink);--olive: var(--amber);--moss: #0f1322;--sage: var(--amber);--sage-ink: var(--on-amber);--lime: var(--ground);--scrim: rgba(0,0,0,.6);--photo-fade: rgba(5,6,7,.6);--race-giro: #e8588a;--race-tour: #f2c200;--race-vuelta: #d2232a;--race-other: #c9873b;--font-serif: var(--font-sans);--type-wordmark: 500 18px/1 var(--font-sans);--track-wordmark: -.01em;--type-menu-item: 400 15px/1.4 var(--font-sans);--track-menu-item: 0;--type-headline: 400 16px/22px var(--font-sans);--track-headline: 0;--type-section: 500 16px/1.3 var(--font-sans);--track-section: 0;--type-title: 500 30px/1.1 var(--font-sans);--track-title: -.03em;--type-figure: 500 24px/28px var(--font-sans);--track-figure: -.02em;--type-bar: 400 15px/1.4 var(--font-sans);--track-bar: 0;--type-strong: 500 14px/20px var(--font-sans);--track-strong: 0;--type-link: 400 14px/1.6 var(--font-sans);--track-link: 0;--type-caption: 400 13px/1.4 var(--font-sans);--track-caption: 0;--type-tick: 400 9.5px/1 var(--font-sans);--track-tick: 0;--space-8: var(--space-2);--space-10: 10px;--space-12: var(--space-3);--space-16: var(--space-4);--space-20: var(--space-5);--space-22: 22px;--radius-0: 0px;--radius-check: 2px;--bar: 96px;--photo-today: 184px;--photo-route: 150px;--photo-pair: 120px;--drawer: 360px;--arrow-s: 22px;--arrow-m: 30px;--arrow-l: 34px}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--paper);color:var(--ink);font:var(--type-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#app{min-height:100%;display:flex;flex-direction:column;max-width:560px;margin:0 auto;position:relative}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}:focus-visible{outline:2px solid var(--forest);outline-offset:2px}.header{position:fixed;top:0;left:50%;z-index:5;width:100%;max-width:560px;transform:translate(-50%);height:calc(var(--header) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) var(--space-16) 0;display:flex;align-items:center;justify-content:flex-start;color:var(--ink)}.header:before{content:"";position:absolute;inset:0;background:var(--paper);z-index:-1;opacity:1;transition:opacity var(--base) var(--settle)}body[data-hero]:not([data-past]) .header{color:#fff}body[data-hero]:not([data-past]) .header:before{opacity:0}.header .icon-btn{width:var(--target);height:var(--target);margin:0 -3px 0 -10px;display:flex;align-items:center;justify-content:center;color:inherit}.wordmark{font:var(--type-wordmark);letter-spacing:var(--track-wordmark);color:inherit;padding-top:2px}body:not([data-hero]) #app{padding-top:calc(var(--header) + env(safe-area-inset-top,0px))}.hero{position:relative;overflow:hidden;background:var(--moss);color:#fff;display:flex;flex-direction:column;justify-content:flex-end}.hero-tall{height:min(84svh,760px)}.hero-mid{height:min(58svh,520px)}.hero img,.hero-blank{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.hero:before{content:"";position:absolute;inset:0 0 auto;height:140px;background:linear-gradient(180deg,rgba(0,0,0,.38),transparent);z-index:1}.hero:after{content:"";position:absolute;inset:auto 0 0;height:55%;background:linear-gradient(180deg,transparent,rgba(0,0,0,.5))}.hero-cap{position:relative;z-index:2;padding:0 var(--space-16) 20px;display:flex;flex-direction:column;gap:6px}.hero-title{margin:0;font:var(--type-title);letter-spacing:var(--track-title)}.hero-line{font:var(--type-body)}.hero-link{display:flex;align-items:center;gap:16px;min-height:40px;font:var(--type-body)}.hero-end{position:absolute;top:-12px;left:0;width:1px;height:1px}.hero+.lede{padding-top:var(--space-16)}.screen{flex:1 1 auto;display:flex;flex-direction:column;padding-bottom:calc(var(--bar) + 8px)}.screen.no-bar{padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}.title-row{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-12);padding:var(--space-16) var(--space-16) var(--space-12)}.title{margin:0;font:var(--type-title);letter-spacing:var(--track-title);white-space:nowrap}.title-row .caption{text-align:right}.caption{font:var(--type-caption);color:var(--muted)}.lede{margin:0;padding:0 var(--space-16) var(--space-12);font:var(--type-headline);letter-spacing:var(--track-headline);border-bottom:1px solid var(--hairline)}.section{display:flex;justify-content:space-between;align-items:baseline;margin:18px var(--space-16) 0;padding-bottom:6px;border-bottom:1px solid var(--rule)}.section h2{margin:0;font:var(--type-section)}.photo{position:relative;overflow:hidden;background:var(--hairline)}.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,var(--photo-fade) 100%)}.photo .cap{position:absolute;left:var(--space-16);right:var(--space-16);bottom:10px;z-index:1;color:#fff;display:flex;flex-direction:column}.photo .cap .name{font:var(--type-strong);font-size:13px}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin-top:2px}.photo-pair .photo:after{display:none}.photo.empty{display:flex;align-items:flex-end;background:var(--moss)}.list{display:flex;flex-direction:column}.row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-12);min-height:var(--target);padding:var(--space-10) var(--space-16);border-bottom:1px solid var(--hairline)}.row .label{color:var(--muted);flex:none}.row .value{text-align:right}.row .value .muted,.muted{color:var(--muted)}.row .with-arrow{display:flex;align-items:center;gap:var(--space-12)}.figures{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--space-12);padding:var(--space-12) var(--space-16);border-bottom:1px solid var(--hairline)}.figures>div{display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.figure{font:var(--type-figure);font-variant-numeric:tabular-nums}.links{display:flex;justify-content:flex-end;gap:22px;padding:4px var(--space-16) 0}.links a,.links button{color:var(--muted);font:var(--type-link);min-height:40px;display:flex;align-items:center}.bar{position:fixed;left:0;right:0;bottom:0;z-index:6;max-width:560px;margin:0 auto;height:calc(var(--bar) + env(safe-area-inset-bottom,0px) - 22px);min-height:var(--bar);padding:0 var(--space-20) max(var(--space-22),env(safe-area-inset-bottom,0px));display:flex;justify-content:space-between;align-items:center;background:var(--forest);color:var(--forest-ink);font:var(--type-bar)}.bar .done{opacity:.9}.week-row{display:grid;grid-template-columns:44px 1fr 28px;gap:8px;align-items:start;padding:11px var(--space-16) 11px 12px;border-bottom:1px solid var(--hairline)}.week-row .day{font:var(--type-caption);color:var(--muted);padding-top:2px}.week-row .day b{display:block;font-weight:400;color:var(--ink)}.week-row .what{display:flex;flex-direction:column;gap:2px}.week-row .what strong{font:var(--type-strong)}.week-row.kept{color:var(--muted)}.tick{width:22px;height:22px;border:1px solid var(--ink);border-radius:var(--radius-check);display:flex;align-items:center;justify-content:center;margin-top:1px}.tick[aria-checked=true]{background:var(--forest);border-color:var(--forest);color:#fff}.scrim{position:fixed;inset:0;z-index:9;background:var(--scrim)}.drawer{position:fixed;top:0;bottom:0;left:0;z-index:10;width:min(360px,calc(100vw - 30px));background:var(--indigo);color:var(--indigo-ink);display:flex;flex-direction:column;overflow:hidden}.drawer-top{height:calc(var(--header) + env(safe-area-inset-top,0px));padding:env(safe-area-inset-top,0px) var(--space-16) 0;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.22);flex:none}.drawer-top .icon-btn{width:var(--target);height:var(--target);margin:0 -3px 0 -10px;display:flex;align-items:center;justify-content:center;color:inherit}.menu{display:flex;flex-direction:column;padding:11px 0}.menu-item{font:var(--type-menu-item);letter-spacing:var(--track-menu-item);min-height:43px;padding:0 var(--space-16);display:flex;align-items:center;justify-content:space-between;gap:var(--space-12);color:inherit;text-align:left;width:100%}.menu-item[aria-current=page] span{border-bottom:1px solid currentColor;padding-bottom:1px}.menu-item:active{opacity:.68}.menu-quiet{border-top:1px solid rgba(255,255,255,.22);padding:16px var(--space-16) max(24px,env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:0;font:var(--type-body);color:#ffffffb8}.menu-quiet>a,.menu-quiet>span,.menu-quiet>button{min-height:46px;display:flex;align-items:center}.menu-quiet>button{font:inherit;border:0;width:100%;cursor:pointer}.menu-button{justify-content:center;background:#fff;color:var(--ink)!important;margin-bottom:10px}.sublevel{position:absolute;inset:0;background:var(--lime);color:var(--ink);display:flex;flex-direction:column}.sublevel .drawer-top{border-bottom-color:#14141424}.sub-head{min-height:52px;padding:0 var(--space-16);display:flex;align-items:center;gap:18px;border-bottom:1px solid rgba(20,20,20,.14)}.sub-back{display:flex;align-items:center;min-height:44px}.sub-title{flex:1;font:var(--type-section);font-weight:400;font-size:18px}.sub-all{font:var(--type-body)}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--forest);margin-right:6px;vertical-align:1px}.race-band{height:6px}.empty-note{padding:var(--space-16);color:var(--muted)}.signin{display:flex;flex-direction:column;gap:var(--space-8, 8px);padding:var(--space-16)}.signin input{font:var(--type-link);padding:12px 0;border:0;border-bottom:1px solid var(--ink);border-radius:0;background:transparent;color:var(--ink);outline:none}.signin input:focus-visible{border-bottom-color:var(--forest)}.pad{padding:8px var(--space-16) 0;margin:0}.ready{padding:var(--space-12) var(--space-16);border-bottom:1px solid var(--hairline);display:flex;flex-direction:column;gap:6px}.ready-top{display:flex;justify-content:space-between;gap:var(--space-12)}.ready-bar{position:relative;height:4px;background:var(--hairline);overflow:hidden}.ready-bar span{position:absolute;inset:0;background:var(--forest);transform-origin:left}.ramp-chart{margin:12px var(--space-16) 0}.note{padding:var(--space-12) var(--space-16);border-bottom:1px solid var(--hairline)}.note-top{display:flex;justify-content:space-between;align-items:baseline}.note p{margin:4px 0 0;color:var(--muted)}.dirs{display:flex;flex-direction:column}.dir{text-align:left;display:flex;flex-direction:column;gap:4px;padding:14px var(--space-16);border-bottom:1px solid var(--hairline);border-left:3px solid transparent}.dir[aria-pressed=true]{border-left-color:var(--forest)}.dir-title{font:var(--type-section)}.dir-line{color:var(--muted)}.prose{padding:var(--space-12) var(--space-16) 0}.prose p{margin:0 0 var(--space-12)}.tabs{display:flex;gap:22px;padding:0 var(--space-16) var(--space-12)}.tabs button{font:var(--type-body);color:var(--muted);min-height:32px}.tabs button[aria-selected=true]{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}body{background:var(--ground);color:var(--ink);font:var(--type-body);letter-spacing:var(--track-body);-webkit-tap-highlight-color:transparent}#app{padding-bottom:calc(var(--tabbar) + var(--tabbar-gap) + env(safe-area-inset-bottom,0px) + var(--space-4))}button{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--amber-ink);outline-offset:2px;border-radius:6px}.label{font:var(--type-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--ink-label);font-variant-numeric:tabular-nums}.label.ink{color:var(--ink)}.label.amber,.amber{color:var(--amber-ink)}.label.dusk{color:var(--dusk-ink)}.hero-n{font:var(--type-hero);letter-spacing:var(--track-hero);font-variant-numeric:tabular-nums;color:var(--ink)}.hero-n.sm{font-size:64px}.week-n{font:var(--type-week);letter-spacing:var(--track-week);font-variant-numeric:tabular-nums}.stat-n{font:var(--type-stat);letter-spacing:var(--track-stat);font-variant-numeric:tabular-nums;color:var(--ink)}.stat-n small{font-size:13px;letter-spacing:0;color:var(--ink-label);font-weight:500}.lede-s{font:var(--type-lede);color:var(--ink-soft)}.soft{color:var(--ink-soft)}.say{font:500 20px/26px var(--font-sans);letter-spacing:-.015em;color:var(--ink)}.row-between{display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:var(--space-3)}.s-head{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + var(--space-4)) var(--space-5) 0;min-height:calc(var(--header) + env(safe-area-inset-top,0px))}.s-head .mark{font:500 18px/1 var(--font-sans);letter-spacing:-.01em;color:var(--ink)}.s-head button{min-height:var(--target)}.screen.signal{padding-top:0;padding-bottom:var(--space-4)}.screen.signal:has(.dock){padding-bottom:96px}body:not([data-hero]) #app:has(.screen.signal){padding-top:0}.stack{display:flex;flex-direction:column;gap:var(--space-3);padding:0 var(--space-5)}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-card);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);color:inherit}a.card:active,button.card:active{transform:scale(.99)}.card.stat{border-radius:var(--radius-stat);padding:var(--space-3) var(--space-4);gap:var(--space-1)}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.coach-line{margin-top:var(--space-5);margin-bottom:var(--space-4);gap:var(--space-1);color:inherit}.ride-card{padding-top:var(--space-4)}.editor{display:flex;flex-direction:column;gap:var(--space-3)}.editor-time{display:flex;align-items:flex-end;gap:var(--space-3)}.editor-to{display:flex;flex-direction:column;gap:2px;padding-bottom:8px}.editor-to .stat-n{color:var(--ink-soft)}.readouts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);padding:var(--space-3) 0 0;border-top:1px solid var(--hairline)}.readouts>div{display:flex;flex-direction:column;gap:2px}.editor-line{font-size:14px}.confirm{display:flex;align-items:center;gap:var(--space-4)}.band-wrap{display:flex;flex-direction:column;gap:var(--space-2)}.band-head{display:flex;justify-content:space-between}.band{position:relative;height:var(--band);border-radius:var(--radius-band);box-shadow:inset 0 0 0 1px var(--hairline)}.band.big{height:14px;border-radius:7px}.band.rest{opacity:.45}.band-ride{position:absolute;top:-3px;bottom:-3px;border-radius:9px;border:1.5px solid var(--ink);box-shadow:0 0 0 1.5px var(--ground)}.band-ride.done{background:var(--amber);border-color:var(--amber)}.band-kept{position:absolute;top:-2px;bottom:-2px;border-radius:8px;background:color-mix(in srgb,var(--ink) 14%,transparent);border:1px solid color-mix(in srgb,var(--ink) 28%,transparent)}.band-kept.big{top:14px;bottom:auto;height:18px}.band-rain{position:absolute;top:0;bottom:0;background-image:repeating-linear-gradient(-45deg,var(--rain) 0 2px,transparent 2px 6px);border-radius:inherit}.band-tick{position:absolute;top:-4px;bottom:-4px;width:1px;background:var(--ink);opacity:.6}.band-ticks{display:flex;justify-content:space-between;gap:var(--space-2)}.band-wrap.compact .band{height:8px;border-radius:4px}.band-wrap.compact .band-ride{top:-3px;bottom:-3px;border-radius:7px}.scrub{display:flex;flex-direction:column;gap:var(--space-2)}.scrub-track{position:relative;height:46px;display:flex;align-items:center;touch-action:pan-y;user-select:none;-webkit-user-select:none}.scrub-track .band{width:100%}.scrub-wall{position:absolute;top:6px;bottom:6px;border-radius:8px;background-image:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--ink) 16%,transparent) 0 1.5px,transparent 1.5px 6px);transition:background-color .2s ease;pointer-events:none}.scrub-wall.hit{background-color:color-mix(in srgb,var(--amber) 35%,transparent)}.scrub-wall-label.end{left:auto;right:0}.scrub-wall-label{position:absolute;top:-14px;left:4px;font:var(--type-label);letter-spacing:var(--track-label);font-size:9px;text-transform:uppercase;color:var(--ink-label);white-space:nowrap}.scrub-ride{position:absolute;top:9px;bottom:9px;border-radius:14px;border:2px solid var(--ink);box-shadow:0 0 0 2px var(--ground),0 6px 18px #0000002e;background:color-mix(in srgb,var(--ground) 18%,transparent);display:flex;align-items:center;justify-content:center;cursor:grab;transition:box-shadow .15s ease}.scrub-ride:active{cursor:grabbing;box-shadow:0 0 0 2px var(--ground),0 10px 26px #00000047}.scrub-ride.done{background:var(--amber);border-color:var(--amber);cursor:default}.scrub-ride .grip{width:10px;height:12px;background:repeating-linear-gradient(90deg,var(--ink) 0 1.5px,transparent 1.5px 4px);opacity:.8}.scrub:not(.editable) .scrub-ride{cursor:default}.chips{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--space-4) * -1);padding:2px var(--space-4);scroll-snap-type:x proximity;scroll-padding-inline:var(--space-4)}.chips::-webkit-scrollbar{display:none}.chip{flex:none;scroll-snap-align:start;min-height:var(--target);padding:8px 14px;border-radius:var(--radius-chip);background:var(--fill-quiet);color:var(--ink);display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:1px;font:500 14px/18px var(--font-sans);border:1.5px solid transparent}.chip small{font:var(--type-label);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-label);font-size:10px}.chip.on{border-color:var(--amber-ink);background:color-mix(in srgb,var(--amber) 14%,var(--surface))}.chip:active{transform:scale(.97)}.checks{display:flex;flex-wrap:wrap;gap:var(--space-2)}.check{min-height:40px;padding:0 14px 0 10px;border-radius:20px;background:var(--fill-quiet);display:flex;align-items:center;gap:8px;font:500 14px/1 var(--font-sans);color:var(--ink)}.check .box{width:20px;height:20px;border-radius:10px;border:1.5px solid var(--ink-label);display:flex;align-items:center;justify-content:center;color:var(--on-amber)}.check.on{background:color-mix(in srgb,var(--amber) 16%,var(--surface))}.check.on .box{background:var(--amber);border-color:var(--amber)}.strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.strip-day{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0;border-radius:12px;min-height:var(--target);color:inherit}.strip-day .n{font:500 15px/1 var(--font-sans);font-variant-numeric:tabular-nums}.strip-day .dot{width:8px;height:8px;border-radius:4px;background:transparent;border:1.5px solid transparent}.strip-day.planned .dot{border-color:var(--ink)}.strip-day.booked .dot{border-color:var(--amber-ink);background:color-mix(in srgb,var(--amber) 30%,transparent)}.strip-day.done .dot{background:var(--amber);border-color:var(--amber)}.strip-day.kept .dot{background:var(--fill-quiet);border-color:color-mix(in srgb,var(--ink) 25%,transparent)}.strip-day.today{background:var(--fill-quiet)}.strip-day.today .label{color:var(--ink)}.photo-card{position:relative;padding:0;min-height:168px;overflow:hidden;border:0;justify-content:flex-end}.photo-card.tall{min-height:260px}.photo-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.photo-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#05060700 35%,#050607d1)}.photo-cap{position:relative;z-index:1;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.dock-wrap{position:fixed;left:50%;transform:translate(-50%);z-index:6;bottom:calc(var(--tabbar) + var(--tabbar-gap) + env(safe-area-inset-bottom,0px) + 10px);width:calc(100% - var(--space-5) * 2);max-width:calc(560px - var(--space-5) * 2);display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.dock-wrap>*{pointer-events:auto}.dock{background:var(--glass);border:1px solid var(--hairline);border-radius:24px;padding:8px;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);display:flex;flex-direction:column;gap:8px;box-shadow:0 10px 30px #0000001f}.dock>.label{padding:6px 8px 0}.dock-line{display:flex;flex-direction:column;gap:2px;padding:8px 10px;font:500 15px/20px var(--font-sans)}.feel{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.feel .chip{align-items:center;padding:0}body[data-sheet] .dock-wrap{display:none}.pill{min-height:50px;padding:0 var(--space-5);border-radius:18px;background:var(--amber);color:var(--on-amber);font:600 15px/1 var(--font-sans);letter-spacing:-.01em;display:inline-flex;align-items:center;justify-content:center;align-self:flex-start}.pill.wide{align-self:stretch;width:100%}.pill.ghost{background:var(--fill-quiet);color:var(--ink);font-weight:500}.pill:active{transform:scale(.98)}.pill[disabled]{opacity:.6}.text-btn{min-height:var(--target);display:inline-flex;align-items:center;color:var(--amber-ink);font:500 15px/1 var(--font-sans);align-self:flex-start}.text-btn.quiet{color:var(--ink-label)}.back{min-height:var(--target);display:flex;align-items:center}.toast{align-self:center;display:flex;align-items:center;gap:var(--space-4);background:var(--ink);color:var(--ground);border-radius:18px;padding:10px 10px 10px 16px;font:500 14px/18px var(--font-sans);box-shadow:0 8px 24px #0003;max-width:100%}.toast button{color:var(--amber);font:600 14px/1 var(--font-sans);min-height:32px;padding:0 8px}@media (prefers-color-scheme: light){:root:not([data-theme=dark]) .toast button{color:#f2a65a}}.segmented{display:grid;grid-template-columns:1fr 1fr;background:var(--fill-quiet);border-radius:12px;padding:2px}.segmented button{min-height:36px;border-radius:10px;font:500 14px/1 var(--font-sans);color:var(--ink-soft)}.segmented button[aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #0000001f}.week-head{flex-direction:row;align-items:center;gap:var(--space-4);margin-top:var(--space-5)}.week-ask{display:flex;flex-direction:column;gap:4px;min-width:0}.week-ask .ask{font:500 34px/1 var(--font-sans);letter-spacing:-.035em}.ring{position:relative;flex:none}.ring svg{display:block}.ring-off{stroke:var(--fill-quiet)}.ring-on{stroke:var(--amber)}.ring-in{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}.ring-in .label{font-size:9px}.days{padding:var(--space-2) var(--space-3);gap:0}.day-row{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;border-bottom:1px solid var(--hairline)}.day-row:last-child{border-bottom:0}.day-open{display:grid;grid-template-columns:40px minmax(0,1fr);gap:var(--space-3);align-items:center;text-align:left;padding:12px 4px;min-height:60px}.day-open:active{opacity:.7}.day-name{display:flex;flex-direction:column;align-items:center;gap:3px}.day-name .n{font:500 17px/1 var(--font-sans);font-variant-numeric:tabular-nums}.day-row.today .day-name .n{color:var(--amber-ink)}.day-row.past{opacity:.6}.day-mid{display:flex;flex-direction:column;gap:8px;min-width:0}.day-what{font:500 14px/18px var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-what.quiet{color:var(--ink-label);font-weight:400}.tick{width:28px;height:28px;border-radius:14px;border:1.5px solid var(--ink-label);justify-self:end;display:flex;align-items:center;justify-content:center;color:var(--on-amber)}.tick.on{background:transparent;border-color:var(--amber-ink);color:var(--amber-ink)}.tick.fixed{border:0}.tick.done{background:var(--amber);color:var(--on-amber)}.tick.booked{color:var(--amber-ink)}.tick.none{border:0}.ramp{display:flex;align-items:flex-end;gap:var(--space-2);height:72px}.ramp>button{flex:1;border-radius:6px;background:var(--fill-quiet);min-height:8px;transition:background-color .15s ease}.ramp>button.now{background:var(--amber)}.ramp>button.picked:not(.now){background:color-mix(in srgb,var(--ink) 40%,transparent)}.ramp>button.picked{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--ink)}.ramp-labels{display:flex;gap:var(--space-2)}.ramp-labels .label{flex:1;text-align:center;font-size:10px;letter-spacing:.04em}.sheet-scrim{position:fixed;inset:0;z-index:20;background:#00000052;animation:fade .2s ease}.sheet{position:fixed;left:50%;bottom:0;z-index:21;width:100%;max-width:560px;transform:translate(-50%);max-height:calc(100svh - 48px);overflow-y:auto;background:var(--ground);border-radius:28px 28px 0 0;border-top:1px solid var(--hairline);padding-bottom:calc(env(safe-area-inset-bottom,0px) + var(--space-6));animation:rise .28s cubic-bezier(.2,.8,.2,1);transition:transform .2s ease}.sheet{translate:-50% 0;transform:none;left:50%}.sheet-grab{display:flex;justify-content:center;padding:10px 0 14px;touch-action:none;cursor:grab}.sheet-grab span{width:40px;height:5px;border-radius:3px;background:color-mix(in srgb,var(--ink) 22%,transparent)}.sheet-body{padding:0 var(--space-5)}.sheet-stack{display:flex;flex-direction:column;gap:var(--space-4)}.sheet-group{display:flex;flex-direction:column;gap:var(--space-2)}.check-line{display:flex;align-items:center;gap:10px;min-height:var(--target);font:400 15px/1.3 var(--font-sans)}.check-line input{width:20px;height:20px;accent-color:var(--amber)}@keyframes rise{0%{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}.ready-card{gap:var(--space-3)}.ready-big{display:flex;align-items:baseline;gap:var(--space-3)}.track{position:relative;height:10px;border-radius:5px;background:var(--fill-quiet);margin:6px 0 14px}.track.thin{height:6px;border-radius:3px;margin:2px 0 6px}.track-fill{position:absolute;left:0;top:0;bottom:0;border-radius:inherit;background:var(--amber)}.track-dot{position:absolute;top:50%;width:16px;height:16px;border-radius:8px;background:var(--ground);border:3px solid var(--amber);transform:translate(-50%,-50%)}.track.thin .track-dot{display:none}.track-mark{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--ink-label)}.track-mark .label{position:absolute;top:16px;left:50%;transform:translate(-50%);font-size:9px}.weeks{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px;height:88px;align-items:end}.weeks button{height:100%;display:flex;align-items:flex-end;padding:0}.weeks button span{display:block;width:100%;height:var(--h);min-height:3px;border-radius:4px;background:color-mix(in srgb,var(--ink) 30%,transparent);transition:background-color .15s ease}.weeks button.zero span{background:var(--fill-quiet)}.weeks button.now span{background:color-mix(in srgb,var(--amber) 60%,transparent)}.weeks button.on span{background:var(--amber)}.ride-row{flex-direction:row;gap:var(--space-3);align-items:center;padding:var(--space-3)}.ride-row img{width:72px;height:72px;border-radius:12px;object-fit:cover;flex:none}.ride-row-text{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.tabbar{position:fixed;left:50%;transform:translate(-50%);z-index:7;bottom:calc(var(--tabbar-gap) + env(safe-area-inset-bottom,0px));width:calc(100% - var(--space-5) * 2);max-width:calc(560px - var(--space-5) * 2);height:var(--tabbar);border-radius:var(--radius-pill);background:var(--glass);border:1px solid var(--hairline);backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);box-shadow:0 8px 28px #0000001f;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;padding:0 4px}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:50px;border-radius:24px;font:500 10px/1 var(--font-sans);letter-spacing:.02em;color:var(--ink-label)}.tabbar a[aria-current=page]{color:var(--amber-ink);background:var(--fill-quiet)}.tabbar svg{width:22px;height:22px}body[data-nobar] .tabbar,body[data-sheet] .tabbar{display:none}@media (prefers-reduced-motion: reduce){.sheet,.sheet-scrim{animation:none}*{transition:none!important}}.appearance{display:grid;grid-template-columns:repeat(3,1fr);background:var(--fill-quiet);border-radius:12px;padding:2px;margin:6px 0 8px}.appearance button{min-height:36px!important;border-radius:10px;font:500 13px/1 var(--font-sans)!important;color:var(--ink-soft);justify-content:center}.appearance button[aria-checked=true]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px #0000001f}.say.big{font-size:24px;line-height:30px;letter-spacing:-.02em}.coach-card{gap:var(--space-2)}.thread{display:flex;flex-direction:column;gap:var(--space-3)}.msg-pair{display:flex;flex-direction:column;gap:6px}.msg{max-width:86%;padding:10px 14px;border-radius:18px;display:flex;flex-direction:column;gap:4px;font:400 15px/20px var(--font-sans)}.msg.me{align-self:flex-end;background:color-mix(in srgb,var(--amber) 22%,var(--surface));border-bottom-right-radius:6px}.msg.them{align-self:flex-start;background:var(--fill-quiet);border-bottom-left-radius:6px}.msg.waiting{padding:8px 12px}.msg .label{font-size:9.5px}.link{color:var(--amber-ink);font:inherit;text-transform:inherit;letter-spacing:inherit}.composer{display:flex;align-items:flex-end;gap:var(--space-2);background:var(--fill-quiet);border-radius:22px;padding:6px 6px 6px 14px}.composer textarea{flex:1;border:0;background:transparent;color:var(--ink);font:400 16px/22px var(--font-sans);resize:none;outline:none;padding:6px 0;min-height:34px}.composer textarea::placeholder{color:var(--ink-label)}.send{width:44px;height:44px;border-radius:22px;background:var(--amber);color:var(--on-amber);display:flex;align-items:center;justify-content:center;flex:none}.send[disabled]{background:color-mix(in srgb,var(--ink) 18%,transparent);color:var(--ground)}.stage-list{display:flex;flex-direction:column}.stage{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-top:1px solid var(--hairline);text-align:left;color:inherit}.stage:first-child{border-top:0;padding-top:2px}.stage-name{display:flex;align-items:baseline;gap:10px;font:500 15px/20px var(--font-sans)}.stage-more{display:flex;flex-direction:column;gap:6px;animation:rise .22s ease}.choices{display:flex;flex-direction:column;gap:var(--space-2)}.choice{display:flex;gap:var(--space-3);align-items:flex-start;text-align:left;padding:12px;border-radius:16px;background:var(--fill-quiet);border:1.5px solid transparent;color:inherit}.choice.on{border-color:var(--amber-ink);background:color-mix(in srgb,var(--amber) 12%,var(--surface))}.choice-dot{width:20px;height:20px;border-radius:10px;border:1.5px solid var(--ink-label);flex:none;margin-top:1px}.choice.on .choice-dot{border:6px solid var(--amber)}.choice-text{display:flex;flex-direction:column;gap:4px}.choice-title{font:500 15px/20px var(--font-sans)}.ramp-all{position:relative;display:flex;align-items:flex-end;gap:2px;height:96px}.ramp-all button{flex:1;height:100%;display:flex;align-items:flex-end;padding:0;min-width:0}.ramp-all button span{display:block;width:100%;height:var(--h);border-radius:2px;background:color-mix(in srgb,var(--ink) 34%,transparent)}.ramp-all button.easy span{background:color-mix(in srgb,var(--ink) 18%,transparent)}.ramp-all button.past span{opacity:.45}.ramp-all button.now span{background:var(--amber)}.ramp-all button.on span{background:var(--ink)}.ramp-all button.now.on span{background:var(--amber);box-shadow:0 0 0 2px var(--surface),0 0 0 3px var(--ink)}.ramp-all .best{position:absolute;left:0;right:0;height:0;border-top:1.5px dashed var(--ink-label);pointer-events:none;z-index:1}.note-s{display:flex;flex-direction:column;gap:4px;padding-top:var(--space-3);border-top:1px solid var(--hairline)}.note-s:first-of-type{border-top:0;padding-top:0}.note-title{font:500 15px/20px var(--font-sans);color:var(--ink)}.race-next{position:relative;overflow:hidden;padding-top:calc(var(--space-4) + 6px)}.race-stripe{position:absolute;left:0;right:0;top:0;height:6px;background:var(--race)}.season{display:flex;flex-direction:column;gap:8px}.season-months{display:grid;grid-template-columns:repeat(10,1fr)}.season-months .label{font-size:9px}.season-line{position:relative;height:40px;border-radius:12px;background:var(--fill-quiet)}.season-today{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink);border-radius:1px}.season-block{position:absolute;top:8px;bottom:8px;border-radius:8px;background:var(--race);min-width:10px;transition:transform .15s ease}.season-block.you{top:4px;bottom:4px;border-radius:10px}.season-block.on{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--ink);z-index:1}.season-key{display:flex;gap:var(--space-4);font:var(--type-label);letter-spacing:var(--track-label);text-transform:uppercase;font-size:9.5px;color:var(--ink-label)}.season-key span{display:flex;align-items:center;gap:6px}.k{width:10px;height:10px;border-radius:3px;display:inline-block}.k.you{background:var(--amber)}.k.race{background:linear-gradient(90deg,var(--race-giro),var(--race-tour),var(--race-vuelta))}.season-detail{display:flex;flex-direction:column;gap:6px;padding-top:var(--space-3);border-top:1px solid var(--hairline)}.text-btn.small{min-height:44px;font-size:14px;padding:0 4px}.stages{display:flex;flex-direction:column;margin-top:4px}.stage-row{display:grid;grid-template-columns:92px minmax(0,1fr) auto;gap:10px;align-items:baseline;padding:9px 0;border-top:1px solid var(--hairline)}.stage-row.past{opacity:.5}.stage-what{font:400 14px/19px var(--font-sans)}.going{display:grid;grid-template-columns:6px minmax(0,1fr) auto;gap:var(--space-3);align-items:center;text-align:left;padding:10px 0;border-top:1px solid var(--hairline);color:inherit}.going:first-of-type{border-top:0}.going-stripe{width:6px;height:36px;border-radius:3px;background:var(--race)}.going-text{display:flex;flex-direction:column;gap:2px}.podium{display:flex;flex-direction:column}.podium-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:var(--space-3);align-items:center;padding:10px 0;border-top:1px solid var(--hairline)}.podium-row:first-child{border-top:0}.podium-n{width:28px;height:28px;border-radius:14px;display:flex;align-items:center;justify-content:center;font:600 14px/1 var(--font-sans);background:var(--fill-quiet)}.podium-row.p1 .podium-n{background:var(--race-tour);color:#0c0d0f}.podium-who{display:flex;flex-direction:column;gap:2px;min-width:0}.move-row{display:flex;flex-direction:column;gap:2px;padding:10px 0;border-top:1px solid var(--hairline)}.move-row:nth-of-type(1){border-top:0}.ink-strong{color:var(--ink)}.menu-sheet{padding-bottom:var(--space-4)}.menu-group{display:flex;flex-direction:column;gap:var(--space-2)}.menu-group>.label{padding:0 var(--space-4)}.menu-card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius-card);overflow:hidden}.menu-row{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:50px;padding:0 var(--space-4);border-top:1px solid var(--hairline);font:400 16px/1 var(--font-sans);color:var(--ink);text-align:left}.menu-row:first-child{border-top:0}.menu-row:active{background:var(--fill-quiet)}.menu-detail{display:flex;align-items:center;gap:10px;color:var(--ink-label);font-size:15px}.menu-detail svg{opacity:.6}.segmented.three{grid-template-columns:repeat(3,1fr)}.weight-top{display:flex;flex-direction:column;gap:4px}.stat-n.big{font-size:40px;line-height:44px;letter-spacing:-.03em}.weight-chart{display:flex;flex-direction:column;gap:8px}.weight-chart svg{display:block;cursor:crosshair}.w-dot{fill:color-mix(in srgb,var(--ink) 30%,transparent)}.w-line{stroke:var(--amber);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}.w-cursor{stroke:var(--ink-label);stroke-width:1}.w-sel{fill:var(--ground);stroke:var(--amber);stroke-width:3}.composer input{flex:1;border:0;background:transparent;color:var(--ink);font:400 17px/22px var(--font-sans);outline:none;padding:8px 0;min-width:0}.composer input::placeholder{color:var(--ink-label)}.days-line{display:flex;gap:4px}.days-line button{min-height:64px;border-radius:12px;background:var(--fill-quiet);display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;padding:8px 10px;color:var(--ink);border:1.5px solid transparent;min-width:0}.days-line button.on{background:var(--amber);color:var(--on-amber)}.days-line button.on .label{color:var(--on-amber)}.dl-km{font:500 18px/1 var(--font-sans);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.day-detail{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--hairline)}.open-list{display:flex;flex-direction:column}.open-list span{padding:10px 0;border-top:1px solid var(--hairline);font:400 15px/20px var(--font-sans)}.open-list span:first-child{border-top:0;padding-top:0}.climbs{display:flex;flex-direction:column}.climb{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-top:1px solid var(--hairline);text-align:left;color:inherit}.climb:first-child{border-top:0}.climb-bars{position:relative;height:8px;border-radius:4px;background:var(--fill-quiet)}.cb-climb{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:color-mix(in srgb,var(--ink) 55%,transparent)}.cb-you{position:absolute;top:-4px;bottom:-4px;width:3px;border-radius:2px;background:var(--amber);transform:translate(-1.5px)}.climb-more{display:flex;flex-direction:column;gap:4px;animation:rise .2s ease}.race-photo .race-stripe{z-index:2}.book-stage{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-top:1px solid var(--hairline)}.book-stage:nth-of-type(1){border-top:0}.book-stage.past{opacity:.5}.route-card{gap:var(--space-2);color:inherit}.strip-r{position:relative;height:22px}.strip-r.big{height:40px}.sr-line{position:absolute;left:0;right:0;top:10px;height:2px;border-radius:1px;background:var(--ink)}.sr-dark{position:absolute;top:5px;height:12px;border-radius:6px;background:var(--strip-night, var(--light-night));box-shadow:0 0 0 2px var(--surface)}.sr-tick{position:absolute;top:7px;width:1px;height:8px;background:var(--ink-label)}.sr-tick .label{position:absolute;top:14px;left:50%;transform:translate(-50%);font-size:9px}.prose-s p{margin:0;font:400 15px/22px var(--font-sans);color:var(--ink-soft)}.stat-n{white-space:nowrap}.day-detail .card.stat{padding:var(--space-3)}.day-detail .stat-n{font-size:20px;line-height:24px}.days-line button{padding:8px}.days-line .label,.route-card .row-between .label,.climb .row-between .label{white-space:nowrap}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--strip-night: #3b4566}}:root[data-theme=dark]{--strip-night: #3b4566}.card.row-between{flex-direction:row;align-items:center}.season-block:before{content:"";position:absolute;inset:-10px -8px}.s-head .mark{padding:12px 12px 12px 0;margin:-12px 0}.row-between>a.label{padding:14px 0 14px 16px;margin:-14px 0}.s-head-r{display:flex;align-items:center;gap:12px}.avatar{width:34px;height:34px;border-radius:17px;background:var(--fill-quiet);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;font:600 15px/1 var(--font-sans);letter-spacing:0;flex:none;position:relative}.avatar:before{content:"";position:absolute;inset:-5px}.avatar.on{background:var(--ink);color:var(--ground)}.avatar.big{width:56px;height:56px;border-radius:28px;font-size:22px;background:var(--amber);color:var(--on-amber)}.you-head{display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-1)}.you-name{display:flex;flex-direction:column;gap:2px}.label.sec{padding:0 var(--space-1)}.stepper,.toggle-row{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);min-height:52px;border-top:1px solid var(--hairline);padding-top:var(--space-2);width:100%;text-align:left;color:inherit}.card>.label+.stepper,.card>.row-between+.stepper,.card>.label+.toggle-row{border-top:0;padding-top:0}.stepper-text{display:flex;flex-direction:column;gap:3px;min-width:0}.stepper-ctl{display:flex;align-items:center;background:var(--fill-quiet);border-radius:14px;flex:none}.stepper-ctl button{width:44px;height:44px;font:400 22px/1 var(--font-sans);color:var(--ink)}.stepper-ctl button:active{opacity:.5}.stepper-v{min-width:62px;text-align:center;font:500 16px/1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink)}.switch{width:51px;height:31px;border-radius:16px;background:color-mix(in srgb,var(--ink) 16%,transparent);position:relative;flex:none;transition:background-color .18s ease}.switch span{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:14px;background:#fff;box-shadow:0 2px 4px #0003;transition:transform .18s ease}.switch.on{background:var(--amber)}.switch.on span{transform:translate(20px)}.days7{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.days7 button{height:44px;border-radius:12px;background:var(--fill-quiet);font:600 14px/1 var(--font-sans);color:var(--ink-soft)}.days7 button.on{background:var(--amber);color:var(--on-amber)}.range{width:100%;accent-color:var(--amber);height:44px}.bike{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--hairline)}.bike:first-child{border-top:0;padding-top:0}.chip.small{min-height:36px;padding:6px 12px;font-size:13px}.chip.on{background:var(--amber);color:var(--on-amber)}.first{display:flex;align-items:center;gap:var(--space-3);min-height:48px;border-top:1px solid var(--hairline)}.first-dot{width:12px;height:12px;border-radius:6px;border:1.5px solid var(--ink-label);flex:none}.first.done .first-dot{background:var(--amber);border-color:var(--amber)}.first.done .note-title{color:var(--ink-soft)}.preview{display:flex;flex-direction:column;gap:2px;padding:0 var(--space-1) var(--space-2)}a.menu-row[href]:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--ink-label);border-top:1.5px solid var(--ink-label);transform:rotate(45deg);margin-left:10px;flex:none}.menu-row .menu-detail{margin-left:auto;color:var(--ink-label);font-size:15px}.route-map{width:100%;height:auto;display:block;background:var(--fill-quiet);border-radius:14px}.route-map.thumb{width:72px;height:72px;flex:none;border-radius:12px}.rm-under{fill:none;stroke:var(--surface);stroke-width:6;stroke-linejoin:round;stroke-linecap:round;opacity:.9}.rm-line{fill:none;stroke:var(--amber);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.route-map.thumb .rm-line{stroke-width:2}.route-map.thumb .rm-under{stroke-width:4}.rm-start{fill:var(--surface);stroke:var(--ink);stroke-width:2}.map-card{padding:var(--space-2);gap:var(--space-2)}.map-card .label{padding:0 var(--space-2) var(--space-1)}.profile{display:flex;flex-direction:column;gap:4px;touch-action:pan-y}.profile svg{width:100%;height:120px;display:block}.pf-area{fill:color-mix(in srgb,var(--amber) 22%,transparent)}.pf-line{fill:none;stroke:var(--amber-ink);stroke-width:1.6}.pf-tick{stroke:var(--ink-label);stroke-width:1}.pf-cursor{stroke:var(--ink);stroke-width:1.2}.pf-labels{position:relative;height:14px}.pf-labels .label{position:absolute;transform:translate(-50%);font-size:9.5px}.pf-labels .label:first-child{left:0;transform:none}.pf-labels .label.end{right:0;left:auto;transform:none}.pf-read{min-height:18px}.pull{display:flex;align-items:flex-end;justify-content:center;overflow:hidden;transition:height .16s ease}.fitchart{display:flex;flex-direction:column;gap:6px;touch-action:pan-y}.fitchart svg{width:100%;height:170px;display:block}.fc-grid{stroke:var(--hairline);stroke-width:1}.fc-zero{stroke:var(--ink-label);stroke-width:1;opacity:.5}.fc-ctl{fill:none;stroke:var(--amber-ink);stroke-width:2.2;stroke-linejoin:round}.fc-atl{fill:none;stroke:var(--ink-label);stroke-width:1.2;stroke-linejoin:round}.fc-ctl.proj{stroke-dasharray:5 4}.fc-atl.proj{stroke-dasharray:2 3;opacity:.45}.fc-form{fill:color-mix(in srgb,var(--amber) 70%,transparent)}.fc-form.neg{fill:color-mix(in srgb,var(--ink) 30%,transparent)}.fc-form.proj{opacity:.5}.fc-today{stroke:var(--ink);stroke-width:1;stroke-dasharray:2 3}.fc-cursor{stroke:var(--ink);stroke-width:1.2}.fc-months{position:relative;height:14px}.fc-months .label{position:absolute;transform:translate(-50%);font-size:9.5px}.fc-months .label.end{right:0;transform:none;color:var(--amber-ink)}.readouts.three>div .stat-n small{font-size:11px}.msg-text{white-space:pre-line}.msg-actions{display:flex;flex-direction:column;gap:6px;padding:4px 0}.pill.small{min-height:40px;padding:0 14px;font-size:14px;border-radius:14px}.coach-card.new{border-color:color-mix(in srgb,var(--amber) 60%,transparent)}.coach-card.new .msg.them{max-width:100%}.typing{display:inline-flex;gap:4px;padding:4px 2px}.typing i{width:6px;height:6px;border-radius:3px;background:var(--ink-label);animation:typing 1.2s infinite ease-in-out}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes typing{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@media (prefers-reduced-motion: reduce){.typing i{animation:none;opacity:.7}}.ramp-all{touch-action:none}.ramp-all button.drafting span{background:var(--amber);opacity:.85}.weeks,.weeks button{position:relative}.weeks button .wk-target{position:absolute;left:0;right:0;bottom:0;height:var(--t);border:1.5px dashed color-mix(in srgb,var(--ink) 28%,transparent);border-radius:4px;pointer-events:none}.weeks button.ahead span{background:transparent}.weeks-best{position:absolute;left:0;right:0;height:0;border-top:1.5px dashed var(--amber-ink);opacity:.55;pointer-events:none;z-index:1}.day-row{position:relative;overflow:hidden;display:block}.day-swipe{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:center;background:var(--surface);position:relative;z-index:1;transition:transform .2s ease;touch-action:pan-y}.day-row.dragging .day-swipe{transition:none}.day-row.dragging .band-ride{box-shadow:0 0 0 2px var(--surface),0 0 0 3.5px var(--amber)}.day-row .day-open{touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:pointer}.swipe-under{position:absolute;inset:0;display:flex;align-items:center;padding:0 var(--space-4)}.swipe-under.left{justify-content:flex-end;background:color-mix(in srgb,var(--dusk) 30%,var(--surface))}.swipe-under.right{justify-content:flex-start;background:color-mix(in srgb,var(--amber) 35%,var(--surface))}.segmented.four{grid-template-columns:repeat(4,1fr)}.review-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:var(--space-3)}.review-steps button{min-height:44px;border-radius:12px;border-bottom:3px solid var(--fill-quiet);display:flex;align-items:center;justify-content:center}.review-steps button.on{border-color:var(--amber)}.review-steps button.on .label{color:var(--ink)}.review-steps button.done{border-color:color-mix(in srgb,var(--amber) 45%,transparent)}.review-day{display:flex;align-items:center;gap:var(--space-3);min-height:56px;border-top:1px solid var(--hairline);text-align:left;color:inherit;width:100%}.review-day .box{width:24px;height:24px;border-radius:12px;border:1.5px solid var(--ink-label);display:flex;align-items:center;justify-content:center;color:var(--on-amber);flex:none}.review-day.on .box{background:var(--amber);border-color:var(--amber)}.ready-card{text-decoration:none}.weeks~.row-between .label:first-child{white-space:nowrap}.pf-dark{fill:color-mix(in srgb,var(--light-night) 22%,transparent)}:root[data-theme=dark] .pf-dark{fill:color-mix(in srgb,#8a96c8 26%,transparent)}@media (prefers-color-scheme: dark){:root:not([data-theme=light]) .pf-dark{fill:color-mix(in srgb,#8a96c8 26%,transparent)}}.profile.paint svg{touch-action:none;cursor:crosshair}.days7.two{grid-template-columns:1fr 1fr}.days7.two button{font-weight:500}.add-route{border-style:dashed}.coach-tabs{margin-top:var(--space-2)}.trends{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3) var(--space-4)}.trend{display:flex;flex-direction:column;gap:4px;min-width:0}.trend-n{font:600 22px/1.1 var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink);display:flex;align-items:baseline;gap:6px}.tr-arrow{font-style:normal;font-size:18px;color:var(--ink-soft)}.tr-arrow.good{color:var(--ink);font-weight:700}.tr-arrow.bad{color:var(--amber-ink);font-weight:700}.say.sm{font-size:17px;line-height:23px}.card.legs{gap:var(--space-3)}.ideas .idea{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--hairline)}.ideas .idea:first-of-type{border-top:0}.idea-text{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.idea.on .note-title{color:var(--amber-ink)}.quiet-pill{background:var(--fill-quiet);color:var(--ink);flex:none}.paris-bar{height:6px;border-radius:3px;background:var(--fill-quiet);overflow:hidden}.paris-bar span{display:block;height:100%;background:var(--amber);border-radius:3px}.scrub-ride{transition:box-shadow .15s ease}.scrub.editable .scrub-ride{transition:left .26s cubic-bezier(.3,1.5,.5,1),box-shadow .15s ease}.scrub.editable .scrub-ride.dragging{transition:box-shadow .15s ease}.scrub.editable .scrub-ride.dragging.jump{transition:left .17s cubic-bezier(.2,.8,.2,1),box-shadow .15s ease}.scrub-fold{position:absolute;top:4px;bottom:4px;border-radius:6px;background:var(--ground);box-shadow:inset 0 0 0 1px var(--hairline);background-image:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--ink) 18%,transparent) 0 1.5px,transparent 1.5px 5px);transition:background-color .2s ease,transform .2s ease;pointer-events:none}.scrub-fold.hit{background-color:color-mix(in srgb,var(--amber) 35%,var(--ground));transform:scaleY(1.08)}.scrub-fold-label{position:absolute;top:-15px;left:50%;transform:translate(-50%);font:var(--type-label);letter-spacing:var(--track-label);font-size:9px;text-transform:uppercase;color:var(--ink-label);white-space:nowrap;transition:color .15s ease}.scrub-fold.hit .scrub-fold-label{color:var(--amber-ink)}.scrub-fold.first .scrub-fold-label{left:0;transform:none}.scrub-fold.last .scrub-fold-label{left:auto;right:0;transform:none}.fold-edges{position:relative;height:14px}.fold-edges .label{position:absolute;top:0;font-size:10px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:clip;font-variant-numeric:tabular-nums}.scrub.folded .band-ticks{justify-content:center;gap:var(--space-4)}.segmented.five{grid-template-columns:repeat(5,1fr)}.explore-card{gap:var(--space-2)}:root{--fast: .12s;--quick: .16s;--base: .2s;--drawer: .28s;--draw: .6s;--ambient: 12s;--settle: cubic-bezier(.2, .8, .2, 1);--leave: cubic-bezier(.4, 0, 1, 1);--stagger: 40ms}.screen{animation:screen-in var(--base) var(--settle) 60ms both}@keyframes screen-in{0%{opacity:0}to{opacity:1}}.scrim{opacity:0;transition:opacity var(--drawer) var(--leave);pointer-events:none}.scrim[data-open=true]{opacity:1;transition-timing-function:var(--settle);pointer-events:auto}.drawer{transform:translate(calc(-100% - 2px));visibility:hidden;transition:transform var(--drawer) var(--leave),visibility 0s linear var(--drawer)}.drawer[data-open=true]{transform:translate(0);visibility:visible;transition:transform var(--drawer) var(--settle),visibility 0s linear 0s}.sublevel{transform:translate(100%);visibility:hidden;transition:transform var(--drawer) var(--leave),visibility 0s linear var(--drawer)}.sublevel[data-open=true]{transform:none;visibility:visible;transition:transform var(--drawer) var(--settle),visibility 0s linear 0s}.drawer .menu-item{opacity:0;transform:translateY(6px);transition:opacity var(--base) var(--settle),transform var(--base) var(--settle)}.drawer[data-open=true] .menu-item{opacity:1;transform:none;transition-delay:calc(80ms + var(--i, 0) * var(--stagger))}.pressable .arrow{transform:translate(0);transition:transform var(--quick) var(--settle)}.pressable:active .arrow{transform:translate(4px)}.list:has(.pressable:active)>.pressable:not(:active){opacity:.55;transition:opacity var(--quick) var(--settle)}.pressable:active .label{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.tick{transition:background-color var(--fast) var(--settle)}.bar{transform:translateY(0);transition:transform var(--drawer) var(--settle)}.bar[data-hidden=true]{transform:translateY(100%);transition-timing-function:var(--leave)}.strip-line{stroke-dasharray:400;stroke-dashoffset:400;animation:strip-draw var(--draw) var(--settle) forwards}.strip-dark{opacity:0;animation:fade-in var(--quick) var(--settle) var(--draw) forwards}[data-drawn=true] .strip-line{animation:none;stroke-dashoffset:0}[data-drawn=true] .strip-dark{animation:none;opacity:1}@keyframes strip-draw{to{stroke-dashoffset:0}}@keyframes fade-in{to{opacity:1}}.photo img{animation:pan var(--ambient) linear infinite alternate}.photo[data-still=false] img{animation-play-state:paused}@keyframes pan{0%{transform:scale(1.06) translate(-1.5%)}to{transform:scale(1.06) translate(1.5%)}}@media (prefers-reduced-motion: reduce){:root{--fast: 0ms;--quick: 0ms;--base: 0ms;--drawer: 0ms;--draw: 0ms;--stagger: 0ms}.photo img,.screen,.strip-line,.strip-dark{animation:none!important}.strip-line{stroke-dashoffset:0}.strip-dark{opacity:1}}
