:root{--bg: #000000;--bg-el: #0e0e10;--surface: #1c1c1e;--surface-2: #2c2c2e;--surface-3: #3a3a3c;--label: #ffffff;--label-2: rgba(235, 235, 245, .6);--label-3: rgba(235, 235, 245, .32);--label-4: rgba(235, 235, 245, .18);--sep: rgba(84, 84, 88, .6);--sep-op: rgba(84, 84, 88, .34);--hair: .5px;--blue: #0a84ff;--green: #30d158;--red: #ff453a;--orange: #ff9f0a;--yellow: #ffd60a;--teal: #40c8e0;--grey: #8e8e93;--acc: var(--green);--acc-2: #248a3d;--on-acc: #000000;--acc-soft: color-mix(in srgb, var(--acc) 16%, transparent);--panel: var(--surface);--panel-2: var(--surface-2);--border: var(--sep);--text: var(--label);--muted: var(--label-2);--accent: var(--acc);--accent-2: var(--blue);--warn: var(--orange);--danger: var(--red);--on-accent: var(--on-acc);--r-sm: 8px;--r: 12px;--r-lg: 16px;--r-xl: 22px;--r-card: 14px;--ease: cubic-bezier(.32, .72, 0, 1);--fast: .14s;--med: .22s;color-scheme:dark;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Segoe UI,Roboto,system-ui,sans-serif;--tabbar-h: 3.5rem}:root[data-theme=light]{--bg: #f2f2f7;--bg-el: #f7f7fa;--surface: #ffffff;--surface-2: #ececef;--surface-3: #e3e3e8;--label: #000000;--label-2: rgba(60, 60, 67, .6);--label-3: rgba(60, 60, 67, .3);--label-4: rgba(60, 60, 67, .16);--sep: rgba(60, 60, 67, .29);--sep-op: rgba(60, 60, 67, .2);--blue: #007aff;--green: #34c759;--red: #ff3b30;--orange: #ff9500;--yellow: #ffcc00;--teal: #30b0c7;--grey: #8e8e93;--acc-2: #248a3d;color-scheme:light}*{box-sizing:border-box}.spinner-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg)}.spinner-inline{display:flex;justify-content:center;padding:5rem 0}.spinner{width:52px;height:52px;border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:2.4s}}.spinner-sm{width:16px;height:16px;border-width:2px;flex:none}.panel-loading{display:flex;align-items:center;gap:.5rem;margin:0;padding:.25rem 0;color:var(--muted);font-size:13px;line-height:1.38}.today-loading{padding:.75rem 0}body{margin:0;background:var(--bg);color:var(--text);font-size:17px;line-height:1.45;letter-spacing:-.012em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.readiness .score,.metric .v,.factor,.summary-totals,.dist-chip,.graph-stats,.bar-val,.bar-lbl,.wkt-meta,.app-version,table{font-variant-numeric:tabular-nums}a{color:var(--accent-2);text-decoration:none}.container{--pad-x: 1.5rem;--pad-top: 1.5rem;max-width:1120px;margin:0 auto;padding:var(--pad-top) var(--pad-x) 4rem;padding-top:calc(var(--pad-top) + env(safe-area-inset-top));padding-left:calc(var(--pad-x) + env(safe-area-inset-left));padding-right:calc(var(--pad-x) + env(safe-area-inset-right))}.app-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem}.app-bar-meta{display:flex;flex-direction:column;gap:.15rem;min-width:0;margin:.35rem 0 1.5rem}.app-bar h1{font-size:30px;line-height:1.1;font-weight:700;letter-spacing:-.026em;margin:0;min-width:0;overflow-wrap:break-word}.tag{color:var(--muted);font-size:13px;line-height:1.38;letter-spacing:-.001em}.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr))}.auth-wrap{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem;overflow:hidden;background:var(--bg)}.auth-wrap:before,.auth-wrap:after{content:"";position:absolute;border-radius:50%;filter:blur(100px);opacity:.22;z-index:0}.auth-wrap:before{width:460px;height:460px;background:radial-gradient(circle,var(--accent),transparent 70%);top:-130px;left:-110px;animation:drift-a 16s ease-in-out infinite alternate}.auth-wrap:after{width:520px;height:520px;background:radial-gradient(circle,var(--accent-2),transparent 70%);bottom:-160px;right:-130px;animation:drift-b 21s ease-in-out infinite alternate}@keyframes drift-a{0%{transform:translate(0) scale(1)}to{transform:translate(140px,90px) scale(1.15)}}@keyframes drift-b{0%{transform:translate(0) scale(1)}to{transform:translate(-130px,-100px) scale(1.1)}}@media (prefers-reduced-motion: reduce){.auth-wrap:before,.auth-wrap:after{animation:none}}.auth-card{position:relative;z-index:1}.logo{height:1.35em;width:1.35em;vertical-align:-.25em}.logo-lg{height:1.6em;width:1.6em}.identity{background:none;border:none;color:var(--muted);padding:0;font:inherit;font-weight:400;display:inline-block;max-width:24ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom;cursor:pointer;text-decoration:underline dotted;text-underline-offset:2px}.identity:hover{color:var(--label)}.identity:active{background:none;opacity:.5}.sync-line{display:block;margin-top:.2rem}.sync-line .live-dot{margin-right:.25rem}.sync-err{color:var(--danger)}.degraded{color:var(--warn)}.refreshing{margin-left:.25rem}.page-error{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:1rem}.page-error .dismiss{color:var(--danger);flex-shrink:0}.inline-error{margin:0;color:var(--danger);font-size:13px;overflow-wrap:anywhere}.inline-error button.link{margin-left:.5rem}.card .inline-error{margin-bottom:.5rem}.modal-result{margin-top:.75rem}.retry-card{display:grid;gap:.75rem;justify-items:start}.retry-card h2,.retry-card p{margin:0}.as-of{color:var(--warn);text-transform:none;letter-spacing:0}.confirm-text{color:var(--text)}.btn-link{display:inline-flex;align-items:center;padding:.55rem 1.05rem;border:none;border-radius:var(--r-sm);background:var(--surface-2);color:var(--label);text-decoration:none;font-size:15px;font-weight:600;letter-spacing:-.006em;transition:background var(--fast),transform var(--fast) var(--ease)}.btn-link:hover{background:var(--surface-3)}.btn-link:active{transform:scale(.975)}.status-banner{display:flex;align-items:center;gap:1rem;border-left:3px solid var(--sep)}.status-banner.ok{border-left-color:var(--accent)}.status-banner.warn{border-left-color:var(--warn)}.status-banner.down{border-left-color:var(--danger)}.status-banner h2{margin:0 0 .15rem}.status-icon{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:50%;font-size:1.3rem;font-weight:700;color:var(--muted);background:color-mix(in srgb,currentColor 15%,transparent);border:1px solid color-mix(in srgb,currentColor 45%,transparent);flex-shrink:0}.status-banner.ok .status-icon{color:var(--accent)}.status-banner.warn .status-icon{color:var(--warn)}.status-banner.down .status-icon{color:var(--danger)}.status-list{list-style:none;margin:.5rem 0 .75rem;padding:0;display:grid;gap:.5rem}.status-row{display:flex;align-items:center;gap:.6rem;padding:.7rem .8rem;border:none;border-radius:10px;background:var(--surface-2)}.status-dot{width:.7rem;height:.7rem;border-radius:50%;background:var(--muted);flex-shrink:0}.status-dot.ok{background:var(--accent)}.status-dot.warn{background:var(--warn)}.status-dot.down{background:var(--danger)}.comp-name{flex:1;font-size:15px;font-weight:400;letter-spacing:-.006em}.comp-status{text-transform:uppercase;font-size:11px;font-weight:500;letter-spacing:.045em}.comp-status.ok{color:var(--accent)}.comp-status.warn{color:var(--warn)}.comp-status.down{color:var(--danger)}.comp-detail{flex-basis:100%;margin-left:1.3rem}.footer-link{color:var(--muted);text-decoration:underline}.footer-link:hover{color:var(--accent-2)}.error-page{padding-top:3rem}.footer{display:flex;flex-wrap:wrap;justify-content:center;gap:.35rem;margin-top:2.5rem;padding:1.25rem 1rem calc(1.25rem + env(safe-area-inset-bottom));border-top:var(--hair) solid var(--sep);color:var(--label-3);font-size:12px}.header-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.5rem}@media (max-width: 40rem){.wide-only{display:none}}.sync-btn{display:inline-flex;align-items:center;gap:.4rem}.sync-icon{display:none;font-size:1.05rem;line-height:1}.sync-icon.spinning{animation:spin 1.1s linear infinite}@media (prefers-reduced-motion: reduce){.sync-icon.spinning{animation-duration:3s}}.app-version{font-size:12px;color:var(--label-3);letter-spacing:0}.theme-toggle{width:36px;height:36px;flex:none;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:17px;line-height:1;background:var(--surface);color:var(--label);border:none;border-radius:50%;cursor:pointer;transition:background var(--fast),transform var(--fast)}.theme-toggle:hover{background:var(--surface-2)}.theme-toggle:active{background:var(--surface-2);transform:scale(.92)}.auth-theme{margin-top:1rem;display:flex;justify-content:center}.auth-card{width:100%;max-width:380px}.auth-card h1{margin:0 0 .25rem;font-size:28px;line-height:1.12;font-weight:700;letter-spacing:-.024em}.auth-card form{margin-top:1rem}.auth-card input{width:100%}.switch{margin-top:1rem;text-align:center}.dev-code{background:color-mix(in srgb,var(--accent-2) 16%,transparent);border:none;color:var(--label);padding:.7rem .9rem;border-radius:var(--r);font-size:14px;margin-bottom:.75rem}button.link{background:none;border:none;color:var(--accent-2);padding:0;font-size:inherit;font-weight:400;cursor:pointer}button.link:active:not(:disabled){background:none;opacity:.5}button.small{padding:.35rem .8rem;font-size:13px;border-radius:7px}.connect-form input{width:100%}.type-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));gap:.75rem}.type-tile{background:var(--surface-2);border:none;border-radius:var(--r-card);padding:14px;display:flex;flex-direction:column;align-items:flex-start;gap:.2rem;cursor:pointer;color:var(--label);text-align:left;transition:background var(--fast),transform var(--fast) var(--ease)}.type-tile:hover{background:var(--surface-3)}.type-tile:active{transform:scale(.98)}.type-emoji{font-size:1.6rem}.type-name{font-size:16px;font-weight:600;letter-spacing:-.009em}.type-stat{color:var(--muted);font-size:13px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}th.sortable:hover{color:var(--text)}.th-sort{background:none;border:none;border-radius:4px;padding:0;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;white-space:nowrap;cursor:pointer}.th-sort:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.table-scope{margin:0 0 .5rem}table.is-loading{opacity:.55;transition:opacity .12s ease}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.filter-row td{padding:.4rem}select{background:var(--surface-2);border:none;border-radius:var(--r-sm);color:var(--label);padding:.45rem .6rem;font-size:15px;letter-spacing:-.006em}.detail-sub{margin:1.25rem 0 .5rem;font-size:13px;font-weight:400;letter-spacing:-.004em;text-transform:none;color:var(--muted)}.pagesize{display:inline-flex;align-items:center;gap:.4rem}.pagesize select{padding:.35rem .5rem;font-size:14px}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:.9rem}.card.today{display:grid;gap:1.25rem;padding:1.25rem 1.5rem}.today-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1rem}.card.today .today-head h2{margin:0}.program-line{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.program-name{color:var(--text);font-weight:600}.today-body{display:flex;flex-wrap:wrap;gap:1.25rem 1.5rem}.today-call{flex:3 1 26rem;min-width:0;display:grid;gap:.75rem;align-content:start}.today-call>*{margin:0}.today-why{flex:2 1 18rem;min-width:0;display:grid;gap:.75rem;align-content:start}.panel-label{display:flex;align-items:center;gap:.5rem;margin:0;font-size:13px;font-weight:400;letter-spacing:-.004em;text-transform:none;color:var(--muted)}.session{display:grid;gap:.5rem;padding:.85rem 1rem;background:var(--surface-2);border-radius:var(--r)}.session button.secondary{background:var(--surface-3)}.session .success-msg{margin:0}.program-today{margin:0;font-weight:600;color:var(--text)}.send-target{margin:0;font-size:13px}.stale-note{display:grid;justify-items:start;gap:.5rem;padding:.75rem .9rem;border:none;border-radius:var(--r);background:color-mix(in srgb,var(--warn) 16%,var(--surface));color:var(--label);font-size:15px;letter-spacing:-.006em}.stale-note p{margin:0}.today-pending{display:grid;gap:.35rem}.today-pending>*{margin:0}.today-pending .headline{color:var(--muted)}.source-line{font-size:13px}.why-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.load-readout{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;padding-top:.75rem;border-top:var(--hair) solid var(--sep)}.load-readout .v{display:flex;align-items:center;gap:.5rem}.live-state{display:inline-flex;align-items:center;gap:.35rem;letter-spacing:.05em}.live-state .live-dot{margin-left:0}.live-state.reconnecting{color:var(--warn)}.today-readings{display:grid;gap:.5rem;padding-top:1rem;border-top:var(--hair) solid var(--sep)}.this-month{margin-top:2.5rem}.month-delta{display:inline-flex;align-items:baseline;gap:.15rem;font-weight:500}.month-delta.up{color:var(--green)}.month-delta.down{color:var(--red)}.delta-icon{font-size:.7em;line-height:1}.month-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:1.25rem;align-items:start}.chart-legend{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin-top:.5rem;font-size:.8rem;color:var(--label-2)}.legend-item{display:inline-flex;align-items:center;gap:.4rem}.legend-swatch{width:.75rem;height:.2rem;border-radius:1px}.top-sport{width:100%}.recent-training{margin-top:2.5rem}.card-heading-aside{text-transform:none;letter-spacing:0;font-weight:400}.month-line{margin:1rem 0 0;padding-top:.75rem;border-top:var(--hair) solid var(--sep)}.section-heading{margin:0;font-size:20px;line-height:1.2;font-weight:600;letter-spacing:-.021em;color:var(--label)}.table-scroll{overflow-x:auto}.field{display:flex;flex-direction:column;gap:.35rem;font-size:13px;color:var(--muted)}.field input,.field select,.field textarea{width:100%}.field-row{display:flex;gap:1rem;flex-wrap:wrap}.field-row .field{flex:1;min-width:140px}.sport-choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(130px,100%),1fr));gap:.4rem}.choice{display:flex;align-items:center;gap:.4rem;background:var(--surface-2);border:none;border-radius:10px;padding:.55rem .7rem;cursor:pointer;color:var(--label);font-size:15px;letter-spacing:-.006em;transition:background var(--fast)}.choice:hover{background:var(--surface-3)}.choice:has(input:checked){background:var(--acc-soft);color:var(--acc)}.choice input{width:auto;min-width:0;flex:none;margin:0;accent-color:var(--accent)}.hint{font-size:13px;color:var(--muted)}.plan-item{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:var(--surface-2);border:none;border-radius:var(--r);padding:.8rem .9rem;flex-wrap:wrap}.plan-info{display:flex;flex-direction:column;gap:.2rem;min-width:0}.plan-name{font-weight:600;display:flex;align-items:center;gap:.5rem}button.danger-btn{color:var(--danger);border-color:var(--danger)}.workout-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem}.workout-summary{background:transparent;border:none;color:var(--text);text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:.15rem;padding:0;flex:1 1 16rem;min-width:0}.workout-summary:hover .wkt-title{color:var(--accent-2)}.wkt-title{font-size:17px;font-weight:600;letter-spacing:-.012em;transition:color var(--fast)}.wkt-dl{white-space:nowrap}.wkt-actions{margin-top:1rem}.wkt-note{margin-top:.75rem}.wkt-help{display:grid;gap:.4rem;margin-top:.75rem;max-width:70ch}.wkt-help p{margin:0}.success-msg{color:var(--acc);font-size:15px;margin:.6rem 0 0}.wkt-steps{list-style:none;margin:.75rem 0 0;padding:0;display:grid;gap:.4rem}.wkt-step{display:flex;justify-content:space-between;align-items:center;gap:1rem;background:var(--surface-2);border-left:3px solid var(--sep);border-radius:var(--r-sm);padding:.6rem .8rem;font-size:15px;letter-spacing:-.006em}.wkt-step.warmup{border-left-color:var(--accent-2)}.wkt-step.active{border-left-color:var(--accent)}.wkt-step.recovery{border-left-color:var(--muted)}.wkt-step.cooldown{border-left-color:var(--accent-2)}.wkt-step.rest{border-left-color:var(--warn)}.wkt-meta{color:var(--muted);font-size:13px;white-space:nowrap}.wkt-exercise{border-left:0;justify-content:flex-start;align-items:center;gap:.75rem}.wkt-figure{flex:none;width:50px;height:50px;display:grid;place-items:center;color:var(--acc);background:var(--surface-3);border:none;border-radius:9px}.wkt-exercise-text{display:flex;flex-direction:column;gap:.15rem;min-width:0}.wkt-exercise .wkt-meta{white-space:normal}.exercise-icon{display:block}.charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:1.25rem;margin-top:.5rem}.bars{display:flex;align-items:flex-end;gap:.4rem;height:120px}.bar-col{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;height:100%;gap:.25rem}.bar-track{flex:1;width:100%;display:flex;align-items:flex-end;border-bottom:var(--hair) solid var(--sep)}.bar{width:100%;border-radius:3px 3px 0 0;background:var(--acc)}.bar.hr{background:var(--danger)}.bar.power{background:var(--accent-2)}.bar-lbl{font-size:11px;color:var(--label-3)}.bar-val{font-size:12px;color:var(--label);font-weight:500;min-height:1rem}.summary-totals em{font-style:normal;font-size:13px;color:var(--muted);margin-left:.25rem}.summary-totals small{font-size:12px;font-weight:400;color:var(--muted)}.card{background:var(--surface);border:none;border-radius:var(--r-card);padding:16px}.card h2,.card h3.card-heading{margin:0 0 12px;font-size:13px;font-weight:400;letter-spacing:-.004em;text-transform:none;color:var(--muted)}.readiness{display:flex;align-items:baseline;gap:.6rem}.readiness.stale .score{color:var(--muted)}.readiness.stale .pill{background:transparent;border:1px solid currentColor}.readiness .score{font-size:44px;font-weight:700;line-height:1;letter-spacing:-.03em}.headline{font-size:22px;line-height:1.18;font-weight:600;letter-spacing:-.021em;margin:.35rem 0 .75rem}.narrative{color:var(--text);white-space:pre-wrap}.pill{display:inline-flex;align-items:center;padding:.2rem .65rem;border-radius:999px;font-size:12px;font-weight:500;text-transform:capitalize;letter-spacing:0}.pill.rest{background:color-mix(in srgb,var(--danger) 15%,transparent);color:var(--danger)}.pill.easy{background:color-mix(in srgb,var(--accent-2) 15%,transparent);color:var(--accent-2)}.pill.moderate{background:color-mix(in srgb,var(--warn) 15%,transparent);color:var(--warn)}.pill.hard{background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.factors{list-style:none;padding:0;margin:0;display:grid;gap:.5rem}.factor{display:grid;grid-template-columns:1.1rem minmax(0,1fr) auto;align-items:baseline;gap:.6rem;padding:.6rem .8rem .6rem .65rem;background:var(--surface-2);border-radius:10px}.factor .impact{font-weight:700;font-size:1rem;text-align:center;color:var(--muted)}.factor .impact.positive{color:var(--accent)}.factor .impact.negative{color:var(--danger)}.factor-text{display:grid;gap:.1rem;min-width:0;overflow-wrap:anywhere}.factor-name{font-size:15px;letter-spacing:-.006em;color:var(--label)}.factor-detail{font-size:13px;color:var(--muted)}.factor-value{font-size:17px;font-weight:600;letter-spacing:-.012em;color:var(--label);text-align:right;overflow-wrap:anywhere}table{width:100%;border-collapse:collapse;font-size:15px;letter-spacing:-.006em}th,td{text-align:left;padding:.6rem .4rem;border-bottom:var(--hair) solid var(--sep)}tbody tr:last-child td{border-bottom:0}th{color:var(--label-3);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.045em}button{background:var(--acc);color:var(--on-acc);border:none;border-radius:var(--r-sm);padding:.55rem 1.05rem;font-size:15px;font-weight:600;letter-spacing:-.006em;line-height:1.3;cursor:pointer;transition:transform var(--fast) var(--ease),background var(--fast),opacity var(--fast)}button:active:not(:disabled){transform:scale(.975);filter:brightness(.92)}button.secondary{background:var(--surface-2);color:var(--label);border:none}button.secondary:active:not(:disabled){background:var(--surface-3)}button.tinted{background:var(--acc-soft);color:var(--acc)}button:disabled{opacity:.32;cursor:default}.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}input:not([type=checkbox]):not([type=radio]),textarea{background:var(--surface-2);border:none;border-radius:var(--r-sm);color:var(--label);padding:.6rem .8rem;font-size:16px;letter-spacing:-.009em;min-width:220px;transition:box-shadow var(--fast)}textarea{font-family:inherit;line-height:1.45;resize:vertical;width:100%}input::placeholder,textarea::placeholder{color:var(--label-3)}input:focus,textarea:focus{outline:none;box-shadow:inset 0 0 0 2px var(--acc)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2.5px solid var(--acc);outline-offset:2px}button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2.5px solid var(--acc);outline-offset:2px;border-radius:6px}.card.login{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent-2) 55%,transparent)}.metrics-strip{display:flex;flex-wrap:wrap;gap:1.25rem}.summary-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.summary-totals{display:flex;flex-wrap:wrap;gap:.4rem 1rem;color:var(--muted);font-size:15px}.summary-totals strong{color:var(--label);font-size:17px;font-weight:600;letter-spacing:-.012em}.metric{display:flex;flex-direction:column}.metric .v{font-size:26px;font-weight:600;line-height:1.1;letter-spacing:-.026em}.metric .unit{font-size:13px;font-weight:400;color:var(--muted);letter-spacing:-.001em}.metric .l{color:var(--muted);font-size:13px;font-weight:400;text-transform:none;letter-spacing:-.004em}tr.clickable{cursor:pointer;transition:background .12s ease}tr.clickable:hover,tr.clickable:focus-within{background:var(--surface-2)}button.row-open{background:transparent;border:0;padding:0;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:4px}button.row-open:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}td.chev{text-align:right;color:var(--muted);font-size:1.2rem;width:1.5rem}.info-btn{background:transparent;color:var(--accent-2);border:none;padding:0;font-size:13px;font-weight:400;cursor:pointer}.info-btn:hover{opacity:.7}.info-btn:active:not(:disabled){background:none;opacity:.5}.explain{margin:.5rem 0 0}.explain dt{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-weight:600;color:var(--text);margin-top:1rem}.explain dd{margin:.35rem 0 0;color:var(--muted);font-size:15px;letter-spacing:-.006em}.explain strong{color:var(--text)}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:var(--surface-2);border-radius:6px;padding:.05rem .4rem;font-size:13px;color:var(--label)}.modal-dialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;border:none;background:transparent;color:var(--text);padding:4vh 1rem;overflow-y:auto}.modal-dialog[open]{display:flex;align-items:flex-start;justify-content:center}.modal-dialog::backdrop{background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}html.modal-open{overflow:hidden}.modal-error{margin:.75rem 0}.modal-header h2{min-width:0;overflow-wrap:anywhere}.modal{background:var(--bg-el);border:none;border-radius:var(--r-lg);padding:1.25rem 1.4rem 1.5rem;width:100%;max-width:720px;box-shadow:0 20px 60px -12px #00000080;animation:modal-pop .28s var(--ease)}:root[data-theme=light] .modal{background:#fff}@keyframes modal-pop{0%{transform:scale(.96);opacity:0}to{transform:none;opacity:1}}.modal-grab{display:none;flex:0 0 100%;height:5px;margin:6px 0 9px}.modal-grab:after{content:"";display:block;width:36px;height:5px;margin:0 auto;border-radius:99px;background:var(--label-4)}.modal-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.25rem}.modal-header h2{margin:0;font-size:20px;font-weight:600;text-transform:none;letter-spacing:-.021em;color:var(--label)}button.close{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;padding:0;font-size:13px;line-height:1;border-radius:50%;background:var(--surface-2);color:var(--label-2)}button.close:active:not(:disabled){background:var(--surface-3);transform:scale(.92)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(130px,100%),1fr));gap:.75rem;margin:1rem 0}.detail-grid .metric{background:var(--surface-2);border-radius:var(--r);padding:.75rem .85rem;gap:.15rem}.detail-grid .metric .l{order:-1}.detail-grid .metric .v{font-size:22px}.live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);vertical-align:middle;margin-left:.35rem;box-shadow:0 0 color-mix(in srgb,var(--accent) 60%,transparent);animation:live-pulse 2s infinite}@keyframes live-pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--accent) 50%,transparent)}70%{box-shadow:0 0 0 6px transparent}to{box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion: reduce){.live-dot{animation:none}}.zone-block{background:var(--surface-2);border-radius:var(--r);padding:.7rem .8rem;margin:.6rem 0}.zone-label{font-size:13px;color:var(--muted)}.zone-bar{display:flex;height:14px;margin:.45rem 0 .5rem;border-radius:999px;overflow:hidden;background:var(--surface-3)}.zone-seg{display:block;height:100%}.zone-legend{display:flex;flex-wrap:wrap;gap:.3rem .75rem;font-size:12px;color:var(--muted)}.zone-key{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}.zone-dot{width:8px;height:8px;border-radius:50%;flex:none}.zone-time{color:var(--text);font-variant-numeric:tabular-nums}.curve{background:var(--surface-2);border-radius:var(--r);padding:.7rem .8rem;margin:.6rem 0 1rem}.curve-head{display:flex;gap:.9rem;font-size:12px;color:var(--muted);margin-bottom:.4rem}.curve-key{display:inline-flex;align-items:center;gap:.3rem}.curve-swatch{width:14px;height:2px;border-radius:1px;flex:none}.curve-swatch.ride{background:var(--accent)}.curve-swatch.best{background:var(--label-3)}.curve-svg{display:block;width:100%;height:96px;overflow:visible}.curve-line{stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.curve-line.ride{stroke:var(--accent)}.curve-line.best{stroke:var(--label-3);stroke-width:1.5;stroke-dasharray:3 3}.curve-axis{display:flex;justify-content:space-between;font-size:10px;color:var(--label-3);margin-top:.3rem;font-variant-numeric:tabular-nums}@media (max-width: 480px){.curve-axis span:nth-child(2n){display:none}}.curve-peaks{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(90px,100%),1fr));gap:.5rem;margin-top:.7rem}.curve-peaks .metric{background:var(--surface-3);border-radius:var(--r-sm);padding:.5rem .6rem;gap:.1rem}.curve-peaks .metric .l{order:-1;font-size:11px}.curve-peaks .metric .v{font-size:17px;font-variant-numeric:tabular-nums}.graphs{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(240px,100%),1fr));gap:.9rem;margin:1rem 0}.graph{background:var(--surface-2);border-radius:var(--r);padding:.7rem .8rem}.graph-head{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin-bottom:.35rem}.graph-title{font-weight:500;font-size:15px;letter-spacing:-.006em}.graph-stats{font-size:12px;color:var(--muted);text-align:right}.graph-svg{display:block;width:100%;height:64px;overflow:visible}.graph.clickable{width:100%;text-align:left;font:inherit;color:inherit;border:none;cursor:pointer;transition:background var(--fast),transform var(--fast) var(--ease)}.graph.clickable:hover,.graph.clickable:focus-visible{background:var(--surface-3)}.graph.clickable:active{transform:scale(.99)}.graph-link{color:var(--acc);font-weight:500;font-size:13px;white-space:nowrap}.analysis{margin:0 0 .9rem;padding:.85rem 1rem;background:var(--surface-2);border:none;border-radius:var(--r)}.analysis .tag{display:block;margin-bottom:.35rem}.analysis-text{margin:0;font-size:15px;line-height:1.47;letter-spacing:-.006em;color:var(--label)}.analysis-text.muted{color:var(--muted)}details.raw{margin-top:.5rem;border-top:var(--hair) solid var(--sep);padding-top:.75rem}details.raw summary{cursor:pointer;color:var(--muted);font-size:13px}details.raw pre{background:var(--surface-2);border:none;border-radius:10px;padding:.8rem;overflow:auto;max-height:320px;font-size:12px;color:var(--muted)}.error{background:color-mix(in srgb,var(--danger) 15%,transparent);border:none;color:var(--danger);padding:.8rem 1rem;border-radius:var(--r);font-size:15px;letter-spacing:-.006em}.stack{display:grid;gap:1rem}.rating-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;margin:.6rem 0 .9rem}.rating-emojis{display:flex;gap:.35rem}.rating-btn{background:var(--surface-2);border:none;border-radius:999px;padding:.35rem .55rem;font-size:1.35rem;line-height:1;cursor:pointer;filter:grayscale(.7);opacity:.75;transition:transform var(--fast) var(--ease),filter var(--fast),opacity var(--fast),background var(--fast)}.rating-btn:hover:not(:disabled){transform:scale(1.12);filter:grayscale(0);opacity:1}.rating-btn.active{filter:grayscale(0);opacity:1;background:var(--acc-soft);box-shadow:inset 0 0 0 1.5px var(--acc)}.rating-btn:disabled{cursor:default}.rating-inline{margin-left:.3rem}.motivation{display:flex;align-items:flex-start;gap:.7rem;padding:.85rem 1rem;margin-bottom:.75rem;border:none;border-radius:var(--r);background:color-mix(in srgb,var(--warn) 16%,var(--surface))}.motivation-msg{margin:0 0 .2rem;color:var(--label);font-size:15px;letter-spacing:-.006em}.schedule-modal{max-width:780px}.sched-week{margin-bottom:.5rem}.sched-list{list-style:none;margin:.4rem 0 0;padding:0;display:grid;gap:.4rem}.sched-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.6rem .8rem;border:none;border-left:3px solid var(--sep);border-radius:10px;background:var(--surface-2)}.sched-row.completed{border-left-color:var(--accent)}.sched-row.missed{border-left-color:var(--danger)}.sched-row.today{border-left-color:var(--accent-2)}.sched-date-input{font-variant-numeric:tabular-nums;color:var(--label);background:var(--surface-3);border:none;border-radius:var(--r-sm);padding:.35rem .5rem;font-size:14px;cursor:pointer}.sched-date-input:hover:not(:disabled){background:var(--surface-2)}.sched-date-input:disabled{opacity:.6;cursor:default}.sched-sport{flex:1 1 8rem}.sched-status{font-size:13px;font-weight:500}.sched-status.completed{color:var(--accent)}.sched-status.missed{color:var(--danger)}.sched-status.today{color:var(--accent-2)}.sched-status.upcoming{color:var(--muted)}.sched-move{display:inline-flex;align-items:center;gap:.4rem;margin-left:auto}.sched-move input[type=date]{padding:.3rem .4rem}.sched-moved{font-style:italic}.pwa-install{position:fixed;left:max(.75rem,env(safe-area-inset-left));right:max(.75rem,env(safe-area-inset-right));bottom:calc(.75rem + env(safe-area-inset-bottom));z-index:50;display:flex;align-items:center;gap:.75rem;padding:.75rem;border:none;border-radius:var(--r-lg);background:var(--bg-el);box-shadow:0 10px 30px -6px #00000080}.pwa-install img{border-radius:10px;flex-shrink:0}.pwa-install-copy{display:flex;flex-direction:column;gap:.15rem;min-width:0;font-size:15px}.pwa-install-copy .tag{margin:0;font-size:13px}.pwa-install-go{flex-shrink:0;padding:.5rem .95rem;font-size:15px}.pwa-install-x{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:30px;height:30px;padding:0;border-radius:50%;font-size:13px}.tabbar{display:none}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:.4rem .25rem;color:var(--label-3);text-decoration:none;font-size:10px;font-weight:500;letter-spacing:.005em;transition:color var(--fast);-webkit-tap-highlight-color:transparent}.tab .tab-icon{color:var(--label);opacity:.45;stroke-width:1.7}.tab.active{color:var(--acc)}.tab.active .tab-icon{color:inherit;opacity:1;stroke-width:2}.tab-icon{width:25px;height:25px;transition:opacity var(--fast)}.activity-cards{display:none;list-style:none;margin:0;padding:0;gap:.5rem}.activity-cards.is-loading{opacity:.55;transition:opacity .12s ease}.activity-card{width:100%;min-height:60px;display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;background:var(--surface-2);border:none;border-radius:var(--r-card);color:var(--label);font:inherit;text-align:left;cursor:pointer;transition:background var(--fast)}.activity-card:active{background:var(--surface-3)}.ac-main{flex:1;min-width:0;display:grid;gap:.2rem}.ac-head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.ac-type{min-width:0;font-size:16px;font-weight:500;letter-spacing:-.009em;overflow-wrap:anywhere}.ac-date{flex:none;color:var(--muted);font-size:13px;white-space:nowrap}.ac-stats{display:flex;flex-wrap:wrap;gap:.1rem .5rem;color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}.ac-stats span:not(:last-child):after{content:" ·";opacity:.55}.ac-chev{flex:none;color:var(--label-3);font-size:1.2rem}.ac-empty{padding:.4rem 0}.list-controls{display:none;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.75rem}.list-controls label{display:inline-flex;align-items:center;gap:.4rem}.pwa-offline{position:fixed;left:0;right:0;bottom:env(safe-area-inset-bottom);z-index:44;padding:.4rem 1rem;background:var(--surface-2);border-top:var(--hair) solid var(--sep-op);border-bottom:0;color:var(--label-2);font-size:12px;text-align:center}@media (max-width: 40rem){.container{--pad-x: 1rem;--pad-top: .5rem;padding-bottom:2rem}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;min-height:var(--tabbar-h);background:color-mix(in srgb,var(--bg-el) 94%,transparent);-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-top:var(--hair) solid var(--sep-op);padding-bottom:env(safe-area-inset-bottom)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.tabbar,.app-bar{background:var(--bg-el)}}.pwa-offline{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom))}.app-bar{position:sticky;top:0;z-index:30;flex-wrap:nowrap;gap:.5rem;margin-top:calc(-1 * (var(--pad-top) + env(safe-area-inset-top)));margin-left:calc(-1 * (var(--pad-x) + env(safe-area-inset-left)));margin-right:calc(-1 * (var(--pad-x) + env(safe-area-inset-right)));padding:calc(.5rem + env(safe-area-inset-top)) calc(var(--pad-x) + env(safe-area-inset-right)) .5rem calc(var(--pad-x) + env(safe-area-inset-left));background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:var(--hair) solid var(--sep-op)}.app-bar h1{font-size:22px;font-weight:700;letter-spacing:-.021em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-bar-meta{margin:.5rem 0 1rem}.header-actions{flex-wrap:nowrap;flex:none}.sync-icon{display:inline-block}.sync-label{display:none}.sync-btn{justify-content:center;width:36px;height:36px;flex:none;padding:0;border-radius:50%;background:var(--surface);font-size:17px}.card,.section-heading{scroll-margin-top:4.25rem}.card{padding:14px}.card.today{padding:14px;gap:1rem}.readiness .score{font-size:40px}input:not([type=checkbox]):not([type=radio]){min-width:0}.table-scroll{display:none}details.raw pre{white-space:pre-wrap;overflow-wrap:anywhere}.activity-cards{display:grid}.list-controls{display:flex}.modal-dialog{padding:0;overflow:hidden}.modal-dialog[open]{align-items:flex-end}.modal{max-width:none;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;border-radius:var(--r-xl) var(--r-xl) 0 0;border-bottom:0;padding:0 1rem calc(1.25rem + env(safe-area-inset-bottom));box-shadow:none;animation:sheet-up .34s var(--ease)}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.modal-grab{display:block}.modal-header{position:sticky;top:0;z-index:1;margin:0 -1rem .5rem;padding:.2rem 1rem .6rem;background:var(--bg-el);border-bottom:var(--hair) solid var(--sep)}:root[data-theme=light] .modal-header{background:#fff}.footer{margin-top:1.5rem}body:has(.tabbar) .footer{padding-bottom:calc(1.25rem + var(--tabbar-h) + env(safe-area-inset-bottom))}.pwa-install{bottom:calc(.75rem + var(--tabbar-h) + env(safe-area-inset-bottom))}body:has(.pwa-offline) .pwa-install{bottom:calc(2.6rem + var(--tabbar-h) + env(safe-area-inset-bottom))}}.sleep-stages{margin:.75rem 0 0}/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-2{margin:calc(var(--spacing) * 2)}.m-3{margin:calc(var(--spacing) * 3)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.w-full{width:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.flex-wrap{flex-wrap:wrap}.justify-center{justify-content:center}.border{border-style:var(--tw-border-style);border-width:1px}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--color-chart-1:var(--accent);--color-chart-2:var(--accent-2);--color-chart-3:var(--warn);--color-chart-4:var(--danger);--color-chart-5:var(--grey);--color-surface-100:var(--panel);--color-surface-200:var(--panel-2);--color-surface-300:var(--border);--color-surface-content:var(--text)}[data-chart-container] .lc-axis-tick-label,[data-chart-container] .lc-axis-label{font-variant-numeric:tabular-nums;font-size:11.5px}[data-chart-container] .lc-tooltip-container{background-color:var(--surface-2)}@supports (color:color-mix(in lab,red,red)){[data-chart-container] .lc-tooltip-container{background-color:color-mix(in srgb,var(--surface-2) 88%,transparent)}}[data-chart-container] .lc-tooltip-container{-webkit-backdrop-filter:saturate(180%)blur(20px);backdrop-filter:saturate(180%)blur(20px);color:var(--label);font-variant-numeric:tabular-nums;border-radius:10px}[data-chart-container].chart-interactive .lc-tooltip-context{cursor:crosshair}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
