/* ============================================================
   MODALS & POPUPS
   Professional, accessible, animated overlays
   ============================================================ */

/* Modal backdrop */
.modal-backdrop {
  position: fixed;
  inset: 0;
  background-color: color-mix(in oklch, var(--color-text-primary) 45%, transparent);
  z-index: var(--z-modal-backdrop);
  opacity: 1;
  transition: opacity 200ms var(--ease-out);
}

.modal-backdrop.hidden {
  opacity: 0;
  pointer-events: none;
}

/* Modal container */
.modal-container {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 110;
  padding: 1rem;
  pointer-events: none;
}

.modal-container.active {
  pointer-events: auto;
}

/* Modal dialog */
.modal-dialog {
  background-color: white;
  border-radius: 12px;
  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1),
              0 10px 10px -5px rgba(0, 0, 0, 0.04);
  max-width: 500px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  transform: scale(0.95) translateY(10px);
  opacity: 0;
  transition: all 200ms var(--ease-out);
}

.modal-container.active .modal-dialog {
  transform: scale(1) translateY(0);
  opacity: 1;
}

/* Modal header */
.modal-header {
  padding: 1.5rem;
  border-bottom: 1px solid #e5e7eb;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.modal-title {
  font-size: 1.25rem;
  font-weight: 700;
  color: #1f2937;
  margin: 0;
}

.modal-close {
  width: 36px;
  height: 36px;
  padding: 0;
  border: none;
  background: transparent;
  color: #6b7280;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  transition: all 200ms var(--ease-out);
  font-size: 1.5rem;
}

.modal-close:hover {
  background-color: #f3f4f6;
  color: #1f2937;
}

.modal-close:active {
  transform: scale(0.9);
}

/* Modal body */
.modal-body {
  padding: 1.5rem;
  color: #374151;
  line-height: 1.6;
}

.modal-body p {
  margin: 0 0 1rem 0;
  font-size: 0.95rem;
}

.modal-body p:last-child {
  margin-bottom: 0;
}

/* Modal footer */
.modal-footer {
  padding: 1.5rem;
  border-top: 1px solid #e5e7eb;
  display: flex;
  gap: 1rem;
  justify-content: flex-end;
}

.modal-footer-full-width {
  flex-direction: column-reverse;
}

.modal-footer-full-width .modal-btn {
  width: 100%;
}

/* Modal buttons */
.modal-btn {
  padding: 0.625rem 1.25rem;
  border-radius: 8px;
  font-size: 0.95rem;
  font-weight: 600;
  border: none;
  cursor: pointer;
  transition: all 200ms var(--ease-out);
  min-height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
}

.modal-btn:active {
  transform: scale(0.95);
}

.modal-btn-primary {
  background-color: var(--color-primary-500);
  color: white;
}

.modal-btn-primary:hover {
  background-color: #005189;
  box-shadow: 0 4px 12px color-mix(in oklch, var(--color-primary-500) 30%, transparent);
}

.modal-btn-secondary {
  background-color: #f3f4f6;
  color: #374151;
  border: 1px solid #d1d5db;
}

.modal-btn-secondary:hover {
  background-color: #e5e7eb;
  border-color: #9ca3af;
}

.modal-btn-danger {
  background-color: #fee2e2;
  color: #991b1b;
  border: 1px solid #fecaca;
}

.modal-btn-danger:hover {
  background-color: #fecaca;
  border-color: #f87171;
}

.modal-btn:focus-visible {
  outline: 2px solid var(--color-primary-500);
  outline-offset: 2px;
}

/* ============================================================
   FORM ELEMENTS IN MODALS
   ============================================================ */

.form-group {
  margin-bottom: 1.5rem;
}

.form-label {
  display: block;
  font-weight: 600;
  color: #374151;
  margin-bottom: 0.5rem;
  font-size: 0.95rem;
}

.form-control {
  display: block;
  width: 100%;
  padding: 0.625rem 0.75rem;
  border-radius: 8px;
  border: 1px solid #d1d5db;
  font-size: 0.95rem;
  transition: all 200ms var(--ease-out);
}

.form-control:focus {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: var(--focus-ring);
  background-color: #f0f7ff;
}

/* Radio & Checkbox in forms */
.form-check {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 1rem;
  cursor: pointer;
}

.form-check input {
  cursor: pointer;
}

.form-check-label {
  cursor: pointer;
  color: #374151;
  font-size: 0.95rem;
  user-select: none;
}

/* ============================================================
   SPECIFIC MODALS
   Tailwind's 'hidden' class handles visibility.
   Do NOT override display here.
   ============================================================ */

/* ============================================================
   ANIMATIONS
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .modal-backdrop {
    transition: none;
  }

  .modal-dialog {
    transition: none;
    transform: scale(1) translateY(0);
    opacity: 1;
  }

  .modal-btn {
    transition: none;
  }
}

/* ============================================================
   SETUP MODAL — Home entry flow
   Redesign: contextual header, no nested cards, live summary
   ============================================================ */

/* Mode accent tokens — one source of truth per mode.
   Everything else (header badge, radios, summary) reads from these. */
.setup-modal {
  --mode-fg: oklch(50% 0.22 236);
  --mode-bg-soft: oklch(96% 0.03 236);
  --mode-ring: oklch(70% 0.14 236);
  --mode-strong: oklch(44% 0.24 236);
}
.setup-modal[data-mode="exam"] {
  --mode-fg: oklch(50% 0.22 236);
  --mode-bg-soft: oklch(96% 0.03 236);
  --mode-ring: oklch(70% 0.14 236);
  --mode-strong: oklch(44% 0.24 236);
}
.setup-modal[data-mode="learning"] {
  --mode-fg: oklch(60% 0.16 68);
  --mode-bg-soft: oklch(97% 0.03 68);
  --mode-ring: oklch(76% 0.12 68);
  --mode-strong: oklch(50% 0.17 68);
}
.setup-modal[data-mode="spaced"] {
  --mode-fg: oklch(52% 0.13 185);
  --mode-bg-soft: oklch(96% 0.03 185);
  --mode-ring: oklch(72% 0.11 185);
  --mode-strong: oklch(44% 0.14 185);
}

/* Overlay + centering */
.setup-modal {
  position: fixed;
  inset: 0;
  z-index: var(--z-modal);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: color-mix(in oklch, var(--color-text-primary) 55%, transparent);
  animation: setup-modal-overlay-in 200ms var(--ease-out) both;
}

.setup-modal.hidden {
  display: none;
}

@keyframes setup-modal-overlay-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Panel */
.setup-modal-panel {
  position: relative;
  display: flex;
  flex-direction: column;
  width: 100%;
  max-width: 34rem;
  max-height: min(92vh, 780px);
  background: #ffffff;
  border-radius: 20px;
  border: 1px solid color-mix(in oklch, var(--color-primary-100) 55%, var(--color-border-light));
  box-shadow:
    0 32px 60px -28px rgba(2, 6, 23, 0.56),
    0 14px 24px -18px rgba(37, 99, 235, 0.28);
  overflow: hidden;
  animation: setup-modal-panel-in 240ms var(--ease-out) both;
}

@keyframes setup-modal-panel-in {
  from { opacity: 0; transform: translateY(10px) scale(0.985); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}

/* Header */
.setup-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.35rem 1.5rem 1.15rem;
  border-bottom: 1px solid color-mix(in oklch, var(--color-primary-100) 40%, var(--color-border-light));
  background:
    linear-gradient(180deg,
      color-mix(in oklch, var(--mode-bg-soft) 90%, white) 0%,
      #ffffff 100%);
  transition: background 300ms var(--ease-out);
}

.setup-modal-heading {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  min-width: 0;
}

.setup-mode-badge {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in oklch, var(--mode-bg-soft) 70%, white);
  color: var(--mode-fg);
  border: 1px solid color-mix(in oklch, var(--mode-ring) 40%, transparent);
  transition:
    background-color 240ms var(--ease-out),
    color 240ms var(--ease-out),
    border-color 240ms var(--ease-out);
}

.setup-mode-badge__icon {
  width: 24px;
  height: 24px;
  display: none;
}
.setup-modal[data-mode="exam"]     .setup-mode-badge__icon--exam,
.setup-modal[data-mode="learning"] .setup-mode-badge__icon--learning,
.setup-modal[data-mode="spaced"]   .setup-mode-badge__icon--spaced {
  display: block;
}

.setup-modal-heading__text {
  min-width: 0;
}

.setup-modal-eyebrow {
  margin: 0 0 0.15rem;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--mode-strong) 85%, black);
}

.setup-modal-title {
  margin: 0;
  font-size: 1.3rem;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--color-text-primary);
  line-height: 1.15;
}

.setup-modal-close {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.1rem;
  height: 2.1rem;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--color-text-secondary);
  cursor: pointer;
  transition:
    background-color 160ms var(--ease-out),
    color 160ms var(--ease-out),
    transform 160ms var(--ease-out),
    border-color 160ms var(--ease-out);
}
.setup-modal-close svg { width: 18px; height: 18px; }
.setup-modal-close:hover {
  background-color: color-mix(in oklch, var(--color-primary-100) 50%, white);
  color: var(--color-text-primary);
}
.setup-modal-close:focus-visible {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary-200) 60%, white);
}
.setup-modal-close:active { transform: scale(0.94); }

/* Body */
.setup-modal-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 1.2rem 1.5rem 0.4rem;
  display: flex;
  flex-direction: column;
  gap: 1.05rem;
  scrollbar-gutter: stable;
}

/* Alerts */
.setup-alert {
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
  padding: 0.75rem 0.9rem;
  border-radius: 12px;
  border: 1px solid;
}
.setup-alert__icon { width: 20px; height: 20px; flex-shrink: 0; margin-top: 0.1rem; }
.setup-alert__body { flex: 1; min-width: 0; }
.setup-alert__title { margin: 0 0 0.15rem; font-size: 0.86rem; font-weight: 600; }
.setup-alert__text  { margin: 0; font-size: 0.8rem; line-height: 1.45; }

.setup-alert--warning {
  background: color-mix(in oklch, var(--color-warning-50) 88%, white);
  border-color: color-mix(in oklch, var(--color-warning-200) 60%, var(--color-border));
  color: color-mix(in oklch, var(--color-warning-700) 90%, black);
}
.setup-alert--warning .setup-alert__icon { color: var(--color-warning-600); }

.setup-alert--success {
  background: color-mix(in oklch, var(--color-success-50) 88%, white);
  border-color: color-mix(in oklch, var(--color-success-200) 60%, var(--color-border));
  color: color-mix(in oklch, var(--color-success-800) 90%, black);
}
.setup-alert--success .setup-alert__icon { color: var(--color-success-600); }

/* Fields */
.setup-field {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.setup-field__label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--color-text-secondary);
  text-transform: uppercase;
  padding: 0;
}

.setup-field__label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.setup-field__hint {
  margin: 0;
  font-size: 0.78rem;
  color: var(--color-text-secondary);
}

.setup-field__extra { margin-top: 0.25rem; }

.setup-field--modes { border: 0; padding: 0; margin: 0; }

/* Native select — custom chevron, no reinvented control */
.setup-select { position: relative; }
.setup-select__native {
  appearance: none;
  -webkit-appearance: none;
  width: 100%;
  padding: 0.7rem 2.4rem 0.7rem 0.85rem;
  font-size: 0.92rem;
  font-family: inherit;
  color: var(--color-text-primary);
  background-color: #ffffff;
  border: 1px solid color-mix(in oklch, var(--color-primary-200) 32%, var(--color-border));
  border-radius: 10px;
  cursor: pointer;
  transition:
    border-color 160ms var(--ease-out),
    box-shadow 180ms var(--ease-out),
    background-color 160ms var(--ease-out);
}
.setup-select__native:hover {
  border-color: color-mix(in oklch, var(--color-primary-300) 50%, var(--color-border));
}
.setup-select__native:focus-visible {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary-200) 55%, white);
}
.setup-select__chevron {
  position: absolute;
  right: 0.85rem;
  top: 50%;
  transform: translateY(-50%);
  width: 16px;
  height: 16px;
  color: var(--color-text-secondary);
  pointer-events: none;
}

/* File inputs */
.setup-file-picker {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  padding: 0.75rem;
  border: 1px dashed color-mix(in oklch, var(--color-primary-200) 55%, var(--color-border));
  border-radius: 10px;
  background: color-mix(in oklch, var(--color-primary-50) 45%, white);
}
.setup-file-picker__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--color-text-secondary);
}
.setup-file-input {
  width: 100%;
  font-size: 0.82rem;
  color: var(--color-text-primary);
  cursor: pointer;
}
.setup-file-input::file-selector-button {
  margin-right: 0.65rem;
  padding: 0.4rem 0.75rem;
  border-radius: 8px;
  border: 0;
  font-size: 0.78rem;
  font-weight: 600;
  background: color-mix(in oklch, var(--color-warning-100) 80%, white);
  color: color-mix(in oklch, var(--color-warning-800) 85%, black);
  cursor: pointer;
  transition: background-color 160ms var(--ease-out);
}
.setup-file-input::file-selector-button:hover {
  background: color-mix(in oklch, var(--color-warning-200) 75%, white);
}
.setup-file-input--primary::file-selector-button {
  background: var(--color-primary-500);
  color: #ffffff;
}
.setup-file-input--primary::file-selector-button:hover {
  background: var(--color-primary-600);
}

/* Mode radios — icon+label+hint, distinct focus rings, no nested card */
.setup-mode-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.55rem;
}
.setup-mode-option { position: relative; display: block; margin: 0; cursor: pointer; }
.setup-mode-option__input {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.setup-mode-option__card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.4rem;
  padding: 0.9rem 0.4rem;
  min-height: 5.5rem;
  border-radius: 12px;
  border: 1px solid color-mix(in oklch, var(--color-primary-100) 60%, var(--color-border-light));
  background: #ffffff;
  color: var(--color-text-primary);
  text-align: center;
  transition:
    border-color 180ms var(--ease-out),
    background-color 180ms var(--ease-out),
    color 180ms var(--ease-out),
    box-shadow 180ms var(--ease-out),
    transform 180ms var(--ease-out);
}
.setup-mode-option:hover .setup-mode-option__card {
  border-color: color-mix(in oklch, var(--color-primary-300) 55%, var(--color-border));
  transform: translateY(-1px);
}
.setup-mode-option__icon {
  width: 22px;
  height: 22px;
  color: var(--color-text-secondary);
  transition: color 180ms var(--ease-out), transform 240ms var(--ease-out);
}
.setup-mode-option__name {
  font-size: 0.82rem;
  font-weight: 600;
  line-height: 1;
}
.setup-mode-option__hint {
  font-size: 0.68rem;
  font-weight: 500;
  color: var(--color-text-secondary);
  line-height: 1.2;
}

/* Selected states — per mode accent */
.setup-mode-option__input:checked + .setup-mode-option__card--exam {
  border-color: oklch(70% 0.14 236);
  background: color-mix(in oklch, oklch(96% 0.03 236) 88%, white);
  box-shadow: 0 6px 14px -10px oklch(50% 0.22 236 / 0.55);
}
.setup-mode-option__input:checked + .setup-mode-option__card--exam .setup-mode-option__icon,
.setup-mode-option__card--exam:hover .setup-mode-option__icon { color: oklch(44% 0.24 236); }

.setup-mode-option__input:checked + .setup-mode-option__card--learning {
  border-color: oklch(76% 0.12 68);
  background: color-mix(in oklch, oklch(97% 0.03 68) 88%, white);
  box-shadow: 0 6px 14px -10px oklch(60% 0.16 68 / 0.55);
}
.setup-mode-option__input:checked + .setup-mode-option__card--learning .setup-mode-option__icon,
.setup-mode-option__card--learning:hover .setup-mode-option__icon { color: oklch(50% 0.17 68); }

.setup-mode-option__input:checked + .setup-mode-option__card--spaced {
  border-color: oklch(72% 0.11 185);
  background: color-mix(in oklch, oklch(96% 0.03 185) 88%, white);
  box-shadow: 0 6px 14px -10px oklch(52% 0.13 185 / 0.55);
}
.setup-mode-option__input:checked + .setup-mode-option__card--spaced .setup-mode-option__icon,
.setup-mode-option__card--spaced:hover .setup-mode-option__icon { color: oklch(44% 0.14 185); }

.setup-mode-option__input:focus-visible + .setup-mode-option__card {
  outline: none;
  box-shadow:
    0 0 0 2px #ffffff,
    0 0 0 4px color-mix(in oklch, var(--mode-ring) 70%, transparent);
}

/* Spaced-repetition panel — no border-left stripe, no card-in-card */
.setup-spaced-panel {
  padding: 0.85rem 1rem;
  border-radius: 12px;
  background: color-mix(in oklch, oklch(96% 0.03 185) 60%, white);
  border: 1px solid color-mix(in oklch, oklch(72% 0.11 185) 45%, var(--color-border-light));
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.setup-spaced-panel__text {
  margin: 0;
  font-size: 0.82rem;
  line-height: 1.5;
  color: color-mix(in oklch, oklch(44% 0.14 185) 90%, black);
}
.setup-spaced-panel__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
.setup-spaced-panel__label {
  font-size: 0.82rem;
  font-weight: 600;
  color: color-mix(in oklch, oklch(44% 0.14 185) 90%, black);
}
.setup-spaced-panel__stats {
  margin: 0;
  padding-top: 0.6rem;
  border-top: 1px solid color-mix(in oklch, oklch(72% 0.11 185) 30%, var(--color-border-light));
  font-size: 0.75rem;
  color: color-mix(in oklch, oklch(44% 0.14 185) 80%, black);
  line-height: 1.5;
}

/* Range field: presets + inputs */
.setup-range-presets {
  display: inline-flex;
  gap: 0.3rem;
}
.setup-range-preset {
  padding: 0.28rem 0.55rem;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--color-text-secondary);
  background: transparent;
  border: 1px solid color-mix(in oklch, var(--color-primary-100) 60%, var(--color-border-light));
  border-radius: 999px;
  cursor: pointer;
  transition:
    color 140ms var(--ease-out),
    background-color 140ms var(--ease-out),
    border-color 140ms var(--ease-out);
}
.setup-range-preset:hover {
  color: color-mix(in oklch, var(--color-primary-700) 85%, black);
  background: color-mix(in oklch, var(--color-primary-50) 80%, white);
  border-color: color-mix(in oklch, var(--color-primary-300) 55%, var(--color-border));
}
.setup-range-preset:focus-visible {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 2px color-mix(in oklch, var(--color-primary-200) 55%, white);
}
.setup-range-preset.is-active {
  color: #ffffff;
  background: var(--color-primary-500);
  border-color: var(--color-primary-500);
}

.setup-range-grid {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  gap: 0.5rem;
}
.setup-range-field {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
}
.setup-range-field__label {
  font-size: 0.72rem;
  font-weight: 500;
  color: var(--color-text-secondary);
}
.setup-range-separator {
  align-self: end;
  padding-bottom: 0.65rem;
  font-size: 0.9rem;
  color: var(--color-text-tertiary);
}

.setup-number-input {
  width: 100%;
  padding: 0.62rem 0.75rem;
  font-size: 0.95rem;
  font-family: inherit;
  color: var(--color-text-primary);
  background: #ffffff;
  border: 1px solid color-mix(in oklch, var(--color-primary-200) 32%, var(--color-border));
  border-radius: 10px;
  text-align: center;
  transition:
    border-color 160ms var(--ease-out),
    box-shadow 180ms var(--ease-out);
}
.setup-number-input:focus-visible {
  outline: none;
  border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px color-mix(in oklch, var(--color-primary-200) 55%, white);
}
.setup-number-input--spaced {
  width: 5rem;
  border-color: color-mix(in oklch, oklch(72% 0.11 185) 40%, var(--color-border));
}
.setup-number-input--spaced:focus-visible {
  border-color: oklch(52% 0.13 185);
  box-shadow: 0 0 0 3px color-mix(in oklch, oklch(72% 0.11 185) 45%, white);
}

/* Summary — live preview of the session that's about to start */
.setup-summary {
  margin-top: 0.15rem;
  padding: 0.85rem 1rem;
  border-radius: 12px;
  background:
    linear-gradient(180deg,
      color-mix(in oklch, var(--mode-bg-soft) 70%, white) 0%,
      #ffffff 100%);
  border: 1px solid color-mix(in oklch, var(--mode-ring) 30%, var(--color-border-light));
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.75rem;
  transition: background 240ms var(--ease-out), border-color 240ms var(--ease-out);
}
.setup-summary__row {
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
  min-width: 0;
}
.setup-summary__label {
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-text-secondary);
}
.setup-summary__value {
  font-size: 0.98rem;
  font-weight: 700;
  color: color-mix(in oklch, var(--mode-strong) 85%, black);
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.setup-summary.setup-summary--no-duration { grid-template-columns: repeat(2, minmax(0, 1fr)); }

/* Footer */
.setup-modal-footer {
  display: flex;
  gap: 0.75rem;
  padding: 1rem 1.5rem 1.2rem;
  border-top: 1px solid color-mix(in oklch, var(--color-primary-100) 40%, var(--color-border-light));
  background: linear-gradient(180deg, #ffffff 0%, color-mix(in oklch, var(--color-bg-primary) 90%, white) 100%);
}

.setup-btn {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.8rem 1rem;
  min-height: 2.9rem;
  font-family: inherit;
  font-size: 0.92rem;
  font-weight: 600;
  border-radius: 12px;
  border: 1px solid transparent;
  cursor: pointer;
  white-space: nowrap;
  transition:
    background-color 160ms var(--ease-out),
    border-color 160ms var(--ease-out),
    color 160ms var(--ease-out),
    box-shadow 180ms var(--ease-out),
    transform 120ms var(--ease-out);
}
.setup-btn svg { width: 16px; height: 16px; }
.setup-btn:focus-visible {
  outline: none;
  box-shadow:
    0 0 0 2px #ffffff,
    0 0 0 4px color-mix(in oklch, var(--color-primary-300) 65%, white);
}
.setup-btn:active { transform: scale(0.985); }

.setup-btn--secondary {
  color: var(--color-text-secondary);
  background: #ffffff;
  border-color: color-mix(in oklch, var(--color-primary-100) 65%, var(--color-border));
}
.setup-btn--secondary:hover {
  color: var(--color-text-primary);
  border-color: color-mix(in oklch, var(--color-primary-300) 55%, var(--color-border));
  background: color-mix(in oklch, var(--color-primary-50) 45%, white);
}

.setup-btn--primary {
  color: #ffffff;
  background: linear-gradient(180deg,
    color-mix(in oklch, var(--mode-fg) 92%, white) 0%,
    var(--mode-strong) 100%);
  border-color: color-mix(in oklch, var(--mode-strong) 60%, transparent);
  box-shadow:
    0 10px 20px -14px color-mix(in oklch, var(--mode-strong) 80%, black),
    inset 0 1px 0 color-mix(in oklch, white 40%, transparent);
}
.setup-btn--primary:hover {
  box-shadow:
    0 14px 24px -14px color-mix(in oklch, var(--mode-strong) 85%, black),
    inset 0 1px 0 color-mix(in oklch, white 45%, transparent);
}

/* Responsive */
@media (max-width: 640px) {
  .setup-modal { padding: 0.6rem; align-items: flex-end; }
  .setup-modal-panel {
    max-height: 92vh;
    border-radius: 20px 20px 16px 16px;
  }
  .setup-modal-header { padding: 1.1rem 1.15rem 0.95rem; }
  .setup-modal-body   { padding: 1rem 1.15rem 0.3rem; gap: 0.9rem; }
  .setup-modal-footer { padding: 0.85rem 1.15rem 1rem; }
  .setup-modal-title  { font-size: 1.16rem; }
  .setup-mode-option__card { min-height: 5rem; padding: 0.7rem 0.3rem; }
  .setup-mode-option__name { font-size: 0.78rem; }
  .setup-mode-option__hint { font-size: 0.64rem; }
  .setup-range-grid { grid-template-columns: 1fr auto 1fr; gap: 0.4rem; }
  .setup-range-preset { padding: 0.24rem 0.5rem; font-size: 0.7rem; }
  .setup-summary { padding: 0.75rem 0.85rem; gap: 0.55rem; }
  .setup-summary__value { font-size: 0.92rem; }
  .setup-btn { padding: 0.75rem 0.85rem; font-size: 0.86rem; }
  .setup-btn--secondary { flex: 0 0 auto; }
  .setup-btn--primary   { flex: 1 1 auto; }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .setup-modal,
  .setup-modal-panel {
    animation: none;
  }
  .setup-modal-close,
  .setup-select__native,
  .setup-number-input,
  .setup-mode-option__card,
  .setup-mode-option__icon,
  .setup-range-preset,
  .setup-btn,
  .setup-summary,
  .setup-mode-badge {
    transition: none;
  }
  .setup-mode-option:hover .setup-mode-option__card,
  .setup-btn:active,
  .setup-modal-close:active {
    transform: none;
  }
}
