:root {
  --bg: #050608;
  --surface: #101216;
  --surface-alt: #16191F;
  --surface-strong: #0B0D10;
  --gold: #D9B85C;
  --gold-soft: #F2D77D;
  --cyan: #41C7E8;
  --text: #F7F3E8;
  --text-muted: #92979F;
  --success: #4BD38A;
  --warning: #F1A44D;
  --danger: #FF5E5B;
  --border: rgba(255, 255, 255, 0.08);
  --shadow: 0 32px 80px rgba(0, 0, 0, 0.32);
  --shadow-soft: 0 16px 40px rgba(0, 0, 0, 0.22);
  --radius-xl: 28px;
  --radius-lg: 22px;
  --radius-pill: 999px;
  --space-xs: 8px;
  --space-sm: 12px;
  --space-md: 18px;
  --space-lg: 26px;
  --space-xl: 34px;
  --text-lg: 1rem;
  --text-md: 0.92rem;
  --text-sm: 0.84rem;
  --text-xs: 0.75rem;
  --transition: 180ms ease;
  --transition-slow: 260ms ease;
  --nav-height: 84px;
}

* {
  box-sizing: border-box;
}

html, body {
  min-height: 100%;
  margin: 0;
  font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  background: radial-gradient(circle at top left, rgba(65, 199, 232, 0.14), transparent 28%),
              linear-gradient(180deg, #07090E 0%, #020304 100%);
  color: var(--text);
}

body {
  line-height: 1.45;
  overflow-x: hidden;
  padding: 0 0 calc(var(--nav-height) + 20px);
}

img, svg, video {
  max-width: 100%;
}

button, input, textarea, select {
  font: inherit;
}

button {
  appearance: none;
  border: none;
  background: none;
}

a {
  color: inherit;
  text-decoration: none;
}

main {
  width: min(1240px, calc(100% - 24px));
  margin: 0 auto;
  padding: calc(env(safe-area-inset-top, 0) + 92px) 0 0;
}

header {
  position: fixed;
  inset: 0 0 auto;
  z-index: 20;
  width: 100%;
  padding: calc(env(safe-area-inset-top, 0) + 14px) 18px 14px;
  background: rgba(5, 6, 8, 0.84);
  backdrop-filter: blur(20px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-lg);
}

.brand {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.brand strong {
  font-size: 1.05rem;
  letter-spacing: 0.02em;
}

.brand small {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 10px 14px;
  border-radius: var(--radius-pill);
  font-size: 0.78rem;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.badge.ok {
  color: var(--success);
  background: rgba(75, 211, 138, 0.12);
  border-color: rgba(75, 211, 138, 0.24);
}

.badge.ai {
  color: var(--cyan);
  background: rgba(65, 199, 232, 0.12);
  border-color: rgba(65, 199, 232, 0.26);
}

.page {
  opacity: 0;
  transform: translateY(12px);
  animation: pageFadeIn 320ms ease forwards;
}

.page.active {
  opacity: 1;
  transform: translateY(0);
}

@keyframes pageFadeIn {
  to { opacity: 1; transform: translateY(0); }
}

.card {
  background: linear-gradient(180deg, rgba(16, 18, 22, 0.95), rgba(11, 13, 16, 0.95));
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-soft);
  padding: 24px;
  margin-bottom: 20px;
}
.session-selection-grid {
 display: grid;
 grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
 gap: 18px;
}
.session-card {
 padding: 18px;
 border: 1px solid rgba(255, 255, 255, 0.08);
 border-radius: var(--radius-lg);
 background: rgba(255, 255, 255, 0.03);
 transition: transform var(--transition), border-color var(--transition), box-shadow var(--transition);
}
.session-card:hover {
 transform: translateY(-2px);
 border-color: rgba(217, 184, 92, 0.22);
}
.session-card-header {
 display: flex;
 align-items: flex-start;
 justify-content: space-between;
 gap: 12px;
 margin-bottom: 12px;
}
.session-card-header strong {
 display: block;
 font-size: 1rem;
}
.session-summary {
 display: flex;
 justify-content: space-between;
 align-items: center;
 gap: 10px;
 margin: 16px 0;
 padding: 12px 14px;
 border-radius: 18px;
 background: rgba(255, 255, 255, 0.04);
}
.session-card.recommended {
 border-color: rgba(217, 184, 92, 0.35);
}
.session-card.recommended .badge.ok {
 background: rgba(217, 184, 92, 0.14);
 border-color: rgba(217, 184, 92, 0.28);
 color: var(--gold);
}
.card.premium {  border-color: rgba(217, 184, 92, 0.18);
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.24);
}

.hidden {
  display: none !important;
}

.workout-header-card {
  padding-bottom: 18px;
}

.workout-card {
  padding: 30px 26px;
  border-radius: 32px;
  background: rgba(19, 21, 28, 0.96);
  box-shadow: 0 30px 70px rgba(0, 0, 0, 0.22);
}

.workout-step {
  display: grid;
  gap: 20px;
}

.step-tag {
  display: inline-flex;
  align-items: center;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text-muted);
  font-size: 0.82rem;
  letter-spacing: 0.08em;
  width: fit-content;
}

.warmup-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 14px;
}

.warmup-list li {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  transition: all var(--transition);
}

.warmup-list li::before {
  display: none;
}

.workout-task {
  display: block;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.04);
  padding: 14px 18px;
  transition: all var(--transition);
  color: var(--text);
}

.workout-task.completed {
  opacity: 0.72;
  transform: translateX(2px);
  text-decoration: line-through;
  border-color: rgba(75, 211, 138, 0.18);
  background: rgba(75, 211, 138, 0.08);
}

.workout-task input[type="checkbox"] {
  width: 18px;
  height: 18px;
  accent-color: var(--success);
}

.workout-progress {
  margin-bottom: 24px;
}

.workout-progress-label {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 10px;
  color: var(--text-muted);
  font-size: 0.95rem;
}

.progress-track {
  width: 100%;
  height: 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

#workoutProgressFill {
  width: 0;
  height: 100%;
  background: linear-gradient(90deg, var(--gold), var(--success));
  border-radius: 999px;
  transition: width 280ms ease;
}

.completion-card {
  display: grid;
  gap: 8px;
  padding: 18px 16px;
  border-radius: 24px;
  background: rgba(75, 211, 138, 0.08);
  border: 1px solid rgba(75, 211, 138, 0.16);
  margin-bottom: 18px;
}

.completion-card.hidden {
  display: none;
}

.completion-message {
  color: var(--success);
  font-weight: 700;
}

.completion-detail {
  color: var(--text);
  font-size: 0.95rem;
}

.counter-row {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px;
  align-items: center;
}

.counter-value {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 64px;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font-size: 1.1rem;
  font-weight: 700;
}

.series-row,
.series-summary,
.summary-row,
.summary-score {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.04);
}

.series-row span,
.series-summary span,
.summary-row span,
.summary-score span {
  color: var(--text-muted);
  font-size: 0.95rem;
}

.series-row strong,
.series-summary strong,
.summary-row strong,
.summary-score strong {
  color: var(--text);
}

.timer-display {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 96px;
  border-radius: 28px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  font-size: 2.8rem;
  font-weight: 700;
}

.workout-controls {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.workout-controls button {
  min-height: 52px;
}

.workout-step > button.primary {
  width: 100%;
}

.summary-score {
  flex-direction: column;
  align-items: flex-start;
  background: rgba(255, 255, 255, 0.06);
}

.summary-score strong {
  margin-top: 6px;
  font-size: 3rem;
  color: var(--gold);
}

button.primary,
button.secondary,
button.success,
button.danger {
  min-height: 52px;
}

button.secondary {
  border-color: rgba(255, 255, 255, 0.12);
}

.glass {
  background: rgba(15, 18, 24, 0.92);
  border-color: rgba(255, 255, 255, 0.09);
  backdrop-filter: blur(18px);
}

.section-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.section-title h2,
.card h2 {
  margin: 0;
  font-size: 1.1rem;
}

.section-title span {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.hero-v3 {
  padding: 34px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 32px 78px rgba(0, 0, 0, 0.32);
  border-radius: 32px;
}

.hero-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 28px;
  align-items: start;
}

.hero-copy {
  display: grid;
  gap: 22px;
}

.hero-intro {
  display: grid;
  gap: 16px;
}

.hero-intro .badge {
  width: fit-content;
  background: rgba(65, 199, 232, 0.16);
  color: var(--cyan);
  border-color: rgba(65, 199, 232, 0.28);
}

.hero-title {
  margin: 0;
  font-size: clamp(2.2rem, 5vw, 3rem);
  line-height: 1.02;
}

.hero-subtitle {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.96rem;
  max-width: 42ch;
  line-height: 1.6;
}

.hero-countdown {
  margin: 10px 0 0;
  color: var(--text-muted);
  font-size: 0.96rem;
}

.priority-card {
  display: grid;
  gap: 18px;
  padding: 26px;
  border-radius: 28px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(217, 184, 92, 0.18);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06), 0 24px 56px rgba(0, 0, 0, 0.22);
}

.priority-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.priority-header {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--text);
  font-size: 0.96rem;
  letter-spacing: 0.08em;
}

.priority-icon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  background: rgba(217, 184, 92, 0.18);
  color: var(--gold);
  font-size: 1.05rem;
}

.priority-pill {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  padding: 8px 14px;
  border-radius: 999px;
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.priority-body {
  display: grid;
  gap: 12px;
}

.priority-task {
  font-size: 1.35rem;
  font-weight: 700;
  color: var(--text);
}

.priority-target {
  color: var(--text-muted);
  font-size: 0.95rem;
  line-height: 1.5;
}

.priority-card .insight {
  color: var(--text);
  font-size: 0.98rem;
  line-height: 1.65;
  min-height: 62px;
}

button.primary.start-mission-btn {
  width: 100%;
  padding: 16px 20px;
  border-radius: 24px;
  background: var(--gold);
  color: #101114;
  font-weight: 700;
  font-size: 0.98rem;
  box-shadow: 0 12px 18px rgba(217, 184, 92, 0.18);
  cursor: pointer;
  transition: transform var(--transition), filter var(--transition), background-color var(--transition);
}

button.primary.start-mission-btn:hover {
  background: #f2d77d;
  transform: translateY(-1px);
}

button.primary.start-mission-btn:focus-visible {
  outline: 2px solid rgba(217, 184, 92, 0.9);
  outline-offset: 3px;
}

button.primary {
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: var(--gold);
  color: #101114;
  box-shadow: 0 12px 18px rgba(217, 184, 92, 0.18);
  transition: background-color var(--transition), transform var(--transition), box-shadow var(--transition);
}

button.primary:hover {
  background: #f2d77d;
}

button.primary:focus-visible {
  outline: 2px solid rgba(217, 184, 92, 0.9);
  outline-offset: 3px;
}

.hero-score {
  display: grid;
  place-items: center;
  padding: 20px 0;
  gap: 18px;
}

.hero-score-meta {
  display: grid;
  gap: 8px;
  text-align: center;
}

.score-level {
  color: var(--success);
  font-weight: 700;
  letter-spacing: 0.04em;
}

.hero-score-meta p {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.95rem;
}

.hero-score {
  display: grid;
  place-items: center;
  padding: 24px 0;
}

.ring {
  position: relative;
  width: 230px;
  height: 230px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, 0.05), transparent 52%),
              rgba(10, 10, 12, 0.96);
  box-shadow: inset 0 0 0 22px rgba(255, 255, 255, 0.04),
              0 22px 40px rgba(0, 0, 0, 0.38),
              0 0 0 4px rgba(217, 184, 92, 0.08);
  overflow: hidden;
  transition: transform var(--transition-slow), box-shadow var(--transition-slow);
}

.ring::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: radial-gradient(circle at 30% 20%, rgba(217, 184, 92, 0.18), transparent 32%);
  pointer-events: none;
}

.ring::after {
  content: "";
  position: absolute;
  inset: 24px;
  border-radius: 50%;
  background: radial-gradient(circle at top left, rgba(255, 255, 255, 0.08), transparent 38%),
              linear-gradient(180deg, rgba(7, 8, 10, 0.9), rgba(7, 8, 10, 0.86));
  box-shadow: inset 0 0 42px rgba(0, 0, 0, 0.5);
}

.ring .ring-content {
  position: relative;
  z-index: 1;
  display: grid;
  place-items: center;
  width: calc(100% - 54px);
  height: calc(100% - 54px);
  border-radius: 50%;
  background: radial-gradient(circle at 50% 45%, rgba(255, 255, 255, 0.03), rgba(10, 10, 12, 0.95));
  box-shadow: inset 0 0 20px rgba(0, 0, 0, 0.5);
}

.ring-content strong {
  display: block;
  margin-bottom: 6px;
  font-size: clamp(3.6rem, 6vw, 4.8rem);
  line-height: 0.9;
  color: #F8F4E9;
  text-shadow: 0 2px 20px rgba(0, 0, 0, 0.35);
}

.ring-content span {
  display: inline-flex;
  color: rgba(247, 243, 232, 0.74);
  font-size: 0.96rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
}

.ring:hover {
  transform: translateY(-3px);
  box-shadow: inset 0 0 0 22px rgba(255, 255, 255, 0.05),
              0 28px 58px rgba(0, 0, 0, 0.46),
              0 0 0 6px rgba(217, 184, 92, 0.12);
}

.hero-score, .metric, .readiness-row, .smart-card, .quick-btn {
  transition: transform var(--transition), box-shadow var(--transition), border-color var(--transition), background-color var(--transition);
}

.hero-score .ring {
  animation: ringAppear 420ms ease forwards;
}

@keyframes ringAppear {
  from { transform: scale(0.92); opacity: 0.2; }
  to { transform: scale(1); opacity: 1; }
}

.smart-card {
  border-color: rgba(217, 184, 92, 0.18);
}

.ai-analysis-card {
  background: rgba(18, 20, 26, 0.96);
  border-color: rgba(217, 184, 92, 0.18);
  box-shadow: 0 28px 68px rgba(0, 0, 0, 0.28);
  padding: 28px;
}

.smart-header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 18px;
}

.smart-header.smart-header-top {
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}

.smart-header.smart-header-top h2 {
  margin: 0;
  font-size: 1.05rem;
}

.smart-header.smart-header-top .smart-subtitle {
  margin: 8px 0 0;
  color: var(--text-muted);
  font-size: 0.92rem;
  max-width: 34ch;
}

.premium-badge {
  background: rgba(16, 18, 22, 0.95);
  color: var(--gold);
  border-color: rgba(217, 184, 92, 0.3);
}

.smart-icon {
  display: none;
}

.smart-header strong {
  display: block;
  font-size: 1rem;
}

.smart-banner {
  min-height: auto;
  margin: 0;
  padding: 14px 16px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
}

.smart-block {
  display: grid;
  gap: 16px;
  margin-top: 24px;
}

.recovery-block,
.recommendations-block,
.calendar-block {
  background: rgba(255, 255, 255, 0.04);
  border-radius: 24px;
  padding: 22px;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
}

.recovery-head,
.panel-heading {
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--text-muted);
}

.recovery-card {
  display: grid;
  gap: 12px;
  padding: 22px;
  border-radius: 24px;
  background: rgba(16, 18, 22, 0.92);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.recovery-score {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 8px;
}

.recovery-score strong {
  font-size: clamp(3.8rem, 7vw, 5rem);
  line-height: 0.92;
  color: var(--text);
}

.recovery-score strong span {
  font-size: 1.15rem;
  color: var(--gold-soft);
}

.recovery-status {
  margin: 0;
  color: var(--success);
  font-size: 1rem;
  text-align: center;
}

.recovery-note {
  margin: 0;
  color: var(--text-muted);
  font-size: 0.95rem;
  line-height: 1.6;
  text-align: center;
}

.recovery-summary {
  padding: 18px;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.03);
}

.recommendation-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 12px;
}

.recommendation-list li {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 20px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  transition: transform 250ms ease, background-color 250ms ease;
}

.recommendation-list li:hover {
  transform: translateY(-1px);
  background: rgba(255, 255, 255, 0.08);
}

.status-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: inline-block;
}

.status-dot.success {
  background: var(--success);
}

.status-dot.warning {
  background: var(--warning);
}

.status-dot.gold {
  background: var(--gold);
}

.week-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 10px;
  margin-top: 8px;
}

.week-day {
  min-height: 72px;
  display: grid;
  place-items: center;
  border-radius: 20px;
  color: var(--text);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  position: relative;
}

.week-day.today {
  background: rgba(217, 184, 92, 0.18);
  color: var(--text);
  border-color: rgba(217, 184, 92, 0.3);
}

.week-day.done::after {
  content: "✓";
  position: absolute;
  top: 10px;
  right: 10px;
  width: 18px;
  height: 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: rgba(75, 211, 138, 0.18);
  color: var(--success);
  font-size: 0.8rem;
}

.week-day:not(.today):not(.done) {
  background: rgba(255, 255, 255, 0.02);
  color: var(--text-muted);
}

@media (max-width: 680px) {
  .smart-block {
    padding: 18px 0 0;
  }

  .recommendation-list,
  .week-strip {
    grid-template-columns: 1fr;
  }

  .week-day {
    min-height: 64px;
  }
}

.grid3, .kpi-grid, .trend-grid, .quick-grid {
  display: grid;
  gap: 16px;
}

.grid3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.metric {
  padding: 22px;
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

.metric-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
}

.metric-icon {
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 14px;
  background: rgba(217, 184, 92, 0.12);
  color: var(--gold);
}

.metric strong {
  display: block;
  font-size: 1.85rem;
  line-height: 1;
}

.metric-subtitle {
  display: block;
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 0.88rem;
}

.readiness-card {
  padding: 24px;
}

.readiness-grid {
  display: grid;
  gap: 18px;
}

.readiness-module {
  display: grid;
  gap: 18px;
  padding: 22px;
  border-radius: 24px;
  background: rgba(16, 18, 22, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.18);
  transition: transform 300ms ease, box-shadow 300ms ease, background-color 300ms ease;
}

.readiness-module:hover {
  transform: translateY(-2px);
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.24);
}

.module-head {
  display: flex;
  align-items: center;
  gap: 14px;
}

.module-icon {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.06);
  color: var(--gold);
  font-size: 1.1rem;
}

.module-title {
  display: block;
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
}

.module-subtitle {
  display: block;
  font-size: 0.88rem;
  color: var(--text-muted);
}

.module-score {
  display: flex;
  align-items: baseline;
  gap: 6px;
}

.module-score strong {
  font-size: clamp(2.4rem, 4vw, 3.2rem);
  line-height: 0.9;
  color: var(--text);
}

.module-bar {
  position: relative;
  height: 16px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.module-bar i {
  display: block;
  height: 100%;
  width: 0;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(217, 184, 92, 0.95), rgba(242, 215, 125, 0.65));
  transition: width 300ms ease;
}

.module-footnote {
  color: var(--text-muted);
  font-size: 0.9rem;
}

@media (max-width: 720px) {
  .readiness-grid {
    grid-template-columns: 1fr;
  }
}

.row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.row button {
  min-width: 140px;
  padding: 14px 18px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  border: 1px solid rgba(255, 255, 255, 0.08);
  cursor: pointer;
}

button.secondary {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.12);
}

button.success {
  background: rgba(75, 211, 138, 0.18);
  border-color: rgba(75, 211, 138, 0.28);
  color: var(--success);
}

.coach-comment {
  margin-top: 18px;
  color: var(--text);
  min-height: 70px;
  font-size: 0.95rem;
}

.action-grid {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
}

.trend-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.trend {
  padding: 18px;
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.04);
}

.trend .value {
  font-size: 1.7rem;
  margin-bottom: 8px;
}

.trend .label {
  color: var(--text-muted);
  font-size: 0.88rem;
}

.delta {
  margin-top: 12px;
  color: var(--text-muted);
  font-size: 0.82rem;
}

.kpi-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.kpi {
  padding: 18px;
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.03);
  text-align: center;
}

.kpi strong {
  display: block;
  font-size: 1.4rem;
  margin-bottom: 8px;
}

.kpi span {
  color: var(--text-muted);
  font-size: 0.82rem;
}

.mission {
  padding: 18px;
  border-radius: var(--radius-lg);
  background: rgba(255, 255, 255, 0.03);
}

.mission p {
  margin: 0;
  color: var(--text);
  font-size: 0.95rem;
}

.xp {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--text-muted);
  font-size: 0.88rem;
}

.progress {
  height: 14px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
}

.progress i {
  display: block;
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, rgba(65, 199, 232, 0.9), rgba(76, 201, 240, 0.45));
  transition: width 520ms ease;
}

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

.quick-btn {
  display: grid;
  gap: 12px;
  width: 100%;
  padding: 18px;
  border-radius: 22px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}

.quick-btn b {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 14px;
  background: rgba(217, 184, 92, 0.16);
}

form input,
form textarea,
input[type="number"],
textarea {
  width: 100%;
  padding: 14px 16px;
  border-radius: 18px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
}

label {
  display: block;
  margin-bottom: 6px;
  color: var(--text-muted);
  font-size: 0.85rem;
}

.grid2 {
  display: grid;
  gap: 16px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

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

.tab {
  padding: 12px 16px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.04);
  color: var(--text-muted);
  cursor: pointer;
}

.tab.active {
  color: var(--gold);
  background: rgba(217, 184, 92, 0.15);
}

.nav-bar {
  position: fixed;
  inset: auto 0 0;
  z-index: 15;
  width: 100%;
  padding: calc(env(safe-area-inset-bottom, 0) + 10px) 16px 0;
  background: rgba(5, 6, 8, 0.88);
  backdrop-filter: blur(18px);
}

nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 0 10px;
  border-radius: 999px;
  background: rgba(15, 18, 24, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.08);
}

nav button {
  flex: 1;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px;
  border-radius: 18px;
  color: var(--text-muted);
  background: transparent;
  cursor: pointer;
}

nav button.active,
nav button:hover {
  color: var(--gold);
  background: rgba(217, 184, 92, 0.1);
}

nav button span {
  font-size: 0.8rem;
}

@media (max-width: 860px) {
  main {
    width: min(100%, calc(100% - 20px));
  }

  .hero-grid {
    grid-template-columns: 1fr;
  }

  .hero-v3 {
    padding: 22px;
  }

  .hero-score {
    padding-top: 12px;
  }

  .hero-title {
    font-size: 2.4rem;
  }

  .grid3,
  .trend-grid,
  .kpi-grid,
  .grid2,
  .quick-grid {
    grid-template-columns: 1fr;
  }

  .readiness-row {
    gap: 14px;
  }

  .metric,
  .trend,
  .kpi,
  .quick-btn,
  .mission,
  .card {
    padding: 20px;
    border-radius: 24px;
  }

  nav {
    gap: 8px;
  }
}

@media (max-width: 520px) {
  body {
    padding-bottom: calc(var(--nav-height) + 28px);
  }

  header {
    padding: calc(env(safe-area-inset-top, 0) + 12px) 14px 12px;
  }

  .header-inner {
    flex-direction: column;
    align-items: flex-start;
  }

  .brand {
    gap: 2px;
  }

  .hero-v3 {
    padding: 18px;
  }

  .ring {
    width: 190px;
    height: 190px;
  }

  .ring .ring-content {
    width: calc(100% - 46px);
    height: calc(100% - 46px);
  }

  .ring-content strong {
    font-size: 4.2rem;
  }

  .hero-title {
    font-size: 2.1rem;
  }

  .badge {
    padding: 8px 12px;
  }

  .row button,
  .quick-btn {
    min-height: 48px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* =========================================================
   PHASE 2 — COACH ADAPTATIF
   ========================================================= */
.adaptive-banner{
  margin-bottom:16px;
  padding:16px 18px;
  border-radius:20px;
  border:1px solid rgba(217,184,92,.22);
  background:linear-gradient(135deg,rgba(217,184,92,.10),rgba(255,255,255,.025));
  box-shadow:0 14px 34px rgba(0,0,0,.18);
}
.adaptive-banner strong{display:block;color:var(--gold);font-size:.86rem;letter-spacing:.08em;text-transform:uppercase}
.adaptive-banner p{margin:6px 0 0;color:var(--text);line-height:1.55}
.adaptive-feedback{
  margin-top:20px;
  padding:18px;
  border-radius:22px;
  border:1px solid rgba(65,199,232,.16);
  background:rgba(65,199,232,.045);
}
.adaptive-feedback h3{margin:0 0 14px}
.adaptive-feedback textarea{min-height:78px}
.session-card.recommended::after{content:"Programme conseillé";display:block;margin-top:10px;color:var(--gold);font-size:.78rem;font-weight:700}
@media(max-width:620px){.adaptive-feedback .grid2{grid-template-columns:1fr}.adaptive-banner{padding:15px}}
.adaptive-home-note{margin-top:12px;padding:12px 14px;border-radius:16px;background:rgba(217,184,92,.08);border:1px solid rgba(217,184,92,.14);color:var(--text);line-height:1.5}
.adaptive-home-note b{color:var(--gold)}


/* Babou Coach — interface recentrée sur le sport */
.header-actions{display:flex;align-items:center;gap:10px}
.brand small{display:block;margin-top:2px;color:var(--muted);font-size:.72rem;font-weight:600;letter-spacing:.04em}
.icon-button{width:42px;height:42px;display:grid;place-items:center;padding:0;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(217,184,92,.16);color:var(--muted);font-size:1.15rem;line-height:1}
.icon-button:hover,.icon-button.active{background:rgba(217,184,92,.18);border-color:rgba(217,184,92,.32);color:var(--gold)}
.legacy-module,.legacy-page{display:none!important}
nav{grid-template-columns:repeat(3,minmax(0,1fr));max-width:620px;margin:0 auto;left:50%;right:auto;width:min(100%,620px);transform:translateX(-50%);border-radius:24px 24px 0 0}
nav button{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;font-size:.82rem}
.nav-icon{font-size:1rem;line-height:1}
@media(max-width:520px){.header-inner{flex-direction:row;align-items:center}.header-actions{margin-left:auto}nav{width:100%;border-radius:20px 20px 0 0}nav button{padding:11px 5px;font-size:.76rem}.header-actions .badge{display:none}}


/* Suivi hydratation, poids et photos hebdomadaires */
.daily-tracking-card .section-title{align-items:flex-start}
.daily-tracking-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:16px;margin-top:16px}
.tracking-panel{min-width:0;padding:18px;border-radius:22px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.08)}
.tracking-panel-head{display:flex;align-items:center;gap:12px}.tracking-panel-head>div{display:grid;gap:2px}.tracking-panel-head small{color:var(--muted)}
.tracking-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;background:rgba(217,184,92,.1);font-size:1.25rem}
.tracking-main-value{margin-top:18px;font-size:1.65rem;font-weight:800;letter-spacing:-.03em}
.tracking-progress{height:9px;margin-top:12px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.07)}
.tracking-progress i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#6ecff6,var(--gold));transition:width .25s ease}
.tracking-note{min-height:20px;margin:9px 0 14px}.tracking-actions{display:grid;gap:8px}.three-actions{grid-template-columns:repeat(3,1fr)}
.tracking-actions button{padding:10px 8px;min-height:42px}.weight-entry-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}
.weight-entry-row input{margin:0}.weight-entry-row button{white-space:nowrap}.body-kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:16px 0}
.body-kpi{padding:16px;border-radius:18px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07)}.body-kpi span{display:block;color:var(--muted);font-size:.78rem}.body-kpi strong{display:block;margin-top:7px;font-size:1.35rem}
.progression-weight-entry{max-width:560px}.weekly-photo-action{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px;border-radius:20px;background:rgba(217,184,92,.055);border:1px solid rgba(217,184,92,.12)}
.weekly-photo-action p{margin:5px 0 0}.before-after-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.comparison-card{position:relative;min-width:0;overflow:hidden;border-radius:22px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.08)}
.comparison-label{position:absolute;z-index:2;top:12px;left:12px;padding:6px 10px;border-radius:999px;background:rgba(5,7,10,.72);backdrop-filter:blur(8px);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.comparison-placeholder{min-height:300px;display:grid;place-items:center;padding:24px;text-align:center;color:var(--muted);background:linear-gradient(135deg,rgba(255,255,255,.02),rgba(217,184,92,.04))}
.comparison-photo img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover}.comparison-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px}.comparison-meta span{color:var(--muted);font-size:.78rem}
.weekly-gallery-details{margin-top:18px}.weekly-gallery-details summary{cursor:pointer;color:var(--gold);font-weight:700}.weekly-photo-grid{margin-top:14px}.weekly-photo-grid .photo-card button{width:100%;margin-top:7px;padding:9px;min-height:38px}
@media(max-width:760px){.daily-tracking-grid,.before-after-grid{grid-template-columns:1fr}.body-kpi-grid{grid-template-columns:1fr 1fr}.weekly-photo-action{align-items:stretch;flex-direction:column}.weekly-photo-action button{width:100%}.comparison-placeholder{min-height:240px}}
@media(max-width:480px){.three-actions{grid-template-columns:1fr 1fr}.three-actions button:last-child{grid-column:1/-1}.weight-entry-row{grid-template-columns:1fr}.weight-entry-row button{width:100%}.body-kpi-grid{grid-template-columns:1fr}.tabs{overflow-x:auto;justify-content:flex-start}.tabs .tab{flex:0 0 auto}}


/* Babou Coach 2.1 — tableau de bord dynamique, suivi hebdomadaire et chronomètre */
.workout-header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.hydration-week-block{margin:0 0 14px;padding:12px;border-radius:16px;background:rgba(255,255,255,.022);border:1px solid rgba(255,255,255,.06)}
.hydration-week-summary{margin-bottom:10px;color:var(--muted);font-size:.8rem}
.hydration-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.hydration-day{display:grid;justify-items:center;gap:5px;min-width:0;color:var(--muted);font-size:.68rem;text-transform:capitalize}
.hydration-day i{position:relative;width:100%;height:38px;overflow:hidden;border-radius:8px;background:rgba(255,255,255,.06)}
.hydration-day i::after{content:"";position:absolute;left:0;right:0;bottom:0;height:var(--hydration);background:linear-gradient(180deg,#6ecff6,var(--gold));transition:height .25s ease}
.hydration-day.reached span,.hydration-day.reached small{color:var(--gold)}
.hydration-day small{font-size:.62rem}.hydration-actions{grid-template-columns:repeat(2,minmax(0,1fr))}
.body-kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.weight-trend-summary{margin-top:-4px;margin-bottom:16px}.chart-legend{margin:10px 0 0;text-align:center}
.storage-warning{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(255,111,122,.1);border:1px solid rgba(255,111,122,.2);color:#ffb1b8}
.timer-dock{position:fixed;z-index:80;right:max(16px,env(safe-area-inset-right));bottom:calc(82px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 13px;border-radius:999px;background:rgba(10,16,26,.94);color:var(--text);border:1px solid rgba(217,184,92,.28);box-shadow:0 14px 34px rgba(0,0,0,.35);backdrop-filter:blur(14px)}
.timer-dock strong{color:var(--gold);font-size:.78rem}.timer-dock span:last-child{font-variant-numeric:tabular-nums;font-weight:800}
.timing-tool-modal{z-index:120}.timing-tool-sheet{max-width:560px}.timing-tool-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.timing-tool-heading h2{margin-bottom:4px}.timing-tool-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}.timing-tool-tabs .tab{width:100%}
.timing-tool-display{margin:22px 0 8px;text-align:center;font-size:clamp(3.4rem,14vw,6rem);line-height:1;font-weight:850;letter-spacing:-.06em;font-variant-numeric:tabular-nums;color:var(--gold)}
.timing-tool-status{text-align:center;margin-bottom:18px}.countdown-controls{padding:16px;border-radius:18px;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07)}
.timer-presets{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.timer-presets button{padding:10px 5px;min-height:42px}.custom-timer-row{margin-top:14px}.custom-timer-row>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.custom-timer-row input{margin:0}.timing-tool-actions{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:8px;margin-top:18px}
@media(max-width:760px){.body-kpi-grid{grid-template-columns:1fr 1fr}.timer-presets{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.workout-header-card .row{align-items:flex-start}.workout-header-actions{width:100%;justify-content:stretch}.workout-header-actions button{flex:1}.timing-tool-actions{grid-template-columns:1fr 1fr}.timing-tool-actions button:last-child{grid-column:1/-1}.timer-presets{grid-template-columns:1fr 1fr}.custom-timer-row>div{grid-template-columns:1fr}.custom-timer-row button{width:100%}.timer-dock{right:10px;bottom:calc(78px + env(safe-area-inset-bottom))}}
.modal:not(.hidden) .modal-backdrop{pointer-events:auto}
.modal .timing-tool-sheet{max-width:560px;max-height:calc(100vh - 24px);overflow:auto}
.timing-tool-heading h2{text-align:left}
