/* ======================================================================
   final/css/contrast.css — the rescues no other lane owns.

   A lane sheet exists for typography, mobile, legal, the app surfaces,
   admin and imagery. A measured contrast failure belonging to none of them
   had nowhere to go, and "nowhere to go" is how a defect ends up living in
   a comment instead of in a stylesheet. This is that home.

   Loaded last, like every lane sheet — after theme.css, sf-base.css,
   sf-refresh.css and tailwind.min.css.
   ====================================================================== */

/* ── THE CLOSING CTA BAND'S TRUST BADGES ────────────────────────────────
   Found by a parallel session, and the interesting part was never the
   colour: 990 QA checks passed with this live, because qa.mjs had no probe
   on either class. It has one now (factory/tools/qa.mjs, `closing CTA
   badge key` / `badge value` / `sub-line`), which is the half of this fix
   that protects every client instead of this one.

   THE GROUND, WHICH IS THE WHOLE STORY. Three sessions produced three
   different ratios for the same two elements before anyone had the right
   number, and each wrong answer came from modelling a different ground:

     · band only        #20576E   — what sf-base.css solves the ink against
     · card composite   #306378   — band + the card's 9% glaze
     · REAL PIXELS      #367386   — the above, plus .cta-badge's own
                                    `rgb(255 255 255 / 0.07)` chip fill and
                                    the .cta-card-glow radial

   Only the third is what a reader's eye receives, and only a pixel probe
   can produce it. On that ground the two inks measured 3.77:1 and 3.82:1
   against a 4.5 floor — neither is large text (13.5px/750 and 11.88px/400,
   both under 18.66px-at-700).

   WHY THE INK IS NOT WHAT MOVED. Solving the ink instead needs an 80% lift
   toward white, which ends at #DEF7FA — the cyan stops being a cyan. And
   the ceiling proves the ground is the problem rather than the choice of
   ink: even pure #EDF9FF only reaches 4.96:1 there. A chip lit by a 7%
   WHITE fill on a mid-tone teal card cannot carry small text at AA in any
   colour.

   So the chip's own fill flips from white-7% to a dark tint. Same chip,
   same cyan border, same two brand inks — the ground goes down instead of
   the ink going pale:

     .cta-badge ground   #367386 -> #174153
     .cta-badge-k        #57D6E4  6.36:1   (was 3.77)
     .cta-badge-v        #B9CEDD  6.77:1   (was 3.82)

   Both inks are therefore LEFT EXACTLY AS THE CLIENT SHEET SOLVED THEM.
   This rule changes one background and nothing else.

   NOT FIXED HERE, deliberately, because it is bigger than this client:
   engine/template/sf-base.css:517-519 solves --sf-ctaband-ink and
   --sf-ctaband-ink-dim against --sf-brand while .sf-ctaband-card renders
   them over a glaze. Every master-template client inherits that optimism
   and it surfaces only where the brand hue lands in the danger band. The
   new qa.mjs probe is what closes it everywhere: a colour edit without a
   gate is a defect waiting to regress.
   ====================================================================== */
body #cta-banner .cta-badge {
  /* was rgb(255 255 255 / 0.07) — a white glaze is what put the ground out
     of reach. The cyan border is the client's and is untouched. */
  background: rgb(4 16 31 / 0.45);
}

/* prefers-contrast: more asks for the words to win, so the chip goes fully
   opaque — #0A1A28, on which the same two inks measure 9.9:1 and 10.6:1. */
@media (prefers-contrast: more) {
  body #cta-banner .cta-badge { background: #0A1A28; }
}
