/* GENERATED from rowan-fig.json by scripts/build.mjs. Do not edit — rerun the generator. */
:root{
  /* accentHover defaulting to accent meant "hover does nothing" on any config that omitted it.
     Darkening toward ink gives a real state change and stays on-brand. */
  --primary:#2a211c; --accent:#b0532f;
  --accent-hover:#98462a;
  --accent-2:#b0532f;
  /* ink-2 / paper-2 / line are DERIVED from ink+paper when a config omits them, so a palette
     stays internally consistent instead of being eight hand-typed hexes that drift apart. The
     old --ink-2 fallback was a literal #5a6b64 — a green-grey — so every blue- or oxblood-branded
     business that omitted ink2 got green secondary text. A config value still wins outright. */
  --ink:#231b16; --ink-2:#6b5d53;
  --paper:#fffcf8; --paper-2:#f6efe6;
  --line:#e8ded0;
  /* text that sits ON an accent fill. Defaulting this to --ink was wrong in BOTH directions:
     a dark-theme business inherits light ink and gets white-on-neon, and a business whose accent
     was darkened to pass as text on paper (fa53c8d did this to five configs) gets near-black ink
     on a near-black fill. Measured on the primary marketing CTA before this change: halcyon
     2.12:1, brightwash 2.51:1, palm-beauty 2.64:1. The only config that passed was the one that
     set onAccent by hand. So pick it by luminance instead of inheriting a token meant for paper. */
  --on-accent:#ffffff;
  /* One accent hex cannot serve three surfaces, and the whole portfolio proves it: an accent
     dark enough to clear AA as text on paper lands at 1.9-4.1:1 on the dark primary, and one
     bright enough for the dark lands at 2.4-3.6:1 on paper. So each surface gets its own token,
     SOLVED to a measured 4.5:1 by scripts/contrast.mjs rather than set to a fixed colour-mix
     percentage that happened to clear the configs present the day it was written. A fixed 50%
     mix left palm-beauty's rail buttons at 1.93:1; solving hits 4.51:1 on the same input.
     Both stay overridable per config (accentOnDark / accentOnPaper). */
  --accent-on-dark:#c0775a;
  /* accent used AS TEXT on paper or on a 16% accent tint (.tag/.pill/.chip). Solved against the
     harder of those two surfaces. On a dark-theme config this correctly resolves lighter, not
     darker — it tracks the config's own paper, not an assumption that paper is white. */
  --accent-on-paper:#994829;
  /* accent as text over a PHOTO. Solved against the hero plate at its worst case —
     --primary over WHITE — because a photo can be any luminance and the plate is the
     only part of that stack the generator controls. See heroPlate() in contrast.mjs. */
  --accent-on-hero:#cb8e76;
  --hero-plate:92.0%;
  --font:'Newsreader', system-ui, serif; --body-font:'Hanken Grotesk', system-ui, sans-serif;
}