/* Health › Therapy — layout: rail + content + right drawer. */

.thr-page { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: var(--sp-6); align-items: start; }
.thr-overlay { display: contents; }
@media (max-width: 820px) { .thr-page { grid-template-columns: 1fr; } }

/* ---- rail ---- */
.thr-rail { display: flex; flex-direction: column; gap: var(--sp-1); }
.thr-rail__group { display: flex; flex-direction: column; gap: 2px; margin-top: var(--sp-4); }
.thr-rail__label { padding: 0 var(--sp-2) var(--sp-1); font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); }
.thr-nav__item { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: var(--sp-2); border-radius: var(--r-md); color: var(--c-ink-soft); font-size: var(--fs-sm); font-weight: var(--fw-medium); text-align: left; }
.thr-nav__item:hover { background: var(--c-surface-2); color: var(--c-ink); }
.thr-nav__item.is-on { background: var(--c-accent-wash); color: var(--c-accent-ink); }
.thr-nav__ico { display: inline-grid; place-items: center; width: 1.2rem; height: 1.2rem; flex: 0 0 auto; }
.thr-nav__ico svg { width: 1.15rem; height: 1.15rem; }
.thr-nav__dot { flex: 0 0 auto; width: 0.7rem; height: 0.7rem; border-radius: var(--r-full); }
.thr-nav__lbl { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.thr-rail__add { display: flex; align-items: center; gap: var(--sp-1); width: 100%; padding: var(--sp-2); margin-top: 2px; border-radius: var(--r-md); color: var(--c-ink-faint); font-size: var(--fs-sm); font-weight: var(--fw-medium); }
.thr-rail__add:hover { background: var(--c-surface-2); color: var(--c-accent); }
.thr-rail__add svg { width: 1rem; height: 1rem; }

/* ---- content shell ---- */
.thr-content { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.thr-chead { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; }
.thr-chead__actions { display: inline-flex; gap: var(--sp-2); flex-wrap: wrap; }
.thr-chead__actions .btn-ghost, .thr-chead__actions .btn-primary { display: inline-flex; align-items: center; gap: var(--sp-1); }
.thr-chead__actions svg { width: 1rem; height: 1rem; }
.thr-eyebrow { display: block; font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); }
.thr-title { font-family: var(--font-display); font-size: var(--fs-2xl); font-weight: var(--fw-bold); color: var(--c-ink); line-height: 1.1; }
.thr-empty, .thr-muted { color: var(--c-ink-faint); font-size: var(--fs-sm); }
.thr-sec__title { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); margin-bottom: var(--sp-2); }

/* ---- overview reminders ---- */
.thr-remind { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--sp-4); align-items: start; }
.thr-card { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-lg); }
.thr-card--accent { border-color: transparent; background: var(--c-accent-wash); }
.thr-card--wide { grid-column: 1 / -1; }
.thr-card__label { display: inline-flex; align-items: center; gap: var(--sp-1); font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.03em; color: var(--c-ink-faint); }
.thr-card__label svg { width: 0.9rem; height: 0.9rem; }
.thr-card__big { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--c-ink); line-height: 1.1; }
.thr-card__unit { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.thr-card__sub { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.thr-card__line { font-size: var(--fs-sm); color: var(--c-ink); overflow: hidden; text-overflow: ellipsis; }
.thr-card__cta { align-self: flex-start; display: inline-flex; align-items: center; gap: var(--sp-1); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-accent); }
.thr-card__cta svg { width: 0.9rem; height: 0.9rem; }
.thr-card .btn-primary { align-self: flex-start; }

.thr-spark { display: flex; align-items: flex-end; gap: 3px; height: 34px; }
.thr-spark__bar { flex: 1; height: 100%; display: flex; align-items: flex-end; background: var(--c-surface-2); border-radius: var(--r-sm); overflow: hidden; }
.thr-spark__bar i { display: block; width: 100%; background: var(--c-accent); }

/* ---- mood ---- */
.thr-checkin__row { display: flex; gap: var(--sp-2); align-items: center; }
.thr-input { flex: 1; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); }
.thr-mood__scale { display: grid; grid-template-columns: repeat(8, 1fr); gap: var(--sp-2); }
.thr-mood__opt { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); color: var(--c-ink-soft); }
.thr-mood__opt:hover { border-color: var(--c-accent); }
.thr-mood__opt.is-on { background: var(--c-accent); border-color: transparent; color: #fff; }
.thr-mood__n { font-size: var(--fs-lg); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.thr-mood__lbl { font-size: var(--fs-xs); }
.thr-trend { display: flex; align-items: flex-end; gap: 4px; height: 96px; }
.thr-trend__col { flex: 1; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; }
.thr-trend__col i { width: 100%; max-width: 20px; background: var(--c-accent); border-radius: var(--r-sm) var(--r-sm) 0 0; }
.thr-trend__col b { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-faint); }
.thr-log { display: flex; flex-direction: column; }
.thr-logrow { display: grid; grid-template-columns: 4rem 8rem 1fr; gap: var(--sp-3); align-items: baseline; padding: var(--sp-2) 0; border-bottom: 1px solid var(--c-border); font-size: var(--fs-sm); }
.thr-logrow:last-child { border-bottom: 0; }
.thr-logrow__date { color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.thr-logrow__score { color: var(--c-ink); font-weight: var(--fw-medium); }
.thr-logrow__note { color: var(--c-ink-soft); }

/* ---- thought records ---- */
.thr-tr-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--sp-3); }
.thr-tr { display: flex; flex-direction: column; gap: var(--sp-1); padding: var(--sp-4); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-lg); text-align: left; }
.thr-tr:hover { border-color: var(--c-accent); }
.thr-tr__top { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.thr-tr__date { font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }
.thr-tr__dist { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); }
.thr-tr__thought { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.thr-tr__meta { font-size: var(--fs-sm); color: var(--c-ink-soft); }

/* ---- therapy tabs ---- */
.thr-tabs { display: inline-flex; gap: 2px; padding: 2px; background: var(--c-surface-2); border-radius: var(--r-md); align-self: flex-start; }
.thr-tab { padding: var(--sp-1) var(--sp-4); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); border-radius: var(--r-sm); }
.thr-tab:hover { color: var(--c-ink); }
.thr-tab.is-on { background: var(--c-surface); color: var(--c-ink); box-shadow: 0 1px 2px rgba(20,21,26,0.1); }

.thr-toverview { display: flex; flex-direction: column; gap: var(--sp-4); }
.thr-contact { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); flex-wrap: wrap; padding: var(--sp-4); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-lg); }
.thr-contact__id { display: flex; flex-direction: column; }
.thr-contact__name { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.thr-contact__role { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.thr-contact__links { display: flex; gap: var(--sp-4); flex-wrap: wrap; font-size: var(--fs-sm); color: var(--c-ink-soft); }
.thr-contact__links span { display: inline-flex; align-items: center; gap: var(--sp-1); }
.thr-contact__links svg { width: 0.9rem; height: 0.9rem; }
.thr-statrow { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-3); }
.thr-stat { display: flex; flex-direction: column; gap: 2px; padding: var(--sp-3); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-md); }
.thr-stat__n { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--c-ink); font-variant-numeric: tabular-nums; }
.thr-stat__l { font-size: var(--fs-xs); color: var(--c-ink-faint); }

/* ---- sessions ---- */
.thr-sess-list { display: flex; flex-direction: column; gap: var(--sp-2); }
.thr-sess { display: flex; align-items: center; gap: var(--sp-3); width: 100%; padding: var(--sp-3); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-md); text-align: left; }
.thr-sess:hover { border-color: var(--c-border-strong); background: var(--c-surface-2); }
.thr-sess__date { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; width: 2.6rem; color: var(--c-ink-soft); font-size: var(--fs-xs); }
.thr-sess__date b { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.thr-sess__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.thr-sess__title { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.thr-sess__preview { font-size: var(--fs-xs); color: var(--c-ink-soft); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.thr-sess__hw { flex: 0 0 auto; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); }
.thr-sess__go { flex: 0 0 auto; color: var(--c-ink-faint); }
.thr-sess__go svg { width: 1rem; height: 1rem; }

/* ---- homework ---- */
.thr-hw-list { display: flex; flex-direction: column; gap: var(--sp-1); }
.thr-hw { display: flex; align-items: center; gap: var(--sp-2); padding: var(--sp-2); border-radius: var(--r-sm); }
.thr-hw:hover { background: var(--c-surface-2); }
.thr-hw input { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; accent-color: var(--c-accent); }
.thr-hw__text { flex: 1; min-width: 0; font-size: var(--fs-sm); color: var(--c-ink); }
.thr-hw__text.is-done { text-decoration: line-through; color: var(--c-ink-faint); }
.thr-hw__date { flex: 0 0 auto; font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }

/* ---- drawer ---- */
.thr-drawer { position: fixed; z-index: 56; top: 0; right: 0; height: 100dvh; width: min(560px, 94vw); display: flex; flex-direction: column; background: var(--c-surface); box-shadow: -24px 0 60px -20px rgba(20,21,26,0.5); }
/* form drawers (session + thought record) get more room — used on a large monitor */
.thr-drawer--form { width: min(780px, 94vw); }
.thr-drawer__head { flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-3); padding: var(--sp-4) var(--sp-5); border-bottom: 1px solid var(--c-border); }
.thr-drawer__title { font-family: var(--font-display); font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); }
.thr-drawer__x { flex: 0 0 auto; display: inline-grid; place-items: center; width: 2.25rem; height: 2.25rem; border-radius: var(--r-sm); color: var(--c-ink-faint); border: 1px solid var(--c-border-strong); }
.thr-drawer__x:hover { background: var(--c-surface-2); color: var(--c-ink); }
.thr-drawer__x svg { width: 1.1rem; height: 1.1rem; }
.thr-drawer__body { flex: 1; min-height: 0; overflow-y: auto; padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-4); }
.thr-drawer__foot { flex: 0 0 auto; display: flex; justify-content: flex-end; gap: var(--sp-2); padding: var(--sp-3) var(--sp-5); border-top: 1px solid var(--c-border); }
.thr-fsec h4 { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); margin-bottom: var(--sp-2); }
.thr-notes { font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.55; white-space: pre-wrap; }
.thr-filechip { display: inline-flex; align-items: center; gap: var(--sp-1); padding: var(--sp-1) var(--sp-2); font-size: var(--fs-sm); background: var(--c-surface-2); border-radius: var(--r-full); color: var(--c-ink-soft); }
.thr-filechip svg { width: 0.9rem; height: 0.9rem; }

/* ---- forms ---- */
.thr-form { display: flex; flex-direction: column; gap: var(--sp-3); }
.thr-form__row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.thr-field { display: flex; flex-direction: column; gap: var(--sp-1); min-width: 0; }
.thr-field > span { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.thr-field > span b { color: var(--c-ink); font-variant-numeric: tabular-nums; }
.thr-field input, .thr-field textarea, .thr-field select { width: 100%; min-width: 0; box-sizing: border-box; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); resize: vertical; }
/* Narrow screens: the paired fields (Professional/Role, Phone/Email) stack so
   they never overflow the drawer. */
@media (max-width: 560px) { .thr-form__row { grid-template-columns: 1fr; } }
.thr-field input:focus-visible, .thr-field textarea:focus-visible, .thr-field select:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.thr-range { padding: 0; accent-color: var(--c-accent); }

/* ============ v2 adjustments ============ */
/* overview: 4 cards at 25% */
.thr-remind { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1100px) { .thr-remind { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .thr-remind { grid-template-columns: 1fr; } }

/* clamp helpers */
.thr-clamp1, .thr-clamp2 { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.thr-clamp1 { -webkit-line-clamp: 1; }
.thr-clamp2 { -webkit-line-clamp: 2; }

/* mood faces (custom SVGs) — sized per context, never recoloured */
.thr-face { display: block; width: 100%; height: auto; user-select: none; -webkit-user-drag: none; }
.thr-face-wrap { display: inline-flex; width: 1.6rem; vertical-align: -0.35em; }

/* mood: 8-level SVG scale + free frequency */
.thr-mood__scale { grid-template-columns: repeat(8, 1fr); }
.thr-mood__opt { flex-direction: column; gap: 6px; text-align: center; }
.thr-mood__face { display: block; width: 2.4rem; }
.thr-mood__opt.is-on .thr-face { filter: drop-shadow(0 0 0 #fff); }
.thr-mood__opt .thr-mood__lbl { font-size: var(--fs-xs); font-variant-numeric: tabular-nums; line-height: 1.2; }
.thr-trend__col b { display: block; width: 1.4rem; }
.thr-logrow { grid-template-columns: 7.5rem 11rem 1fr; }
.thr-logrow__score { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.thr-logrow__score .thr-face { width: 1.25rem; flex: none; }
.thr-logrow__date { white-space: nowrap; }
@media (max-width: 620px) { .thr-logrow { grid-template-columns: 6rem 1fr; } .thr-logrow__note { grid-column: 1 / -1; } }

/* narrower screens: two rows of four */
@media (max-width: 720px) { .thr-mood__scale { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 420px) { .thr-mood__scale { grid-template-columns: repeat(2, 1fr); } }

/* thought records: full-width, rich preview */
.thr-tr-list { grid-template-columns: 1fr; }
.thr-tr__int { margin-left: auto; font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.thr-tr__fields { display: flex; flex-direction: column; gap: 2px; margin-top: var(--sp-1); }
.thr-tr__field { display: grid; grid-template-columns: 5.5rem 1fr; gap: var(--sp-2); align-items: baseline; font-size: var(--fs-sm); }
.thr-tr__field > span:first-child { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.03em; color: var(--c-ink-faint); }
.thr-tr__field > span:last-child { color: var(--c-ink-soft); }

/* homework card */
.thr-hwcard__head { display: flex; align-items: center; gap: var(--sp-1); }
.thr-hwcard__count { margin-left: auto; text-transform: none; letter-spacing: 0; font-weight: var(--fw-medium); color: var(--c-ink-faint); }

/* sessions: accordion + homework icon */
.thr-sess-item { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); overflow: hidden; }
.thr-sess-item.is-open { border-color: var(--c-border-strong); }
.thr-sess-item .thr-sess { border: 0; border-radius: 0; background: transparent; }
.thr-sess-item .thr-sess:hover { background: var(--c-surface-2); }
.thr-sess__hw { display: inline-flex; align-items: center; gap: 4px; }
.thr-sess__hw svg { width: 0.9rem; height: 0.9rem; }
.thr-sess__chev { flex: 0 0 auto; color: var(--c-ink-faint); transition: transform var(--dur) var(--ease); display: inline-grid; place-items: center; }
.thr-sess__chev.is-open { transform: rotate(180deg); }
.thr-sess__chev svg { width: 1.1rem; height: 1.1rem; }
.thr-sess-detail { padding: var(--sp-4) var(--sp-4) var(--sp-4) 3.6rem; display: flex; flex-direction: column; gap: var(--sp-4); border-top: 1px solid var(--c-border); background: var(--c-surface-2); }
.thr-sess-detail__foot { display: flex; justify-content: flex-end; }
.thr-sess-detail__foot .btn-ghost { display: inline-flex; align-items: center; gap: var(--sp-1); }
.thr-sess-detail__foot svg { width: 0.9rem; height: 0.9rem; }

/* ============ round 3: overview parity, mood polish, TR inline + filters, session editor ============ */

/* overview — the four top cards share a height; CTAs bottom-align */
.thr-remind { align-items: stretch; }
.thr-remind .thr-card__cta { margin-top: auto; }
.thr-remind .thr-card .btn-primary { margin-top: auto; }

/* mood scale — taller option cards */
.thr-mood__opt { padding: 2rem var(--sp-2); gap: 12px; }

/* mood trend — taller, with date + time under each bar */
.thr-trend { align-items: stretch; height: 172px; gap: 6px; }
.thr-trend__col { justify-content: flex-end; gap: 4px; }
.thr-trend__bar { flex: 1; width: 100%; max-width: 26px; display: flex; align-items: flex-end; }
.thr-trend__bar i { width: 100%; max-width: none; background: var(--c-accent); border-radius: var(--r-sm) var(--r-sm) 0 0; min-height: 4px; }
.thr-trend__face { display: block; width: 1.5rem; }
.thr-trend__meta { display: flex; flex-direction: column; align-items: center; line-height: 1.15; }
.thr-trend__date { font-size: 0.68rem; font-weight: var(--fw-semibold); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.thr-trend__time { font-size: 0.62rem; color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }

/* thought records — full inline cards */
.thr-tr { gap: var(--sp-2); }
.thr-tr:hover { border-color: var(--c-border); }
.thr-tr__top { flex-wrap: wrap; }
.thr-tr__int { margin-left: 0; }
.thr-tr__actions { margin-left: auto; display: inline-flex; align-items: center; gap: 4px; }
.thr-iconbtn { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: var(--r-sm); color: var(--c-ink-faint); border: 1px solid transparent; }
.thr-iconbtn:hover { background: var(--c-surface-2); color: var(--c-ink); border-color: var(--c-border-strong); }
.thr-iconbtn svg { width: 1rem; height: 1rem; }
.thr-iconbtn--danger { color: #fff; background: #b3261e; border-color: transparent; }
.thr-iconbtn--danger:hover { background: #9c2019; color: #fff; border-color: transparent; }
.thr-tr__confirm { display: inline-flex; align-items: center; gap: 6px; }
.thr-tr__confirm-q { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink); }
.thr-tr__thought { white-space: pre-wrap; }
.thr-tr__grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2) var(--sp-5); margin-top: var(--sp-1); }
.thr-trf { min-width: 0; }
.thr-trf--full { grid-column: 1 / -1; }
.thr-trf__k { display: block; font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.03em; color: var(--c-ink-faint); margin-bottom: 2px; }
.thr-trf__v { font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.5; white-space: pre-wrap; }
@media (max-width: 640px) { .thr-tr__grid { grid-template-columns: 1fr; } }

/* thought records — filter bar */
.thr-trbar { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.thr-search { display: flex; align-items: center; gap: var(--sp-2); flex: 1 1 220px; min-width: 180px; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); background: var(--c-surface); color: var(--c-ink-faint); }
.thr-search:focus-within { border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.thr-search svg { width: 1rem; height: 1rem; flex: 0 0 auto; }
.thr-search__input { flex: 1; min-width: 0; border: 0; background: transparent; font: inherit; font-size: var(--fs-sm); color: var(--c-ink); }
.thr-search__input:focus-visible { outline: none; }
.thr-daterange { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.thr-daterange input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); color: var(--c-ink); background: var(--c-surface); }
.thr-daterange input:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.thr-trbar__clear { visibility: hidden; }
.thr-trbar__clear.is-active { visibility: visible; }
.thr-trbar__count { margin-left: auto; font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* session editor — homework + file rows */
.thr-editsec { display: flex; flex-direction: column; gap: var(--sp-2); }
.thr-editsec__head { display: flex; align-items: center; justify-content: space-between; }
.thr-editsec__head > span { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.thr-addrow { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-accent-ink); padding: 4px var(--sp-2); border-radius: var(--r-sm); }
.thr-addrow:hover { background: var(--c-accent-wash); }
.thr-addrow svg { width: 0.9rem; height: 0.9rem; }
.thr-editrows { display: flex; flex-direction: column; gap: var(--sp-2); }
.thr-editrow { display: flex; align-items: center; gap: var(--sp-2); }
.thr-editrow input[type="checkbox"] { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; accent-color: var(--c-accent); }
.thr-editrow__ico { display: inline-grid; place-items: center; color: var(--c-ink-faint); flex: 0 0 auto; }
.thr-editrow__ico svg { width: 1rem; height: 1rem; }
.thr-editrow__input { flex: 1; min-width: 0; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.thr-editrow__input:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.thr-hint { font-size: var(--fs-xs); color: var(--c-ink-faint); }

/* ============ Medical: treatment edit/delete, schedule, appointments ============ */

/* treatment edit/delete controls */
.thr-check { flex-direction: row; align-items: center; gap: var(--sp-2); font-size: var(--fs-sm); color: var(--c-ink-soft); }
.thr-check input { width: 1.1rem; height: 1.1rem; flex: 0 0 auto; accent-color: var(--c-accent); }
.thr-danger-link { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: var(--fw-medium); color: #b3261e; padding: var(--sp-2); border-radius: var(--r-sm); }
.thr-danger-link:hover { background: #fbeae8; }
.thr-danger-link svg { width: 1rem; height: 1rem; }
.thr-drawer__foot > .thr-danger-link { margin-right: auto; }
.thr-delconfirm { display: flex; align-items: center; gap: var(--sp-3); width: 100%; flex-wrap: wrap; }
.thr-delconfirm > span { flex: 1 1 12rem; min-width: 10rem; font-size: var(--fs-sm); color: var(--c-ink); }
.btn-danger { background: #b3261e; color: #fff; border: 1px solid transparent; padding: var(--sp-3) var(--sp-4); border-radius: var(--r-md); font-weight: var(--fw-semibold); }
.btn-danger:hover { background: #9c2019; }
.btn-danger.btn-sm { padding: var(--sp-2) var(--sp-3); }

/* schedule slot editor */
.apt-slot { display: grid; grid-template-columns: 8rem 1fr 7rem 2.25rem; gap: var(--sp-2); align-items: center; }
@media (max-width: 560px) { .apt-slot { grid-template-columns: 1fr 1fr; } }

/* appointments: specialty filter chips */
.apt-chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); align-items: center; }
.apt-chipf { display: inline-flex; align-items: center; gap: 6px; padding: var(--sp-1) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.apt-chipf:hover { border-color: var(--c-accent); color: var(--c-ink); }
.apt-chipf.is-on { background: var(--c-accent-wash); border-color: transparent; color: var(--c-accent-ink); }
.apt-chipf__n { font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }
.apt-chipf.is-on .apt-chipf__n { color: var(--c-accent-ink); }
.apt-manage { display: inline-flex; align-items: center; gap: 4px; margin-left: auto; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-accent-ink); padding: var(--sp-1) var(--sp-2); border-radius: var(--r-sm); }
.apt-manage:hover { background: var(--c-accent-wash); }
.apt-manage svg { width: 0.9rem; height: 0.9rem; }
.apt-dot { display: inline-block; width: 0.6rem; height: 0.6rem; border-radius: var(--r-full); flex: 0 0 auto; }

/* appointments: list + cards */
.apt-list { display: flex; flex-direction: column; gap: var(--sp-2); }
.apt-card { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); overflow: hidden; }
.apt-card.is-open { border-color: var(--c-border-strong); }
.apt-card__head { display: flex; align-items: center; gap: var(--sp-3); width: 100%; padding: var(--sp-3); text-align: left; }
.apt-card__head:hover { background: var(--c-surface-2); }
.apt-card__date { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; width: 2.6rem; color: var(--c-ink-soft); font-size: var(--fs-xs); }
.apt-card__date b { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.apt-card__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.apt-card__title { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apt-card__meta { display: flex; flex-wrap: wrap; gap: var(--sp-1); align-items: center; }
.apt-card__right { flex: 0 0 auto; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.apt-card__rel { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.apt-card__chev { flex: 0 0 auto; color: var(--c-ink-faint); display: inline-grid; place-items: center; transition: transform var(--dur) var(--ease); }
.apt-card__chev.is-open { transform: rotate(180deg); }
.apt-card__chev svg { width: 1.1rem; height: 1.1rem; }
@media (max-width: 680px) { .apt-card__right { display: none; } }

.apt-chip { display: inline-flex; align-items: center; gap: 4px; padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.apt-chip--files svg { width: 0.85rem; height: 0.85rem; }

/* status chip — colour never carries meaning: icon + text + border style + fill */
.apt-status { display: inline-flex; align-items: center; gap: 4px; padding: 1px var(--sp-2); border-radius: var(--r-full); font-size: var(--fs-xs); font-weight: var(--fw-semibold); border: 1px solid var(--c-border-strong); color: var(--c-ink-soft); white-space: nowrap; }
.apt-status svg { width: 0.85rem; height: 0.85rem; }
.apt-status--attended { background: var(--c-ink); color: #fff; border-color: transparent; }
.apt-status--cancelled { border-style: dashed; color: var(--c-ink-faint); text-decoration: line-through; }

/* appointment detail (inline, no modal) */
.apt-detail { padding: var(--sp-4); border-top: 1px solid var(--c-border); background: var(--c-surface-2); display: flex; flex-direction: column; gap: var(--sp-4); }
.apt-drows { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-3) var(--sp-5); }
@media (max-width: 560px) { .apt-drows { grid-template-columns: 1fr; } }
.apt-drow { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.apt-drow__k { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.03em; color: var(--c-ink-faint); }
.apt-drow__v { font-size: var(--fs-sm); color: var(--c-ink); display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.apt-when-rel { color: var(--c-ink-faint); }
.apt-link { display: inline-flex; align-items: center; gap: 4px; color: var(--c-accent-ink); font-weight: var(--fw-medium); }
.apt-link svg { width: 0.9rem; height: 0.9rem; }
.apt-notes { display: flex; flex-direction: column; gap: 4px; }
.apt-notes__body { font-size: var(--fs-sm); color: var(--c-ink); line-height: 1.55; }
.apt-files { display: flex; flex-direction: column; gap: var(--sp-2); }
.apt-filelist { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.apt-file { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; padding: var(--sp-1) var(--sp-2); background: var(--c-surface); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font-size: var(--fs-sm); color: var(--c-ink); }
.apt-file:hover { border-color: var(--c-accent); }
.apt-file svg { width: 0.9rem; height: 0.9rem; flex: 0 0 auto; }
.apt-file span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apt-detail__foot { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.apt-detail__foot .thr-danger-link { margin-left: auto; }
.apt-delconfirm { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; width: 100%; }
.apt-delconfirm > span { flex: 1 1 14rem; font-size: var(--fs-sm); color: var(--c-ink); }

/* appointment drawer extras */
.apt-notes-lbl { display: inline-flex; align-items: center; gap: var(--sp-2); }
.apt-boldbtn { display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); color: var(--c-ink-soft); font-size: var(--fs-sm); }
.apt-boldbtn:hover { background: var(--c-surface-2); color: var(--c-ink); }
.apt-hiddenfile { display: none; }
.apt-filename { display: inline-flex; align-items: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border: 0; background: transparent; padding: var(--sp-2) 0; color: var(--c-ink); }

/* specialty manage modal (reuses .pw-scrim / .pw-modal / .pw-modal__head / .pw-modal__x) */
.pw-modal__title { font-family: var(--font-display); font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); }
.apt-speclist { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4) var(--sp-5); }
.apt-specrow { display: flex; align-items: center; gap: var(--sp-2); }
.apt-specname { flex: 1; min-width: 0; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); color: var(--c-ink); background: var(--c-surface); }
.apt-specname:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.apt-specmodal .thr-addrow { margin: 0 var(--sp-5) var(--sp-3); }
.apt-specmodal__foot { display: flex; justify-content: flex-end; padding: var(--sp-3) var(--sp-5); border-top: 1px solid var(--c-border); }

/* ============ Gym — plan builder (Phase 1) ============ */
.gym-page { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: var(--sp-6); align-items: start; }
.gym-overlay { display: contents; }
@media (max-width: 900px) { .gym-page { grid-template-columns: 1fr; } }

/* plans column */
.gym-plans { display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-plans__head { display: flex; align-items: center; justify-content: space-between; margin-top: var(--sp-2); padding-top: var(--sp-3); border-top: 1px solid var(--c-border); }
.gym-plans__head .thr-sec__title { margin: 0; }
.gym-plans__list, .gym-plans__arch { display: flex; flex-direction: column; gap: 4px; }
.gym-plans__arch { margin-top: var(--sp-3); padding-top: var(--sp-3); border-top: 1px solid var(--c-border); }
.gym-plan { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); width: 100%; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); text-align: left; }
.gym-plan:hover { border-color: var(--c-border-strong); }
.gym-plan.is-sel { border-color: var(--c-accent); background: var(--c-accent-wash); }
.gym-plan__name { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gym-plan__active { flex: 0 0 auto; font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-accent-ink); }
.gym-plans__arch .gym-plan { opacity: 0.72; }

/* detail column */
.gym-detail { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.gym-head__id { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gym-head .thr-eyebrow { display: inline-flex; align-items: center; gap: 6px; }
.gym-head .thr-eyebrow svg { width: 0.9rem; height: 0.9rem; }
.gym-plan-title { font-family: var(--font-display); font-size: var(--fs-2xl); font-weight: var(--fw-bold); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: 2px 4px; margin-left: -4px; background: transparent; }
.gym-plan-title:hover { border-color: var(--c-border); }
.gym-plan-title:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); background: var(--c-surface); }
.gym-toolbar { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.gym-delc { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-sm); color: var(--c-ink); }

/* blocks */
.gym-blocks { display: flex; flex-direction: column; gap: var(--sp-4); }
.gym-block { border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); padding: var(--sp-3); display: flex; flex-direction: column; gap: var(--sp-3); }
.gym-block__head { display: flex; align-items: center; gap: var(--sp-2); }
.gym-block__name { flex: 1; min-width: 0; font-size: var(--fs-md); font-weight: var(--fw-bold); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: var(--sp-1) var(--sp-2); background: transparent; }
.gym-block__name:hover { border-color: var(--c-border); }
.gym-block__name:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); background: var(--c-surface); }
.gym-block__actions { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; }

/* groups */
.gym-grp-list { display: flex; flex-direction: column; gap: var(--sp-3); }
.gym-grp { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface-2); padding: var(--sp-2) var(--sp-3); display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-grp__head { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.gym-grp__name { flex: 1 1 12rem; min-width: 0; font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: var(--sp-1) var(--sp-2); background: transparent; }
.gym-grp__name:hover { border-color: var(--c-border-strong); }
.gym-grp__name:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); background: var(--c-surface); }
.gym-grp__muscle { flex: 0 0 auto; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-xs); background: var(--c-surface); color: var(--c-ink-soft); }
.gym-grp__add { flex: 0 0 auto; }

/* exercises */
.gym-ex-list { display: flex; flex-direction: column; gap: 4px; }
.gym-ex { background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-md); }
.gym-ex.is-open { border-color: var(--c-border-strong); }
.gym-ex__row { display: flex; align-items: center; gap: var(--sp-2); padding: 4px var(--sp-2); }
.gym-ex__caret { flex: 0 0 auto; color: var(--c-ink-faint); display: inline-grid; place-items: center; transition: transform var(--dur) var(--ease); }
.gym-ex.is-open .gym-ex__caret { transform: rotate(180deg); }
.gym-ex__caret svg { width: 1rem; height: 1rem; }
.gym-ex__name { flex: 1 1 40%; min-width: 0; font-size: var(--fs-sm); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: var(--sp-1) var(--sp-2); background: transparent; }
.gym-ex__name:hover { border-color: var(--c-border); }
.gym-ex__name:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.gym-ex__target { flex: 0 0 auto; display: inline-flex; align-items: flex-end; gap: 5px; }
.gym-ex__x { color: var(--c-ink-faint); font-size: var(--fs-xs); align-self: flex-end; padding-bottom: 7px; }
.gym-tfield { display: flex; flex-direction: column; gap: 3px; }
.gym-tfield__lab { font-size: 9px; font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: .04em; color: var(--c-ink-faint); line-height: 1; padding-left: 2px; }
.gym-num { width: 2.75rem; text-align: center; }
.gym-reps { width: 4.5rem; }
.gym-num, .gym-reps, .gym-ss { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.gym-num:focus-visible, .gym-reps:focus-visible, .gym-ss:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.gym-tag { flex: 0 0 auto; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); white-space: nowrap; }
.gym-tag--ss { background: var(--c-accent-wash); color: var(--c-accent-ink); }
/* muscle chip on the collapsed exercise row — the muscle now lives on the exercise.
   Colour is decorative only; the muscle NAME carries the meaning (colour-blind safe). */
.gym-extag { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); white-space: nowrap; }
.gym-extag__dot { width: 7px; height: 7px; border-radius: var(--r-full); flex: 0 0 auto; }
.gym-yt { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.75rem; height: 1.75rem; color: #c4302b; border-radius: var(--r-sm); }
.gym-yt:hover { background: var(--c-surface-2); }
.gym-yt svg { width: 1.15rem; height: 1.15rem; }
.gym-move { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.5rem; height: 1.75rem; color: var(--c-ink-faint); border-radius: var(--r-sm); }
.gym-move:hover { background: var(--c-surface-2); color: var(--c-ink); }
.gym-move svg { width: 0.95rem; height: 0.95rem; }
.gym-ex__more { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-2) var(--sp-3); padding: var(--sp-3); border-top: 1px solid var(--c-border); }
@media (max-width: 760px) { .gym-ex__more { grid-template-columns: 1fr 1fr; } }
.gym-f { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gym-f > span { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.03em; color: var(--c-ink-faint); }
.gym-f select, .gym-f textarea, .gym-f input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); resize: vertical; }
.gym-f select:focus-visible, .gym-f textarea:focus-visible, .gym-f input:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.gym-f--wide { grid-column: 1 / -1; }
.gym-f__tech { display: flex; align-items: center; gap: 4px; }
.gym-f__tech select { flex: 1; min-width: 0; }
.gym-help { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.6rem; height: 1.6rem; color: var(--c-ink-faint); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); }
.gym-help:hover { color: var(--c-accent-ink); border-color: var(--c-accent); }
.gym-help svg { width: 0.9rem; height: 0.9rem; }
.gym-addblock { align-self: flex-start; }
.gym-empty { padding: var(--sp-1) var(--sp-2); }

/* glossary */
.gym-gloss { border-top: 1px solid var(--c-border); padding-top: var(--sp-3); margin-top: var(--sp-2); }
.gym-gloss__head { display: flex; align-items: center; justify-content: space-between; width: 100%; }
.gym-gloss__head .thr-sec__title { display: inline-flex; align-items: center; gap: 6px; margin: 0; }
.gym-gloss__head svg { width: 0.95rem; height: 0.95rem; }
.gym-gloss__chev { color: var(--c-ink-faint); display: inline-grid; place-items: center; transition: transform var(--dur) var(--ease); }
.gym-gloss__chev.is-open { transform: rotate(180deg); }
.gym-gloss__chev svg { width: 1rem; height: 1rem; }
.gym-gloss__body { display: flex; flex-direction: column; gap: var(--sp-2); margin-top: var(--sp-2); }
.gym-gloss__chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.gym-gloss__chip { display: inline-flex; align-items: center; padding: var(--sp-1) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-accent-ink); }
.gym-gloss__chip:hover { background: var(--c-accent-wash); border-color: transparent; }

/* ============ Gym — Phase 2/3: tabs, logger, history, progression ============ */
.gym-tabs { display: inline-flex; gap: 2px; padding: 2px; background: var(--c-surface-2); border-radius: var(--r-md); align-self: flex-start; }
.gym-tab { display: inline-flex; align-items: center; gap: 6px; padding: var(--sp-1) var(--sp-4); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); border-radius: var(--r-sm); }
.gym-tab svg { width: 0.95rem; height: 0.95rem; }
.gym-tab:hover { color: var(--c-ink); }
.gym-tab.is-on { background: var(--c-surface); color: var(--c-ink); box-shadow: 0 1px 2px rgba(20,21,26,0.1); }
.gym-tabc { display: flex; flex-direction: column; gap: var(--sp-4); }

/* training settings (left column) */
.gym-settings { margin-top: var(--sp-4); padding-top: var(--sp-3); border-top: 1px solid var(--c-border); display: flex; flex-direction: column; gap: 2px; }
.bmx-left .gym-settings:first-child { margin-top: 0; padding-top: 0; border-top: 0; } /* no spacer above the first (Body) block */
.gym-settings .thr-sec__title { margin-bottom: var(--sp-1); }
.gym-setlink { display: flex; align-items: center; gap: var(--sp-2); width: 100%; padding: var(--sp-2); border-radius: var(--r-md); color: var(--c-ink-soft); font-size: var(--fs-sm); font-weight: var(--fw-medium); text-align: left; }
.gym-setlink:hover { background: var(--c-surface-2); color: var(--c-ink); }
.gym-setlink svg { width: 1rem; height: 1rem; flex: 0 0 auto; color: var(--c-ink-faint); }

/* train — pick a block */
.gym-pick { display: flex; flex-direction: column; gap: var(--sp-3); }
.gym-pick__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: var(--sp-3); }
.gym-pick__block { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); text-align: left; }
.gym-pick__block:hover { border-color: var(--c-accent); background: var(--c-accent-wash); }
.gym-pick__block svg { width: 1.4rem; height: 1.4rem; color: var(--c-accent-ink); }
.gym-pick__name { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.gym-pick__n { font-size: var(--fs-xs); color: var(--c-ink-soft); }

/* logger */
.gym-logger { display: flex; flex-direction: column; gap: var(--sp-3); }
.gym-logger__bar { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; padding-bottom: var(--sp-2); border-bottom: 1px solid var(--c-border); }
.gym-logger__id { display: flex; flex-direction: column; }
.gym-logger__spacer { flex: 1; }
.gym-logdate { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.gym-logdate input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); }
.gym-log-grp { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); margin-top: var(--sp-2); }
.gym-log-ex { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); padding: var(--sp-3); display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-log-ex__head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.gym-log-ex__id { display: flex; flex-direction: column; min-width: 0; }
.gym-log-ex__name { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); }
.gym-log-ex__meta { font-size: var(--fs-xs); color: var(--c-ink-faint); }
.gym-sets { display: flex; flex-direction: column; gap: 4px; }
.gym-set { display: flex; align-items: center; gap: var(--sp-2); }
.gym-set__n { flex: 0 0 auto; width: 1.25rem; text-align: center; font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }
.gym-set__in { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.gym-set__in:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.gym-set__w { width: 4rem; }
.gym-set__r { width: 4.5rem; }
.gym-set__done { flex: 0 0 auto; display: inline-grid; place-items: center; margin-left: auto; }
.gym-set__done input { width: 1.15rem; height: 1.15rem; accent-color: var(--c-accent); }
.gym-set__del { flex: 0 0 auto; }
.gym-log-ex__foot { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.gym-rpe { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.gym-rpe input { width: 3rem; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); }
.gym-enote { flex: 1 1 12rem; min-width: 0; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.gym-enote:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }

/* history + progression */
.gym-sess-list { display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-sess { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); overflow: hidden; }
.gym-sess.is-open { border-color: var(--c-border-strong); }
.gym-sess__head { display: flex; align-items: center; gap: var(--sp-3); width: 100%; padding: var(--sp-3); text-align: left; }
.gym-sess__head:hover { background: var(--c-surface-2); }
.gym-sess__date { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; width: 2.6rem; color: var(--c-ink-soft); font-size: var(--fs-xs); }
.gym-sess__date b { font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); line-height: 1; font-variant-numeric: tabular-nums; }
.gym-sess__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.gym-sess__title { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); }
.gym-sess__meta { font-size: var(--fs-xs); color: var(--c-ink-soft); }
.gym-sess__chev { flex: 0 0 auto; color: var(--c-ink-faint); transition: transform var(--dur) var(--ease); display: inline-grid; place-items: center; }
.gym-sess__chev.is-open { transform: rotate(180deg); }
.gym-sess__chev svg { width: 1.1rem; height: 1.1rem; }
.gym-sess__detail { padding: var(--sp-4); border-top: 1px solid var(--c-border); background: var(--c-surface-2); display: flex; flex-direction: column; gap: var(--sp-3); }
.gym-sess__ex { display: flex; flex-direction: column; gap: 4px; padding-bottom: var(--sp-2); border-bottom: 1px solid var(--c-border); }
.gym-sess__ex:last-of-type { border-bottom: 0; }
.gym-sess__exhead { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); }
.gym-sess__exname { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); display: inline-flex; align-items: center; gap: 6px; }
.gym-sess__exval { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.gym-sess__exrow { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); }
.gym-sess__sets { font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.gym-sess__spark { flex: 0 0 auto; color: var(--c-accent); width: 130px; height: 30px; }
.gym-spark { display: block; width: 100%; height: 100%; }
.gym-sess__exnote { font-size: var(--fs-sm); color: var(--c-ink-soft); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.gym-sess__note { font-size: var(--fs-sm); color: var(--c-ink); }
.gym-sess__foot { display: flex; }

/* PR badge — colour never carries meaning: star icon + "PR" text */
.gym-pr { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); font-weight: var(--fw-bold); color: #8a5a00; background: #fff4d6; border: 1px solid #f0c94b; padding: 1px var(--sp-2); border-radius: var(--r-full); white-space: nowrap; }
.gym-pr svg { width: 0.8rem; height: 0.8rem; }
.gym-pr--sm { padding: 0 6px; }

/* ============ Gym — Learn pages (guide + useful links) ============ */
.gym-setlink.is-on { background: var(--c-accent-wash); color: var(--c-accent-ink); }
.gym-setlink.is-on svg { color: var(--c-accent-ink); }
.gym-page-doc { max-width: none; }
.gym-doc { display: flex; flex-direction: column; gap: var(--sp-2); color: var(--c-ink); }
.gym-doc__lead { font-size: var(--fs-md); color: var(--c-ink-soft); line-height: 1.6; }
.gym-doc h2 { font-family: var(--font-display); font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); margin-top: var(--sp-4); }
.gym-doc h3 { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); margin-top: var(--sp-3); }
.gym-doc p { font-size: var(--fs-sm); line-height: 1.65; color: var(--c-ink); }
.gym-doc ul { display: flex; flex-direction: column; gap: 6px; padding-left: 1.15rem; margin: var(--sp-1) 0; }
.gym-doc li { font-size: var(--fs-sm); line-height: 1.55; color: var(--c-ink-soft); list-style: disc; }
.gym-doc li strong, .gym-doc p strong { color: var(--c-ink); font-weight: var(--fw-semibold); }
.gym-links { display: flex; flex-direction: column; gap: var(--sp-4); }
.gym-links__cat { display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-links__cat .thr-sec__title { margin: 0; }
.gym-links__chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }

/* ============ Health charts (reusable line chart) ============ */
.bmx-chartwrap { position: relative; margin-top: var(--sp-2); }
.bmx-chartwrap--empty { font-size: var(--fs-sm); color: var(--c-ink-faint); padding: var(--sp-3) 0; }
.bmx-chartbox { position: relative; width: 100%; }
.bmx-chart { display: block; width: 100%; height: 100%; overflow: visible; }
.bmx-grid { stroke: var(--c-border); stroke-width: 1; vector-effect: non-scaling-stroke; }
.bmx-ylab, .bmx-xlab, .bmx-goallab { fill: var(--c-ink-faint); font-size: 11px; font-family: var(--font-sans, system-ui); }
.bmx-line { fill: none; stroke-width: 2; vector-effect: non-scaling-stroke; }
.bmx-line2 { fill: none; stroke-width: 1.6; vector-effect: non-scaling-stroke; opacity: .95; }
.bmx-line2.is-dash { stroke-dasharray: 5 3; }
.bmx-goal { stroke: var(--c-ink-faint); stroke-width: 1; stroke-dasharray: 3 3; vector-effect: non-scaling-stroke; }
.bmx-lastlab { fill: var(--c-ink); font-size: 12px; font-weight: 700; font-family: var(--font-sans, system-ui); }
.bmx-endlab { fill: var(--c-ink-soft); font-size: 11px; font-weight: 600; font-family: var(--font-sans, system-ui); }
.bmx-cross { stroke: var(--c-border-strong); stroke-width: 1; stroke-dasharray: 2 2; vector-effect: non-scaling-stroke; }
.bmx-cross-dot { fill: var(--c-accent); stroke: #fff; stroke-width: 1.5; }
.bmx-chart__title { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.bmx-legend { display: inline-flex; gap: var(--sp-3); margin-bottom: 2px; }
.bmx-leg { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); color: var(--c-ink-soft); }
.bmx-leg__mk { width: 14px; height: 0; border-top: 2px solid; border-color: inherit; display: inline-block; }
.bmx-leg__mk { background: none !important; height: 2px; border: 0; }
.bmx-leg__mk--dash { background: repeating-linear-gradient(90deg, currentColor 0 5px, transparent 5px 8px) !important; }
.bmx-tip { position: absolute; top: 2px; pointer-events: none; background: var(--c-ink); color: #fff; border-radius: var(--r-sm); padding: 4px 8px; font-size: var(--fs-xs); line-height: 1.35; box-shadow: 0 6px 18px -6px rgba(20,21,26,.5); white-space: nowrap; z-index: 2; }
.bmx-tip b { font-variant-numeric: tabular-nums; } .bmx-tip span { display: block; opacity: .75; } .bmx-tip em { display: block; opacity: .8; font-style: normal; max-width: 200px; white-space: normal; }

/* ============ Body Metrics view ============ */
.bmx-content { display: flex; flex-direction: column; gap: var(--sp-4); min-width: 0; }
.bmx-delta { font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.bmx-delta.up, .bmx-delta.down { color: var(--c-ink-soft); } /* direction, not good/bad — arrow carries meaning, no hue */

.bmx-derived-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--sp-3); }
@media (max-width: 640px) { .bmx-derived-row { grid-template-columns: 1fr; } }
.bmx-derived { display: flex; flex-direction: column; gap: 2px; padding: var(--sp-3) var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); }
.bmx-derived.is-key { border-color: var(--c-accent); background: var(--c-accent-wash); }
.bmx-derived.is-muted { opacity: .7; }
.bmx-derived__lab { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: .03em; color: var(--c-ink-faint); }
.bmx-derived__val { font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--c-ink); font-variant-numeric: tabular-nums; }
.bmx-derived.is-key .bmx-derived__val { color: var(--c-accent-ink); }
.bmx-derived__sub { font-size: var(--fs-xs); color: var(--c-ink-soft); }

.bmx-metric-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-3); }
@media (max-width: 640px) { .bmx-metric-grid { grid-template-columns: 1fr; } }
.bmx-metric { display: flex; flex-direction: column; border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); padding: var(--sp-4); }
.bmx-metric--weight { border-color: var(--c-border-strong); }
.bmx-metric__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); margin-bottom: var(--sp-1); }
.bmx-metric__name { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.bmx-metric__now { font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; display: inline-flex; align-items: center; gap: 6px; }
.bmx-metric--weight .bmx-metric__name { font-size: var(--fs-lg); }
.bmx-metric--weight .bmx-metric__now { font-size: var(--fs-md); color: var(--c-ink); font-weight: var(--fw-medium); }
.bmx-sym { padding: 0 6px; background: var(--c-surface-2); border-radius: var(--r-full); }

/* Log form — nothing required */
.bmx-log__bar { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.bmx-logdate { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.bmx-logdate input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); }
.bmx-log__hint { font-size: var(--fs-xs); }
.bmx-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: var(--sp-3); }
.bmx-lf { display: flex; flex-direction: column; gap: 3px; }
.bmx-lf__lab { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.bmx-lf__lab em { color: var(--c-ink-faint); font-style: normal; font-weight: var(--fw-medium); }
.bmx-in { padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.bmx-in:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.bmx-lf--pair .bmx-lf__pair { display: flex; gap: var(--sp-2); }
.bmx-lf--pair label { display: flex; align-items: center; gap: 4px; font-size: var(--fs-xs); color: var(--c-ink-faint); flex: 1; }
.bmx-lf--pair .bmx-in { width: 100%; }
.bmx-lf--note { max-width: 560px; }
.bmx-lf--note textarea { padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); resize: vertical; color: var(--c-ink); }
.bmx-lf--note textarea:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.bmx-log__foot { display: flex; justify-content: flex-end; gap: var(--sp-2); }

/* history check-in values */
.bmx-ck-vals { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: var(--sp-2) var(--sp-4); }
.bmx-ck-val { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); font-size: var(--fs-sm); border-bottom: 1px solid var(--c-border); padding-bottom: 2px; }
.bmx-ck-val span { color: var(--c-ink-soft); } .bmx-ck-val b { color: var(--c-ink); font-variant-numeric: tabular-nums; }

/* measurements manage modal */
.bmx-mmodal { width: min(640px, 94vw); }
.bmx-mlist { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4) var(--sp-5); }
.bmx-mrow { display: flex; align-items: center; gap: var(--sp-2); }
.bmx-mrow .apt-specname { flex: 1 1 auto; }
.bmx-munit { width: 4rem; padding: var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); text-align: center; }
.bmx-mbil { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); color: var(--c-ink-soft); white-space: nowrap; }
.bmx-mbil input { accent-color: var(--c-accent); }
.bmx-mtarget { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-sm); }
.bmx-mt { width: 4rem; padding: var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); text-align: center; }
.bmx-core { font-size: var(--fs-xs); color: var(--c-ink-faint); padding: 0 var(--sp-2); }
.bmx-mmodal .apt-specmodal__foot { justify-content: space-between; gap: var(--sp-3); }

/* ===== Body Metrics · Phase 2 (goals) + Phase 3 (photos, compare, profile) ===== */

/* goal progress bar (colourblind-safe: icon + text carry meaning, bar is a magnitude) */
.bmx-goalbar { display: flex; flex-direction: column; gap: 4px; margin-top: var(--sp-2); }
.bmx-goalbar__track { height: 6px; background: var(--c-surface-2); border-radius: var(--r-full); overflow: hidden; }
.bmx-goalbar__fill { display: block; height: 100%; background: var(--c-accent); border-radius: var(--r-full); }
.bmx-goalbar.is-done .bmx-goalbar__fill { background: #e0a416; }
.bmx-goalbar__meta { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); font-size: var(--fs-xs); }
.bmx-goalbar__lab { display: inline-flex; align-items: center; gap: 5px; font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.bmx-goalbar__lab svg { width: 0.85rem; height: 0.85rem; }
.bmx-goalbar.is-done .bmx-goalbar__lab { color: #8a5a00; }
.bmx-eta { color: var(--c-ink-faint); font-variant-numeric: tabular-nums; white-space: nowrap; }
.bmx-eta.is-stall { font-style: italic; }

/* celebration banner — gold, meaning via trophy + text, never hue-alone */
.bmx-celebrate { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-3) var(--sp-4); background: #fff8e6; border: 1px solid #f0c94b; border-left: 4px solid #e0a416; border-radius: var(--r-lg); }
.bmx-celebrate svg { flex: 0 0 auto; width: 1.4rem; height: 1.4rem; color: #b6791a; }
.bmx-celebrate__txt { display: flex; flex-direction: column; gap: 1px; }
.bmx-celebrate__txt strong { font-size: var(--fs-sm); color: #6b4a12; }
.bmx-celebrate__txt span { font-size: var(--fs-xs); color: #7a5c25; }

/* progress photos */
.bmx-photosec { display: flex; flex-direction: column; gap: var(--sp-2); margin-top: var(--sp-2); }
.bmx-photosec__lab { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.bmx-photosec__lab svg { width: 0.9rem; height: 0.9rem; }
.bmx-photos { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.bmx-photo { position: relative; width: 96px; margin: 0; border: 1px solid var(--c-border); border-radius: var(--r-md); overflow: hidden; background: var(--c-surface-2); }
.bmx-photo img { display: block; width: 100%; height: 128px; object-fit: cover; }
.bmx-photo figcaption { padding: 3px var(--sp-2); font-size: 11px; color: var(--c-ink-soft); text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bmx-photo__x { position: absolute; top: 4px; right: 4px; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; background: rgba(20,21,26,0.62); color: #fff; border-radius: var(--r-full); }
.bmx-photo__x svg { width: 0.7rem; height: 0.7rem; }
.bmx-photo__x:hover { background: rgba(20,21,26,0.85); }
.bmx-photo-add { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; width: 96px; height: 155px; border: 1px dashed var(--c-border-strong); border-radius: var(--r-md); color: var(--c-ink-soft); font-size: var(--fs-xs); font-weight: var(--fw-medium); cursor: pointer; }
.bmx-photo-add:hover { border-color: var(--c-accent); color: var(--c-accent); }
.bmx-photo-add svg { width: 1.3rem; height: 1.3rem; }
.bmx-log__photonote { display: inline-flex; align-items: center; gap: 8px; font-size: var(--fs-xs); color: var(--c-ink-faint); background: var(--c-surface-2); border-radius: var(--r-md); padding: var(--sp-2) var(--sp-3); align-self: flex-start; }
.bmx-log__photonote svg { width: 1rem; height: 1rem; }

/* compare */
.bmx-cmp-hint { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.bmx-compare { display: grid; grid-template-columns: 1fr 1fr 0.9fr; gap: var(--sp-4); align-items: start; }
@media (max-width: 900px) { .bmx-compare { grid-template-columns: 1fr 1fr; } .bmx-cmp-col--ins { grid-column: 1 / -1; } }
@media (max-width: 560px) { .bmx-compare { grid-template-columns: 1fr; } }
.bmx-cmp-col { display: flex; flex-direction: column; gap: var(--sp-3); }
.bmx-cmp-col__head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); }
.bmx-cmp-sel { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-xs); background: var(--c-surface); color: var(--c-ink); }
.bmx-cmp-photos { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.bmx-cmp-photo { margin: 0; width: 128px; border: 1px solid var(--c-border); border-radius: var(--r-md); overflow: hidden; background: var(--c-surface-2); }
.bmx-cmp-photo img { display: block; width: 100%; height: 176px; object-fit: cover; }
.bmx-cmp-photo figcaption { padding: 3px var(--sp-2); font-size: 11px; color: var(--c-ink-soft); text-align: center; }
.bmx-cmp-col--ins { padding: var(--sp-3) var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); }
.bmx-ins__span { font-size: var(--fs-xs); color: var(--c-ink-faint); }
.bmx-ins { display: flex; flex-direction: column; gap: var(--sp-1); }
.bmx-ins__row { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); font-size: var(--fs-sm); border-bottom: 1px solid var(--c-border); padding-bottom: 3px; }
.bmx-ins__row span:first-child { color: var(--c-ink-soft); }
.bmx-ins__nums { color: var(--c-ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.bmx-ins__d { font-weight: var(--fw-bold); margin-left: 4px; } /* arrow carries direction, not colour */

/* body profile (sex for Navy estimate) in the Measurements modal */
.bmx-profile { display: flex; flex-direction: column; gap: 6px; margin: var(--sp-2) var(--sp-5) 0; padding-top: var(--sp-3); border-top: 1px solid var(--c-border); }
.bmx-profile__lab { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); }
.bmx-profile__lab svg { width: 0.95rem; height: 0.95rem; color: var(--c-ink-soft); }
.bmx-sexrow { display: inline-flex; gap: var(--sp-2); flex-wrap: wrap; }
.bmx-sex { display: inline-flex; align-items: center; gap: 5px; padding: var(--sp-1) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); cursor: pointer; }
.bmx-sex input { position: absolute; opacity: 0; width: 0; height: 0; }
.bmx-sex.is-on { border-color: var(--c-accent); background: var(--c-accent-wash); color: var(--c-accent-ink); }

/* ===== Gym · log set column header (labels that persist once fields are filled) ===== */
.gym-set--head { padding-bottom: 1px; }
.gym-set__hl { font-size: 9px; font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: .04em; color: var(--c-ink-faint); line-height: 1; }
.gym-set__hl.gym-set__w, .gym-set__hl.gym-set__r { width: 4rem; }
.gym-set__hl.gym-set__r { width: 4.5rem; }
.gym-set--head .gym-set__hx { visibility: hidden; }
.gym-set--head .gym-set__done, .gym-set--head .gym-set__del { min-width: 0; }

/* ===== Gym · Overview (cross-plan dashboard) ===== */
/* keep header eyebrow icons small on gym pages that use a plain .thr-chead
   (Overview / Learn / Links) — without this the SVG falls back to a huge default */
.gym-detail .thr-eyebrow svg { width: 0.9rem; height: 0.9rem; vertical-align: -2px; }
.gym-ovlink { margin-bottom: 0; }
.gym-navlink { font-weight: var(--fw-semibold); color: var(--c-ink); }
.gym-navlink svg { color: var(--c-ink-soft); }

.gym-ov { }
.gym-ov__lead { font-size: var(--fs-sm); color: var(--c-ink-soft); margin-top: -2px; }

.gym-kpi-row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-3); }
@media (max-width: 1080px) { .gym-kpi-row { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .gym-kpi-row { grid-template-columns: 1fr; } }
.gym-kpi { display: flex; flex-direction: column; gap: 3px; padding: var(--sp-3) var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); }
.gym-kpi__lab { font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: .03em; color: var(--c-ink-faint); }
.gym-kpi__val { font-family: var(--font-display); font-size: var(--fs-xl); font-weight: var(--fw-bold); color: var(--c-ink); font-variant-numeric: tabular-nums; line-height: 1.05; }
.gym-kpi__val small { font-family: var(--font-sans, system-ui); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.gym-kpi__sub { font-size: var(--fs-xs); color: var(--c-ink-soft); }

.gym-liftgrid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-3); }
@media (max-width: 640px) { .gym-liftgrid { grid-template-columns: 1fr; } }
.gym-lift { display: flex; flex-direction: column; border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); padding: var(--sp-4); }
.gym-lift__head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); }
.gym-lift__name { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.gym-lift__now { font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; display: inline-flex; align-items: baseline; gap: 6px; white-space: nowrap; }
.gym-lift__sub { font-size: var(--fs-xs); color: var(--c-ink-faint); margin-top: var(--sp-1); }
.gym-delta { font-weight: var(--fw-semibold); color: var(--c-ink-soft); } /* arrow carries direction — no hue */

.gym-prlist { display: flex; flex-direction: column; }
.gym-prrow { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--c-border); }
.gym-prrow:last-child { border-bottom: 0; }
.gym-prrow__ic { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.5rem; height: 1.5rem; color: #8a5a00; background: #fff4d6; border: 1px solid #f0c94b; border-radius: var(--r-full); }
.gym-prrow__ic svg { width: 0.85rem; height: 0.85rem; }
.gym-prrow__name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink); }
.gym-prrow__val { flex: 0 0 auto; font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.gym-prrow__date { flex: 0 0 auto; font-size: var(--fs-xs); color: var(--c-ink-faint); min-width: 3.5rem; text-align: right; }

/* ===== Gym · Overview v2 (volume trend, muscle balance, plans timeline) ===== */
.gym-ov__note { font-size: var(--fs-xs); color: var(--c-ink-faint); margin-top: var(--sp-2); }

/* muscle balance — bar length is magnitude; name + set count carry the meaning (colour-blind safe) */
.gym-bal { display: flex; flex-direction: column; gap: var(--sp-2); }
.gym-bal__row { display: grid; grid-template-columns: 8.5rem 1fr auto; align-items: center; gap: var(--sp-3); }
.gym-bal__name { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--c-ink); min-width: 0; }
.gym-bal__name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.gym-bal__dot { width: 8px; height: 8px; border-radius: var(--r-full); flex: 0 0 auto; }
.gym-bal__track { height: 8px; background: var(--c-surface-2); border-radius: var(--r-full); overflow: hidden; }
.gym-bal__fill { display: block; height: 100%; border-radius: var(--r-full); min-width: 2px; }
.gym-bal__val { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; min-width: 3.25rem; text-align: right; }

/* plans timeline */
.gym-tl { display: flex; flex-direction: column; }
.gym-tl__row { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--c-border); }
.gym-tl__row:last-child { border-bottom: 0; }
.gym-tl__name { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink); }
.gym-tl__range { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.gym-tl__n { font-size: var(--fs-xs); color: var(--c-ink-faint); min-width: 4.75rem; text-align: right; white-space: nowrap; }
.gym-tl__arch { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-faint); padding: 0 var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); }

/* ============ Nutrition ============ */
.ntr-left .gym-settings:first-child { margin-top: 0; padding-top: 0; border-top: 0; }

/* ---- Foods library ---- */
.ntr-fchips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.ntr-fchip { padding: 3px var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); background: var(--c-surface); }
.ntr-fchip:hover { border-color: var(--c-accent); color: var(--c-accent); }
.ntr-fchip.is-on { border-color: var(--c-accent); background: var(--c-accent-wash); color: var(--c-accent-ink); }
.ntr-foodlist { display: flex; flex-direction: column; gap: var(--sp-1); }
.ntr-food { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); }
.ntr-food__main { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: var(--sp-2); flex-wrap: wrap; }
.ntr-food__name { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); }
.ntr-cat { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); }
.ntr-food__base { font-size: var(--fs-xs); color: var(--c-ink-faint); }
.ntr-food__macros { display: flex; gap: var(--sp-3); font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.ntr-food__kcal { font-weight: var(--fw-semibold); color: var(--c-ink); }
.ntr-food__act { flex: 0 0 auto; display: flex; align-items: center; gap: var(--sp-1); }

/* ---- food editor modal ---- */
.ntr-foodmodal { width: min(560px, 94vw); }
.ntr-fform { display: flex; flex-wrap: wrap; gap: var(--sp-3); padding: var(--sp-4) var(--sp-5); }
.ntr-ff { display: flex; flex-direction: column; gap: 4px; flex: 1 1 8rem; min-width: 0; }
.ntr-ff--wide { flex-basis: 100%; }
.ntr-ff > span, .ntr-ff span { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.ntr-fform input, .ntr-fform select { width: 100%; box-sizing: border-box; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.ntr-fform input:focus-visible, .ntr-fform select:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.ntr-ff__base { display: flex; gap: var(--sp-2); }
.ntr-ff__base input:first-child { flex: 0 0 5rem; width: 5rem; }
.ntr-ff--macros { flex-basis: 100%; min-width: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-3); }
.ntr-ff--macros label { display: flex; flex-direction: column; gap: 4px; min-width: 0; }

/* ---- plans (list lives in the sidebar, same pattern as Gym) ---- */
.ntr-meta { display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.ntr-meta .ntr-ff { flex: 0 0 auto; }
.ntr-meta .ntr-ff--wide { flex: 1 1 16rem; }
.ntr-meta input { padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.ntr-sec { display: flex; flex-direction: column; gap: var(--sp-2); }
.ntr-targets { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--sp-3); max-width: 640px; }
.ntr-tg { display: flex; flex-direction: column; gap: 4px; }
.ntr-tg span { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.ntr-tg input { padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); text-align: center; background: var(--c-surface); color: var(--c-ink); }

/* macro bars — fill length is magnitude; label + value carry meaning (colour-blind safe) */
.ntr-bars { display: flex; flex-direction: column; gap: var(--sp-2); max-width: 640px; }
.ntr-bar { display: grid; grid-template-columns: 4.5rem 1fr auto; align-items: center; gap: var(--sp-3); }
.ntr-bar__lab { font-size: var(--fs-sm); color: var(--c-ink); }
.ntr-bar:first-child .ntr-bar__lab { font-weight: var(--fw-semibold); } /* protein first + emphasised */
.ntr-bar__track { height: 8px; background: var(--c-surface-2); border-radius: var(--r-full); overflow: hidden; }
.ntr-bar__fill { display: block; height: 100%; background: var(--c-accent); border-radius: var(--r-full); }
.ntr-bar__val { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; min-width: 6.5rem; text-align: right; }
.ntr-bar.is-over .ntr-bar__val { font-weight: var(--fw-bold); color: var(--c-ink); }

/* meals → options → items */
.ntr-meals { display: flex; flex-direction: column; gap: var(--sp-3); }
.ntr-meal { border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); padding: var(--sp-3) var(--sp-4); display: flex; flex-direction: column; gap: var(--sp-2); }
.ntr-meal__head { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.ntr-meal__name { flex: 1 1 10rem; min-width: 0; font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: var(--sp-1) var(--sp-2); background: transparent; }
.ntr-meal__name:hover { border-color: var(--c-border-strong); }
.ntr-meal__name:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); background: var(--c-surface); }
.ntr-meal__time { display: inline-flex; align-items: center; gap: 5px; color: var(--c-ink-faint); }
.ntr-meal__time svg { width: 0.9rem; height: 0.9rem; }
.ntr-meal__time input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); color: var(--c-ink); background: var(--c-surface); }
.ntr-meal__total { font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; margin-left: auto; }
.ntr-opts { display: flex; flex-direction: column; gap: var(--sp-2); }
.ntr-opt { border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface-2); padding: var(--sp-2) var(--sp-3); display: flex; flex-direction: column; gap: 6px; }
.ntr-opt__head { display: flex; align-items: center; gap: var(--sp-2); }
.ntr-opt__name { flex: 0 0 auto; width: 8rem; font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink); border: 1px solid transparent; border-radius: var(--r-sm); padding: 2px var(--sp-2); background: transparent; }
.ntr-opt__name:hover { border-color: var(--c-border-strong); }
.ntr-opt__name:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); background: var(--c-surface); }
.ntr-opt__total { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; margin-left: auto; }
.ntr-items { display: flex; flex-direction: column; gap: 4px; }
.ntr-empty { padding: 2px 0; }
.ntr-item { display: flex; align-items: center; gap: var(--sp-2); }
.ntr-item__name { flex: 1 1 40%; min-width: 8rem; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); background: var(--c-surface); color: var(--c-ink); }
.ntr-item__qty { width: 4rem; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-sm); text-align: right; background: var(--c-surface); color: var(--c-ink); }
.ntr-item__unit { flex: 0 0 auto; width: 2.5rem; font-size: var(--fs-xs); color: var(--c-ink-faint); }
.ntr-item__unitin { width: 3rem; padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-sm); font: inherit; font-size: var(--fs-xs); background: var(--c-surface); color: var(--c-ink); }
.ntr-item__name:focus-visible, .ntr-item__qty:focus-visible, .ntr-item__unitin:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.ntr-item__macro { flex: 0 0 auto; min-width: 11rem; text-align: right; font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.ntr-item__macro.is-free { color: var(--c-ink-faint); font-style: italic; }
.ntr-additem, .ntr-addopt { align-self: flex-start; }
@media (max-width: 720px) { .ntr-targets { grid-template-columns: repeat(2, 1fr); } .ntr-ff--macros { grid-template-columns: repeat(2, 1fr); } .ntr-item { flex-wrap: wrap; } .ntr-item__macro { min-width: 0; } }

/* ---- Nutrition · daily check-in ---- */
.ntr-ck { display: flex; flex-direction: column; gap: var(--sp-4); }
.ntr-ck__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; }
.ntr-ck__date { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.ntr-ck__date input { padding: var(--sp-1) var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); color: var(--c-ink); background: var(--c-surface); }
.ntr-ck__adh { display: inline-flex; align-items: baseline; gap: var(--sp-2); padding: var(--sp-1) var(--sp-3); background: var(--c-surface-2); border-radius: var(--r-full); }
.ntr-ck__adh b { font-family: var(--font-display); font-size: var(--fs-lg); font-weight: var(--fw-bold); color: var(--c-ink); font-variant-numeric: tabular-nums; }
.ntr-ck__adh span { font-size: var(--fs-xs); color: var(--c-ink-soft); }
.ntr-ck-meals { display: flex; flex-direction: column; gap: var(--sp-3); }
.ntr-ck-meal { border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); padding: var(--sp-3) var(--sp-4); display: flex; flex-direction: column; gap: var(--sp-2); }
.ntr-ck-meal.is-skipped { opacity: 0.65; }
.ntr-ck-meal__head { display: flex; align-items: center; gap: var(--sp-2); }
.ntr-ck-meal__name { font-size: var(--fs-md); font-weight: var(--fw-semibold); color: var(--c-ink); }
.ntr-ck-meal__time { font-size: var(--fs-xs); color: var(--c-ink-faint); font-variant-numeric: tabular-nums; }
.ntr-ck-skip { margin-left: auto; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 2px var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); }
.ntr-ck-skip:hover { border-color: var(--c-ink-soft); color: var(--c-ink); }
.ntr-ck-skip.is-on { background: var(--c-ink); color: #fff; border-color: var(--c-ink); }
.ntr-ck-opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: var(--sp-2); }
.ntr-ck-opt { display: flex; flex-direction: column; gap: 4px; text-align: left; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); background: var(--c-surface); }
.ntr-ck-opt:hover { border-color: var(--c-accent); }
.ntr-ck-opt.is-on { border-color: var(--c-accent); box-shadow: inset 0 0 0 1px var(--c-accent); background: var(--c-accent-wash); }
.ntr-ck-opt__top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-2); }
.ntr-ck-opt__name { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink); }
.ntr-ck-opt.is-on .ntr-ck-opt__name { color: var(--c-accent-ink); }
.ntr-ck-opt__macro { font-size: var(--fs-xs); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; white-space: nowrap; }
.ntr-ck-opt__items { font-size: var(--fs-xs); color: var(--c-ink-faint); }
.ntr-ck-extras { display: flex; flex-direction: column; gap: var(--sp-2); }
.ntr-ck__note { display: flex; flex-direction: column; gap: 4px; }
.ntr-ck__note span { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-ink-soft); }
.ntr-ck__note input { padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font: inherit; font-size: var(--fs-sm); color: var(--c-ink); background: var(--c-surface); }
.ntr-ck__note input:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }

/* ---- Nutrition · Fase 3 (routine toggle, repeat day, CSV import) ---- */
.ntr-meal__routine { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-xs); font-weight: var(--fw-medium); color: var(--c-ink-soft); padding: 2px var(--sp-2); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); white-space: nowrap; }
.ntr-meal__routine svg { width: 0.85rem; height: 0.85rem; }
.ntr-meal__routine:hover { border-color: var(--c-accent); color: var(--c-accent); }
.ntr-meal__routine.is-on { border-color: var(--c-accent); background: var(--c-accent-wash); color: var(--c-accent-ink); }
.ntr-ck__barleft { display: inline-flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.ntr-ck__repeat svg { width: 0.9rem; height: 0.9rem; }
.ntr-csvmodal { width: min(620px, 94vw); }
.ntr-csv { display: flex; flex-direction: column; gap: var(--sp-2); padding: var(--sp-4) var(--sp-5); }
.ntr-csv code { font-size: var(--fs-xs); background: var(--c-surface-2); padding: 1px 5px; border-radius: var(--r-sm); }
.ntr-csv textarea { width: 100%; box-sizing: border-box; padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border-strong); border-radius: var(--r-md); font-family: var(--font-mono, ui-monospace, monospace); font-size: var(--fs-sm); resize: vertical; color: var(--c-ink); background: var(--c-surface); }
.ntr-csv textarea:focus-visible { outline: none; border-color: var(--c-accent); box-shadow: 0 0 0 1px var(--c-accent); }
.ntr-csv__msg { font-size: var(--fs-sm); color: var(--c-accent-ink); min-height: 1.2em; }

/* ---- Nutrition · history (reuses .gym-sess cards) ---- */
.ntr-hist__adh { flex: 0 0 auto; font-size: var(--fs-sm); font-weight: var(--fw-bold); color: var(--c-ink); font-variant-numeric: tabular-nums; padding: 1px var(--sp-2); background: var(--c-surface-2); border-radius: var(--r-full); }
.ntr-hist__meal { display: flex; align-items: baseline; justify-content: space-between; gap: var(--sp-3); padding: 3px 0; border-bottom: 1px solid var(--c-border); font-size: var(--fs-sm); }
.ntr-hist__mname { color: var(--c-ink); font-weight: var(--fw-medium); white-space: nowrap; }
.ntr-hist__mname em { color: var(--c-ink-soft); font-weight: var(--fw-regular); font-style: normal; }
.ntr-hist__items { color: var(--c-ink-soft); text-align: right; }
.ntr-hist__skip { color: var(--c-ink-faint); font-style: italic; }
.ntr-hist__totals { margin-top: var(--sp-2); font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.ntr-hist__totals b { color: var(--c-ink); }

/* ===== Health › Overview ===== */
.hov { display: flex; flex-direction: column; gap: var(--sp-6); }
.hov-head { display: flex; flex-direction: column; }
.hov-head .page-desc { margin-top: var(--sp-3); }

/* At-a-glance tiles */
.hov-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--sp-3); }
.hov-tile { display: flex; flex-direction: column; gap: 2px; padding: var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); color: var(--c-ink); transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease); }
.hov-tile:hover { border-color: var(--c-border-strong); box-shadow: var(--shadow-sm); text-decoration: none; }
.hov-tile__ico { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: var(--r-md); background: var(--c-accent-wash); color: var(--c-accent-ink); margin-bottom: var(--sp-2); }
.hov-tile__ico svg { width: 1.2rem; height: 1.2rem; }
.hov-tile__label { font-size: var(--fs-xs); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-ink-faint); }
.hov-tile__big { font-family: var(--font-display); font-size: var(--fs-3xl); font-weight: var(--fw-bold); letter-spacing: -0.02em; line-height: 1.1; }
.hov-tile__big small { font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--c-ink-soft); letter-spacing: 0; }
.hov-tile__sub { font-size: var(--fs-sm); color: var(--c-ink-soft); }

/* Two-column area */
.hov-grid2 { display: grid; grid-template-columns: 1.4fr 1fr; gap: var(--sp-4); }
@media (max-width: 820px) { .hov-grid2 { grid-template-columns: 1fr; } }

.hov-card { padding: var(--sp-4) var(--sp-5); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); }
.hov-card__head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); margin-bottom: var(--sp-3); }
.hov-card__title { font-size: var(--fs-lg); font-weight: var(--fw-semibold); letter-spacing: -0.01em; }
.hov-card__link { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-accent-ink); white-space: nowrap; }
.hov-card__link svg { width: 0.9rem; height: 0.9rem; }

.hov-line { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--c-border); }
.hov-line:last-of-type { border-bottom: 0; }
.hov-line__k { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-sm); color: var(--c-ink-soft); }
.hov-line__k svg { width: 1rem; height: 1rem; }
.hov-line__v { font-weight: var(--fw-semibold); font-size: var(--fs-sm); }

.hov-mood-wrap { margin-top: var(--sp-3); }
.hov-mood { display: flex; align-items: center; gap: var(--sp-3); }
.hov-face { width: 2.4rem; height: 2.4rem; flex: 0 0 auto; }
.hov-mood__meta { display: flex; flex-direction: column; gap: 1px; }
.hov-mood__meta b { font-size: var(--fs-sm); }
.hov-mood__meta span { font-size: var(--fs-xs); color: var(--c-ink-faint); }
.hov-muted { font-size: var(--fs-sm); color: var(--c-ink-faint); }

/* Recent PRs */
.hov-prs { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.hov-pr { display: inline-flex; align-items: center; gap: var(--sp-2); padding: var(--sp-2) var(--sp-3); border: 1px solid var(--c-border); border-radius: var(--r-md); background: var(--c-surface); }
.hov-pr__badge { display: inline-flex; align-items: center; gap: 3px; font-size: var(--fs-xs); font-weight: var(--fw-bold); color: var(--c-accent-ink); }
.hov-pr__badge svg { width: 0.85rem; height: 0.85rem; }
.hov-pr__name { font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.hov-pr__val { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.hov-pr__date { font-size: var(--fs-xs); color: var(--c-ink-faint); }

/* Quick links */
.hov-links { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.hov-link { display: inline-flex; align-items: center; gap: 5px; padding: var(--sp-2) var(--sp-4); border: 1px solid var(--c-border-strong); border-radius: var(--r-full); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink); background: var(--c-surface); }
.hov-link:hover { background: var(--c-surface-2); text-decoration: none; }
.hov-link svg { width: 0.9rem; height: 0.9rem; color: var(--c-ink-faint); }

/* Compare tab: "only logs with photos" filter bar */
.bmx-cmp-bar { display: flex; align-items: center; gap: var(--sp-3); margin-bottom: var(--sp-3); }
.bmx-cmp-filter { display: inline-flex; align-items: center; gap: var(--sp-2); font-size: var(--fs-sm); color: var(--c-ink-soft); cursor: pointer; user-select: none; }
.bmx-cmp-filter input { accent-color: var(--c-accent-ink); }
/* Nutrition "back to today" button spacing */
.ntr-ck__today svg { width: 1rem; height: 1rem; }

/* ===== Nutrition › Overview analytics ===== */
.ntr-ov-analytics { margin-top: var(--sp-6); display: flex; flex-direction: column; gap: var(--sp-4); }
.ntr-ov-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--sp-3); }
.ntr-ov-kpi { padding: var(--sp-4); border: 1px solid var(--c-border); border-radius: var(--r-lg); background: var(--c-surface); display: flex; flex-direction: column; gap: 2px; }
.ntr-ov-kpi__n { font-family: var(--font-display); font-size: var(--fs-2xl); font-weight: var(--fw-bold); letter-spacing: -0.02em; }
.ntr-ov-kpi__l { font-size: var(--fs-xs); font-weight: var(--fw-semibold); letter-spacing: var(--tracking-label); text-transform: uppercase; color: var(--c-ink-faint); }
.ntr-ov-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-4); }
@media (max-width: 820px) { .ntr-ov-grid { grid-template-columns: 1fr; } .ntr-ov-kpis { grid-template-columns: 1fr; } }
.ntr-ov-sub { font-size: var(--fs-sm); color: var(--c-ink-soft); margin-bottom: var(--sp-3); }

.ntr-phases { margin-top: var(--sp-4); display: flex; flex-direction: column; }
.ntr-phase { display: grid; grid-template-columns: 1.3fr 1fr auto; align-items: center; gap: var(--sp-3); padding: var(--sp-3) 0; border-bottom: 1px solid var(--c-border); }
.ntr-phase:last-child { border-bottom: 0; }
.ntr-phase.is-active { padding-left: var(--sp-3); border-left: 3px solid var(--c-accent-ink); margin-left: calc(-1 * var(--sp-3) - 3px); padding-left: var(--sp-3); }
.ntr-phase__name { font-weight: var(--fw-semibold); font-size: var(--fs-sm); }
.ntr-phase__tag { font-size: var(--fs-xs); font-weight: var(--fw-semibold); color: var(--c-accent-ink); text-transform: uppercase; letter-spacing: var(--tracking-label); }
.ntr-phase__range { font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.ntr-phase__chg { font-size: var(--fs-sm); text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ntr-phase__chg b { font-weight: var(--fw-bold); }

/* Gym overview: configurable progress metric selector (Load / Reps / Time / Distance) */
.gym-trk-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-3); }
.gym-trk { display: inline-flex; gap: 4px; padding: 4px; background: var(--c-surface-2); border: 1px solid var(--c-border); border-radius: var(--r-full); }
.gym-trk__btn { padding: var(--sp-1) var(--sp-3); border-radius: var(--r-full); font-size: var(--fs-sm); font-weight: var(--fw-medium); color: var(--c-ink-soft); white-space: nowrap; transition: background var(--dur) var(--ease), color var(--dur) var(--ease); }
.gym-trk__btn:hover:not(.is-on) { color: var(--c-ink); }
.gym-trk__btn.is-on { background: var(--c-surface); color: var(--c-accent-ink); font-weight: var(--fw-semibold); box-shadow: var(--shadow-sm); }

/* ================= Health › Hobbies ================= */
.hby { display: flex; flex-direction: column; gap: var(--sp-5); }
.hby-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-4); flex-wrap: wrap; }
.hby-head .page-desc { margin-top: var(--sp-3); max-width: 60ch; }

.hby-card { padding: var(--sp-5); background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-lg); }
.hby-card__head { display: flex; align-items: baseline; gap: var(--sp-3); flex-wrap: wrap; }
.hby-card__title { font-size: var(--fs-lg); }
.hby-card__desc { margin-top: var(--sp-2); color: var(--c-ink-soft); font-size: var(--fs-sm); max-width: 62ch; }

/* Balance */
.hby-balance__tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4); margin: var(--sp-4) 0; }
.hby-tile { padding: var(--sp-4); background: var(--c-surface-2); border-radius: var(--r-md); display: flex; flex-direction: column; gap: var(--sp-1); }
.hby-tile__k { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: var(--tracking-label); color: var(--c-ink-faint); font-weight: var(--fw-semibold); }
.hby-tile__v { font-size: var(--fs-2xl); font-weight: var(--fw-bold); font-variant-numeric: tabular-nums; }
.hby-tile__of { font-size: var(--fs-base); font-weight: var(--fw-medium); color: var(--c-ink-soft); }
.hby-balance__ok { color: var(--c-ink-soft); font-size: var(--fs-sm); }
.hby-nudges { display: flex; flex-direction: column; gap: var(--sp-2); }
.hby-nudges li { position: relative; padding-left: var(--sp-4); color: var(--c-ink); font-size: var(--fs-sm); }
.hby-nudges li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 6px; height: 6px; border-radius: var(--r-full); background: var(--c-accent-ink); }

/* Hobby list */
.hby-list { display: flex; flex-direction: column; gap: var(--sp-2); margin-top: var(--sp-4); }
.hby-row { display: flex; align-items: flex-start; gap: var(--sp-4); padding: var(--sp-4) 0; border-bottom: 1px solid var(--c-border); }
.hby-row:last-child { border-bottom: 0; }
.hby-row__icon { flex: 0 0 auto; display: grid; place-items: center; width: 2.5rem; height: 2.5rem; border-radius: var(--r-md); background: var(--c-surface-2); color: var(--c-ink); }
.hby-row__icon svg { width: 1.35rem; height: 1.35rem; }
.hby-row__main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: var(--sp-2); }
.hby-row__line { display: flex; align-items: center; gap: var(--sp-3); flex-wrap: wrap; }
.hby-row__name { font-size: var(--fs-lg); font-weight: var(--fw-semibold); }
.hby-row__meta { display: flex; gap: var(--sp-3); flex-wrap: wrap; font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }
.hby-row__hours { font-weight: var(--fw-semibold); color: var(--c-ink); }
.hby-row__range::before { content: "· "; color: var(--c-ink-faint); }
.hby-row__note { font-size: var(--fs-sm); color: var(--c-ink-soft); }
.hby-bar { height: 0.4rem; background: var(--c-surface-2); border-radius: var(--r-full); overflow: hidden; max-width: 22rem; }
.hby-bar__fill { height: 100%; background: var(--c-accent-ink); }
.hby-row__actions { flex: 0 0 auto; display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; justify-content: flex-end; }
.hby-quick { font-variant-numeric: tabular-nums; }
/* Mobile: drop the action buttons onto their own full-width row, left-aligned,
   so four buttons never squeeze the hobby name or push past the screen. */
@media (max-width: 560px) {
  .hby-row { flex-wrap: wrap; }
  .hby-row__actions { flex-basis: 100%; justify-content: flex-start; }
}
.hby-track svg { width: 0.9rem; height: 0.9rem; }
.hby-icon-btn { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: var(--r-sm); color: var(--c-ink-faint); }
.hby-icon-btn:hover { color: var(--c-ink); background: var(--c-surface-2); }
.hby-icon-btn svg { width: 1rem; height: 1rem; }
.hby-empty { margin-top: var(--sp-4); color: var(--c-ink-faint); font-size: var(--fs-sm); }

/* Status pill — meaning carried by the WORD + ICON + border STYLE, never hue. */
.hby-pill { display: inline-flex; align-items: center; gap: var(--sp-1); padding: 2px var(--sp-2); border-radius: var(--r-sm); font-size: var(--fs-xs); font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: var(--tracking-label); border: 1px solid var(--c-border-strong); color: var(--c-ink-soft); white-space: nowrap; }
.hby-pill svg { width: 0.85rem; height: 0.85rem; }
.hby-pill--in { border-style: solid; color: var(--c-ink); }
.hby-pill--under { border-style: dashed; color: var(--c-ink); }
.hby-pill--over { border-style: dotted; border-width: 2px; color: var(--c-ink); font-weight: var(--fw-bold); }
.hby-pill--none { border-style: dashed; color: var(--c-ink-faint); }

/* Untracked */
.hby-untracked { display: flex; flex-direction: column; gap: var(--sp-1); margin-top: var(--sp-4); }
.hby-untracked__row { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--c-border); }
.hby-untracked__row:last-child { border-bottom: 0; }
.hby-untracked__name { flex: 1 1 auto; font-weight: var(--fw-medium); text-transform: capitalize; }
.hby-untracked__hrs { flex: 0 0 auto; font-size: var(--fs-sm); color: var(--c-ink-soft); font-variant-numeric: tabular-nums; }

/* Modal (reuses .pw-scrim, .todo-seg, .field, .form-grid2) */
.hby-modal { position: fixed; inset: auto; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 60; width: min(30rem, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow: auto; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-lg); box-shadow: var(--shadow-md); }
.hby-modal__head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3); padding: var(--sp-5); border-bottom: 1px solid var(--c-border); }
.hby-modal__head h2 { font-size: var(--fs-lg); }
.hby-modal__x { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: var(--r-sm); color: var(--c-ink-faint); }
.hby-modal__x:hover { color: var(--c-ink); background: var(--c-surface-2); }
.hby-form { padding: var(--sp-5); display: flex; flex-direction: column; gap: var(--sp-4); }
.hby-form__hint { margin-top: var(--sp-2); font-size: var(--fs-sm); color: var(--c-ink-soft); }
.hby-form__actions { display: flex; align-items: center; gap: var(--sp-2); margin-top: var(--sp-2); }
.hby-iconchips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
.hby-iconchip { display: grid; place-items: center; width: 2.4rem; height: 2.4rem; border-radius: var(--r-md); border: 1px solid var(--c-border-strong); background: var(--c-surface); color: var(--c-ink-soft); }
.hby-iconchip svg { width: 1.25rem; height: 1.25rem; }
.hby-iconchip:hover { color: var(--c-ink); }
.hby-iconchip.is-on { border-color: var(--c-accent-ink); border-width: 2px; color: var(--c-accent-ink); background: var(--c-surface-2); }
