/* ═══════════════════════════════════════════════════════════════
   site-theme.css — locked design tokens (light theme + Direction C)
   ───────────────────────────────────────────────────────────────
   Phase 1.2 ratified: Direction C palette (refined-current) with
   three WCAG-driven retunes folded in:

     - --bc-bg        #FAFAFA  →  #FAF6EF   (warm cream)
     - --bc-ink-3     #64748B  →  #5E6B82   (was 4.42:1 FAIL on cream;
                                              now 5.00:1 AA)
     - --bc-teal-text #007A62  →  #15806B   (saturation 100%→71%;
                                              4.50:1 cream / 4.85:1 white AA)
     - --bc-border    #E2E5EA  →  #E6DFD2   (warm-tint for cream harmony)
     - --bc-border-2  #CBD5E1  →  #D8CFC0   (warm-tinted hairline-2)

   Also ADDS typography tokens (file previously had zero) and a
   consolidated layout-token set (radius / shadow / space). Layout
   tokens live here; portals import in a LATER atomic.

   Loaded immediately before </head> so it cascades AFTER any per-
   page inline <style>. Per-page :root blocks remain intact for
   component-internal accents (capability colors, market dots,
   motion, tier badges). This sheet:

     1. Defines locked light tokens (--bc-* names, no collision)
     2. Adds typography tokens — DM Sans throughout (Syne dropped
        from token layer; per-page inline Syne untouched — falls
        back cleanly until the typography-cleanup atomic)
     3. Adds consolidated layout tokens (radius / shadow / space)
     4. Re-aliases legacy dark tokens (--navy*, --bg*, --text*)
        to the light tokens within body scope
     5. RESTORES the dark token values within navy-band scope
        (.hero / header.hero / footer / .on-band / etc.). The
        dark layer is UNTOUCHED — retunes apply only to the
        light layer.
     6. Paints html + body baseline + nav + footer

   PRESERVED EXACTLY:
     - Navy hero band + navy footer
     - Paper-on-navy editorial system in customers.css
     - Per-page inline Syne references (357 across 57 files)

   ───────────────────────────────────────────────────────────────
   DARK-THEME INVERSION  (added 2026-06-01, FC-SITE-DESIGN-LIFT-TIER-3)
   ───────────────────────────────────────────────────────────────
   PAGE-SCOPE WRAPPER  html[data-theme="dark"]
     Redefines the var() inputs the existing !important paint rules
     at L188-194 already consume. No specificity battle; no rule
     edited. When the attribute is absent (every page today), all
     current behaviour is preserved — the wrapper sits inert.

   ACTIVATION  A-bounded — marketing/acquisition surface only
     IN:  index, how-scoring-works, pricing, customers, customers/*,
          resources, resources/*, faq, partners, about, security,
          contact, journey  (~40 pages; T4 adds the attribute per-file)
     OUT: subscriber-portal, fulfill-portal, login, signup, accept-
          invite, trial-setup, profile-update, agency-spending-
          profile, 404, popup  (own design system; T1-T3 mockups
          depict a LIGHT product; stays light forever or until a
          separate operator decision — explicitly NOT this phase)

   THREE TEALS coexist (do NOT consolidate; full table in :root):
     --bc-teal           #00D4AA   fills / logo / CTA — brand canonical
     --bc-teal-text      #15806B   links inside LIGHT cards (AA)
     --bc-teal-emphasis  #1DB89A   H1 em on DARK canvas/band (AAA)

   LIGHT-ISLAND BOUNDARY  .b-section--paper, .b-section--surface,
     .bc-light-island self-declare dark-on-light ink UNCONDITIONALLY
     — theme flips cannot blank them. Inline white-bg divs without
     a class hook need .bc-light-island retrofit at T4 to close the
     residual fail-open path (T8 verify sweep enforces).
   ═══════════════════════════════════════════════════════════════ */

:root {
  /* ── Surfaces ───────────────────────────────────────────────── */
  --bc-bg:        #FAF6EF;   /* warm cream — Direction C (was #FAFAFA) */
  --bc-surface:   #FFFFFF;   /* cards / raised surfaces */
  --bc-paper:     #FAF9F6;   /* editorial accent (case-study system) */

  /* ── Ink (text on light) ────────────────────────────────────── */
  --bc-ink:       #0E1729;   /* primary  — 16.61:1 on cream (AAA) */
  --bc-ink-2:     #475569;   /* secondary —  7.03:1 on cream (AAA) */
  --bc-ink-3:     #5E6B82;   /* tertiary — RETUNED from #64748B
                                #5E6B82 on #FAF6EF = 5.00:1 (AA)
                                #5E6B82 on #FFFFFF = 5.38:1 (AA) */

  /* ── Retained navy band (hero + footer ONLY) ────────────────── */
  --bc-band:      #070D1A;   /* navy band */
  --bc-band-ink:  #E6ECF5;   /* text on navy — 16.35:1 (AAA) */
  --bc-band-ink-2:#B8CDE0;   /* secondary text on band */

  /* ── Brand teal — THREE TOKENS, ZERO OVERLAP ─────────────────
     Each teal serves a distinct surface + role combo. They are
     not redundant — collapsing them breaks AA contrast somewhere.
       --bc-teal           #00D4AA   fills, logo accent, CTA button
                                      background, icon glyphs. NEVER
                                      used as text body color. Brand
                                      canonical (CLAUDE.md).
       --bc-teal-text      #15806B   links + emphasis text inside
                                      LIGHT cards/sections. Desaturated
                                      100%→71% for AA on cream + white.
       --bc-teal-emphasis  #1DB89A   headline emphasis (H1 em span) on
                                      DARK canvas + DARK hero band.
                                      ~7.75:1 on #070D1A AAA.
                                      T1-ratified 2026-06-01 (Direction A).
     ──────────────────────────────────────────────────────────── */
  --bc-teal:          #00D4AA;   /* fills / logo / icon glyphs ONLY
                                    1.77:1 on cream confirms never-text */
  --bc-teal-text:     #15806B;   /* RETUNED from #007A62 (sat 100%→71%)
                                    4.50:1 on cream / 4.85:1 on white (AA) */
  --bc-teal-emphasis: #1DB89A;   /* dark-context H1 em ONLY
                                    7.75:1 on #070D1A band  (AAA)
                                    7.20:1 on #0F1626 canvas (AAA)
                                    T1-ratified 2026-06-01 (Direction A) */

  /* ── Semantic accents ───────────────────────────────────────── */
  --bc-amber:     #9B5408;   /* warning — 5.32:1 cream / 5.73:1 white (AA)
                                also reused as --bc-watch (tier-state — match score 60–79) */
  --bc-error:     #B91C1C;   /* error   — 6.01:1 cream / 6.47:1 white (AA) */
  --bc-success:   #2D6A0A;   /* HIGH tier-state — match score ≥80
                                6.13:1 cream / 6.61:1 white (AA)
                                also AA on HIGH-badge bg #EDFBEA (6.16:1).
                                Consumed by scoring-panel mockup + portal
                                migration (replaces literal --high-border
                                #2D6A0A in subscriber-portal). */

  /* ── Hairlines ──────────────────────────────────────────────── */
  --bc-border:    #E6DFD2;   /* hairline  — RETUNED from #E2E5EA
                                (warm-tint for cream harmony) */
  --bc-border-2:  #D8CFC0;   /* stronger hairline — RETUNED warm
                                (Δ-luminance 0.294 from cream — reads cleanly) */

  /* ── Typography (NEW — file previously had zero typography tokens) */
  --font-body:    'DM Sans', system-ui, -apple-system, BlinkMacSystemFont,
                  'Segoe UI', sans-serif;
  --font-display: 'DM Sans', system-ui, -apple-system, BlinkMacSystemFont,
                  'Segoe UI', sans-serif;
                                /* Syne intentionally dropped from
                                   the token layer. Per-page inline
                                   font-family:Syne references and
                                   Google Fonts <link>s are UNTOUCHED;
                                   they fall back to DM Sans cleanly
                                   until the typography-cleanup atomic
                                   removes them. */
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono',
                  Menlo, Consolas, monospace;

  /* ── Layout: radius (subscriber-portal canonical) ───────────── */
  --radius-sm:    6px;
  --radius-md:    10px;
  --radius-lg:    14px;

  /* ── Layout: shadow (subscriber-portal navy-tinted base) ────── */
  --shadow-card:    0 1px 4px rgba(7,13,26,0.07),
                    0 4px 16px rgba(7,13,26,0.05);
  --shadow-md:      0 4px 12px rgba(7,13,26,0.10),
                    0 12px 28px rgba(7,13,26,0.08);
                                /* --shadow-md absent in subscriber-portal;
                                   authored here to sit between card and
                                   drawer using the same navy-tinted base.
                                   See note (d) on Phase 1.2 HALT report. */
  --shadow-drawer:  4px 0 32px rgba(7,13,26,0.22);

  /* ── Layout: spacing scale ──────────────────────────────────── */
  /*    PROPOSED — no canonical --space-* scale exists in either
        portal currently. 4px-base derived from the top-10 most
        frequent literal values in subscriber-portal.html (16/12/
        20/8/10/24px). Flag for Phase 1.4 ratification before
        portals import. */
  --space-1:      4px;
  --space-2:      8px;
  --space-2-5:    10px;     /* half-step — captures gap:10px usage (11×) */
  --space-3:      12px;
  --space-3-5:    14px;     /* half-step — captures padding:14px usage (8×) */
  --space-4:      16px;
  --space-5:      20px;
  --space-6:      24px;
  --space-8:      32px;
  --space-10:     40px;
  --space-12:     48px;
}

/* ═══════════════════════════════════════════════════════════════
   PAGE-SCOPE DARK INVERSION — Direction A (A-bounded activation)
   ───────────────────────────────────────────────────────────────
   Strategy (a): redefine the var() inputs the L188-194 !important
   rules already consume. No specificity battle; no existing rule
   edited. When this attribute is absent, the site renders exactly
   as before (light); the cost is one inert ruleset.

   Wrapper element MUST be `html`. CSS custom-property resolution
   walks UP from the element being styled — the L188-194 rule
   applies to BOTH `html` AND `body`. A body[...] wrapper would
   leave `html`'s var() lookup at :root (cream) while flipping body
   → a 1px cream halo around the page. `html[data-theme="dark"]`
   covers both lookups cleanly.

   Activation (A-bounded): only marketing pages set this attribute
   at T4 (index, pricing, how-scoring-works, customers/*, resources/*,
   faq, partners, about, security, contact, journey). App surfaces
   (subscriber-portal, fulfill-portal, login, signup, accept-invite,
   trial-setup, profile-update, agency-spending-profile, 404, popup)
   stay LIGHT — separate design system; the T1-T3 mockups depict a
   LIGHT product. See module-top comment for the full A-bounded scope.
   ═══════════════════════════════════════════════════════════════ */
html[data-theme="dark"] {
  /* ── Canvas (P1: cream → dark navy-mid) ──────────────────── */
  --bc-bg:        #0F1626;          /* was #FAF6EF cream */
  /* --bc-band #070D1A UNCHANGED — becomes recessed band punctuation */

  /* --bc-surface  #FFFFFF UNCHANGED — light cards remain light islands
     --bc-paper    #FAF9F6 UNCHANGED — paper bands remain light editorial */

  /* ── Ink — canvas + band context (P2; cards re-restore via boundary) */
  --bc-ink:       #E6ECF5;          /* was #0E1729 — now band-ink (15.2:1 AAA) */
  --bc-ink-2:     #B8CDE0;          /* was #475569 — now band-ink-2 (11.0:1 AAA) */
  --bc-ink-3:     #7A9CC0;          /* was #5E6B82 — dark-restore value from L238
                                       6.31:1 on #0F1626 (AA)
                                       6.79:1 on #070D1A band (AA) */

  /* ── Native form/control colors ──────────────────────────── */
  color-scheme:   dark;

  /* ── Elevation (H3 ratified, P4) ──────────────────────────── */
  --bc-surface-on-dark: #131F35;            /* mid-navy raised card on dark
                                              (mirrors L228 dark-restore literal) */
  --bc-border-on-dark:  rgba(255,255,255,0.10);  /* hairline (mirrors L240) */

  /* --bc-teal-emphasis is defined in :root at the global brand-teal
     section; #1DB89A applies in both themes — only its CONSUMPTION
     site (.hero h1 em on dark band) is theme-conditional via the
     L205-225 dark-restore scope or per-page selectors. Re-listed
     here so the dark-theme intent is co-located with the wrapper. */
}

/* ═══════════════════════════════════════════════════════════════
   Body-scope token re-aliasing.
   Re-routes consumers of the legacy dark tokens (--navy*, --bg*,
   --text*, etc.) to the locked light tokens — without touching
   per-page :root blocks. Component-internal var() references
   auto-flip via this re-aliasing.
   ═══════════════════════════════════════════════════════════════ */
body {
  /* --navy family (index, pricing, resources/*, faq, partners,
     how-scoring-works, journey, customers, security, terms,
     privacy, thankyou, trial-setup) */
  --navy:          var(--bc-bg);
  --navy-mid:      var(--bc-bg);
  --navy-surface:  var(--bc-bg);
  --navy-card:     var(--bc-surface);

  /* --bg family (about, contact, agency-spending-profile) */
  --bg:            var(--bc-bg);
  --bg-mid:        var(--bc-bg);
  --bg-surface:    var(--bc-bg);
  --bg-card:       var(--bc-surface);
  --bg-dark:       var(--bc-bg);

  /* ink flips from light-on-dark → dark-on-light */
  --text:           var(--bc-ink);
  --text-primary:   var(--bc-ink);
  --text-secondary: var(--bc-ink-2);
  --text-muted:     var(--bc-ink-3);

  /* form input bg → light */
  --input-bg:      var(--bc-surface);

  /* hairlines + accent borders */
  --border:        var(--bc-border);
  --border-teal:   rgba(21,128,107,0.25);   /* RETUNED to match new --bc-teal-text base */
  --grid:          rgba(14,23,41,0.025);

  /* index.html alias chain */
  --bc-navy:    var(--bc-bg);
  --bc-navy-2:  var(--bc-bg);
  --bc-navy-3:  var(--bc-surface);
  --bc-text:    var(--bc-ink);
  --bc-text-2:  var(--bc-ink-2);
  --bc-muted:   var(--bc-ink-3);
}

/* ═══════════════════════════════════════════════════════════════
   html + body paint baseline.
   ───────────────────────────────────────────────────────────────
   Most marketing pages declare `html,body{background:#070D1A;
   color:#F0F6FF;color-scheme:dark;...}` literally in their inline
   <style>. To flip those reliably, we override at higher priority.
   !important matches thankyou.html's inline !important.
   ═══════════════════════════════════════════════════════════════ */
html,
body {
  background:    var(--bc-bg)  !important;
  color:         var(--bc-ink) !important;
  color-scheme:  light;
  font-family:   var(--font-body);
}

/* ═══════════════════════════════════════════════════════════════
   Navy-band scope: RESTORE the original dark token values within
   navy-band selectors. Dark layer is UNTOUCHED — Phase 1.2
   retunes apply only to the light layer (cream / ink-3 / teal-text
   / border / border-2). Within this scope, every consumer of
   --navy*/--bg*/--text*/--border/--border-teal resolves back to
   its original dark value, so navy hero band, footer, and the
   mid-page dark callouts render as designed.
   ═══════════════════════════════════════════════════════════════ */
.hero,
header.hero,
.navy-band,
footer,
.on-band,
.tier-demo-section,
.blog-hero,
/* ── Mid-page dark-bg surfaces with tokenized text ──
   These blocks have literal-hex dark backgrounds (gradients or
   solids) that survive the body-scope re-alias unchanged. Their
   interior text uses var(--text-primary)/var(--text-secondary)
   etc., which without this scope would resolve to dark on dark.
   Adding them to this scope restores the dark token VALUES inside. */
.enterprise-inner,       /* pricing.html — Enterprise-tier accent card */
.cta-block,              /* how-scoring-works.html — dark mid-page CTA */
.bidclarity-cta,         /* resources/*.html (24 files) — dark CTA block */
.cta-banner,             /* resources.html — dark CTA banner */
.cta-box,                /* resources/international-government-contracts-guide.html */
.report-header,          /* index.html — mid-page report-mockup top strip */
.dashboard-header,       /* partners.html — partner-dashboard-mockup top strip */
.breadcrumb {            /* faq.html — standalone navy breadcrumb strip */
  --navy:          #070D1A;
  --navy-mid:      #0E1729;
  --navy-surface:  #131F35;
  --navy-card:     #172440;
  --bg:            #070D1A;
  --bg-mid:        #0E1729;
  --bg-surface:    #131F35;
  --bg-card:       #172440;
  --bg-dark:       #070D1A;
  --text:           #F0F6FF;
  --text-primary:   #F0F6FF;
  --text-secondary: #9BBBD8;
  --text-muted:     #7A9CC0;
  --input-bg:      #0E1729;
  --border:        rgba(255,255,255,0.10);
  --border-teal:   rgba(0,212,170,0.25);
  --grid:          rgba(0,212,170,0.025);
  --bc-navy:    #070D1A;
  --bc-navy-2:  #0E1729;
  --bc-navy-3:  #172440;
  --bc-text:    #F0F6FF;
  --bc-text-2:  #9BBBD8;
  --bc-muted:   #7A9CC0;
}

/* Customer case-study paper-on-navy system: leave untouched.
   customers.css declares its own paper tokens; this sheet adds no
   override that would interfere. */

/* ═══════════════════════════════════════════════════════════════
   Dark-restore scope: explicit backdrop paint for gap-set
   selectors whose source rule did NOT declare a background.
   See site-theme.css history for the gap analysis.
   ═══════════════════════════════════════════════════════════════ */
.hero,
header.hero,
.navy-band,
.on-band,
.breadcrumb {
  background: var(--bc-band);
  color:      var(--bc-band-ink);
}

/* ═══════════════════════════════════════════════════════════════
   Light-island scope-boundary — UNCONDITIONAL (fail-safe; P2)
   ───────────────────────────────────────────────────────────────
   Light-bg surfaces SELF-DECLARE their dark-on-light ink tokens
   regardless of theme. In light theme: redundant (same values).
   In dark theme: holds the line against html[data-theme="dark"]'s
   --bc-ink flip leaking band-ink into a white card interior.

   Three selectors on the boundary:
     .b-section--paper     paper editorial band (#FAF9F6 bg)
     .b-section--surface   white surface band (#FFFFFF bg)
     .bc-light-island      utility class — apply to any light-bg
                            container without a stronger class hook
                            (e.g., inline-style white-bg divs in
                            how-scoring-works/pricing/faq/partners
                            inline markup). T4 phase retrofits these
                            usages. T8 verify sweep enforces "no
                            white-on-white / no band-ink-on-light".

   Mirrors BOTH the canonical --bc-ink/-2/-3 AND the body-scope
   re-alias targets --text/-primary/-secondary/-muted — the re-alias
   chains to --bc-ink, so without the legacy mirror the --text family
   would still resolve to band-ink (light) on these light cards.
   Explicit color: completes the boundary against direct body-color
   inheritance.

   Boundary scoped to MARKETING surfaces only (A-bounded). Portal
   light-card classes (.bc-bp-*, etc.) are NOT in this list — the
   portal stays its own light design system; html[data-theme="dark"]
   is never set on portal pages.
   ═══════════════════════════════════════════════════════════════ */
.b-section--paper,
.b-section--surface,
.bc-light-island {
  --bc-ink:         #0E1729;
  --bc-ink-2:       #475569;
  --bc-ink-3:       #5E6B82;
  --text:           #0E1729;
  --text-primary:   #0E1729;
  --text-secondary: #475569;
  --text-muted:     #5E6B82;
  color:            #0E1729;
}

/* ═══════════════════════════════════════════════════════════════
   Navigation — DUAL variant
   Default: white-glass with dark navy text (works over light content)
   On navy hero: white glass reads as a frosted-white panel.
   ═══════════════════════════════════════════════════════════════ */
nav {
  background: rgba(255,255,255,0.92) !important;
  border-bottom: 1px solid var(--bc-border) !important;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

nav a,
nav .nav-link,
nav .menu-item {
  color: var(--bc-ink) !important;
}

nav a:hover,
nav .nav-link:hover {
  color: var(--bc-teal-text) !important;
}

/* Nav buttons (Sign in / Start trial) — keep brand teal fill */
nav .btn,
nav .nav-cta,
nav button.cta {
  background: var(--bc-teal);
  color: var(--bc-band);
  border-color: var(--bc-teal);
}

/* ═══════════════════════════════════════════════════════════════
   Navigation — DARK THEME label-color override (REVISED 2026-06-01)
   ───────────────────────────────────────────────────────────────
   The DUAL nav rule above (L419-424) sets white-glass bg with
   !important — designed for the light-theme cream-page rendering.
   The ORIGINAL theme-inversion brief specified: "nav = bright white,
   the 'alive' anchor — operator likes it."

   PRIOR T4-REWORK fix (2026-06-01 earlier) drifted by darkening the
   nav bg in dark theme to make text visible. That contradicted the
   bright-anchor intent. THIS revision reverts the bg darkening (the
   DUAL white-glass paints through unchanged) and instead overrides
   the TEXT color so dark labels read on the bright nav.

   The DUAL rule's nav-text rule at L426-429 sets color: var(--bc-ink)
   !important. In dark theme via the html[data-theme="dark"] wrapper,
   var(--bc-ink) = #E6ECF5 (band-ink, light) — wrong on white nav.
   Override here forces #0E1729 (dark ink) on dark-themed pages so
   the bright nav reads correctly.

   The :hover state (L432-434 nav a:hover { color: var(--bc-teal-text)
   !important; }) already produces #15806B in dark theme — 4.85:1 AA
   on white nav. KEPT unchanged.

   .nav-cta retains its own L55 #000!important rule — :not(.nav-cta)
   excludes the CTA from being matched here.

   Scope-correction ratified per SR #92 (operator decision
   2026-06-01, NAV RESTORE dispatch).
   ═══════════════════════════════════════════════════════════════ */
html[data-theme="dark"] nav .nav-logo,
html[data-theme="dark"] nav .nav-links a:not(.nav-cta) {
  color: #0E1729 !important;                                  /* dark ink — 17.92:1 AAA on #FFFFFF nav */
}

/* ═══════════════════════════════════════════════════════════════
   Footer — preserved navy band
   ═══════════════════════════════════════════════════════════════ */
footer {
  background: var(--bc-band) !important;
  color: var(--bc-band-ink) !important;
  border-top: 1px solid rgba(255,255,255,0.10);
}

footer a,
footer .footer-link {
  color: var(--bc-band-ink-2) !important;
}

footer a:hover {
  color: var(--bc-teal) !important;
}

/* ═══════════════════════════════════════════════════════════════
   Default link color outside nav/footer/hero — teal-text (#15806B)
   per locked rule: links use --bc-teal-text, NOT --bc-teal fill.

   EXCLUSION EXTENSION (added 2026-06-01, NAV RESTORE dispatch):
   .hero-cta-primary and .hero-cta-secondary are CTA button classes
   that don't contain the .btn or .cta substring the original
   exclusion targeted. Without these :not() filters the override
   catches the footer's <a class="hero-cta-primary"> button inside
   .final-cta-band (which IS a non-.hero section) — specificity
   0-4-2 beats the button's 0-1-0 .hero-cta-primary rule, painting
   the button text with #15806B (--bc-teal-text light-context teal)
   instead of #070D1A (--bc-band near-black). Pixel-verified at
   bf03713: hero CTA text contained zero #15806B pixels; final-CTA
   text contained multiple #15806B pixels — empirical proof of the
   override hitting only the non-hero CTA. The :hover variant gets
   the same exclusion so hover also stays correct.

   SWEEP FLAG for T8: this default-link rule paints var(--bc-teal-text)
   (#15806B light-context teal) site-wide. On dark-theme pages, that
   color reads as washed against dark canvas; the dark-context variant
   --bc-teal-emphasis (#1DB89A) would be correct on dark. Audit
   whether the rule needs a html[data-theme="dark"]-scoped variant.
   Out of scope for this commit (CTA fix only).
   ═══════════════════════════════════════════════════════════════ */
main a:not(.btn):not(.cta):not(.nav-link):not(.hero-cta-primary):not(.hero-cta-secondary),
section:not(.hero):not(.on-band) a:not(.btn):not(.cta):not(.hero-cta-primary):not(.hero-cta-secondary) {
  color: var(--bc-teal-text);
}

main a:not(.btn):not(.cta):not(.nav-link):not(.hero-cta-primary):not(.hero-cta-secondary):hover,
section:not(.hero):not(.on-band) a:not(.btn):not(.cta):not(.hero-cta-primary):not(.hero-cta-secondary):hover {
  color: var(--bc-ink);
}

/* ═══════════════════════════════════════════════════════════════
   Focus ring — preserve existing js-mouse-user logic.
   ═══════════════════════════════════════════════════════════════ */
body:not(.js-mouse-user) *:focus {
  outline-color: var(--bc-teal-text);
}

/* ═══════════════════════════════════════════════════════════════
   Reduced motion: untouched — pages already declare their own
   `@media (prefers-reduced-motion)` blocks; this sheet adds none.
   ═══════════════════════════════════════════════════════════════ */
