/* ═══════════════════════════════════════════════════════════════════
   Accessibility corrections — WCAG 2.1 AA contrast.

   Additive and loaded LAST, deliberately. main.css is 7,682 lines and the
   brand tokens are referenced throughout it; correcting contrast at the
   token level would change every surface that uses the brand colour,
   including the ones where it is a border or an icon and perfectly legible.
   This file changes only the places where TEXT sits on a colour and fails.

   Measured, not guessed. Every value below was computed against its actual
   rendered background:

     white on #00b890 ............ 2.54  FAIL (AA needs 4.5)
     white on #007355 ............ 5.86  PASS
     #90949c on white ............ 3.04  FAIL
     #5c6e79 on white ............ 5.30  PASS

   #00b890 remains the brand. It is still correct as a border, an icon, a
   rule and a background behind DARK text. What it cannot do is carry white
   text, and that is the only thing corrected here.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  /* The brand green, darkened only as far as white text requires. */
  --brand-on-white-text: #007355;
  /* Muted text that still passes on a white surface. */
  --muted-accessible: #5c6e79;
}

/* ── white text on brand ─────────────────────────────────────────── */
/* The skip link is the first thing a keyboard user meets. It failing
   contrast is a poor first impression for exactly the audience it exists
   to serve. */
.skip-link,
.nav-cta,
.mobile-launch-btn{
  background: var(--brand-on-white-text) !important;
  color: #fff !important;
}
.nav-cta:hover,
.mobile-launch-btn:hover,
.skip-link:focus{
  background: #00614a !important;   /* 7.48 on white */
}

/* ── muted supporting text ───────────────────────────────────────── */
/* Navigation dropdown descriptions: 21 instances at 3.04. These are the
   lines that tell someone what each destination is, so they are exactly
   the text a person struggling to read the label needs most. */
.labs-menu-meta{
  color: var(--muted-accessible) !important;
}

/* Deployment state chips: the NOT BUILT state was the lowest-contrast
   thing on the page, and it carries the most important word on it. */
.dep-state.none{
  color: var(--muted-accessible) !important;
  border-color: #b6c0c7 !important;
}

/* ── focus visibility ────────────────────────────────────────────── */
/* A visible focus ring on every interactive element, including any that
   main.css styles with :focus only. Uses a colour that reads on both the
   light page and the dark Control Tower panel. */
a:focus-visible,
button:focus-visible,
[role="menuitem"]:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible{
  outline: 3px solid #007355;
  outline-offset: 2px;
  border-radius: 2px;
}
.ct a:focus-visible,
.ct button:focus-visible{
  outline-color: #5fbfc4;
}

/* ── respect reduced motion everywhere ───────────────────────────── */
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  /* The starfield animates continuously. Motion sensitivity is a real
     accessibility need and an ambient animation is not worth triggering
     it. */
  #starfield{ display: none !important; }
}
