:root{--color-bg: #f2f3f6;--color-surface: #ffffff;--color-surface-2: #e9ecf1;--color-border: #d8dce4;--color-border-strong: #b8bfcb;--color-text: #13161c;--color-text-muted: #5a6170;--color-text-faint: #8a91a0;--color-placeholder: #a1a6b2;--color-brand: #cf2e52;--color-brand-ink: #b3203f;--color-accent: #d9741b;--color-accent-strong: #b85f12;--color-accent-text: #ffffff;--color-accent-ink: #a9530c;--color-on-split: #ffffff;--color-danger: #b84a7a;--color-backdrop: rgba(16, 18, 24, .45);--tone-good: #1f8352;--tone-watch: #b85a12;--tone-neutral: #5a6170;--tone-good-bg: rgba(31, 131, 82, .1);--tone-watch-bg: rgba(184, 90, 18, .1);--tone-neutral-bg: rgba(90, 97, 112, .09);--split-push: #e0792a;--split-pull: #2c8f8c;--split-legs: #b84a7a;--split-other: #7b8293;--act-golf: #4e8a2a;--act-yoga: #7a5bc7;--act-mobility: #8c6a45;--act-cardio: #c9423a;--act-swim: #2f6bc9;--hue-steps: #23884f;--hue-energy: #e0552b;--hue-exercise: #7f9a12;--hue-stand: #1690a8;--hue-daylight: #c98a00;--hue-heart: #cf2e52;--hue-hrv: #7c46c8;--hue-sleep: #4652cc;--hue-vo2: #1d6fc0;--hue-resp: #0e9488;--hue-temp: #c2571d;--hue-train: #d9741b;--hue-ink: #13161c;--stage-awake: #e8835a;--stage-rem: #4ba3ee;--stage-core: #4561dc;--stage-deep: #262a86;--stage-unstaged: #8f9bd8;--zone-1: #a3abb9;--zone-2: #3a9f64;--zone-3: #e0962a;--zone-4: #cf2e52;--band-fill: rgba(19, 22, 28, .075);--band-line: rgba(19, 22, 28, .35);--ref-fill-a: rgba(19, 22, 28, .03);--ref-fill-b: rgba(19, 22, 28, .07);--target-fill: rgba(31, 131, 82, .1);--planned-fill: rgba(217, 116, 27, .12);--hatch-line: rgba(70, 82, 204, .55);--hatch-bg: rgba(70, 82, 204, .1);--shadow-raised: 0 10px 30px rgba(21, 23, 28, .12);--shadow-sheet: 0 -10px 40px rgba(21, 23, 28, .18);--font-display: "Barlow Condensed", "Arial Narrow", Impact, sans-serif;--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-2xs: 10px;--text-xs: 11px;--text-sm: 12px;--text-ms: 13px;--text-body: 14px;--text-base: 15px;--text-md: 17px;--text-lg: 22px;--text-xl: 34px;--text-2xl: 44px;--text-3xl: 56px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-xs: 3px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-pill: 999px;--column-max: 560px;--content-max: 1160px;--list-max: 720px;--tabbar-height: 62px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--color-bg: #0f1217;--color-surface: #181c23;--color-surface-2: #21262f;--color-border: #2b313c;--color-border-strong: #434a58;--color-text: #eef0f4;--color-text-muted: #a3aab8;--color-text-faint: #747b8b;--color-placeholder: #6b7281;--color-brand: #ff6683;--color-brand-ink: #ff8098;--color-accent: #f2a04a;--color-accent-strong: #f7b56f;--color-accent-text: #15171c;--color-accent-ink: #f2a04a;--color-on-split: #ffffff;--color-danger: #d67aa4;--color-backdrop: rgba(0, 0, 0, .6);--tone-good: #52cf8d;--tone-watch: #f5a656;--tone-neutral: #a3aab8;--tone-good-bg: rgba(82, 207, 141, .12);--tone-watch-bg: rgba(245, 166, 86, .13);--tone-neutral-bg: rgba(163, 170, 184, .1);--split-push: #f09a52;--split-pull: #4fb7b3;--split-legs: #d67aa4;--split-other: #8d94a3;--act-golf: #82c25a;--act-yoga: #a68ce8;--act-mobility: #c49d72;--act-cardio: #ee7468;--act-swim: #6c9ef0;--hue-steps: #5ccb8a;--hue-energy: #ff875c;--hue-exercise: #b5d33f;--hue-stand: #4cc6df;--hue-daylight: #f5c242;--hue-heart: #ff6683;--hue-hrv: #b38df5;--hue-sleep: #8f98ff;--hue-vo2: #62a9f3;--hue-resp: #46d1c3;--hue-temp: #f08a55;--hue-train: #f2a04a;--hue-ink: #eef0f4;--stage-awake: #ff9c73;--stage-rem: #74bdff;--stage-core: #6f86ff;--stage-deep: #4d50cf;--stage-unstaged: #8f9bd8;--zone-1: #6f7787;--zone-2: #4fc27f;--zone-3: #f5ae45;--zone-4: #ff6683;--band-fill: rgba(238, 240, 244, .09);--band-line: rgba(238, 240, 244, .4);--ref-fill-a: rgba(238, 240, 244, .025);--ref-fill-b: rgba(238, 240, 244, .065);--target-fill: rgba(82, 207, 141, .12);--planned-fill: rgba(242, 160, 74, .14);--hatch-line: rgba(143, 152, 255, .6);--hatch-bg: rgba(143, 152, 255, .1);--shadow-raised: 0 10px 30px rgba(0, 0, 0, .5);--shadow-sheet: 0 -10px 40px rgba(0, 0, 0, .6);color-scheme:dark}}:root[data-theme=dark]{--color-bg: #0f1217;--color-surface: #181c23;--color-surface-2: #21262f;--color-border: #2b313c;--color-border-strong: #434a58;--color-text: #eef0f4;--color-text-muted: #a3aab8;--color-text-faint: #747b8b;--color-placeholder: #6b7281;--color-brand: #ff6683;--color-brand-ink: #ff8098;--color-accent: #f2a04a;--color-accent-strong: #f7b56f;--color-accent-text: #15171c;--color-accent-ink: #f2a04a;--color-on-split: #ffffff;--color-danger: #d67aa4;--color-backdrop: rgba(0, 0, 0, .6);--tone-good: #52cf8d;--tone-watch: #f5a656;--tone-neutral: #a3aab8;--tone-good-bg: rgba(82, 207, 141, .12);--tone-watch-bg: rgba(245, 166, 86, .13);--tone-neutral-bg: rgba(163, 170, 184, .1);--split-push: #f09a52;--split-pull: #4fb7b3;--split-legs: #d67aa4;--split-other: #8d94a3;--act-golf: #82c25a;--act-yoga: #a68ce8;--act-mobility: #c49d72;--act-cardio: #ee7468;--act-swim: #6c9ef0;--hue-steps: #5ccb8a;--hue-energy: #ff875c;--hue-exercise: #b5d33f;--hue-stand: #4cc6df;--hue-daylight: #f5c242;--hue-heart: #ff6683;--hue-hrv: #b38df5;--hue-sleep: #8f98ff;--hue-vo2: #62a9f3;--hue-resp: #46d1c3;--hue-temp: #f08a55;--hue-train: #f2a04a;--hue-ink: #eef0f4;--stage-awake: #ff9c73;--stage-rem: #74bdff;--stage-core: #6f86ff;--stage-deep: #4d50cf;--stage-unstaged: #8f9bd8;--zone-1: #6f7787;--zone-2: #4fc27f;--zone-3: #f5ae45;--zone-4: #ff6683;--band-fill: rgba(238, 240, 244, .09);--band-line: rgba(238, 240, 244, .4);--ref-fill-a: rgba(238, 240, 244, .025);--ref-fill-b: rgba(238, 240, 244, .065);--target-fill: rgba(82, 207, 141, .12);--planned-fill: rgba(242, 160, 74, .14);--hatch-line: rgba(143, 152, 255, .6);--hatch-bg: rgba(143, 152, 255, .1);--shadow-raised: 0 10px 30px rgba(0, 0, 0, .5);--shadow-sheet: 0 -10px 40px rgba(0, 0, 0, .6);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-base);line-height:1.45;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}[hidden]{display:none!important}.app-shell{max-width:var(--column-max);margin:0 auto;padding-inline:var(--space-4);padding-block:calc(var(--space-4) + env(safe-area-inset-top,0px)) calc(var(--space-6) + env(safe-area-inset-bottom,0px))}h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:.01em;margin:0;text-wrap:balance}h1{font-size:var(--text-xl);line-height:1}h2{font-size:var(--text-lg);line-height:1.1}.eyebrow{font-size:var(--text-sm);color:var(--color-text-muted)}.num{font-variant-numeric:tabular-nums}.muted{color:var(--color-text-muted)}.btn-text{background:none;border:0;color:var(--color-text-muted);padding:var(--space-2);font-size:var(--text-sm);white-space:nowrap}.strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:var(--space-5)}.tile{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:12px 12px 10px;min-width:0}.tile .big{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1;margin-top:2px}.tile .big small{font-size:16px;font-weight:600;color:var(--color-text-muted);margin-left:2px}.tile .note{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-1)}.since{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:var(--space-6)}.since .chip{border-radius:var(--radius-md);padding:10px 12px;color:var(--color-on-split);display:flex;justify-content:space-between;align-items:baseline;min-width:0}.since .chip.push{background:var(--split-push)}.since .chip.pull{background:var(--split-pull)}.since .chip.legs{background:var(--split-legs)}.since .chip b{font-family:var(--font-display);font-size:20px;font-weight:700}.since .chip span{font-family:var(--font-display);font-size:22px;font-weight:700;white-space:nowrap}.since .chip small{font-size:var(--text-sm);opacity:.9}.since .chip.stale{outline:2px solid var(--color-text);outline-offset:2px}section{margin-bottom:30px}section>.head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px;margin-bottom:10px}section>.head h2{white-space:nowrap}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:14px}.readout{font-size:14px;color:var(--color-text-muted);margin-top:var(--space-2)}.readout b{color:var(--color-text);font-weight:600}svg.chart{display:block;width:100%;height:auto}svg.chart text{font-family:var(--font-mono);font-size:10px;fill:var(--color-text-muted)}svg.chart .grid{stroke:var(--color-border)}svg.chart .line{stroke:var(--color-text)}svg.chart .label{fill:var(--color-text)}.fill-push{fill:var(--split-push)}.fill-pull{fill:var(--split-pull)}.fill-legs{fill:var(--split-legs)}.fill-other{fill:var(--split-other)}.fill-accent{fill:var(--color-accent)}svg.chart .target-line{stroke:var(--color-accent-ink)}svg.chart .target-label{fill:var(--color-accent-ink);font-weight:600;paint-order:stroke;stroke:var(--color-surface);stroke-width:3px}svg.chart .target-mark{fill:var(--color-accent)}.legend i.key-target{height:0;border-radius:0;border-top:2px dashed var(--color-accent-ink);vertical-align:3px;width:14px}.legend i.key-hit{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--color-accent);vertical-align:1px}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}.bg-push{background:var(--split-push)}.bg-pull{background:var(--split-pull)}.bg-legs{background:var(--split-legs)}.bg-other{background:var(--split-other)}.fill-golf{fill:var(--act-golf)}.fill-yoga{fill:var(--act-yoga)}.fill-mobility{fill:var(--act-mobility)}.fill-cardio{fill:var(--act-cardio)}.fill-swim{fill:var(--act-swim)}.bg-golf{background:var(--act-golf)}.bg-yoga{background:var(--act-yoga)}.bg-mobility{background:var(--act-mobility)}.bg-cardio{background:var(--act-cardio)}.bg-swim{background:var(--act-swim)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.strip.two{grid-template-columns:repeat(2,1fr)}.fill-faint{fill:var(--color-text-faint)}.bg-accent{background:var(--color-accent)}.bg-faint{background:var(--color-text-faint)}.legend i.key-avg{height:0;border-radius:0;border-top:1px dashed var(--color-text);vertical-align:3px;width:14px}.hcmp{width:100%;border-collapse:collapse;font-size:var(--text-base)}.hcmp th,.hcmp td{padding:var(--space-2) var(--space-2);text-align:right;border-bottom:1px solid var(--color-border);vertical-align:bottom}.hcmp th:first-child{padding-left:0}.hcmp th:last-child,.hcmp td:last-child{padding-right:0}.hcmp tbody tr:last-child th,.hcmp tbody tr:last-child td{border-bottom:0}.hcmp thead th{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--color-text-muted)}.hcmp thead th small{display:block;font-size:var(--text-xs);letter-spacing:0;text-transform:none;color:var(--color-text-faint);font-weight:400}.hcmp thead th.hit{color:var(--color-accent-ink)}.hcmp tbody th{text-align:left;font-weight:600}.hcmp tbody th,.hcmp tbody td{vertical-align:baseline}.hcmp td.hit{font-weight:600}.hcmp td.none{font-weight:400;color:var(--color-text-faint);font-size:var(--text-sm)}.hcmp td.diff{color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-sm);white-space:nowrap}.next{--next-accent: var(--color-accent);background:var(--color-surface);border:1px solid var(--color-border);border-left:6px solid var(--next-accent);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-6);display:grid;gap:var(--space-2)}.next.push{--next-accent: var(--split-push)}.next.pull{--next-accent: var(--split-pull)}.next.legs{--next-accent: var(--split-legs)}.next .what{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 var(--space-3);font-family:var(--font-display);line-height:1}.next .what b{font-size:var(--text-xl);font-weight:700;color:var(--next-accent)}.next .what span{font-size:var(--text-lg);font-weight:600;color:var(--color-text)}.next ul{margin:0;padding-left:var(--space-4);display:grid;gap:var(--space-1);font-size:var(--text-base);color:var(--color-text-muted)}.next .then{font-size:var(--text-base);color:var(--color-text-muted)}.next .then b{color:var(--color-text);font-weight:600}.next .actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-4);margin-top:var(--space-1)}.next .btn-primary{text-decoration:none;display:inline-block;font-size:var(--text-md);padding:var(--space-2) var(--space-4)}.next .hint{font-size:var(--text-sm);color:var(--color-text-faint);flex:1 1 200px;min-width:0}.acts{display:grid;gap:var(--space-2);margin-bottom:var(--space-3)}.acts .act{display:grid;grid-template-columns:6px 1fr auto;gap:var(--space-3);align-items:center;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border)}.acts .act:last-child{border-bottom:0;padding-bottom:0}.acts .stripe{width:6px;height:100%;min-height:30px;border-radius:3px}.acts .name{font-family:var(--font-display);font-size:var(--text-md);font-weight:600}.acts .meta{font-size:var(--text-sm);color:var(--color-text-muted)}.acts .meta b{color:var(--color-text);font-weight:600}.acts .n{text-align:right;font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;line-height:1}.acts .n small{display:block;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:400;color:var(--color-text-muted);margin-top:var(--space-1)}.share{display:grid;gap:var(--space-3)}.share .row{display:grid;grid-template-columns:54px 1fr 64px;align-items:center;gap:var(--space-3);font-size:13px}.share .bar{height:14px;border-radius:3px;background:var(--color-surface-2);overflow:hidden;position:relative}.share .bar i{position:absolute;inset:0 auto 0 0;border-radius:3px}.share .bar em{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--color-text);opacity:.6}.share .pct{text-align:right;color:var(--color-text-muted)}.share .pct b{color:var(--color-text)}.mix{display:grid;gap:12px}.mix .grp{display:grid;gap:var(--space-1)}.mix .lab{font-family:var(--font-display);font-size:var(--text-md);font-weight:600}.mix .lab.push{color:var(--split-push)}.mix .lab.pull{color:var(--split-pull)}.mix .lab.legs{color:var(--split-legs)}.mix .stack{display:flex;height:18px;border-radius:var(--radius-sm);overflow:hidden;background:var(--color-surface-2)}.mix .stack i{display:block;height:100%}.mix .keys{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:var(--text-sm);color:var(--color-text-muted)}.mix .keys b{color:var(--color-text)}.months{display:grid;grid-template-columns:repeat(12,1fr);gap:3px}.months .yr{grid-column:1 / -1;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:6px}.months .m{aspect-ratio:1;border-radius:3px;background:var(--color-surface-2);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:10px;color:var(--color-text)}.months .m.l1{background:color-mix(in srgb,var(--color-accent) 25%,var(--color-surface-2))}.months .m.l2{background:color-mix(in srgb,var(--color-accent) 50%,var(--color-surface-2))}.months .m.l3{background:color-mix(in srgb,var(--color-accent) 75%,var(--color-surface-2));color:var(--color-accent-text)}.months .m.l4{background:var(--color-accent);color:var(--color-accent-text)}.months .m.future{opacity:.35}.list{display:grid;gap:6px}.item{display:grid;grid-template-columns:6px 1fr auto;gap:var(--space-3);align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px 12px}.item .stripe{width:6px;height:36px;border-radius:3px}.item .t{font-weight:600}.item .t small{font-weight:400;color:var(--color-text-muted)}.item .d{font-size:var(--text-sm);color:var(--color-text-muted)}.item .r{text-align:right;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap}.item .r b{color:var(--color-text);font-weight:500}.btn-ghost{background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);margin-top:10px}.empty{color:var(--color-text-muted);font-size:var(--text-base);padding:18px 4px}.btn-primary{background:var(--color-accent);color:var(--color-accent-text);border:0;border-radius:var(--radius-md);font-family:var(--font-display);font-size:20px;font-weight:700;letter-spacing:.02em;padding:12px 16px}.btn-primary:disabled{opacity:.5;cursor:default}.field-input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:9px 10px;width:100%;min-width:0}.field-input::placeholder{color:var(--color-placeholder)}.error-line{color:var(--color-danger);font-size:13px;min-height:18px}.signin-screen{display:grid;place-content:center;min-height:80vh;gap:var(--space-4);text-align:center}.signin-form{display:grid;gap:var(--space-3);width:min(320px,90vw)}.signin-form .btn-primary{font-size:18px;box-shadow:none}.app-shell{padding-block:calc(var(--space-3) + env(safe-area-inset-top,0px)) calc(var(--tabbar-height) + var(--space-6) + env(safe-area-inset-bottom,0px))}.appbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);min-height:40px;margin-bottom:var(--space-3)}.brand{display:flex;align-items:center;gap:var(--space-2)}.brand-mark{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:var(--radius-md);background:var(--color-brand);color:var(--color-accent-text)}.brand-mark .icon{color:#fff}.brand-mark.big{width:56px;height:56px;border-radius:var(--radius-lg)}.brand-name{font-family:var(--font-display);font-size:var(--text-lg);font-weight:700;letter-spacing:.02em}.appbar-end{margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}.btn-text:hover{color:var(--color-text)}.btn-link{background:none;border:0;padding:var(--space-1) 0;color:var(--color-accent-ink);font-size:var(--text-sm);font-weight:600}.btn-link:hover{text-decoration:underline}.topnav{display:none}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;justify-content:center;background:var(--color-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom,0px)}.tab{flex:1;max-width:calc(var(--column-max) / 5);height:var(--tabbar-height);border:0;background:transparent;color:var(--color-text-muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;position:relative}.tab svg{display:block}.tab.is-active{color:var(--color-accent-ink)}.tab.is-active:before{content:"";position:absolute;top:-1px;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:var(--color-accent)}.tab:focus-visible{outline-offset:-4px;border-radius:var(--radius-md)}.tab:active{opacity:.7}.screen-head{margin-bottom:var(--space-4)}.screen-head h1{margin-top:2px}.screen-head .status{margin:var(--space-1) 0 0;color:var(--color-text-muted);font-size:var(--text-base)}.screen-head.row{display:grid;gap:var(--space-3)}.training section.target>.target-top .head{margin-bottom:var(--space-2)}.target-top{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);align-items:center}.target-count{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1;color:var(--color-accent-ink)}.target-count small{font-size:var(--text-lg);font-weight:600;color:var(--color-text-muted)}.target .head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-1) var(--space-3)}.segments{display:flex;align-items:center;gap:var(--space-1)}.segments i{flex:1;height:var(--space-3);border-radius:var(--radius-pill);background:var(--color-surface-2);box-shadow:inset 0 0 0 1px var(--color-border)}.segments i.on{background:var(--color-accent);box-shadow:none}.segments .extra{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;color:var(--color-accent-ink);padding:0 var(--space-1)}.target-msg{margin:0;font-size:var(--text-base)}.target-hist{margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.target-hist b{color:var(--color-text);font-weight:600}.target.missed .target-count{color:var(--color-text-muted)}.week-strip{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.week-strip .day{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:6px 2px 8px;display:grid;justify-items:center;gap:2px;min-width:0}.week-strip .l{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted)}.week-strip .n{font-family:var(--font-display);font-size:var(--text-md);font-weight:600;line-height:1.1}.week-strip .dots{display:flex;flex-wrap:wrap;justify-content:center;gap:3px;min-height:10px}.week-strip .dots i{width:10px;height:10px;border-radius:var(--radius-pill);display:block}.week-strip .day.done{background:var(--color-surface-2)}.week-strip .day.today{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.week-strip .day.today .l{color:var(--color-accent-ink);font-weight:500}.week-strip .day.future .n{color:var(--color-text-faint)}.week-strip .day.future{background:transparent;border-style:dashed}.segmented{display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:3px;gap:2px;justify-self:start}.segmented button{border:0;background:transparent;color:var(--color-text-muted);border-radius:var(--radius-sm);padding:6px 12px;font-family:var(--font-mono);font-size:var(--text-sm);font-weight:500;min-width:48px}.segmented button:hover{color:var(--color-text)}.segmented button.is-active{background:var(--color-surface);color:var(--color-text);box-shadow:0 0 0 1px var(--color-border-strong)}.filters{display:grid;gap:var(--space-3);margin-bottom:var(--space-4)}.chips{display:flex;flex-wrap:wrap;gap:6px}.fchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-pill);padding:5px 12px;font-size:var(--text-sm);font-weight:600}.fchip i{width:8px;height:8px;border-radius:var(--radius-pill);display:block}.fchip:hover{border-color:var(--color-border-strong)}.fchip.is-active{background:var(--color-text);color:var(--color-bg);border-color:var(--color-text)}.search{font-size:var(--text-base);background:var(--color-surface)}.count{color:var(--color-text-muted);font-size:var(--text-sm)}.count b{color:var(--color-text);font-size:var(--text-base)}.count .btn-link{margin-left:var(--space-3)}.month{margin-bottom:var(--space-4)}.month-head{position:sticky;top:0;z-index:5;display:flex;align-items:baseline;justify-content:space-between;background:var(--color-bg);padding:var(--space-2) 2px;margin-bottom:2px;font-size:var(--text-md);border-bottom:1px solid var(--color-border)}.golf-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.golf-stats .big{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1;margin-top:2px;color:var(--act-golf)}.golf-stats .big small{font-size:16px;color:var(--color-text-muted);margin-left:2px}.golf-last{display:grid;gap:var(--space-1);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--color-border);font-size:var(--text-base)}.golf-last .eyebrow{display:inline-block;min-width:88px}.golf-last b{font-weight:600}.golf-years{display:grid;gap:var(--space-2);margin-top:var(--space-4)}.yr-row{display:grid;grid-template-columns:40px 1fr auto;gap:var(--space-3);align-items:center;font-size:var(--text-sm)}.yr-bar{display:flex;gap:2px;height:12px}.yr-bar i{display:block;height:100%;border-radius:3px}.yr-bar i.range,.legend i.range{opacity:.4}.yr-n{color:var(--color-text-muted);white-space:nowrap}.yr-n b{color:var(--color-text)}.act-grid section{margin-bottom:var(--space-5)}@media(prefers-reduced-motion:no-preference){.tab,.topnav-btn,.segmented button,.fchip{transition:color .15s ease,background-color .15s ease,border-color .15s ease}}@media(min-width:960px){.app-shell{max-width:var(--content-max);padding-inline:var(--space-5);padding-block:var(--space-5) var(--space-6)}.tabbar{display:none}.appbar{justify-content:flex-start;gap:var(--space-6);margin-bottom:var(--space-5);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border)}.brand-name{font-size:var(--text-lg)}.topnav{display:flex;gap:var(--space-2)}.topnav-btn{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:var(--space-2) var(--space-3);color:var(--color-text-muted);font-family:var(--font-display);font-size:var(--text-md);font-weight:600;letter-spacing:.03em;text-transform:uppercase;border-bottom:3px solid transparent;border-radius:0;margin-bottom:-15px;padding-bottom:12px}.topnav-btn:hover{color:var(--color-text)}.topnav-btn.is-active{color:var(--color-text);border-bottom-color:var(--color-accent)}.topnav-btn:focus-visible{border-radius:var(--radius-sm)}.screen-head.row{grid-template-columns:1fr auto;align-items:end}.since .chip{align-items:center}.panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5) var(--space-4)}.panels section{margin-bottom:0;min-width:0}.panels section.wide{grid-column:1 / -1}.sessions{max-width:var(--list-max);margin:0 auto}.act-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-4);align-items:start}.act-grid section{min-width:0}.act-grid section.wide{grid-column:1 / -1}}@media(max-width:420px){h1{font-size:30px}.tile .big{font-size:28px}.tile .eyebrow{letter-spacing:0;white-space:nowrap}.since .chip span{font-size:18px}.share .row{grid-template-columns:46px 1fr 60px}.golf-stats .big{font-size:28px}.segmented button{padding:6px 8px;min-width:0}}a{color:var(--color-brand-ink)}.icon{display:inline-block;flex:none;vertical-align:middle}.hue-steps{color:var(--hue-steps)}.hue-energy{color:var(--hue-energy)}.hue-exercise{color:var(--hue-exercise)}.hue-stand{color:var(--hue-stand)}.hue-daylight{color:var(--hue-daylight)}.hue-heart{color:var(--hue-heart)}.hue-hrv{color:var(--hue-hrv)}.hue-sleep{color:var(--hue-sleep)}.hue-vo2{color:var(--hue-vo2)}.hue-resp{color:var(--hue-resp)}.hue-temp{color:var(--hue-temp)}.hue-train{color:var(--hue-train)}.hue-ink{color:var(--color-text)}.hue-accent{color:var(--color-accent)}.with-icon{display:inline-flex;align-items:center;gap:6px}.kicker{font-size:var(--text-ms);color:var(--color-text-muted);font-weight:500}.screen-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-3) var(--space-4)}.screen-head-text{min-width:0}.screen-head .status{max-width:62ch}.stamp{display:flex;align-items:center;gap:6px;font-size:var(--text-ms)}.sub-status{color:var(--color-text-muted);margin:0 0 var(--space-4);max-width:70ch}.sub-head{display:grid;gap:var(--space-3);margin-bottom:var(--space-4)}.sub-head .sub-status{margin:0}.source{font-size:var(--text-sm);color:var(--color-text-faint);margin:var(--space-2) 0 0;line-height:1.45}.source a{color:var(--color-text-muted)}.disclaimer{display:flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--color-text-faint);margin:var(--space-5) 0 0}.history-note{max-width:80ch}.btn-link{color:var(--color-brand-ink)}section>.head h2{display:inline-flex;align-items:center;gap:var(--space-2)}section>.head .meta{font-size:var(--text-sm);color:var(--color-text-muted);margin-right:auto}.h-icon{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--color-surface-2)}.icon-btn{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text);padding:0}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn:hover:not(:disabled){border-color:var(--color-border-strong)}.theme-toggle{display:inline-flex;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-pill);padding:2px;gap:2px}.theme-toggle button{display:grid;place-items:center;width:30px;height:28px;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--color-text-muted);padding:0}.theme-toggle button.is-active{background:var(--color-surface);color:var(--color-text);box-shadow:0 0 0 1px var(--color-border-strong)}.tab .icon{width:24px;height:24px}.tab.is-active{color:var(--color-brand-ink)}.tab.is-active:before{background:var(--color-brand)}.topnav-btn.is-active{border-bottom-color:var(--color-brand)!important}.tchart,.bchart,.mline,.hypno,.barcode,.hrcurve{width:100%;min-width:0}svg.chart{touch-action:pan-y}svg.chart .axis{font-family:var(--font-mono);font-size:var(--text-2xs);fill:var(--color-text-muted)}svg.chart .grid{stroke:var(--color-border);stroke-width:1}svg.chart .ref-band.rb-0{fill:var(--ref-fill-a)}svg.chart .ref-band.rb-1{fill:var(--ref-fill-b)}svg.chart .ref-label{font-family:var(--font-body);font-size:var(--text-2xs);fill:var(--color-text-faint);paint-order:stroke;stroke:var(--color-surface);stroke-width:3px}svg.chart .target-band{fill:var(--target-fill)}svg.chart .pband{fill:currentColor;opacity:.13}svg.chart .pband-mid{stroke:currentColor;opacity:.55;stroke-dasharray:2 3;stroke-width:1}svg.chart .ref-line{stroke:var(--color-text-muted);stroke-dasharray:5 4;stroke-width:1.25}svg.chart .series-line{fill:none;stroke:currentColor;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}svg.chart .dot{fill:currentColor}svg.chart .dot.hollow{fill:var(--color-surface);stroke:currentColor;stroke-width:1.4}svg.chart .tip line{stroke:var(--color-text-muted);stroke-dasharray:2 2}svg.chart .tip circle{fill:none;stroke:var(--color-text);stroke-width:1.5}svg.chart .bar{fill:currentColor;opacity:.85}svg.chart .bar.faded{opacity:.35}svg.chart .bar.on{opacity:1}svg.chart .bar-val{font-family:var(--font-mono);font-size:var(--text-2xs);fill:var(--color-text-muted)}.bchart svg.chart .series-line{stroke:var(--color-text);stroke-width:1.75;opacity:.8}.tip-line{min-height:20px;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:2px}.tip-line b{color:var(--color-text);font-weight:600}.legend i.key-dot{width:9px;height:9px;border-radius:var(--radius-pill);background:currentColor}.legend i.key-dot.hollow{background:transparent;box-shadow:inset 0 0 0 1.5px currentColor}.legend i.key-line{height:0;width:16px;border-radius:0;border-top:2px solid var(--color-text-muted);vertical-align:3px}.legend i.key-band{background:color-mix(in srgb,var(--color-text-muted) 22%,transparent);box-shadow:inset 0 0 0 1px var(--band-line)}.legend i.key-ref{background:var(--ref-fill-b)}.legend i.key-target{background:var(--target-fill);box-shadow:inset 0 0 0 1px var(--tone-good);border-top:0;height:10px;width:10px;border-radius:2px;vertical-align:-1px}.legend i.key-refline{height:0;width:16px;border-radius:0;border-top:1.5px dashed var(--color-text-muted);vertical-align:3px}.legend i.key-now{background:var(--hue-steps);height:3px;width:16px;vertical-align:3px}.legend i.key-prev{background:var(--color-text-muted);height:3px;width:16px;vertical-align:3px}.legend i.key-quiet{background:var(--color-border-strong);height:2px;width:16px;vertical-align:3px}.mline .yr-line path{fill:none;stroke-linejoin:round;stroke-linecap:round}.mline .yr-line.quiet path{stroke:var(--color-border-strong);stroke-width:1.25}.mline .yr-line.em-prev path{stroke:var(--color-text-muted);stroke-width:2}.mline .yr-line.em-prev circle{fill:var(--color-text-muted)}.mline .yr-line.em-now path{stroke:var(--hue-steps);stroke-width:2.5}.mline .yr-line.em-now circle{fill:var(--hue-steps)}.spark{display:block;width:100%;height:30px}.spark svg{display:block;overflow:visible}.segmented{max-width:100%}.segmented button{white-space:nowrap}.signin-brand{display:grid;justify-items:center;gap:var(--space-2)}.signin-brand h1{font-size:var(--text-2xl)}.today-grid{display:grid;gap:var(--space-5)}.today-grid>*{min-width:0}.today-grid section{margin-bottom:0}.readiness{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-4);display:grid;gap:var(--space-4);position:relative;overflow:hidden}.readiness:before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--tone-neutral)}.readiness.tone-good:before{background:var(--tone-good)}.readiness.tone-watch:before{background:var(--tone-watch)}.ready-main{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);align-items:center}.ready-label{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;line-height:1}.tone-good .ready-label{color:var(--tone-good)}.tone-watch .ready-label{color:var(--tone-watch)}.ready-reason{margin:var(--space-2) 0 0;font-size:var(--text-base)}.ready-train{display:grid;grid-template-columns:auto 1fr;gap:var(--space-2);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);color:var(--hue-train)}.ready-train p{margin:0;color:var(--color-text);font-size:var(--text-body)}.ready-train p.muted{color:var(--color-text-muted);margin-top:2px}.gauge{display:block}.gauge-track{fill:none;stroke:var(--color-surface-2);stroke-width:14;stroke-linecap:round}.gauge-fill{fill:none;stroke:var(--tone-neutral);stroke-width:14;stroke-linecap:round}.gauge.tone-good .gauge-fill{stroke:var(--tone-good)}.gauge.tone-watch .gauge-fill{stroke:var(--tone-watch)}.gauge-fill.cal{stroke-dasharray:4 6}.gauge-tick{stroke:var(--color-surface);stroke-width:3}.gauge-num{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;fill:var(--color-text)}.gauge-sub{font-size:var(--text-sm);fill:var(--color-text-muted)}.score-parts{display:grid;gap:var(--space-3);border-top:1px solid var(--color-border);padding-top:var(--space-4)}.score-parts-h{margin:0;font-size:var(--text-ms);font-weight:600;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em}.contribs{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.contrib{min-width:0}.contrib-top{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.contrib-name{display:inline-flex;align-items:center;gap:5px;font-size:var(--text-ms);font-weight:600}.contrib-name.hue-heart,.contrib-name.hue-hrv,.contrib-name.hue-sleep,.contrib-name.hue-resp{color:var(--color-text)}.contrib-name .icon{color:inherit}.contrib-name.hue-heart .icon{color:var(--hue-heart)}.contrib-name.hue-hrv .icon{color:var(--hue-hrv)}.contrib-name.hue-sleep .icon{color:var(--hue-sleep)}.contrib-name.hue-resp .icon{color:var(--hue-resp)}.contrib-pts{font-size:var(--text-ms);color:var(--color-text-muted);white-space:nowrap}.contrib-pts b{font-size:var(--text-md);color:var(--color-text);font-weight:700}.contrib-track{position:relative;height:6px;border-radius:var(--radius-pill);background:var(--color-surface-2);margin:6px 0 4px;overflow:hidden}.contrib-fill{position:absolute;left:0;top:0;bottom:0;border-radius:var(--radius-pill);background:var(--tone-neutral)}.contrib.st-better .contrib-fill{background:var(--tone-good)}.contrib.st-worse .contrib-fill{background:var(--tone-watch)}.contrib-note{font-size:var(--text-xs);color:var(--color-text-muted)}.contrib-hint{margin:4px 0 0;font-size:var(--text-sm);color:var(--color-text)}.contrib.st-worse .contrib-hint{color:var(--tone-watch)}.to-hundred{display:flex;align-items:center;gap:var(--space-2);margin:0;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:var(--tone-neutral-bg);font-size:var(--text-body);font-weight:600}.to-hundred .icon{flex:none;color:var(--color-text-muted)}.to-hundred.maxed{background:var(--tone-good-bg);color:var(--tone-good)}.to-hundred.maxed .icon{color:inherit}.ready-scale{margin:var(--space-2) 0 0;font-size:var(--text-body);color:var(--color-text-muted)}.insights{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3)}.insight{min-width:0;grid-template-columns:minmax(0,1fr)}.insight{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);display:grid;gap:var(--space-2);align-content:start}.insight-top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.insight-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:var(--radius-md);background:var(--color-surface-2)}.tone-chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);font-weight:600;padding:3px 8px;border-radius:var(--radius-pill)}.tone-chip.tone-good{color:var(--tone-good);background:var(--tone-good-bg)}.tone-chip.tone-watch{color:var(--tone-watch);background:var(--tone-watch-bg)}.tone-chip.tone-neutral{color:var(--tone-neutral);background:var(--tone-neutral-bg)}.insight h3{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;line-height:1.1}.insight p{margin:0;font-size:var(--text-body);color:var(--color-text-muted);line-height:1.5}.insight-foot{display:flex;justify-content:space-between;align-items:center;gap:var(--space-2)}.insight .src{font-size:var(--text-xs);color:var(--color-text-faint);text-decoration:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.insight .src:hover{text-decoration:underline}.mtiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.mtile{display:grid;gap:2px;align-content:start;text-align:left;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3);min-width:0;color:var(--color-text)}.mtile:hover{border-color:var(--color-border-strong)}.mtile-head{display:flex;align-items:center;gap:6px;font-size:var(--text-ms);font-weight:600;color:currentColor}.mtile-head{color:inherit}.mtile .mtile-head .icon{color:var(--tile-hue)}.mtile.hue-steps{--tile-hue: var(--hue-steps)}.mtile.hue-energy{--tile-hue: var(--hue-energy)}.mtile.hue-exercise{--tile-hue: var(--hue-exercise)}.mtile.hue-stand{--tile-hue: var(--hue-stand)}.mtile.hue-daylight{--tile-hue: var(--hue-daylight)}.mtile.hue-heart{--tile-hue: var(--hue-heart)}.mtile.hue-hrv{--tile-hue: var(--hue-hrv)}.mtile.hue-sleep{--tile-hue: var(--hue-sleep)}.mtile.hue-vo2{--tile-hue: var(--hue-vo2)}.mtile.hue-resp{--tile-hue: var(--hue-resp)}.mtile{color:var(--color-text)}.mtile .spark{color:var(--tile-hue);margin:4px 0 2px}.mtile-val{font-family:var(--font-display);font-size:30px;font-weight:700;line-height:1.05;margin-top:4px;white-space:nowrap}.mtile-val small{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted)}.mtile-sub{font-size:var(--text-xs);color:var(--color-text-muted)}.mtile-foot{font-size:var(--text-xs);min-height:16px}.mtile.empty .mtile-val{font-size:var(--text-base);font-family:var(--font-body)}.delta{display:inline-flex;align-items:center;gap:2px;color:var(--color-text-muted)}.delta.up-good{color:var(--tone-good)}.delta.down-bad{color:var(--tone-watch)}.band-pos{color:var(--color-text-muted)}.band-pos.above,.band-pos.below{color:var(--tone-watch);font-weight:600}.today-train .panel{display:grid;gap:var(--space-3)}.tt-target{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-3);align-items:center}.tt-count{font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;color:var(--color-accent-ink);line-height:1}.tt-count small{font-size:var(--text-lg);color:var(--color-text-muted)}.tt-msg{margin:6px 0 0;font-size:var(--text-ms);color:var(--color-text-muted)}.tt-last{display:grid;grid-template-columns:6px minmax(0,1fr) auto auto;gap:var(--space-2) var(--space-3);align-items:center;width:100%;text-align:left;background:var(--color-surface-2);border:0;border-radius:var(--radius-md);padding:10px 12px;color:var(--color-text)}.tt-last .stripe{width:6px;height:34px;border-radius:3px}.tt-last-main{display:grid;min-width:0}.tt-last .t{font-weight:600}.tt-last .d{font-size:var(--text-sm);color:var(--color-text-muted)}.verdict{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-xs);font-weight:600;padding:2px 8px 2px 6px;border-radius:var(--radius-pill);white-space:nowrap;color:var(--tone-neutral);background:var(--tone-neutral-bg)}.verdict.v-confirmed,.verdict.v-likely{color:var(--tone-good);background:var(--tone-good-bg)}.verdict.v-no_data{color:var(--color-text-faint);background:transparent;box-shadow:inset 0 0 0 1px var(--color-border)}.hr-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-top:4px;font-size:var(--text-sm);color:var(--color-text-muted)}.hr-line .num{display:inline-flex;align-items:center;gap:4px}.hr-line .num .icon{color:var(--hue-heart)}.item-btn{width:100%;text-align:left;color:var(--color-text);font:inherit}.item-btn:hover{border-color:var(--color-border-strong)}.item-main{min-width:0}.item .stripe{align-self:stretch;height:auto;min-height:36px}.panels>section{min-width:0}.scroll-x{overflow-x:auto}.wk-table th small{color:var(--color-text-faint);font-weight:400}.wk-table tr.current td,.wk-table tr.current th{color:var(--color-text-muted)}.wk-table thead th:first-child{text-align:left}.hcmp small.n{display:block;font-weight:400;font-size:var(--text-xs);color:var(--color-text-faint)}.yoy,.two-col{display:grid;gap:var(--space-4)}.two-col>.col{min-width:0}.training section.target{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);display:grid;gap:var(--space-2)}.training section{margin-bottom:var(--space-4)}.training .next,.training .since,.training .strip{margin-bottom:var(--space-4)}.mini-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-3)}.mini-stats.four{grid-template-columns:repeat(4,minmax(0,1fr))}.mini-stats>div{display:grid;min-width:0}.mini-stats .lab{font-size:var(--text-xs);color:var(--color-text-muted)}.mini-stats b{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.1}.mini-stats b small{font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted)}.mini-stats .note{font-size:var(--text-xs);color:var(--color-text-faint)}.zones{display:grid;gap:6px;margin:var(--space-2) 0}.zone-row{display:grid;grid-template-columns:96px minmax(0,1fr) 92px;gap:var(--space-2);align-items:center;font-size:var(--text-sm)}.zone-name{display:grid;line-height:1.2;font-weight:600}.zone-name small{font-weight:400;color:var(--color-text-faint);font-size:var(--text-2xs)}.zone-track{height:10px;background:var(--color-surface-2);border-radius:var(--radius-pill);overflow:hidden}.zone-track i{display:block;height:100%;border-radius:var(--radius-pill)}.zone-min{text-align:right;white-space:nowrap}.zone-min small,.zone-min em{color:var(--color-text-muted);font-style:normal}.zone-1{background:var(--zone-1);fill:var(--zone-1)}.zone-2{background:var(--zone-2);fill:var(--zone-2)}.zone-3{background:var(--zone-3);fill:var(--zone-3)}.zone-4{background:var(--zone-4);fill:var(--zone-4)}.legend i.zone-1,.legend i.zone-2,.legend i.zone-3,.legend i.zone-4{border-radius:2px}.hrcurve .planned{fill:var(--planned-fill)}.hrcurve .zone-line{stroke:var(--color-border-strong);stroke-dasharray:2 3}.hrcurve .hr-bar{opacity:.9}.hrcurve .actual line{stroke:var(--color-text);stroke-width:1.5}.hrcurve .actual line:not(:first-child){stroke-dasharray:3 3}.legend i.key-planned{background:var(--planned-fill);box-shadow:inset 0 0 0 1px var(--color-accent)}.legend i.key-actual{height:10px;width:12px;border:1.5px dashed var(--color-text);border-top:0;border-radius:0;background:transparent}body.sheet-open{overflow:hidden}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--color-backdrop);display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:640px;max-height:92vh;overflow-y:auto;background:var(--color-surface);border-radius:var(--radius-xl) var(--radius-xl) 0 0;box-shadow:var(--shadow-sheet);padding:var(--space-2) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom,0px));outline:none}.sheet-grab{width:40px;height:4px;border-radius:var(--radius-pill);background:var(--color-border-strong);margin:0 auto var(--space-3)}.sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-3);margin-bottom:var(--space-3)}.sheet-head h2{font-size:var(--text-xl)}.sheet-head h2 small{font-size:var(--text-lg);color:var(--color-text-muted);font-weight:600}.sheet-head h2.split-push{color:var(--split-push)}.sheet-head h2.split-pull{color:var(--split-pull)}.sheet-head h2.split-legs{color:var(--split-legs)}.sheet-verdict{margin-bottom:var(--space-3)}.sheet-body{display:grid;gap:var(--space-2)}.sheet-empty{background:var(--color-surface-2);border-radius:var(--radius-md);padding:var(--space-4)}.sheet-empty p{margin:0}.back{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:var(--space-1) 0;margin-bottom:var(--space-3);color:var(--color-text-muted);font-weight:600;text-transform:none}.back:hover{color:var(--color-text)}.md-head h1{font-size:var(--text-2xl)}.md-head h1 small{font-family:var(--font-body);font-size:var(--text-base);font-weight:500;color:var(--color-text-muted)}.md-head .kicker{font-size:var(--text-base);font-weight:600;margin-bottom:4px}.chart-panel{margin-bottom:var(--space-5)}.md-text{display:grid;gap:var(--space-4)}.md-text section{margin:0}.md-text h2{font-size:var(--text-md);margin-bottom:var(--space-1)}.md-text p{margin:0;color:var(--color-text-muted);max-width:70ch}.heart-verdict{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);align-items:start;margin-bottom:var(--space-3)}.hv-num{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:1}.hv-num small{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500}.hv-cat{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600}.heart-verdict .readout{margin-top:var(--space-1)}.night-picker{display:flex;align-items:center;gap:6px;width:100%}.night-picker select{flex:1;min-width:0;padding:7px 8px;font-size:var(--text-ms);background:var(--color-surface)}.ln-top{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:var(--space-3) var(--space-5);margin-bottom:var(--space-3)}.ln-total{min-width:200px;flex:1}.ln-num{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;line-height:1;color:var(--hue-sleep)}.ln-lab,.ln-need{font-size:var(--text-sm);color:var(--color-text-muted)}.need-bar{position:relative;height:8px;background:var(--color-surface-2);border-radius:var(--radius-pill);margin:var(--space-2) 0 4px;max-width:320px}.need-bar i{position:absolute;inset:0 auto 0 0;border-radius:var(--radius-pill);background:var(--tone-watch)}.need-bar i.met{background:var(--hue-sleep)}.need-bar em{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--color-text)}.ln-times{display:flex;gap:var(--space-4);margin:0}.ln-times div{display:grid}.ln-times dt{font-size:var(--text-xs);color:var(--color-text-muted)}.ln-times dd{margin:0;font-family:var(--font-display);font-size:var(--text-lg);font-weight:600}.hypno .hyp-row{fill:var(--color-surface-2);opacity:.5}.hypno .hyp-lab{font-family:var(--font-body)}.hypno .hyp-join{stroke:var(--color-border-strong);stroke-width:1}.st-awake{fill:var(--stage-awake);background:var(--stage-awake)}.st-rem{fill:var(--stage-rem);background:var(--stage-rem)}.st-core{fill:var(--stage-core);background:var(--stage-core)}.st-deep{fill:var(--stage-deep);background:var(--stage-deep)}.legend i.st-unstaged{background:repeating-linear-gradient(45deg,var(--hatch-line) 0 2px,var(--hatch-bg) 2px 5px)}.hatch-bg{fill:var(--hatch-bg)}.hatch-line{stroke:var(--hatch-line);stroke-width:2.5}.inbed-bar{stroke:var(--hatch-line);stroke-width:1}.stages{display:grid;gap:var(--space-2);margin-top:var(--space-3)}.stage-row{display:grid;grid-template-columns:64px minmax(0,1fr) 96px;grid-template-areas:"name track val" "name note note";gap:2px var(--space-2);align-items:center;font-size:var(--text-ms)}.stage-name{grid-area:name;display:inline-flex;align-items:center;gap:6px;font-weight:600;align-self:start;padding-top:1px}.st-dot{width:10px;height:10px;border-radius:3px;display:inline-block}.stage-track{grid-area:track;position:relative;height:10px;border-radius:var(--radius-pill);background:var(--color-surface-2);overflow:hidden}.stage-track i{position:absolute;inset:0 auto 0 0;border-radius:var(--radius-pill)}.stage-range{position:absolute;top:0;bottom:0;background:var(--band-fill);box-shadow:inset 0 0 0 1px var(--band-line);z-index:1}.stage-val{grid-area:val;text-align:right;white-space:nowrap;color:var(--color-text-muted)}.stage-val b{color:var(--color-text)}.stage-note{grid-area:note;font-size:var(--text-xs);color:var(--color-text-faint)}.stage-note.low,.stage-note.high{color:var(--tone-watch)}.debt-top,.cons-top{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-3)}.debt-top .big,.cons-top .big{font-family:var(--font-display);font-size:28px;font-weight:700;line-height:1.05}.cons-top .big small{font-size:var(--text-base);color:var(--color-text-muted)}.cons-top .mid{font-family:var(--font-display);font-size:var(--text-lg);font-weight:600;line-height:1.2}.debt-top .lab,.cons-top .lab{font-size:var(--text-xs);color:var(--color-text-muted)}.debt.over .debt-top>div:first-child .big{color:var(--tone-watch)}.debt-bars{display:grid;grid-template-columns:repeat(14,minmax(0,1fr));gap:3px;height:84px;position:relative;background:linear-gradient(var(--color-border-strong),var(--color-border-strong)) center / 100% 1px no-repeat}.db-col{position:relative}.db-col i{position:absolute;left:15%;right:15%;border-radius:2px}.db-col i.db-plus{background:var(--hue-sleep)}.db-col i.db-minus{background:var(--tone-watch)}.db-col i.db-none{top:calc(50% - 2px);height:4px;width:4px;left:calc(50% - 2px);border-radius:50%;background:var(--color-border-strong)}.barcode .bc-bar{fill:var(--hue-sleep);opacity:.85}.barcode .bc-bar.inbed{stroke:var(--hatch-line);stroke-width:1;opacity:1}.barcode .bc-mid{stroke:var(--color-surface);stroke-width:2}.barcode .mid-line{stroke:var(--color-text);stroke-dasharray:4 3;stroke-width:1;opacity:.6}.barcode .bc-none{fill:var(--color-border-strong)}.legend i.bc-key{background:var(--hue-sleep)}.legend i.key-mid{height:2px;width:12px;background:var(--color-text-muted);vertical-align:3px}.legend i.key-midline{height:0;width:16px;border-top:1.5px dashed var(--color-text);border-radius:0;vertical-align:3px}.vitals{display:grid;gap:var(--space-4)}.vital-head{display:flex;justify-content:space-between;align-items:baseline;font-weight:600;font-size:var(--text-ms)}.vital-val{font-family:var(--font-display);font-size:var(--text-lg)}.vital-val small{font-family:var(--font-body);font-size:var(--text-xs);color:var(--color-text-muted);font-weight:400}.vital .source{margin-top:0}@media(min-width:640px){.mtiles{grid-template-columns:repeat(3,minmax(0,1fr))}.insights,.contribs{grid-template-columns:repeat(2,minmax(0,1fr))}.sheet-backdrop{align-items:center}.sheet{border-radius:var(--radius-xl);max-height:88vh}.sheet-grab{display:none}}@media(min-width:960px){.today-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}.today-insights,.today-tiles,.today-foot{grid-column:1 / -1}.mtiles{grid-template-columns:repeat(5,minmax(0,1fr))}.insights{grid-template-columns:repeat(3,minmax(0,1fr))}.contribs{grid-template-columns:repeat(2,minmax(0,1fr))}.ready-main{gap:var(--space-5)}.two-col{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:var(--space-5);align-items:start}.yoy{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:start}.yoy .readout{grid-column:1 / -1}.vitals{grid-template-columns:repeat(3,minmax(0,1fr))}.md-text{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-5)}.metric-detail .md-head{margin-bottom:var(--space-4)}.night-picker{width:auto}.night-picker select{width:230px;flex:none}.screen-head{margin-bottom:var(--space-5)}}@media(max-width:420px){.ready-main{grid-template-columns:1fr;justify-items:center;text-align:center}.ready-train{text-align:left}.gauge{width:150px;height:130px}.mtile-val{font-size:26px}.mini-stats b{font-size:24px}.mini-stats.four{grid-template-columns:repeat(2,minmax(0,1fr))}.zone-row{grid-template-columns:76px minmax(0,1fr) 76px}.debt-top .big,.cons-top .big{font-size:22px}.cons-top .mid{font-size:var(--text-md)}.theme-toggle button{width:28px}.brand-name{font-size:var(--text-md)}}section>.head h2{white-space:normal;min-width:0}svg.chart .ref-label.gutter{stroke:none;fill:var(--color-text-muted)}.hv-cat.tone-good{color:var(--tone-good)}.hv-cat.tone-neutral{color:var(--color-text)}.hv-cat.tone-watch{color:var(--tone-watch)}.band-pos.good{color:var(--tone-good);font-weight:600}
