:root,
[data-bs-theme="light"] {
  --rl-bg: #f3f7f4;
  --rl-surface: #fbfcfb;
  --rl-surface-2: #eef4ef;
  --rl-text: #172119;
  --rl-muted: #5d6b62;
  --rl-border: #d6e2d9;
  --rl-primary: #176f66;
  --rl-primary-strong: #11564f;
  --rl-accent: #a7443f;
  --rl-warning: #8b6418;
  --rl-shadow: 0 12px 30px rgba(23, 33, 25, 0.08);
  --bs-body-bg: var(--rl-bg);
  --bs-body-color: var(--rl-text);
  --bs-primary: var(--rl-primary);
  --bs-border-color: var(--rl-border);
  --bs-link-color: var(--rl-primary);
  --bs-link-hover-color: var(--rl-primary-strong);
}

[data-bs-theme="dark"] {
  --rl-bg: #151a16;
  --rl-surface: #202721;
  --rl-surface-2: #27302a;
  --rl-text: #eef5ef;
  --rl-muted: #afbeb2;
  --rl-border: #3b483f;
  --rl-primary: #62c8b7;
  --rl-primary-strong: #8fddcf;
  --rl-accent: #e08a82;
  --rl-warning: #e0bd70;
  --rl-shadow: 0 14px 34px rgba(0, 0, 0, 0.28);
  --bs-body-bg: var(--rl-bg);
  --bs-body-color: var(--rl-text);
  --bs-primary: var(--rl-primary);
  --bs-border-color: var(--rl-border);
  --bs-link-color: var(--rl-primary);
  --bs-link-hover-color: var(--rl-primary-strong);
}

html,
body {
  min-height: 100%;
  background: var(--rl-bg);
}

body {
  color: var(--rl-text);
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.5;
}

body.theme-ready,
body.theme-ready .card,
body.theme-ready .replog-nav,
body.theme-ready .form-control,
body.theme-ready .form-select,
body.theme-ready .btn,
body.theme-ready .table,
body.theme-ready .alert,
body.theme-ready .badge {
  transition:
    background-color 220ms ease,
    border-color 220ms ease,
    color 220ms ease,
    box-shadow 220ms ease;
}

@media (prefers-reduced-motion: reduce) {
  body.theme-ready,
  body.theme-ready * {
    transition: none !important;
  }
}

.replog-nav {
  background: color-mix(in srgb, var(--rl-surface) 88%, transparent);
  border-bottom: 1px solid var(--rl-border);
  backdrop-filter: blur(12px);
}

.navbar-brand {
  color: var(--rl-text);
  letter-spacing: 0;
}

.nav-link {
  color: var(--rl-muted);
}

.nav-link:hover,
.nav-link.active,
.navbar-brand:hover {
  color: var(--rl-primary);
}

.page-kicker {
  color: var(--rl-primary);
  font-size: 0.84rem;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: uppercase;
}

.page-title {
  font-weight: 800;
  letter-spacing: 0;
}

.text-muted {
  color: var(--rl-muted) !important;
}

.card {
  background: var(--rl-surface);
  border: 1px solid var(--rl-border);
  border-radius: 8px;
  box-shadow: var(--rl-shadow);
  color: var(--rl-text);
}

.soft-panel {
  background: var(--rl-surface-2);
  border: 1px solid var(--rl-border);
  border-radius: 8px;
}

.loader-panel,
.empty-state {
  align-items: center;
  background: var(--rl-surface);
  border: 1px solid var(--rl-border);
  border-radius: 8px;
  box-shadow: var(--rl-shadow);
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 260px;
  padding: 2rem;
  text-align: center;
}

.btn {
  border-radius: 8px;
  font-weight: 650;
  letter-spacing: 0;
}

.btn-primary {
  --bs-btn-bg: var(--rl-primary);
  --bs-btn-border-color: var(--rl-primary);
  --bs-btn-hover-bg: var(--rl-primary-strong);
  --bs-btn-hover-border-color: var(--rl-primary-strong);
  --bs-btn-active-bg: var(--rl-primary-strong);
  --bs-btn-active-border-color: var(--rl-primary-strong);
  --bs-btn-color: #ffffff;
}

[data-bs-theme="dark"] .btn-primary {
  --bs-btn-color: #10201c;
}

.btn-outline-secondary {
  --bs-btn-color: var(--rl-text);
  --bs-btn-border-color: var(--rl-border);
  --bs-btn-hover-color: var(--rl-text);
  --bs-btn-hover-bg: var(--rl-surface-2);
  --bs-btn-hover-border-color: var(--rl-primary);
}

.theme-toggle {
  min-width: 92px;
}

.form-control,
.form-select {
  background-color: var(--rl-surface);
  border-color: var(--rl-border);
  border-radius: 8px;
  color: var(--rl-text);
}

.form-control:focus,
.form-select:focus {
  border-color: var(--rl-primary);
  box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--rl-primary) 22%, transparent);
}

.form-label {
  color: var(--rl-text);
  font-weight: 650;
}

.input-group-text {
  background: var(--rl-surface-2);
  border-color: var(--rl-border);
  color: var(--rl-muted);
}

.table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--rl-text);
  --bs-table-border-color: var(--rl-border);
  margin-bottom: 0;
}

.table thead th {
  color: var(--rl-muted);
  font-size: 0.82rem;
  font-weight: 750;
  text-transform: uppercase;
}

.badge-soft {
  background: var(--rl-surface-2);
  border: 1px solid var(--rl-border);
  color: var(--rl-text);
}

.badge-accent {
  background: color-mix(in srgb, var(--rl-accent) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--rl-accent) 38%, transparent);
  color: var(--rl-accent);
}

.slot-number {
  align-items: center;
  background: var(--rl-surface-2);
  border: 1px solid var(--rl-border);
  border-radius: 8px;
  color: var(--rl-primary);
  display: inline-flex;
  font-weight: 800;
  height: 2.25rem;
  justify-content: center;
  width: 2.25rem;
}

.set-row {
  align-items: end;
  border-top: 1px solid var(--rl-border);
  display: grid;
  gap: 0.75rem;
  grid-template-columns: minmax(3rem, 0.35fr) minmax(7rem, 1fr) minmax(7rem, 1fr) auto;
  padding: 0.9rem 0;
}

.set-row.timed {
  grid-template-columns: minmax(3rem, 0.35fr) minmax(8rem, 1fr) auto;
}

.set-row:first-child {
  border-top: 0;
}

.set-label {
  color: var(--rl-muted);
  font-weight: 750;
  padding-bottom: 0.45rem;
}

.mini-label {
  color: var(--rl-muted);
  font-size: 0.82rem;
  font-weight: 650;
  margin-bottom: 0.25rem;
}

.progression-hint {
  border-left: 4px solid var(--rl-primary);
  color: var(--rl-text);
  font-weight: 650;
}

.last-performance {
  color: var(--rl-muted);
  min-height: 1.5rem;
}

.notes-box {
  min-height: 110px;
}

.history-session-link {
  text-decoration: none;
}

.history-session-link .card:hover {
  border-color: var(--rl-primary);
  transform: translateY(-1px);
}

.session-detail-table td,
.session-detail-table th {
  vertical-align: middle;
}

.alert {
  border-radius: 8px;
}

.alert-info {
  background: color-mix(in srgb, var(--rl-primary) 10%, var(--rl-surface));
  border-color: color-mix(in srgb, var(--rl-primary) 32%, var(--rl-border));
  color: var(--rl-text);
}

.alert-warning {
  background: color-mix(in srgb, var(--rl-warning) 14%, var(--rl-surface));
  border-color: color-mix(in srgb, var(--rl-warning) 38%, var(--rl-border));
  color: var(--rl-text);
}

.alert-danger {
  background: color-mix(in srgb, #c03f3f 13%, var(--rl-surface));
  border-color: color-mix(in srgb, #c03f3f 42%, var(--rl-border));
  color: var(--rl-text);
}

.bodyweight-list-item {
  border-bottom: 1px solid var(--rl-border);
  padding: 1rem 0;
}

.bodyweight-list-item:last-child {
  border-bottom: 0;
}

@media (max-width: 767px) {
  .set-row,
  .set-row.timed {
    grid-template-columns: 1fr;
  }

  .set-label {
    padding-bottom: 0;
  }

  .set-row .btn {
    width: 100%;
  }
}
