/* Ampcarry brand theme -- GENERATED by bin/factory-theme.py (issue #63)
 * =============================================================================
 * Do not hand-edit: regenerate from the same two anchors and this file comes back
 * byte-identical. It carries no timestamp and no run id on purpose; `generated_at`
 * lives in factory state, where a per-run value belongs.
 *
 *   primary anchor    #e09030   lightness offset dL = +0.000
 *   secondary anchor  #0d4f4a   lightness offset dL = -0.010
 *
 * LOGICAL PATH IS THE BARE FILENAME -- "theme-ampcarry.css", NOT
 * "blog_themes/theme-ampcarry.css". Rails declares paths.add "lib/assets", glob: "*",
 * so lib/assets/blog_themes IS the Propshaft load-path root, not lib/assets.
 *
 * Linked by BlogThemingHelper#blog_theme_stylesheet_link_tag AFTER
 * stylesheet_link_tag :app, so this unlayered :root beats the bundle's unlayered
 * :root defaults on source order.
 *
 * WHY THE -950 STOP IS A COMPUTED oklch() LITERAL. The theme-file contract calls the
 * -950 "Tailwind v4's built-in, verbatim in oklch". Both shipped themes satisfied
 * that by choosing STOCK colour families -- but this ramp sits at an arbitrary hue,
 * where THERE IS NO TAILWIND BUILT-IN TO TAKE. The normative half of that clause is
 * the second one: an oklch() literal, never a hex approximation. That is what the two
 * -950 declarations below are, computed on the same ladder as every other stop.
 *
 * DELIBERATELY ABSENT, and each omission is load-bearing:
 *   - NO --interactive-*. The base derives all four from --brand-primary-* in BOTH
 *     modes (600/500 in :root, 400/500/300 in .dark). Declaring them here kills the
 *     dark-mode re-derivation silently.
 *   - NO .dark block. The base's neutral dark set applies unchanged.
 *   - NO --surface-*, --content-* or --border-*. Those are a TRAP: the base sets each
 *     TWICE, :root and .dark have EQUAL specificity, and this file loads last -- so a
 *     bare :root override here beats the bundle's .dark rule and ships LIGHT surfaces
 *     in dark mode, on every page, with no error and nothing in the console.
 *   - NO --font-*. The blog renders the base's three self-hosted faces.
 *
 * CONTRAST: every gated stop clears WCAG AA 4.5:1 against its mode's --surface-primary
 * -- light -600/-700 on #ffffff and dark -400/-500 on #1c1917 for the primary ramp,
 * light -700/-600 and dark -400 for the secondary. Re-check with:
 *     python3 bin/factory-theme.py check lib/assets/blog_themes/theme-ampcarry.css
 * ============================================================================= */

:root {
  /* Primary brand ramp -- derived from the anchor's hue and chroma */
  --brand-primary-50: #f1e7de;
  --brand-primary-100: #f3dcc6;
  --brand-primary-200: #f4c99f;
  --brand-primary-300: #f0ae6a;
  --brand-primary-400: #e49434;
  --brand-primary-500: #cd7c00;
  --brand-primary-600: #a86500;
  --brand-primary-700: #844e00;
  --brand-primary-800: #6b3e00;
  --brand-primary-900: #583300;
  --brand-primary-950: oklch(24.1% 0.054 65.957);

  /* Secondary brand ramp -- derived from the anchor's hue and chroma */
  --brand-secondary-50: #e1e8e7;
  --brand-secondary-100: #d1e1df;
  --brand-secondary-200: #b8d6d2;
  --brand-secondary-300: #96c6c0;
  --brand-secondary-400: #76b2ac;
  --brand-secondary-500: #5d9c95;
  --brand-secondary-600: #45807a;
  --brand-secondary-700: #32645f;
  --brand-secondary-800: #27504c;
  --brand-secondary-900: #1f413e;
  --brand-secondary-950: oklch(23.1% 0.030 187.149);
}
