.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}:root{--bg:#f5f4f0;--surface:#fff;--surface-2:#eeece6;--text:#1a1a17;--muted:#5c5a53;--border:#d9d6cd;--border-strong:#8a867c;--accent:#0b6b66;--on-accent:#fff;--accent-soft:#e0efed;--good:#1d7a3a;--good-soft:#e3f2e7;--warn:#8f5300;--warn-bg:#fbeedd;--danger:#b8322a;--danger-soft:#fbe5e6;--grid:#e6e3db;--series-1:#2a78d6;--series-2:#eb6834;--phase-peak:#7a4cc2;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--fs-xs:.8125rem;--fs-sm:.875rem;--fs-base:1rem;--fs-md:1.125rem;--fs-lg:1.375rem;--fs-xl:1.75rem;--fs-display:2.5rem;--fw-regular:400;--fw-semibold:600;--fw-bold:750;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--r-sm:8px;--r-md:14px;--r-lg:20px;--r-pill:999px;--shadow-overlay:0 8px 28px #14120c2e, 0 1px 3px #14120c1f;--dur-disclosure:.18s;--dur-toast:.2s;--dur-sheet:.24s;--app-w:640px;--tabbar-h:60px;--appbar-h:57px;--tap:44px;--composer-h:76px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111312;--surface:#1a1d1b;--surface-2:#232724;--text:#ebe9e3;--muted:#a29f96;--border:#30342f;--border-strong:#6e726b;--accent:#4fc9bd;--on-accent:#0c1a19;--accent-soft:#17332f;--good:#4cc26a;--good-soft:#15291b;--warn:#e0a33a;--warn-bg:#2e2512;--danger:#ff7a6e;--danger-soft:#341819;--grid:#2a2e2a;--series-1:#3987e5;--series-2:#d95926;--phase-peak:#a888ec;--shadow-overlay:0 10px 32px #00000080, 0 1px 3px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#111312;--surface:#1a1d1b;--surface-2:#232724;--text:#ebe9e3;--muted:#a29f96;--border:#30342f;--border-strong:#6e726b;--accent:#4fc9bd;--on-accent:#0c1a19;--accent-soft:#17332f;--good:#4cc26a;--good-soft:#15291b;--warn:#e0a33a;--warn-bg:#2e2512;--danger:#ff7a6e;--danger-soft:#341819;--grid:#2a2e2a;--series-1:#3987e5;--series-2:#d95926;--phase-peak:#a888ec;--shadow-overlay:0 10px 32px #00000080, 0 1px 3px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:var(--fs-base);-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;margin:0;line-height:1.5}h1,h2,h3,h4{line-height:1.2}h2{font-size:var(--fs-md);font-weight:var(--fw-semibold);margin:0 0 var(--sp-2)}h3{font-size:var(--fs-base);font-weight:var(--fw-semibold)}h4{font-size:var(--fs-sm);font-weight:var(--fw-semibold)}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}input,select,textarea{font:inherit;font-size:var(--fs-base);font-weight:var(--fw-regular);min-height:var(--tap);border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text);padding:10px 12px}textarea{resize:vertical;line-height:1.45}input[type=file]{min-height:0;padding:var(--sp-2)}input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true]{border-color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}table{border-collapse:collapse;width:100%;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}th,td{text-align:left;padding:6px var(--sp-2);border-bottom:1px solid var(--border)}th{background:var(--surface);position:sticky;top:0}th.num,td.num{text-align:right}details summary{cursor:pointer;min-height:var(--tap);font-size:var(--fs-sm);color:var(--muted);padding-block:11px}pre.steps{padding:var(--sp-2) 10px;background:var(--surface-2);border-radius:var(--r-sm);font-family:inherit;font-size:var(--fs-sm);white-space:pre-wrap;margin:6px 0 0}.muted{color:var(--muted)}.error{color:var(--danger);margin:0}.small{font-size:var(--fs-sm)}.mono{font-variant-numeric:tabular-nums}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.stack{gap:var(--sp-4);flex-direction:column;display:flex}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important}:not(.spinner),:not(.spinner):before,:not(.spinner):after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.icon{vertical-align:-.2em;flex-shrink:0;display:inline-block}.btn,.btn-ghost{justify-content:center;align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:10px var(--sp-4);border-radius:var(--r-sm);font:inherit;font-weight:var(--fw-semibold);text-align:center;cursor:pointer;line-height:1.25;text-decoration:none;display:inline-flex;position:relative}.btn,.btn--primary{border:1px solid var(--accent);background:var(--accent);color:var(--on-accent)}.btn-ghost,.btn.btn--secondary{border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.btn.btn--ghost{color:var(--accent);background:0 0;border:1px solid #0000}.btn.btn--danger{border:1px solid var(--danger);background:var(--danger);color:var(--on-accent)}.btn.btn--warn{border-color:var(--warn);color:var(--warn);background:var(--surface)}.btn--lg{min-height:52px;padding:12px var(--sp-5);font-size:var(--fs-base)}.btn--block{width:100%}.btn:disabled:not([aria-busy=true]),.btn-ghost:disabled{border-color:var(--border);background:var(--surface-2);color:var(--muted);cursor:not-allowed}.btn.btn--ghost:disabled:not([aria-busy=true]){background:0 0;border-color:#0000}.btn[aria-busy=true]{cursor:progress}@media (hover:hover){.btn--primary:not(:disabled):hover,.btn:not([class*=btn--]):not(:disabled):hover{background:color-mix(in srgb, var(--accent) 88%, var(--text))}.btn-ghost:not(:disabled):hover,.btn--secondary:not(:disabled):hover,.btn--ghost:not(:disabled):hover{background:var(--surface-2)}}.btn-small{min-height:36px;padding:6px var(--sp-3);font-size:var(--fs-sm)}.btn-small:after,.chip:after{content:"";position:absolute;inset:-5px 0}.btn-danger,.btn.btn-danger{color:var(--danger)}button.linklike{font:inherit;color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:0;padding:0;text-decoration:underline}.icon-btn{width:var(--tap);height:var(--tap);border-radius:var(--r-pill);color:var(--text);cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:inline-flex}@media (hover:hover){.icon-btn:hover{background:var(--surface-2)}}.chip{min-height:36px;padding:4px var(--sp-3);border:1px solid var(--border);border-radius:var(--r-pill);background:var(--surface-2);color:var(--text);font:inherit;font-size:var(--fs-sm);white-space:nowrap;cursor:pointer;align-items:center;display:inline-flex;position:relative}.chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:var(--fw-semibold)}.chips{gap:var(--sp-2);margin:var(--sp-1) 0 10px;flex-wrap:wrap;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-4)}.card--pending{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.card h1{font-size:var(--fs-lg);margin-top:0}.section-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2);flex-wrap:wrap;display:flex}.section-head h2,.section-head h3{margin:0}.section-action{gap:var(--sp-2);margin-left:auto;display:flex}.list-row{align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:var(--sp-2) 0;border:0;border-bottom:1px solid var(--border);color:inherit;font:inherit;text-align:left;background:0 0;text-decoration:none;display:flex}.list-row:last-child{border-bottom:0}.list-row--action{cursor:pointer}.list-row-start{color:var(--muted);flex-shrink:0}.list-row-main{flex-direction:column;flex:1;min-width:0;display:flex}.list-row-title,.list-row-meta{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.list-row-title{font-weight:var(--fw-semibold)}.list-row-meta{font-size:var(--fs-sm);color:var(--muted)}.list-row-end{font-variant-numeric:tabular-nums;flex-shrink:0}.list-row-chev{color:var(--muted)}.disclosure>summary{align-items:center;gap:var(--sp-2);min-height:var(--tap);color:var(--text);font-size:var(--fs-base);font-weight:var(--fw-semibold);padding-block:10px;list-style:none;display:flex}.disclosure>summary::-webkit-details-marker{display:none}.disclosure-summary{flex:1;min-width:0}.disclosure-chev{color:var(--muted);transition:transform var(--dur-disclosure) ease}.disclosure[open]>summary .disclosure-chev{transform:rotate(180deg)}.disclosure-body{padding-bottom:var(--sp-2)}.disclosure--quiet>summary{font-size:var(--fs-sm);font-weight:var(--fw-regular);color:var(--muted)}.disclosure--quiet>.disclosure-body{padding-bottom:0}.segmented{gap:var(--sp-1);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);padding:3px;display:flex;overflow-x:auto}.segmented-inline{margin-bottom:10px}.segmented button{min-height:var(--tap);color:var(--muted);font:inherit;font-size:var(--fs-sm);font-weight:var(--fw-semibold);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-radius:11px;flex:1;padding:6px 10px}.segmented button[aria-checked=true],.segmented button[aria-pressed=true]{background:var(--accent);color:var(--on-accent);font-weight:var(--fw-bold)}.tag{align-items:center;gap:var(--sp-1);padding:1px var(--sp-2);border:1px solid var(--border);border-radius:var(--r-pill);color:var(--text);font-size:var(--fs-sm);white-space:nowrap;line-height:1.4;display:inline-flex}.tag--muted{color:var(--muted)}.tag--accent{background:var(--accent-soft);color:var(--accent);border-color:#0000}.tag--good{background:var(--good-soft);color:var(--good);border-color:#0000}.tag--warn,.tag-warning{background:var(--warn-bg);color:var(--warn);border-color:#0000}.tag--danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.stat{flex-direction:column;min-width:0;display:flex}.stat-label{font-size:var(--fs-xs);color:var(--muted)}.stat-value{font-size:var(--fs-lg);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;line-height:1.15}.stat--big .stat-value{font-size:var(--fs-display)}.stat-unit{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--muted)}.stat-delta{font-size:var(--fs-xs);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}.tone-good{color:var(--good)}.tone-warn{color:var(--warn)}.tone-danger{color:var(--danger)}.tone-muted,.tone-neutral{color:var(--muted)}.tone-accent{color:var(--accent)}.badge{border-radius:var(--r-pill);background:var(--danger);min-width:20px;height:20px;color:var(--on-accent);font-size:var(--fs-xs);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;line-height:1;display:inline-flex}.skeleton-block{gap:var(--sp-2);flex-direction:column;display:flex}.skeleton{border-radius:var(--r-sm);background:linear-gradient(90deg, var(--surface-2) 0%, color-mix(in srgb, var(--surface-2) 55%, var(--surface)) 50%, var(--surface-2) 100%);background-size:200% 100%;width:100%;animation:1.4s ease-in-out infinite skeleton-shine;display:block}.skeleton-line{height:14px}@keyframes skeleton-shine{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;flex:none;width:14px;height:14px;animation:.8s linear infinite spin}.btn .spinner{border-color:color-mix(in srgb, currentColor 35%, transparent);border-top-color:currentColor}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.empty-state{align-items:center;gap:var(--sp-2);padding:var(--sp-5) var(--sp-4);text-align:center;flex-direction:column;display:flex;position:relative;overflow:hidden}.contours{width:100%;height:100%;color:var(--border);pointer-events:none;position:absolute;inset:auto 0 0}.empty-state>:not(.contours){position:relative}.empty-state>.contours{opacity:.6;height:55%}.empty-state-icon{color:var(--accent)}.empty-state-text{max-width:34ch;color:var(--muted)}.empty-state-text p{margin:0}.state-box{gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);display:flex}.state-box--danger{background:var(--danger-soft);color:var(--text)}.state-box--danger .state-box-icon{color:var(--danger)}.state-box--warn{background:var(--warn-bg)}.state-box--warn .state-box-icon{color:var(--warn)}.state-box-icon{margin-top:2px}.state-box-body{align-items:flex-start;gap:var(--sp-2);flex-direction:column;min-width:0;display:flex}.state-box-body p{margin:0}.state-box-title{font-weight:var(--fw-semibold)}.state-box--compact{align-items:flex-start;gap:var(--sp-2);margin-block:var(--sp-1);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm)}.state-box--compact .state-box-icon{margin-top:calc((var(--tap) - 20px) / 2);flex:none}.state-box--compact .state-box-body>p{min-height:var(--tap);flex:12em;align-items:center;display:flex}.state-box--compact .state-box-body{flex-flow:wrap;flex:1;justify-content:space-between;align-items:center}.state-box-text{color:var(--text)}.notice{padding:var(--sp-3) 14px;border-radius:var(--r-md);background:var(--warn-bg);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent);margin:0}.notice--danger{background:var(--danger-soft);border-color:color-mix(in srgb, var(--danger) 35%, transparent)}.notice--good{background:var(--good-soft);border-color:color-mix(in srgb, var(--good) 35%, transparent)}.notice--info{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 30%, transparent)}.notice-row{align-items:flex-start;gap:10px;display:flex}.notice-icon{color:var(--warn);margin-top:2px}.notice--danger .notice-icon{color:var(--danger)}.notice--good .notice-icon{color:var(--good)}.notice--info .notice-icon{color:var(--accent)}.notice-text{min-width:0}.notice-text p{margin:0}.toast-region{left:0;right:0;bottom:calc(var(--tabbar-h) + 12px + env(safe-area-inset-bottom));z-index:60;padding:0 var(--sp-4);pointer-events:none;justify-content:center;display:flex;position:fixed}:root:has(.composer) .toast-region{bottom:calc(var(--tabbar-h) + 12px + var(--composer-h) + env(safe-area-inset-bottom))}.toast{width:min(100%,520px);min-height:52px;padding:6px 6px 6px var(--sp-4);border-radius:var(--r-md);background:var(--text);color:var(--bg);box-shadow:var(--shadow-overlay);pointer-events:auto;animation:toast-in var(--dur-toast) ease-out;align-items:center;gap:10px;display:flex}.toast--success .toast-icon{color:color-mix(in srgb, var(--good) 55%, var(--bg))}.toast--error{background:var(--danger);color:var(--on-accent)}.toast-text{flex:1;min-width:0}.toast-action,.toast-close{min-width:var(--tap);min-height:var(--tap);border-radius:var(--r-sm);color:inherit;font:inherit;font-weight:var(--fw-bold);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;padding:0 10px;display:inline-flex}.toast-action{text-decoration:underline}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.sheet{border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--surface);width:100%;max-width:100%;max-height:92dvh;color:var(--text);box-shadow:var(--shadow-overlay);border:0;margin:auto 0 0;padding:0}.sheet[open]{animation:sheet-up var(--dur-sheet) ease-out}.sheet::backdrop{background:#0a0a0873}.sheet-panel{gap:var(--sp-3);padding:var(--sp-2) var(--sp-4) calc(var(--sp-4) + env(safe-area-inset-bottom));flex-direction:column;display:flex}.sheet-head{align-items:center;gap:var(--sp-2);padding-top:var(--sp-2);display:flex}.sheet-head h2{font-size:var(--fs-md);flex:1;margin:0}.sheet-body{overflow-y:auto}.sheet-message p{margin:0 0 var(--sp-2)}.sheet-message p:last-child{margin-bottom:0}.sheet-foot{gap:var(--sp-2);flex-direction:column;display:flex}.sheet--tall{height:92dvh}.sheet--tall .sheet-panel{box-sizing:border-box;height:100%}.sheet--tall .sheet-body{flex:1;min-height:0}.sheet-handle{touch-action:none;cursor:grab;align-self:center;width:64px;height:20px;margin:-4px 0 -12px}.sheet-handle:before{content:"";border-radius:var(--r-pill);background:var(--border-strong);width:40px;height:5px;margin:6px auto 0;display:block}@keyframes sheet-up{0%{opacity:0;transform:translateY(24px)}}@media (width>=600px){.sheet{border-radius:var(--r-lg);width:520px;margin:auto}.sheet--tall{width:640px;height:auto;max-height:88dvh}.sheet-handle{display:none}.sheet-panel{padding:var(--sp-3) var(--sp-5) var(--sp-5)}.sheet-foot{flex-direction:row-reverse;justify-content:flex-start}}@media (prefers-reduced-motion:reduce){.sheet[open]{animation:none}}.field{flex-direction:column;gap:6px;display:flex}.field-label{font-size:var(--fs-sm);font-weight:var(--fw-semibold)}.field .field-help{font-size:var(--fs-sm);color:var(--muted);margin:0}.field-error{font-size:var(--fs-sm);color:var(--danger);align-items:center;gap:6px;margin:0;display:flex}.form{gap:var(--sp-3);flex-direction:column;display:flex}.form label,.form-row>label{gap:var(--sp-1);font-weight:var(--fw-semibold);font-size:var(--fs-sm);flex-direction:column;display:flex}.form-row{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.form-actions{gap:var(--sp-2);flex-direction:column;display:flex}.form-actions .btn,.form-actions .btn-ghost{width:100%}.form-actions p{margin:var(--sp-2) 0 0}.field-help{margin:-6px 0 0}label.btn-ghost,label.btn-small{align-items:center;display:inline-flex}.file-field label{cursor:pointer;text-align:center;justify-content:center;width:100%}.file-field input:focus-visible+label{outline:2px solid var(--accent);outline-offset:2px}.check{min-height:var(--tap);align-items:center;gap:10px;display:flex}.check input{width:22px;height:22px;min-height:0;accent-color:var(--accent)}.decision-bar{gap:var(--sp-2);margin-top:var(--sp-3);flex-direction:column;display:flex}.decision-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.decision-actions .btn{white-space:nowrap;flex:9em}.decision-reason{gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);font-size:var(--fs-sm);align-items:flex-start;margin:0;display:flex}.decision-reason .icon{margin-top:2px}.decision-reason--warn{background:var(--warn-bg);color:var(--text)}.decision-reason--warn .icon{color:var(--warn)}.decision-reason--danger{background:var(--danger-soft);color:var(--text)}.decision-reason--danger .icon{color:var(--danger)}.decision-error{margin:0}.decision-result{margin:var(--sp-3) 0 0;min-height:var(--tap);color:var(--muted);font-weight:var(--fw-semibold);align-items:center;gap:6px;display:flex}.decision-result--good{color:var(--good)}.decision-result-reason{font-weight:var(--fw-regular)}.decision{gap:var(--sp-2);flex-wrap:wrap;justify-content:flex-start;align-items:center;margin-left:auto;display:flex}.chart{margin:0}.chart-legend{gap:var(--sp-1) var(--sp-4);margin-bottom:var(--sp-1);font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;display:flex}.legend-item{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.line-key{border-radius:1px;width:14px;height:2px;display:inline-block}.line-key.line-key--area{opacity:.6;height:8px}.line-key.line-key--dash{background:repeating-linear-gradient(90deg, var(--muted) 0 5px, transparent 5px 9px)}.line-key.line-key--limit{background:repeating-linear-gradient(90deg, var(--danger) 0 3px, transparent 3px 7px)}.line-key--dashed{background:repeating-linear-gradient(90deg, var(--series-1) 0 5px, transparent 5px 8px)}.line-key--dotted{background:repeating-linear-gradient(90deg, var(--muted) 0 2px, transparent 2px 4px)}.line-key--target{background:repeating-linear-gradient(90deg, var(--muted) 0 8px, transparent 8px 11px)}.chart-plot{width:100%;position:relative}.chart-plot .u-cursor-x{border-right:1px solid var(--muted)}.chart-tooltip{top:var(--sp-2);z-index:2;min-width:170px;padding:var(--sp-2) 10px;border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-overlay);font-size:var(--fs-sm);pointer-events:none;position:absolute}.tooltip-date{margin-bottom:var(--sp-1);font-weight:var(--fw-semibold)}.tooltip-row{align-items:center;gap:var(--sp-2);display:flex}.tooltip-row strong{font-variant-numeric:tabular-nums;min-width:3ch}.table-wrap{max-height:360px;overflow:auto}.data-table{border-collapse:collapse;width:100%;margin-top:6px}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;padding:3px 6px}.data-table .num{text-align:right;font-variant-numeric:tabular-nums}.chart-scroll{overflow-x:auto}.swatch{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:2px;display:inline-block}.tiles{gap:var(--sp-2);margin:0 0 var(--sp-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.tiles>div:last-child:nth-child(odd){grid-column:1/-1}@media (width>=560px){.tiles{grid-template-columns:repeat(5,minmax(0,1fr))}.tiles>div:last-child:nth-child(odd){grid-column:auto}}.tiles div{border-radius:var(--r-sm);background:var(--surface-2);flex-direction:column;gap:2px;padding:10px;display:flex}.tiles dt{font-size:var(--fs-xs);color:var(--muted)}.tiles dd{font-size:var(--fs-lg);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}.tiles .sparkline{height:22px}.mini-stats{margin:var(--sp-3) 0 0;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.mini-stats div{padding:var(--sp-2);border-radius:var(--r-sm);background:var(--surface-2);min-width:0}.mini-stats dt{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.mini-stats dd{font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;white-space:nowrap;margin:2px 0 0}.small-heading{font-size:var(--fs-sm);color:var(--muted);margin:10px 0 2px}.delta{font-size:var(--fs-xs);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;white-space:nowrap}.delta-up{color:var(--good)}.delta-down{color:var(--warn)}.delta-neutral{color:var(--muted)}.delta-unit{font-weight:var(--fw-semibold);opacity:.75}.sparkline{width:100%;height:30px;margin-top:var(--sp-1);display:block}.spark-area{opacity:.14}.spark-line{fill:none;stroke-width:1.8px;vector-effect:non-scaling-stroke;stroke-linejoin:round}.spark-zero{stroke:var(--grid);stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.place-line{margin:var(--sp-1) 0;align-items:center;gap:6px;display:flex}.place-line .icon{color:var(--muted)}.place-line a,.place-line button.linklike{color:var(--accent)}.weather-line{margin:var(--sp-1) 0;color:var(--muted)}.weather-line.is-warn,.weather-line.is-danger{padding:6px var(--sp-2);border-radius:var(--r-sm);color:var(--text);background:var(--warn-bg);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent)}.weather-line.is-danger{background:var(--danger-soft);border-color:var(--danger)}.weather-alert{align-items:flex-start;gap:6px;margin:3px 0 0;display:flex}.weather-alert .icon{color:var(--warn);margin-top:2px}.is-danger .weather-alert .icon{color:var(--danger)}.phase-test{--phase:var(--warn)}.phase-base{--phase:var(--series-1)}.phase-build{--phase:var(--series-2)}.phase-peak{--phase:var(--phase-peak)}.phase-taper{--phase:var(--good)}.phase-race{--phase:var(--text)}.phase-recovery{--phase:var(--muted)}.phase-chip{padding:1px var(--sp-2);border-radius:var(--r-pill);font-weight:var(--fw-bold);color:var(--text);background:color-mix(in srgb, var(--phase,var(--border)) 22%, transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--phase,var(--border)) 60%, transparent);margin-right:6px;display:inline-block}.priority-A{border-color:var(--series-2);color:var(--series-2);font-weight:var(--fw-bold)}.priority-B{border-color:var(--series-1);color:var(--series-1);font-weight:var(--fw-bold)}.priority-C{color:var(--muted)}.workout-list{margin:0;padding:0;list-style:none}.workout{border-bottom:1px solid var(--border);padding:14px 0}.workout:last-child{border-bottom:none}.workout-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);flex-wrap:wrap;display:flex}.workout-head>div:first-child{flex:200px;min-width:0}.workout-date{font-size:var(--fs-sm);color:var(--muted)}.workout-date:first-letter{text-transform:uppercase}.lint-ok{color:var(--good);align-items:center;gap:6px;margin:0;display:flex}.lint-issues{color:var(--danger);margin:0;padding:0;list-style:none}.lint-issues li{align-items:flex-start;gap:6px;display:flex}.lint-issues .icon{margin-top:2px}.app{min-height:100dvh}.appbar{z-index:20;background:var(--surface);border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top);position:sticky;top:0}.appbar-inner{max-width:var(--app-w);min-height:calc(var(--appbar-h) - 1px);align-items:center;gap:var(--sp-2);padding:6px calc(16px + env(safe-area-inset-right)) 6px calc(16px + env(safe-area-inset-left));margin:0 auto;display:flex}.appbar-title{font-size:var(--fs-xl);font-weight:var(--fw-bold);letter-spacing:-.02em;flex:1;margin:0;line-height:1.1}.back{min-height:var(--tap);padding:0 var(--sp-2) 0 0;border-radius:var(--r-sm);color:var(--accent);font:inherit;font-weight:var(--fw-semibold);white-space:nowrap;cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;margin-left:-6px;text-decoration:none;display:inline-flex}.back+.appbar-title{font-size:var(--fs-md);text-align:center}.skip-link{top:calc(var(--sp-2) + env(safe-area-inset-top));left:calc(var(--sp-2) + env(safe-area-inset-left));z-index:70;min-height:var(--tap);padding:0 var(--sp-4);border-radius:var(--r-sm);background:var(--accent);color:var(--on-accent);font-weight:var(--fw-semibold);transform:translateY(calc(-100% - var(--sp-5)));align-items:center;text-decoration:none;display:inline-flex;position:fixed}.skip-link:focus{transform:none}.content:focus,.main:focus,.appbar-title:focus{outline:none}.content{max-width:var(--app-w);padding:var(--sp-3) calc(16px + env(safe-area-inset-right)) var(--sp-5) calc(16px + env(safe-area-inset-left));margin:0 auto}.with-tabbar .content{padding-bottom:calc(var(--tabbar-h) + 28px + env(safe-area-inset-bottom))}.group-title{margin:var(--sp-4) 0 0;font-size:var(--fs-lg);letter-spacing:-.01em;line-height:1.2}[id^=sec-],.plan-day{scroll-margin-top:calc(var(--appbar-h) + env(safe-area-inset-top) + var(--sp-3))}[id^=sec-]:focus{outline:none}.card.is-target,.is-target>.card:first-child,.is-target>.stack>.card:first-child,.group-title.is-target{background-color:var(--accent-soft);transition:background-color .4s}@media (prefers-reduced-motion:reduce){.card.is-target,.is-target>.card:first-child,.is-target>.stack>.card:first-child,.group-title.is-target{transition:none}}.tabbar{z-index:30;background:var(--surface);border-top:1px solid var(--border);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);view-transition-name:tabbar;position:fixed;bottom:0;left:0;right:0}.tabbar-inner{max-width:var(--app-w);grid-template-columns:repeat(4,1fr);margin:0 auto;display:grid}.tabbar-brand{display:none}.tabbar a{min-height:var(--tabbar-h);color:var(--muted);font-size:var(--fs-xs);font-weight:var(--fw-semibold);flex-direction:column;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex;position:relative}.tabbar a[aria-current=page]{color:var(--accent)}.tab-icon-wrap{border-radius:var(--r-pill);justify-content:center;align-items:center;width:52px;height:30px;display:inline-flex;position:relative}.tabbar a.tab-coach .tab-icon-wrap{background:var(--accent-soft);color:var(--accent)}.tabbar a.tab-coach[aria-current=page] .tab-icon-wrap{background:var(--accent);color:var(--on-accent)}.tab-icon-wrap .badge{box-shadow:0 0 0 2px var(--surface);position:absolute;top:-5px;left:calc(50% + 6px)}@media (hover:hover){.tabbar a:hover{color:var(--text)}.tabbar a[aria-current=page]:hover{color:var(--accent)}}@media (width>=1024px){.with-tabbar{padding-left:240px}.with-tabbar .content{padding-bottom:var(--sp-6)}.tabbar{border-top:0;border-right:1px solid var(--border);width:240px;padding:env(safe-area-inset-top) 0 0 env(safe-area-inset-left);top:0;right:auto}.tabbar-inner{gap:var(--sp-1);padding:var(--sp-3);flex-direction:column;display:flex}.tabbar-brand{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-2) var(--sp-4);font-size:var(--fs-md);font-weight:var(--fw-bold);letter-spacing:-.01em;color:var(--text);display:flex}.tabbar-brand svg{color:var(--accent);flex-shrink:0}.tabbar a{justify-content:flex-start;gap:var(--sp-3);min-height:48px;padding:0 var(--sp-2);border-radius:var(--r-md);font-size:var(--fs-base);flex-direction:row}.tabbar a[aria-current=page]{background:var(--surface-2)}.tab-icon-wrap{width:44px;height:32px}}.detail{background:var(--bg);min-height:100dvh}.detail-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.detail-title:focus{outline:none}.detail-bar{z-index:26}.detail-bar .back{flex-shrink:0;max-width:40%}.detail-actions{gap:var(--sp-1);margin-right:-6px;display:flex}.detail-edge{display:none}@media (pointer:coarse){.detail-edge{top:calc(var(--appbar-h) + env(safe-area-inset-top));z-index:25;touch-action:pan-y;width:20px;display:block;position:fixed;bottom:0;left:0}}@supports not (view-transition-name:none){.detail{animation:.24s cubic-bezier(.2,.8,.2,1) detail-in}}@keyframes detail-in{0%{opacity:0;transform:translate(24px)}}::view-transition-old(root){animation-duration:.24s;animation-timing-function:cubic-bezier(.2,.8,.2,1)}::view-transition-new(root){animation-duration:.24s;animation-timing-function:cubic-bezier(.2,.8,.2,1)}html[data-nav=forward]::view-transition-old(root){animation-name:vt-root-out}html[data-nav=forward]::view-transition-new(root){animation-name:vt-detail-in}html[data-nav=back]::view-transition-old(root){z-index:1;animation-name:vt-detail-out;animation-duration:.2s}html[data-nav=back]::view-transition-new(root){animation-name:vt-root-in;animation-duration:.2s}@keyframes vt-root-out{to{opacity:.6;transform:translate(-20%)}}@keyframes vt-detail-in{0%{transform:translate(100%)}}@keyframes vt-detail-out{to{transform:translate(100%)}}@keyframes vt-root-in{0%{opacity:.6;transform:translate(-20%)}}@media (prefers-reduced-motion:reduce){.detail{animation:none}::view-transition-old(root){animation:none}::view-transition-new(root){animation:none}}.login{gap:var(--sp-2);flex-direction:column;max-width:360px;margin:6vh auto 0;display:flex;position:relative;overflow:hidden}.login .contours{width:50%;height:auto;inset:0 0 auto auto}.login>:not(.contours){position:relative}.hero-head{justify-content:space-between;align-items:baseline;gap:var(--sp-2);margin-bottom:6px;display:flex}.hero-head h2{margin:0}.hero-alert{padding:var(--sp-2) 10px;border-radius:var(--r-sm);background:var(--warn-bg);border:1px solid color-mix(in srgb, var(--warn) 35%, transparent);margin:10px 0 0}.gauges{grid-template-columns:1fr 1fr;gap:10px;display:grid}.gauge{flex-direction:column;align-items:center;margin:0;display:flex}.gauge svg{width:100%;max-width:220px;height:auto;display:block;overflow:visible}.gauge-title{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--muted);text-align:center}.gauge-track{fill:none;stroke:var(--surface-2);stroke-linecap:round}.gauge-band{fill:none;opacity:.35;stroke-linecap:butt;transition:opacity .4s}.gauge-band.is-active{opacity:1}.gauge-marker{stroke:var(--text);stroke-width:2.5px;stroke-linecap:round;opacity:.55}.gauge-needle{transform-box:view-box;transition:transform 1.1s cubic-bezier(.22,1.2,.36,1)}.gauge-needle path{fill:var(--text)}.gauge-hub{fill:var(--surface);stroke:var(--text);stroke-width:3px}.gauge-value{font-size:26px;font-weight:var(--fw-bold);fill:var(--gauge-color,var(--text));font-variant-numeric:tabular-nums}.gauge-label{font-weight:var(--fw-bold);font-size:var(--fs-base);color:var(--gauge-color,var(--text));text-align:center;margin:0}.gauge-text{margin:var(--sp-1) 2px 0;text-align:center;color:var(--muted);line-height:1.35}@media (prefers-reduced-motion:reduce){.gauge-needle,.gauge-band{transition:none}}.kpis{gap:var(--sp-2);grid-template-columns:repeat(3,1fr);margin-top:14px;display:grid}.kpi{border-radius:var(--r-sm);background:var(--surface-2);border-top:3px solid var(--kpi-color);flex-direction:column;gap:1px;min-width:0;padding:10px 10px 6px;display:flex;position:relative;overflow:hidden}.kpi-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kpi-value{font-size:var(--fs-lg);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;line-height:1.1}.level{margin-top:14px}.level-head{justify-content:space-between;gap:var(--sp-2);font-weight:var(--fw-bold);flex-wrap:wrap;margin-bottom:5px;display:flex}.level-track{border-radius:var(--r-pill);background:var(--surface-2);height:10px;overflow:hidden}.level-track span{border-radius:var(--r-pill);background:var(--series-1);height:100%;transition:width 1s;display:block}.how{margin-top:var(--sp-3)}.how summary{font-size:var(--fs-sm);color:var(--accent);font-weight:var(--fw-semibold)}.how ul{margin:var(--sp-2) 0 0;padding-left:18px}.how li+li{margin-top:var(--sp-1)}.meter-track{border-radius:var(--r-pill);background:var(--surface-2);height:14px;margin:6px 0 var(--sp-2);position:relative;overflow:hidden}.meter-done,.meter-planned{position:absolute;top:0;bottom:0;left:0}.meter-track .meter-done{background:var(--good);border-radius:var(--r-pill) 0 0 var(--r-pill)}.meter-track .meter-planned{background:color-mix(in srgb, var(--accent) 45%, transparent)}.meter-mark{border-radius:2px;width:3px;margin-left:-1.5px;position:absolute;top:-2px;bottom:-2px}.meter-track .meter-target{background:var(--series-2)}.meter-track .meter-cap{background:var(--danger)}.meter-legend,.intensity-legend{gap:var(--sp-1) 14px;flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.meter-legend{column-gap:var(--sp-5);grid-template-columns:repeat(2,max-content);display:grid}.swatch.meter-done,.swatch.meter-planned{position:static}.swatch.meter-done{background:var(--good)}.swatch.meter-planned{background:color-mix(in srgb, var(--accent) 45%, transparent)}.swatch.meter-target{background:var(--series-2)}.swatch.meter-cap{background:var(--danger)}.next-when{font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--accent);margin:0}.next-when:first-letter{text-transform:uppercase}.next-name{margin:2px 0}.today-head{justify-content:space-between;align-items:center;gap:var(--sp-1) var(--sp-3);margin-bottom:calc(-1 * var(--sp-2));flex-wrap:wrap;display:flex}.today-date{font-size:var(--fs-md);font-weight:var(--fw-semibold);margin:0}.today-date:first-letter{text-transform:uppercase}.today-phase{align-items:center;gap:var(--sp-1);font-size:var(--fs-sm);margin:0;display:flex}.fitness-row{align-items:center;gap:var(--sp-3);width:100%;min-height:76px;padding:var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer;grid-template-columns:repeat(3,minmax(0,1fr)) auto;display:grid}.fitness-row .stat+.stat{padding-left:var(--sp-3);border-left:1px solid var(--border)}.fitness-row .stat-delta{-webkit-hyphens:auto;hyphens:auto}.fitness-row .stat{align-self:start}.fitness-row-chev{color:var(--muted)}@media (hover:hover){.fitness-row:hover{border-color:var(--border-strong)}}.form-warning{gap:var(--sp-2);margin:var(--sp-2) 0 0;padding:6px var(--sp-3);border-radius:var(--r-sm);background:var(--warn-bg);align-items:center;display:flex}.form-warning .icon{color:var(--warn);flex:none}.form-warning-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.form-panel{margin-top:var(--sp-4)}.pending-none{align-items:center;gap:var(--sp-2);color:var(--muted);margin:0;display:flex}.pending-none .icon{color:var(--good)}.pending-groups{gap:var(--sp-3);flex-direction:column;display:flex}.pending-groups>.btn:last-child{margin-bottom:calc(-1 * var(--sp-2))}.pending-group-head{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-1);flex-wrap:wrap;display:flex}.pending-group-head h3{font-size:var(--fs-sm);margin:0}.pending-list{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.confirm-list{margin:var(--sp-2) 0 0;padding:0;list-style:none}.confirm-list li{border-bottom:1px solid var(--border);overflow-wrap:anywhere;padding:6px 0}.confirm-list li:last-child{border-bottom:0}.confirm-list-when{min-width:4.5em;color:var(--muted);font-variant-numeric:tabular-nums;display:inline-block}.workout-item{gap:var(--sp-1);flex-direction:column;min-width:0;display:flex}.workout-item--proposed{padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:inset 3px 0 0 var(--accent)}.today-items .workout-item+.workout-item,.today-items .workout-item+.today-fixed{padding-top:var(--sp-4);border-top:1px solid var(--border)}.wi-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);display:flex}.wi-heading{min-width:0}.wi-when{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--accent);flex-wrap:wrap;margin:0 0 2px;display:flex}.wi-title{font-size:var(--fs-md);overflow-wrap:anywhere;margin:0;line-height:1.25}.wi-title a{min-height:var(--tap);color:inherit;align-items:center;gap:2px;margin-block:-6px;text-decoration:none;display:inline-flex}.wi-title-chev{color:var(--muted);flex:none}@media (hover:hover){.wi-title a:hover{text-decoration:underline}}.wi-status{flex:none;margin-top:2px}a.tag{text-decoration:none;position:relative}a.tag:after{content:"";position:absolute;inset:-10px -4px}.wi-meta{align-items:center;gap:var(--sp-1) var(--sp-2);font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap;margin:0;display:flex}.wi-rationale p{margin:var(--sp-1) 0 0;max-width:65ch}.wi-rationale p.is-clamped{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.wi-more{font-size:var(--fs-sm);position:relative}.wi-more:after{content:"";position:absolute;inset:-12px -8px}.wi-actions{gap:var(--sp-1) var(--sp-2);margin:var(--sp-1) 0 0 calc(-1 * var(--sp-3));flex-wrap:wrap;display:flex}.workout-item .decision-actions .btn{flex-basis:7.5em}.workout-item--compact.workout-item--proposed{padding:var(--sp-2) var(--sp-3) var(--sp-3) var(--sp-4)}.workout-item--compact .wi-title{font-size:var(--fs-base)}.wi-heading--row{align-items:center;gap:var(--sp-2);display:flex}.wi-meta-when{font-weight:var(--fw-semibold);color:var(--accent)}.wi-compact-line{align-items:baseline;gap:var(--sp-2);display:flex}.wi-compact-line p{min-width:0;font-size:var(--fs-sm);flex:1;margin:0}.wi-compact-line .wi-more{flex:none}.wi-compact-meta{color:var(--muted)}.workout-item--compact .wi-meta-when{font-size:var(--fs-sm);flex:none}p.is-clamped-1{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.wi-compact-more .steps,.workout-item--compact .decision-bar,.workout-item--compact .decision-result{margin-top:var(--sp-2)}.workout-item--compact .merge-parts{font-size:var(--fs-sm);gap:2px;margin:2px 0}.workout-item--compact>.decision-actions{margin-top:var(--sp-1)}.workout-item--compact>p{margin:0}.wi-panel{margin-top:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2)}.today-items{gap:var(--sp-4);margin-bottom:var(--sp-2);flex-direction:column;display:flex}.today-fixed{align-items:center;gap:var(--sp-3);min-height:var(--tap);display:flex}.today-fixed-icon{color:var(--muted);flex:none}.today-fixed-text{flex:1;min-width:0}.today-rest{align-items:center;gap:var(--sp-2);min-height:var(--tap);flex-wrap:wrap;margin:0;display:flex}.today-rest .icon{color:var(--accent)}.today-rest{flex-wrap:nowrap}.today-rest-text{flex:1;min-width:0}.today-card .list-row{border-top:1px solid var(--border);border-bottom:0}.today-ayer{align-items:center;gap:var(--sp-2);display:inline-flex}.week-strip{margin:0 0 var(--sp-2);grid-template-columns:repeat(7,minmax(0,1fr));gap:0;padding:0;list-style:none;display:grid}.ws-day{border-radius:var(--r-sm);min-height:64px;color:var(--text);flex-direction:column;align-items:center;gap:2px;padding:6px 0;text-decoration:none;display:flex}.ws-day.is-past .ws-num{color:var(--muted)}.ws-day.is-today{background:var(--accent-soft)}.ws-day.is-today .ws-num,.ws-day.is-today .ws-letter{color:var(--accent);font-weight:var(--fw-bold)}@media (hover:hover){.ws-day:hover{background:var(--surface-2)}}.ws-letter{font-size:var(--fs-xs);color:var(--muted)}.ws-num{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}.ws-marks{align-items:center;gap:3px;min-height:10px;display:flex}.ws-mark{border:2px solid var(--accent);box-sizing:border-box;border-radius:50%;width:8px;height:8px;display:inline-block}.ws-mark--done{background:var(--good);border-color:var(--good)}.ws-mark--missed{border-color:var(--warn)}.ws-mark--proposed{border-style:dashed;border-color:var(--accent);width:10px;height:10px}.ws-mark--fixed{border-color:var(--muted);border-radius:1px}.ws-mark--race{background:var(--series-2);border-color:var(--series-2);border-radius:1px;transform:rotate(45deg)}.ws-more{font-size:var(--fs-xs);color:var(--muted);line-height:1}.ws-legend{gap:var(--sp-1) var(--sp-3);margin:0 0 var(--sp-3);color:var(--muted);flex-wrap:wrap;padding:0;list-style:none;display:flex}.ws-legend li{align-items:center;gap:6px;display:inline-flex}.week-totals{gap:var(--sp-1) var(--sp-3);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;flex-wrap:wrap;margin:0;display:flex}.week-totals .muted{font-weight:var(--fw-regular)}.week-noplan{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.week-job{align-items:center;gap:var(--sp-2);margin:var(--sp-3) 0 0;padding-top:var(--sp-3);border-top:1px solid var(--border);color:var(--muted);display:flex}.week-job-failed{justify-content:space-between;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);display:flex}.week-job-failed p{margin:0}.next-race{padding-block:0}.day-header{top:calc(var(--appbar-h) + env(safe-area-inset-top));z-index:2;margin:calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4)) var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-2);border-radius:var(--r-md) var(--r-md) 0 0;background:var(--surface);font-size:var(--fs-base);position:sticky}.day-header .muted{font-weight:var(--fw-regular)}.diary-entry{align-items:flex-start;gap:var(--sp-1);flex-direction:column;display:flex}.diary-entry-link{width:100%;min-height:var(--tap);color:inherit;flex-direction:column;text-decoration:none;display:flex}.diary-entry-name{font-size:var(--fs-md);font-weight:var(--fw-semibold);overflow-wrap:anywhere;align-items:center;gap:2px;display:inline-flex}.diary-entry-name .icon{color:var(--muted);flex:none}.diary-entry-facts{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums}.diary-entry .review-headline{margin:var(--sp-1) 0 0}.diary-next{max-width:65ch;margin:0}.diary-analyzing{width:100%}.diary-analyzing p{margin:0 0 var(--sp-2);align-items:center;gap:6px;display:flex}.diary-unreviewed{align-items:center;gap:var(--sp-2);display:flex}.diary-day .list-row{border-top:1px solid var(--border);border-bottom:0}.diary-day .list-row-end .tag{text-overflow:ellipsis;max-width:11em;overflow:hidden}.diary-head{justify-content:space-between;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.diary-head .group-title{margin:0}.diary-week{gap:var(--sp-3);flex-direction:column;display:flex}.diary-week+.diary-week{margin-top:var(--sp-3)}.diary-week-head{justify-content:space-between;align-items:center;gap:0 var(--sp-2);min-height:var(--tap);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.diary-week-summary{display:block}.diary-week-summary>summary{font-weight:var(--fw-regular);cursor:pointer}.diary-week-line{font-size:var(--fs-sm);margin:0;line-height:1.4}.diary-week-label{font-weight:var(--fw-bold);color:var(--text)}.diary-week-error{margin:0 0 var(--sp-2);flex-basis:100%}.diary-week-empty{margin:0}.week-summary p,.week-summary ul{margin:0 0 var(--sp-2);max-width:65ch}.diary-entry--link{margin:calc(-1 * var(--sp-1)) calc(-1 * var(--sp-2));padding:var(--sp-1) var(--sp-2);width:calc(100% + 2 * var(--sp-2));border-radius:var(--r-sm);color:inherit;gap:2px;text-decoration:none}.diary-entry--link .diary-entry-verdict{margin-top:var(--sp-2)}.diary-entry-verdict{margin-top:var(--sp-1)}.diary-entry--link .review-headline,.diary-entry--link .diary-next{display:block}@media (hover:hover){.diary-entry--link:hover{background:var(--surface-2)}}.diary-more{margin-top:var(--sp-2)}.diary-end{margin:var(--sp-2) 0 0;text-align:center}.activity-hero{gap:var(--sp-3);flex-direction:column;display:flex}.activity-title{gap:var(--sp-1);flex-direction:column;display:flex}.activity-name{font-size:var(--fs-md);font-weight:var(--fw-bold);overflow-wrap:anywhere;margin:0;line-height:1.3}.activity-when{font-size:var(--fs-sm);color:var(--muted);margin:0}.activity-when:first-letter{text-transform:uppercase}.activity-figures{gap:var(--sp-3) var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));display:grid}.activity-figures--lead{grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}.activity-figures .stat-value{white-space:nowrap}.activity-verdict{gap:var(--sp-2);flex-wrap:wrap;display:flex}.review-lead .review-headline{margin-top:0}.review-next{max-width:65ch;margin:0}.review-lead .notice{margin-top:var(--sp-3)}.review-sections{padding:0 var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);flex-direction:column;display:flex}.review-section+.review-section{border-top:1px solid var(--border)}.review-section>.disclosure-body{padding-bottom:var(--sp-4)}.review-section>.disclosure-body>.btn{margin-top:var(--sp-2);margin-left:calc(-1 * var(--sp-3))}.review-impact{max-width:65ch;margin:0}.review-sub{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-sm);color:var(--muted)}.review-observations{gap:var(--sp-1);font-size:var(--fs-sm);max-width:65ch;margin:0;padding-left:1.2em;display:grid}.review-raw{gap:var(--sp-2) var(--sp-4);font-size:var(--fs-sm);grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin:0;display:grid}.review-raw dt{color:var(--muted)}.review-raw dd{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;margin:0}.activity-detail>.btn{align-self:flex-start}.siblings{gap:var(--sp-2);margin-top:var(--sp-2);grid-template-columns:1fr 1fr;display:grid}.sibling{align-items:center;gap:var(--sp-2);min-width:0;min-height:56px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:inherit;font:inherit;text-align:left;cursor:pointer;display:flex}.sibling>span{flex-direction:column;min-width:0;display:flex}.sibling--next{text-align:right;grid-column:2;justify-content:flex-end}.sibling .icon{color:var(--muted);flex:none}.sibling-label{font-size:var(--fs-xs);color:var(--muted)}.sibling-name{text-overflow:ellipsis;white-space:nowrap;font-weight:var(--fw-semibold);overflow:hidden}@media (hover:hover){.sibling:hover{background:var(--surface-2)}}.stats-chart{width:100%;height:auto;display:block}.stats-chart .grid{stroke:var(--grid);stroke-width:1px}.stats-chart .axis{fill:var(--muted);font-size:13px}.stats-chart .bar{fill:var(--series-1)}.stats-chart .bar-partial{fill:color-mix(in srgb, var(--series-1) 45%, transparent)}.stats-chart .bar-selected{fill:var(--accent);stroke:var(--text);stroke-width:1.5px}.stats-chart .bar-hit{cursor:pointer}.stats-chart .target-mark{stroke:var(--series-2);stroke-width:3px;stroke-linecap:round}.stats-chart .dot{fill:color-mix(in srgb, var(--series-1) 55%, transparent)}.stats-chart .trend{fill:none;stroke:var(--series-2);stroke-width:2.5px;stroke-linejoin:round}.bar-readout{margin:0 0 var(--sp-1)}.big-number{font-size:var(--fs-xl);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;margin:0 0 6px}.intensity-bar{border-radius:var(--r-pill);background:var(--surface-2);height:16px;margin:var(--sp-1) 0 var(--sp-2);display:flex;overflow:hidden}.int-low{background:var(--good)}.int-mid{background:var(--warn)}.int-high{background:var(--danger)}.int-weeks{grid-template-columns:repeat(8,1fr);gap:6px;margin:6px 0 10px;display:grid}.int-week{flex-direction:column;align-items:center;gap:3px;min-width:0;display:flex}.int-col{background:var(--surface-2);border-radius:6px;flex-direction:column;width:100%;max-width:26px;height:64px;display:flex;overflow:hidden}.int-col span{width:100%;display:block}.int-week-label{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.heatmap{margin:var(--sp-3) 0 6px;gap:6px;display:flex}.heat-days{font-size:var(--fs-xs);color:var(--muted);grid-template-rows:repeat(7,1fr);gap:3px;line-height:1;display:grid}.heat-days span{align-items:center;display:flex}.heat-grid{flex:1;gap:3px;display:grid}.heat-col{grid-template-rows:repeat(7,1fr);gap:3px;display:grid}.heat-cell{aspect-ratio:1;background:var(--surface-2);border-radius:4px;display:block}.heat-future{box-shadow:inset 0 0 0 1px var(--grid);background:0 0}.heat-1{background:color-mix(in srgb, var(--good) 30%, var(--surface-2))}.heat-2{background:color-mix(in srgb, var(--good) 55%, var(--surface-2))}.heat-3{background:color-mix(in srgb, var(--good) 80%, var(--surface-2))}.heat-4{background:var(--good)}.mix-list{gap:var(--sp-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.mix-list li{align-items:center;gap:var(--sp-2);grid-template-columns:7.5em 1fr auto;display:grid}.mix-name{font-size:var(--fs-sm)}.mix-bar{border-radius:var(--r-pill);background:var(--surface-2);height:10px;overflow:hidden}.mix-bar span{background:var(--series-1);border-radius:var(--r-pill);height:100%;display:block}.mix-value{white-space:nowrap;font-variant-numeric:tabular-nums}.records{gap:var(--sp-2);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin:0;padding:0;list-style:none;display:grid}.records li{border-radius:var(--r-sm);background:var(--surface-2);flex-direction:column;gap:2px;min-width:0;padding:10px;display:flex}.records strong{font-size:var(--fs-md)}.records li>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.review-headline{font-size:var(--fs-md);font-weight:var(--fw-semibold);margin:var(--sp-2) 0;max-width:65ch}.review-problems,.review-positives{margin:var(--sp-1) 0 var(--sp-2);padding-left:0;list-style:none}.review-problems li,.review-positives li{gap:var(--sp-2);margin-bottom:var(--sp-1);align-items:flex-start;display:flex}.mark{font-weight:var(--fw-bold);flex-shrink:0;margin-top:2px;display:inline-flex}.mark-bad{color:var(--danger)}.mark-good{color:var(--good)}.review-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));align-items:start;display:grid}table.facts th{font-weight:var(--fw-regular);color:var(--muted);position:static}.zone-bars table{font-size:var(--fs-sm)}.zone-bars th,.zone-bars td{border-bottom:none;padding:2px 6px}.zone-label{white-space:nowrap;width:1%;font-weight:var(--fw-semibold);position:static}.zone-cell{width:50%;position:relative}.zone-cell .bar{vertical-align:middle;border-radius:0 4px 4px 0;min-width:2px;height:12px;display:inline-block}.bar-value{white-space:nowrap;color:var(--muted);font-variant-numeric:tabular-nums;margin-left:6px}.merge-card{border-left:4px solid var(--warn)}.merge-parts{margin:var(--sp-2) 0;gap:6px;padding:0;list-style:none;display:grid}.merge-parts li{gap:var(--sp-2);overflow-wrap:anywhere;grid-template-columns:3.2em 1fr;align-items:baseline;display:grid}.merge-time{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;color:var(--muted)}.merge-actions{gap:var(--sp-2);flex-wrap:wrap;margin-top:10px;display:flex}.merge-actions button{flex:10em;margin:0}.chat{gap:var(--sp-4);min-height:calc(100dvh - var(--appbar-h) - env(safe-area-inset-top) - var(--sp-3) - var(--tabbar-h) - 28px - env(safe-area-inset-bottom));flex-direction:column;display:flex}.chat>.composer{margin-top:auto}@media (width>=1024px){.chat{min-height:calc(100dvh - var(--appbar-h) - env(safe-area-inset-top) - var(--sp-3) - var(--sp-6))}}.chat-list{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.bubble{border-radius:var(--r-lg);border:1px solid var(--border);overflow-wrap:anywhere;max-width:85%;padding:10px 14px}.bubble p,.bubble ul{margin:0 0 var(--sp-2)}.bubble>:last-child,.bubble p:last-child{margin-bottom:0}.bubble-user{background:var(--accent);border-color:var(--accent);color:var(--on-accent);border-bottom-right-radius:4px;align-self:flex-end}.bubble-user .muted{color:inherit;opacity:.8}.bubble-coach{background:var(--surface);border-bottom-left-radius:4px;align-self:flex-start;max-width:100%}.bubble-photo{border-radius:var(--r-sm);max-width:100%;max-height:260px;margin-bottom:var(--sp-2);display:block}.typing{margin:0}.proactive summary{color:var(--muted);align-items:center;gap:6px;margin-bottom:6px;display:flex}.via{margin:0 0 var(--sp-1);font-size:var(--fs-xs);font-weight:var(--fw-bold);opacity:.8}.changes{margin-top:var(--sp-3);padding-top:var(--sp-3);border-top:1px solid var(--border)}.changes-head{justify-content:space-between;align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.changes-title{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--muted);margin:0}.change-list{margin:var(--sp-2) 0 0;gap:var(--sp-3);flex-direction:column;padding:0;list-style:none;display:flex}.change>.workout-item:not(.workout-item--proposed){padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md)}.change-applied>.workout-item{box-shadow:inset 3px 0 0 var(--good)}.change-note{margin:0}.change .wi-title s{color:var(--muted)}.wi-day-link{color:inherit;text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;position:relative}.wi-day-link:after{content:"";width:max(44px,100% + 12px);height:max(44px,100% + 26px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.wi-move{align-items:center;gap:var(--sp-2);display:inline-flex}.bubble.is-target{background-color:var(--accent-soft);transition:background-color .4s}.bubble-user.is-target{box-shadow:0 0 0 4px var(--accent-soft)}.bubble:focus{outline:none}.bubble:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.bubble.is-target{transition:none}}.chat-skel--user{align-self:flex-end;width:70%}.context-chip{align-items:center;gap:var(--sp-1);max-width:100%;padding-left:var(--sp-3);border-radius:var(--r-pill);background:var(--accent-soft);color:var(--accent);font-size:var(--fs-sm);font-weight:var(--fw-semibold);align-self:flex-start;display:flex}.context-chip-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.context-chip-label{font-weight:var(--fw-bold)}.context-chip-x{width:var(--tap);border-radius:var(--r-pill);height:36px;color:inherit;cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.context-chip-x:after{content:"";position:absolute;inset:-4px 0}.help-sheet{max-width:65ch}.help-sheet h3{margin:var(--sp-4) 0 var(--sp-2);font-size:var(--fs-base)}.help-sheet ul{gap:var(--sp-2);margin:0;padding-left:1.2em;display:grid}.help-sheet p{margin:0 0 var(--sp-2)}.composer{bottom:calc(var(--tabbar-h) + 10px + env(safe-area-inset-bottom));padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-overlay);flex-direction:column;gap:6px;display:flex;position:sticky}.composer-row{flex-direction:row;align-items:flex-end;gap:6px;display:flex}.composer-row .icon-btn{background:var(--surface-2);cursor:pointer}.composer-text{min-width:0;min-height:var(--tap);resize:none;border-radius:22px;flex:1;padding:10px 14px;line-height:1.4}.send-btn{width:var(--tap);height:var(--tap);border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);cursor:pointer;border:0;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.send-btn:disabled{opacity:.4;cursor:not-allowed}.composer .btn{margin-top:0}.suggestions{gap:var(--sp-2);scrollbar-width:none;padding:var(--sp-1) 0;flex-wrap:nowrap;display:flex;overflow-x:auto}.photo-preview{align-items:center;gap:var(--sp-2);display:flex}.photo-preview img{border-radius:6px;max-height:72px}@media (width<=600px){.bubble{max-width:92%}}.to-bottom{border-radius:var(--r-pill);border:1px solid var(--border);background:var(--surface);width:46px;height:46px;color:var(--text);box-shadow:var(--shadow-overlay);cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:-58px;right:10px}.to-bottom-count{border-radius:var(--r-pill);background:var(--accent);min-width:20px;height:20px;color:var(--on-accent);font-size:var(--fs-xs);font-weight:var(--fw-bold);text-align:center;padding:0 5px;line-height:20px;position:absolute;top:-6px;right:-4px}.to-bottom-writing{gap:var(--sp-1);width:auto;font-size:var(--fs-sm);font-weight:var(--fw-semibold);padding:0 10px 0 14px}.chat-older{flex-direction:column;align-items:center;gap:6px;display:flex}.chat-older .btn-small{min-height:var(--tap);padding:var(--sp-2) 18px}.chat-spacer{height:0;margin-top:calc(-1 * var(--sp-4));flex-shrink:0}.streaming>p:nth-last-child(2){display:inline}.stream-cursor{vertical-align:-2px;background:var(--accent);border-radius:2px;width:8px;height:1.05em;margin-left:2px;animation:1s steps(2,start) infinite stream-blink;display:inline-block}@keyframes stream-blink{to{visibility:hidden}}@media (prefers-reduced-motion:reduce){.stream-cursor{animation:none}}.goal-list{margin:0 0 var(--sp-3);padding:0;list-style:none}.goal-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:6px;padding:6px 0;display:flex}.goal-list li button{margin-left:auto}.goal-form{gap:var(--sp-2);grid-template-columns:1fr;display:grid}.safety{padding:10px var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2);margin-bottom:var(--sp-2)}.safety ul{margin:var(--sp-1) 0 0;padding-left:18px}.result-grid{gap:var(--sp-2);margin:var(--sp-2) 0 var(--sp-1);grid-template-columns:repeat(auto-fit,minmax(130px,1fr));display:grid}.result-grid div{padding:var(--sp-2) 10px;border-radius:var(--r-sm);background:var(--surface-2)}.result-grid dt{font-size:var(--fs-xs);color:var(--muted)}.result-grid dd{font-size:var(--fs-md);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;margin:2px 0 0}.apply-box{gap:var(--sp-2);margin-top:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-md);border:1px solid var(--accent);flex-direction:column;display:flex}.apply-box p{margin:0}.apply-box-title{font-size:var(--fs-md);margin:0}.apply-box .check{align-items:flex-start;gap:var(--sp-2);min-height:var(--tap);padding-top:10px;display:flex}.apply-box .check input{flex:none;width:20px;height:20px;margin:0}.result-warnings{margin:var(--sp-1) 0 0;padding:0;list-style:none}.test-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.test-row{align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3) 0;border-bottom:1px solid var(--border);flex-direction:column;display:flex}.test-row:last-child{border-bottom:0;padding-bottom:0}.test-row>.disclosure,.test-row>.test-pick{align-self:stretch}.test-row-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-2);align-self:stretch;display:flex}.test-row-main{min-width:0}.test-row-when{font-size:var(--fs-sm);color:var(--muted);margin:0}.test-row-when:first-letter{text-transform:uppercase}.test-row-title{font-size:var(--fs-md);margin:0}.test-row-link{font-size:var(--fs-sm);position:relative}.test-row-link:after{content:"";position:absolute;inset:-12px -8px}.pick-list{gap:var(--sp-2);flex-direction:column;margin:6px 0 0;padding:0;list-style:none;display:flex}.templates{gap:var(--sp-2);border:none;flex-wrap:wrap;margin:0;padding:0;display:flex}.templates legend{width:100%;margin-bottom:var(--sp-1)}.form-actions .btn{margin-top:0}.cal-head{align-items:center;gap:var(--sp-1);margin-bottom:var(--sp-2);display:flex}.cal-head .icon-btn{background:var(--surface-2)}.cal-month{text-align:center;font-size:var(--fs-md);flex:1;margin:0}.cal-month:first-letter{text-transform:uppercase}.cal-grid{touch-action:pan-y;-webkit-user-select:none;user-select:none;position:relative}.cal-row{grid-template-columns:repeat(7,1fr);gap:2px;display:grid}.cal-weekdays span{text-align:center;font-size:var(--fs-xs);font-weight:var(--fw-bold);color:var(--muted);padding:var(--sp-1) 0}.cal-week{border-radius:10px;margin-bottom:2px;position:relative}.cal-week[class*=phase-]{padding-left:6px}.cal-week[class*=phase-]:before,.legend-phase{content:"";background:var(--phase,var(--series-2));border-radius:2px;width:4px;position:absolute;top:6px;bottom:6px;left:0}.legend-phase{height:14px;display:inline-block;position:static}.cal-day{min-height:56px;padding:6px 0 var(--sp-2);color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:10px;flex-direction:column;justify-content:flex-start;align-items:center;gap:3px;display:flex}.cal-day.is-out{color:var(--muted);opacity:.55}.cal-num{border-radius:var(--r-pill);width:30px;height:30px;font-size:var(--fs-base);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:inline-flex}.cal-day.is-today .cal-num{color:var(--accent);font-weight:var(--fw-bold);box-shadow:inset 0 0 0 1.5px var(--accent)}.cal-day.is-in-week{background:var(--accent-soft)}@media (hover:hover){.cal-day:hover{background:var(--surface-2)}}.month-legend{margin:var(--sp-3) 0 0}.cal-loading{background:color-mix(in srgb, var(--surface) 60%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:30px 0 0}.cal-loading span{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:4px 12px}.plan-week{gap:var(--sp-2);flex-direction:column;display:flex}.pw-head{align-items:center;gap:var(--sp-1);margin:calc(-1 * var(--sp-2)) calc(-1 * var(--sp-2)) 0;display:flex}.pw-title{min-width:0;font-size:var(--fs-lg);flex:1;margin:0;line-height:1.2}.pw-range{align-items:center;gap:var(--sp-1);min-height:var(--tap);padding:0 var(--sp-2);border-radius:var(--r-sm);color:var(--text);font:inherit;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;cursor:pointer;background:0 0;border:0;display:inline-flex}.pw-range .icon{color:var(--muted)}@media (hover:hover){.pw-range:hover{background:var(--surface-2)}}.pw-today{flex:none}.pw-phase{align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);flex-wrap:wrap;margin:0;display:flex}.pw-strip{touch-action:pan-y;-webkit-user-select:none;user-select:none;margin:0}.pw-strip .ws-day{width:100%;font:inherit;cursor:pointer;background:0 0;border:0}.pw-strip .ws-day.is-today{background:var(--accent-soft)}.ws-load{min-height:1.2em;font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums}.pw-strip+.ws-legend{margin:0}.pw-summary{gap:var(--sp-1);flex-direction:column;display:flex}.pw-summary .meter,.pw-proposed-load,.pw-focus{margin:0}.pw-focus{max-width:65ch;color:var(--muted)}.pw-proposal-slot:empty{display:none}.pw-proposal{gap:var(--sp-2);padding:var(--sp-3);border-radius:var(--r-md);background:var(--accent-soft);flex-direction:column;display:flex}.pw-proposal-text{align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;margin:0;display:flex}.pw-proposal-held{margin:0}.pw-proposal-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.pw-proposal-actions .btn{flex:12em}.pw-proposal .skeleton-line{background:color-mix(in srgb, var(--surface) 70%, transparent)}.plan-agenda{gap:var(--sp-3);flex-direction:column;display:flex}.plan-day{padding-top:0}.plan-day-head{top:calc(var(--appbar-h) + env(safe-area-inset-top));z-index:2;align-items:center;gap:var(--sp-2);min-height:52px;margin:0 calc(-1 * var(--sp-4)) var(--sp-1);padding:var(--sp-1) var(--sp-2) var(--sp-1) var(--sp-4);border-radius:var(--r-md) var(--r-md) 0 0;background:var(--surface);display:flex;position:sticky}.plan-day-head h3{align-items:baseline;gap:0 var(--sp-2);min-width:0;font-size:var(--fs-base);flex-wrap:wrap;flex:1;margin:0;display:flex}.plan-day-name:first-letter{text-transform:uppercase}.plan-day-rel{color:var(--accent)}.plan-day.is-past .plan-day-name{color:var(--muted)}.plan-day.is-today{box-shadow:inset 0 0 0 1.5px var(--accent)}.plan-day-load{font-size:var(--fs-sm);color:var(--muted);font-variant-numeric:tabular-nums;flex:none}.plan-day-head{transition:background-color .4s}.plan-day.is-target .plan-day-head{background-color:var(--accent-soft)}.pw-proposal-slot.is-target .pw-proposal{box-shadow:0 0 0 2px var(--accent)}.pw-proposal-slot:focus{outline:none}@media (prefers-reduced-motion:reduce){.plan-day-head{transition:none}}.plan-rest{align-items:center;gap:var(--sp-1);font-size:var(--fs-sm);color:var(--muted);margin:0;display:inline-flex}.plan-day--empty{padding-block:0}.plan-day--empty .plan-day-head{border-radius:var(--r-md);margin-bottom:0;position:static}.plan-day-load:last-child{margin-right:var(--sp-2)}.plan-day--empty .plan-day-head h3{flex:none}.plan-day--empty .plan-rest{flex:1}.plan-items{gap:var(--sp-3);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.plan-items>li+li{padding-top:var(--sp-3);border-top:1px solid var(--border)}.plan-items>li:has(>.workout-item--proposed){border-top:0;padding-top:0}.plan-items .list-row{margin-inline:calc(-1 * var(--sp-2));padding-inline:var(--sp-2);border-bottom:0}.plan-item--done .workout-item,.plan-item--missed .workout-item{opacity:.85}.plan-item .plan-activity{margin-top:var(--sp-2)}.plan-activity-icon{color:var(--good)}.plan-activity-title{align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;display:inline-flex}.plan-activity-headline{color:var(--text);display:block}.plan-activity-headline--none{color:var(--muted)}.plan-activity .list-row-meta{white-space:normal}.plan-activity .plan-activity-headline{-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.plan-item.is-deleting>.workout-item{opacity:.55}.plan-item-busy{align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0 0;display:flex}.plan-fixed-note{display:block}.wi-toggle{min-height:var(--tap);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:2px;margin-block:-6px;padding:0;display:inline-flex}@media (hover:hover){.wi-toggle:hover span{text-decoration:underline}}.wi-hint{color:var(--muted)}.wi-hint--warn{color:var(--warn)}.wi-hint-text{font-size:var(--fs-xs)}.wi-body{gap:var(--sp-1);flex-direction:column;display:flex}.wi-actions .wi-menu{margin-left:auto}.action-list{margin:0 calc(-1 * var(--sp-2));flex-direction:column;padding:0;list-style:none;display:flex}.action-row{align-items:center;gap:var(--sp-3);width:100%;min-height:56px;padding:var(--sp-2);border-radius:var(--r-sm);color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;display:flex}@media (hover:hover){.action-row:hover{background:var(--surface-2)}}.action-row:focus-visible{outline-offset:-2px}.action-row-icon{color:var(--accent);flex:none}.action-row-main{flex-direction:column;min-width:0;display:flex}.action-row-label{font-weight:var(--fw-semibold)}.action-row-hint{font-size:var(--fs-sm);color:var(--muted)}.action-row--danger,.action-row--danger .action-row-icon{color:var(--danger)}.action-list li+li:has(.action-row--danger){margin-top:var(--sp-1);padding-top:var(--sp-1);border-top:1px solid var(--border)}.proposal-about h3{margin:0 0 var(--sp-1);font-size:var(--fs-base)}.proposal-summary{max-width:65ch;margin:0}.proposal-lines{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.proposal-line{align-items:center;gap:var(--sp-1) var(--sp-2);min-height:var(--tap);padding:var(--sp-1) 0;border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.proposal-line-when{min-width:4.5em;font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--accent);flex:none}.proposal-line-name{flex:1;min-width:10em}.workout-route{margin-top:var(--sp-2)}.race-detail{gap:var(--sp-3);margin-top:var(--sp-2);flex-direction:column;display:flex}.course ul{margin:6px 0;padding-left:1.2em}.profile-chart,.season-chart{width:100%;height:auto;display:block}.profile-chart .area{fill:var(--series-1);opacity:.18}.profile-chart .line{fill:none;stroke:var(--series-1);stroke-width:2px}.profile-chart .climb{fill:var(--series-2);opacity:.1}.profile-chart .grid,.season-chart .grid{stroke:var(--grid);stroke-width:1px}.profile-chart .axis,.season-chart .axis{fill:var(--muted);font-size:13px}.season-chart .phase{fill:var(--text);opacity:0}.season-chart .phase-build{opacity:.03}.season-chart .phase-peak{opacity:.07}.season-chart .phase-taper,.season-chart .phase-recovery{opacity:.02}.season-chart .phase-race{fill:var(--series-2);opacity:.15}.season-chart .current-week{fill:none;stroke:var(--text);stroke-dasharray:3 3;opacity:.5}.season-chart .race-mark{fill:var(--series-2);font-size:14px;font-weight:var(--fw-bold)}.race-images{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.race-image{grid-template-columns:140px 1fr;gap:10px;width:100%;display:grid}.race-image img{border:1px solid var(--border);border-radius:6px;width:140px}.race-image textarea{width:100%}.race-images label{cursor:pointer}.reading{white-space:pre-wrap;margin:0 0 6px;font-family:inherit}@media (width<=600px){.race-image{grid-template-columns:1fr}.race-image img{width:100%;max-width:260px}}.season-fitness .chart-plot{position:relative}.season-fitness-chart{touch-action:pan-y;width:100%;height:auto;display:block}.season-fitness-chart .ctl-real,.season-fitness-chart .ctl-forecast,.season-fitness-chart .ctl-plan{fill:none;stroke-linecap:round;stroke-linejoin:round}.season-fitness-chart .ctl-real{stroke:var(--series-1);stroke-width:2px}.season-fitness-chart .ctl-forecast{stroke:var(--series-1);stroke-width:2px;stroke-dasharray:6 4}.season-fitness-chart .ctl-plan{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:1.5 3}.season-fitness-chart .today-line{stroke:var(--muted);stroke-width:1px}.season-fitness-chart .race-line{stroke:var(--series-2);stroke-width:1px;stroke-dasharray:2 3}.season-fitness-chart .race-mark{font-weight:var(--fw-bold)}.season-fitness-chart .crosshair{stroke:var(--muted);stroke-width:1px}.season-fitness-chart .target-line{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:10 5}.race-forecasts{gap:var(--sp-2);margin:10px 0 0;padding:0;list-style:none;display:grid}.race-forecast{border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--sp-2) 10px}.race-forecast-values{gap:var(--sp-1) var(--sp-4);margin-top:var(--sp-1);flex-wrap:wrap;display:flex}.season-blocks,.season-weeks{margin:0;padding:0;list-style:none}.season-blocks{gap:var(--sp-4);margin-top:10px;display:grid}.season-block{border-left:3px solid var(--phase,var(--border));padding-left:10px}.season-block-head{align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;display:flex}.season-block-help{margin:var(--sp-1) 0 var(--sp-2);color:var(--muted)}.season-weeks{gap:6px;display:grid}.season-week{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2)}.season-week.is-current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.season-week.is-past{opacity:.75}.season-week summary{align-items:center;gap:var(--sp-1) 6px;padding:var(--sp-2) 34px var(--sp-2) 10px;color:var(--text);font-size:var(--fs-sm);flex-wrap:wrap;list-style:none;display:flex;position:relative}.season-week summary::-webkit-details-marker{display:none}.season-week summary .disclosure-chev{color:var(--muted);position:absolute;top:12px;right:10px}.season-week details[open] summary .disclosure-chev{transform:rotate(180deg)}.season-week-dates{font-weight:var(--fw-bold)}.season-week-goal{color:var(--muted);font-size:var(--fs-sm);flex-basis:100%}.season-week-body{padding:0 10px 10px}.season-week-facts{gap:var(--sp-1) 18px;flex-wrap:wrap;margin:0 0 6px;display:flex}.season-week-facts div{gap:var(--sp-1);font-size:var(--fs-sm);display:flex}.season-week-facts dt{color:var(--muted)}.season-week-facts dd{font-weight:var(--fw-semibold);margin:0}.season-week-body h4{margin:var(--sp-2) 0 var(--sp-1)}.key-sessions{font-size:var(--fs-sm);gap:var(--sp-1);margin:0 0 6px;padding-left:18px;display:grid}.state-kicker{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--muted);margin:0}.predict-time{font-size:var(--fs-display);font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;margin:2px 0;line-height:1.05}.verdict{margin:var(--sp-2) 0 0;padding:var(--sp-2) 10px;border-radius:var(--r-sm);border-left:4px solid var(--muted);background:var(--surface-2)}.verdict-very_hard{border-left-color:var(--danger)}.verdict-hard{border-left-color:var(--warn)}.verdict-realistic{border-left-color:var(--good)}.verdict-easy{border-left-color:var(--series-1)}.plan-profile .sec{opacity:.35}.plan-profile .sec-up{fill:var(--series-2)}.plan-profile .sec-down{fill:var(--series-1)}.plan-profile .sec-flat{fill:var(--muted);opacity:.18}.plan-profile .sec-line{fill:none;stroke:var(--text);stroke-width:1.5px}.plan-profile .aid-line{stroke:var(--muted);stroke-dasharray:3 3}.plan-profile .aid-label{font-weight:var(--fw-bold)}.plan-profile .intake-dot{fill:var(--good);stroke:var(--surface);stroke-width:1.5px}.plan-legend{gap:var(--sp-1) var(--sp-3);margin:var(--sp-1) 0 10px;flex-wrap:wrap;display:flex}.swatch.sec-up{background:color-mix(in srgb, var(--series-2) 55%, transparent)}.swatch.sec-down{background:color-mix(in srgb, var(--series-1) 55%, transparent)}.swatch.sec-flat{background:color-mix(in srgb, var(--muted) 35%, transparent)}.swatch.intake-swatch{background:var(--good);border-radius:var(--r-pill)}.custom-time{align-items:flex-end;gap:var(--sp-2);flex-wrap:wrap;display:flex}.custom-time label{gap:var(--sp-1);flex-direction:column;max-width:140px;display:flex}.sec-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.sec-card{padding:10px var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2);border-left:4px solid var(--muted)}.sec-card-up{border-left-color:var(--series-2)}.sec-card-down{border-left-color:var(--series-1)}.sec-head{align-items:center;gap:10px;display:flex}.sec-head>div{flex:1;min-width:0}.sec-num{border-radius:var(--r-pill);background:var(--surface);width:26px;height:26px;font-weight:var(--fw-bold);font-size:var(--fs-sm);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.sec-stats{margin:var(--sp-2) 0 var(--sp-1);grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:6px;display:grid}.sec-stats dt{font-size:var(--fs-xs);color:var(--muted)}.sec-stats dd{font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}.sec-card p{margin:var(--sp-1) 0 0}.sec-events,.intake-list{margin:6px 0 0;padding-left:18px}.sec-events li+li,.intake-list li+li{margin-top:3px}.intake-list .icon{color:var(--muted)}.curve{margin:var(--sp-2) 0 0;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:6px;padding:0;list-style:none;display:grid}.curve li{border-radius:var(--r-sm);background:var(--surface-2);font-variant-numeric:tabular-nums;flex-direction:column;align-items:center;padding:6px;display:flex}.curve li span{font-size:var(--fs-xs);color:var(--muted)}.curve-est{opacity:.55}.place-map-wrap{isolation:isolate;margin:var(--sp-1) 0 10px;position:relative}.place-map{border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);z-index:0;height:280px;overflow:hidden}.map-toggle{top:var(--sp-2);white-space:nowrap;z-index:500;background:var(--surface);position:absolute;left:50%;transform:translate(-50%)}:root[data-theme=dark] .place-map .leaflet-tile-pane{filter:brightness(.78)contrast(1.08)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .place-map .leaflet-tile-pane{filter:brightness(.78)contrast(1.08)}}.place-detail{margin-top:10px}.place-facts,.climb-list{margin:6px 0;padding-left:18px}.activity-pick{max-height:320px;overflow-y:auto}.activity-pick button{justify-content:space-between;gap:var(--sp-2);text-align:left;width:100%;display:flex}.activity-pick button .muted{white-space:nowrap;flex-shrink:0}.activity-pick button.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.gpx-link{gap:var(--sp-1);display:grid}.gpx-link-row{margin-top:var(--sp-1);gap:6px;display:flex}.gpx-link-row input{flex:1;min-width:0}.settings-list{margin:6px 0;padding-left:18px}.settings-list li+li{margin-top:var(--sp-1)}.zones{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.zones li{border-radius:var(--r-sm);background:var(--surface-2);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;justify-content:space-between;gap:6px;padding:6px 10px;display:flex}.zone-name{font-weight:var(--fw-bold);color:var(--muted)}.routine-list{margin:var(--sp-2) 0;gap:10px;padding:0;list-style:none;display:grid}.routine-item{border:1px solid var(--border);border-radius:var(--r-md);padding:10px}.routine-item>.btn-small{justify-self:start}.routine-days button{min-width:2.2em}.playlist{gap:6px;margin-top:6px;display:grid}.playlist .form-actions{margin:0}.playlist-progress{align-items:center;gap:var(--sp-2);display:flex}.playlist-segments{margin:var(--sp-2) 0 0;gap:10px;padding:0;list-style:none;display:grid}.playlist-seg{border-left:3px solid var(--border);padding-left:10px}.playlist-seg.seg-hard,.playlist-seg.seg-climb,.playlist-seg.seg-hike,.playlist-seg.seg-start,.playlist-seg.seg-finish{border-left-color:var(--accent)}.playlist-seg-head{justify-content:space-between;gap:2px var(--sp-2);flex-wrap:wrap;display:flex}.playlist-tracks{margin:var(--sp-1) 0 0;font-size:var(--fs-sm);gap:2px;padding:0;list-style:none;display:grid}.playlist-tracks li{grid-template-columns:3.4em 1fr auto;align-items:center;gap:6px;display:grid}.playlist-tracks li.vetoed .playlist-track-name{opacity:.6;text-decoration:line-through}.playlist-track-name{overflow-wrap:anywhere;min-width:0}.taste-chips{gap:var(--sp-1);flex-wrap:wrap;margin:6px 0;display:flex}.taste-chips .chip{cursor:default}@media (width>=1024px){.composer{bottom:calc(var(--sp-3) + env(safe-area-inset-bottom))}.toast-region{left:240px;bottom:calc(var(--sp-5) + env(safe-area-inset-bottom))}:root:has(.composer) .toast-region{bottom:calc(var(--sp-3) + var(--composer-h) + env(safe-area-inset-bottom))}}.section-lead{margin:0 0 var(--sp-3)}.stack-sm{gap:var(--sp-2);flex-direction:column;display:flex}.pre-line{white-space:pre-line}.season-section,.races-section,.places-section{gap:var(--sp-3);flex-direction:column;display:flex}.season-generating,.season-accept,.season-fitness-block,.season-blocks-wrap{gap:var(--sp-2);flex-direction:column;display:flex}.season-remake{justify-content:flex-start;display:flex}.season-block-summary,.season-week-summary{gap:var(--sp-1);flex-direction:column;flex:1;min-width:0;display:flex}.season-block-title{font-weight:var(--fw-bold)}.season-week-head{align-items:center;gap:var(--sp-1) var(--sp-2);flex-wrap:wrap;display:flex}.season-week-summary .season-week-goal{flex-basis:auto}.season-week-link{margin-top:var(--sp-2)}.race-forecast-main{flex-direction:column;flex:1;min-width:0;display:flex}.race-forecast-name{font-weight:var(--fw-semibold)}.race-forecast-meta{font-size:var(--fs-sm);color:var(--muted)}.disclosure-card{padding:var(--sp-3) var(--sp-4)}.course-stats,.plan-stats{gap:var(--sp-3) var(--sp-4);margin-top:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(110px,1fr));display:grid}.course-stats .stat--big:nth-child(-n+2){grid-column:span 1}.predict-head{gap:var(--sp-1);margin-bottom:var(--sp-2);flex-direction:column;display:flex}.predict-head p{margin:0}.detail-hero{gap:var(--sp-2);flex-direction:column;display:flex}.detail-when{font-weight:var(--fw-semibold);margin:0}.detail-tags{gap:var(--sp-2);flex-wrap:wrap;display:flex}.race-day-form{margin:0}.route-facts{gap:var(--sp-2);flex-direction:column;display:flex}.route-bands{margin:0}.climb-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.climb-list li{align-items:baseline;gap:var(--sp-1) var(--sp-3);padding:var(--sp-2) 0;border-top:1px solid var(--border);font-size:var(--fs-sm);grid-template-columns:auto auto 1fr;display:grid}.climb-list li:first-child{border-top:0}.climb-km{font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}.climb-gain{font-weight:var(--fw-bold);font-variant-numeric:tabular-nums}@media (width<=480px){.climb-list li{grid-template-columns:auto 1fr}.climb-meta{grid-column:1/-1}}.mini-profile{width:72px;height:36px;display:block}.mini-profile-area{fill:var(--accent-soft);stroke:none}.mini-profile-line{fill:none;stroke:var(--accent);stroke-width:1.5px}.mini-profile-icon{color:var(--muted)}.sec-item{border-bottom:1px solid var(--border)}.sec-item:last-child{border-bottom:0}.sec-body{padding:0 0 var(--sp-3) calc(26px + var(--sp-3))}.sec-body p{margin:0}.sec-time{text-align:right;font-variant-numeric:tabular-nums;font-size:var(--fs-xs);color:var(--muted);flex-direction:column;align-items:flex-end;display:flex}.sec-time strong{font-size:var(--fs-base);color:var(--text)}.form-group{gap:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4) var(--sp-4);flex-direction:column;min-width:0;margin:0;display:flex}.form-group>legend{padding:0 var(--sp-2);font-weight:var(--fw-semibold);font-size:var(--fs-sm)}.file-button{cursor:pointer;max-width:100%}.file-button-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.gpx-preview{gap:var(--sp-2);flex-direction:column;display:flex}.gpx-preview p{margin:0}.photo-picks{gap:var(--sp-3);grid-template-columns:repeat(auto-fill,minmax(110px,1fr));margin:0;padding:0;list-style:none;display:grid}.photo-picks li{gap:var(--sp-1);flex-direction:column;align-items:flex-start;display:flex}.photo-picks img{border-radius:var(--r-sm);border:1px solid var(--border);width:100%}.pick-row{justify-content:space-between;align-items:center;gap:var(--sp-3);width:100%;min-height:52px;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--text);text-align:left;cursor:pointer;display:flex}.pick-row.is-selected{border-color:var(--accent);background:var(--accent-soft)}.pick-row-main{flex-direction:column;min-width:0;display:flex}.pick-row-title{font-weight:var(--fw-semibold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pick-row-meta{font-size:var(--fs-sm);color:var(--muted)}.row-actions{gap:var(--sp-2);flex-wrap:wrap;display:flex}.back-inline{align-self:flex-start;align-items:center;gap:var(--sp-1);min-height:44px;color:var(--accent);font-weight:var(--fw-semibold);cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.sheet-subtitle{font-size:var(--fs-md);margin:0}.sibling--prev{text-align:left}.sec-item .list-row-title,.sec-item .list-row-meta{white-space:normal;overflow:visible}.race-forecast{align-items:start;gap:var(--sp-1) var(--sp-3);min-height:44px;color:var(--text);grid-template-columns:auto 1fr;text-decoration:none;display:grid}a.race-forecast:hover{border-color:var(--accent)}.race-forecast .race-forecast-values{grid-column:2;margin-top:0}.race-row .list-row-title{white-space:normal;overflow:visible}.settings-group{padding-block:var(--sp-1)}.settings-group>.disclosure>summary{min-height:64px}.settings-link .list-row{border-bottom:0;min-height:64px}.settings-link .list-row-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.01em}.settings-link .list-row-meta{white-space:normal;overflow-wrap:anywhere}.group-head{flex-direction:column;gap:2px;min-width:0;display:flex}.group-name{font-size:var(--fs-lg);font-weight:var(--fw-bold);letter-spacing:-.01em}.group-line{font-size:var(--fs-sm);font-weight:var(--fw-regular);color:var(--muted);overflow-wrap:anywhere}.settings-body{padding-bottom:var(--sp-3);gap:0}.setting{gap:var(--sp-3);padding-block:var(--sp-4);border-top:1px solid var(--border);flex-direction:column;display:flex}.setting-title{font-size:var(--fs-md);margin:0;line-height:1.25}.setting>p,.setting .settings-list{margin:0}.result-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.routine-days{gap:var(--sp-2);flex-wrap:wrap;display:flex}.day-chip{min-width:44px;min-height:44px;font-weight:var(--fw-semibold);justify-content:center;padding:0}.routine-item>.routine-remove{justify-self:start}.veto-list{margin:0;padding:0;list-style:none}.veto-list li{justify-content:space-between;align-items:center;gap:var(--sp-2);border-bottom:1px solid var(--border);display:flex}.veto-name{overflow-wrap:anywhere;min-width:0}.ok-icon{color:var(--good)}.help .help-icon{vertical-align:-4px}.help-body{color:var(--muted)}.help-body p{margin:0 0 var(--sp-2)}.state-box--offline .state-box-icon{color:var(--muted)}.login-wait{margin:0}ul.chart-legend{margin:var(--sp-2) 0;padding:0;list-style:none}.login-sub{margin:0 0 var(--sp-2)}.plan-cols,.you-cols{gap:var(--sp-4);flex-direction:column;display:flex}.today-cols{gap:var(--sp-5);grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;display:grid}.today-col{gap:var(--sp-4);flex-direction:column;min-width:0;display:flex}.plan-side{gap:var(--sp-4);flex-direction:column;display:flex}.tabbar-foot{display:none}@media (width>=600px){:root{--app-w:720px}}@media (width>=1024px){:root{--app-w:824px;--detail-w:760px}.content,.appbar-inner{padding-left:calc(32px + env(safe-area-inset-left));padding-right:calc(32px + env(safe-area-inset-right))}.detail .appbar-inner,.detail .content{max-width:var(--detail-w)}.tabbar-inner{max-width:none;height:100%;margin:0}.tabbar-foot{padding:var(--sp-3) var(--sp-1) calc(var(--sp-3) + env(safe-area-inset-bottom));margin-top:auto;display:block}.tabbar-foot .segmented{width:100%}.tabbar-foot .segmented button{padding-inline:var(--sp-1);flex:1}.coach-layout .chat{max-width:720px}}@media (width>=1280px){:root{--app-w:1200px}.fitness-row.is-locked{cursor:default;pointer-events:none}.fitness-row.is-locked .fitness-row-chev{display:none}.plan-cols{gap:var(--sp-5);grid-template-columns:minmax(0,1fr) 400px;align-items:start;display:grid}.plan-agenda{grid-area:1/1;min-width:0}.plan-side{top:calc(var(--appbar-h) + env(safe-area-inset-top) + var(--sp-3));max-height:calc(100dvh - var(--appbar-h) - env(safe-area-inset-top) - var(--sp-5));overscroll-behavior:contain;grid-area:1/2;padding:2px;position:sticky;overflow-y:auto}.plan-month .month-sheet{padding:0}.plan-pair{gap:var(--sp-5);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.coach-layout{gap:var(--sp-5);grid-template-columns:minmax(0,720px) minmax(320px,1fr);align-items:start;display:grid}.today-col--side{top:calc(var(--appbar-h) + env(safe-area-inset-top) + var(--sp-3));max-height:calc(100dvh - var(--appbar-h) - env(safe-area-inset-top) - var(--sp-5));overscroll-behavior:contain;padding:2px;position:sticky;overflow-y:auto}.plan-side .meter-legend{column-gap:var(--sp-5);grid-template-columns:repeat(2,max-content);display:grid}.coach-side{gap:var(--sp-4);top:calc(var(--appbar-h) + env(safe-area-inset-top) + var(--sp-3));max-height:calc(100dvh - var(--appbar-h) - env(safe-area-inset-top) - var(--sp-5));overscroll-behavior:contain;flex-direction:column;padding:2px;display:flex;position:sticky;overflow-y:auto}.you-cols{gap:var(--sp-5);grid-template-columns:minmax(0,1fr) 360px;align-items:start;display:grid}.you-cols>#sec-progreso>.group-title:first-child{margin-top:0}}@media (width>=1440px){.progress-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.progress-grid>:first-child,.progress-grid>:nth-child(2),.progress-grid>:last-child:nth-child(odd){grid-column:1/-1}}@media (width<=400px){.week-strip,.pw-strip{margin-inline:-8px}}.place-map.leaflet-container .leaflet-control-zoom a{width:44px;height:44px;line-height:44px;font-size:var(--fs-md)}.place-map .leaflet-control-attribution{font-size:var(--fs-xs)}.place-map .leaflet-control-attribution a{position:relative}.place-map .leaflet-control-attribution a:after{content:"";position:absolute;inset:-15px -4px}
