/* A brief check-in, visible recovery charts, and today's saved session. */
.today-content { min-width: 0; }
.today-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.today-heading .btn { flex: none; }
.today-coach[hidden] { display: none; }
.today-coach { margin-bottom: 22px; scroll-margin-top: 20px; }
.today-coach .panel-head { flex-wrap: wrap; gap: 12px; }
.today-coach .coach-chat-actions { flex-wrap: wrap; }
.today-coach .coach-thread { min-height: 0; max-height: 340px; }
.today-coach .coach-welcome { padding: 4px 0 12px; max-width: 75ch; }
.today-coach .coach-footnote { margin-top: 16px; padding-top: 12px; }
.today-coach .coach-inline-notice, .today-coach-loader > p { color: var(--ink-2); font-size: 14px; line-height: 1.6; margin-bottom: 16px; }
.today-coach-loader .btn { font-size: 12px; }
.today-coach .coach-inline-notice { padding: 12px 14px; background: var(--surface-2); border-radius: var(--r-sm); }
.today-date { color: var(--muted); font-size: 12px; font-weight: 600; margin-bottom: 8px; }
.today-heading .display { margin-bottom: 4px; }
.today-kicker { color: var(--muted); font-size: 11px; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; }
.today-outlook { margin-bottom: 24px; padding: 22px 24px; border-top: 4px solid var(--c-run); scroll-margin-top: 20px; }
.today-outlook-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 16px; }
.today-outlook-head h2 { font-size: 21px; }
.today-outlook-source { color: var(--muted); font-size: 12px; }
.today-outlook-instruction, .today-outlook-note { margin-top: 10px; color: var(--muted); font-size: 12px; line-height: 1.5; }
.today-text-link, .today-section-head > a { color: var(--ink-2); font-size: 13px; font-weight: 600; text-underline-offset: 3px; }
.today-briefing { margin-bottom: 20px; padding: 20px 24px; border-left: 4px solid var(--accent); }
.today-briefing-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.today-briefing-head h2 { font-size: 18px; }
.today-coach-icon { display: flex; align-items: center; justify-content: center; flex: none; width: 30px; height: 30px; border-radius: var(--r-sm); color: var(--accent-ink); background: var(--accent); }
.today-coach-icon .icon { width: 18px; height: 18px; }
.today-badge { margin-left: auto; padding: 3px 8px; border: 1px solid var(--line); border-radius: 999px; font-size: 11px; color: var(--muted); white-space: nowrap; }
.today-overview-text { max-width: 110ch; color: var(--ink-2); font-size: 15px; line-height: 1.65; overflow-wrap: anywhere; }
.today-briefing > .today-text-link { display: inline-block; margin-top: 10px; }
.today-error { margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--bad); border-radius: var(--r-sm); color: var(--bad); font-size: 13px; }
.today-generate-form { margin-top: 14px; }
.today-generate-form .btn { font-size: 13px; }
.today-generate-form .btn:disabled { opacity: .6; cursor: wait; }
.today-coach-status { display: none; align-items: center; gap: 9px; margin-top: 14px; color: var(--ink-2); font-size: 12px; }
.today-coach-status.htmx-request { display: flex; }
.today-coach-status .icon { flex: none; width: 16px; height: 16px; animation: spin 1.2s linear infinite; }

.today-health-note { margin-top: 12px; color: var(--muted); font-size: 12px; line-height: 1.6; max-width: 85ch; }
.today-health-empty { min-height: 100px; display: flex; align-items: center; color: var(--muted); font-size: 14px; line-height: 1.6; }

.today-fitness-age { display: grid; grid-template-columns: 280px minmax(0, 1fr); align-items: center; gap: clamp(24px, 4vw, 48px); margin-bottom: 24px; padding: 20px; }
.today-age-orb { position: relative; display: grid; place-items: center; width: 280px; aspect-ratio: 1; overflow: hidden; border: 1px solid #24423f; border-radius: 16px; background: radial-gradient(ellipse at 50% 12%, #17342f 0, #101f25 48%, #0c171e 100%); }
.today-age-particles { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.today-age-reading { position: relative; width: 66%; text-align: center; color: #f4f7f5; }
.today-age-value { font-size: 52px; font-weight: 650; letter-spacing: -.045em; line-height: 1; font-variant-numeric: tabular-nums; }
.today-age-label { margin-top: 6px; font-size: 12px; font-weight: 650; letter-spacing: .12em; text-transform: uppercase; }
.today-age-comparison { margin-top: 8px; color: #d0ddda; font-size: 12px; line-height: 1.4; }
.today-age-comparison.is-younger { color: #60e8bd; }
.today-age-orb-empty .today-age-particles { opacity: .25; filter: grayscale(1); }
.today-age-context { min-width: 0; padding: 8px 20px 8px 0; }
.today-age-context h2 { margin-top: 5px; font-size: 26px; font-weight: 650; letter-spacing: -.02em; }
.today-age-description { max-width: 65ch; margin-top: 10px; color: var(--ink-2); font-size: 15px; line-height: 1.6; }
.today-age-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin: 20px 0 0; }
.today-age-stats dt { color: var(--muted); font-size: 12px; }
.today-age-stats dd { margin: 4px 0 0; font-size: 25px; font-weight: 650; line-height: 1.2; font-variant-numeric: tabular-nums; }
.today-age-stats small { color: var(--muted); font-size: 13px; font-weight: 400; }
.today-age-note { margin-top: 15px; color: var(--muted); font-size: 12px; line-height: 1.6; }
.today-age-link { display: inline-block; margin-top: 14px; padding-block: 4px; }
@media (max-width: 640px) {
  .today-fitness-age { grid-template-columns: minmax(0, 1fr); gap: 22px; padding: 20px; }
  .today-age-orb { width: min(280px, 100%); justify-self: center; }
  .today-age-context { padding: 0; }
}

.today-visuals { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; margin-bottom: 14px; }
.today-visuals > .panel + .panel { margin-top: 0; }
.today-visual-card { display: flex; flex-direction: column; min-width: 0; padding: 24px; }
.today-card-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 20px; }
.today-card-head h2 { display: flex; align-items: center; gap: 8px; font-size: 18px; }
.today-card-head .icon { width: 20px; height: 20px; color: var(--muted); }
.today-card-head > a { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; margin: -4px -5px -4px 0; color: var(--muted); text-decoration: none; border-radius: var(--r-sm); }
.today-card-head > a:hover { color: var(--ink); background: var(--surface-2); }
.today-chart-value { font-size: clamp(30px, 3vw, 40px); font-weight: 650; letter-spacing: -.035em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.today-chart-value small { margin-left: 3px; color: var(--muted); font-size: 16px; font-weight: 400; letter-spacing: 0; }
.today-chart-caption { margin-top: 7px; color: var(--ink-2); font-size: 13px; }
.today-detail-note, .today-card-note { color: var(--muted); font-size: 12px; line-height: 1.5; }
.today-card-note { margin-top: auto; padding-top: 18px; }
.today-chart-placeholder { height: 10px; margin-bottom: 10px; border-radius: 4px; background: var(--surface-2); }
.today-sleep-chart { display: flex; align-items: center; gap: 18px; }
.today-score-ring, .today-metric-status, .today-metric-chip { --metric-ring: var(--line-strong); }
.today-score-ring[data-status="green"], .today-metric-status[data-status="green"], .today-metric-chip[data-status="green"] { --metric-ring: var(--good); }
.today-score-ring[data-status="yellow"], .today-metric-status[data-status="yellow"], .today-metric-chip[data-status="yellow"] { --metric-ring: #b68b00; }
.today-score-ring[data-status="red"], .today-metric-status[data-status="red"], .today-metric-chip[data-status="red"] { --metric-ring: var(--bad); }
.today-score-ring { position: relative; flex: 0 0 168px; width: 168px; height: 168px; }
.today-score-ring svg { display: block; width: 100%; height: 100%; }
.today-ring-track, .today-ring-fill { fill: none; stroke-width: 8; }
.today-ring-track { stroke: color-mix(in srgb, var(--metric-ring) 20%, var(--surface-2)); }
.today-ring-fill { stroke: var(--metric-ring); stroke-linecap: round; }
.today-score-ring > div, .today-score-ring > .today-ring-reading { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.today-score-ring strong { font-size: 48px; font-weight: 650; line-height: 1.05; letter-spacing: -.035em; font-variant-numeric: tabular-nums; }
.today-score-ring .today-ring-reading > span { margin-top: 4px; color: var(--muted); font-size: 11px; }
.today-metric-trigger { padding: 0; border: 0; border-radius: 50%; background: transparent; color: var(--ink); font-family: inherit; cursor: pointer; text-align: center; }
.today-metric-trigger::after { content: '↓'; position: absolute; right: 4px; bottom: 6px; display: grid; place-items: center; width: 23px; height: 23px; border: 1px solid var(--line); border-radius: 50%; background: var(--surface); color: var(--ink-2); font-size: 14px; }
.today-metric-trigger:hover { background: var(--surface-2); }
.today-metric-trigger:hover::after { color: var(--accent-ink); background: var(--accent); border-color: var(--accent); }
.today-metric-trigger[aria-pressed="true"] { outline: 2px solid var(--c-cycle); outline-offset: 5px; background: var(--surface-2); }
.today-metric-trigger[aria-pressed="true"]::after { content: '✓'; color: var(--surface); background: var(--c-cycle); border-color: var(--c-cycle); }
.today-metric-trigger:focus-visible { outline: 3px solid var(--c-cycle); outline-offset: 5px; }
.today-neutral-ring .today-ring-track { stroke: var(--metric-ring); stroke-width: 4; }
.today-weight-ring strong { font-size: 40px; }
.today-signal-baseline { margin-top: 24px; }
.today-weight-average { margin-top: 24px; padding-top: 14px; border-top: 1px solid var(--line); color: var(--muted); font-size: 13px; }
.today-weight-average strong { display: block; margin-top: 5px; color: var(--ink-2); font-size: 19px; font-weight: 600; }
.today-metric-status { display: flex; align-items: baseline; gap: 6px; margin-top: 10px; color: var(--ink-2); font-size: 12px; font-weight: 600; line-height: 1.4; }
.today-metric-status > span { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--metric-ring); }
.today-metric-status-detail { max-width: 90ch; margin: 7px 0 24px; color: var(--ink-2); font-size: 13px; line-height: 1.6; }
.today-sleep-total { min-width: 0; }
.today-sleep-need { margin-top: 14px; color: var(--muted); font-size: 12px; }
.today-sleep-need strong { color: var(--c-cycle); font-weight: 650; }
.today-stage-breakdown { margin-top: 24px; }
.today-stage-chart { display: block; width: 100%; height: 12px; border-radius: 3px; overflow: hidden; }
.today-stage-deep { fill: var(--c-cycle); background: var(--c-cycle); }
.today-stage-light { fill: color-mix(in srgb, var(--c-cycle) 35%, var(--surface)); background: color-mix(in srgb, var(--c-cycle) 35%, var(--surface)); }
.today-stage-rem { fill: var(--c-swim); background: var(--c-swim); }
.today-stage-unstaged { fill: var(--line-strong); background: var(--line-strong); }
.today-stage-legend { display: flex; flex-wrap: wrap; gap: 5px 14px; list-style: none; margin: 10px 0 0; padding: 0; }
.today-stage-legend li { display: flex; align-items: center; gap: 4px; color: var(--muted); font-size: 11px; white-space: nowrap; }
.today-stage-legend strong { font-weight: 600; color: var(--ink-2); }
.today-stage-dot { width: 7px; height: 7px; border-radius: 2px; flex: none; }
.today-recovery-status { min-height: 36px; color: var(--ink-2); font-size: 13px; line-height: 1.4; }
.today-recovery-status[data-state="usual"] { color: var(--c-run); }
.today-range-signals { display: grid; gap: 16px; margin-top: 13px; }
.today-signal-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.today-signal-heading h3 { color: var(--ink-2); font-size: 12px; font-weight: 500; }
.today-signal-heading strong { font-size: 20px; font-weight: 650; font-variant-numeric: tabular-nums; line-height: 1; }
.today-signal-heading p > span { color: var(--muted); font-size: 11px; }
.today-baseline-chart { display: block; width: 100%; height: 18px; overflow: visible; }
.today-range-track { stroke: var(--line); stroke-width: 2; }
.today-usual-band { fill: var(--c-run); opacity: .25; }
.today-baseline-median { stroke: var(--c-run); stroke-width: 1; stroke-dasharray: 2 2; vector-effect: non-scaling-stroke; }
.today-current-marker { stroke: var(--ink); stroke-width: 3; vector-effect: non-scaling-stroke; }
.today-range-label { display: flex; flex-wrap: wrap; gap: 1px 4px; margin-top: 5px; color: var(--muted); font-size: 11px; }
.today-range-label strong { font-weight: 500; }
.today-range-label > span { margin-left: auto; color: var(--ink-2); }
.today-signal-comparison { margin-top: 3px; color: var(--ink-2); font-size: 11px; }
.today-baseline-placeholder { margin-block: 10px 8px; height: 8px; }
.today-energy-chart { display: flex; align-items: center; gap: 18px; }
.today-energy-caption { min-width: 0; }
.today-energy-caption .today-chart-caption { margin-top: 0; font-weight: 600; }
.today-energy-caption > .today-metric-status:first-child { margin-top: 0; }
.today-energy-caption .today-detail-note { margin-top: 6px; }
.today-energy-data-note { margin-top: 12px; }
.today-battery-balance { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; padding-top: 14px; margin: 24px 0 0; border-top: 1px solid var(--line); }
.today-battery-balance > div { display: flex; flex-direction: column; align-items: flex-start; gap: 7px; }
.today-battery-balance dt { color: var(--muted); font-size: 12px; }
.today-battery-balance dd { margin: 0; font-size: 19px; font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }

.today-visuals .today-sleep-chart, .today-visuals .today-energy-chart { flex-direction: column; gap: 18px; text-align: center; }
.today-visuals .today-metric-status { justify-content: center; }
.today-visuals .today-stage-legend { justify-content: center; }
.today-visuals .today-card-note { text-align: center; }
.today-more-metrics { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 24px; }
.today-more-label { margin-right: 4px; color: var(--muted); font-size: 12px; }
.today-metric-chip { display: flex; flex: 1 1 180px; align-items: center; gap: 10px; min-height: 52px; padding: 10px 14px; border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--surface); color: var(--ink-2); font-family: inherit; font-size: 12px; cursor: pointer; text-align: left; }
.today-metric-chip::before { content: ''; flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--metric-ring); }
.today-chip-label { font-weight: 600; }
.today-chip-reading { margin-left: auto; color: var(--muted); }
.today-chip-reading strong { color: var(--ink-2); font-weight: 600; font-variant-numeric: tabular-nums; }
.today-chip-arrow { color: var(--muted); }
.today-metric-chip:hover, .today-metric-chip[aria-pressed="true"] { background: var(--surface-2); border-color: var(--c-cycle); }
.today-metric-chip[aria-pressed="true"] .today-chip-arrow { color: var(--c-cycle); }
.today-metric-chip:focus-visible { outline: 3px solid var(--c-cycle); outline-offset: 3px; }

/* The circles select a full-width chart in Today's outlook. */
.today-metric-panel { min-width: 0; margin-top: 22px; border-top: 1px solid var(--line); }
.today-metric-panel[hidden] { display: none; }
.today-metric-panel:focus { outline: none; }
.today-metric-panel:focus-visible { outline: 2px solid var(--c-cycle); outline-offset: 8px; border-radius: var(--r-sm); }
.today-metric-head { padding-top: 22px; }
.today-metric-head h3 { margin-top: 4px; font-size: 28px; font-weight: 650; letter-spacing: -.025em; }
.today-metric-body { padding-block: 20px 24px; }
.today-metric-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px 28px; margin: 0; }
.today-metric-stats > div { min-width: 0; }
.today-metric-stats dt { color: var(--muted); font-size: 13px; line-height: 1.4; }
.today-metric-stats dd { margin: 7px 0 0; font-size: 28px; font-weight: 650; line-height: 1.2; letter-spacing: -.025em; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.today-metric-stats small { color: var(--muted); font-size: 14px; font-weight: 400; letter-spacing: 0; }
.today-metric-stats-small { margin-top: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.today-metric-stats-small dd { font-size: 20px; }
.today-metric-stats .today-stat-description { font-size: 21px; line-height: 1.4; }
.today-metric-stats .today-stat-date { display: block; margin-top: 6px; font-size: 12px; }
.today-metric-section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--line); }
.today-metric-section:first-child { margin-top: 0; padding-top: 0; border-top: 0; margin-bottom: 24px; }
.today-metric-section h4 { font-size: 18px; font-weight: 650; }
.today-metric-section .panel-head { flex-wrap: wrap; gap: 8px 16px; }
.today-metric-description { margin-top: 9px; color: var(--ink-2); font-size: 13px; line-height: 1.65; }
.today-metric-baseline { max-width: 620px; margin-top: 24px; }
.today-metric-footer { padding-top: 18px; border-top: 1px solid var(--line); }
.today-metric-body .today-fitness-age { margin: 0; padding: 0; border: 0; box-shadow: none; }
.today-metric-body .today-age-context { padding-right: 0; }
.today-metric-table { margin-top: 18px; overflow-x: auto; }
.today-metric-table table { width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; }
.today-metric-table th, .today-metric-table td { padding: 12px 14px 12px 0; border-bottom: 1px solid var(--line); }
.today-metric-table thead th { color: var(--muted); font-size: 12px; font-weight: 600; }
.today-metric-table tbody th { font-weight: 600; }

.today-plan { padding: 22px 24px; margin-bottom: 18px; }
.today-section-head, .today-upcoming-head { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-bottom: 18px; }
.today-section-head h2, .today-upcoming-head h2 { font-size: 21px; margin-top: 5px; }
.today-plan-list { list-style: none; margin: 0; padding: 0; }
.today-saved-session { display: flex; align-items: center; gap: 20px; padding-top: 20px; border-top: 1px solid var(--line); }
.today-session-icon { display: flex; align-items: center; justify-content: center; flex: none; width: 50px; height: 50px; border-radius: 50%; background: var(--surface-2); color: var(--sport, var(--c-run)); }
.today-session-icon .icon { width: 26px; height: 26px; }
.today-session-info { flex: 1; min-width: 0; }
.today-session-info .today-kicker { font-size: 10px; }
.today-session-info h3 { font-size: 20px; margin-top: 5px; line-height: 1.35; overflow-wrap: anywhere; }
.today-session-info > p:last-child { max-width: 85ch; color: var(--ink-2); font-size: 14px; line-height: 1.65; margin-top: 7px; overflow-wrap: anywhere; }
.today-session-duration { display: flex; flex-direction: column; align-items: center; flex: none; padding-left: 24px; border-left: 1px solid var(--line); }
.today-session-duration strong { font-size: 34px; font-weight: 650; line-height: 1.1; font-variant-numeric: tabular-nums; }
.today-session-duration span { color: var(--muted); font-size: 12px; }
.today-plan-empty { color: var(--ink-2); font-size: 14px; border-top: 1px solid var(--line); padding-top: 16px; }
.today-plan-empty .today-text-link { display: inline-block; margin-top: 7px; }
.today-plan-match { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); color: var(--ink-2); font-size: 12px; line-height: 1.6; }
.today-plan-match p { margin-bottom: 6px; }
.today-reading-details { margin-bottom: 28px; border-bottom: 1px solid var(--line); }
.today-reading-details > summary { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 7px 20px; cursor: pointer; padding: 12px 0 16px; font-weight: 600; font-size: 13px; }
.today-reading-details > summary::before { content: '+'; margin-right: -12px; }
.today-reading-details[open] > summary::before { content: '−'; }
.today-reading-details > summary span { margin-left: auto; color: var(--muted); font-weight: 400; font-size: 12px; }
.today-weight-detail { display: flex; align-items: center; flex-wrap: wrap; gap: 16px 30px; padding: 20px; margin-bottom: 20px; }
.today-weight-detail h2 { font-size: 16px; }
.today-weight-value { font-size: 28px; font-weight: 600; font-variant-numeric: tabular-nums; }
.today-weight-value small { font-size: 15px; color: var(--muted); }

/* Detailed recovery explanations remain expandable. */
.today-guidance { margin: 6px 0 18px; }
.today-guidance > .panel { padding: 20px; }
.today-guidance > .panel + .panel { margin-top: 0; }
.today-guidance-heading { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 14px; }
.today-guidance-heading h2 { margin-top: 6px; font-size: 18px; }
.today-guidance-source { color: var(--muted); font-size: 11px; }
.today-guidance-lead { font-size: 20px; font-weight: 650; line-height: 1.4; }
.today-guidance-summary { color: var(--ink-2); font-size: 13px; line-height: 1.7; margin-top: 9px; }
.today-contributors { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 18px; }
.today-contributor { min-width: 0; padding: 0 12px; border-right: 1px solid var(--line); }
.today-contributor:first-child { padding-left: 0; }
.today-contributor:last-child { border-right: 0; padding-right: 0; }
.today-contributor h3 { color: var(--ink-2); font-size: 12px; line-height: 1.5; }
.today-contributor-value { font-size: 20px; font-weight: 650; margin-top: 8px; }
.today-signal-state { color: var(--ink-2); font-size: 11px; margin-top: 6px; }
.today-signal-state[data-state="usual"] { color: var(--good); }
.today-signal-details { color: var(--muted); font-size: 11px; line-height: 1.6; margin-top: 10px; }
.today-signal-details summary, .today-guidance-method summary { cursor: pointer; font-weight: 600; }
.today-contributor-detail { margin-top: 8px; }
.today-contributor-meta { padding-top: 8px; font-size: 10px; }
.today-guidance-footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px 18px; align-items: center; margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--line); }
.today-guidance-footer a, .today-guidance-method { color: var(--ink-2); font-size: 11px; line-height: 1.7; }
.today-guidance-method[open] { flex-basis: 100%; }
.today-guidance-method p { margin-top: 12px; }
.today-guidance-method ul { color: var(--muted); margin: 12px 0 0; padding-left: 18px; }
.today-guidance-empty { grid-column: 1 / -1; color: var(--muted); font-size: 12px; }
.today-upcoming { margin-bottom: 28px; }
.today-upcoming-head > a { font-size: 13px; font-weight: 600; text-underline-offset: 3px; }
.today-upcoming-goal { margin-bottom: 15px; font-size: 13px; color: var(--ink-2); }
.today-upcoming-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line-strong); border-bottom: 1px solid var(--line-strong); }
.today-upcoming-day { padding: 18px; border-right: 1px solid var(--line); }
.today-upcoming-day:first-child { padding-left: 0; }
.today-upcoming-day:last-child { border-right: 0; }
.today-upcoming-day time { color: var(--muted); font-size: 12px; }
.today-upcoming-day h3 { font-size: 16px; line-height: 1.4; margin-top: 10px; }
.today-upcoming-day > p { margin-top: 8px; color: var(--ink-2); font-size: 12px; }
.today-upcoming-empty { color: var(--ink-2); font-size: 14px; line-height: 1.7; padding: 18px 0; border-top: 1px solid var(--line); }
.today-activities { padding: 24px; margin-bottom: 26px; }
.today-activities-heading { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px 20px; margin-bottom: 20px; }
.today-activities-heading h2 { font-size: 20px; }
.today-activities-heading p { margin-top: 6px; color: var(--muted); font-size: 12px; }
.today-activities-heading > a { color: var(--ink-2); font-size: 12px; font-weight: 600; text-underline-offset: 3px; }
.today-activity-list { display: grid; gap: 10px; list-style: none; padding: 0; margin: 0; }
.today-activity { display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; align-items: center; gap: 16px; padding: 17px; border: 1px solid var(--line); border-radius: var(--r-sm); text-decoration: none; }
.today-activity:hover { border-color: var(--sport); background: var(--surface-2); }
.today-activity-icon { display: flex; align-items: center; justify-content: center; width: 42px; height: 42px; border-radius: 12px; background: var(--surface-2); color: var(--sport); }
.today-activity-icon .icon { width: 25px; height: 25px; }
.today-activity-info { min-width: 0; }
.today-activity-info h3 { font-size: 14px; line-height: 1.5; overflow-wrap: anywhere; }
.today-activity-info p { margin-top: 5px; color: var(--muted); font-size: 11px; }
.today-activity-info p > span { padding: 0 3px; }
.today-activity-stats { display: flex; flex-wrap: wrap; gap: 14px 25px; margin: 0; }
.today-activity-stats dt { color: var(--muted); font-size: 10px; }
.today-activity-stats dd { margin: 4px 0 0; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.today-activity-stats small { color: var(--muted); font-size: 11px; font-weight: 400; }
.today-activities-empty { padding: 18px; background: var(--surface-2); border-radius: var(--r-sm); color: var(--muted); font-size: 12px; line-height: 1.7; }

@media (max-width: 1120px) {
  .today-visuals { gap: 14px; }
  .today-visual-card { padding: 18px; }
  .today-score-ring { flex-basis: 144px; width: 144px; height: 144px; }
  .today-sleep-chart { gap: 10px; }
  .today-chart-value { font-size: 32px; }
}
@media (max-width: 960px) {
  .today-metric-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .today-visuals { grid-template-columns: minmax(0, 1fr); gap: 14px; }
}
@media (max-width: 600px) {
  .today-metric-head h3 { font-size: 23px; }
  .today-metric-body { padding-block: 18px 22px; }
  .today-metric-body .today-fitness-age { grid-template-columns: minmax(0, 1fr); }
  .today-metric-body .today-age-orb { justify-self: center; }
  .today-metric-stats { gap: 22px 16px; }
  .today-metric-stats dd { font-size: 26px; }
  .today-metric-stats-small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .today-metric-stats-small dd { font-size: 18px; }
  .today-outlook { padding: 16px; }
  .today-heading { align-items: flex-start; }
  .today-heading .btn { font-size: 12px; padding: 8px 10px; margin-top: 23px; }
  .today-heading .page-sub { font-size: 14px; }
  .today-briefing { padding: 17px 18px; margin-bottom: 16px; }
  .today-briefing-head { flex-wrap: wrap; gap: 8px; }
  .today-briefing-head h2 { font-size: 17px; }
  .today-badge { font-size: 10px; }
  .today-overview-text { font-size: 14px; }
  .today-sleep-card { grid-column: auto; display: flex; }
  .today-visual-card { padding: 20px; }
  .today-card-head { margin-bottom: 16px; }
  .today-score-ring { flex-basis: 156px; width: 156px; height: 156px; }
  .today-sleep-chart { gap: 24px; }
  .today-sleep-card .today-stage-breakdown { align-self: auto; margin-top: 20px; }
  .today-chart-value { font-size: 36px; }
  .today-recovery-status { min-height: 0; }
  .today-more-label { flex-basis: 100%; }
  .today-metric-chip { flex-basis: 100%; }
  .today-plan { padding: 20px 18px; }
  .today-section-head, .today-upcoming-head { gap: 12px; }
  .today-section-head h2 { font-size: 20px; }
  .today-section-head > a { font-size: 12px; }
  .today-saved-session { gap: 13px; align-items: flex-start; flex-wrap: wrap; }
  .today-session-icon { width: 38px; height: 38px; }
  .today-session-icon .icon { width: 22px; height: 22px; }
  .today-session-info { flex-basis: calc(100% - 51px); }
  .today-session-info h3 { font-size: 19px; }
  .today-session-info > p:last-child { font-size: 13px; }
  .today-session-duration { flex-direction: row; gap: 6px; border: 0; padding-left: 51px; }
  .today-session-duration strong { font-size: 22px; }
  .today-reading-details > summary { justify-content: flex-start; }
  .today-reading-details > summary span { flex-basis: 100%; margin-left: 0; }
  .today-contributors { grid-template-columns: minmax(0, 1fr); }
  .today-contributor { padding: 12px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .today-contributor:last-child { border-bottom: 0; }
  .today-upcoming-list { grid-template-columns: minmax(0, 1fr); }
  .today-upcoming-day { padding: 16px 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .today-upcoming-day:last-child { border-bottom: 0; }
  .today-activities { padding: 20px 18px; }
  .today-activity { grid-template-columns: 36px minmax(0, 1fr); gap: 12px; padding: 14px; }
  .today-activity-icon { width: 36px; height: 36px; }
  .today-activity-stats { grid-column: 1 / -1; gap: 12px 22px; padding-top: 12px; border-top: 1px solid var(--line); }
}
@media (prefers-reduced-motion: reduce) { .today-coach-status .icon { animation: none; } }
