/* CF — colour.
   --cf-green-800 (banner) and --cf-ivory-100 (monogram/lockup artwork, a warm
   cream) are sampled directly from the supplied brand assets. Everything else
   is derived from them. */
:root{
  /* Brand green ramp — 800 is the sampled brand primary */
  --cf-green-950:#01271a;
  --cf-green-900:#023623;
  --cf-green-800:#034e2f;
  --cf-green-700:#0a6440;
  --cf-green-600:#137d52;
  --cf-green-500:#2c9769;
  --cf-green-400:#5cb28c;
  --cf-green-300:#93cdb1;
  --cf-green-200:#c2e0d1;
  --cf-green-100:#dfeee6;
  --cf-green-50:#f0f7f3;

  /* Warm cream ramp — 100 is the sampled paper tone of the supplied artwork */
  --cf-ivory-50:#fbf8f0;
  --cf-ivory-100:#f6f0e4;
  --cf-ivory-200:#ede4d1;
  --cf-ivory-300:#ded3bc;

  --cf-ink-900:#101914;
  --cf-ink-800:#1c2721;
  --cf-ink-700:#2c3a32;
  --cf-ink-600:#44534a;
  --cf-ink-500:#5d6b63;
  --cf-ink-400:#7f8c84;
  --cf-ink-300:#a6b0aa;
  --cf-ink-200:#c9d0cb;

  /* Semantic hues — muted to sit beside the deep green. Derived, not sampled. */
  --cf-amber-600:#9c6f1c;
  --cf-amber-100:#f7ecd4;
  --cf-brick-600:#9e2b25;
  --cf-brick-100:#f7dedc;
  --cf-slate-600:#2f5d7c;
  --cf-slate-100:#dbe8f0;

  /* ---- Semantic aliases: light surfaces (default) ---- */
  --surface-page:var(--cf-ivory-100);
  --surface-card:#ffffff;
  --surface-sunken:var(--cf-ivory-200);
  --surface-inverse:var(--cf-green-800);
  --surface-accent-soft:var(--cf-green-50);

  --text-heading:var(--cf-green-800);
  --text-body:var(--cf-ink-700);
  --text-muted:var(--cf-ink-500);
  --text-faint:var(--cf-ink-400);
  --text-on-inverse:var(--cf-ivory-100);
  --text-on-inverse-muted:rgba(246,240,228,.72);
  --text-link:var(--cf-green-700);
  --text-link-hover:var(--cf-green-600);

  --border-hairline:rgba(3,78,47,.16);
  --border-strong:rgba(3,78,47,.32);
  --border-inverse:rgba(246,240,228,.28);
  --border-inverse-strong:rgba(246,240,228,.55);

  --accent:var(--cf-green-800);
  --accent-hover:var(--cf-green-700);
  --accent-press:var(--cf-green-900);
  --accent-contrast:var(--cf-ivory-100);

  --feedback-success:var(--cf-green-600);
  --feedback-success-soft:var(--cf-green-100);
  --feedback-warning:var(--cf-amber-600);
  --feedback-warning-soft:var(--cf-amber-100);
  --feedback-danger:var(--cf-brick-600);
  --feedback-danger-soft:var(--cf-brick-100);
  --feedback-info:var(--cf-slate-600);
  --feedback-info-soft:var(--cf-slate-100);

  --focus-ring:0 0 0 3px rgba(3,78,47,.22);
  --focus-ring-inverse:0 0 0 3px rgba(246,240,228,.45);
}

/* ---- Inverse scope: place on any container painted brand green ---- */
.cf-on-green{
  --surface-page:var(--cf-green-800);
  --surface-card:rgba(246,240,228,.06);
  --surface-sunken:var(--cf-green-900);
  --surface-accent-soft:rgba(246,240,228,.08);
  --text-heading:var(--cf-ivory-100);
  --text-body:rgba(246,240,228,.86);
  --text-muted:rgba(246,240,228,.66);
  --text-faint:rgba(246,240,228,.48);
  --text-link:var(--cf-ivory-100);
  --text-link-hover:var(--cf-green-200);
  --border-hairline:rgba(246,240,228,.24);
  --border-strong:rgba(246,240,228,.5);
  --accent:var(--cf-ivory-100);
  --accent-hover:#ffffff;
  --accent-press:var(--cf-green-200);
  --accent-contrast:var(--cf-green-800);
  --focus-ring:var(--focus-ring-inverse);
  color:var(--text-body);
}
