/* ---------------------------------------------------------------------------
   dh-dark-mode.css — site-wide dark theme.

   HOW THIS WORKS, and why it is built this way:

   The whole site's colour comes from 14 `--e-global-color-*` custom properties
   that Elementor writes onto `<body class="elementor-kit-6">`. Flipping those
   14 values moves ~90% of the site in one step, so this file does exactly that
   and never edits the kit itself (post 6). Editing the kit would repaint the
   Elementor editor and every light visitor too.

   The selector is `html[data-theme="dark"] body.elementor-kit-6`. The `body`
   half is REQUIRED, not decoration: a custom property declared directly on an
   element always beats one inherited from an ancestor, whatever the
   specificity — so a rule on `html` alone would lose to the kit's own
   declarations sitting on `body`. Matching body and out-specifying it
   ((0,2,2) vs (0,1,0)) is the only thing that works.

   `data-theme` is stamped on <html> by an inline script in dh-theme.php that
   runs at wp_head priority 0, before any stylesheet parses — so there is no
   flash. It is client-side ONLY: LiteSpeed page-caches this site per URL with
   no cookie or Vary variation, so the HTML must stay byte-identical for every
   visitor. Never move the theme decision to body_class or language_attributes.

   Everything dark is inside @media screen so a printed page stays light.

   SPECIFICITY, THE ONE TRAP: Elementor emits per-widget rules shaped like
   `.elementor-882 .elementor-element.elementor-element-XXXX a` — FOUR classes,
   (0,4,1). Class count is compared before element count, so
   `html[data-theme="dark"] .elementor-element-XXXX a` (0,3,2) LOSES to it, and
   adding `!important` does not help when the other side has it too. Anything
   overriding a per-widget rule therefore uses the longer prefix
   `html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-XXXX`
   which weighs (0,4,3) and wins on the element-count tiebreak.

   ADDING A NEW DARK SECTION LATER? Two vars do double duty — 5995834 is both
   near-black text AND the dark-band background; 7b7791b is both white
   background AND white text-on-dark. A blanket flip inverts those bands
   wrongly, so each one is re-pinned by element id below. A new dark band or a
   new yellow block needs a new entry in the RE-PINS section.
   --------------------------------------------------------------------------- */

/* Light is the baseline. Declared unconditionally so form controls, scrollbars
   and <select> popups get light UA chrome even on a dark-mode OS — this is what
   the old `<meta name="color-scheme" content="light">` on /ask/ used to do. */
:root {
	color-scheme: light;
}

/* ---------------------------------------------------------------------------
   The switch. A pill track with BOTH icons always visible and a knob that slides
   between them — it reads as a switch at a glance, where a single swapping glyph
   read as a mystery button.

   PLACEMENT. The control is appended to the nav <ul> (the only hook that reaches
   the desktop menu and the mobile overlay at once), but on desktop it belongs at
   the FAR end of the header, past the social icons — which live in a different
   Elementor column. Rather than move it in the DOM, it is lifted out of the flex
   flow and pinned to the right edge of the header container. That also gives the
   nav its full width back, so no menu spacing has to be sacrificed to fit it.
   --------------------------------------------------------------------------- */
.dh-theme-toggle-li {
	display: flex;
	align-items: center;
	/* the overlay menu centres its items, so the control must centre too —
	   as a flex container it was defaulting to flex-start and sitting left */
	justify-content: center;
}

.dh-theme-toggle {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 0;
	margin: 0;
	border: 0;
	background: none;
	cursor: pointer;
	line-height: 0;
	-webkit-appearance: none;
	appearance: none;
}

.dh-tt-track {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: space-between;
	width: 58px;
	height: 30px;
	padding: 0 7px;
	border: 1px solid var( --e-global-color-502384c, #AEAEAE );
	border-radius: 999px;
	box-sizing: border-box;
}

/* The knob is the brand yellow, and sits under whichever icon is active. */
.dh-tt-knob {
	position: absolute;
	top: 50%;
	left: 3px;
	width: 22px;
	height: 22px;
	margin-top: -11px;
	border-radius: 50%;
	background-color: var( --e-global-color-accent, #FFD900 );
	transition: transform 0.28s cubic-bezier( 0.4, 0, 0.2, 1 );
}

.dh-tt-i {
	position: relative;
	z-index: 1;
	width: 15px;
	height: 15px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: color 0.28s ease, opacity 0.28s ease;
}

/* Light: the knob is over the sun, so the sun is dark-on-yellow and the moon
   steps back. Dark: the reverse, and the knob slides right. */
.dh-tt-sun { color: #1E1E1E; }
.dh-tt-moon { color: var( --e-global-color-502384c, #AEAEAE ); }

.dh-theme-toggle:hover .dh-tt-track { border-color: currentColor; }

/* Word labels — mobile overlay only. The active side takes the ink colour (which
   flips with the theme) and the other steps back, so the switch reads at a
   glance without having to decode the icons. */
.dh-tt-label {
	font-size: 15px;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0.01em;
	color: var( --e-global-color-502384c, #AEAEAE );
	transition: color 0.28s ease;
}

.dh-tt-label--light { color: var( --e-global-color-5995834, #1E1E1E ); }
html[data-theme="dark"] .dh-tt-label--light { color: var( --e-global-color-502384c, #AEAEAE ); }
html[data-theme="dark"] .dh-tt-label--dark { color: var( --e-global-color-5995834, #F2F0EB ); }

/* On desktop the control sits in the header beside the social icons, where there
   is no room for words and the icons already carry the meaning. */
.dh-theme-toggle-slot .dh-tt-label { display: none; }

/* Dark: the knob slides right onto the moon and the roles swap. Outside
   @media screen with the rest of the control's chrome, so the switch looks
   correct in a print preview too. */
html[data-theme="dark"] .dh-tt-knob { transform: translateX( 28px ); }
html[data-theme="dark"] .dh-tt-sun { color: var( --e-global-color-502384c, #AEAEAE ); }
html[data-theme="dark"] .dh-tt-moon { color: #1E1E1E; }

@media ( prefers-reduced-motion: reduce ) {
	.dh-tt-knob,
	.dh-tt-i { transition: none; }
}

/* Where the relocated control sits. The footer script moves the button out of
   the nav and into the header's last column, alongside the social icons, inside
   a .dh-theme-toggle-slot wrapper. */
.dh-theme-toggle-slot {
	display: flex;
	align-items: center;
	/* pushes it to the far right of the header row, past the social icons */
	margin-left: auto;
	padding-left: 14px;
}

/* In the mobile overlay the control stays put, in the flow of the menu list —
   given a little air so it does not crowd the last menu item. */
.dh-theme-toggle-li {
	margin-top: 22px;
}

@media screen {

/* ---------------------------------------------------------------------------
   1. Document surface.
   `background-color` on <html> as well as <body> stops a white band appearing
   under rubber-band overscroll. hello-elementor's reset.css sets
   `body { background-color:#fff; color:#333 }` at (0,0,1), so both are restated
   here rather than left to the kit variables.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] {
	color-scheme: dark;
	background-color: #171715;
}

html[data-theme="dark"] body {
	background-color: #171715;
	color: #F2F0EB;
}

/* The header is transparent in the kit but style.css paints it #fff once it is
   pinned, so that white bar would ride over every dark page. */
html[data-theme="dark"] body.ehf-header #masthead {
	background-color: #171715;
}

/* post-6.css hardcodes this one in the kit's own custom CSS. */
html[data-theme="dark"] .site-header .site-navigation ul.menu li a {
	color: #D9D7D0;
}

/* ---------------------------------------------------------------------------
   2. THE PALETTE FLIP. Values match /ask/'s tokens.css exactly, so the app and
   the WordPress pages around it are the same dark theme rather than two
   near-misses.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 {
	--e-global-color-primary: #F2F0EB;
	--e-global-color-secondary: #F2F0EB;
	--e-global-color-text: #F2F0EB;
	--e-global-color-cd5c43c: #F2F0EB;
	--e-global-color-5995834: #F2F0EB;
	--e-global-color-7b7791b: #171715;
	--e-global-color-9d0ac8c: #232320;
	--e-global-color-2bf842f: #2C2A1E;
	--e-global-color-edfd22a: #C9C7C1;
	--e-global-color-23c776a: #D9D7D0;
	--e-global-color-acc42f3: #98968F;

	/* Deliberately NOT flipped:
	   --e-global-color-accent   #FFD900 — the brand yellow is the constant.
	   --e-global-color-502384c  #AEAEAE — 7.0:1 on #171715, reads in both themes.
	   --e-global-color-b0fba94  #FFFFFF00 — transparent header, nothing to flip. */
}

/* ---------------------------------------------------------------------------
   3. RE-PINS — sections that were ALREADY dark in light mode.
   These bands set their background from 5995834 (#1E1E1E) and their text from
   7b7791b (#FFFFFF). After the flip above those two swap roles and the band
   would come out light-on-light. Re-declaring both vars on the section element
   fixes the subtree: the background rules target a descendant
   (.elementor-motion-effects-layer), so it inherits these instead of body's.

   The list below is not hand-picked — it is every element in
   uploads/elementor/css/*.css whose background is painted from a dark global
   or a literal #1e1e1e. Re-derive it after adding sections:

     rsync -az krystal:public_html/wp-content/uploads/elementor/css/ ./ecss/
     perl /tmp/dhscan.pl ecss/*.css

   AN ELEMENT ID IS NOT UNIQUE ACROSS POSTS. Sections get copied between case
   studies and keep their id, so the same id can be a dark band on one page and
   the LIGHT surface on another — and an unscoped `.elementor-element-XXXX`
   re-pin hits every one of them. Two ids here were doing exactly that:
   44f045f is the dark band only on 7194 (on 4996 / 4488 / 5524 / 7381 it is
   painted from 9d0ac8c, the light surface) and 5ad623d only on 4742 (on 7633 /
   7740 / 10331 it is the surface too). Seven pages were being told their light
   band was dark, which made every heading drawn from 5995834 come out the exact
   colour of its own background. Both are now scoped by post, and 5f's matching
   link rules with them. ef8ebbd appears on 6103 AND 9952 and is genuinely dark
   on both, so it stays unscoped. Check for this with a LIKE on _elementor_data
   before adding an id here.

   Each group re-pins ONLY the variable that actually paints that band, plus
   7b7791b, which carries the light content sitting on top of it. Deliberately
   NOT re-pinned: 882's c896ca7 (the mobile hamburger — it SHOULD flip light so
   the bars show on a dark header).
   --------------------------------------------------------------------------- */

/* Group A — background painted from 5995834. */
html[data-theme="dark"] .elementor-element-806258d,   /* 978  footer */
html[data-theme="dark"] .elementor-element-cb26748,   /* 978  footer lower */
html[data-theme="dark"] .elementor-element-ef8ebbd,   /* 6103 + 9952 CTA band */
html[data-theme="dark"] .elementor-element-e367d5d,   /* 6116 case studies */
html[data-theme="dark"] .elementor-7194 .elementor-element-44f045f,   /* 7194 ONLY — see note */
html[data-theme="dark"] .elementor-element-fdf9f72,   /* 5934 homepage band */
html[data-theme="dark"] .elementor-element-4d56d5e,   /* loop 12268 card */
html[data-theme="dark"] .elementor-element-91303e0,   /* loop 12677 card */
html[data-theme="dark"] .elementor-element-99e966a,   /* loop 12677 card */
html[data-theme="dark"] .elementor-element-56d0b93,   /* 10331 */
html[data-theme="dark"] .elementor-element-8790635,   /* 10331 */
html[data-theme="dark"] .elementor-element-ca511e9 {  /* 10331 */
	--e-global-color-5995834: #232320;
	--e-global-color-7b7791b: #F2F0EB;
}

/* Group B — background painted from cd5c43c. */
html[data-theme="dark"] .elementor-4742 .elementor-element-5ad623d,   /* 4742 ONLY — see note */
html[data-theme="dark"] .elementor-element-7868640 {  /* 2446 contact */
	--e-global-color-cd5c43c: #232320;
	--e-global-color-7b7791b: #F2F0EB;
}

/* Group C — background painted from 23c776a. */
html[data-theme="dark"] .elementor-element-6857d76 {  /* 9952 panel */
	--e-global-color-23c776a: #232320;
	--e-global-color-7b7791b: #F2F0EB;
}

/* Group D — background painted from primary. */
html[data-theme="dark"] .elementor-element-c6aaf77 {  /* 5524 */
	--e-global-color-primary: #232320;
	--e-global-color-7b7791b: #F2F0EB;
}

/* Group E — background is a LITERAL #1e1e1e, so it does not flip and needs no
   surface re-pin. Only the light content riding on it has to be held light. */
html[data-theme="dark"] .elementor-element-b37b3a9,   /* 6116 */
html[data-theme="dark"] .elementor-element-323a01f,   /* 10331 toggle */
html[data-theme="dark"] .elementor-element-6d8fea9,   /* 10331 toggle */
html[data-theme="dark"] .elementor-element-80f795c {  /* 10331 toggle */
	--e-global-color-7b7791b: #F2F0EB;
}

/* ---------------------------------------------------------------------------
   3b. THE "FINAL REFLECTIONS" BAND — a step the flip flattens.

   Every case study closes with a "Final reflections" band and then the "Let's
   chat" CTA. In light mode those two are a strong step: the reflections band is
   the light surface (9d0ac8c, #F3F3F3) and the CTA is near-black. In dark both
   land on #232320 — the surface flips to it, and section 3 re-pins the CTA to
   it — so the two merge into one slab and the article appears to have no ending.

   Lifting the reflections band one step to #2C2C29 restores the separation
   without touching the CTA, which many other pages also end with.

   The ten sections share just two ids, copied between posts — and 5ee09e9 is the
   trap this file has met before: on 5840 that id is a DIFFERENT section, so it is
   scoped by post while 56f3e07, which is a reflections band on all six of its
   posts, is not. Verify with a LIKE on _elementor_data before extending this.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-56f3e07,
html[data-theme="dark"] body.elementor-kit-6 .elementor-4996 .elementor-element.elementor-element-5ee09e9,
html[data-theme="dark"] body.elementor-kit-6 .elementor-5524 .elementor-element.elementor-element-5ee09e9,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7194 .elementor-element.elementor-element-5ee09e9,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7381 .elementor-element.elementor-element-5ee09e9 {
	background-color: #2C2C29 !important;
}

/* ---------------------------------------------------------------------------
   4. REVERSE RE-PINS — blocks with an ACCENT (#FFD900) background.
   The yellow never changes, so the ink on it must not either: left alone, the
   flipped light text would land at about 1.2:1 on yellow.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .elementor-element-b88e382,   /* 5840 */
html[data-theme="dark"] .elementor-element-d42a7cc,   /* 5840 */
html[data-theme="dark"] .elementor-element-51f5446 {  /* 9952 */
	--e-global-color-primary: #1E1E1E;
	--e-global-color-secondary: #1E1E1E;
	--e-global-color-text: #1E1E1E;
	--e-global-color-cd5c43c: #1E1E1E;
	--e-global-color-5995834: #1E1E1E;
	--e-global-color-7b7791b: #FFFFFF;
	--e-global-color-edfd22a: #495057;
	--e-global-color-23c776a: #333333;
}

/* ---------------------------------------------------------------------------
   5a. ANYTHING PAINTED ACCENT GETS DARK TEXT — generated, not hand-written.

   The yellow is the one colour that never flips, so light text landing on it is
   always wrong (1.21:1). Fixing these case by case kept missing new ones: the
   nav's TOP-level links are `a.hfe-menu-item` but its dropdown items are
   `a.hfe-sub-menu-item`, so a rule written for one silently skipped the other.

   So the list is derived instead of guessed — every selector in
   uploads/elementor/css/*.css whose background ends up accent, each also applied
   to its descendants (Elementor wraps a button label in `.elementor-button-text`,
   which would otherwise keep the flipped colour).

   TWO THINGS THE GENERATOR MUST DO, both learned the hard way:
     - Ignore the 8-digit transparent forms. `#FFD90000` is not yellow, it is
       nothing; treating it as yellow puts dark text on a transparent button.
     - Use each selector's LAST background declaration, not its first. Elementor
       emits `.menu-item.current-menu-item a.hfe-menu-item` twice — accent, then
       transparent — so the current nav item is not actually yellow, and pinning
       it dark made it vanish on the page it marks.

   Regenerate by collecting selectors from uploads/elementor/css/*.css under both
   of those rules.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-323a01f.toggle-button.selected .elementor-widget-container,
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-323a01f.toggle-button.selected .elementor-widget-container *,
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-6d8fea9.toggle-button.selected .elementor-widget-container,
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-6d8fea9.toggle-button.selected .elementor-widget-container *,
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-80f795c.toggle-button.selected .elementor-widget-container,
html[data-theme="dark"] .elementor-10331 .elementor-element.elementor-element-80f795c.toggle-button.selected .elementor-widget-container *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-2067550 .elementor-button:focus,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-2067550 .elementor-button:focus *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-2067550 .elementor-button:hover,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-2067550 .elementor-button:hover *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-434bd7f .elementor-button:focus,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-434bd7f .elementor-button:focus *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-434bd7f .elementor-button:hover,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-434bd7f .elementor-button:hover *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-5404865 .elementor-button:focus,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-5404865 .elementor-button:focus *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-5404865 .elementor-button:hover,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-5404865 .elementor-button:hover *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-b46ebbd .elementor-button:focus,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-b46ebbd .elementor-button:focus *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-b46ebbd .elementor-button:hover,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-b46ebbd .elementor-button:hover *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d7e323e .elementor-button:focus,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d7e323e .elementor-button:focus *,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d7e323e .elementor-button:hover,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d7e323e .elementor-button:hover *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-434bd7f .elementor-button:focus,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-434bd7f .elementor-button:focus *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-434bd7f .elementor-button:hover,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-434bd7f .elementor-button:hover *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-5404865 .elementor-button:focus,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-5404865 .elementor-button:focus *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-5404865 .elementor-button:hover,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-5404865 .elementor-button:hover *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-558b1f9 .elementor-button:focus,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-558b1f9 .elementor-button:focus *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-558b1f9 .elementor-button:hover,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-558b1f9 .elementor-button:hover *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-6fdb2ef .elementor-button:focus,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-6fdb2ef .elementor-button:focus *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-6fdb2ef .elementor-button:hover,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-6fdb2ef .elementor-button:hover *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-b46ebbd .elementor-button:focus,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-b46ebbd .elementor-button:focus *,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-b46ebbd .elementor-button:hover,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-b46ebbd .elementor-button:hover *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-434bd7f .elementor-button:focus,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-434bd7f .elementor-button:focus *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-434bd7f .elementor-button:hover,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-434bd7f .elementor-button:hover *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-5404865 .elementor-button:focus,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-5404865 .elementor-button:focus *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-5404865 .elementor-button:hover,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-5404865 .elementor-button:hover *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-6fdb2ef .elementor-button:focus,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-6fdb2ef .elementor-button:focus *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-6fdb2ef .elementor-button:hover,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-6fdb2ef .elementor-button:hover *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b00bdac .elementor-button:focus,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b00bdac .elementor-button:focus *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b00bdac .elementor-button:hover,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b00bdac .elementor-button:hover *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b46ebbd .elementor-button:focus,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b46ebbd .elementor-button:focus *,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b46ebbd .elementor-button:hover,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-b46ebbd .elementor-button:hover *,
html[data-theme="dark"] .elementor-12266 .elementor-element.elementor-element-2699f3c::after,
html[data-theme="dark"] .elementor-12268 .elementor-element.elementor-element-4d56d5e a:hover,
html[data-theme="dark"] .elementor-12268 .elementor-element.elementor-element-4d56d5e a:hover *,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-72b34e8 .elementor-button:focus,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-72b34e8 .elementor-button:focus *,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-72b34e8 .elementor-button:hover,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-72b34e8 .elementor-button:hover *,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-8448c01 h2 a:hover,
html[data-theme="dark"] .elementor-12549 .elementor-element.elementor-element-8448c01 h2 a:hover *,
html[data-theme="dark"] .elementor-12677 .elementor-element.elementor-element-91303e0 .elementor-button:focus,
html[data-theme="dark"] .elementor-12677 .elementor-element.elementor-element-91303e0 .elementor-button:focus *,
html[data-theme="dark"] .elementor-12677 .elementor-element.elementor-element-91303e0 .elementor-button:hover,
html[data-theme="dark"] .elementor-12677 .elementor-element.elementor-element-91303e0 .elementor-button:hover *,
html[data-theme="dark"] .elementor-1350 .elementor-element.elementor-element-d0ef73e .elementor-button:focus,
html[data-theme="dark"] .elementor-1350 .elementor-element.elementor-element-d0ef73e .elementor-button:focus *,
html[data-theme="dark"] .elementor-1350 .elementor-element.elementor-element-d0ef73e .elementor-button:hover,
html[data-theme="dark"] .elementor-1350 .elementor-element.elementor-element-d0ef73e .elementor-button:hover *,
html[data-theme="dark"] .elementor-2222 .elementor-element.elementor-element-4256198 .elementor-button:focus,
html[data-theme="dark"] .elementor-2222 .elementor-element.elementor-element-4256198 .elementor-button:focus *,
html[data-theme="dark"] .elementor-2222 .elementor-element.elementor-element-4256198 .elementor-button:hover,
html[data-theme="dark"] .elementor-2222 .elementor-element.elementor-element-4256198 .elementor-button:hover *,
html[data-theme="dark"] .elementor-3098 .elementor-element.elementor-element-89a9267 .elementor-button:focus,
html[data-theme="dark"] .elementor-3098 .elementor-element.elementor-element-89a9267 .elementor-button:focus *,
html[data-theme="dark"] .elementor-3098 .elementor-element.elementor-element-89a9267 .elementor-button:hover,
html[data-theme="dark"] .elementor-3098 .elementor-element.elementor-element-89a9267 .elementor-button:hover *,
html[data-theme="dark"] .elementor-3328 .elementor-element.elementor-element-ea9ca77 .elementor-button:focus,
html[data-theme="dark"] .elementor-3328 .elementor-element.elementor-element-ea9ca77 .elementor-button:focus *,
html[data-theme="dark"] .elementor-3328 .elementor-element.elementor-element-ea9ca77 .elementor-button:hover,
html[data-theme="dark"] .elementor-3328 .elementor-element.elementor-element-ea9ca77 .elementor-button:hover *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-a59b510 .elementor-button:focus,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-a59b510 .elementor-button:focus *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-a59b510 .elementor-button:hover,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-a59b510 .elementor-button:hover *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-content-timeline-block.eael-highlight .eael-content-timeline-img.eael-picture,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-content-timeline-block.eael-highlight .eael-content-timeline-img.eael-picture *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-content-timeline-img.eael-picture,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-content-timeline-img.eael-picture *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-horizontal-timeline-item.is-active .eael-horizontal-timeline-item__point-content .eael-elements-icon,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-horizontal-timeline-item.is-active .eael-horizontal-timeline-item__point-content .eael-elements-icon *,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-horizontal-timeline-item__point-content .eael-elements-icon,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-horizontal-timeline-item__point-content .eael-elements-icon *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-b88e382 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-b88e382 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-b88e382:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-b88e382:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d0ef73e .elementor-button:focus,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d0ef73e .elementor-button:focus *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d0ef73e .elementor-button:hover,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d0ef73e .elementor-button:hover *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d42a7cc > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d42a7cc > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer *,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d42a7cc:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap,
html[data-theme="dark"] .elementor-5840 .elementor-element.elementor-element-d42a7cc:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap *,
html[data-theme="dark"] .elementor-5934 .elementor-element.elementor-element-390c355e a:hover,
html[data-theme="dark"] .elementor-5934 .elementor-element.elementor-element-390c355e a:hover *,
html[data-theme="dark"] .elementor-6103 .elementor-element.elementor-element-b6ba810 .elementor-button:focus,
html[data-theme="dark"] .elementor-6103 .elementor-element.elementor-element-b6ba810 .elementor-button:focus *,
html[data-theme="dark"] .elementor-6103 .elementor-element.elementor-element-b6ba810 .elementor-button:hover,
html[data-theme="dark"] .elementor-6103 .elementor-element.elementor-element-b6ba810 .elementor-button:hover *,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-0c91869 .elementor-button:focus,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-0c91869 .elementor-button:focus *,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-0c91869 .elementor-button:hover,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-0c91869 .elementor-button:hover *,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-4e60ec6 .eael-filter-gallery-control ul li.control.active,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-4e60ec6 .eael-filter-gallery-control ul li.control.active *,
html[data-theme="dark"] .elementor-7194 .elementor-element.elementor-element-d0ef73e .elementor-button:focus,
html[data-theme="dark"] .elementor-7194 .elementor-element.elementor-element-d0ef73e .elementor-button:focus *,
html[data-theme="dark"] .elementor-7194 .elementor-element.elementor-element-d0ef73e .elementor-button:hover,
html[data-theme="dark"] .elementor-7194 .elementor-element.elementor-element-d0ef73e .elementor-button:hover *,
html[data-theme="dark"] .elementor-7740 .elementor-element.elementor-element-9997250 .elementor-button:focus,
html[data-theme="dark"] .elementor-7740 .elementor-element.elementor-element-9997250 .elementor-button:focus *,
html[data-theme="dark"] .elementor-7740 .elementor-element.elementor-element-9997250 .elementor-button:hover,
html[data-theme="dark"] .elementor-7740 .elementor-element.elementor-element-9997250 .elementor-button:hover *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-c373ab1 a:focus,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-c373ab1 a:focus *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-c373ab1 a:hover,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-c373ab1 a:hover *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item.highlighted,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item.highlighted *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item:focus,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item:focus *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item:hover,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .menu-item a.hfe-menu-item:hover *,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .sub-menu a.hfe-sub-menu-item:hover,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .sub-menu a.hfe-sub-menu-item:hover *,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--filled.qodef-hover--reveal:after,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--filled:not(.qodef-hover--reveal):hover,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--filled:not(.qodef-hover--reveal):hover *,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--outlined.qodef-hover--reveal:after,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--outlined:not(.qodef-hover--reveal):hover,
html[data-theme="dark"] .elementor-978 .elementor-element.elementor-element-cb26748 .qodef-qi-button.qodef-layout--outlined:not(.qodef-hover--reveal):hover *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-3bc7831 .elementor-button:focus,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-3bc7831 .elementor-button:focus *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-3bc7831 .elementor-button:hover,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-3bc7831 .elementor-button:hover *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr--video .plyr__control.plyr__tab-focus,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr--video .plyr__control.plyr__tab-focus *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr--video .plyr__control:hover,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr--video .plyr__control:hover *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr__control--overlaid,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-4593235 .plyr__control--overlaid *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-51f5446 > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-51f5446 > .elementor-motion-effects-container > .elementor-motion-effects-layer *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-51f5446:not(.elementor-motion-effects-element-type-background),
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-51f5446:not(.elementor-motion-effects-element-type-background) *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-60a4447 .qodef-qi-info-cards,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-60a4447 .qodef-qi-info-cards *,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-d83ac66 .qodef-qi-info-cards,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-d83ac66 .qodef-qi-info-cards *,
html[data-theme="dark"] .elementor-icon-box-title::after,
html[data-theme="dark"] .elementor-widget-archive-posts .elementor-button,
html[data-theme="dark"] .elementor-widget-archive-posts .elementor-button *,
html[data-theme="dark"] .elementor-widget-archive-posts .elementor-post__card .elementor-post__badge,
html[data-theme="dark"] .elementor-widget-archive-posts .elementor-post__card .elementor-post__badge *,
html[data-theme="dark"] .elementor-widget-button .elementor-button,
html[data-theme="dark"] .elementor-widget-button .elementor-button *,
html[data-theme="dark"] .elementor-widget-loop-grid .elementor-button,
html[data-theme="dark"] .elementor-widget-loop-grid .elementor-button *,
html[data-theme="dark"] .elementor-widget-navigation-menu .hfe-nav-menu-layout:not(.hfe-pointer__framed) .menu-item.parent .sub-menu .hfe-has-submenu-container a:after,
html[data-theme="dark"] .elementor-widget-navigation-menu .hfe-nav-menu-layout:not(.hfe-pointer__framed) .menu-item.parent a.hfe-menu-item:after,
html[data-theme="dark"] .elementor-widget-navigation-menu .hfe-nav-menu-layout:not(.hfe-pointer__framed) .menu-item.parent a.hfe-menu-item:before,
html[data-theme="dark"] .elementor-widget-navigation-menu .menu-item a.hfe-menu-item.elementor-button,
html[data-theme="dark"] .elementor-widget-navigation-menu .menu-item a.hfe-menu-item.elementor-button *,
html[data-theme="dark"] .elementor-widget-navigation-menu .menu-item a.hfe-menu-item.elementor-button:hover,
html[data-theme="dark"] .elementor-widget-navigation-menu .menu-item a.hfe-menu-item.elementor-button:hover *,
html[data-theme="dark"] .toggle-button.selected .elementor-widget-container .toggle-button:hover,
html[data-theme="dark"] .toggle-button.selected .elementor-widget-container .toggle-button:hover *,
html[data-theme="dark"] .toggle-button:hover .elementor-widget-container,
html[data-theme="dark"] .toggle-button:hover .elementor-widget-container * {
	color: #1E1E1E !important;
	fill: #1E1E1E !important;
}

/* ---------------------------------------------------------------------------
   5. BUTTONS — the accent yellow never flips, so a label sitting ON it must
   stay dark. The question is which buttons are actually yellow.

   Answer, from scanning every `.elementor-button` background rule in
   uploads/elementor/css/*.css: 24 templates emit an id-less page default,
   `.elementor-widget-button .elementor-button { background-color: accent }`,
   so a button is yellow AT REST unless something overrides it. Exactly eleven
   widgets do override it — to transparent, white, light-grey or dark — and
   those labels must follow the flip and stay light. All eleven still go accent
   on hover, so they flip back to dark there.

   (Worth knowing if you re-derive this: a scan that keys on
   `elementor-element-XXXX` misses the page default entirely, because that rule
   carries no element id — and then the conclusion inverts.)

   !important throughout: the Elementor colour rules sit at (0,4,1) but carry no
   !important of their own, so this wins without an arms race. Between the three
   blocks below it is plain specificity — (0,3,1), then (0,5,2), then (0,6,2).
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .elementor-widget-button .elementor-button {
	color: #1E1E1E !important;
	fill: #1E1E1E !important;
}

/* The eleven that are NOT yellow at rest. */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button * {
	color: #F2F0EB !important;
	fill: #F2F0EB !important;
}

/* ...but all eleven do fill with accent on hover. */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button:hover,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button:focus,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button:hover *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0c91869 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3bc7831 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-72b34e8 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-89a9267 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9997250 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b6ba810 .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d0ef73e .elementor-button:focus *,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ea9ca77 .elementor-button:focus * {
	color: #1E1E1E !important;
	fill: #1E1E1E !important;
}

/* The nav fills with accent on hover/focus (header template 882). */
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item:hover,
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item:focus,
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item.hfe-menu-item-active {
	color: #1E1E1E !important;
}

/* hello-elementor's reset.css sets the unstyled-link colour to #CC3366. It only
   surfaces where Elementor styled no colour (the skip link, the footer company
   numbers), and at 3.62:1 on #171715 it fails AA. Same hue, lifted to 5.31:1.

   `:where()` contributes no specificity, so this rule weighs exactly (0,0,1) —
   identical to the `a` rule it replaces. That matters: it wins on source order
   alone, so every rule that already outranks reset.css still outranks this one,
   and no link Elementor deliberately coloured is touched. */
:where( html[data-theme="dark"] ) a {
	color: #E0608A;
}

/* The Qi "highlight" widget paints its yellow band as an inline
   `style="background-image:linear-gradient(...#FFD900...)"` on a <span>. Inline
   styles are unreachable by variable re-pins, and the yellow does not flip — so
   the text riding on it must be pinned dark by hand. Without this every
   highlighted phrase on the site (the hero, "How I work", "Right now..",
   "Recent articles" and the four footer headings) lands at 1.21:1. */
html[data-theme="dark"] .qodef-highlight-text,
html[data-theme="dark"] .qodef-highlight-text * {
	color: #1E1E1E !important;
}

/* ...except when the band only UNDERLINES the phrase instead of covering it.
   The widget writes its geometry into that same inline gradient, so the start
   stop tells you which kind it is: a covering highlight starts at 0-21%, an
   underline starts at 75%+ and leaves the text itself on the page background —
   where a dark pin would erase it. Two instances site-wide; re-derive with:

     curl -s https://dannyhearn.me/<page> | grep -oE 'transparent [0-9]+%'
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .qodef-highlight-text[style*="transparent 75%"],
html[data-theme="dark"] .qodef-highlight-text[style*="transparent 75%"] *,
html[data-theme="dark"] .qodef-highlight-text[style*="transparent 77%"],
html[data-theme="dark"] .qodef-highlight-text[style*="transparent 77%"] * {
	color: #F2F0EB !important;
}

/* The nav fills with accent on hover/focus (header template 882). */
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item:hover,
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item:focus,
html[data-theme="dark"] .hfe-nav-menu a.hfe-menu-item.hfe-menu-item-active {
	color: #1E1E1E !important;
}


/* ---------------------------------------------------------------------------
   5b. PENDING SOURCE FIX — per-widget custom CSS that hardcodes link text to
   black / #1e1e1e. It is `!important`, so on a dark page those links drop to
   about 1.1:1 and vanish.

   The real fix is to tokenise them in _elementor_data, as already done for
   882 / 978 / 5934 / 10331; rewritten JSON for the rest is staged on the server
   at ~/ask-private/dh-darkmode/<id>.new.json. This block reproduces the SAME
   value (the ink global) from CSS so every page reads correctly meanwhile.

   The list is generated, not hand-written — regenerate after any source fix:
     rsync -az krystal:public_html/wp-content/uploads/elementor/css/ ./ecss2/
   then grep those files for rules setting `color:` to a dark literal and take
   the last elementor-element-* id in each selector. Ids that no longer hardcode
   anything simply become no-ops, so a stale entry here is harmless.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-00dbdb7 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0bb93d9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-0d690d1 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-108e9420 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-12f44bcf a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-178cf7f a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-1824d33 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-196aa23 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-1d939cf a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-26ab745 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-2de3415 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-353e0f19 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-388384d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-3b5852d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4246755 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4256198 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4a52fc5 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-52dcc03 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-5b74863 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-5ef966c a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6351827d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-683099d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6b1396a a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6d8fea9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6f7c7a71 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-7d73571 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-7db0e98 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-80f795c a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-83ae098 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-8484f75 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-925ec27 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9b61b64 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-9b7d564 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a59b510 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a653120 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-a834245 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ab23404 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b31e4fc a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b79b168 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-be6b42e a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c1e659e a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c4d5053 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c5d66c0 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c60c679 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c88e398 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ca04b10 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d26b1e2 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-d86cbe4 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-da03010 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-daa6592 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-de510a1 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e0483f2 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e315353 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ec7166c a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-f18370c a {
	color: var( --e-global-color-5995834 ) !important;
}

/* ---------------------------------------------------------------------------
   5d. CHROME IMMUNITY — the header and footer must survive a page's rogue
   global link rule.

   Thirty-five posts and templates carry an UNSCOPED `a { color: black
   !important }` in their Elementor custom CSS — 141 such rules in all. Elementor
   only scopes custom CSS when the author writes `selector`; a bare `a` is
   emitted global, so one case study repaints every link on the page, the site
   navigation and footer included. On /writing/ofgem/ that put 23 of 26 links at
   about 1.17:1 — the whole nav and the whole footer, black on near-black.

   It is invisible in light mode, which is why it went unnoticed for so long:
   the nav ink is #1E1E1E there, so `black !important` looks identical.

   5b above cannot catch these. It keys on the widget id that owns the offending
   CSS, and the header and footer are neither — they are separate templates that
   merely happen to be on the same page. So this block claims the chrome itself.
   The id in `#masthead` / `footer#colophon` is doing the work: the rogue rule is
   `!important` at (0,0,1), so only specificity can beat it.

   The real fix is to scope those rules at source, which also fixes light mode
   and lets this block go. Until then this holds the chrome.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 #masthead a,
html[data-theme="dark"] body.elementor-kit-6 footer#colophon a {
	color: var( --e-global-color-5995834 ) !important;
}

/* The theme's own post furniture is a THIRD place the rogue rule reaches, and
   the easiest to miss: the tag list under an article is rendered by the child
   theme into `.post-tags`, outside Elementor's `.elementor-<id>` wrapper
   altogether, so neither 5e (scoped to that wrapper) nor the chrome rule above
   covers it. Seven tag links sat at 1.17:1 under
   /writing/prototyping-to-solve-a-problem/. The neighbours are listed with it —
   they are theme furniture of the same kind and cost nothing if absent. */
html[data-theme="dark"] body.elementor-kit-6 .post-tags a,
html[data-theme="dark"] body.elementor-kit-6 .tag-links a,
html[data-theme="dark"] body.elementor-kit-6 .entry-meta a,
html[data-theme="dark"] body.elementor-kit-6 .post-navigation a,
html[data-theme="dark"] body.elementor-kit-6 .nav-links a {
	color: var( --e-global-color-5995834 ) !important;
}

/* Exceptions, restated after the block above and at higher specificity, for the
   chrome links that sit on their OWN light surface and therefore still want dark
   ink: the nav item under the accent-yellow hover chip, the /ask/ nav chip, the
   footer's filled Qi button (#F4F4F4), and any link inside a Qi text highlight —
   the footer's "Writing / About / Contact" all sit on the brand yellow, painted
   as a linear-gradient rather than a background-color.

   That last one is why this list exists at all. The blanket rule above is by far
   the highest-specificity link rule on the page at (1,2,5), so it silently beat
   the perfectly good `.qodef-highlight-text *` rule further down and put light
   ink back on yellow — the exact fault the blanket rule was written to prevent,
   just inverted. Anything in the chrome carrying its own light surface has to be
   named here. */
html[data-theme="dark"] body.elementor-kit-6 #masthead a.hfe-menu-item:hover,
html[data-theme="dark"] body.elementor-kit-6 #masthead a.hfe-menu-item:focus,
html[data-theme="dark"] body.ask-app #masthead a[href*="/ask/"],
html[data-theme="dark"] body.elementor-kit-6 footer#colophon a.qodef-qi-button,
html[data-theme="dark"] body.elementor-kit-6 #masthead .qodef-highlight-text a,
html[data-theme="dark"] body.elementor-kit-6 #masthead .qodef-highlight-text *,
html[data-theme="dark"] body.elementor-kit-6 footer#colophon .qodef-highlight-text a,
html[data-theme="dark"] body.elementor-kit-6 footer#colophon .qodef-highlight-text * {
	color: #1E1E1E !important;
}

/* ---------------------------------------------------------------------------
   5e. THE SAME ROGUE RULE, CAUGHT IN THE BODY.

   5d holds the chrome; this holds the page content. 5b cannot: it keys on the
   widget id that owns the offending CSS, and an unscoped `a { }` reaches links
   in widgets that have nothing to do with it — on /writing/john-lewis/ three
   body links stayed black even with the whole 5b list applied.

   So the scope here is the POST, via Elementor's own page wrapper
   `.elementor-<id>`, which covers the content and excludes the header and footer
   templates. The list is only those posts whose custom CSS actually contains an
   unscoped `a { color: black | #1e1e1e }` — generated by scanning
   `_elementor_data`, not hand-picked.

   Why this cannot trample a deliberate link colour: on exactly these pages the
   rogue rule is ALREADY winning against every widget-level link colour, in both
   themes. Anything still showing its own colour is doing so from a rule that
   out-ranks (0,0,1)-!important, and those out-rank this block's (0,3,3) too —
   5a's accent blocks and 5c's light panels among them. So this can only repaint
   links that are currently black, which is the whole point.

   Regenerate after any source fix; entries for posts that no longer hardcode
   anything are harmless no-ops.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .elementor-1350 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-2222 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-2933 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-3328 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-4488 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-4742 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-4996 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-5524 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-5840 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7381 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7633 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7645 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7740 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-10501 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-10504 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-10507 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-10530 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-11084 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-11300 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-12266 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-13651 a {
	color: var( --e-global-color-5995834 ) !important;
}

/* ---------------------------------------------------------------------------
   5f. LINKS INSIDE THE RE-PINNED BANDS.

   5b and 5e both repair a link by giving it the ink global — which is right on
   the page surface and WRONG inside the bands re-pinned in section 3. There
   5995834 has been redefined to mean "the dark band surface" (#232320), so
   handing a link that variable paints it the colour of the thing behind it. On
   /writing/fitflop-redesign/ the "Read more here" link came out at exactly
   1.00:1 that way — invisible, repaired into a different kind of invisible.

   Every group in section 3 re-pins 7b7791b to the light content colour, which
   is precisely "text that rides on this band". So that is what a link in one
   should take. The list is section 3's own, all five groups.

   Note the doubled `.elementor-element.elementor-element-X` — it is not
   redundant. 5b is written that way, which makes it (0,4,3); a single band class
   only reaches (0,3,3) and loses, so this block was written once the short way
   and did nothing at all. Matching the doubled form ties the two, and being
   later in the file is then what wins it. Keep this block below 5b and 5e.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-806258d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-cb26748 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ef8ebbd a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e367d5d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-7194 .elementor-element.elementor-element-44f045f a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-fdf9f72 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-4d56d5e a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-91303e0 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-99e966a a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-56d0b93 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-8790635 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-ca511e9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-4742 .elementor-element.elementor-element-5ad623d a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-7868640 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6857d76 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-c6aaf77 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-b37b3a9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-323a01f a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6d8fea9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-80f795c a {
	color: var( --e-global-color-7b7791b ) !important;
}

/* ---------------------------------------------------------------------------
   5g. LIGHT ISLANDS — where a link must stay DARK.

   The three role cards on /writing/adora-health/ ("Select from one of the roles
   …") are deliberately light in BOTH themes: 5c lists them among the components
   meant to stay a light island, and the page's own CSS says as much with
   `.toggle-button a { color: black !important }`.

   Every repair rule above therefore gets them exactly wrong. 5b hands the link
   the ink global, which outside a re-pinned band is #F2F0EB; 5f hands it
   7b7791b, which Group E re-pins to #F2F0EB as well. Both paint light text on a
   light card — the cards rendered completely blank, at 1.00:1.

   This is the general hazard with the 5b/5e/5f family: they assume a link sits
   on the page surface. Anything that keeps its own light surface has to be
   named. Hooked on .toggle-button as well as the widget ids so it survives an
   id change.

   (0,4,3) ties with 5b and 5f, so like 5f this must stay BELOW them.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .toggle-button a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-323a01f a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-6d8fea9 a,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-80f795c a {
	color: #1E1E1E !important;
}

/* ---------------------------------------------------------------------------
   5h. HARDCODED TEXT COLOURS IN ESSENTIAL ADDONS WIDGETS.

   Everything above deals with LINKS. This deals with body copy, which had the
   same disease and no cure: EAEL writes its text colours into the generated CSS
   as literal greys — #292929 testimonial quote, #272727 attribution, #333333
   timeline paragraph, #303e49 timeline title, #4d4d4d date, #444444 gallery
   caption — so they sit outside the palette entirely and stay dark when the
   surface under them goes dark. On /writing/power2change/ that was twenty
   elements at 1.2:1, including the whole design-journey timeline.

   Keyed on the EAEL component classes rather than the widget ids that own them.
   The scan (every file in uploads/elementor/css) found these same literals
   repeated across 2933 / 5524 / 9952 / 6116 / 7194 / 10979 with a different
   widget id each time — the id is just where the widget happens to sit, the
   class is what the colour actually belongs to. Keying on the class covers the
   pages that have not regenerated their CSS yet, and any future copy.

   !important is what wins this: EAEL's rules are (0,4,1) and carry none, while
   these are (0,3,3) and would otherwise lose.

   Mapped to MEANING, not to one flat colour: quotes and titles take the ink
   global, attribution/date/caption take the soft-body global, so the original
   typographic hierarchy survives the flip instead of being flattened.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] body.elementor-kit-6 .eael-testimonial-text,
html[data-theme="dark"] body.elementor-kit-6 .eael-testimonial-content .eael-testimonial-text,
html[data-theme="dark"] body.elementor-kit-6 .eael-timeline-title,
html[data-theme="dark"] body.elementor-kit-6 .eael-timeline-title a,
html[data-theme="dark"] body.elementor-kit-6 .eael-horizontal-timeline-item__card-title,
html[data-theme="dark"] body.elementor-kit-6 .eael-horizontal-timeline-item__card-title a,
html[data-theme="dark"] body.elementor-kit-6 .eael-entry-title a,
html[data-theme="dark"] body.elementor-kit-6 .eael-feature-list-title,
html[data-theme="dark"] body.elementor-kit-6 .eael-feature-list-title:visited {
	color: var( --e-global-color-5995834 ) !important;
}

html[data-theme="dark"] body.elementor-kit-6 .eael-testimonial-user,
html[data-theme="dark"] body.elementor-kit-6 .eael-testimonial-user-company,
html[data-theme="dark"] body.elementor-kit-6 .eael-content-timeline-content p,
html[data-theme="dark"] body.elementor-kit-6 .eael-content-timeline-content .eael-date,
html[data-theme="dark"] body.elementor-kit-6 .eael-horizontal-timeline-item__card-inner p,
html[data-theme="dark"] body.elementor-kit-6 .eael-horizontal-timeline-item__meta,
html[data-theme="dark"] body.elementor-kit-6 .eael-filter-gallery-container .item-content p,
html[data-theme="dark"] body.elementor-kit-6 .eael-filter-gallery-container .item-content .eael_post_excerpt_read_more,
html[data-theme="dark"] body.elementor-kit-6 .eael-filter-gallery-control ul li.control,
html[data-theme="dark"] body.elementor-kit-6 .gallery-item-caption-wrap .fg-item-content {
	color: var( --e-global-color-edfd22a ) !important;
}

/* ---------------------------------------------------------------------------
   5c. Essential Addons post grids + literal light panels.

   EAEL ships its own generated stylesheet per page
   (uploads/essential-addons-elementor/eael-<id>.css) that contains ZERO global
   variables — plain `#fff` cards on `#f0f0f0` thumbnails — so nothing in the
   palette flip can reach it. Elementor also re-states the card colour per page
   at (0,4,0), which is why these use !important rather than a longer selector.

   The panel list is the literal-light half of the same CSS scan that produced
   the re-pins: backgrounds written as a hex rather than a global, so they stay
   light when everything around them goes dark. Two kinds are deliberately
   absent — sections already covered by an opaque .elementor-background-overlay
   (the homepage hero, 8036091, repaints itself correctly), and components that
   are meant to stay a light island in both themes (the 10331 toggle buttons,
   the EAEL table-of-contents close button).

   Several of these panels carry `!important` in their own per-widget CSS, so
   !important alone does not settle it — the long prefix is what wins, at (0,4,2)
   against their (0,3,0).

   Membership is decided by LUMINANCE, not by matching a list of hex values. An
   enumerated list (#fff, #f3f3f3, …) kept missing things — `#FFFBE5` on the
   workshop page and `#d7e4ed` on 5524 are both plainly light panels that no
   sensible enumeration would have caught. Anything above 0.55 relative
   luminance qualifies, EXCEPT the brand yellow, which stays yellow and takes
   dark text from the accent block instead.

   The selectors are copied verbatim from the generated CSS rather than rebuilt
   from element ids. Elementor often paints a column's background on a CHILD —
   `...elementor-element-XXXX:not(...) > .elementor-widget-wrap` — and plugins
   paint theirs on a descendant like `.eael-grid-post-holder`, so a rule aimed at
   `.elementor-element-XXXX` itself misses the element actually carrying the fill.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .eael-post-block-item {
	background-color: #232320 !important;
}

html[data-theme="dark"] .eael-post-block-item .eael-entry-thumbnail {
	background-color: #2C2C29 !important;
}

html[data-theme="dark"] .eael-post-block-item .eael-entry-title a,
html[data-theme="dark"] .eael-post-block-item .eael-grid-post-excerpt,
html[data-theme="dark"] .eael-post-block-item .eael-grid-post-excerpt p,
html[data-theme="dark"] .eael-grid-post-holder,
html[data-theme="dark"] .eael-grid-post-holder .eael-entry-title,
html[data-theme="dark"] .eael-grid-post-holder .eael-entry-title a,
html[data-theme="dark"] .eael-grid-post-holder .eael-grid-post-excerpt,
html[data-theme="dark"] .eael-grid-post-holder .eael-grid-post-excerpt p,
html[data-theme="dark"] .eael-grid-post-holder .eael-entry-meta,
html[data-theme="dark"] .eael-grid-post-holder .eael-entry-meta a {
	color: #F2F0EB !important;
}

/* Qi Addons' boxed blog-list card is a plain #fff straight from the plugin
   stylesheet (main.min.css), outside the Elementor global system entirely. */
html[data-theme="dark"] .qodef-addons-blog-list.qodef-item-layout--boxed .qodef-e-inner {
	background-color: #232320;
}

/* Qi's info cards keep a literal #F9F9F9 surface that no variable reaches, so
   they stay a light island in dark mode — which is fine, and is how 5c already
   treats the ones it knows about, pinning their text dark by widget id.

   The trouble was that only SOME of them are in that list. The rest let their
   text inherit, so it flipped light and disappeared on the near-white card
   (1.08:1 on /convert-visitors-to-customers/). Darkening the card instead was
   tried first and is wrong: it fixes those and immediately breaks every card 5c
   had already pinned dark, at 1.06:1. Keep the card light — the design intends
   it — and pin the text dark for ALL of them, by component class rather than by
   widget id so the two groups stop disagreeing. */
/* The category/date meta on a Qi blog card is #111111 straight from the plugin,
   and unlike the card's title and excerpt it is not drawn from any global — so
   the card goes dark around it and the label stays black on it, at 1.05:1. Given
   the soft-body colour it reads as the secondary line it is meant to be.
   Scoped to dark only: in light mode this label sits on a white card and is
   already correct, so nothing there changes. */
html[data-theme="dark"] .qodef-blog-item .qodef-e-info .qodef-e-info-item,
html[data-theme="dark"] .qodef-blog-item .qodef-e-info .qodef-e-info-item a {
	color: var( --e-global-color-edfd22a ) !important;
}

html[data-theme="dark"] .qodef-qi-info-cards .qodef-m-title,
html[data-theme="dark"] .qodef-qi-info-cards .qodef-m-title a,
html[data-theme="dark"] .qodef-qi-info-cards .qodef-m-subtitle,
html[data-theme="dark"] .qodef-qi-info-cards .qodef-m-text {
	color: #1E1E1E !important;
}


/* A card that paints from 7b7791b while sitting INSIDE a re-pinned band is the
   one case the band re-pin gets wrong: there 7b7791b means "the light content
   colour", so the card turns light while its text keeps inheriting light too.
   Give that card its own raised dark surface instead. */
html[data-theme="dark"] .elementor-element-6df7426 {   /* loop 12948 testimonial */
	--e-global-color-7b7791b: #2C2C29;
}

html[data-theme="dark"] .VideoClass,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-26fa84d > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-26fa84d:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d82c5e1 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-d82c5e1:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap,
html[data-theme="dark"] .elementor-10979 .elementor-element.elementor-element-e94b348 .eael-grid-post-holder,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-6a0bea6,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-ad43b00,
html[data-theme="dark"] .elementor-11200 .elementor-element.elementor-element-f0ef5ee .elementor-icon-box-icon a,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-1c702bf .elementor-icon-box-icon a,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-edfa82a,
html[data-theme="dark"] .elementor-12093 .elementor-element.elementor-element-eff9209,
html[data-theme="dark"] .elementor-13246 .elementor-element.elementor-element-90489e5,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-content-timeline-line,
html[data-theme="dark"] .elementor-5524 .elementor-element.elementor-element-c6aaf77 .eael-horizontal-timeline__line,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-4e60ec6 .eael-filter-gallery-container.eael-cards .item-content,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-4e60ec6 .eael-filter-gallery-wrapper,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-b37b3a9 .eael-post-block-item,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-ce9b878 > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-ce9b878:not(.elementor-motion-effects-element-type-background),
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 .sub-menu,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown .menu-item a.hfe-menu-item,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown .menu-item a.hfe-sub-menu-item,
html[data-theme="dark"] .elementor-882 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown-expandible,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-31e9c33 > .elementor-widget-wrap > .elementor-motion-effects-container > .elementor-motion-effects-layer,
html[data-theme="dark"] .elementor-9952 .elementor-element.elementor-element-31e9c33:not(.elementor-motion-effects-element-type-background) > .elementor-widget-wrap,
html[data-theme="dark"] .elementor-kit-6 e-page-transition,
html[data-theme="dark"] .elementor-posts--skin-classic .elementor-post,
html[data-theme="dark"] body.elementor-page-4996 .eael-toc .eael-toc-body,
html[data-theme="dark"] body.elementor-page-5524 .eael-toc .eael-toc-body,
html[data-theme="dark"] body.elementor-page-5840 .eael-toc .eael-toc-body,
html[data-theme="dark"] body.elementor-page-7194 .eael-toc .eael-toc-body {
	background-color: #232320 !important;
}

/* The one light background that is a GRADIENT, not a flat fill: the case-studies
   logo carousel's edge fade, which has to match the strip behind it. Replacing it
   with a flat colour would remove the fade, so the stops are restated dark. */
html[data-theme="dark"] .elementor-6116 .elementor-element.elementor-element-73f7b49::before {
	background-image: linear-gradient( to right, #232320 0%, transparent 25%, transparent 75%, #232320 100% ) !important;
}

/* ---------------------------------------------------------------------------
   6. Forms (Contact Form 7, styled through Qi's contact-form widget).

   `color-scheme: dark` fixes the browser's own control chrome but not these:
   the fields take their background from Elementor at (0,4,0) — and on the
   contact page that rule sits INSIDE a re-pinned band, where 7b7791b has become
   the light content colour, so the inputs come out pale. !important rather than
   an ever-longer selector, since the plugin side carries none.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .wpcf7 input[type="text"],
html[data-theme="dark"] .wpcf7 input[type="email"],
html[data-theme="dark"] .wpcf7 input[type="tel"],
html[data-theme="dark"] .wpcf7 input[type="url"],
html[data-theme="dark"] .wpcf7 input[type="number"],
html[data-theme="dark"] .wpcf7 input[type="date"],
html[data-theme="dark"] .wpcf7 textarea,
html[data-theme="dark"] .wpcf7 select,
html[data-theme="dark"] .elementor-field-textual {
	background-color: #232320 !important;
	color: #F2F0EB !important;
	border-color: #3A3A36 !important;
}

html[data-theme="dark"] .wpcf7 ::placeholder,
html[data-theme="dark"] .elementor-field-textual::placeholder {
	color: #98968F !important;
	opacity: 1;
}

/* Field labels ride the band's text colour, which a re-pin can turn dark. */
html[data-theme="dark"] .wpcf7 label,
html[data-theme="dark"] .qodef-qi-contact-form-7 label,
html[data-theme="dark"] .qodef-qi-contact-form-7 p {
	color: #F2F0EB !important;
}

html[data-theme="dark"] .wpcf7-not-valid-tip {
	color: #FFB4A8 !important;
}

html[data-theme="dark"] .wpcf7-response-output {
	color: #F2F0EB;
	border-color: #3A3A36;
}

/* ---------------------------------------------------------------------------
   7. Mobile full-screen menu (full-screen-menu-for-elementor). Its overlay
   colours are plugin defaults, outside the Elementor global system.
   --------------------------------------------------------------------------- */
/* The desktop "Services" dropdown hardcodes a white panel in template 882
   (`... .sub-menu { background-color:#fff }`, (0,3,0)). Its links already take
   the ink global, so they flip light and would land on white. Darkening the
   panel is the whole fix. */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e76e607 .sub-menu,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown,
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-e76e607 nav.hfe-dropdown-expandible {
	background-color: #232320;
}

html[data-theme="dark"] .menu-overlay,
html[data-theme="dark"] .content-type-menu {
	background-color: #171715;
}

html[data-theme="dark"] .menu-overlay a,
html[data-theme="dark"] #menu-main-menu a {
	color: #F2F0EB;
}

/* ---------------------------------------------------------------------------
   8. Images. CSS filters do NOT compose across rules — the winning rule's
   filter is the only one applied — so the broad dimming below sits at low
   specificity and every logo rule out-specifies it.
   --------------------------------------------------------------------------- */

/* Photographs: take the glare off without visibly greying them. */
html[data-theme="dark"] img {
	filter: brightness( 0.88 );
}

/* Monochrome marks that are black-on-transparent: invert so they read. */
html[data-theme="dark"] img[src*="substack"],
html[data-theme="dark"] img[src*="national-highways"] {
	filter: invert( 1 );
}

/* Client logos coming out of the child theme's [acf_image_url] shortcode.
   These are supplied as dark-on-transparent artwork, so on a dark page they are
   black on near-black — the Ofgem and Beauty Pie marks in the case-study list
   measured 1.33:1 and 1.08:1, i.e. invisible.

   Matched on the FIELD NAME, which acf_image_by_id() now stamps into the class,
   because the same shortcode also renders testimonial `avatar` photos and
   inverting a person's face would be grotesque. The substring match means any
   future field named brand-something or logo-something is covered on its own;
   anything else is left alone deliberately.

   Flattened to white rather than merely inverted so that colour marks come out
   as clean silhouettes, matching how the homepage carousel logos are treated.

   !important is required, not defensive: the Career Timeline loop template
   paints its logos `.elementor-13246 .elementor-element.elementor-element-77b4012
   img { filter: grayscale(100%) !important }` (0,3,1), which is right in light
   mode and leaves eleven black-on-black marks in dark. This selector is (0,3,3),
   so it out-specifies that — but only once it carries !important too. */
html[data-theme="dark"] body.elementor-kit-6 img[class*="dh-acf-image--brand"],
html[data-theme="dark"] body.elementor-kit-6 img[class*="dh-acf-image--logo"] {
	filter: brightness( 0 ) invert( 1 ) !important;
}

/* Testimonial headshots. Photographs, so they must NOT be inverted — several are
   dark portraits sitting at about 1.4:1 against the band, which loses the edge
   and leaves the avatar reading as a smudge rather than a person.

   The template already draws the ring that would fix it — the loop paints
   `.elementor-12948 .elementor-element.elementor-element-1f10b48 .avatar-circle
   img { border: 1px solid #1e1e1e !important }` — it is simply near-black, so on
   a dark page it is invisible. Recolouring that border is the honest fix; adding
   a box-shadow on top would have replaced the template's own hard shadow, since
   box-shadow does not accumulate across rules.

   Specificity: the template rule is (0,4,1) !important, so this matches on
   .avatar-circle to reach (0,4,3) and carries !important to compete. */
html[data-theme="dark"] body.elementor-kit-6 .avatar-circle img.dh-acf-image--avatar {
	border-color: rgba( 242, 240, 235, 0.28 ) !important;
}

/* The client-logo carousels. Elementor flattens these to a BLACK silhouette in
   light mode (`filter: brightness(0) invert(0)`), which reads fine on the light
   grey band — but that band is a surface variable, so in dark mode it becomes
   #232320 and thirty logos turn into black on near-black. Flipping the invert
   produces the same silhouette in white; no new image assets needed.

   Keyed on the Essential Addons carousel class rather than the widget id. It was
   the id at first, which covered the homepage (a062e0b) and silently missed the
   identical carousel on /case-studies/ (bf357b4) — scanning the generated CSS for
   `invert(0)` turned both up. The class covers any future carousel too.
   Assumes these carousels sit on a surface band, which both currently do; one
   dropped onto the accent yellow would need the black silhouette kept.

   !important is load-bearing: Elementor generates its rule at
   `.elementor-6116 .elementor-element.elementor-element-bf357b4 img` (0,3,1), so
   this has to both out-specify it AND match its !important. */
html[data-theme="dark"] body.elementor-kit-6 img.eael-lc-img-src {
	filter: brightness( 0 ) invert( 1 ) !important;
}

/* Qi main images are forced white kit-wide with !important, which is correct on
   a dark page — restated only so the dimming rule above cannot claim them. */
html[data-theme="dark"] .qodef-e-main-image {
	filter: brightness( 0 ) invert( 1 ) !important;
}

/* The homepage hero is a cut-out that ALREADY carries its own fade to
   transparency (max alpha 227/255, ramping to nothing at the bottom), so the
   blanket photo-dimming above works against it and renders it fainter than the
   artwork. Show it as authored — the fade is the design.

   This used to restate `opacity: 1` as well, to undo the widget's own 0.9. That
   0.9 has since been removed at source (the `opacity` setting on widget
   50d386ad in post 5934), so the image is now full strength in BOTH themes and
   the declaration would be a no-op. Only the filter exemption is still needed. */
html[data-theme="dark"] body.elementor-kit-6 .elementor-element.elementor-element-50d386ad img {
	filter: none;
}

/* Elementor icon SVGs follow text colour, so leave their rendering alone. */
html[data-theme="dark"] .elementor-icon svg,
html[data-theme="dark"] .dh-theme-toggle svg {
	filter: none;
}

/* ---------------------------------------------------------------------------
   8b. Shape dividers (the torn/wave edges between bands).
   A divider is painted in the colour of the surface it blends INTO, so in light
   mode almost all of them are #FFFFFF standing in for the page. Those need the
   dark page colour. The handful drawn from a global variable have already
   flipped correctly, and re-stating #171715 on them is a no-op.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .elementor-shape .elementor-shape-fill {
	fill: #171715;
}

/* Dividers belonging to a RE-PINNED band need saying twice. Elementor draws them
   from 7b7791b, which inside those bands has been re-pinned to mean "light text"
   — but on a divider that same variable means "the page showing through", so it
   has to come back to the page colour.
   !important is required, not stylistic: Elementor emits
   `.elementor-978 .elementor-element.elementor-element-806258d > .elementor-shape-top
   .elementor-shape-fill` at (0,5,0), which outranks any [data-theme] selector. */
html[data-theme="dark"] .elementor-element-806258d .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-cb26748 .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-ef8ebbd .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-e367d5d .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-44f045f .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-5ad623d .elementor-shape-fill,
html[data-theme="dark"] .elementor-element-6857d76 .elementor-shape-fill {
	fill: #171715 !important;
}

/* ---------------------------------------------------------------------------
   9. Essential Addons table of contents. This widget family generates its own
   stylesheet (uploads/essential-addons-elementor/eael-*.css) with zero global
   variables — #ff7d50 is simply the plugin's out-of-the-box orange.
   --------------------------------------------------------------------------- */
html[data-theme="dark"] .eael-toc,
html[data-theme="dark"] .eael-toc-list {
	background-color: #232320;
	color: #F2F0EB;
	border-color: #3A3A36;
}

html[data-theme="dark"] .eael-toc a,
html[data-theme="dark"] .eael-toc-list a {
	color: #F2F0EB;
}

html[data-theme="dark"] .eael-toc a:hover,
html[data-theme="dark"] .eael-toc-list a:hover {
	color: #FFD900;
}

/* ---------------------------------------------------------------------------
   10. The flip itself. Only while .dh-anim is on <html> — a permanent
   transition on every element would make ordinary hovers feel laggy.
   --------------------------------------------------------------------------- */
html.dh-anim,
html.dh-anim *:not(svg):not(path) {
	transition:
		background-color 0.18s ease,
		border-color 0.18s ease,
		color 0.18s ease,
		fill 0.18s ease,
		filter 0.18s ease;
}

@media ( prefers-reduced-motion: reduce ) {
	html.dh-anim,
	html.dh-anim * {
		transition: none !important;
	}
}

} /* end @media screen */
