/* =================================================================================================
   SAFARI-A11Y-PASS-0918 — CONTRAST, corrected at the token the designer already wrote.
   Punch-list item 16.  Mission Control half; the Network half is assets/fs-a11y-contrast-0918.css
   on fs-social-01.

   METHOD, and it is the whole reason these numbers can be trusted.  Every ratio below was measured
   from the COMPOSITED colour on the rendered page — the text's own colour alpha-composited over
   however many translucent ancestors sit under it, walked until an opaque layer — never read off a
   stylesheet and never grepped.  The instrument was checked against known answers first
   (harness/control.mjs: 21:1 black on white, 4.54:1 #767676 on white, 4.48:1 #777 on white, a
   50%-alpha colour, an ELEMENT-OPACITY case, and a background-IMAGE case that must be EXCLUDED
   rather than guessed); it reproduces all eleven in both engines.  Text sitting on a background image or gradient is never
   judged here, because a flat answer against a picture is a rumour.

   🔴 EVERY VALUE IS VERIFIED AFTER HEX QUANTISATION, AND WITH A MARGIN.  The first set was solved
   in HLS and then written as hex, and six of them fell back under 4.5 when they were rounded to six
   digits — `.cn-none` shipped at 4.49 and was measured at 4.49 on the patched rig, a "fix" that did
   not clear the bar.  Every value below is now chosen so the QUANTISED colour reaches at least
   **4.6 : 1 on every surface the token is painted on**, so rounding and antialiasing cannot put it
   under.

   RULE OF THE PASS: HUE AND SATURATION ARE NOT TOUCHED.  Each colour below is the SAME colour,
   moved along its own lightness axis by the smallest step that reaches 4.5:1 (body) or 3:1 (large)
   on the surface it was measured on — computed, not eyeballed.  Ruling 555's designs stand: nothing
   is restyled, nothing moves, no new colour enters the estate.

   🔴 SPECIFICITY, and it is not pedantry.  Mission Control's pages carry their own <style> blocks
   in the BODY, after this stylesheet's <link> in the head.  A rule written here at the page's own
   specificity would LOSE on document order and this whole file would be inert — which is how a
   contrast "fix" ships and changes nothing.  Every selector below therefore carries a leading
   `html`, one element more specific than the page's own rule and still one LESS specific than its
   dark twin (`html.fs-dark .cjx` &c), so light is corrected and dark is left exactly as designed.

   DARK MODE IS DELIBERATELY UNTOUCHED where the page defines a dark twin.  Every rule below is
   written at the LIGHT selector only; `html.fs-dark .cjx`, `html.fs-dark .cx-wrap`,
   `html.fs-dark .cn-none` and the rest are MORE SPECIFIC and keep winning.  Darkening a colour that
   already sits on a dark surface makes it worse, and the dark surfaces on these pages were not all
   measured — the two that were (the cookie footer and the Network feed) are corrected explicitly
   and named.
   ================================================================================================= */

/* ── LEAD HUB (list · board · record) ────────────────────────────────────────────────────────────
   26 failing rows on ?v=list, 17 on ?v=board, 14 on ?v=record — every one of them this one token.
   #9b9cb4 is 2.69:1 on the white table and 2.36:1 on the #eef0f7 board lanes: the column headings
   ("Name", "Pipeline", "Deal"), the sub-lines under every lead, and "No leads in this lane."
   The new value is chosen against the WORSE of the two surfaces, so both clear AA.
       #9b9cb4 -> #68698b    on #ffffff 2.69 -> 5.27 : 1     on #eef0f7 2.36 -> 4.63 : 1          */
html .cjx { --cjx-mut-2: #68698b; }
/* the estate green again, this time as the deal value on a lead record (#16c43b, 2.34 : 1 on white)
   and as the "Won" stage chip (#0d8128 on its own mint tint, 4.02 : 1) */
html .cjx .cjx-money { color: #0f8729; }
html .cjx .cjx-chip.k { color: #0c7625; }
html:root, html .vk { --fsp-sub: #68698b; }

/* ── CALENDAR ────────────────────────────────────────────────────────────────────────────────────
   30 failing rows.  The muted token carries every event time ("09:00"), every calendar's name
   ("Team & projects") and the Month/Week/Day buttons.
       #8a8aa6 -> #6d6d90    on #ffffff 3.35 -> 4.95 : 1     on #f7f7fc 3.14 -> 4.64 : 1          */
html .cx-wrap { --cx-mut: #6d6d90; }

/* ── CONNECTIONS ─────────────────────────────────────────────────────────────────────────────────
   The worst single pair measured anywhere on the tester path, and it is on the words that tell a
   tester a channel is not open yet: "Not yet available" at 1.94 : 1.
       #b0b1c6 -> #6a6c94    on #f4f5fb 1.94 -> 4.61 : 1                                          */
html .cn-none { color: #6a6c94; }

/* ── MY WEBSITE ──────────────────────────────────────────────────────────────────────────────────
   64 failing rows, and they are TWO tokens on `.myw`.

   `--hwx-mut-2` carries the machine labels, the stage captions, the footnote under every figure and
   the "not a capture" disclaimer:
       #9b9cb4 -> #68698b    on #eef0f7 2.36 -> 4.63 : 1     on #ffffff 2.69 -> 5.27 : 1

   `--hwx-ok` is the estate green, and on this page it is TEXT three times over — the "Done" stage
   tag, the version number and the 21px "Answering" verdict (large text, so 3:1, and it misses that
   too).  It also paints dots, rings and borders, where a slightly deeper green is invisible as a
   change, so the token moves rather than three selectors:
       #16c43b -> #0f8729    on #ffffff 2.34 -> 4.65 : 1

   Dark is untouched: `.myw`'s dark block redefines both at a higher specificity.                  */
html .myw { --hwx-mut-2: #68698b; --hwx-ok: #0f8729; }

/* ── QUICK START ─────────────────────────────────────────────────────────────────────────────────
       #3aa25c -> #2d7e48    on #f4f5fb 2.97 -> 4.61 : 1
   Dark is protected by the page's own `.fs-dark .qw-step.done small` (0,3,1), which outranks this
   rule's (0,2,2) — so the dark green stays exactly as designed without this file saying anything. */
html .qw-step.done small { color: #2d7e48; }

/* ── THE BOARD COVER CHIP (member home · focus boards) ───────────────────────────────────────────
   800-weight 10px text on a translucent scrim over the card.  The text is nominally white, but its
   group is faded, so what the eye receives is rgb(224,224,228) on a composited rgb(138,136,152) —
   **2.61 : 1**, and the first reading of 3.45 was the flat-white assumption.  The colour is not
   changed; the SCRIM is made to do its job.  Raising alpha can only ever darken the composite,
   whatever cover sits behind it, so this is safe over a picture as well as over a flat card.
       rgba(20,18,50,.50) -> rgba(20,18,50,.74)    2.61 -> 5.34 : 1 as painted
   (.68 was the first answer and measured 4.32 on the patched rig — the fade on the text is a little
   deeper than the first reading, so the scrim carries a margin instead of sitting on the line.)    */
html .fbh-cat { background: rgba(20, 18, 50, .74); }

/* ── THE FADES.  Three places where a control is legible in the design and not on the screen ─────
   Each is `opacity` on text, and in each the UNDERLYING colour already clears AA — the fade alone
   is the fault, so the fix is to stop fading and change no colour at all.
       .mz-more's asides   rgb(148,148,171) -> #6a6a8a on white    2.97 -> 5.20 : 1   ("(goes live
                           with Stripe)", nine of them on the member home; inline style:opacity:.72,
                           which only !important can beat)
       .af-qopt            rgb(128,128,156) -> #6a6a8b on #fbfbff  3.72 -> 5.03 : 1   ("· if you
                           have one", on the application form)                                     */
html .mz-more span[style*="opacity"] { opacity: 1 !important; }
html .af-qopt { opacity: 1; }

/* Settings' password hint, "(min 8)" — #a6a6b9 on white, 2.39 : 1, in a plain <i>.
       #a6a6b9 -> #727290    on #ffffff 2.39 -> 4.64 : 1                                          */
html .act-row i, html .st2-sec i { color: #727290; }

/* ── CLIENT WORK (the member's road to invoices) ─────────────────────────────────────────────────
   14 failing rows, three tokens, all defined on :root by private_html/_cwx_spine.php and all
   redefined for dark at `html.fs-dark` — which is more specific than the rules below, so dark stays
   exactly as designed.
       --cw-faint  #8b93ad -> #656e8e   on #f4f5fb 2.81 -> 4.62 : 1   (the "Pipeline" heading, the
                   band note, the Converted/Active tabs, "Active now")
       --cw-cyan   #0b93aa -> #097a8e   on #f4f5fb 3.35 -> 4.61 : 1   ("Client operations")
       --cw-amber  #b8730c -> #9d620a   on #f4f5fb 3.51 -> 4.61 : 1   ("Portal invited")           */
html:root { --cw-faint: #656e8e; --cw-cyan: #097a8e; --cw-amber: #9d620a; }

/* ── QUICK START'S TWO GREEN CHIPS ───────────────────────────────────────────────────────────────
       #12873a -> #0e6e2e   on #e5f9e9   4.19 -> 5.80 : 1   ("Saves to LOCAL & Project Tools")
       #0d8128 -> #0b7223   on #def7e4   4.42 -> 5.38 : 1   ("Completed")                          */
html .qw-dist { color: #0e6e2e; }
html .qp-cpill.ok { color: #0b7223; }

/* ── THE COOKIE FOOTER (every anonymous page: register, sign-in) ─────────────────────────────────
   🔴 THE WORST READING IN THIS FILE, and the first pass got it wrong.  The rule is
   `.fscc-footlink { color:#6b7194; opacity:.75 }` — and `opacity` is part of what the browser
   paints.  Read as a flat #6b7194 the footer is 4.37:1 (light) and a near miss; read with the .75
   the eye actually receives, it is **2.81:1 light and 2.72:1 dark** and one of the worst pairs on
   the tester path.  The probe was corrected to fold element opacity into the composite before any
   number in this package was written down, and its control now carries that case.

   The correction is therefore TWO properties, and the colour moves hardly at all:
       light  opacity .75 -> 1  and  #6b7194 -> #686d8f   on #f4f5fb   2.81 -> 4.63 : 1
       dark   opacity .75 -> 1  and  #6b7194 -> #7e83a2   on #13131c   2.72 -> 4.97 : 1
   The dotted underline, the size, the weight and the position are untouched; the link simply stops
   being faded.                                                                                    */
html .fscc-footlink { color: #686d8f; opacity: 1; }
html.fs-dark .fscc-footlink,
html[data-theme="dark"] .fscc-footlink { color: #7e83a2; opacity: 1; }

/* ── NOT CHANGED, and why ────────────────────────────────────────────────────────────────────────
   · `#fs-reg-submit.af-btn` at 4.18 : 1 is the DISABLED state of the Apply button (`.af-btn[disabled]`,
     #6c6d85 on #e9e9f1) before the two assent boxes are ticked.  WCAG 1.4.3 exempts a disabled
     control, and making it darker would make it look enabled.  Measured, judged, left.
   · The connections notice ("Before you connect: posting to…") at 4.42 : 1 is a bare <span> with no
     class of its own inside a themed panel; there is no selector that reaches it without reaching
     its neighbours.  It is 0.08 short and legible.  Named here rather than fixed by a broad rule.
   ================================================================================================= */
