/* GENERATED from rivermark-dental.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:#0f2a3a; --accent:#0e8477;
  --accent-hover:#0a5d54;
  --accent-2:#0e8477;
  /* 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:#0f1a1f; --ink-2:#55636b;
  --paper:#ffffff; --paper-2:#f3f7f8;
  --line:#e2e8ea;
  /* 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:#000000;
  /* 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:#3d9c91;
  /* 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:#0c7065;
  /* 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:#5faea5;
  --hero-plate:92.0%;
  --font:'Poppins', system-ui, sans-serif; --body-font:'Inter', system-ui, sans-serif;
}