/* ===========================================================================
 * Life Surge — WCAG 2.2 AA contrast: LAYER A, surgical class overrides
 * ===========================================================================
 *
 * Companion to lifesurge-a11y-contrast-palette.css (Layer B). This file is the
 * per-class layer. It is NOT the output of scripts/fix-contrast-aa.mjs —
 * that tool treats every pair as a text-colour problem, which is wrong for
 * white-on-blue, and it will happily turn a brand cyan into navy.
 *
 * !important is required. Elementor widget CSS is specificity 0,4,0
 * (page + element + element + title). A bare class cannot win on order.
 *
 * Keep hue and saturation; change lightness only. Source: verify.json
 * 2026-08-21 (11-page set). 307 color-contrast nodes / 16 pairs.
 * =========================================================================== */


/* ---------------------------------------------------------------------------
 * Posts card meta — #adadad on white, 2.24:1. 78 nodes on /media/ /press/.
 * Same grey, darker. 4.54:1. Computed on 21 Aug 2026: .elementor-post-date
 * is already #767676; extra meta selectors are cover, not a cascade fight.
 * ------------------------------------------------------------------------- */
.elementor-post-date,
.elementor-post__meta-data .elementor-post-date,
.elementor-post__meta-data time {
  color: #767676 !important;
}

/* ---------------------------------------------------------------------------
 * Posts card excerpt — #777777 on white, 4.48:1. 84 nodes on /media/ /press/.
 * One lightness step. The failing node is the inner <p>; the wrapper div
 * computes #000000 and is not the text axe measures. Both listed so a
 * markup change that drops the <p> still gets the colour.
 * ------------------------------------------------------------------------- */
.elementor-post__excerpt p,
.elementor-post__excerpt {
  color: #767676 !important;
}

/* ---------------------------------------------------------------------------
 * Elementor Posts "Read More" links.
 * #467ff7 on white does not meet WCAG AA for normal text.
 * Scoped to Elementor Posts widgets so other link styles are untouched.
 * ------------------------------------------------------------------------- */
.elementor-widget-posts .elementor-post__read-more {
  color: #1c70a9 !important;
}

/* ---------------------------------------------------------------------------
 * FAQ toggle titles.
 *
 * A first attempt stamped virtual/hybrid as "dark" and painted them
 * #30b4e5 (the original cyan, 8.79:1 on black). Axe then reported 12
 * nodes of #30b4e5 on #ffffff — the title chrome is white, the black
 * is the section behind it. That half was reverted. There is no stable
 * dark-title hook; do not put one back from a parent-background walk.
 *
 * Light pages (city / Impact Classes / join-multiply) keep the margin
 * colour. Unstamped widgets, including virtual, stay on #1479a0.
 *
 * #1479a0: 4.92:1 on white, 4.51:1 on #f5f5f5 (Baltimore, 0.01 margin).
 * #126e91: 5.73:1 on white, 5.26:1 on #f5f5f5.
 * ------------------------------------------------------------------------- */
.elementor-toggle .elementor-toggle-title {
  color: #1479a0 !important;
}

.lsa-faq-light .elementor-toggle-title {
  color: #126e91 !important;
}

/* ---------------------------------------------------------------------------
 * Hardcoded leftover of the original primary (#2185c7). Layer B already
 * moved the global token to #1c70a9; these three nodes on
 * /kansascity-pre-sale/ do not use the token.
 *
 *   span style="color:#2185c7"  — inline, "complete shift"
 *   .elementor-element-2c5fee87 — heading widget "Surge Your Life God's Way"
 *
 * #1c70a9 is the worst-case-on-#ececec value already in Layer B, 5.33:1 on
 * white. The tool suggested #1f7cba, which is the round-1 error.
 * ------------------------------------------------------------------------- */
span[style*="#2185c7"],
span[style*="#2185C7"],
.elementor-element-2c5fee87 .elementor-heading-title {
  color: #1c70a9 !important;
}

/* ---------------------------------------------------------------------------
 * Kansas City "Not a Concept / trend / CROWD" — #9e9e9e on #f0f3f5, 2.40:1.
 * Widget ids from /kansascity-pre-sale/ (WP page 12894). Computed #6f6f6f.
 * ------------------------------------------------------------------------- */
.elementor-element-5b445d51 .elementor-heading-title,
.elementor-element-50102260 .elementor-heading-title,
.elementor-element-4e2761ce .elementor-heading-title {
  color: #6f6f6f !important;
}

/* ---------------------------------------------------------------------------
 * Same three phrases on /presale-tickets/ (WP page 9209, Elementor document
 * .elementor-9209). Still #9e9e9e — 6 nodes in after3.json (3 desktop + 3
 * mobile).
 *
 * WHY NOT .elementor-12894 h2
 *   That class is Kansas City (page-id-12894), already covered above.
 *   It does not exist on /presale-tickets/ (count: 0). A page-level h2
 *   rule on 9209 would also recolor "LIFE SURGE ANAHEIM" (#004e84).
 *
 * WHY NOT the parent container 0d1edee
 *   It also holds "This is a Movement / Transformation / Community".
 *   No unique section class. Widget ids are the narrow hook.
 *
 * These ids are load-bearing. A rebuild of the page silently drops the
 * fix. Hidden-all-breakpoint duplicates included so un-hiding them
 * does not resurrect the failure.
 * ------------------------------------------------------------------------- */
.elementor-element-4379f05 .elementor-heading-title,
.elementor-element-d527340 .elementor-heading-title,
.elementor-element-d231227 .elementor-heading-title,
.elementor-element-2049f8d0 .elementor-heading-title,
.elementor-element-2efdc64b .elementor-heading-title,
.elementor-element-226adfb0 .elementor-heading-title {
  color: #6f6f6f !important;
}


/* ===========================================================================
 * NOT CHANGED — deliberate. A mechanical mapping would make the page worse
 * or invent a different colour. Counts are from the 11-page verify set
 * (desktop+mobile summed).
 * ===========================================================================
 *
 * #30b4e5 on #1298ca  — 58 nodes, lineup h2 ("Bestselling Author…").
 *   Tool suggested #072b39 (ΔL −0.418). That is not the same colour. Design.
 *
 * #ffffff on #1298ca  — 4 nodes, lineup disclaimer. Darkening white text is
 *   forbidden; the band behind it has to darken. That is a section-wide
 *   design change, not a class override.
 *
 * #ffffff on #40ae49  — 6 nodes, /ultimate/ "WELCOME / ULTIMATE / TICKET
 *   HOLDERS". Tool suggested grey text. Darken the green, or pick a new
 *   pairing. Design / marketing.
 *
 * #1c70a9 on #004e84  — 6 nodes, /careers/ PURPOSE / VISION / MISSION.
 *   Layer B darkened primary, which made this pair worse. Lightening the
 *   title to #41a0e0 would pass 3:1 but is a visible shift on a brand
 *   lockup. Design.
 *
 * #000000 on #1c70a9  — 4 nodes, "Learn the / of Kingdom impact". Black on
 *   the new primary. Lightening to near-white is a different colour. Design.
 *
 * #a20000 on #000000 / #1c70a9 / #1298ca — REGISTER NOW / RESERVE buttons.
 *   Earlier reporting called these 2.53:1 on black. They are not. The
 *   buttons are yellow with dark red text; the yellow is a gradient, which
 *   axe cannot measure, so it reported the section behind the button.
 *   Real pair 3.65:1–7.67:1 against a 3:1 threshold. They pass. Leave them.
 *
 * --e-global-color-b1a61cf #FCFF00 — already documented in the palette file.
 *   Cannot reach 4.5:1 without becoming olive.
 *
 * 531 axe incomplete (gradients / images) — not failures. Need a person
 *   with a colour picker. Worst pages: kansascity-pre-sale, home, media.
 * =========================================================================== */
