@layer base {
  /*
   * Neutral and semantic palettes — each scale is generated from its faint
   * (50-level) seed using the same Harmonizer offsets as --theme-faint.
   */
  :root {
    --gray-faint: oklch(0.98 0 0);
    --gray-50: var(--gray-faint);
    --gray-100: oklch(from var(--gray-faint) calc(l - 0.01) calc(c * 2) h);
    --gray-200: oklch(from var(--gray-faint) calc(l - 0.06) calc(c * 4) h);
    --gray-300: oklch(from var(--gray-faint) calc(l - 0.13) calc(c * 8) h);
    --gray-400: oklch(from var(--gray-faint) calc(l - 0.2) calc(c * 12) h);
    --gray-500: oklch(from var(--gray-faint) calc(l - 0.29) calc(c * 16) h);
    --gray-600: oklch(from var(--gray-faint) calc(l - 0.33) calc(c * 15) h);
    --gray-700: oklch(from var(--gray-faint) calc(l - 0.42) calc(c * 13) h);
    --gray-800: oklch(from var(--gray-faint) calc(l - 0.53) calc(c * 10) h);
    --gray-900: oklch(from var(--gray-faint) calc(l - 0.63) calc(c * 8) h);
    --gray-950: oklch(from var(--gray-faint) calc(l - 0.68) calc(c * 7) h);

    --red-faint: oklch(0.99 0.01 20);
    --red-50: var(--red-faint);
    --red-100: oklch(from var(--red-faint) calc(l - 0.02) calc(c * 2) h);
    --red-200: oklch(from var(--red-faint) calc(l - 0.07) calc(c * 4) h);
    --red-300: oklch(from var(--red-faint) calc(l - 0.13) calc(c * 8) h);
    --red-400: oklch(from var(--red-faint) calc(l - 0.2) calc(c * 12) h);
    --red-500: oklch(from var(--red-faint) calc(l - 0.28) calc(c * 16) h);
    --red-600: oklch(from var(--red-faint) calc(l - 0.32) calc(c * 15) h);
    --red-700: oklch(from var(--red-faint) calc(l - 0.41) calc(c * 13) h);
    --red-800: oklch(from var(--red-faint) calc(l - 0.52) calc(c * 10) h);
    --red-900: oklch(from var(--red-faint) calc(l - 0.64) calc(c * 8) h);
    --red-950: oklch(from var(--red-faint) calc(l - 0.68) calc(c * 7) h);
  }
}
