/* ============================================================
   Riser contrast lift — TEXT COLOUR ONLY.

   Self-contained on purpose. Reverting is: delete this file, delete the
   one <link> line per page. No colour value is edited anywhere else.

   ── WHAT THE MEASUREMENT ACTUALLY SAID ──────────────────────────────
   Measured across index, learn, usage-guide, a product page and a policy
   page, at 390 and 1440, against each element's RESOLVED background
   (walking past transparent ancestors, so cards and mint panels are
   scored on their own surface rather than on --paper):

     body      #E9F2FB on #0B1622   16.11:1   already past 12:1
     body      #E9F2FB on #11212F   14.47:1   already past 12:1
     secondary #9DB2C4 on #11212F    7.48:1   <- 226 elements, 20,192 chars
     secondary #9DB2C4 on #0B1622    8.33:1   <- 123 elements,  7,999 chars
     muted     #9DB2C4 on #11212F    7.48:1   already past 7:1

   Body text was never the problem — it is the brightest text on the site.
   The ~8:1 that reads as low-contrast in long-form is --ink-soft, the
   SECONDARY token, and it carries roughly 28,000 characters of prose
   against 12,183 for true body copy. So this file changes one token.

   ── WHY REDEFINING THE TOKEN IS SAFE ────────────────────────────────
   --ink-soft is used 138 times across the site and every single use is a
   `color:` declaration — zero borders, zero backgrounds, zero shadows.
   Verified by parsing every stylesheet and page for `<prop>: ... var(--ink-soft)`
   and bucketing by property. That is what makes this a text change rather
   than a repaint.

   Every definition of the token is at `:root`, so one `:root` block in a
   sheet that loads last wins everywhere without !important.

   ── THE VALUE ───────────────────────────────────────────────────────
   #C1CFDA is #9DB2C4 with hue (207.7deg) and saturation (24.8%) held exactly,
   lightness raised until the WORST of the four real backgrounds clears 9:1:

     on #11212F card    7.48 -> 10.30
     on #0B1622 paper   8.33 -> 11.46
     on #12293D mint    6.81 ->  9.36   <- the binding constraint
     on #0E1D2A sky     7.82 -> 10.75

   Mint is what sets the value. Solving against --paper alone would have
   produced a colour that still failed on the panels, and the failure would
   have been invisible in any spot check that only sampled the page body.

   ── WHAT IS DELIBERATELY NOT TOUCHED ────────────────────────────────
   Excluded by instruction, and each is genuinely below target, so this is
   stated rather than left to be rediscovered:

     #FFFFFF on #3B9EFF   2.79:1   button labels on brand blue
     #0B1622 on #3B9EFF   6.53:1   GLOW/VITALITY tier badges
     #5AA9F5 on #12293D   5.98:1   link/accent blue on mint
     #5AA9F5 on #11212F   6.57:1   link/accent blue on cards
     #6FB4FF on #12293D   6.84:1   link/accent blue on mint

   After this file, those five pairs are the ONLY text on the site below
   its target, and all five are brand blue, button, or badge.
   ============================================================ */

:root {
  --ink-soft: #C1CFDA;
}

/* Review stars. Not on the exclusion list and measured under target at
   8.58:1 (#F2B01E) and 8.84:1 (#F5B301) on cards — two different values for
   the same element, which is its own small inconsistency. Unified and lifted
   to 9.25:1 at worst.

   Specificity is matched deliberately: the page rule is `.review .stars`
   (0,2,0), so a bare `.stars` here would lose. Each selector below carries
   its own specificity, and equal specificity plus later source order wins. */
.stars,
.rev .stars,
.review .stars {
  color: #FEC322;
}
