/* ── Reset & Base ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
.hidden { display: none !important; }

:root {
  --bg: #111114;
  --bg2: #18181c;
  --bg3: #222228;
  --card: #1a1a1f;
  --border: #303038;
  --accent: #ff8c42;
  --accent2: #ffd166;
  --danger: #ff6b6b;
  --warn: #ffd700;
  --text: #e8e8e8;
  --muted: #606070;
  --success: #ffd166;
  --nav-h: 64px;
  --header-h: 56px;
  --radius: 14px;
  --radius-sm: 8px;
}

html, body { height: 100%; background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; font-size: 15px; line-height: 1.5; }

/* ── Header ── */
#app-header {
  position: fixed; top: 0; left: 0; right: 0; height: var(--header-h);
  background: linear-gradient(180deg, #1a1a1f 0%, #111114 100%);
  border-bottom: 1px solid var(--border);
  z-index: 100; display: flex; align-items: center;
  padding: 0 1rem; padding-top: env(safe-area-inset-top);
}
.header-inner { display: flex; align-items: baseline; gap: .5rem; }
#app-header h1 { font-size: 1.25rem; font-weight: 700; color: var(--accent); letter-spacing: -.5px; }
.header-sub { font-size: .75rem; color: var(--muted); }

/* ── Content ── */
.content {
  padding: calc(var(--header-h) + 1rem) 1rem calc(var(--nav-h) + 1.5rem + env(safe-area-inset-bottom));
  max-width: 640px; margin: 0 auto;
  min-height: 100vh;
}

/* ── Bottom Nav ── */
.bottom-nav {
  position: fixed; bottom: 0; left: 0; right: 0;
  height: calc(var(--nav-h) + env(safe-area-inset-bottom));
  background: #1a1a1f; border-top: 1px solid var(--border);
  display: flex; align-items: flex-start; justify-content: space-around;
  padding-top: .25rem; padding-bottom: env(safe-area-inset-bottom);
  z-index: 100;
}
.nav-btn {
  flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px; background: none; border: none; cursor: pointer;
  color: var(--muted); padding: .4rem .25rem; border-radius: var(--radius-sm);
  transition: color .15s;
}
.nav-btn.active { color: var(--accent); }
.nav-icon { font-size: 1.3rem; line-height: 1; }
.nav-label { font-size: .65rem; font-weight: 600; letter-spacing: .3px; }

/* ── Cards ── */
.card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: 1rem; margin-bottom: 1rem;
}
.card-label {
  font-size: .7rem; font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase; color: var(--muted); margin-bottom: .6rem;
}

/* ── Section Header ── */
.section-header { margin-bottom: 1rem; }
.section-header h2 { font-size: 1.3rem; font-weight: 700; }
.section-header .muted { font-size: .85rem; margin-top: .1rem; }

/* ── Muted / Success ── */
.muted { color: var(--muted); }
.success { color: var(--success); }

/* ── Buttons ── */
.btn-primary {
  background: var(--accent); color: #fff; border: none; border-radius: var(--radius-sm);
  padding: .65rem 1.25rem; font-size: .9rem; font-weight: 600; cursor: pointer;
  transition: opacity .15s; width: 100%;
}
.btn-primary:hover { opacity: .85; }
.btn-secondary {
  background: var(--bg3); color: var(--text); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: .55rem 1rem; font-size: .85rem;
  cursor: pointer; transition: background .15s; width: 100%;
}
.btn-secondary:hover { background: var(--border); }
.btn-sm { width: auto; padding: .4rem .85rem; font-size: .8rem; }
.btn-icon {
  background: none; border: none; cursor: pointer; color: var(--muted);
  padding: .25rem .4rem; border-radius: 4px; font-size: .9rem; line-height: 1;
  transition: color .15s;
}
.btn-icon:hover { color: var(--danger); }
.btn-add-set {
  background: none; border: 1px dashed var(--border); color: var(--muted);
  padding: .3rem .75rem; border-radius: var(--radius-sm); cursor: pointer;
  font-size: .8rem; margin-top: .4rem; width: 100%;
  transition: border-color .15s, color .15s;
}
.btn-add-set:hover { border-color: var(--accent); color: var(--accent); }

/* ── Inputs ── */
.input-field {
  width: 100%; background: var(--bg3); border: 1px solid var(--border);
  color: var(--text); border-radius: var(--radius-sm); padding: .6rem .75rem;
  font-size: .9rem; outline: none; transition: border-color .15s;
}
.input-field:focus { border-color: var(--accent); }
.input-field::placeholder { color: var(--muted); }

select.input-field { appearance: none; cursor: pointer; }

/* ── Form grid ── */
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.form-group { display: flex; flex-direction: column; gap: .3rem; }
.form-group label { font-size: .78rem; color: var(--muted); font-weight: 500; }
.form-group.full-width { grid-column: 1 / -1; }

/* ── Badges ── */
.badge {
  display: inline-block; font-size: .7rem; font-weight: 600; padding: .15rem .45rem;
  border-radius: 20px; white-space: nowrap;
}
.badge.info    { background: #ff8c4222; color: #ffb07a; border: 1px solid #ff8c4244; }
.badge.warning { background: #ffd70022; color: #ffd700; border: 1px solid #ffd70044; }
.badge.danger  { background: #ff6b6b22; color: #ff6b6b; border: 1px solid #ff6b6b44; }
.badge.success { background: #22c55e22; color: #4ade80; border: 1px solid #22c55e44; }

/* ── Programme switcher ── */
.programme-switcher .label { font-size: .78rem; color: var(--muted); margin-bottom: .5rem; display: block; }
.toggle-group { display: flex; gap: .5rem; }
.toggle-btn {
  flex: 1; padding: .6rem; border: 1px solid var(--border);
  background: var(--bg3); color: var(--muted); border-radius: var(--radius-sm);
  cursor: pointer; text-align: center; font-size: .82rem; line-height: 1.3;
  transition: all .15s;
}
.toggle-btn small { font-size: .7rem; display: block; }
.toggle-btn.active { border-color: var(--accent); color: var(--accent); background: #ff8c4215; }

/* ── Session card ── */
.session-card h3 { font-size: 1rem; font-weight: 600; margin-bottom: .6rem; }
.session-card.rest-day { border-color: #30303888; opacity: .7; }
.exercise-list { list-style: none; display: flex; flex-direction: column; gap: .25rem; }
.exercise-list li { padding: .25rem 0; border-bottom: 1px solid var(--border); font-size: .88rem; }
.exercise-list li:last-child { border-bottom: none; }

.pre-training-note { margin-top: .75rem; background: #ffd70008; border: 1px solid #ffd70033; border-radius: var(--radius-sm); padding: .6rem .75rem; }
.note-item { font-size: .8rem; color: var(--muted); margin-top: .2rem; }

/* ── Mobility card ── */
.mobility-card h3 { font-size: .95rem; font-weight: 600; }

/* ── Checklist ── */
.checklist { display: flex; flex-direction: column; gap: .4rem; }
.check-item {
  display: flex; align-items: center; gap: .6rem; padding: .5rem .6rem;
  border-radius: var(--radius-sm); cursor: pointer; transition: background .15s;
}
.check-item:hover { background: var(--bg3); }
.check-item.done { opacity: .5; }
.check-item.done span { text-decoration: line-through; }
.check-item input[type=checkbox] { width: 1.1rem; height: 1.1rem; accent-color: var(--accent); cursor: pointer; }

/* ── Routine list ── */
.routine-list { list-style: none; display: flex; flex-direction: column; gap: .3rem; }
.routine-list li { font-size: .87rem; padding: .25rem 0; border-bottom: 1px solid var(--border); }
.routine-list li:last-child { border-bottom: none; }

/* ── Supplement list ── */
.supp-list { list-style: none; display: flex; flex-direction: column; gap: .4rem; }
.supp-list li { display: flex; justify-content: space-between; align-items: center; font-size: .85rem; padding: .2rem 0; }

/* ── Workout ── */
.search-wrap { position: relative; margin-bottom: .75rem; }
.dropdown {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0;
  background: var(--bg2); border: 1px solid var(--border);
  border-radius: var(--radius-sm); z-index: 50; max-height: 240px; overflow-y: auto;
}
.dropdown.hidden { display: none; }
.dropdown-item { padding: .6rem .75rem; cursor: pointer; font-size: .88rem; transition: background .1s; }
.dropdown-item:hover { background: var(--bg3); }

.session-ex { background: var(--bg3); border-radius: var(--radius-sm); padding: .75rem; margin-bottom: .6rem; }
.session-ex-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .5rem; }
.sets-list { display: flex; flex-direction: column; gap: .35rem; }
.set-row { display: flex; align-items: center; gap: .35rem; }
.set-num { font-size: .75rem; color: var(--muted); min-width: 2.5rem; }
.set-sep { color: var(--muted); }
.set-input { background: var(--bg2); border: 1px solid var(--border); color: var(--text); border-radius: 6px; padding: .35rem .5rem; font-size: .85rem; outline: none; }
.set-input.weight-in { width: 4.5rem; }
.set-input.reps-in { width: 4rem; }
.set-input.note-in { flex: 1; min-width: 2rem; }
.set-input:focus { border-color: var(--accent); }
.btn-prev-copy { background: var(--bg2); border: 1px solid var(--border); color: var(--muted); border-radius: 5px; padding: .2rem .45rem; font-size: .72rem; cursor: pointer; white-space: nowrap; flex-shrink: 0; transition: border-color .15s, color .15s; }
.btn-prev-copy:hover { border-color: var(--accent); color: var(--accent); }
.prev-dash { color: var(--muted); font-size: .72rem; min-width: 1.5rem; text-align: center; flex-shrink: 0; }
.prev-ex-label { font-size: .7rem; color: var(--muted); margin-left: .25rem; }

.workout-card { background: var(--bg3); border-radius: var(--radius-sm); padding: .75rem; margin-bottom: .6rem; }
.workout-card-header { display: flex; align-items: center; gap: .5rem; margin-bottom: .4rem; flex-wrap: wrap; }
.workout-date { font-size: .85rem; font-weight: 600; }
.ex-summary { display: flex; justify-content: space-between; font-size: .83rem; padding: .15rem 0; }
.workout-exercises { display: flex; flex-direction: column; gap: .1rem; }

/* ── Skill grid ── */
.skill-grid { display: flex; flex-direction: column; gap: .6rem; }
.skill-item { background: var(--bg3); border-radius: var(--radius-sm); padding: .6rem .75rem; }
.skill-name { font-weight: 600; font-size: .88rem; margin-bottom: .3rem; color: var(--accent); }
.skill-steps { display: flex; flex-direction: column; gap: .1rem; }
.skill-step { font-size: .8rem; color: var(--muted); }

/* ── Running ── */
.run-preview { background: var(--bg3); border-radius: var(--radius-sm); padding: .6rem; margin: .5rem 0; }
.run-preview.hidden { display: none; }
.preview-row { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .88rem; color: var(--accent2); }
.run-card { background: var(--bg3); border-radius: var(--radius-sm); padding: .75rem; margin-bottom: .6rem; }
.run-card-header { display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem; flex-wrap: wrap; }
.run-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: .4rem; }
.run-stat { text-align: center; background: var(--bg2); border-radius: 6px; padding: .4rem; }
.run-stat-val { font-size: .95rem; font-weight: 700; display: block; color: var(--text); }
.run-stat-lbl { font-size: .65rem; color: var(--muted); }
.run-notes { font-size: .82rem; margin-top: .4rem; }

.target-list, .target-row { display: flex; flex-direction: column; gap: .5rem; }
.target-row { flex-direction: row; justify-content: space-between; align-items: center; font-size: .87rem; border-bottom: 1px solid var(--border); padding-bottom: .4rem; }

/* ── Stats row ── */
.stats-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; margin-bottom: 1rem; }
.stat-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .75rem .5rem; text-align: center; }
.stat-val { font-size: 1.4rem; font-weight: 700; line-height: 1; }
.stat-unit { font-size: .7rem; color: var(--muted); font-weight: 400; }
.stat-label { font-size: .65rem; color: var(--muted); margin-top: .2rem; }
.stat-delta { font-size: .75rem; font-weight: 600; margin-top: .15rem; }
.stat-delta.pos { color: var(--accent2); }
.stat-delta.neg { color: var(--danger); }

/* ── Body Scan ── */
.scan-grid { display: flex; flex-direction: column; gap: .3rem; }
.scan-row { display: flex; justify-content: space-between; align-items: center; padding: .25rem 0; border-bottom: 1px solid var(--border); font-size: .87rem; }
.scan-row:last-child { border-bottom: none; }
.scan-label { color: var(--muted); }
.scan-val { font-weight: 600; display: flex; align-items: center; gap: .35rem; }
.delta { font-size: .75rem; font-weight: 700; padding: .1rem .3rem; border-radius: 4px; }
.delta.pos { color: var(--accent2); background: #ffd16615; }
.delta.neg { color: var(--danger); background: #ff6b6b15; }
.delta.zero { color: var(--muted); }

.scan-hist-card { background: var(--bg3); border-radius: var(--radius-sm); padding: .65rem .75rem; margin-bottom: .5rem; }
.scan-hist-header { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.scan-hist-badges { display: flex; gap: .3rem; flex-wrap: wrap; flex: 1; }

/* ── Targets ── */
.targets-list { display: flex; flex-direction: column; gap: .8rem; }
.target-item { }
.target-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: .3rem; flex-wrap: wrap; gap: .25rem; }
.target-label { font-weight: 600; font-size: .88rem; }
.target-values { display: flex; gap: .5rem; align-items: center; font-size: .77rem; flex-wrap: wrap; }
.current { color: var(--text); font-weight: 700; }
.elite-tag { color: var(--warn); font-weight: 600; }
.target-progress { display: flex; align-items: center; gap: .5rem; }
.progress-bar-wrap { flex: 1; height: 6px; background: var(--bg3); border-radius: 999px; overflow: hidden; }
.progress-bar { height: 100%; border-radius: 999px; transition: width .4s; background: linear-gradient(90deg, var(--accent), var(--accent2)); }
.progress-bar.complete { background: var(--warn); }
.progress-bar.halfway { background: linear-gradient(90deg, var(--accent), var(--accent2)); }
.progress-bar.early { background: var(--accent); }
.progress-pct { font-size: .75rem; color: var(--muted); min-width: 2.5rem; text-align: right; }

/* ── Progress / Charts ── */
.chart-tabs { display: flex; gap: .35rem; flex-wrap: wrap; margin-bottom: .75rem; }
.chart-tab {
  background: var(--bg3); border: 1px solid var(--border); color: var(--muted);
  padding: .3rem .65rem; border-radius: 20px; font-size: .78rem; cursor: pointer; transition: all .15s;
}
.chart-tab.active { background: #ff8c4222; border-color: var(--accent); color: var(--accent); }
.chart-wrap { position: relative; max-height: 260px; }
.chart-wrap canvas { max-height: 260px; }

/* ── Reminders ── */
.notif-prompt { background: #ff8c420a; border-color: #ff8c4233; }
.notif-ok { background: #ffd1660a; border-color: #ffd16633; }
.reminder-item { display: flex; justify-content: space-between; align-items: center; padding: .6rem 0; border-bottom: 1px solid var(--border); }
.reminder-item:last-child { border-bottom: none; }
.reminder-item.disabled { opacity: .45; }
.reminder-info { flex: 1; }
.reminder-info strong { font-size: .9rem; display: block; margin-bottom: .2rem; }
.reminder-meta { display: flex; gap: .4rem; align-items: center; font-size: .78rem; }
.reminder-actions { display: flex; align-items: center; gap: .5rem; }
.day-picker { display: flex; gap: .3rem; flex-wrap: wrap; }
.day-btn { background: var(--bg3); border: 1px solid var(--border); color: var(--muted); padding: .3rem .5rem; border-radius: 6px; cursor: pointer; font-size: .8rem; transition: all .15s; }
.day-btn.active { border-color: var(--accent); color: var(--accent); background: #ff8c4215; }

/* Toggle switch */
.toggle { position: relative; width: 36px; height: 20px; }
.toggle input { opacity: 0; width: 0; height: 0; }
.toggle-slider { position: absolute; inset: 0; background: var(--border); border-radius: 999px; transition: .2s; cursor: pointer; }
.toggle-slider::before { content: ''; position: absolute; width: 14px; height: 14px; left: 3px; bottom: 3px; background: #fff; border-radius: 50%; transition: .2s; }
input:checked + .toggle-slider { background: var(--accent); }
input:checked + .toggle-slider::before { transform: translateX(16px); }

.schedule-item { display: flex; align-items: center; gap: .75rem; padding: .4rem 0; border-bottom: 1px solid var(--border); font-size: .87rem; }
.schedule-item:last-child { border-bottom: none; }
.schedule-time { font-weight: 700; color: var(--accent); min-width: 3rem; }

/* ── Date row ── */
.date-row { margin-bottom: .75rem; }

/* ── Loading ── */
.loading { text-align: center; padding: 3rem 1rem; color: var(--muted); }

/* ── Toast ── */
.toast {
  position: fixed; bottom: calc(var(--nav-h) + 1rem); left: 50%; transform: translateX(-50%) translateY(1rem);
  background: var(--bg2); color: var(--text); border: 1px solid var(--border);
  padding: .6rem 1.25rem; border-radius: 999px; font-size: .87rem;
  opacity: 0; transition: all .25s; z-index: 200; white-space: nowrap;
}
.toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ── Scrollbar ── */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 999px; }

/* ── Today — actual vs recommended ── */
.card-header-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: .4rem; }

.ex-log-hint { font-size: .78rem; color: var(--muted); margin-bottom: .6rem; background: var(--bg3); padding: .4rem .6rem; border-radius: var(--radius-sm); }

.ex-log-row {
  border-bottom: 1px solid var(--border);
  padding: .5rem 0;
}
.ex-log-row:last-child { border-bottom: none; }

.ex-log-header {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
}
.ex-log-info { display: flex; align-items: center; gap: .4rem; flex: 1; min-width: 0; }
.plan-tag {
  flex-shrink: 0; font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .5px;
  color: var(--muted); background: var(--bg3); border: 1px solid var(--border);
  padding: .1rem .3rem; border-radius: 4px;
}
.ex-log-name { font-size: .88rem; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.plan-target { font-size: .72rem; color: var(--muted); background: var(--bg3); border: 1px solid var(--border); padding: .1rem .3rem; border-radius: 4px; flex-shrink: 0; font-variant-numeric: tabular-nums; }
.plan-target-bar { font-size: .78rem; color: var(--muted); padding: .2rem .5rem .1rem; border-top: 1px solid var(--border); margin: 0 -.75rem; padding-left: .75rem; }
.ex-log-status { display: flex; align-items: center; gap: .35rem; flex-shrink: 0; }

.toggle-ex-log {
  background: none; border: 1px solid var(--border); color: var(--muted);
  padding: .2rem .55rem; border-radius: 999px; cursor: pointer; font-size: .75rem;
  white-space: nowrap; transition: all .15s;
}
.toggle-ex-log:hover { border-color: var(--accent); color: var(--accent); }

.ex-log-body { padding: .5rem 0 .25rem 0; }
.ex-log-body.hidden { display: none; }

.actual-log-area { background: var(--bg3); border-radius: var(--radius-sm); padding: .65rem .75rem; }
.actual-vs-label { display: flex; align-items: center; gap: .4rem; margin-bottom: .4rem; }
.actual-tag {
  font-size: .62rem; font-weight: 700; text-transform: uppercase; letter-spacing: .5px;
  color: var(--accent2); background: #ffd16615; border: 1px solid #ffd16633;
  padding: .1rem .3rem; border-radius: 4px;
}

.actual-sets-list { display: flex; flex-direction: column; gap: .35rem; }
.actual-set-row { display: flex; align-items: center; gap: .3rem; }
.actual-set-row .set-num { font-size: .72rem; color: var(--muted); min-width: 2.8rem; flex-shrink: 0; }
.actual-set-row .weight-in { width: 4.5rem; }
.actual-set-row .reps-in { width: 4rem; }
.actual-set-row .note-in { flex: 1; }

/* ── Edit mode banner ── */
.editing-banner {
  display: flex; align-items: center; gap: .5rem; flex-wrap: wrap;
  background: #ffd70010; border: 1px solid #ffd70033; color: var(--warn);
  font-size: .82rem; font-weight: 500; padding: .5rem .75rem;
  border-radius: var(--radius-sm); margin-bottom: .75rem;
}
.btn-cancel {
  background: none; border: 1px solid #ffd70055; color: var(--warn);
  padding: .2rem .6rem; border-radius: 999px; cursor: pointer; font-size: .78rem;
  margin-left: auto; transition: all .15s;
}
.btn-cancel:hover { background: #ffd70015; }

/* ── Workout — exercise notes field ── */
.session-ex input[type="text"].input-field { margin-top: .25rem; }

/* ── Settings tab ─────────────────────────────────────────────────── */
.settings-section { padding: 0; overflow: hidden; }
.settings-section-header {
  display: flex; justify-content: space-between; align-items: center;
  padding: .85rem 1rem; cursor: pointer; user-select: none;
  transition: background .15s;
}
.settings-section-header:hover { background: var(--bg3); }
.settings-section-title { font-size: .95rem; font-weight: 600; }
.settings-section-arrow { color: var(--muted); font-size: .75rem; }
.settings-section-body { padding: 0 1rem 1rem; }
.settings-section-body.hidden { display: none; }

/* Edit lists (checklist, routine, supplements, programme) */
.edit-list { display: flex; flex-direction: column; gap: .35rem; margin-bottom: .5rem; }
.edit-list-item {
  display: flex; align-items: center; gap: .35rem;
  background: var(--bg3); border-radius: var(--radius-sm); padding: .4rem .5rem;
}
.drag-handle { color: var(--muted); cursor: grab; font-size: 1rem; flex-shrink: 0; }
.add-item-row { display: flex; align-items: center; gap: .35rem; }

/* Supplement editor rows */
.supp-edit-item { flex-direction: column; gap: .3rem; align-items: stretch; }
.supp-edit-main { display: flex; flex-direction: column; gap: .25rem; }
.supp-edit-meta { display: flex; align-items: center; gap: .4rem; flex-wrap: wrap; }
.meta-label { font-size: .72rem; color: var(--muted); }

/* Programme editor */
.prog-upload-meta {
  background: var(--bg3); border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: .55rem .7rem; display: flex; flex-direction: column; gap: .15rem;
}
.prog-upload-title { font-size: .88rem; font-weight: 600; }

/* PDF review card */
.pdf-review-card {
  background: var(--bg3); border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: .75rem; margin-bottom: .75rem;
}
.pdf-review-header { margin-bottom: .65rem; display: flex; flex-direction: column; gap: .2rem; }
.pdf-day-section { margin-bottom: .6rem; }
.pdf-day-name { font-size: .8rem; font-weight: 700; color: var(--accent); text-transform: uppercase; letter-spacing: .5px; margin-bottom: .25rem; }
.pdf-ex-row { display: flex; align-items: center; gap: .4rem; padding: .2rem 0; border-bottom: 1px solid var(--border); }
.pdf-ex-row:last-child { border-bottom: none; }
.pdf-ex-name { flex: 1; font-size: .85rem; }

.prog-day-block {
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: .65rem .75rem; margin-bottom: .6rem;
}
.prog-day-name { font-weight: 700; font-size: .85rem; color: var(--accent); margin-bottom: .35rem; }
.prog-ex-name { font-size: .85rem; }

/* Targets editor */
.targets-edit-table { display: flex; flex-direction: column; gap: .3rem; }
.targets-edit-header {
  display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr;
  font-size: .7rem; text-transform: uppercase; letter-spacing: .5px; color: var(--muted);
  padding: 0 .25rem;
}
.targets-edit-row {
  display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: .3rem;
  align-items: center; background: var(--bg3); border-radius: var(--radius-sm); padding: .35rem .5rem;
}
.targets-edit-label { font-size: .83rem; }
.targets-edit-row .set-input { width: 100%; text-align: center; }

/* Blood work */
.blood-markers-grid { display: flex; flex-direction: column; gap: .4rem; margin-top: .5rem; }
.blood-marker-row { display: flex; flex-direction: column; gap: .15rem; }
.blood-marker-label { font-size: .78rem; color: var(--muted); }
.blood-input-wrap { display: flex; align-items: center; gap: .4rem; }
.blood-input-wrap .input-field { flex: 1; }
.blood-unit { font-size: .75rem; min-width: 3rem; }
.blood-ref { font-size: .72rem; color: var(--muted); min-width: 4rem; text-align: right; }

.blood-results-list { display: flex; flex-direction: column; gap: .3rem; }
.blood-result-row {
  display: flex; align-items: center; gap: .5rem;
  padding: .3rem 0; border-bottom: 1px solid var(--border); font-size: .85rem;
}
.blood-result-row:last-child { border-bottom: none; }
.blood-result-label { flex: 1; }
.blood-result-val { font-weight: 700; min-width: 5rem; text-align: right; }
.blood-result-ref { font-size: .75rem; min-width: 4rem; text-align: right; }
.blood-ok   { color: var(--accent2); }
.blood-high { color: var(--danger); }
.blood-low  { color: var(--warn); }

.blood-history-list { display: flex; flex-direction: column; gap: .3rem; }
.blood-hist-row {
  display: flex; align-items: center; gap: .5rem; padding: .35rem 0;
  border-bottom: 1px solid var(--border); font-size: .83rem;
}
.blood-hist-row:last-child { border-bottom: none; }
.blood-hist-row span:first-child { font-weight: 600; }

/* Danger button */
.btn-danger {
  background: #ff6b6b22; color: var(--danger); border: 1px solid #ff6b6b44;
  border-radius: var(--radius-sm); padding: .6rem 1rem; font-size: .9rem;
  font-weight: 600; cursor: pointer; width: 100%; transition: background .15s;
}
.btn-danger:hover { background: #ff6b6b33; }

/* ── Compact nav for 7 tabs ── */
.nav-label { font-size: .6rem; }
.nav-icon  { font-size: 1.2rem; }

/* ── Onboarding ── */
.ob-overlay {
  position: fixed; inset: 0; z-index: 999;
  background: var(--bg);
  display: flex; align-items: center; justify-content: center;
  padding: 1rem; overflow-y: auto;
  animation: ob-in .3s ease;
}
.ob-overlay.ob-exit { animation: ob-out .35s ease forwards; }
.ob-card {
  width: 100%; max-width: 480px;
  padding: 2rem 1.5rem 2.5rem;
}
.ob-logo { font-size: 2.8rem; text-align: center; margin-bottom: .4rem; }
.ob-title { font-size: 1.6rem; font-weight: 800; text-align: center; color: var(--accent); margin-bottom: .35rem; }
.ob-sub { text-align: center; color: var(--muted); font-size: .88rem; line-height: 1.5; margin-bottom: 1.75rem; }
.ob-form { display: flex; flex-direction: column; gap: .85rem; }
.ob-goal-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .4rem; }
.ob-goal-btn {
  background: var(--bg3); border: 1px solid var(--border); color: var(--text);
  border-radius: var(--radius-sm); padding: .6rem .5rem; font-size: .85rem;
  cursor: pointer; transition: border-color .15s, background .15s;
}
.ob-goal-btn:hover { border-color: var(--accent); }
.ob-goal-btn.active { border-color: var(--accent); background: #ff8c4218; color: var(--accent); font-weight: 600; }
.ob-hint { font-size: .75rem; color: var(--muted); margin-top: .25rem; }
.ob-divider { text-align: center; color: var(--muted); font-size: .8rem; margin: .5rem 0; position: relative; }
.ob-divider::before, .ob-divider::after { content: ''; position: absolute; top: 50%; width: 42%; height: 1px; background: var(--border); }
.ob-divider::before { left: 0; } .ob-divider::after { right: 0; }
.ob-error { color: var(--danger); font-size: .85rem; padding: .4rem 0; }
.ob-submit { width: 100%; padding: .8rem; font-size: 1rem; margin-top: .25rem; }

@keyframes ob-in  { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes ob-out { to   { opacity: 0; transform: translateY(-12px); } }

/* ── Session Control Card ── */
.session-control-card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius); padding: .85rem 1rem; margin-bottom: 1rem;
}
.control-row {
  display: flex; align-items: center; gap: .5rem; margin-bottom: .5rem;
}
.control-row:last-of-type { margin-bottom: 0; }
.control-label {
  font-size: .72rem; color: var(--muted); min-width: 4.5rem;
  text-transform: uppercase; letter-spacing: .04em;
}
.toggle-group.compact { gap: .2rem; }
.toggle-group.compact .toggle-btn {
  padding: .28rem .55rem; font-size: .75rem; border-radius: 6px;
}
.day-selector { display: flex; gap: .2rem; flex-wrap: wrap; }
.day-sel-btn {
  background: transparent; border: 1px solid var(--border); color: var(--muted);
  border-radius: 6px; padding: .28rem .5rem; font-size: .75rem; cursor: pointer;
  transition: border-color .15s, color .15s, background .15s;
  min-width: 2.1rem; text-align: center;
}
.day-sel-btn:hover { border-color: var(--accent); color: var(--accent); }
.day-sel-btn.active { border-color: var(--accent); color: var(--accent); background: #ff8c4218; font-weight: 600; }
.day-sel-btn.today { border-style: dashed; }
.day-sel-btn.active.today { border-style: solid; }
.week-context-bar {
  margin-top: .65rem; padding-top: .55rem; border-top: 1px solid var(--border);
  font-size: .78rem; color: var(--muted); display: flex; align-items: center; gap: .4rem; flex-wrap: wrap;
}
.week-badge {
  background: #ff8c4222; border: 1px solid #ff8c4244; color: var(--accent);
  border-radius: 5px; padding: .1rem .45rem; font-size: .72rem; font-weight: 600;
}

/* ── Responsive ── */
@media (max-width: 400px) {
  .stats-row { grid-template-columns: repeat(2, 1fr); }
  .form-grid { grid-template-columns: 1fr; }
  .run-stats { grid-template-columns: repeat(2, 1fr); }
  .actual-set-row .note-in { display: none; }
  .targets-edit-header, .targets-edit-row { grid-template-columns: 1.4fr repeat(3, 1fr); }
}

/* ── Block-based Session UI ── */
.card-header-row {
  display: flex; justify-content: space-between; align-items: flex-start; gap: .5rem;
  margin-bottom: .6rem;
}
.session-status-col { display: flex; flex-direction: column; align-items: flex-end; gap: .4rem; }
.session-focus { font-size: .78rem; color: var(--muted); margin-top: .15rem; }

.session-progress { display: flex; align-items: center; gap: .4rem; }
.prog-bar-track { width: 80px; height: 5px; background: var(--border); border-radius: 3px; overflow: hidden; }
.prog-bar-fill  { height: 100%; background: var(--accent2); border-radius: 3px; transition: width .3s; }
.prog-pct { font-size: .7rem; color: var(--accent2); font-weight: 700; min-width: 2.2rem; text-align: right; }

.pre-training-nudge {
  font-size: .78rem; color: var(--muted); margin-bottom: .75rem;
  display: flex; flex-wrap: wrap; gap: .3rem; align-items: center;
}
.pre-item { color: var(--text); }

.session-block {
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: .7rem .8rem; margin-bottom: .6rem; background: var(--bg2);
}

.block-type-tag {
  display: inline-block; font-size: .65rem; font-weight: 700; letter-spacing: .06em;
  text-transform: uppercase; border-radius: 4px; padding: .1rem .45rem; margin-bottom: .45rem;
}
.type-warmup   { background: #ffd16618; color: var(--accent2); border: 1px solid #ffd16633; }
.type-skill    { background: #ff8c4218; color: var(--accent);  border: 1px solid #ff8c4244; }
.type-strength { background: #ff6b6b18; color: var(--danger);  border: 1px solid #ff6b6b33; }
.type-core     { background: #ffd70018; color: var(--warn);    border: 1px solid #ffd70033; }
.type-cardio   { background: #00aaff18; color: #60c8ff;        border: 1px solid #00aaff33; }
.type-circuit  { background: #ff9a0018; color: #ffb84d;        border: 1px solid #ff9a0033; }
.type-mobility { background: #ffd16610; color: var(--muted);   border: 1px solid var(--border); }

.block-header-row { display: flex; align-items: flex-start; gap: .5rem; flex-wrap: wrap; margin-bottom: .4rem; }
.block-note { font-size: .75rem; color: var(--muted); align-self: center; }
.type-note { font-size: .7rem; color: var(--muted); font-weight: 400; }

/* Warm-up */
.warmup-list { list-style: none; padding: 0; margin-bottom: .6rem; }
.warmup-list li { font-size: .85rem; color: var(--text); padding: .18rem 0; display: flex; gap: .4rem; align-items: flex-start; }
.warmup-list li::before { content: '·'; color: var(--accent2); flex-shrink: 0; }
.warmup-done-btn {
  width: 100%; padding: .5rem; border: 1px solid var(--border); background: transparent;
  color: var(--muted); border-radius: var(--radius-sm); cursor: pointer; font-size: .85rem;
  transition: all .15s;
}
.warmup-done-btn.is-done { background: #ffd16618; border-color: var(--accent2); color: var(--accent2); font-weight: 600; }

/* Skill block */
.skill-exercise { padding: .45rem 0; border-bottom: 1px solid var(--border); }
.skill-exercise:last-child { border-bottom: none; }
.skill-ex-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: .35rem; gap: .4rem; }
.skill-ex-name { font-size: .88rem; font-weight: 600; }
.skill-ex-target { font-size: .75rem; color: var(--accent); white-space: nowrap; text-align: right; }
.skill-ex-inputs { display: flex; gap: .75rem; align-items: flex-end; flex-wrap: wrap; }
.skill-field { display: flex; flex-direction: column; gap: .2rem; }
.skill-lbl { font-size: .68rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.set-counter { display: flex; align-items: center; gap: .3rem; }
.sc-btn {
  width: 28px; height: 28px; border: 1px solid var(--border); background: var(--bg3);
  color: var(--text); border-radius: 6px; cursor: pointer; font-size: 1rem; line-height: 1;
  display: flex; align-items: center; justify-content: center; transition: border-color .1s;
}
.sc-btn:active { border-color: var(--accent); }
.sc-val { font-size: 1.05rem; font-weight: 700; min-width: 1.4rem; text-align: center; }
.sc-of { font-size: .78rem; color: var(--muted); }
.skill-hold-in { width: 7rem; height: 30px; font-size: .85rem; }

/* Strength block */
.str-exercise { padding: .4rem 0; border-bottom: 1px solid var(--border); }
.str-exercise:last-child { border-bottom: none; }
.str-ex-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .2rem; }
.str-ex-name { font-size: .88rem; font-weight: 600; }
.str-ex-target { font-size: .78rem; color: var(--accent); font-weight: 600; }
.str-ex-note { font-size: .72rem; color: var(--muted); margin-bottom: .3rem; }
.str-sets { display: flex; flex-direction: column; gap: .25rem; margin: .35rem 0; }
.str-set-row { display: flex; align-items: center; gap: .3rem; }
.set-lbl { font-size: .68rem; color: var(--muted); min-width: 1.6rem; flex-shrink: 0; }
.set-sep { color: var(--muted); font-size: .85rem; flex-shrink: 0; }
.str-set-row .weight-in { width: 4.2rem; }
.str-set-row .reps-in   { width: 4rem; }
.str-set-row .note-in   { flex: 1; min-width: 0; }
.btn-add-set.str-add-set {
  background: transparent; border: 1px dashed var(--border); color: var(--muted);
  border-radius: var(--radius-sm); padding: .2rem .7rem; font-size: .78rem; cursor: pointer;
  transition: border-color .15s, color .15s;
}
.btn-add-set.str-add-set:hover { border-color: var(--accent); color: var(--accent); }
.str-prev-ref { background: rgba(255,140,0,.07); border: 1px solid rgba(255,140,0,.3); color: var(--accent); border-radius: 6px; padding: .35rem .4rem; font-size: .9rem; font-weight: 700; width: 4.2rem; text-align: center; flex-shrink: 0; outline: none; transition: border-color .15s; }
.str-prev-ref:focus { border-color: var(--accent); background: rgba(255,140,0,.13); }
.str-prev-ref::placeholder { color: var(--accent); opacity: .35; font-weight: 400; font-size: .75rem; }
.skill-prev-bar { display: flex; align-items: center; gap: .35rem; margin-top: .35rem; padding-top: .35rem; border-top: 1px solid var(--border); }
.skill-prev-lbl { font-size: .65rem; color: var(--accent); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; opacity: .7; }
.skill-prev-sep { font-size: .65rem; color: var(--muted); }
.skill-prev-bar .str-prev-ref { width: 3.6rem; font-size: .82rem; padding: .28rem .35rem; }

/* Core block */
.core-checklist { display: flex; flex-direction: column; gap: .2rem; }
.core-check-item {
  display: flex; align-items: flex-start; gap: .5rem; cursor: pointer;
  padding: .3rem .2rem; border-radius: 5px; font-size: .85rem; transition: background .1s;
}
.core-check-item input { margin-top: .15rem; accent-color: var(--warn); flex-shrink: 0; }
.core-check-item.is-done { color: var(--muted); text-decoration: line-through; }

/* Cardio/Run block */
.cardio-note { font-size: .75rem; color: var(--muted); margin-bottom: .45rem; }
.run-inputs { display: grid; grid-template-columns: repeat(2, 1fr); gap: .4rem .6rem; margin-top: .4rem; }
.run-field { display: flex; flex-direction: column; gap: .2rem; }
.run-field label { font-size: .68rem; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.run-field .input-field { height: 34px; font-size: .85rem; }

/* Circuit block */
.circuit-ex-list { list-style: none; padding: 0; margin: .3rem 0 .5rem; }
.circuit-ex-list li { font-size: .83rem; color: var(--text); padding: .12rem 0; }
.circuit-ex-list li::before { content: '· '; color: #ffb84d; }
.circuit-rounds { display: flex; gap: .4rem; flex-wrap: wrap; }
.circuit-round-btn {
  padding: .35rem .8rem; border: 1px solid var(--border); background: transparent;
  color: var(--muted); border-radius: var(--radius-sm); cursor: pointer; font-size: .83rem;
  transition: all .15s;
}
.circuit-round-btn.is-done { background: #ff9a0018; border-color: #ff9a0066; color: #ffb84d; font-weight: 600; }

/* ── Strength Progression ── */
.strength-pr-row { display: flex; gap: .5rem; flex-wrap: wrap; margin-top: .65rem; }
.pr-chip { font-size: .8rem; padding: .3rem .65rem; border-radius: 20px; background: var(--bg3); border: 1px solid var(--border); color: var(--muted); }
.pr-chip.pos { border-color: #ffd16644; color: var(--accent2); background: #ffd16610; }
.pr-chip.neg { border-color: #ff6b6b44; color: var(--danger); background: #ff6b6b10; }

/* ── Session History ── */
.hist-month-group { margin-bottom: 1.25rem; }
.hist-month-label { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); margin-bottom: .5rem; display: flex; align-items: center; gap: .5rem; }
.hist-month-count { font-weight: 400; font-size: .72rem; color: var(--border); text-transform: none; letter-spacing: 0; }
.hist-entry { background: var(--bg3); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: .65rem .75rem; margin-bottom: .45rem; }
.hist-entry-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: .4rem; }
.hist-date { font-size: .88rem; font-weight: 700; color: var(--text); margin-right: .5rem; }
.hist-prog-badge { font-size: .72rem; color: var(--accent); background: #ff8c4218; border: 1px solid #ff8c4233; border-radius: 20px; padding: .1rem .5rem; }
.hist-toggle { background: none; border: none; color: var(--muted); cursor: pointer; font-size: .85rem; padding: 0 .25rem; line-height: 1; }
.hist-ex-tags { display: flex; flex-wrap: wrap; gap: .3rem; }
.hist-ex-tag { font-size: .78rem; color: var(--muted); background: var(--bg2); border: 1px solid var(--border); border-radius: 4px; padding: .15rem .45rem; }
.hist-ex-tag.run-tag { border-color: #ffd16633; color: var(--accent2); background: #ffd16610; }
.hist-detail { margin-top: .65rem; border-top: 1px solid var(--border); padding-top: .6rem; display: flex; flex-direction: column; gap: .5rem; }
.hist-ex-row { display: flex; flex-direction: column; gap: .3rem; }
.hist-ex-name { font-size: .82rem; font-weight: 600; color: var(--text); }
.hist-sets { display: flex; flex-wrap: wrap; gap: .3rem; }
.hist-set-chip { font-size: .78rem; padding: .2rem .5rem; background: var(--bg2); border: 1px solid var(--border); border-radius: 4px; color: var(--muted); }

/* ── Scan upload progress ── */
.scan-upload-progress {
  display: flex; flex-direction: column; gap: .45rem;
  background: var(--bg3); border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: .75rem 1rem; margin: .5rem 0;
}
.scan-upload-progress > div:first-child { display: flex; align-items: center; gap: .6rem; }
.scan-upload-spinner {
  width: 16px; height: 16px; border: 2px solid var(--border);
  border-top-color: var(--accent); border-radius: 50%;
  animation: spin .7s linear infinite; flex-shrink: 0;
}
.scan-upload-msg { font-size: .88rem; color: var(--text); }
.scan-upload-bar-wrap { height: 4px; background: var(--bg2); border-radius: 4px; overflow: hidden; }
.scan-upload-bar { height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent2)); border-radius: 4px; transition: width .3s ease; }
.scan-upload-result {
  font-size: .88rem; padding: .6rem .9rem; border-radius: var(--radius-sm);
  border: 1px solid var(--border); margin: .5rem 0;
}
.scan-upload-result.success { background: #ffd16610; border-color: #ffd16644; color: var(--accent2); }
.scan-upload-result.warn    { background: #ffd70010; border-color: #ffd70044; color: var(--warn); }
.scan-upload-result.error   { background: #ff6b6b10; border-color: #ff6b6b44; color: var(--danger); }

/* Scan form upload row */
.scan-upload-row { margin-bottom: .5rem; }
.scan-form-divider { display: flex; align-items: center; gap: .75rem; margin: .9rem 0 .75rem; }
.scan-form-divider::before, .scan-form-divider::after { content: ''; flex: 1; height: 1px; background: var(--border); }
.scan-form-divider span { font-size: .75rem; color: var(--muted); white-space: nowrap; }

/* API key saved badge */
.api-key-saved-badge {
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .82rem; font-weight: 600; color: var(--accent2);
  background: #ffd16612; border: 1px solid #ffd16640;
  border-radius: var(--radius-sm); padding: .4rem .75rem;
  margin-bottom: .1rem;
}

/* Mobility ref block */
.mobility-ref-block { display: flex; flex-direction: column; gap: .35rem; }
.mobility-label { font-size: .9rem; font-weight: 600; color: var(--text); }
.mobility-focus { font-size: .8rem; margin-top: .1rem; }
.mobility-ref-block.is-expandable .mobility-toggle { cursor: pointer; }
.mobility-chevron { margin-left: auto; font-size: .75rem; color: var(--accent); }
.mobility-items { margin-top: .6rem; padding-left: 1.1rem; display: flex; flex-direction: column; gap: .4rem; }
.mobility-items li { font-size: .85rem; color: var(--text); }

@media (max-width: 400px) {
  .str-set-row .note-in { display: none; }
  .run-inputs { grid-template-columns: 1fr; }
  .skill-ex-inputs { flex-direction: column; gap: .4rem; }
}

/* ── AI Scan Insights ── */
.insights-card { padding: 1rem; }

.insights-loading {
  display: flex; align-items: center; gap: .65rem;
  color: var(--muted); font-size: .88rem; padding: .5rem 0;
}
.insights-spinner {
  width: 18px; height: 18px; border: 2px solid var(--border);
  border-top-color: var(--accent); border-radius: 50%;
  animation: spin .8s linear infinite; flex-shrink: 0;
}
@keyframes spin { to { transform: rotate(360deg); } }

.insights-error {
  display: flex; align-items: center; gap: .5rem;
  font-size: .85rem; flex-wrap: wrap;
}
.insights-setup { font-size: .85rem; color: var(--muted); }
.insights-setup strong { color: var(--text); }
.insights-cta { font-size: .85rem; color: var(--muted); }
.insights-cta p { margin-bottom: .6rem; }

.insights-header {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: .5rem; margin-bottom: .6rem; flex-wrap: wrap;
}
.insights-summary {
  font-size: .88rem; line-height: 1.55; color: var(--text);
  margin-bottom: .85rem; padding-bottom: .75rem; border-bottom: 1px solid var(--border);
}

.insights-findings { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .85rem; }
.insight-finding { display: flex; align-items: flex-start; gap: .55rem; font-size: .83rem; }
.finding-icon { flex-shrink: 0; white-space: nowrap; }
.finding-detail { color: var(--muted); line-height: 1.45; }

.insights-block { margin-bottom: .85rem; }
.insights-block-title {
  font-size: .68rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase;
  color: var(--muted); margin-bottom: .5rem;
}

.priority-area {
  background: var(--bg3); border-radius: var(--radius-sm);
  padding: .6rem .7rem; margin-bottom: .45rem;
  border-left: 2px solid var(--accent);
}
.priority-area-header { display: flex; gap: .5rem; margin-bottom: .35rem; align-items: flex-start; }
.priority-num {
  background: var(--accent); color: #fff; font-size: .7rem; font-weight: 700;
  border-radius: 50%; width: 18px; height: 18px; display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; margin-top: .1rem;
}
.priority-area-header strong { font-size: .88rem; display: block; }
.priority-why { font-size: .78rem; color: var(--muted); margin-top: .1rem; }
.priority-actions { list-style: none; padding: 0; margin: 0; }
.priority-actions li { font-size: .82rem; padding: .15rem 0; color: var(--text); }
.priority-actions li::before { content: '→ '; color: var(--accent); }

.prog-adjustment {
  display: flex; flex-direction: column; gap: .15rem;
  border-bottom: 1px solid var(--border); padding: .4rem 0;
}
.prog-adjustment:last-child { border-bottom: none; }
.adj-change { font-size: .85rem; font-weight: 600; }
.adj-rationale { font-size: .78rem; color: var(--muted); }

.insights-nutrition { font-size: .83rem; color: var(--muted); line-height: 1.5; }

.insights-goal {
  background: #ff8c4212; border: 1px solid #ff8c4233;
  border-radius: var(--radius-sm); padding: .6rem .8rem;
  display: flex; flex-direction: column; gap: .2rem;
}
.insights-goal-label { font-size: .65rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--accent); }
.insights-goal strong { font-size: .92rem; }

/* ── Today date row ── */
.today-date-row {
  display: flex; justify-content: space-between; align-items: baseline;
  margin-bottom: .65rem;
}
.today-date { font-size: .88rem; color: var(--muted); }
.today-prog-badge { font-size: .75rem; font-weight: 700; color: var(--accent); }

/* ── Today inner tabs ── */
.today-tabs { display: flex; gap: .35rem; margin-bottom: .85rem; }
.today-tab {
  flex: 1; text-align: center; background: var(--bg3); border: 1px solid var(--border);
  color: var(--muted); border-radius: 20px; padding: .45rem .5rem; font-size: .82rem;
  font-weight: 600; cursor: pointer; transition: all .15s;
}
.today-tab.active { background: var(--accent); color: #fff; border-color: var(--accent); }

/* ── Session control bar ── */
.session-ctrl-bar {
  display: flex; align-items: center; gap: .35rem; flex-wrap: wrap;
  margin-bottom: .75rem; padding: .45rem .6rem;
  background: var(--card); border: 1px solid var(--border); border-radius: var(--radius-sm);
}
.ctrl-group { display: flex; gap: .2rem; }
.ctrl-pill {
  background: var(--bg3); border: 1px solid var(--border); color: var(--muted);
  border-radius: 20px; padding: .18rem .55rem; font-size: .72rem; font-weight: 600;
  cursor: pointer; transition: all .15s;
}
.ctrl-pill.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.ctrl-pill.is-today { border-style: dashed; }
.ctrl-apply {
  margin-left: auto; background: var(--accent2); color: #111114; border: none;
  border-radius: 20px; padding: .2rem .75rem; font-size: .72rem; font-weight: 700;
  cursor: pointer; transition: opacity .15s;
}
.ctrl-apply:hover { opacity: .85; }
.ctrl-apply.hidden { display: none; }

/* ── Strength set tiles ── */
.str-tiles { display: flex; flex-direction: column; gap: .35rem; margin: .35rem 0; }

.str-set-tile {
  display: flex; align-items: center; gap: .4rem;
  background: var(--bg3); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: .5rem .65rem;
  transition: background .15s, border-color .15s;
}
.str-set-tile.is-done {
  background: #ffd16608; border-color: #ffd16633;
}
.str-snum {
  font-size: .72rem; color: var(--muted); min-width: 1.5rem;
  flex-shrink: 0; font-weight: 600;
}
.str-tile-inp {
  background: var(--bg2); border: 1px solid var(--border); color: var(--text);
  border-radius: 6px; padding: .35rem .4rem; font-size: .9rem; font-weight: 700;
  text-align: center; outline: none; transition: border-color .15s;
}
.str-tile-inp.weight-in { width: 4.2rem; }
.str-tile-inp.reps-in   { width: 3.6rem; }
.str-tile-inp:focus { border-color: var(--accent); }
.str-set-tile.is-done .str-tile-inp {
  border-color: #ffd16644; color: var(--accent2);
}
.str-tile-sep { color: var(--muted); font-size: .85rem; flex-shrink: 0; }

.str-tick-btn {
  width: 28px; height: 28px; border-radius: 50%;
  border: 1.5px solid var(--border); background: transparent;
  color: transparent; cursor: pointer; flex-shrink: 0; margin-left: auto;
  font-size: .85rem; font-weight: 800; line-height: 1;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s;
}
.str-tick-btn.is-done { background: var(--accent); border-color: var(--accent); color: #fff; }
.str-tick-btn:active { transform: scale(.92); }

/* ── Session panel — condensed ── */
.session-title { font-size: .95rem; font-weight: 700; color: var(--text); }
.session-card { padding: .75rem; }

/* ── Streak & Consistency ──────────────────────────────────────────── */
.streak-row { display:flex; gap:.75rem; flex-wrap:wrap; margin-bottom:.75rem; }
.streak-stat { flex:1; min-width:80px; background:var(--bg3); border-radius:var(--radius-sm); padding:.6rem .75rem; text-align:center; }
.streak-stat .s-val { font-size:1.5rem; font-weight:700; color:var(--accent); }
.streak-stat .s-label { font-size:.72rem; color:var(--muted); margin-top:.1rem; }

.heatmap-grid { display:grid; grid-auto-flow:column; grid-template-rows:repeat(7,12px); grid-auto-columns:12px; gap:3px; margin-top:.5rem; }
.heatmap-cell { border-radius:2px; background:var(--bg3); }
.heatmap-cell.trained { background:var(--accent); opacity:.85; }
.heatmap-cell.today { outline:2px solid var(--accent2); outline-offset:1px; }
.heatmap-months { display:flex; justify-content:space-between; font-size:.68rem; color:var(--muted); margin-top:.25rem; }

/* ── Weekly Check-in ───────────────────────────────────────────────── */
.checkin-meta { font-size:.72rem; color:var(--muted); margin-bottom:.5rem; }
.checkin-summary { font-size:.9rem; line-height:1.55; margin-bottom:.75rem; }
.checkin-section { margin-bottom:.6rem; }
.checkin-section-title { font-size:.72rem; text-transform:uppercase; color:var(--muted); font-weight:600; margin-bottom:.3rem; letter-spacing:.04em; }
.checkin-items { list-style:none; padding:0; margin:0; }
.checkin-items li { font-size:.85rem; padding:.25rem 0; border-bottom:1px solid var(--border); }
.checkin-items li:last-child { border-bottom:none; }
.checkin-goal { background:var(--bg3); border-left:3px solid var(--accent); padding:.5rem .75rem; border-radius:0 var(--radius-sm) var(--radius-sm) 0; font-size:.88rem; margin-top:.5rem; }
.checkin-loading { display:flex; align-items:center; gap:.6rem; padding:.5rem 0; font-size:.85rem; color:var(--muted); }
.checkin-spinner { width:16px; height:16px; border:2px solid var(--border); border-top-color:var(--accent); border-radius:50%; animation:spin .7s linear infinite; }

/* ── Training Journal ──────────────────────────────────────────────── */
.journal-prompt { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:.85rem; margin-top:.75rem; }
.journal-prompt-title { font-size:.78rem; text-transform:uppercase; color:var(--muted); font-weight:600; letter-spacing:.04em; margin-bottom:.6rem; }
.energy-row { display:flex; gap:.4rem; margin-bottom:.6rem; align-items:center; }
.energy-label { font-size:.8rem; color:var(--muted); min-width:60px; }
.energy-btn { background:var(--bg3); border:1px solid var(--border); border-radius:var(--radius-sm); padding:.3rem .5rem; font-size:1rem; cursor:pointer; transition:background .15s,border-color .15s; }
.energy-btn.selected { background:var(--accent); border-color:var(--accent); }
.journal-saved-badge { font-size:.78rem; color:var(--success); margin-top:.4rem; }

.journal-entry { border-bottom:1px solid var(--border); padding:.6rem 0; }
.journal-entry:last-child { border-bottom:none; }
.journal-entry-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:.25rem; }
.journal-date { font-size:.82rem; font-weight:600; }
.journal-energy { color:var(--accent2); font-size:.85rem; }
.journal-notes-text { font-size:.85rem; color:var(--muted); line-height:1.45; }

/* ── PR Board ──────────────────────────────────────────────────────── */
.pr-board-grid { display:grid; gap:.5rem; }
.pr-card { background:var(--bg3); border-radius:var(--radius-sm); padding:.75rem; display:flex; align-items:center; gap:.75rem; }
.pr-medal { font-size:1.4rem; }
.pr-info { flex:1; min-width:0; }
.pr-exercise { font-weight:600; font-size:.9rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pr-value { font-size:1.1rem; color:var(--accent); font-weight:700; }
.pr-meta { font-size:.72rem; color:var(--muted); margin-top:.1rem; }
.pr-actions { display:flex; gap:.25rem; }

.pr-form-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:.85rem; }
.pr-history-list { margin-top:.5rem; }
.pr-history-entry { font-size:.82rem; display:flex; justify-content:space-between; padding:.25rem 0; border-bottom:1px solid var(--border); color:var(--muted); }
.pr-history-entry:last-child { border-bottom:none; }
.pr-history-entry .pr-h-val { color:var(--text); font-weight:500; }
.pr-type-tabs { display:flex; gap:.35rem; flex-wrap:wrap; margin-bottom:.6rem; }
.pr-type-tab { background:var(--bg3); border:1px solid var(--border); border-radius:var(--radius-sm); padding:.3rem .7rem; font-size:.78rem; cursor:pointer; color:var(--muted); }
.pr-type-tab.active { background:var(--accent); border-color:var(--accent); color:#fff; }
