/* Dark mode — opt-in per project (source doctrine: it is a checkbox, not a default).
   Enable by adding class="dark" to <html>, or wire it to the OS preference.
   Values are re-derived from the neutral ramp, never inverted. */
.dark {
  --text-strong: var(--color-neutral-50);
  --text-body-color: var(--color-neutral-300);
  --text-muted: var(--color-neutral-400);
  --text-subtle: var(--color-neutral-500);
  --text-inverse: var(--color-neutral-950);
  --text-brand: var(--color-primary-400);
  --text-link: var(--color-primary-400);
  --text-link-hover: var(--color-primary-300);
  --text-danger: var(--color-danger-500);
  --text-success: var(--color-success-500);

  --surface-page: var(--color-neutral-950);
  --surface-subtle: var(--color-neutral-900);
  --surface-card: var(--color-neutral-900);
  --surface-raised: var(--color-neutral-800);
  --surface-inverse: var(--color-neutral-50);
  --surface-brand-soft: var(--color-primary-950);
  --surface-accent-soft: var(--color-accent-950);
  --surface-scrim: oklch(11% 0.004 250 / 0.65);

  --border-default: var(--color-neutral-800);
  --border-strong: var(--color-neutral-700);
  --border-subtle: var(--color-neutral-900);
  --border-brand: var(--color-primary-400);

  /* Saturated darks lose legibility on dark grounds: shift one step lighter. */
  --action-primary-bg: var(--color-primary-500);
  --action-primary-bg-hover: var(--color-primary-400);
  --action-primary-fg: var(--color-neutral-950);
  --action-secondary-bg: var(--color-neutral-800);
  --action-secondary-bg-hover: var(--color-neutral-700);
  --action-secondary-fg: var(--color-neutral-100);
  --action-ghost-fg: var(--color-neutral-300);
  --action-ghost-bg-hover: var(--color-neutral-800);

  --focus-ring: var(--color-primary-400);

  --field-bg: var(--color-neutral-900);
  --field-border: var(--color-neutral-700);
  --field-border-focus: var(--color-primary-400);
  --field-ring-focus: var(--color-primary-900);
  --field-placeholder: var(--color-neutral-500);
  --field-disabled-bg: var(--color-neutral-900);
  --field-disabled-fg: var(--color-neutral-600);

  /* Shadows read as noise on dark grounds — replace with a border. */
  --shadow-sm: none;
  --shadow-md: none;
  --shadow-lg: none;
  --shadow-xl: 0 20px 25px -5px oklch(0% 0 0 / 0.5);
}
