/* Abroadmode 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    #fe7052   lightness offset dL = +0.000
 *   secondary anchor  #f39c4e   lightness offset dL = +0.000
 *
 * LOGICAL PATH IS THE BARE FILENAME -- "theme-abroadmode.css", NOT
 * "blog_themes/theme-abroadmode.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-abroadmode.css
 * ============================================================================= */

:root {
  /* Primary brand ramp -- derived from the anchor's hue and chroma */
  --brand-primary-50: #f7e5e0;
  --brand-primary-100: #ffd6cc;
  --brand-primary-200: #ffc1b3;
  --brand-primary-300: #ffa28d;
  --brand-primary-400: #ff7b5f;
  --brand-primary-500: #ee5a3b;
  --brand-primary-600: #ca4023;
  --brand-primary-700: #a32d14;
  --brand-primary-800: #842410;
  --brand-primary-900: #6c1d0d;
  --brand-primary-950: oklch(24.1% 0.087 33.515);

  /* Secondary brand ramp -- derived from the anchor's hue and chroma */
  --brand-secondary-50: #f2e7df;
  --brand-secondary-100: #f4dbc8;
  --brand-secondary-200: #f6c8a3;
  --brand-secondary-300: #f3ac71;
  --brand-secondary-400: #e79142;
  --brand-secondary-500: #d17819;
  --brand-secondary-600: #ae6000;
  --brand-secondary-700: #894b00;
  --brand-secondary-800: #6f3b00;
  --brand-secondary-900: #5c3000;
  --brand-secondary-950: oklch(24.1% 0.057 60.059);
}
