/* plan — Redesign A v2 ("Instrument"). Area styles; shared tokens live in index.html.
   Covers the Plan tab, Availability, Weekly review, the planned-workout sheet
   and the weekly-review list on Progress. Loaded after index.html, so rules
   here win over the older Plan rules at equal specificity. */

/* ── Page shell ─────────────────────────────────────────────────────────── */
.planPage .pageTitle { margin-top: 0; }
.planLead { font: 400 15px/1.45 var(--font-sans); color: var(--color-text-muted); margin-top: 14px; text-wrap: pretty; }
.planFoot, .planFootNote { font: 400 12px/1.4 var(--font-sans); color: var(--color-text-label); }
.planFoot { text-align: center; padding-bottom: 12px; }
.planFootNote { margin-top: 14px; }

.planHeader { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; padding-top: 6px; }
.planHeader .greet { margin-bottom: 10px; }
.planHeader-btns { display: flex; gap: 6px; flex-shrink: 0; }
.sqBtn {
  width: 40px; height: 40px; border-radius: 12px; cursor: pointer;
  background: var(--color-surface-2); border: 1px solid var(--color-border-2);
  color: var(--color-text-muted); font: 400 20px/1 var(--font-sans);
  display: flex; align-items: center; justify-content: center;
}
.sqBtn:active { opacity: .7; }
.sqBtn.acc { background: var(--color-accent-dim); border-color: rgba(214,255,61,.3); color: var(--color-accent); }
.sqBtn svg { width: 18px; height: 18px; }

/* ── Review-ready banner (Plan + Today) ─────────────────────────────────── */
.reviewBanner {
  display: flex; align-items: center; gap: 14px; width: 100%; text-align: left; cursor: pointer;
  padding: 14px 16px; border-radius: var(--radius-lg); color: var(--color-text); font-family: inherit;
  background: linear-gradient(135deg, rgba(214,255,61,.12), rgba(214,255,61,.03));
  border: 1px solid rgba(214,255,61,.35);
}
.reviewBanner:active { opacity: .85; }
.reviewBanner-l { flex: 1; min-width: 0; }
.reviewBanner-t { font: 700 16px/1.25 var(--font-sans); margin-top: 6px; }
#dash-review:empty, #plan-review-banner:empty, #plan-week-intent:empty { display: none; }

/* ── Week summary ───────────────────────────────────────────────────────── */
.distBar3 { display: flex; height: 10px; border-radius: 5px; overflow: hidden; gap: 2px; margin-top: 18px; background: var(--color-surface-3); }
.distBar3 > span { display: block; height: 100%; }
.distLegend { display: flex; flex-wrap: wrap; gap: 8px 16px; margin-top: 10px; font: 500 12px/1 var(--font-sans); color: var(--color-text-muted); }
.distLeg { display: inline-flex; align-items: center; gap: 6px; }
.distLeg i { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
.planCoach {
  display: flex; flex-direction: column; gap: 8px; width: 100%; text-align: left;
  background: none; border: none; border-top: 1px solid var(--color-border); cursor: pointer;
  font-family: inherit; color: inherit; padding: 14px 0 0; margin-top: 16px;
}
.planCoach .eyebrow { display: flex; justify-content: space-between; align-items: center; }
.planCoach .eyebrow .arrow { font-size: 18px; }
.planCoachLine { font: 400 15px/1.45 var(--font-sans); color: var(--color-text-soft); text-wrap: pretty; }

/* ── Day rows ───────────────────────────────────────────────────────────── */
.dayRow {
  display: flex; align-items: center; gap: 14px; width: 100%; margin: 0;
  padding: 14px 16px; text-align: left; cursor: pointer; font-family: inherit; color: var(--color-text);
  background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 18px;
}
.dayRow:active { opacity: .85; }
.dayRow.today { background: var(--color-surface); border-color: var(--color-accent-line); }
.dayRow.rest, .dayRow.buffer { opacity: .6; }
.dayRow.empty { opacity: .45; cursor: default; }
.dayRow.recovery { background: var(--color-surface); }
.dayRow.eventDay { border-color: rgba(240,144,75,.5); }
.dayRow .dayDate { width: 34px; flex-shrink: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.dayRow .dayD { font: 700 11px/1 var(--font-mono); letter-spacing: .06em; color: var(--color-text-label); }
.dayRow .dayN { font: 800 24px/1 var(--font-sans); font-stretch: 72%; color: var(--color-text); font-variant-numeric: tabular-nums; }
.dayRow.today .dayD, .dayRow.today .dayN { color: var(--color-accent); }
.dayRow .dayCont { flex: 1; min-width: 0; }
.dayRow .dayN1 { font: 700 17px/1.2 var(--font-sans); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text); }
.dayRow.rest .dayN1, .dayRow.buffer .dayN1 { font-weight: 600; }
.dayRow .dayN2 { font: 400 13px/1.3 var(--font-sans); color: var(--color-text-muted); margin-top: 4px; }
.dayNote { font: 500 12px/1.3 var(--font-sans); color: var(--color-warn); margin-top: 4px; }
.dayRow.buffer .dayNote { color: var(--color-text-muted); }
.dayChips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.dayChips .evPill { margin-left: 0; }
.dayCore { font: 500 12px/1.3 var(--font-sans); color: var(--color-core); margin-top: 6px; }
.dayProf { width: 62px; flex-shrink: 0; }
.dayRow .dayCta {
  width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  font: 700 13px/1 var(--font-sans); background: var(--color-surface-2); color: var(--color-text-muted);
}
.dayRow .dayCta.done { background: var(--color-accent); color: var(--color-accent-on); }
.dayRow.missed .dayN2 { color: var(--color-warn); }

.supportRow {
  display: flex; align-items: center; gap: 8px; width: calc(100% - 48px); margin: -2px 0 2px 48px;
  background: none; border: 1px dashed var(--color-border-2); border-radius: var(--radius-md);
  padding: 9px 12px; font: 500 13px/1.3 var(--font-sans); color: var(--color-text-muted); cursor: pointer; text-align: left;
}
.supIc { width: 16px; height: 16px; flex-shrink: 0; color: var(--color-core); }

/* ── Coach intent ───────────────────────────────────────────────────────── */
.intentList { display: flex; flex-direction: column; gap: 12px; margin-top: 14px; }
.intentRow { display: grid; grid-template-columns: 54px 1fr; gap: 12px; }
.intentRow + .intentRow { padding-top: 12px; border-top: 1px solid rgba(255,255,255,.06); }
.intentDate { font-size: 18px; font-weight: 800; font-stretch: 72%; }
.intentRow.anchor .intentDate { color: var(--color-accent); }
.intentChips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip.mono.phase-build { background: rgba(61,139,255,.15); color: #7FB0FF; }
.chip.mono.phase-peak  { background: rgba(255,201,59,.15); color: #FFC93B; }
.chip.mono.phase-taper { background: var(--color-core-dim); color: var(--color-core); }
.intentSub { font: 400 13px/1.35 var(--font-sans); color: var(--color-text-muted); margin-top: 6px; }

/* ── Adjustments ────────────────────────────────────────────────────────── */
.adjItem { display: flex; gap: 12px; margin-top: 14px; }
.adjItem + .adjItem { padding-top: 14px; border-top: 1px solid rgba(255,255,255,.06); }
.adjDot { width: 10px; height: 10px; border-radius: 50%; margin-top: 5px; flex-shrink: 0; background: var(--color-text-dim); }
.adjDot.rpe { background: var(--color-warn); }
.adjDot.tsb, .adjDot.extra { background: #3D8BFF; }
.adjDot.missed { background: var(--color-danger); }
.adjDot.ok { background: var(--color-accent); }
.adjTitle { font: 700 15px/1.3 var(--font-sans); }
.adjMeta { font: 500 12px/1.3 var(--font-mono); color: var(--color-text-label); margin-top: 4px; }
.adjText { font: 400 14px/1.45 var(--font-sans); color: var(--color-text-muted); margin-top: 6px; }

/* ── Availability ───────────────────────────────────────────────────────── */
.context-load-card .context-load-reset { font: 600 13px/1 var(--font-sans); color: var(--color-accent); background: none; border: none; cursor: pointer; padding: 0; }
.context-load-chips { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; margin: 14px 0 0; }
.context-load-chip {
  display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px 4px;
  border-radius: var(--radius-sm); background: var(--color-inset); border: 1px solid var(--color-border-2);
  color: var(--color-text); cursor: pointer; font-family: inherit;
}
.context-load-chip.active { background: var(--color-accent-dim); border-color: var(--color-accent-line); }
.context-load-chip-n { font: 800 22px/1 var(--font-sans); font-stretch: 72%; }
.context-load-chip.active .context-load-chip-n { color: var(--color-accent); }
.context-load-chip-l { font: 500 11px/1.1 var(--font-sans); color: var(--color-text-muted); text-align: center; letter-spacing: 0; }
.context-load-sub { font: 400 13px/1.4 var(--font-sans); color: var(--color-text-label); margin-top: 10px; }
.context-load-status { font: 500 12px/1.3 var(--font-sans); color: var(--color-warn); margin-top: 4px; min-height: 0; }
.context-load-status:empty { display: none; }

.availCard { padding: 6px 18px; }
.sliderList { margin: 0; }
.sliderRow {
  display: grid; grid-template-columns: 38px 1fr 58px; gap: 12px; align-items: center;
  padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.05);
}
.sliderRow.zero { opacity: 1; }
.sliderDay { width: auto; align-items: flex-start; gap: 3px; }
.sliderDay-d { font: 700 11px/1 var(--font-mono); letter-spacing: 0; color: var(--color-text-label); }
.sliderDay-n { font: 800 22px/1 var(--font-sans); font-stretch: 72%; color: var(--color-text); }
.sliderRow.zero .sliderDay-n, .sliderRow.zero .sliderVal { color: var(--color-text-dim); }
.sliderTrack { height: 28px; }
.sliderTrack-bg { height: 8px; border-radius: 4px; background: var(--color-surface-3); }
.sliderFill { height: 8px; border-radius: 4px; background: var(--color-accent); }
.sliderHandle {
  width: 22px; height: 22px; background: var(--color-text);
  box-shadow: 0 0 0 4px rgba(214,255,61,.25);
}
.sliderTrack input[type=range]:focus-visible + .sliderHandle { box-shadow: 0 0 0 6px rgba(214,255,61,.45); }
.sliderVal { width: auto; font: 700 17px/1 var(--font-sans); font-stretch: 80%; text-align: right; color: var(--color-text); }
.availSummary { padding: 16px 0 12px; }
.availActions { display: flex; flex-direction: column; gap: 8px; margin-top: 14px; }
.availActions-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.availStatus { font: 500 14px/1.4 var(--font-sans); color: var(--color-accent); text-align: center; min-height: 0; }
.availStatus.warn { color: var(--color-warn); margin-top: 8px; }
.availStatus:empty { display: none; }

.planPreview-shots { display: flex; flex-direction: column; gap: 14px; }
.planPreview-img { display: block; width: 100%; height: auto; border-radius: var(--radius-lg); border: 1px solid var(--color-border); }

/* ── Planned-workout sheet ──────────────────────────────────────────────── */
.planSheet { gap: 16px; }
.sheetTitle { margin-top: 10px; padding-right: 40px; }
.sheetChips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }
.sheetChips:empty { display: none; }
.sheetMetrics {
  display: grid; grid-template-columns: repeat(4, 1fr); background: var(--color-inset);
  border-radius: 18px; padding: 14px 4px;
}
.sheetMetrics .metric { align-items: center; }
.sheetLbl { margin-bottom: 12px; }
.sheetCta { width: 100%; }
.sheetCta.sent { background: var(--color-accent-dim); color: var(--color-accent); border: 1px solid var(--color-accent-line); }
.sheetFoot { font: 400 13px/1.4 var(--font-sans); color: var(--color-text-label); text-align: center; margin-top: 8px; }
.export-status-wrap { text-align: center; padding: 10px 0 0; min-height: 0; }
.export-status {
  display: inline-flex; align-items: center; gap: 8px; border-radius: 7px; padding: 5px 9px;
  font: 600 12px/1.3 var(--font-sans); background: var(--color-surface-2); color: var(--color-text-muted);
}
.export-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.export-status.idle    { color: var(--color-text-label); }
.export-status.loading { background: rgba(61,139,255,.15); color: #7FB0FF; }
.export-status.success { background: var(--color-accent-dim); color: var(--color-accent); }
.export-status.warning, .export-status.danger { background: var(--color-warn-bg); color: var(--color-warn); }

.execDayLink {
  display: flex; align-items: center; gap: 14px; width: 100%; margin: 0; cursor: pointer; text-align: left;
  padding: 14px 16px; border-radius: 18px; font-family: inherit; color: var(--color-text);
  background: rgba(214,255,61,.08); border: 1px solid var(--color-accent-line);
}
.execDayLink .num { font-size: 28px; }
.execDayLink-t { flex: 1; min-width: 0; }
.execDayLink-h { font: 700 15px/1.2 var(--font-sans); }
.execDayLink-s { font: 400 13px/1.3 var(--font-sans); color: var(--color-text-muted); margin-top: 3px; }

.ftpTestCard {
  display: flex; flex-direction: column; gap: 10px; padding: 16px; border-radius: 18px;
  background: var(--color-accent-dim); border: 1px solid var(--color-accent-line);
}
.ftpTestCard-t { font: 500 15px/1.4 var(--font-sans); color: var(--color-text); }

.whyBox {
  background: #16191D; border: 1px solid var(--color-border); border-radius: var(--radius-lg);
  padding: 0; margin: 0; overflow: hidden;
}
.whyBox summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; padding: 16px; flex-direction: row; gap: 8px; }
.whyBox summary::-webkit-details-marker { display: none; }
.whyTitle { font: 700 16px/1.2 var(--font-sans); color: var(--color-text); }
.whyTitle::after { content: none; }
.whyIcon::after { content: "+"; color: var(--color-text-muted); font-size: 18px; }
.whyBox[open] .whyIcon::after { content: "−"; }
.whyBody { padding: 0 16px 16px; display: flex; flex-direction: column; gap: 10px; }
.whyHead { font: 500 12px/1.3 var(--font-mono); color: var(--color-accent); text-transform: uppercase; letter-spacing: .02em; }
.whyLine { display: flex; gap: 10px; font: 400 15px/1.45 var(--font-sans); color: var(--color-text-soft); text-wrap: pretty; }
.whyLine b { color: var(--color-text); font-weight: 600; }
.whyDot { width: 5px; height: 5px; border-radius: 50%; background: var(--color-accent); margin-top: 9px; flex-shrink: 0; }
.whyProfile { font: 400 13px/1.4 var(--font-sans); color: var(--color-text-muted); }
.whyLink { background: none; border: none; padding: 0; font: 600 14px/1 var(--font-sans); color: var(--color-accent); cursor: pointer; text-align: left; margin-top: 2px; }

.supportCard { background: var(--color-inset); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 12px 14px; margin-bottom: 8px; }
.supportCard-head { display: flex; align-items: center; gap: 8px; font: 600 15px/1.2 var(--font-sans); }
.supportCard-head span { margin-left: auto; font: 600 13px/1 var(--font-mono); color: var(--color-text-muted); }
.supportCard-ctx { font: 500 13px/1.3 var(--font-sans); color: var(--color-core); margin-top: 6px; }
.supportCard-desc { font: 400 14px/1.4 var(--font-sans); color: var(--color-text-muted); margin-top: 6px; }

.zoneRows { display: flex; flex-direction: column; gap: 10px; }
.zoneRow { display: grid; grid-template-columns: 110px 1fr 64px; gap: 10px; align-items: center; }
.zoneRow-name { font: 600 13px/1 var(--font-sans); color: var(--color-text-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.zoneRow-name b { font-family: var(--font-mono); font-weight: 700; }
.zoneRow-track { height: 10px; border-radius: 3px; background: var(--color-surface-2); overflow: hidden; }
.zoneRow-track i { display: block; height: 100%; }
.zoneRow-val { font: 600 13px/1 var(--font-sans); color: var(--color-text-muted); text-align: right; }

.structHdr { font: 700 12px/1 var(--font-mono); color: var(--color-accent); padding: 14px 0 6px; }
.structRow { display: flex; align-items: center; gap: 12px; padding: 11px 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.structRow.ind { margin-left: 16px; }
.structBar { width: 4px; height: 28px; border-radius: 2px; flex-shrink: 0; }
.structTxt { flex: 1; min-width: 0; }
.structName { font: 600 15px/1.2 var(--font-sans); }
.structTarget { font: 400 13px/1.2 var(--font-sans); color: var(--color-text-muted); margin-top: 3px; }
.structDur { font: 600 14px/1 var(--font-mono); color: var(--color-text-soft); }

.ftp-link-list { display: flex; flex-direction: column; gap: 8px; margin: 0; }
.ftp-link-item {
  display: flex; align-items: center; gap: 12px; width: 100%; padding: 14px 16px; cursor: pointer; text-align: left;
  border-radius: 16px; background: #16191D; border: 1px solid var(--color-border); color: var(--color-text); font-family: inherit;
}
.ftp-link-item-title { font: 600 15px/1.2 var(--font-sans); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ftp-link-item-sub { font: 400 13px/1.3 var(--font-sans); color: var(--color-text-muted); margin-top: 3px; }

/* ── Weekly review ──────────────────────────────────────────────────────── */
.reviewPage .layer { margin: 0; }
.reviewHead { display: flex; flex-direction: column; gap: 8px; }
.reviewLead { font: 700 20px/1.25 var(--font-sans); text-wrap: pretty; }
.reviewSumLine { font: 400 15px/1.45 var(--font-sans); color: var(--color-text-soft); text-wrap: pretty; }
.reviewCoach { display: flex; flex-direction: column; gap: 10px; }
.reviewTiles { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; }
.reviewDen { color: var(--color-text-dim); font-weight: 800; font-size: inherit; }
.tileLbl { margin-top: 6px; }
.tileSub { font: 600 12px/1 var(--font-sans); color: var(--color-text-muted); margin-top: 6px; }
.tileSub.warn { color: var(--color-warn); }
.reviewDays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; margin-top: 16px; }
.reviewDay { display: flex; flex-direction: column; align-items: center; gap: 6px; }
.reviewDay-i {
  width: 36px; height: 36px; border-radius: 10px; background: var(--color-inset);
  display: flex; align-items: center; justify-content: center; font: 700 16px/1 var(--font-sans); color: var(--color-text-dim);
}
.reviewDay.done .reviewDay-i, .reviewDay.extra .reviewDay-i { background: var(--color-inset); color: var(--color-accent); }
.reviewDay.partial .reviewDay-i, .reviewDay.missed .reviewDay-i { background: var(--color-inset); color: var(--color-warn); }
.reviewDay.planned .reviewDay-i { border: 1px dashed var(--color-border-2); background: none; }
.reviewDay-l { font: 700 11px/1 var(--font-mono); color: var(--color-text-label); }
.reviewDay.key .reviewDay-l { color: var(--color-text); }
.reviewLine { font: 400 14px/1.4 var(--font-sans); color: var(--color-text-muted); margin-top: 8px; }
.reviewLine.warn { color: var(--color-warn); font-weight: 500; }
.reviewKey { margin-top: 14px; }
.reviewKey + .reviewKey { border-top: 1px solid rgba(255,255,255,.06); padding-top: 12px; margin-top: 12px; }
.reviewKey-t { font: 700 16px/1.2 var(--font-sans); }
.reviewKey .reviewLine { margin-top: 5px; }
.reviewCtl { margin-top: 12px; }
.reviewSpark { display: block; width: 100%; height: 50px; margin-top: 10px; }
.reviewPolar { margin-top: 14px; }
.reviewRec { margin-top: 14px; }
.reviewRec .inset { padding: 12px; }
.reviewGoal { display: flex; align-items: center; gap: 10px; font: 500 15px/1.3 var(--font-sans); color: var(--color-text); margin-top: 12px; padding: 0; border: none; }
.reviewGoal + .reviewGoal { border-top: none; }
.reviewDots { display: flex; gap: 4px; margin: 0; }
.reviewDot { width: 10px; height: 10px; border-radius: 50%; background: var(--color-surface-3); }
.reviewDot.on { background: var(--color-core); }
.reviewAsk { font: 700 20px/1.2 var(--font-sans); }
.reviewScores { display: grid; grid-template-columns: repeat(5, 1fr); gap: 6px; margin-top: 14px; }
.reviewScoreBtn {
  display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 12px 4px; cursor: pointer;
  border-radius: var(--radius-md); background: var(--color-inset); border: 1px solid var(--color-border);
  color: var(--color-text); font-family: inherit;
}
.reviewScoreBtn-n { font: 800 24px/1 var(--font-sans); font-stretch: 72%; }
.reviewScoreBtn-l { font: 600 11px/1 var(--font-sans); color: inherit; }
.reviewScoreBtn.active { background: var(--color-accent); border-color: var(--color-accent); color: var(--color-accent-on); }
.reviewScoreBtn.active .reviewScoreBtn-l { color: var(--color-accent-on); }
.reviewScoreBtn:disabled { cursor: default; }
.reviewScoreBtn:disabled:not(.active) { opacity: .45; }
.reviewNote { margin-top: 12px; min-height: 72px; resize: vertical; font: 400 15px/1.4 var(--font-sans); }
.reviewNextT { font: 700 18px/1.3 var(--font-sans); margin-top: 10px; text-wrap: pretty; }
.reviewNext .sliderList { margin-top: 4px; }
.reviewDone { display: flex; flex-direction: column; gap: 8px; padding: 4px 0; }
.reviewDone .display { font-size: 34px; line-height: .95; }

/* Progress › Weekly reviews list */
.reviewArchive-row {
  display: flex; align-items: center; gap: 12px; width: 100%; padding: 12px 0; cursor: pointer; text-align: left;
  background: none; border: none; border-bottom: 1px solid rgba(255,255,255,.05); font-family: inherit; color: var(--color-text);
}
.reviewArchive-row:last-child { border-bottom: none; }
.reviewArchive-w { width: 58px; flex-shrink: 0; font-size: 18px; font-weight: 800; font-stretch: 72%; }
.reviewArchive-s { flex: 1; min-width: 0; font: 400 14px/1.3 var(--font-sans); color: var(--color-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.reviewArchive-a { font: 600 12px/1 var(--font-mono); color: var(--color-accent); }
.reviewArchive-sc { font: 600 12px/1 var(--font-mono); color: var(--color-text-soft); }
.reviewArchive-sc.warn { color: var(--color-warn); }
#stats-reviews .eyebrow { margin-bottom: 4px; }

/* 80/20 on time in zone (focus #80) */
.iDist { margin-top: 18px; display: flex; flex-direction: column; gap: 12px; }
.iRow { display: flex; flex-direction: column; gap: 6px; }
.iRowHead { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.iNums { font: 600 12px/1 var(--font-mono, var(--font-sans)); color: var(--color-text-muted); font-variant-numeric: tabular-nums; }
.iBarWrap { position: relative; }
.iBar { margin-top: 0; }
.iMark { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; border-radius: 1px; background: var(--color-text); }
.iNote { font: 400 13px/1.4 var(--font-sans); color: var(--color-text-muted); }
.iNote.warn { color: var(--color-warn); }
.iDist .distLegend { margin-top: 0; }

/* Missed stimulus (#100) */
.debtBox { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; }
.debtCatch { font: 500 13px/1.4 var(--font-sans); color: var(--color-accent); }
.debtRow { display: grid; grid-template-columns: 1fr 90px 56px; gap: 8px; align-items: center;
  font: 400 13px/1.2 var(--font-sans); color: var(--color-text-soft); }
.debtBar { height: 5px; border-radius: 3px; background: var(--color-surface-3); overflow: hidden; }
.debtBar i { display: block; height: 100%; background: var(--color-warn); }
.debtVal { font: 500 12px/1 var(--font-mono); text-align: right; color: var(--color-text-muted); }
.debtExp { font: 400 11px/1 var(--font-sans); color: var(--color-text-dim); margin-top: -2px; }

/* Event demands (#106) */
.evBox { margin-top: 14px; display: flex; flex-direction: column; gap: 6px; }
.evRow { display: grid; grid-template-columns: 1fr 100px 52px; gap: 8px; align-items: center;
  font: 400 13px/1.2 var(--font-sans); color: var(--color-text-soft); }
.evTrack { position: relative; height: 6px; border-radius: 3px; background: var(--color-surface-3); }
.evTrack i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 3px; background: var(--color-accent); }
.evTrack i.short { background: var(--color-warn); }
.evTrack b { position: absolute; top: -3px; width: 2px; height: 12px; background: var(--color-text); }
.evVal { font: 500 12px/1 var(--font-mono); text-align: right; color: var(--color-text-muted); }
.evNote { font: 400 13px/1.4 var(--font-sans); color: var(--color-text-muted); margin-top: 4px; }
.evList { margin: 0; padding-left: 18px; font: 400 13px/1.5 var(--font-sans); color: var(--color-text-soft); }

/* Why this workout: reasons from the decision log (#115) */
.whyReasons { display: flex; flex-direction: column; gap: 2px; }
.whyMore { margin-top: 8px; }
.whyMore > summary { cursor: pointer; font: 500 13px/1.4 var(--font-sans); color: var(--color-text-muted); }

/* Coach decisions timeline (#116) */
.decChips { margin-top: 10px; }
.decDay { margin-top: 12px; display: flex; flex-direction: column; gap: 6px; }
.decItem { padding: 8px 10px; border-radius: 10px; background: var(--color-surface-3); cursor: pointer; }
.decHead { display: flex; gap: 8px; align-items: center; }
.decLayer { font: 600 12px/1 var(--font-sans); color: var(--color-accent); }
.decScope { font: 500 10px/1 var(--font-mono); color: var(--color-text-dim); text-transform: uppercase; }
.decKv { display: flex; flex-wrap: wrap; gap: 4px 10px; margin-top: 6px;
  font: 400 12px/1.4 var(--font-mono); color: var(--color-text-muted); }
.decKv b { font-weight: 500; color: var(--color-text-soft); }
.decMeta { margin-top: 4px; font: 400 11px/1 var(--font-mono); color: var(--color-text-dim); }

/* Your coach vs Join (#120) */
.shWeek { margin-top: 14px; display: flex; flex-direction: column; gap: 4px; }
.shRow { display: grid; grid-template-columns: 52px repeat(7, 1fr); gap: 3px; align-items: center; }
.shLbl { font: 500 12px/1 var(--font-sans); color: var(--color-text-muted); }
.shCell { text-align: center; padding: 5px 0; border-radius: 6px; background: var(--color-surface-3);
  font: 500 11px/1 var(--font-mono); color: var(--color-text-soft); min-width: 0; overflow: hidden; }
.shHead .shCell { background: none; color: var(--color-text-dim); }
.shCell.q { background: var(--color-warn-bg); color: var(--color-warn); }
.shCell.on { color: var(--color-accent); }
.shCell.miss { text-decoration: line-through; opacity: .6; }
.shNote { margin-top: 10px; }
