* {
  box-sizing: border-box;
}

/* ─── Theme tokens ─────────────────────────────────────────────── */
:root {
  --afpt-bg: #040b12;
  --afpt-panel: #08141d;
  --afpt-panel-2: #0d1c27;
  --afpt-border: rgba(29, 233, 255, 0.22);
  --afpt-border-strong: rgba(29, 233, 255, 0.55);
  --afpt-ink: #dff7ff;
  --afpt-ink-dim: #7ba9b8;
  --afpt-accent: #1de9ff;
  --afpt-accent-2: #37ff8b;
  --afpt-warn: #ffb547;
  --afpt-bad: #ff4d6d;
  --afpt-app-max-width: 480px;
  --slider-thumb-half: 11; /* unitless px, half of base 22px thumb — read by JS for tick positioning */
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23dff7ff'/%3E%3C/svg%3E");
}

:root[data-theme="tactical"] {
  --afpt-bg: #040b12;
  --afpt-panel: #08141d;
  --afpt-panel-2: #0d1c27;
  --afpt-border: rgba(29, 233, 255, 0.22);
  --slider-thumb-half: 10; /* tactical thumb is 20px */
  --afpt-border-strong: rgba(29, 233, 255, 0.55);
  --afpt-ink: #dff7ff;
  --afpt-ink-dim: #7ba9b8;
  --afpt-accent: #1de9ff;
  --afpt-accent-2: #37ff8b;
  --afpt-warn: #ffb547;
  --afpt-bad: #ff4d6d;
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23dff7ff'/%3E%3C/svg%3E");
}

:root[data-theme="stencil"] {
  --afpt-bg: #1a1d12;
  --afpt-panel: #252916;
  --afpt-panel-2: #2f3319;
  --afpt-border: rgba(170, 182, 118, 0.25);
  --afpt-border-strong: rgba(213, 196, 128, 0.6);
  --afpt-ink: #e9e1c2;
  --afpt-ink-dim: #a59c75;
  --slider-thumb-half: 6; /* stencil thumb is 12px */
  --afpt-accent: #d5c480;
  --afpt-accent-2: #b8c46a;
  --afpt-warn: #e6a740;
  --afpt-bad: #c8513f;
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23e9e1c2'/%3E%3C/svg%3E");
}

:root[data-theme="blues"] {
  --afpt-bg: #0d1726;
  --afpt-panel: #15233a;
  --afpt-panel-2: #1c2c47;
  --afpt-border: rgba(199, 206, 221, 0.18);
  --afpt-border-strong: rgba(199, 206, 221, 0.4);
  --afpt-ink: #eef1f7;
  --afpt-ink-dim: #9aa5bd;
  --afpt-accent: #c0c8d8;
  --afpt-accent-2: #e2c275;
  --afpt-warn: #e2c275;
  --afpt-bad: #c95a5a;
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23eef1f7'/%3E%3C/svg%3E");
}

:root[data-theme="light"] {
  --afpt-bg: #f5f6fa;
  --afpt-panel: #ffffff;
  --afpt-panel-2: #f0f3f8;
  --afpt-border: rgba(20, 30, 55, 0.08);
  --afpt-border-strong: rgba(20, 30, 55, 0.18);
  --afpt-ink: #0e1726;
  --afpt-ink-dim: #5d6577;
  --afpt-accent: #2a6fdb;
  --afpt-accent-2: #1f8a5b;
  --afpt-warn: #d97706;
  --afpt-bad: #c0392b;
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%230e1726'/%3E%3C/svg%3E");
}

:root[data-theme="fitness"] {
  --afpt-bg: #1b0d2a;
  --afpt-panel: rgba(255, 255, 255, 0.07);
  --afpt-panel-2: rgba(255, 255, 255, 0.04);
  --afpt-border: rgba(255, 255, 255, 0.1);
  --afpt-border-strong: rgba(255, 255, 255, 0.22);
  --afpt-ink: #ffffff;
  --afpt-ink-dim: rgba(255, 255, 255, 0.65);
  --slider-thumb-half: 12; /* fitness thumb is 24px */
  --afpt-accent: #ff5dab;
  --afpt-accent-2: #ffb547;
  --afpt-warn: #ffb547;
  --afpt-bad: #ff5d7c;
  --afpt-select-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23ffffff'/%3E%3C/svg%3E");
}

/* ─── Base ─────────────────────────────────────────────────────── */
html, body {
  margin: 0;
  padding: 0;
  background: var(--afpt-bg);
  color: var(--afpt-ink);
  font-family: ui-monospace, "Cascadia Code", "JetBrains Mono", monospace;
  font-size: 15px;
  min-height: 100vh;
  touch-action: manipulation;
  width: 100%;
  overflow-x: clip;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ─── Collapse hidden elements (prevent phantom spacing) ──────── */
[hidden] { display: none; }

/* ─── Custom dropdown arrows (all selects, all themes) ────────── */
select {
  appearance: none;
  -webkit-appearance: none;
  background-image: var(--afpt-select-arrow);
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 10px 6px;
}

/* ─── App shell ────────────────────────────────────────────────── */
.app-shell {
  width: min(100%, var(--afpt-app-max-width));
  max-width: var(--afpt-app-max-width);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  overflow: visible;
}

/* ─── Header ───────────────────────────────────────────────────── */
.app-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 16px;
  background: var(--afpt-panel);
  border-bottom: 1px solid var(--afpt-border);
  position: sticky;
  top: 0;
  z-index: 100;
}

.app-header-left {
  display: flex;
  align-items: center;
  min-width: 0;
}

.app-title {
  min-width: 0;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: 3px;
  color: var(--afpt-accent);
  text-transform: none;
  white-space: nowrap;
}

.app-header-controls {
  display: none;
}

.app-header-score-pill {
  display: none;
}

.app-header-right {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  margin-left: auto;
  min-width: 0;
}

.profile-standard-toggle {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  min-width: 0;
  padding: 2px;
  border: 1px solid var(--afpt-border-strong);
  border-radius: 8px;
  background: color-mix(in srgb, var(--afpt-panel-2) 86%, transparent);
}

.profile-standard-option {
  min-height: 30px;
  padding: 0 6px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--afpt-ink-dim);
  cursor: pointer;
  font-family: inherit;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 0.45px;
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}

.profile-standard-option[aria-pressed="true"] {
  background: var(--afpt-accent);
  color: var(--afpt-bg);
}

.profile-standard-option:focus-visible {
  outline: 2px solid var(--afpt-accent-2);
  outline-offset: 2px;
}

:root[data-profile-standard="afspecwar-eod"] .demo-field--profile {
  display: none;
}

:root[data-profile-standard="afspecwar-eod"] .demographics-row {
  grid-template-columns: minmax(0, 1fr);
}

/* ─── Settings hub ─────────────────────────────────────────────── */
.settings-hub {
  position: relative;
}

html.settings-hub-open,
body.settings-hub-open {
  overflow: hidden;
  overscroll-behavior: none;
}

.settings-hub-toggle {
  background: transparent;
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  width: 44px;
  height: 44px;
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

.settings-hub-toggle:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

.settings-hub-icon {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.settings-hub-icon span {
  display: block;
  width: 18px;
  height: 2px;
  background: currentColor;
  border-radius: 1px;
}

.settings-hub-scrim {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  border: none;
  cursor: default;
  z-index: 900;
  padding: 0;
}

.settings-hub-panel {
  position: fixed;
  top: 0;
  /* anchor to right edge of centered app frame on desktop, viewport edge on mobile */
  right: max(0px, calc((100vw - var(--afpt-app-max-width)) / 2));
  bottom: 0;
  width: min(320px, 88vw);
  background: var(--afpt-panel);
  border-left: 1px solid var(--afpt-border-strong);
  z-index: 910;
  overflow-y: auto;
  overscroll-behavior: contain;
  display: flex;
  flex-direction: column;
}

/* Fitness panel needs solid bg since --afpt-panel is semi-transparent */
:root[data-theme="fitness"] .settings-hub-panel {
  background: rgba(27, 13, 42, 0.97);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.settings-hub-panel[hidden] {
  display: none;
}

.settings-hub-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px;
  border-bottom: 1px solid var(--afpt-border);
}

.settings-hub-header h2 {
  margin: 0;
  font-size: 12px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
}

.settings-hub-close {
  background: transparent;
  border: 1px solid var(--afpt-border);
  color: var(--afpt-ink);
  padding: 5px 12px;
  border-radius: 5px;
  cursor: pointer;
  font-size: 12px;
  letter-spacing: 1px;
  font-family: inherit;
}

.settings-hub-close:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

.settings-hub-section {
  padding: 14px 18px;
  border-bottom: 1px solid var(--afpt-border);
}

.settings-hub-section h3 {
  margin: 0 0 10px 0;
  font-size: 10px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
}

.settings-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 13px;
  color: var(--afpt-ink);
  cursor: pointer;
}

.settings-item span:first-child {
  color: var(--afpt-ink-dim);
  font-size: 12px;
}

.settings-menu {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.settings-menu li {
  padding: 10px 12px;
  border-radius: 5px;
  cursor: pointer;
  font-size: 13px;
  color: var(--afpt-ink);
  border: 1px solid transparent;
  user-select: none;
}

.settings-menu li:hover {
  border-color: var(--afpt-border);
  background: var(--afpt-panel-2);
  color: var(--afpt-accent);
}

.settings-menu li.settings-audio-player {
  padding: 8px 0 0 0;
  border: none;
  background: transparent;
}

.settings-audio-player audio {
  width: 100%;
  max-width: 260px;
}

/* Theme select in settings */
.settings-item select {
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  padding: 5px 28px 5px 8px;
  border-radius: 5px;
  outline: none;
  cursor: pointer;
}

/* ─── Demographics row ─────────────────────────────────────────── */
.demographics-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 12px 16px;
  background: var(--afpt-panel-2);
  border-bottom: 1px solid var(--afpt-border);
  align-items: center;
}

.demo-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-width: 0;
}

.demo-label {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-ink);
  font-weight: 700;
  text-align: center;
}

.demo-select {
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  padding: 6px 28px 6px 7px;
  border-radius: 5px;
  outline: none;
  cursor: pointer;
  width: 100%;
  text-align: center;
  text-align-last: center;
}

.demo-value {
  font-size: 13px;
  color: var(--afpt-ink);
  padding: 6px 0;
  letter-spacing: 0.5px;
  text-align: center;
}

/* ─── Score section ────────────────────────────────────────────── */
.score-section {
  padding: 18px 16px 14px;
  background: var(--afpt-panel);
  border-bottom: 1px solid var(--afpt-border);
}

.score-main-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 12px;
}

.score-comp-label {
  font-size: 10px;
  letter-spacing: 2.5px;
  color: var(--afpt-ink-dim);
  text-transform: uppercase;
}

.score-number {
  font-size: 52px;
  font-weight: 700;
  line-height: 1;
  color: var(--afpt-accent);
  letter-spacing: -1px;
  min-width: 4ch;
}

.score-badge {
  font-size: 12px;
  letter-spacing: 2px;
  padding: 4px 10px;
  border-radius: 4px;
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink-dim);
  text-transform: uppercase;
}

.score-badge[data-category="excellent"] {
  color: var(--afpt-accent-2);
  border-color: var(--afpt-accent-2);
}

.score-badge[data-category="satisfactory"] {
  color: var(--afpt-warn);
  border-color: var(--afpt-warn);
}

.score-badge[data-category="unsatisfactory"] {
  color: var(--afpt-bad);
  border-color: var(--afpt-bad);
}

/* Score bar — gradient track with panel-bg mask fill from the right */
.score-bar-wrap {
  position: relative;
  margin-bottom: 6px;
}

/* Threshold tick marks at SAT (75) and EXC (90) */
.score-bar-wrap::before,
.score-bar-wrap::after {
  content: '';
  position: absolute;
  top: -3px;
  bottom: -3px;
  width: 2px;
  background: var(--afpt-ink-dim);
  opacity: 0.45;
  border-radius: 1px;
  pointer-events: none;
  z-index: 1;
}

.score-bar-wrap::before { left: 75%; transform: translateX(-50%); }
.score-bar-wrap::after  { left: 90%; transform: translateX(-50%); }

.score-bar-track {
  position: relative;
  height: 8px;
  /* Gradient spans full track; mask fill reveals left portion */
  background: linear-gradient(90deg, var(--afpt-bad) 0%, var(--afpt-warn) 75%, var(--afpt-accent-2) 90%);
  border: 1px solid var(--afpt-border);
  border-radius: 4px;
  overflow: hidden;
}

/* Mask element — covers unfilled right portion; JS sets width = (100 - score)% */
.score-bar-fill {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  background: var(--afpt-bg);
  transition: width 0.25s ease;
}

:root[data-theme="light"] .score-bar-fill {
  background: var(--afpt-panel-2);
}

.score-bar-labels {
  position: relative;
  height: 25px;
  margin-top: 6px;
}

.score-bar-labels span {
  position: absolute;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 18px;
  font-size: 7.5px;
  letter-spacing: 0;
  line-height: 1.05;
  color: var(--afpt-ink-dim);
  text-transform: uppercase;
  transform: translateX(-50%);
  white-space: normal;
  text-align: center;
}

.score-bar-labels span:first-child {
  transform: none;
}

.score-bar-labels span:last-child {
  transform: translateX(-100%);
}

.score-bar-labels strong,
.score-bar-labels em {
  display: block;
  font: inherit;
  font-style: normal;
}

.score-bar-labels strong {
  color: var(--afpt-ink);
  font-weight: 700;
}

/* ─── Body composition row ─────────────────────────────────────── */
.body-comp-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  background: var(--afpt-panel-2);
  border-bottom: 1px solid var(--afpt-border);
  flex-wrap: wrap;
}

.bc-label {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
  font-weight: 700;
  min-width: 36px;
}

.bc-input-label {
  font-size: 12px;
  color: var(--afpt-ink-dim);
  letter-spacing: 1px;
}

.bc-input {
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 15px;
  padding: 5px 8px;
  border-radius: 5px;
  width: 72px;
  text-align: center;
}

.bc-input:focus {
  outline: none;
  border-color: var(--afpt-accent);
}

.bc-score-label {
  font-size: 12px;
  color: var(--afpt-ink-dim);
  letter-spacing: 1px;
  margin-left: auto;
}

.bc-score {
  font-size: 22px;
  font-weight: 700;
  color: var(--afpt-accent-2);
  min-width: 2ch;
  text-align: right;
}

/* ─── Component strip ──────────────────────────────────────────── */
.component-strip {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--afpt-border);
  border-bottom: none;
}

.component-strip::after {
  content: '';
  position: absolute;
  left: 0px;
  right: 0px;
  bottom: -1px;
  height: 1px;
  background: var(--afpt-border);
  pointer-events: none;
}

.component-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 12px 8px;
  background: var(--afpt-panel-2);
  border: none;
  cursor: pointer;
  color: var(--afpt-ink);
  font-family: inherit;
  transition: background 0.12s, color 0.12s;
}

.component-chip:hover {
  background: var(--afpt-panel);
  color: var(--afpt-ink);
}

.component-chip.chip--active {
  background: var(--afpt-panel);
  color: var(--afpt-accent);
  border-top: 2px solid var(--afpt-accent);
}

.chip-name {
  font-size: 10px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  font-weight: 700;
}

.chip-value {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.5px;
  line-height: 1.1;
}

.chip-score {
  font-size: 12px;
  color: var(--afpt-ink);
  letter-spacing: 0.5px;
}

.component-chip.chip--active .chip-score {
  color: var(--afpt-accent-2);
}

/* ─── Editors container ────────────────────────────────────────── */
.editors-container {
  /* no flex: 1 — editors take only the space they need */
  padding: 0px 16px;
}

.editor-panel {
  padding: 16px 0px 0px;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.editor-panel[hidden] {
  display: none;
}

.editor-header {
  border-bottom: 1px solid var(--afpt-border);
  padding-bottom: 10px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  gap: 5px;
}

.editor-title {
  font-size: 11px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--afpt-ink);
  font-weight: 700;
  text-align: center;
}

/* ─── Event row: inputs get priority; MIN/MAX/Chart adapt to fit ─── */
.editor-event-row {
  display: grid;
  grid-template-columns: max-content 1fr 1fr 1fr;
  gap: 8px;
  align-items: center;
  justify-items: stretch;
  min-width: 0;
  width: 100%;
}

/* Value rows dissolve into the parent grid — value-group + MIN + MAX become 3 of the 4 cells */
.editor-event-row .editor-value-row {
  display: contents;
}

/* Input group lives in cell 1 and stretches that cell to fit its inputs */
.editor-event-row .value-group {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  grid-column:1;
}

/* Keep input groups compact enough for narrow mobile themes. */
.editor-event-row .value-group .value-input {
  flex: 1 1 auto;
  min-width: 0;
  height: 46px;
  max-width: 60px;
  padding:0;
}

.editor-event-row .value-group .time-input {
  flex: 1 1 0;
  min-width: 0;
  width: auto;
  height: 46px;
  max-width: 50px;
  padding:0;
}

/* MM/SS time labels are redundant — colon + placeholders carry context */
.editor-event-row .value-group .time-label {
  display: none;
}

/* Clear flex-era margin push — grid columns handle equal spacing */
.editor-event-row .editor-value-row .minmax-btn:nth-last-child(2) {
  margin-left: 0;
}

/* Buttons fill their smaller grid tracks and match the input height. */
.editor-event-row .minmax-btn,
.editor-event-row .chart-btn {
  box-sizing: border-box;
  font-size: 12px;
  justify-self: stretch;
  min-width: 0;
  width: 100%;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-left: clamp(4px, 2vw, 10px);
  padding-right: clamp(4px, 2vw, 10px);
}

.body-event-row {
  margin-bottom: 8px;
}

.body-event-label {
  font-size: 13px;
  letter-spacing: 1px;
  color: var(--afpt-ink);
  font-weight: 700;
}

#body-whtr-controls {
  display: grid;
  gap: 12px;
  width: 100%;
  min-width: 0;
}

.body-whtr-row {
  display: grid;
  grid-template-columns: minmax(112px, 0.9fr) minmax(0, 1.1fr);
  align-items: center;
  gap: 12px;
  min-width: 0;
  width: 100%;
}

.body-whtr-label {
  color: var(--afpt-ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.9px;
  line-height: 1.25;
  text-align: left;
  text-transform: uppercase;
}

.body-whtr-control {
  display: flex;
  justify-content: center;
  min-width: 0;
  width: 100%;
}

.body-whtr-control--single .body-input-stepper {
  width: min(100%, 260px);
}

.body-whtr-control--pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  justify-self: center;
  width: min(100%, 260px);
}

.body-measure-block {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.body-measure-label {
  font-size: 10px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  text-align: center;
  color: var(--afpt-ink);
  font-weight: 700;
}

.body-input-stepper {
  display: grid;
  grid-template-columns: 34px minmax(58px, 1fr) 34px;
  align-items: stretch;
  min-width: 0;
  width: 100%;
  min-height: 44px;
  border: 1px solid var(--afpt-border-strong);
  border-radius: 7px;
  overflow: hidden;
  background: var(--afpt-panel-2);
}

.body-input-stepper--waist {
  grid-template-columns: 34px minmax(72px, 1fr) 34px;
}

.body-input-stepper--ratio {
  grid-template-columns: 34px minmax(72px, 1fr) 34px;
}

.body-input-stepper--height {
  grid-template-columns: 28px minmax(32px, 1fr) 28px;
  min-height: 42px;
}

.body-measure-input {
  width: 100%;
  min-width: 0;
  background: transparent;
  border: none;
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: clamp(18px, 5vw, 22px);
  font-weight: 700;
  height: 100%;
  min-height: 42px;
  padding: 0 4px;
  text-align: center;
  line-height: normal;
  appearance: textfield;
  -moz-appearance: textfield;
}

.body-measure-input::-webkit-outer-spin-button,
.body-measure-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.body-measure-input:focus {
  outline: none;
}

.body-measure-input::placeholder,
.time-input::placeholder,
.value-input::placeholder {
  color: var(--afpt-ink-dim);
  opacity: 0.5;
}

.body-input-stepper:focus-within {
  border-color: var(--afpt-accent);
  box-shadow: 0 0 0 1px var(--afpt-accent);
}

.body-step-btn {
  width: 100%;
  height: 100%;
  border: none;
  background: color-mix(in srgb, var(--afpt-panel) 70%, transparent);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  font-weight: 900;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  touch-action: manipulation;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
}

.body-input-stepper > .body-step-btn--minus {
  border-right: 1px solid var(--afpt-border);
}

.body-input-stepper > .body-step-btn--plus {
  border-left: 1px solid var(--afpt-border);
}

.body-step-btn:hover {
  background: transparent;
  color: var(--afpt-accent);
}

.body-unit {
  font-size: 14px;
  letter-spacing: 1px;
  color: var(--afpt-ink);
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 20px;
}

#body-editor {
  padding-bottom: 16px;
}

#push-min-btn {
  grid-column: 2;
}

#push-max-btn {
  grid-column: 3;
}

#push-btn {
  grid-column: 4;
}

@media (max-width: 430px) {
  .app-header {
    gap: 8px;
    padding-left: 12px;
    padding-right: 12px;
  }

  .app-title {
    font-size: 17px;
    letter-spacing: 2px;
  }

  .editor-panel {
    padding-left: 0px;
    padding-right: 0px;
  }

  .editor-event-row {
    grid-template-columns: max-content 1fr 1fr 1fr;
    gap: 6px;
  }

  .editor-event-row .value-group {
    gap: 4px;
  }

  .editor-event-row .value-group .value-input {
    font-size: 22px;
    padding-left: 8px;
    padding-right: 8px;
  }

  .editor-event-row .value-group .time-input {
    font-size: 22px;
    padding-left: 5px;
    padding-right: 5px;
  }

  .editor-event-row .value-unit {
    font-size: 10px;
    letter-spacing: 1px;
  }

  .editor-event-row .time-sep {
    font-size: 22px;
  }

  .editor-event-row .minmax-btn,
  .editor-event-row .chart-btn {
    font-size: 11px;
    letter-spacing: 0.4px;
    padding-left: 3px;
    padding-right: 3px;
  }

  .body-whtr-row {
    grid-template-columns: minmax(100px, 0.85fr) minmax(0, 1.15fr);
    gap: 8px;
  }

  .body-whtr-label {
    font-size: 10px;
    letter-spacing: 0.7px;
  }

  .body-whtr-control--pair {
    gap: 6px;
    width: min(100%, 230px);
  }

  .body-whtr-control--single .body-input-stepper {
    width: min(100%, 230px);
  }

  .body-input-stepper {
    grid-template-columns: 30px minmax(50px, 1fr) 30px;
  }

  .body-input-stepper--ratio,
  .body-input-stepper--waist {
    grid-template-columns: 30px minmax(64px, 1fr) 30px;
  }

  .body-input-stepper--height {
    grid-template-columns: 24px minmax(28px, 1fr) 24px;
  }

  .body-measure-input {
    font-size: 19px;
    padding-left: 2px;
    padding-right: 2px;
  }

  .body-step-btn {
    font-size: 12px;
  }
}

@media (max-width: 350px) {
  .editor-event-row {
    grid-template-columns: max-content 1fr 1fr 1fr;
    gap: 4px;
  }

  .editor-event-row .value-group .value-input,
  .editor-event-row .value-group .time-input {
    font-size: 20px;
  }

  .editor-event-row .value-group .time-input {
    padding-left: 3px;
    padding-right: 3px;
  }

  .editor-event-row .time-sep {
    font-size: 20px;
  }

  .editor-event-row .minmax-btn,
  .editor-event-row .chart-btn {
    font-size: 10px;
    letter-spacing: 0;
    padding-left: 2px;
    padding-right: 2px;
  }
}

.event-select {
  flex: 1;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 14px;
  padding: 9px 28px 9px 10px;
  border-radius: 6px;
  outline: none;
  cursor: pointer;
}

.event-select:focus {
  border-color: var(--afpt-accent);
}

.chart-btn {
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 1px;
  padding: 9px 14px;
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
}

.chart-btn:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

.chart-btn__full {
  display: none;
}

.chart-btn__short {
  display: inline;
}

/* ─── Value row (input + unit) ──────────────────────────────────── */
.editor-value-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
}

/* Inputs fill the left column */
.editor-value-row .value-input,
.editor-value-row .time-input {
  flex: 1;
  width: auto;
  min-width: 48px;
}

/* Push the MIN/MAX button pair to the right as a unified column */
.editor-value-row .minmax-btn:nth-last-child(2) {
  margin-left: auto;
}

.editor-value-row[hidden] {
  display: none;
}

.value-input {
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 24px;
  font-weight: 700;
  padding: 8px 12px;
  border-radius: 6px;
  width: 96px;
  text-align: center;
}

.value-input:focus {
  outline: none;
  border-color: var(--afpt-accent);
}

.value-unit {
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-ink);
}

/* Time input (MM:SS) */
.time-label {
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-ink);
}

.time-input {
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 24px;
  font-weight: 700;
  padding: 8px 10px;
  border-radius: 6px;
  width: 68px;
  text-align: center;
}

.time-input:focus {
  outline: none;
  border-color: var(--afpt-accent);
}

.time-sep {
  font-size: 26px;
  font-weight: 700;
  color: var(--afpt-ink);
  line-height: 1;
}

/* ─── Slider ───────────────────────────────────────────────────── */
.slider-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.slider-row .slider-container {
  flex: 1;
  min-width: 0;
  margin-bottom: -20px; /* cancel padding-bottom from flex centering so track aligns with buttons */
  overflow: visible;
}
.slider-step-btn {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid var(--afpt-border);
  background: var(--afpt-panel-2);
  color: var(--afpt-ink);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  user-select: none;
  -webkit-user-select: none;
  touch-action: manipulation;
}
.slider-step-btn:hover { border-color: var(--afpt-accent); color: var(--afpt-accent); }
.slider-step-btn:active { opacity: 0.65; }

.slider-container {
  position: relative;
  padding-bottom: 20px;
}

.value-slider {
  width: 100%;
  height: 6px;
  appearance: none;
  -webkit-appearance: none;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border);
  border-radius: 3px;
  outline: none;
  cursor: pointer;
}

.value-slider::-webkit-slider-runnable-track {
  height: 6px;
  background: var(--afpt-panel-2);
  border-radius: 3px;
}

.value-slider::-moz-range-track {
  height: 6px;
  background: var(--afpt-panel-2);
  border-radius: 3px;
}

.value-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--afpt-accent);
  border: 3px solid var(--afpt-bg);
  cursor: pointer;
  margin-top: -8px;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
  transition: background 0.12s, box-shadow 0.12s;
}

.value-slider::-moz-range-thumb {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--afpt-accent);
  border: 3px solid var(--afpt-bg);
  cursor: pointer;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.5);
}

.value-slider:hover::-webkit-slider-thumb,
.value-slider:focus::-webkit-slider-thumb {
  background: var(--afpt-accent-2);
  box-shadow: 0 0 0 4px rgba(0, 0, 0, 0.2), 0 0 10px rgba(0, 0, 0, 0.4);
}

.value-slider:hover::-moz-range-thumb,
.value-slider:focus::-moz-range-thumb {
  background: var(--afpt-accent-2);
}

/* Light theme: use bg for thumb border */
:root[data-theme="light"] .value-slider::-webkit-slider-thumb {
  border-color: var(--afpt-bg);
}
:root[data-theme="light"] .value-slider::-moz-range-thumb {
  border-color: var(--afpt-bg);
}

/* MIN / MAX jump buttons next to value inputs */
.minmax-btn {
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 16px;
  letter-spacing: 1px;
  padding: 8px 10px;
  border-radius: 6px;
  width: 68px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
}

.minmax-btn:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

/* Score labels sit under each editor title for this layout experiment. */
.score-label-text {
  margin: 0;
  font-size: 12px;
  color: var(--afpt-ink);
  letter-spacing: 0.5px;
  line-height: 1.4;
  text-align: center;
}

.editor-header .score-label-text {
  width: 100%;
  max-width: 100%;
}

/* HAMR level indicator */
.hamr-level-txt {
  color: var(--afpt-accent);
  font-size: 12px;
  letter-spacing: 1px;
  margin: 0;
}

/* ─── Altitude row ─────────────────────────────────────────────── */
.altitude-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 16px 0px 0px;
  border-top: 1px solid var(--afpt-border);
}

.altitude-label {
  font-size: 12px;
  letter-spacing: 1px;
  color: var(--afpt-ink);
  white-space: nowrap;
}

.altitude-select {
  flex: 1;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  padding: 6px 28px 6px 8px;
  border-radius: 5px;
  outline: none;
  cursor: pointer;
}

.altitude-select:focus {
  border-color: var(--afpt-accent);
}

/* ─── Lap display — pace plan tile grid ────────────────────────── */
.lap-display {
  border-top: 1px solid var(--afpt-border);
  padding: 14px 0px;
}

.lap-display:empty {
  display: none;
  padding-top: 0;
  border-top: none;
}

.lap-plan {
  padding: 12px;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border);
  border-radius: 8px;
  margin-top: 6px;
}

:root[data-theme="fitness"] .lap-plan {
  background: rgba(255, 255, 255, 0.06);
}

.lap-plan-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 10px;
}

.lap-plan-title {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-accent);
  font-weight: 700;
}

.lap-plan-sub {
  font-size: 11px;
  color: var(--afpt-ink-dim);
}

.lap-plan-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}

.lap-tile {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border);
  border-radius: 6px;
  padding: 7px 4px;
  gap: 3px;
}

:root[data-theme="fitness"] .lap-tile {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.12);
}

.lap-tile--final {
  border-color: var(--afpt-accent);
}

:root[data-theme="fitness"] .lap-tile--final {
  border-color: var(--afpt-accent);
}

.lap-tile-num {
  font-size: 10px;
  color: var(--afpt-ink-dim);
  letter-spacing: 1px;
}

.lap-tile-time {
  font-size: 13px;
  font-weight: 700;
  color: var(--afpt-ink);
  letter-spacing: -0.5px;
  line-height: 1.1;
  white-space: nowrap;
}

.lap-tile--final .lap-tile-num {
  color: var(--afpt-accent);
}

.lap-tile--final .lap-tile-time {
  color: var(--afpt-accent);
}

/* ─── Status bar ───────────────────────────────────────────────── */
.pfra-status {
  padding: 10px 16px;
  font-size: 11px;
  letter-spacing: 1px;
  color: var(--afpt-ink-dim);
  text-align: center;
  border-top: 1px solid var(--afpt-border);
  margin-top: auto;
}

/* ─── Modals ───────────────────────────────────────────────────── */
.modal-overlay {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(0, 0, 0, 0.55);
  z-index: 800;
}

.modal-overlay[hidden] {
  display: none;
}

.modal-panel {
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border-strong);
  border-radius: 10px;
  padding: 26px 24px;
  width: min(90vw, 360px);
  color: var(--afpt-ink);
}

:root[data-theme="fitness"] .modal-panel {
  background: rgba(27, 13, 42, 0.97);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.modal-panel h2,
.modal-panel h4 {
  margin: 0 0 12px 0;
  font-size: 14px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--afpt-accent);
}

.modal-panel p {
  margin: 0 0 16px 0;
  font-size: 14px;
  color: var(--afpt-ink-dim);
  line-height: 1.5;
}

.install-instructions,
.build-info {
  color: var(--afpt-ink-dim);
  font-size: 13px;
  line-height: 1.5;
  margin: 0 0 16px 0;
}

.install-instructions ol {
  margin: 8px 0 0 20px;
  padding: 0;
}

.install-instructions li {
  margin: 5px 0;
}

.build-info dl {
  display: grid;
  gap: 8px;
  grid-template-columns: max-content minmax(0, 1fr);
  margin: 12px 0 0;
}

.build-info dt {
  color: var(--afpt-ink);
  font-weight: 700;
}

.build-info dd {
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
}

.modal-panel pre {
  margin: 0 0 16px 0;
  font-size: 12px;
  color: var(--afpt-ink-dim);
  white-space: pre-wrap;
  word-break: break-word;
}

.modal-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.modal-panel button {
  background: transparent;
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  letter-spacing: 1px;
  padding: 9px 18px;
  border-radius: 5px;
  cursor: pointer;
}

.modal-panel button:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

/* ─── Chart drawer ─────────────────────────────────────────────── */
.chart-drawer {
  position: fixed;
  inset: 0;
  z-index: 1000;
  pointer-events: none;
  overscroll-behavior: none;
}

.chart-drawer[hidden] {
  display: none;
}

body.chart-drawer-open {
  overflow: hidden;
  overscroll-behavior: none;
}

.chart-drawer__scrim {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.45);
  border: none;
  cursor: default;
  pointer-events: auto;
  padding: 0;
}

.chart-drawer__panel {
  position: absolute;
  top: 0;
  right: max(0px, calc((100vw - var(--afpt-app-max-width)) / 2));
  bottom: 0;
  width: min(460px, 88vw);
  background: var(--afpt-panel);
  border-left: 1px solid var(--afpt-border-strong);
  pointer-events: auto;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  overflow-x: hidden;
  overscroll-behavior: contain;
}

:root[data-theme="fitness"] .chart-drawer__panel {
  background: rgba(27, 13, 42, 0.97);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.chart-drawer__header {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: var(--afpt-panel);
  border-bottom: 1px solid var(--afpt-border);
  flex-shrink: 0;
}

:root[data-theme="fitness"] .chart-drawer__header {
  background: rgba(27, 13, 42, 0.97);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.chart-drawer__header h2 {
  margin: 0;
  font-size: 12px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
}

.close-btn {
  background: transparent;
  border: 1px solid var(--afpt-border);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 1px;
  padding: 6px 12px;
  border-radius: 5px;
  cursor: pointer;
}

.close-btn:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

/* Chart modal controls */
.chart-reference-row,
.chart-ctrl-row {
  display: grid;
  gap: 8px;
  padding: 10px 14px 0;
  flex-shrink: 0;
}

.chart-ctrl-row {
  grid-template-columns: minmax(120px, max-content) minmax(0, 1fr);
}

.chart-reference-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}

.chart-ctrl-sel,
.chart-demo-sel {
  width: 100%;
  min-width: 0;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 13px;
  padding: 7px 28px 7px 10px;
  border-radius: 6px;
  outline: none;
  cursor: pointer;
}

.chart-ctrl-sel:focus,
.chart-demo-sel:focus {
  border-color: var(--afpt-accent);
}

.chart-reference-btn {
  background: transparent;
  border: 1px solid var(--afpt-border-strong);
  border-radius: 6px;
  color: var(--afpt-ink);
  cursor: pointer;
  font-family: inherit;
  font-size: 12px;
  letter-spacing: 1px;
  min-width: 0;
  padding: 7px 10px;
  text-transform: uppercase;
  white-space: nowrap;
  width: 100%;
}

.chart-reference-btn:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

.chart-demo-row {
  display: flex;
  gap: 8px;
  padding: 8px 14px 0;
  flex-shrink: 0;
}

.chart-reference-row[hidden],
.chart-ctrl-row[hidden],
.chart-demo-row[hidden] {
  display: none;
}

.chart-demo-sel {
  flex: 1;
  font-size: 12px;
  padding: 6px 28px 6px 8px;
  border-radius: 5px;
}

.chart-drawer__image-frame {
  flex: 1 1 auto;
  min-height: 0;
  overflow: auto;
  padding: 14px;
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overscroll-behavior: contain;
}

.chart-drawer__image-frame img {
  max-width: 100%;
  height: auto;
  display: block;
  border-radius: 4px;
}

/* ─── Chart content (generated HTML tables) ───────────────────── */
.chart-content {
  padding: 0;
  width: 100%;
}

.chart-reference {
  margin: 0;
  width: 100%;
}

.chart-reference + .chart-reference {
  margin-top: 18px;
}

.chart-reference__frame {
  background: #ffffff;
  border: 1px solid var(--afpt-border);
  border-radius: 6px;
  overflow: hidden;
}

.chart-reference__image {
  display: block;
  height: auto;
  width: 100%;
}

.chart-reference__caption {
  color: var(--afpt-ink-dim);
  font-size: 11px;
  letter-spacing: 1px;
  line-height: 1.4;
  margin-top: 10px;
  text-transform: uppercase;
}

.chart-meta {
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
  margin: 0 0 12px 0;
}

.chart-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.chart-th {
  text-align: left;
  padding: 6px 8px;
  font-size: 10px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
  border-bottom: 1px solid var(--afpt-border);
}

.chart-cell {
  padding: 7px 8px;
  color: var(--afpt-ink);
  border-bottom: 1px solid var(--afpt-border);
  font-variant-numeric: tabular-nums;
}

.chart-cell--score {
  color: var(--afpt-accent-2);
  font-weight: 700;
}

.chart-hamr-level {
  color: inherit;
  display: inline;
  font: inherit;
  letter-spacing: inherit;
  line-height: inherit;
  margin-left: 4px;
  white-space: nowrap;
}

.chart-cell--delta {
  font-size: 11px;
  letter-spacing: 1px;
  white-space: nowrap;
}

.chart-row--you .chart-cell {
  background: color-mix(in oklab, var(--afpt-accent) 10%, transparent);
  color: var(--afpt-accent);
}

.chart-you {
  font-size: 11px;
  font-weight: 700;
  color: var(--afpt-accent);
  margin-left: 6px;
  white-space: nowrap;
}

.chart-empty {
  font-size: 13px;
  color: var(--afpt-ink-dim);
  text-align: center;
  padding: 24px 16px;
  margin: 0;
  line-height: 1.5;
}

.chart-empty strong {
  color: var(--afpt-accent);
}

.delta--current {
  color: var(--afpt-accent);
  font-weight: 700;
}

.delta--met {
  color: var(--afpt-accent-2);
}

.delta--need {
  color: var(--afpt-warn);
  font-weight: 700;
}

.delta--na {
  color: var(--afpt-ink-dim);
}

/* ─── Score ring (fitness + blues themes) ─────────────────────── */
.score-ring-wrap {
  display: none;
  justify-content: center;
  padding: 12px 0 4px;
}

:root[data-theme="fitness"] .score-ring-wrap,
:root[data-theme="blues"] .score-ring-wrap {
  display: flex;
}

:root[data-theme="fitness"] .score-bar-wrap,
:root[data-theme="fitness"] .score-bar-labels,
:root[data-theme="blues"] .score-bar-wrap,
:root[data-theme="blues"] .score-bar-labels {
  display: none;
}

:root[data-theme="fitness"] .score-ring-svg { width: 176px; height: 176px; }
:root[data-theme="blues"] .score-ring-svg { width: 132px; height: 132px; }

.score-ring-track {
  stroke: var(--afpt-panel-2);
}

.score-ring-arc {
  stroke: var(--afpt-accent);
  transition: stroke-dasharray 0.3s ease;
}

:root[data-theme="fitness"] .score-ring-arc { stroke: url(#fitness-ring-grad); }
:root[data-theme="blues"] .score-ring-arc { stroke: var(--afpt-accent-2); }

.score-ring-num {
  font-family: inherit;
  font-weight: 700;
  fill: var(--afpt-ink);
  font-size: 38px;
  letter-spacing: -1px;
  dominant-baseline: middle;
}

.score-ring-cat {
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 2px;
  fill: var(--afpt-ink-dim);
}

/* ─── Score stencil bar ────────────────────────────────────────── */
.score-stencil-bar {
  display: none;
  position: relative;
  margin: 2px 0 20px;
}

:root[data-theme="stencil"] .score-stencil-bar { display: block; }
:root[data-theme="stencil"] .score-bar-wrap,
:root[data-theme="stencil"] .score-bar-labels { display: none; }

.score-stencil-segments {
  display: flex;
  height: 10px;
  border-radius: 3px;
  overflow: hidden;
  gap: 1px;
}

.score-stencil-seg--unsat { background: var(--afpt-bad); opacity: 0.7; }
.score-stencil-seg--sat   { background: var(--afpt-warn); opacity: 0.8; }
.score-stencil-seg--exc   { background: var(--afpt-accent-2); }

.score-stencil-marker {
  position: absolute;
  bottom: -18px;
  font-size: 9px;
  letter-spacing: 1.5px;
  font-weight: 700;
  color: var(--afpt-accent);
  transform: translateX(-50%);
  white-space: nowrap;
}

.score-stencil-marker::before {
  content: '▲';
  display: block;
  text-align: center;
  font-size: 8px;
  line-height: 1;
  margin-bottom: 1px;
}

/* ─── Body editor ──────────────────────────────────────────────── */
.body-event-label {
  font-size: 12px;
  color: var(--afpt-ink-dim);
  letter-spacing: 0.5px;
}

.body-stepper {
  display: grid;
  grid-template-columns: 24px minmax(38px, 1fr) 24px;
  align-items: center;
  gap: 4px;
  min-width: 0;
}

.body-stepper .body-step-btn {
  width: 24px;
  height: 24px;
  border-radius: 3px;
  border: 1px solid var(--afpt-border-strong);
  background: var(--afpt-panel);
  color: var(--afpt-ink);
  font-family: inherit;
  font-size: 15px;
  font-weight: 800;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  user-select: none;
  -webkit-user-select: none;
}

.body-stepper .body-step-btn:hover {
  background: transparent;
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--afpt-accent) 45%, transparent);
}

.body-stepper .body-step-btn:active {
  transform: scale(0.94);
  opacity: 0.8;
}

.body-stepper .body-measure-input {
  padding-left: 4px;
  padding-right: 4px;
}

/* ─── Run slider direction flip (time events: right = better) ──── */
#cardio-editor[data-event-kind="time"] .slider-container {
  transform: scaleX(-1);
}

/* ─── Per-theme slider thumb shapes ───────────────────────────── */

/* Tactical: diamond */
:root[data-theme="tactical"] .value-slider::-webkit-slider-thumb {
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  border-radius: 0;
  width: 20px;
  height: 20px;
  border: none;
  box-shadow: 0 0 6px var(--afpt-accent), 0 0 12px rgba(29, 233, 255, 0.3);
}

:root[data-theme="tactical"] .value-slider::-moz-range-thumb {
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  border-radius: 0;
  width: 20px;
  height: 20px;
  border: none;
  box-shadow: 0 0 6px var(--afpt-accent);
}

/* Stencil: rectangular block */
:root[data-theme="stencil"] .value-slider::-webkit-slider-thumb {
  border-radius: 2px;
  width: 12px;
  height: 26px;
  margin-top: -10px;
}

:root[data-theme="stencil"] .value-slider::-moz-range-thumb {
  border-radius: 2px;
  width: 12px;
  height: 26px;
}

/* Blues: circle with brass/gold accent border */
:root[data-theme="blues"] .value-slider::-webkit-slider-thumb {
  background: var(--afpt-ink);
  border: 3px solid var(--afpt-accent-2);
}

:root[data-theme="blues"] .value-slider::-moz-range-thumb {
  background: var(--afpt-ink);
  border: 3px solid var(--afpt-accent-2);
}

/* Fitness: larger circle with glow */
:root[data-theme="fitness"] .value-slider::-webkit-slider-thumb {
  width: 24px;
  height: 24px;
  margin-top: -9px;
  background: var(--afpt-accent);
  border: none;
  box-shadow: 0 0 8px var(--afpt-accent), 0 0 20px rgba(255, 93, 171, 0.4);
}

:root[data-theme="fitness"] .value-slider::-moz-range-thumb {
  width: 24px;
  height: 24px;
  background: var(--afpt-accent);
  border: none;
  box-shadow: 0 0 8px var(--afpt-accent);
}

/* ─── Lap display variants ─────────────────────────────────────── */

/* Tactical HUD */
.lap-hud {
  padding: 10px;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border);
  border-radius: 6px;
  margin-top: 6px;
}

.lap-hud-header {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 8px;
}

.lap-hud-title {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-accent);
  font-weight: 700;
}

.lap-hud-sub {
  font-size: 11px;
  color: var(--afpt-ink-dim);
}

.lap-hud-rows {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lap-hud-row {
  display: grid;
  grid-template-columns: 20px 70px 70px 1fr;
  gap: 8px;
  align-items: center;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.lap-hud-n { color: var(--afpt-ink-dim); font-size: 11px; }
.lap-hud-pace { color: var(--afpt-ink); }
.lap-hud-split { color: var(--afpt-ink-dim); }

.lap-hud-bar {
  height: 4px;
  background: var(--afpt-panel);
  border-radius: 2px;
  overflow: hidden;
}

.lap-hud-bar-fill {
  height: 100%;
  background: var(--afpt-accent);
  border-radius: 2px;
  box-shadow: 0 0 4px var(--afpt-accent);
}

/* Fitness SVG oval track */
.lap-track-wrap {
  margin-top: 8px;
  padding: 10px 0;
}

.lap-track-header {
  font-size: 11px;
  color: var(--afpt-ink-dim);
  text-align: center;
  margin-bottom: 6px;
}

.lap-track-title {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-accent);
  font-weight: 700;
}

.lap-track-svg {
  width: 100%;
  max-width: 280px;
  display: block;
  margin: 0 auto;
}

.lap-track-oval {
  fill: none;
  stroke: var(--afpt-accent);
  stroke-width: 6;
  opacity: 0.4;
}

.lap-track-dot {
  fill: var(--afpt-accent);
}

.lap-track-num {
  fill: var(--afpt-bg);
  font-size: 8px;
  text-anchor: middle;
  dominant-baseline: central;
  font-family: inherit;
  font-weight: 700;
  pointer-events: none;
}

.lap-track-note {
  font-size: 11px;
  color: var(--afpt-ink-dim);
  text-align: center;
  margin: 6px 0 0;
}

/* Blues clean table */
.lap-table-wrap {
  margin-top: 8px;
}

.lap-table-header {
  font-size: 13px;
  font-weight: 600;
  color: var(--afpt-ink);
  margin-bottom: 8px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.lap-table-header span {
  font-size: 11px;
  color: var(--afpt-ink-dim);
  font-weight: 400;
}

.lap-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}

.lap-table th {
  text-align: left;
  padding: 6px 8px;
  font-size: 10px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--afpt-ink-dim);
  border-bottom: 1px solid var(--afpt-border);
}

.lap-table td {
  padding: 8px 8px;
  color: var(--afpt-ink);
  border-bottom: 1px solid var(--afpt-border);
}

.lap-table-row--alt td {
  background: var(--afpt-panel-2);
}

/* Stencil bar chart */
.lap-bars {
  margin-top: 8px;
}

.lap-bars-header {
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--afpt-accent);
  font-weight: 700;
  margin-bottom: 8px;
}

.lap-bars-chart {
  display: flex;
  gap: 3px;
  align-items: flex-end;
  height: 72px;
  margin-bottom: 6px;
}

.lap-bar-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  flex: 1;
  height: 100%;
  gap: 2px;
}

.lap-bar-pace {
  font-size: 8px;
  color: var(--afpt-ink-dim);
  letter-spacing: 0;
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.lap-bar-track {
  flex: 1;
  width: 100%;
  background: var(--afpt-panel-2);
  border-radius: 2px;
  position: relative;
  overflow: hidden;
}

.lap-bar-fill {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: var(--afpt-accent);
  transition: height 0.2s;
}

.lap-bar-index {
  font-size: 9px;
  color: var(--afpt-ink-dim);
  letter-spacing: 0.5px;
}

.lap-bars-splits {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 8px;
  font-size: 11px;
  color: var(--afpt-ink-dim);
  font-variant-numeric: tabular-nums;
}

/* Light card rows */
.lap-rows-wrap {
  margin-top: 8px;
}

.lap-rows-header {
  font-size: 13px;
  font-weight: 600;
  color: var(--afpt-ink);
  margin-bottom: 8px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.lap-rows-header span {
  font-size: 11px;
  color: var(--afpt-ink-dim);
  font-weight: 400;
}

.lap-row {
  display: grid;
  grid-template-columns: 20px 64px 1fr 64px;
  gap: 10px;
  padding: 8px 0;
  align-items: center;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}

.lap-row--sep {
  border-bottom: 1px solid var(--afpt-border);
}

.lap-row-n   { color: var(--afpt-ink-dim); font-weight: 600; }
.lap-row-pace  { color: var(--afpt-ink); font-weight: 600; }
.lap-row-split { color: var(--afpt-ink-dim); text-align: right; }

.lap-row-bar {
  height: 5px;
  background: var(--afpt-panel-2);
  border-radius: 3px;
  overflow: hidden;
  position: relative;
}

.lap-row-bar-fill {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  background: var(--afpt-accent);
  border-radius: 3px;
}

/* ═══════════════════════════════════════════════════════════════════
   TACTICAL THEME — HUD / terminal character
   ═══════════════════════════════════════════════════════════════════ */

/* Scanline CRT effect on body */
:root[data-theme="tactical"] body {
  background-image: repeating-linear-gradient(
    0deg,
    transparent 0,
    transparent 2px,
    rgba(29, 233, 255, 0.025) 2px,
    rgba(29, 233, 255, 0.025) 3px
  );
}

/* Active chip: glow indicator dot in corner */
:root[data-theme="tactical"] .component-chip {
  position: relative;
}
:root[data-theme="tactical"] .component-chip.chip--active::after {
  content: '';
  position: absolute;
  top: 6px;
  right: 6px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--afpt-accent);
  box-shadow: 0 0 8px var(--afpt-accent), 0 0 16px rgba(29, 233, 255, 0.5);
}

/* Score badge: glow on excellent */
:root[data-theme="tactical"] .score-badge[data-category="excellent"] {
  box-shadow: 0 0 8px rgba(55, 255, 139, 0.35);
}

/* Demographics labels: slightly larger for readability */
:root[data-theme="tactical"] .demo-label {
  font-size: 12px;
  letter-spacing: 1.5px;
  color: var(--afpt-accent);
}

/* Score row: 3-column grid — label | number | badge, all centered */
:root[data-theme="tactical"] .score-main-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  align-items: center;
  justify-items: center;
  margin-bottom: 10px;
}
:root[data-theme="tactical"] .score-comp-label {
  justify-self: start;
}
:root[data-theme="tactical"] .score-badge {
  justify-self: end;
}

/* TOTAL SCORE label: more prominent */
:root[data-theme="tactical"] .score-comp-label {
  font-size: 12px;
  letter-spacing: 3px;
  color: var(--afpt-accent);
  font-weight: 700;
}

/* ═══════════════════════════════════════════════════════════════════
   STENCIL THEME — military / block-print ops
   ═══════════════════════════════════════════════════════════════════ */

/* Dot-grid background */
:root[data-theme="stencil"] body {
  background-image: radial-gradient(circle at 1px 1px, rgba(213, 196, 128, 0.06) 1px, transparent 0);
  background-size: 12px 12px;
}

/* Body font: Special Elite / Courier falls back to monospace */
:root[data-theme="stencil"] body {
  font-family: "Special Elite", "Courier Prime", "Courier New", monospace;
}

/* Header: thick accent bottom border for stencil stamp feel */
:root[data-theme="stencil"] .app-header {
  border-bottom: 2px solid var(--afpt-accent);
}

/* Title: accent color, stencil weight */
:root[data-theme="stencil"] .app-title {
  font-family: "Special Elite", "Courier New", monospace;
  letter-spacing: 4px;
}

/* Score section: centered layout matching tactical grid quality */
:root[data-theme="stencil"] .score-section {
  text-align: center;
}
:root[data-theme="stencil"] .score-main-row {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  align-items: center;
  justify-items: center;
  margin-bottom: 10px;
}
:root[data-theme="stencil"] .score-comp-label {
  justify-self: start;
}
:root[data-theme="stencil"] .score-badge {
  justify-self: end;
}

/* Score number: large accent-colored stencil display value */
:root[data-theme="stencil"] .score-number {
  font-size: 62px;
  color: var(--afpt-accent);
  letter-spacing: 3px;
}

:root[data-theme="stencil"] .altitude-row {
  padding: 16px 0px;
}

/* Active chip: filled accent block with clip-path cut corners */
:root[data-theme="stencil"] .component-chip.chip--active {
  background: var(--afpt-accent);
  color: var(--afpt-bg);
  border-top-color: transparent;
  clip-path: polygon(0 0, calc(100% - 8px) 0, 100% 8px, 100% 100%, 8px 100%, 0 calc(100% - 8px));
}
:root[data-theme="stencil"] .component-chip.chip--active .chip-name,
:root[data-theme="stencil"] .component-chip.chip--active .chip-value {
  color: var(--afpt-bg);
}
:root[data-theme="stencil"] .component-chip.chip--active .chip-score {
  color: var(--afpt-bg);
  opacity: 0.75;
}

/* ═══════════════════════════════════════════════════════════════════
   BLUES THEME — formal dress uniform
   ═══════════════════════════════════════════════════════════════════ */

/* Body font: Inter / system sans-serif */
:root[data-theme="blues"] body {
  font-family: "Inter Tight", "Inter", system-ui, sans-serif;
}

/* Header: gradient panel + brass bottom border */
:root[data-theme="blues"] .app-header {
  background: linear-gradient(180deg, var(--afpt-panel-2), var(--afpt-panel));
  border-bottom: 1px solid var(--afpt-accent-2);
}

/* Title: wider spacing, formal weight */
:root[data-theme="blues"] .app-title {
  font-family: "Bebas Neue", "Oswald", "Inter Tight", system-ui, sans-serif;
  letter-spacing: 5px;
  font-size: 20px;
  color: var(--afpt-ink);
}

/* Component strip: card grid with gaps */
:root[data-theme="blues"] .component-strip {
  background: none;
  gap: 8px;
  padding: 0px;
  border-bottom: none;
}
:root[data-theme="blues"] .component-strip::after,
:root[data-theme="light"] .component-strip::after,
:root[data-theme="fitness"] .component-strip::after {
  display: none;
}
:root[data-theme="blues"] .component-chip {
  border-radius: 8px;
  border: 1px solid var(--afpt-border);
  background: var(--afpt-panel);
  padding: 10px 8px;
}
:root[data-theme="blues"] .component-chip:hover {
  border-color: var(--afpt-border-strong);
  background: var(--afpt-panel-2);
}
:root[data-theme="blues"] .component-chip.chip--active {
  border: 1px solid var(--afpt-accent-2);
  border-top: 1px solid var(--afpt-accent-2);
  background: var(--afpt-panel-2);
  color: var(--afpt-ink);
  box-shadow: 0 0 0 2px rgba(226, 194, 117, 0.2);
}
:root[data-theme="blues"] .component-chip.chip--active .chip-score {
  color: var(--afpt-accent-2);
}

/* Blues score section: label LEFT, ring CENTER, status RIGHT */
:root[data-theme="blues"] .score-section {
  padding: 18px 16px 14px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
}

:root[data-theme="blues"] .score-main-row {
  display: contents;
}

:root[data-theme="blues"] .score-comp-label {
  grid-column: 1;
  justify-self: center;
  text-align: center;
}

:root[data-theme="blues"] .score-ring-wrap {
  grid-column: 2;
  grid-row: 1;
  padding: 0;
}

/* Ring already shows the number; hide the redundant text number */
:root[data-theme="blues"] .score-number {
  display: none;
}
:root[data-theme="blues"] .score-ring-num {
  font-size: 38px;
  font-weight: 700;
  fill: var(--afpt-ink);
}
:root[data-theme="blues"] .score-ring-num[data-len="4"] { font-size: 34px; }
:root[data-theme="blues"] .score-ring-num[data-len="5"] { font-size: 30px; }
:root[data-theme="blues"] .score-ring-cat {
  display: none;
}
:root[data-theme="blues"] .score-badge {
  grid-column: 3;
  justify-self: center;
  margin-top: 0;
  font-size: 11px;
  letter-spacing: 2px;
  border-radius: 3px;
  text-align: center;
}

/* ALT selector row: panel background card, vertically centered */
:root[data-theme="blues"] .altitude-row,
:root[data-theme="tactical"] .altitude-row {
  background: var(--afpt-panel-2);
  border-radius: 6px;
  padding: 8px 10px;
  border-top: none;
  align-items: center;
}

:root[data-theme="blues"] .altitude-row,
:root[data-theme="tactical"] .altitude-row {
  margin: 0px 0px 16px;
}

/* Pace plan: matching Fitness theme padding */
:root[data-theme="blues"] .lap-display {
  padding: 14px 10px;
}

/* ═══════════════════════════════════════════════════════════════════
   LIGHT (CONNECT) THEME — clean mobile app card style
   ═══════════════════════════════════════════════════════════════════ */

/* Body font: Inter / system sans */
:root[data-theme="light"] body {
  font-family: "Inter", system-ui, sans-serif;
}

/* Header: white card with subtle shadow */
:root[data-theme="light"] .app-header {
  box-shadow: 0 1px 6px rgba(20, 30, 55, 0.05);
}

/* Title: clean sans, ink */
:root[data-theme="light"] .app-title {
  font-family: "Inter", system-ui, sans-serif;
  font-size: 18px;
  letter-spacing: -0.3px;
  color: var(--afpt-ink);
}

/* Score section: rounded card with shadow */
:root[data-theme="light"] .score-section {
  margin: 14px 16px 0;
  border-radius: 14px;
  border: 1px solid var(--afpt-border);
  box-shadow: 0 2px 8px rgba(20, 30, 55, 0.05);
  background: var(--afpt-panel);
  padding: 16px;
  text-align: center;
}

:root[data-theme="light"] .score-main-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
  justify-items: center;
  gap: 12px;
  margin-bottom: 10px;
}

:root[data-theme="light"] .score-comp-label,
:root[data-theme="light"] .score-badge {
  justify-self: center;
  text-align: center;
}

/* Score badge: pill shape */
:root[data-theme="light"] .score-badge {
  border-radius: 999px;
  font-weight: 600;
}
:root[data-theme="light"] .score-badge[data-category="excellent"] {
  background: rgba(31, 138, 91, 0.1);
}
:root[data-theme="light"] .score-badge[data-category="satisfactory"] {
  background: rgba(217, 119, 6, 0.1);
}

/* Component strip: card grid with padding */
:root[data-theme="light"] .component-strip {
  background: none;
  gap: 8px;
  padding: 14px 16px;
  border-bottom: none;
}
:root[data-theme="light"] .component-chip {
  border-radius: 12px;
  border: 1px solid var(--afpt-border);
  background: var(--afpt-panel);
  box-shadow: 0 1px 3px rgba(20, 30, 55, 0.05);
  padding: 10px 8px;
}
:root[data-theme="light"] .component-chip:hover {
  border-color: var(--afpt-border-strong);
}
:root[data-theme="light"] .component-chip.chip--active {
  border: 2px solid var(--afpt-accent);
  border-top: 2px solid var(--afpt-accent);
  background: var(--afpt-panel);
  box-shadow: 0 2px 12px rgba(42, 111, 219, 0.15);
}
:root[data-theme="light"] .component-chip.chip--active .chip-value {
  color: var(--afpt-accent);
}

/* Light editor: rounded card */
:root[data-theme="light"] .editors-container {
  padding: 0 16px 16px;
}
:root[data-theme="light"] .editor-panel {
  background: var(--afpt-panel);
  border-radius: 14px;
  border: 1px solid var(--afpt-border);
  box-shadow: 0 2px 8px rgba(20, 30, 55, 0.04);
  padding: 16px;
}

:root[data-theme="light"] .lap-display {
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border);
  border-radius: 14px;
  box-shadow: 0 2px 8px rgba(20, 30, 55, 0.04);
  padding: 16px;
}

/* ═══════════════════════════════════════════════════════════════════
   FITNESS THEME — direct port of mock-fitness.jsx
   ═══════════════════════════════════════════════════════════════════ */

/* ─── Gradient background ──────────────────────────────────────── */
:root[data-theme="fitness"] body {
  background: linear-gradient(160deg, #2b1456 0%, #6b1a5e 45%, #c92a7c 100%);
  background-attachment: fixed;
}

/* ─── Header ───────────────────────────────────────────────────── */
:root[data-theme="fitness"] .app-header {
  background: rgba(255, 255, 255, 0.08);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

:root[data-theme="fitness"] .app-title {
  color: #fff;
  font-family: "Inter", system-ui, sans-serif;
  font-size: 18px;
  letter-spacing: 0.8px;
}

/* ─── Demographics row ─────────────────────────────────────────── */
:root[data-theme="fitness"] .demographics-row {
  background: transparent;
  border-bottom: none;
}

:root[data-theme="fitness"] .demo-select {
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 8px;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

/* ─── Score section ────────────────────────────────────────────── */
:root[data-theme="fitness"] .score-section,
:root[data-theme="blues"] .score-section {
  background: transparent;
  border-bottom: none;
  padding: 8px 16px 8px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  gap: 12px;
}

:root[data-theme="fitness"] .score-section {
  margin: 8px 16px 14px;
  padding: 16px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: 20px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

:root[data-theme="fitness"] .score-main-row {
  display: contents;
}

:root[data-theme="fitness"] .score-comp-label {
  grid-column: 1;
  justify-self: center;
  color: rgba(255, 255, 255, 0.72);
  font-size: 10px;
  letter-spacing: 1.5px;
  line-height: 1.15;
  text-align: center;
}

:root[data-theme="fitness"] .score-number {
  display: none;
}

:root[data-theme="fitness"] .score-badge {
  grid-column: 3;
  justify-self: center;
  color: rgba(255, 255, 255, 0.9);
  border-color: rgba(255, 255, 255, 0.28);
  font-size: 10px;
  letter-spacing: 1.5px;
  text-align: center;
}

:root[data-theme="fitness"] .score-ring-wrap {
  grid-column: 2;
  grid-row: 1;
  padding: 0;
}

/* Keep the ring centered and responsive in the three-column score row. */
:root[data-theme="fitness"] .score-ring-svg,
:root[data-theme="blues"] .score-ring-svg {
  width: clamp(140px, 38vw, 172px);
  height: clamp(140px, 38vw, 172px);
}

/* Score number: large white bold per mock */
:root[data-theme="fitness"] .score-ring-num {
  font-size: 50px;
  font-weight: 700;
  fill: #fff;
  letter-spacing: -1px;
}
/* Shrink for decimal scores (4+ chars like 75.5) to prevent ring overflow */
:root[data-theme="fitness"] .score-ring-num[data-len="4"] { font-size: 39px; }
:root[data-theme="fitness"] .score-ring-num[data-len="5"] { font-size: 34px; }

:root[data-theme="fitness"] .score-ring-cat {
  display: none;
}

/* ─── Score ring deltas ────────────────────────────────────────── */
.score-ring-deltas {
  display: none;
  justify-content: center;
  gap: 10px;
  font-size: 11px;
  color: rgba(255, 255, 255, 0.7);
  margin-top: -4px;
  font-variant-numeric: tabular-nums;
}

:root[data-theme="fitness"] .score-ring-deltas {
  display: flex;
  grid-column: 1 / -1;
  justify-self: center;
  margin-top: -2px;
}

/* ─── Body composition — glass card ───────────────────────────── */
:root[data-theme="fitness"] .body-comp-row {
  margin: 0 16px 14px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

:root[data-theme="fitness"] .bc-label {
  display: none;
}

.fit-body-header {
  display: none;
  justify-content: space-between;
  align-items: center;
}

:root[data-theme="fitness"] .fit-body-header {
  display: flex;
}

.fit-body-title {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 1px;
}

.fit-body-badge {
  font-size: 10px;
  letter-spacing: 1.5px;
  font-weight: 700;
  padding: 3px 9px;
  border-radius: 999px;
}

.fit-body-badge[data-pass="true"] {
  background: rgba(123, 228, 168, 0.18);
  color: #7be4a8;
  border: 1px solid rgba(123, 228, 168, 0.4);
}

.fit-body-badge[data-pass="false"] {
  background: rgba(255, 138, 161, 0.18);
  color: #ff8aa1;
  border: 1px solid rgba(255, 138, 161, 0.4);
}

/* ─── Component strip ──────────────────────────────────────────── */
:root[data-theme="fitness"] .component-strip {
  background: transparent;
  border-bottom: none;
  padding: 0 16px 14px;
  gap: 8px;
}

:root[data-theme="fitness"] .component-chip {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 16px;
  padding: 12px 10px;
  color: #fff;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: background 0.2s, box-shadow 0.2s;
}

:root[data-theme="fitness"] .component-chip:hover {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
}

:root[data-theme="fitness"] .component-chip.chip--active {
  background: #fff;
  color: #3a0f4d;
  border: 1px solid rgba(255, 255, 255, 0.15);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);
}

:root[data-theme="fitness"] .component-chip.chip--active .chip-score {
  color: rgba(58, 15, 77, 0.7);
}

:root[data-theme="fitness"] .chip-name {
  color: inherit;
}

:root[data-theme="fitness"] .chip-score {
  color: rgba(255, 255, 255, 0.7);
}

/* ─── Editor panels — glass card ──────────────────────────────── */
:root[data-theme="fitness"] .editor-panel {
  margin: 0 0 14px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 20px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  padding: 16px;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  gap: 12px;
}

:root[data-theme="fitness"] .editor-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  padding-bottom: 8px;
}

:root[data-theme="fitness"] .editor-title {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.85);
  letter-spacing: 1px;
  text-transform: none;
}

:root[data-theme="fitness"] .event-select {
  background: rgba(0, 0, 0, 0.18);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 8px;
}

/* ─── Segmented event controls (all themes) ───────────────────── */
.fit-seg-ctrl {
  display: flex;
  background: var(--afpt-panel-2);
  border: 1px solid var(--afpt-border-strong);
  border-radius: 999px;
  padding: 3px;
  gap: 2px;
}

.fit-seg-btn {
  flex: 1;
  padding: 5px 10px;
  font-size: 11px;
  font-weight: 600;
  background: transparent;
  color: var(--afpt-ink-dim);
  border: none;
  border-radius: 999px;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s, color 0.15s;
  white-space: nowrap;
}

.fit-seg-btn.fit-seg-btn--active {
  background: var(--afpt-accent);
  color: var(--afpt-bg);
}

/* 4-button controls: tighter padding + smaller font */
#sit-seg-ctrl .fit-seg-btn,
#run-seg-ctrl .fit-seg-btn {
  padding: 5px 5px;
  font-size: 10px;
}

/* Fitness: glass background + white active pill */
:root[data-theme="fitness"] .fit-seg-ctrl {
  background: rgba(0, 0, 0, 0.18);
  border-color: var(--afpt-border-strong);
}
:root[data-theme="fitness"] .fit-seg-btn {
  color: rgba(255, 255, 255, 0.7);
}
:root[data-theme="fitness"] .fit-seg-btn.fit-seg-btn--active {
  background: #fff;
  color: #3a0f4d;
}

/* Tactical: HUD feel */
:root[data-theme="tactical"] .fit-seg-ctrl {
  background: rgba(0, 0, 0, 0.3);
  border: 1px solid var(--afpt-border-strong);
}
:root[data-theme="tactical"] .fit-seg-btn {
  color: var(--afpt-ink-dim);
  letter-spacing: 0.5px;
}
:root[data-theme="tactical"] .fit-seg-btn.fit-seg-btn--active {
  background: var(--afpt-accent);
  color: var(--afpt-bg);
}

/* ─── Fitness slider — white thumb, subtle track ───────────────── */
:root[data-theme="fitness"] .value-slider {
  background: rgba(255, 255, 255, 0.15);
  border-color: transparent;
}

:root[data-theme="fitness"] .value-slider::-webkit-slider-runnable-track {
  height: 4px;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 4px;
}

:root[data-theme="fitness"] .value-slider::-moz-range-track {
  height: 4px;
  background: rgba(255, 255, 255, 0.15);
  border-radius: 4px;
}

:root[data-theme="fitness"] .value-slider::-webkit-slider-thumb {
  width: 22px;
  height: 22px;
  margin-top: -9px;
  background: #fff;
  border: none;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
}

:root[data-theme="fitness"] .value-slider::-moz-range-thumb {
  width: 22px;
  height: 22px;
  background: #fff;
  border: none;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.25);
}

/* ─── Fitness lap plan — glass card wrapper ────────────────────── */
:root[data-theme="fitness"] .lap-display {
  background: rgba(255, 255, 255, 0.06);
  border-radius: 16px;
  border: 1px solid rgba(255, 255, 255, 0.10);
  padding: 14px 10px;
  border-top: none;
  margin-top: 4px;
}

:root[data-theme="fitness"] .lap-display:empty {
  display: none;
}

/* ─── Fitness lap fitness inner elements ──────────────────────── */
.lap-fitness {
  padding: 0;
}

.lap-fitness__hdr {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 2px;
  padding: 0 4px;
}

.lap-fitness__title {
  font-size: 13px;
  font-weight: 700;
  color: var(--afpt-ink);
  white-space: nowrap;
}

.lap-fitness__sub {
  font-size: 11px;
  color: var(--afpt-ink-dim);
  white-space: nowrap;
}

.lap-fitness__pace {
  color: var(--afpt-ink);
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.lap-fitness__cue {
  font-size: 10px;
  color: var(--afpt-ink-dim);
  margin: 0 0 4px;
  padding: 0 4px;
}

.lap-fitness__svg-wrap {
  display: flex;
  justify-content: center;
}

/* ─── Pace plan section wrapper ────────────────────────────────── */
/* PACE PLAN LOCKED: User approved this visual. Do not redesign. Only move/retheme. */
.pace-plan-section {
  padding: 0px 16px 0px;
}

.pace-readiness-layout {
  display: grid;
  gap: 16px;
}

.readiness-guide {
  margin: 0 16px 16px;
  padding: 16px;
  background: color-mix(in srgb, var(--afpt-panel) 94%, transparent);
  border: 1px solid var(--afpt-border);
  border-radius: 14px;
}

.readiness-guide__header {
  margin-bottom: 14px;
}

.readiness-guide__eyebrow {
  color: var(--afpt-accent);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 2px;
  line-height: 1;
  margin: 0 0 8px;
  text-transform: uppercase;
}

.readiness-guide h2 {
  color: var(--afpt-ink);
  font-size: clamp(22px, 6vw, 30px);
  letter-spacing: 0;
  line-height: 1.02;
  margin: 0;
  text-transform: none;
}

.readiness-guide__header p {
  color: var(--afpt-ink-dim);
  font-size: 13px;
  line-height: 1.45;
  margin: 9px 0 0;
}

.readiness-guide__grid {
  display: grid;
  gap: 10px;
}

.readiness-card {
  display: grid;
  gap: 6px;
  padding: 12px;
  background: color-mix(in srgb, var(--afpt-panel-2) 78%, transparent);
  border: 1px solid var(--afpt-border);
  border-radius: 10px;
}

.readiness-card h3 {
  color: var(--afpt-ink);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 1.2px;
  line-height: 1.2;
  margin: 0;
  text-transform: uppercase;
}

.readiness-card p {
  color: var(--afpt-ink-dim);
  font-size: 12px;
  line-height: 1.42;
  margin: 0;
}

.readiness-card strong {
  color: var(--afpt-ink);
}

.readiness-list {
  display: grid;
  gap: 7px;
}

.readiness-steps {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: readiness-step;
}

.readiness-steps li {
  position: relative;
  min-height: 24px;
  padding-left: 30px;
  color: var(--afpt-ink);
  font-size: 12px;
  line-height: 1.35;
}

.readiness-steps li::before {
  position: absolute;
  left: 0;
  top: -2px;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: 1px solid var(--afpt-border-strong);
  border-radius: 50%;
  color: var(--afpt-accent);
  content: counter(readiness-step);
  counter-increment: readiness-step;
  font-size: 10px;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}

.pace-plan-empty {
  font-size: 12px;
  color: var(--afpt-ink-dim);
  text-align: center;
  padding: 12px 0;
  margin: 0;
}

/* ─── Pace plan SVG CSS tokens (theme-agnostic base) ───────────── */
/* PACE PLAN LOCKED: User approved this visual. Do not redesign. Only move/retheme. */
.pace-track-ring {
  stroke: var(--afpt-border-strong);
}

.pace-track-dash {
  stroke: var(--afpt-border);
}

.pace-course-shape {
  transform-box: fill-box;
  transform-origin: center;
}

.pace-course-morph {
  pointer-events: none;
}

.pace-morph-track,
.pace-morph-line {
  fill: none;
  opacity: 0;
  pointer-events: none;
  stroke: var(--afpt-border-strong);
  stroke-linecap: round;
  transform-box: fill-box;
  transform-origin: center;
}

.pace-morph-track--to-route {
  animation: pace-track-to-route 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-track--to-out-back {
  animation: pace-track-to-outback 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--track-to-out {
  animation: pace-center-line-to-out 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--track-to-back {
  animation: pace-center-line-to-back 0.68s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--route-to-out {
  animation: pace-route-line-to-out 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--route-to-back {
  animation: pace-route-line-to-back 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--out-to-route {
  animation: pace-out-line-to-route 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--back-to-route {
  animation: pace-back-line-to-route 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--route-to-track {
  animation: pace-route-line-to-track 0.54s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--out-to-track {
  animation: pace-out-line-to-track 0.54s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.pace-morph-line--back-to-track {
  animation: pace-back-line-to-track 0.54s cubic-bezier(0.2, 0.8, 0.2, 1) both;
}

.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="route"] .pace-track-ring {
  animation: pace-track-expand-from-route 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  transform-box: fill-box;
  transform-origin: center;
}

.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="out-back"] .pace-track-ring {
  animation: pace-track-expand-from-lines 0.58s cubic-bezier(0.2, 0.8, 0.2, 1) both;
  transform-box: fill-box;
  transform-origin: center;
}

.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="route"] .pace-track-dash,
.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="out-back"] .pace-track-dash {
  animation: pace-fade-in 0.48s ease-out 0.1s both;
}

.pace-route-line,
.pace-outback-line {
  stroke: var(--afpt-border-strong);
  stroke-linecap: round;
}

.lap-fitness[data-course-transition="true"] .pace-route-line,
.lap-fitness[data-course-transition="true"] .pace-outback-line {
  animation: pace-line-draw 0.46s ease-out both;
}

.pace-route-dash,
.pace-outback-dash {
  stroke: var(--afpt-border);
  stroke-linecap: round;
  stroke-linejoin: round;
}

.lap-fitness[data-course-transition="true"] .pace-route-dash,
.lap-fitness[data-course-transition="true"] .pace-outback-dash {
  animation: pace-fade-in 0.52s ease-out both;
}

.lap-fitness[data-course-transition="true"] .pace-outback-line--back,
.lap-fitness[data-course-transition="true"] .pace-outback-dash--back {
  animation-delay: 0.08s;
}

.lap-fitness[data-course-transition="true"][data-course="route"] .pace-marker,
.lap-fitness[data-course-transition="true"][data-course="out-back"] .pace-marker {
  animation: pace-marker-rise 0.28s ease-out both;
}

.lap-fitness[data-course-transition="true"][data-course="route"] .pace-endpoint,
.lap-fitness[data-course-transition="true"][data-course="out-back"] .pace-endpoint,
.lap-fitness[data-course-transition="true"][data-course="route"] .pace-goal-display,
.lap-fitness[data-course-transition="true"][data-course="out-back"] .pace-goal-display,
.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="route"] .pace-goal-display,
.lap-fitness[data-course-transition="true"][data-course="track"][data-prev-course="out-back"] .pace-goal-display {
  animation: pace-control-settle 0.32s ease-out both;
}

.lap-fitness[data-course-transition="true"][data-course="route"] .pace-marker:nth-of-type(odd),
.lap-fitness[data-course-transition="true"][data-course="out-back"] .pace-marker:nth-of-type(odd) {
  animation-delay: 0.04s;
}

@keyframes pace-track-to-route {
  from {
    opacity: 0.72;
    transform: translateY(0) scaleY(1);
  }
  70% {
    opacity: 0.58;
    transform: translateY(33px) scaleY(0.08);
  }
  to {
    opacity: 0;
    transform: translateY(33px) scaleY(0.08);
  }
}

@keyframes pace-track-to-outback {
  from {
    opacity: 0.68;
    transform: scaleY(1);
  }
  62% {
    opacity: 0.42;
    transform: scaleY(0.08);
  }
  to {
    opacity: 0;
    transform: scaleY(0.08);
  }
}

@keyframes pace-track-expand-from-route {
  from {
    opacity: 0.2;
    transform: translateY(33px) scaleY(0.08);
  }
  60% {
    opacity: 0.85;
  }
  to {
    opacity: 1;
    transform: translateY(0) scaleY(1);
  }
}

@keyframes pace-track-expand-from-lines {
  from {
    opacity: 0.2;
    transform: scaleY(0.08);
  }
  60% {
    opacity: 0.85;
  }
  to {
    opacity: 1;
    transform: scaleY(1);
  }
}

@keyframes pace-center-line-to-out {
  from {
    opacity: 0.05;
    transform: translateY(0);
  }
  18% {
    opacity: 0.62;
  }
  to {
    opacity: 0;
    transform: translateY(-47px);
  }
}

@keyframes pace-center-line-to-back {
  from {
    opacity: 0.05;
    transform: translateY(0);
  }
  18% {
    opacity: 0.62;
  }
  to {
    opacity: 0;
    transform: translateY(51px);
  }
}

@keyframes pace-route-line-to-out {
  from {
    opacity: 0.68;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-80px);
  }
}

@keyframes pace-route-line-to-back {
  from {
    opacity: 0.68;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(18px);
  }
}

@keyframes pace-out-line-to-route {
  from {
    opacity: 0.68;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(80px);
  }
}

@keyframes pace-back-line-to-route {
  from {
    opacity: 0.68;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-18px);
  }
}

@keyframes pace-route-line-to-track {
  from {
    opacity: 0.58;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-33px);
  }
}

@keyframes pace-out-line-to-track {
  from {
    opacity: 0.58;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(2px);
  }
}

@keyframes pace-back-line-to-track {
  from {
    opacity: 0.58;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-6px);
  }
}

@keyframes pace-line-draw {
  from {
    opacity: 0;
    stroke-dasharray: 0 360;
  }
  to {
    opacity: 1;
    stroke-dasharray: 360 0;
  }
}

@keyframes pace-fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes pace-marker-rise {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes pace-control-settle {
  from {
    opacity: 0;
    transform: translateY(3px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.pace-goal-text {
  fill: var(--afpt-ink-dim);
  font-family: inherit;
}

.pace-time-text {
  fill: var(--afpt-ink);
  font-family: inherit;
}

.pace-goal-display {
  pointer-events: none;
}

.pace-pacer-control {
  cursor: pointer;
  outline: none;
}

.pace-pacer-control:focus-visible .pace-pacer-hit {
  stroke: var(--afpt-accent);
  stroke-width: 1.5;
}

.pace-pacer-hit {
  fill: var(--afpt-accent);
  pointer-events: all;
  stroke: color-mix(in srgb, var(--afpt-accent) 54%, transparent);
  stroke-width: 1;
}

.pace-pacer-icon {
  fill: var(--afpt-bg);
  pointer-events: none;
}

.pace-icon--reset {
  fill: var(--afpt-bg);
  stroke: none;
}

.pace-pacer-secondary {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
}

.lap-fitness[data-pacer-state="running"] .pace-pacer-secondary,
.lap-fitness[data-pacer-state="paused"] .pace-pacer-secondary,
.lap-fitness[data-pacer-state="finished"] .pace-pacer-secondary {
  opacity: 1;
  pointer-events: all;
}

.lap-fitness[data-pacer-state="running"] .pace-pacer-start {
  opacity: 0.44;
  pointer-events: none;
}

.pace-pacer-secondary .pace-icon--reset {
  display: none;
}

.lap-fitness[data-pacer-state="paused"] .pace-pacer-secondary .pace-icon--pause,
.lap-fitness[data-pacer-state="finished"] .pace-pacer-secondary .pace-icon--pause {
  display: none;
}

.lap-fitness[data-pacer-state="paused"] .pace-pacer-secondary .pace-icon--reset,
.lap-fitness[data-pacer-state="finished"] .pace-pacer-secondary .pace-icon--reset {
  display: block;
}

.pace-start-text {
  fill: #1a0a2a;
  font-family: inherit;
}

.pace-return-dot {
  filter: drop-shadow(0 0 3px color-mix(in srgb, var(--afpt-accent) 42%, transparent));
}

.pace-pacer-runner {
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.18s ease;
}

.lap-fitness[data-pacer-state="running"] .pace-pacer-runner,
.lap-fitness[data-pacer-state="paused"] .pace-pacer-runner,
.lap-fitness[data-pacer-state="finished"] .pace-pacer-runner {
  opacity: 1;
}

.pace-pacer-halo {
  fill: color-mix(in srgb, var(--afpt-accent) 22%, transparent);
  stroke: var(--afpt-accent);
  stroke-width: 1.5;
}

.pace-runner-head {
  fill: var(--afpt-accent);
}

.pace-runner-body {
  fill: none;
  stroke: var(--afpt-ink);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.lap-fitness[data-pacer-state="running"] .pace-pacer-halo {
  filter: drop-shadow(0 0 5px var(--afpt-accent));
}

.pace-pacer-status {
  color: var(--afpt-ink-dim);
  font-size: 10px;
  letter-spacing: 0.6px;
  line-height: 1.3;
  margin: 3px 4px 0;
  text-align: center;
}

.pace-distance-readout {
  align-items: baseline;
  color: var(--afpt-ink-dim);
  display: flex;
  font-size: 10px;
  gap: 6px;
  justify-content: center;
  letter-spacing: 0.8px;
  line-height: 1.2;
  margin: 2px 4px 0;
  text-transform: uppercase;
}

.pace-distance-readout strong {
  color: var(--afpt-ink);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.4px;
}

.pace-audio-panel {
  background: color-mix(in srgb, var(--afpt-panel-2) 70%, transparent);
  border: 1px solid var(--afpt-border);
  border-radius: 10px;
  margin: 10px 4px 0;
  padding: 10px;
}

.pace-audio-panel__top,
.pace-audio-actions {
  align-items: center;
  display: flex;
  gap: 8px;
  justify-content: space-between;
}

.pace-audio-panel__title {
  color: var(--afpt-ink);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 1.4px;
  text-transform: uppercase;
}

.pace-audio-toggle {
  align-items: center;
  color: var(--afpt-ink);
  display: inline-flex;
  font-size: 11px;
  font-weight: 700;
  gap: 6px;
  white-space: nowrap;
}

.pace-audio-toggle input {
  accent-color: var(--afpt-accent);
}

.pace-audio-check {
  align-items: center;
  color: var(--afpt-ink);
  display: flex;
  font-size: 11px;
  font-weight: 700;
  gap: 6px;
  min-height: 35px;
}

.pace-audio-check input {
  accent-color: var(--afpt-accent);
}

.pace-audio-grid {
  display: grid;
  gap: 8px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: 8px;
}

.pace-audio-grid label {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.pace-audio-grid label > span:not(.pace-audio-check) {
  color: var(--afpt-ink-dim);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.pace-audio-grid select {
  background-color: var(--afpt-panel);
  border: 1px solid var(--afpt-border-strong);
  border-radius: 8px;
  color: var(--afpt-ink);
  font-size: 11px;
  min-width: 0;
  padding: 8px 24px 8px 8px;
  width: 100%;
}

.pace-audio-note {
  color: var(--afpt-ink-dim);
  font-size: 10px;
  line-height: 1.35;
  margin: 8px 0 0;
}

.pace-audio-actions {
  margin-top: 8px;
}

.pace-audio-actions button {
  background: var(--afpt-accent);
  border: 0;
  border-radius: 8px;
  color: var(--afpt-bg);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.8px;
  min-height: 32px;
  padding: 7px 10px;
  text-transform: uppercase;
}

.pace-audio-status {
  color: var(--afpt-ink-dim);
  flex: 1;
  font-size: 10px;
  line-height: 1.25;
  text-align: right;
}

.pace-dot {
  fill: var(--afpt-accent);
}

.pace-label {
  fill: var(--afpt-ink-dim);
  font-family: inherit;
}

.pace-split {
  fill: var(--afpt-ink);
  font-family: inherit;
}

.pace-fin-label {
  fill: var(--afpt-warn);
  font-family: inherit;
}

.pace-fin-split {
  fill: var(--afpt-ink);
  font-family: inherit;
}

.pace-fin-text {
  fill: #1a0a2a;
  font-family: inherit;
}

.pace-marker .pace-dot,
.pace-marker .pace-dot--finish,
.pace-endpoint .pace-dot--start,
.pace-endpoint .pace-dot,
.pace-marker .pace-label,
.pace-marker .pace-split,
.pace-marker .pace-fin-label,
.pace-marker .pace-fin-split,
.pace-marker .pace-fin-text,
.pace-endpoint .pace-start-text {
  transition: fill 0.22s ease, stroke 0.22s ease, filter 0.22s ease;
}

.pace-marker--complete .pace-dot,
.pace-marker--complete .pace-dot--finish {
  fill: #37ff8b;
  filter: drop-shadow(0 0 4px rgba(55, 255, 139, 0.55));
  stroke: rgba(55, 255, 139, 0.8);
}

.pace-marker--complete .pace-label,
.pace-marker--complete .pace-split,
.pace-marker--complete .pace-fin-label,
.pace-marker--complete .pace-fin-split {
  fill: #37ff8b;
}

.pace-marker--complete .pace-fin-text {
  fill: #052e16;
}

/* Fitness theme overrides — keep all white on the dark gradient */
:root[data-theme="fitness"] .pace-track-ring {
  stroke: rgba(255, 255, 255, 0.25);
}

:root[data-theme="fitness"] .pace-track-dash {
  stroke: rgba(255, 255, 255, 0.4);
}

:root[data-theme="fitness"] .pace-route-line,
:root[data-theme="fitness"] .pace-outback-line,
:root[data-theme="fitness"] .pace-morph-track,
:root[data-theme="fitness"] .pace-morph-line {
  stroke: rgba(255, 255, 255, 0.3);
}

:root[data-theme="fitness"] .pace-route-dash,
:root[data-theme="fitness"] .pace-outback-dash {
  stroke: rgba(255, 255, 255, 0.45);
}

:root[data-theme="fitness"] .pace-goal-text {
  fill: rgba(255, 255, 255, 0.55);
}

:root[data-theme="fitness"] .pace-time-text {
  fill: #fff;
}

:root[data-theme="fitness"] .pace-pacer-status {
  color: rgba(255, 255, 255, 0.62);
}

:root[data-theme="fitness"] .pace-distance-readout {
  color: rgba(255, 255, 255, 0.62);
}

:root[data-theme="fitness"] .pace-distance-readout strong {
  color: #fff;
}

:root[data-theme="fitness"] .pace-audio-panel {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.18);
}

:root[data-theme="fitness"] .pace-audio-grid select {
  background-color: rgba(255, 255, 255, 0.10);
  border-color: rgba(255, 255, 255, 0.25);
  color: #fff;
}

:root[data-theme="fitness"] .pace-audio-actions button {
  background: #fff;
  color: #1b0d2a;
}

:root[data-theme="fitness"] .pace-audio-status,
:root[data-theme="fitness"] .pace-audio-note,
:root[data-theme="fitness"] .pace-audio-grid > label > span:not(.pace-audio-check) {
  color: rgba(255, 255, 255, 0.62);
}

:root[data-theme="fitness"] .pace-audio-check {
  color: #fff;
}

:root[data-theme="fitness"] .pace-pacer-halo {
  fill: rgba(255, 93, 171, 0.22);
  stroke: #ff5dab;
}

:root[data-theme="fitness"] .pace-runner-head {
  fill: #ffb547;
}

:root[data-theme="fitness"] .pace-runner-body {
  stroke: #fff;
}

:root[data-theme="fitness"] .pace-dot {
  fill: #ff5dab;
}

:root[data-theme="fitness"] .pace-label {
  fill: rgba(255, 255, 255, 0.6);
}

:root[data-theme="fitness"] .pace-split {
  fill: #fff;
}

:root[data-theme="fitness"] .pace-fin-label {
  fill: #ffb547;
}

:root[data-theme="fitness"] .pace-fin-split {
  fill: #fff;
}

/* ─── Desktop calculator page enhancement ─────────────────────── */
.desktop-intro,
.desktop-guide,
.desktop-editor-note,
.desktop-score-breakdown,
.demo-field--action,
.desktop-reference-open,
.desktop-chart-panel {
  display: none;
}

.desktop-references-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  pointer-events: none;
}

.desktop-references-modal[hidden] {
  display: none;
}

.desktop-references-modal__scrim {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.52);
  border: none;
  cursor: default;
  pointer-events: auto;
}

.desktop-references-modal__panel {
  position: absolute;
  top: 24px;
  right: max(24px, calc((100vw - var(--afpt-app-max-width)) / 2));
  bottom: 24px;
  width: min(980px, calc(100vw - 48px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  pointer-events: auto;
  background: var(--afpt-panel);
  border: 1px solid var(--afpt-border-strong);
  border-radius: 18px;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.34);
}

.desktop-references-modal__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--afpt-border);
  background: color-mix(in srgb, var(--afpt-panel) 94%, transparent);
}

.desktop-references-modal__eyebrow {
  display: block;
  color: var(--afpt-accent);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 2px;
  line-height: 1;
  margin-bottom: 6px;
  text-transform: uppercase;
}

.desktop-references-modal__header h2 {
  color: var(--afpt-ink);
  font-size: 18px;
  letter-spacing: 0.4px;
  line-height: 1.15;
  margin: 0;
}

.desktop-references-modal__close,
.desktop-reference-link,
.desktop-reference-open {
  background: transparent;
  border: 1px solid var(--afpt-border-strong);
  color: var(--afpt-ink);
  cursor: pointer;
  font-family: inherit;
  font-weight: 800;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.desktop-references-modal__close {
  border-radius: 7px;
  font-size: 12px;
  min-height: 36px;
  padding: 8px 14px;
}

.desktop-references-modal__content {
  display: grid;
  gap: 18px;
  overflow: auto;
  padding: 18px;
}

.desktop-reference-group {
  display: grid;
  gap: 14px;
  padding: 16px;
  border: 1px solid var(--afpt-border);
  border-radius: 14px;
  background: color-mix(in srgb, var(--afpt-panel-2) 78%, transparent);
}

.desktop-reference-group__heading h3 {
  color: var(--afpt-ink);
  font-size: 13px;
  letter-spacing: 1.5px;
  line-height: 1.2;
  margin: 0;
  text-transform: uppercase;
}

.desktop-reference-group__heading p {
  color: var(--afpt-ink-dim);
  font-size: 13px;
  line-height: 1.45;
  margin: 7px 0 0;
}

.desktop-reference-stack {
  display: grid;
  gap: 14px;
}

.desktop-reference-links {
  display: grid;
  gap: 10px;
}

.desktop-reference-link {
  display: grid;
  gap: 5px;
  border-radius: 10px;
  padding: 11px 12px;
  text-decoration: none;
  text-transform: none;
}

.desktop-reference-link strong {
  color: var(--afpt-ink);
  font-size: 12px;
  letter-spacing: 1px;
  line-height: 1.2;
  text-transform: uppercase;
}

.desktop-reference-link span {
  color: var(--afpt-ink-dim);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  line-height: 1.35;
}

.desktop-references-modal__close:hover,
.desktop-reference-link:hover,
.desktop-reference-open:hover {
  border-color: var(--afpt-accent);
  color: var(--afpt-accent);
}

.desktop-reference-link:hover strong,
.desktop-reference-link:hover span {
  color: var(--afpt-accent);
}

@media (min-width: 980px) {
  :root {
    --afpt-app-max-width: 1440px;
  }

  html,
  body {
    min-width: 0;
  }

  body {
    padding: 0;
  }

  .app-shell {
    width: min(calc(100% - 48px), var(--afpt-app-max-width));
    max-width: var(--afpt-app-max-width);
    display: grid;
    grid-template-columns: minmax(300px, 0.72fr) minmax(0, 1.28fr);
    grid-template-areas:
      "header header"
      "intro intro"
      "editors editors"
      "pace pace"
      "guide guide"
      "status status";
    gap: 12px;
    align-items: start;
    margin: 0 auto;
    padding: 0 0 30px;
    overflow: visible;
  }

  .app-header {
    grid-area: header;
    display: grid;
    grid-template-columns: minmax(max-content, 1fr) minmax(240px, 260px) minmax(44px, 1fr);
    align-items: center;
    column-gap: 12px;
    row-gap: 8px;
    border-left: 1px solid var(--afpt-border);
    border-right: 1px solid var(--afpt-border);
    border-radius: 0 0 16px 16px;
    padding: 11px 18px;
  }

  .app-header-left {
    grid-column: 1;
    display: grid;
    grid-template-columns: max-content minmax(max-content, 1fr);
    align-items: center;
    gap: 12px;
    justify-content: center;
    overflow: hidden;
  }

  .app-title {
    grid-column:1;
    flex: 0 0 auto;
    font-size: clamp(17px, 1.2vw, 19px);
    letter-spacing: 2.2px;
    justify-self: start;
  }

  .app-header-controls {
    grid-column:2;
    display: flex;
    align-items: flex-end;
    gap: 8px;
    justify-content: flex-start;
    min-width: 0;
    overflow: hidden;
    justify-self: center;
  }

  .app-header-controls .demo-field {
    display: inline-grid;
    grid-template-columns: 1fr;
    gap: 4px;
    align-items: start;
    text-align: left;
  }

  .app-header-controls .demo-label {
    color: var(--afpt-accent);
    font-size: 8px;
    letter-spacing: 1.7px;
    line-height: 1;
    text-align: center;
  }

  .app-header-controls .demo-select {
    min-height: 34px;
    width: auto;
    text-align: left;
    text-align-last: left;
  }

  .app-header-controls #header-sex-sel {
    width: 96px;
  }

  .app-header-controls #header-age-sel {
    width: 90px;
  }

  .app-header-controls #header-theme-preset-select {
    width: 132px;
  }

  .app-header-score-pill {
    grid-column: 2;
    align-self: center;
    justify-self: center;
    display: grid;
    gap: 6px;
    width: min(100%, 260px);
    max-width: 260px;
    min-height: 56px;
    padding: 7px 12px 6px;
    border: 1px solid var(--afpt-border);
    border-radius: 12px;
    background: color-mix(in srgb, var(--afpt-panel) 82%, transparent);
    color: var(--afpt-ink);
    box-shadow: none;
    pointer-events: none;
  }

  .app-header-right {
    grid-column: 3;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    justify-self: stretch;
    gap: 10px;
    margin-left: 0;
    min-width: 0;
  }

  .profile-standard-toggle {
    justify-self: center;
  }

  .profile-standard-option {
    min-height: 32px;
    padding: 0 8px;
    font-size: 9px;
    letter-spacing: 0.7px;
  }

  .app-header-score-mini__row {
    display: grid;
    grid-template-columns: minmax(0, auto) auto auto;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-width: 0;
  }

  .app-header-score-mini__label {
    color: var(--afpt-ink-dim);
    font-size: 8px;
    font-weight: 800;
    letter-spacing: 1.2px;
    line-height: 1;
    text-transform: uppercase;
    white-space: nowrap;
  }

  .app-header-score-mini__number {
    color: var(--afpt-accent);
    font-size: 26px;
    font-weight: 800;
    line-height: 0.9;
  }

  .app-header-score-mini__badge {
    align-self: center;
    border: 1px solid var(--afpt-border-strong);
    border-radius: 4px;
    color: var(--afpt-ink-dim);
    font-size: 8px;
    font-style: normal;
    font-weight: 800;
    letter-spacing: 0.8px;
    line-height: 1;
    padding: 3px 6px;
    text-transform: uppercase;
    white-space: nowrap;
  }

  .app-header-score-mini__badge[data-category="excellent"] {
    color: var(--afpt-accent-2);
    border-color: var(--afpt-accent-2);
  }

  .app-header-score-mini__badge[data-category="satisfactory"] {
    color: var(--afpt-warn);
    border-color: var(--afpt-warn);
  }

  .app-header-score-mini__badge[data-category="unsatisfactory"] {
    color: var(--afpt-bad);
    border-color: var(--afpt-bad);
  }

  .app-header-score-mini__bar {
    display: grid;
    gap: 3px;
  }

  .app-header-score-mini__track {
    position: relative;
    height: 6px;
    overflow: hidden;
    border: 1px solid var(--afpt-border);
    border-radius: 999px;
    background: linear-gradient(90deg, var(--afpt-bad) 0%, var(--afpt-warn) 75%, var(--afpt-accent-2) 90%);
  }

  .app-header-score-mini__fill {
    position: absolute;
    inset: 0 0 0 auto;
    width: 100%;
    background: var(--afpt-bg);
    transition: width 0.25s ease;
  }

  :root[data-theme="light"] .app-header-score-mini__fill {
    background: var(--afpt-panel-2);
  }

  .app-header-score-mini__ticks {
    position: relative;
    height: 8px;
    color: var(--afpt-ink-dim);
    font-size: 7px;
    line-height: 1;
  }

  .app-header-score-mini__ticks span {
    position: absolute;
    top: 0;
    transform: translateX(-50%);
  }

  .app-header-score-mini__ticks span:first-child {
    left: 75%;
  }

  .app-header-score-mini__ticks span:last-child {
    left: 90%;
  }

  .app-header-score-mini__ring {
    display: none;
  }

  .app-header-score-mini__ring-track {
    stroke: color-mix(in srgb, var(--afpt-ink-dim) 28%, transparent);
  }

  .app-header-score-mini__ring-arc {
    stroke: var(--afpt-accent-2);
    transition: stroke-dasharray 0.25s ease;
  }

  :root[data-theme="fitness"] .app-header-score-mini__ring-arc {
    stroke: url(#header-fitness-ring-grad);
  }

  .app-header-score-mini__ring-num {
    fill: var(--afpt-accent);
    font-family: inherit;
    font-size: 44px;
    font-weight: 800;
  }

  .app-header-score-mini__ring-cat {
    display: none;
  }

  :root[data-theme="blues"] .app-header-score-pill,
  :root[data-theme="fitness"] .app-header-score-pill {
    grid-template-columns: minmax(0, 1fr) 76px minmax(0, 1fr);
    align-items: center;
    justify-items: center;
    gap: 8px;
    min-height: 72px;
    padding: 6px 10px;
  }

  :root[data-theme="blues"] .app-header-score-mini__row,
  :root[data-theme="fitness"] .app-header-score-mini__row {
    display: contents;
  }

  :root[data-theme="blues"] .app-header-score-mini__label,
  :root[data-theme="fitness"] .app-header-score-mini__label {
    grid-column: 1;
    color: var(--afpt-ink-dim);
    font-size: 7px;
    letter-spacing: 1px;
    line-height: 1.2;
    text-align: center;
    white-space: normal;
  }

  :root[data-theme="blues"] .app-header-score-mini__number,
  :root[data-theme="fitness"] .app-header-score-mini__number,
  :root[data-theme="blues"] .app-header-score-mini__bar,
  :root[data-theme="fitness"] .app-header-score-mini__bar {
    display: none;
  }

  :root[data-theme="blues"] .app-header-score-mini__badge,
  :root[data-theme="fitness"] .app-header-score-mini__badge {
    grid-column: 3;
    max-width: 100%;
    text-align: center;
  }

  :root[data-theme="blues"] .app-header-score-mini__ring,
  :root[data-theme="fitness"] .app-header-score-mini__ring {
    display: block;
    grid-column: 2;
    grid-row: 1;
    width: 76px;
    height: 76px;
  }

  :root[data-theme="blues"] .app-header-score-mini__ring-num[data-len="4"],
  :root[data-theme="fitness"] .app-header-score-mini__ring-num[data-len="4"] {
    font-size: 38px;
  }

  :root[data-theme="blues"] .app-header-score-mini__ring-num[data-len="5"],
  :root[data-theme="fitness"] .app-header-score-mini__ring-num[data-len="5"] {
    font-size: 33px;
  }

  .settings-hub {
    grid-column: 2;
    justify-self:end;
  }

  .settings-hub-panel,
  .chart-drawer__panel {
    right: max(24px, calc((100vw - var(--afpt-app-max-width)) / 2));
  }

  .settings-hub-panel {
    width: min(360px, calc(100vw - 48px));
  }

  .chart-drawer__panel {
    width: min(620px, calc(100vw - 48px));
  }

  .desktop-intro,
  .demographics-row,
  .desktop-score-breakdown,
  .editor-panel,
  .lap-display,
  .readiness-guide,
  .desktop-guide {
    border: 1px solid var(--afpt-border);
    border-radius: 16px;
    background: color-mix(in srgb, var(--afpt-panel) 94%, transparent);
    box-shadow: 0 16px 38px rgba(0, 0, 0, 0.10);
    min-width: 0;
  }

  .desktop-intro {
    grid-area: intro;
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(280px, 0.75fr);
    gap: 18px;
    align-items: center;
    padding: 24px;
    background:
      linear-gradient(135deg, color-mix(in srgb, var(--afpt-panel) 92%, transparent), color-mix(in srgb, var(--afpt-panel-2) 74%, transparent));
  }

  .desktop-intro__eyebrow,
  .desktop-guide__eyebrow {
    color: var(--afpt-accent);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 2px;
    line-height: 1;
    margin: 0 0 10px;
    text-transform: uppercase;
  }

  .desktop-intro h1 {
    color: var(--afpt-ink);
    font-size: clamp(30px, 3.45vw, 48px);
    letter-spacing: 0;
    line-height: 0.98;
    margin: 0;
    max-width: 820px;
    text-transform: none;
  }

  .desktop-intro p {
    color: var(--afpt-ink-dim);
    font-size: 15px;
    line-height: 1.55;
    margin: 14px 0 0;
    max-width: 760px;
  }

  .desktop-intro__steps {
    display: grid;
    gap: 10px;
  }

  .desktop-intro__steps div {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 10px;
    align-items: center;
    padding: 12px;
    border: 1px solid var(--afpt-border);
    border-radius: 11px;
    background: color-mix(in srgb, var(--afpt-panel-2) 78%, transparent);
  }

  .desktop-intro__steps strong {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border: 1px solid var(--afpt-border-strong);
    border-radius: 50%;
    color: var(--afpt-accent);
    font-size: 14px;
    font-variant-numeric: tabular-nums;
  }

  .desktop-intro__steps span {
    color: var(--afpt-ink);
    font-size: 13px;
    line-height: 1.35;
  }

  .score-section {
    margin: 0;
  }

  .demographics-row {
    grid-area: controls;
    align-self: start;
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    align-content: center;
    align-items: center;
    padding: 10px 12px;
    border-bottom: 1px solid var(--afpt-border);
    background: color-mix(in srgb, var(--afpt-panel-2) 92%, transparent);
  }

  .app-shell > .demographics-row {
    display: none;
  }

  .app-shell > .score-section {
    display: none;
  }

  .demo-field {
    display: inline-grid;
    grid-template-columns: auto auto;
    gap: 8px;
    align-items: center;
    flex: 0 0 auto;
    text-align: left;
  }



  .demo-field--action {
    display: inline-flex;
    min-width: 0;
  }

  .demo-field--action .demo-label {
    display: none;
  }

  .demo-label {
    text-align: left;
    white-space: nowrap;
  }

  .demo-select {
    min-height: 34px;
    padding-top: 6px;
    padding-bottom: 6px;
    text-align-last: left;
    width: auto;
  }

  #sex-sel {
    width: 132px;
  }

  #age-sel {
    width: 118px;
  }

  #theme-preset-select {
    width: 142px;
  }

  .desktop-reference-open {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 34px;
    border-radius: 8px;
    background: color-mix(in srgb, var(--afpt-panel) 76%, transparent);
    font-size: 11px;
    padding: 7px 12px;
    white-space: nowrap;
  }

  .component-strip {
    display: none;
  }

  .desktop-score-breakdown {
    grid-area: summary;
    display: none;
    align-self: stretch;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    padding: 12px;
    background: color-mix(in srgb, var(--afpt-panel) 88%, transparent);
    border-bottom: 1px solid var(--afpt-border);
  }

  .desktop-score-breakdown__item {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    gap: 4px;
    min-width: 0;
    min-height: 98px;
    padding: 12px;
    border: 1px solid var(--afpt-border);
    border-radius: 11px;
    background: var(--afpt-panel-2);
  }

  .desktop-score-breakdown__name {
    color: var(--afpt-ink-dim);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1.6px;
    line-height: 1;
    text-transform: uppercase;
  }

  .desktop-score-breakdown__item strong {
    align-self: center;
    color: var(--afpt-accent);
    font-size: 24px;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .desktop-score-breakdown__item span:last-child {
    color: var(--afpt-ink-dim);
    font-size: 12px;
    line-height: 1.2;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .editors-container {
    grid-area: editors;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    padding: 0;
    min-width: 0;
    width: 100%;
  }

  .editor-panel {
    padding: 14px;
    gap: 10px;
  }

  #strength-editor {
    order: 1;
  }

  #core-editor {
    order: 2;
  }

  #cardio-editor {
    order: 3;
  }

  #body-editor {
    order: 4;
  }

  .editor-header {
    gap: 3px;
    padding-bottom: 8px;
  }

  .desktop-editor-note {
    display: none;
    max-width: 46rem;
    margin: 0;
    color: var(--afpt-ink-dim);
    font-size: 12px;
    line-height: 1.4;
    letter-spacing: 0;
    text-align: center;
  }

  .fit-seg-ctrl {
    border-radius: 12px;
    padding: 3px;
  }

  .fit-seg-btn {
    min-height: 30px;
    border-radius: 9px;
    padding-left: 6px;
    padding-right: 6px;
  }

  #sit-seg-ctrl .fit-seg-btn,
  #run-seg-ctrl .fit-seg-btn {
    font-size: 11px;
  }

  #sit-seg-ctrl,
  #run-seg-ctrl {
    display: flex;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #body-seg-ctrl,
  #push-seg-ctrl {
    justify-self: center;
  }

  .editor-event-row {
    grid-template-columns:
      max-content 1fr 1fr 1fr;
    gap: 5px;
  }

  .editor-event-row .value-group .value-input,
  .editor-event-row .value-group .time-input,
  .editor-event-row .minmax-btn,
  .editor-event-row .chart-btn {
    height: 42px;
    font-size: 11px;
  }

  .slider-row {
    gap: 8px;
  }

  .slider-step-btn {
    width: 32px;
    height: 32px;
  }

  .body-whtr-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 6px;
  }

  .body-whtr-control--single .body-input-stepper,
  .body-whtr-control--pair {
    width: 100%;
  }

  .body-measure-input {
    font-size: 19px;
  }

  .pace-readiness-layout {
    grid-area: pace;
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(320px, 1fr);
    grid-template-areas: "readiness pace-plan";
    gap: 12px;
    align-items: start;
    min-width: 0;
    width: 100%;
  }

  .pace-plan-section {
    grid-area: pace-plan;
    align-self: start;
    padding: 0;
    min-width: 0;
  }

  .readiness-guide {
    grid-area: readiness;
    margin: 0;
    padding: 18px;
    min-width: 0;
  }

  .readiness-guide__header {
    display: grid;
    gap: 8px;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
    margin-bottom: 14px;
  }

  .readiness-guide__eyebrow {
    grid-column: 1 / -1;
    margin: 0;
  }

  .readiness-guide h2 {
    font-size: clamp(24px, 2.1vw, 34px);
  }

  .readiness-guide__header p {
    grid-column: 1 / -1;
    max-width: 64rem;
    margin-top: 0;
  }

  .readiness-guide__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
  }

  .readiness-card {
    min-height: 118px;
    padding: 13px;
  }

  .readiness-card--wide {
    grid-column: span 2;
  }

  .readiness-card--execution {
    align-content: start;
  }

  .lap-display {
    margin: 0;
    padding: 16px;
    border-top: 1px solid var(--afpt-border);
  }

  .lap-display:empty {
    display: none;
  }

  .lap-fitness__svg-wrap {
    min-height: 190px;
    align-items: center;
  }

  .desktop-chart-panel {
    display: none;
  }

  .desktop-chart-panel__header {
    position: sticky;
    top: 0;
    z-index: 1;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 13px 16px;
    background: color-mix(in srgb, var(--afpt-panel) 96%, transparent);
    border-bottom: 1px solid var(--afpt-border);
    border-radius: 16px 16px 0 0;
  }

  .desktop-chart-panel__eyebrow {
    display: block;
    color: var(--afpt-ink-dim);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 1.8px;
    line-height: 1;
    margin-bottom: 5px;
    text-transform: uppercase;
  }

  .desktop-chart-panel h2 {
    color: var(--afpt-ink);
    font-size: 13px;
    letter-spacing: 1.2px;
    line-height: 1.2;
    margin: 0;
    text-transform: uppercase;
  }

  .desktop-chart-open {
    flex: 0 0 auto;
    background: transparent;
    border: 1px solid var(--afpt-border-strong);
    border-radius: 7px;
    color: var(--afpt-ink);
    cursor: pointer;
    font-family: inherit;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 1px;
    min-height: 34px;
    padding: 7px 12px;
    text-transform: uppercase;
  }

  .desktop-chart-open:hover {
    border-color: var(--afpt-accent);
    color: var(--afpt-accent);
  }

  .desktop-chart-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: 14px 16px 16px;
    min-width: 0;
  }

  .desktop-chart-content .chart-content {
    padding: 0;
  }

  .desktop-chart-content .chart-table {
    font-size: 12px;
  }

  .desktop-chart-content .chart-th,
  .desktop-chart-content .chart-cell {
    padding-left: 7px;
    padding-right: 7px;
  }

  .desktop-chart-empty {
    display: grid;
    gap: 7px;
    place-items: center;
    min-height: 220px;
    padding: 22px 14px;
    text-align: center;
  }

  .desktop-chart-empty__label {
    color: var(--afpt-ink-dim);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1.8px;
    margin: 0;
    text-transform: uppercase;
  }

  .desktop-chart-empty strong {
    color: var(--afpt-accent);
    font-size: 34px;
    font-variant-numeric: tabular-nums;
    line-height: 1;
  }

  .desktop-chart-empty span {
    color: var(--afpt-ink-dim);
    font-size: 12px;
    line-height: 1.4;
  }

  .desktop-guide {
    grid-area: guide;
    display: grid;
    gap: 18px;
    padding: 24px;
  }

  .desktop-guide__header {
    max-width: 760px;
  }

  .desktop-guide h2 {
    color: var(--afpt-ink);
    font-size: clamp(26px, 3vw, 38px);
    letter-spacing: 0;
    line-height: 1.05;
    margin: 0;
    text-transform: none;
  }

  .desktop-guide__header p,
  .desktop-guide-card p,
  .desktop-faq p {
    color: var(--afpt-ink-dim);
    font-size: 14px;
    line-height: 1.55;
    margin: 10px 0 0;
  }

  .desktop-guide-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
  }

  .desktop-guide-card {
    padding: 16px;
    border: 1px solid var(--afpt-border);
    border-radius: 12px;
    background: color-mix(in srgb, var(--afpt-panel-2) 82%, transparent);
  }

  .desktop-guide-card h3,
  .desktop-faq h3 {
    color: var(--afpt-ink);
    font-size: 13px;
    letter-spacing: 1.3px;
    line-height: 1.2;
    margin: 0;
    text-transform: uppercase;
  }

  .desktop-faq {
    display: grid;
    gap: 10px;
  }

  .desktop-faq details {
    border: 1px solid var(--afpt-border);
    border-radius: 10px;
    background: color-mix(in srgb, var(--afpt-panel-2) 72%, transparent);
    padding: 13px 14px;
  }

  .desktop-faq summary {
    color: var(--afpt-ink);
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.35;
  }

  .pfra-status {
    grid-area: status;
    margin-top: 0;
    border: 1px solid var(--afpt-border);
    border-radius: 12px;
    background: color-mix(in srgb, var(--afpt-panel) 88%, transparent);
  }

  :root[data-theme="tactical"] .component-chip.chip--active::after {
    top: 12px;
    right: 12px;
  }

  :root[data-theme="stencil"] .desktop-intro,
  :root[data-theme="stencil"] .score-section,
  :root[data-theme="stencil"] .demographics-row,
  :root[data-theme="stencil"] .desktop-score-breakdown,
  :root[data-theme="stencil"] .editor-panel,
  :root[data-theme="stencil"] .lap-display,
  :root[data-theme="stencil"] .readiness-guide,
  :root[data-theme="stencil"] .readiness-card,
  :root[data-theme="stencil"] .desktop-chart-panel,
  :root[data-theme="stencil"] .desktop-guide,
  :root[data-theme="stencil"] .desktop-guide-card,
  :root[data-theme="stencil"] .desktop-faq details,
  :root[data-theme="stencil"] .desktop-references-modal__panel,
  :root[data-theme="stencil"] .desktop-reference-group {
    border-radius: 6px;
  }

  :root[data-theme="blues"] .score-section,
  :root[data-theme="fitness"] .score-section {
    margin: 0;
    padding: 18px 22px;
  }

  :root[data-theme="light"] .score-section,
  :root[data-theme="light"] .desktop-score-breakdown,
  :root[data-theme="light"] .editor-panel,
  :root[data-theme="light"] .lap-display,
  :root[data-theme="light"] .readiness-guide,
  :root[data-theme="light"] .desktop-intro,
  :root[data-theme="light"] .desktop-guide {
    margin: 0;
  }

  :root[data-theme="blues"] .desktop-score-breakdown,
  :root[data-theme="light"] .desktop-score-breakdown,
  :root[data-theme="fitness"] .desktop-score-breakdown {
    padding: 14px;
  }

  :root[data-theme="fitness"] .desktop-intro,
  :root[data-theme="fitness"] .score-section,
  :root[data-theme="fitness"] .demographics-row,
  :root[data-theme="fitness"] .desktop-score-breakdown,
  :root[data-theme="fitness"] .editor-panel,
  :root[data-theme="fitness"] .lap-display,
  :root[data-theme="fitness"] .readiness-guide,
  :root[data-theme="fitness"] .desktop-chart-panel,
  :root[data-theme="fitness"] .desktop-guide,
  :root[data-theme="fitness"] .readiness-card,
  :root[data-theme="fitness"] .desktop-guide-card,
  :root[data-theme="fitness"] .desktop-faq details,
  :root[data-theme="fitness"] .desktop-references-modal__panel,
  :root[data-theme="fitness"] .desktop-reference-group {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.13);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 22px 46px rgba(0, 0, 0, 0.22);
  }

  :root[data-theme="fitness"] .desktop-chart-panel__header {
    background: rgba(27, 13, 42, 0.94);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
  }

  :root[data-theme="fitness"] .desktop-intro__steps div,
  :root[data-theme="fitness"] .readiness-card,
  :root[data-theme="fitness"] .desktop-guide-card,
  :root[data-theme="fitness"] .desktop-faq details,
  :root[data-theme="fitness"] .desktop-reference-group {
    background: rgba(255, 255, 255, 0.07);
  }

  :root[data-theme="fitness"] .lap-display {
    margin-top: 0;
  }

  .app-shell > .score-section,
  :root[data-theme="stencil"] .app-shell > .score-section,
  :root[data-theme="blues"] .app-shell > .score-section,
  :root[data-theme="light"] .app-shell > .score-section,
  :root[data-theme="fitness"] .app-shell > .score-section {
    display: none;
  }

  @media (max-width: 1120px) {
    .app-shell {
      width: min(calc(100% - 32px), var(--afpt-app-max-width));
      grid-template-columns: minmax(280px, 0.78fr) minmax(0, 1.22fr);
      gap: 16px;
    }

    .demographics-row {
      gap: 8px 10px;
    }

    .demo-field--theme {
      margin-left: auto;
    }

    .demo-field--action {
      align-self: center;
    }

    .desktop-score-breakdown {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .editors-container {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .desktop-guide-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .editor-event-row {
      grid-template-columns:max-content 1fr 1fr 1fr;
      gap: 7px;
    }
  }

  @media (min-width: 1280px) {
    .app-shell {
      grid-template-columns: minmax(300px, 0.68fr) minmax(0, 1.32fr);
    }

    .score-section {
      min-height: 122px;
    }
  }

  @media (min-width: 1600px) {
    .app-shell {
      width: min(calc(100% - 72px), var(--afpt-app-max-width));
    }
  }
}
