/**
 * Elementor alignment layer — brand UI (Task 2B).
 *
 * Colour, buttons, text links, rules and surfaces for Elementor page and
 * post content. Typography stays in elementor.css; header, footer and
 * popups are untouched. No widths, spacing or layout.
 *
 * Three layers (full register in docs/brand-ui.md):
 *
 *   1. SYSTEM DEFAULTS — replace Elementor's global colour, button and
 *      link defaults inside page/post documents. Anything set on an
 *      individual widget still wins over these.
 *
 *   2. VARIANTS — button and surface treatments applied by adding a CSS
 *      class to a widget or container in Elementor (Advanced → CSS
 *      Classes): hap-btn-secondary, hap-btn-inverse, hap-btn-text,
 *      hap-surface-ink.
 *
 *   3. TRANSITIONAL OVERRIDES (B1–B9) — named widgets whose own Style-tab
 *      colours conflict with the system. Each is listed next to the variant
 *      it should become, and outranks Elementor's per-widget selector with
 *      one extra class. No !important is used. Delete a selector once its
 *      widget is reset in Elementor and given the variant class.
 */

/* ==================================================================
 * 1. SYSTEM DEFAULTS
 * Page/post content documents only. :is() counts as one class.
 * ================================================================== */

/* Content colour. Elementor's global colours are custom properties set on
   <body>; redefining two of them on the document changes them for page
   content only. Remove once Site Settings → Global Colors match the tokens:
   Text #353535 → #2B3040, custom "Light Gray" #F7FAFC → #F5F7F9. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) {
	color: var(--hap-color-text);
	--e-global-color-text: var(--hap-color-text);
	--e-global-color-cd2c6aa: var(--hap-color-surface-alt);
}

/* Primary button: solid ink, sentence case, 48px minimum.
   Beats the kit (`.elementor-kit-N .elementor-button`, 0,2,0) and the
   Button widget default (0,2,0). */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-button .elementor-button,
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-form .elementor-button[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: var(--hap-btn-min-height);
	padding: var(--hap-btn-padding);
	border: var(--hap-btn-border-width) solid var(--hap-btn-primary-bg);
	border-radius: var(--hap-btn-radius);
	background-color: var(--hap-btn-primary-bg);
	color: var(--hap-btn-primary-fg);
	fill: currentColor;
	font-family: var(--hap-btn-font-family);
	font-size: var(--hap-btn-font-size);
	font-weight: var(--hap-btn-font-weight);
	letter-spacing: var(--hap-btn-tracking);
	line-height: var(--hap-lh-ui);
	text-transform: none;
	transition: background-color var(--hap-duration-fast) var(--hap-ease),
		border-color var(--hap-duration-fast) var(--hap-ease),
		color var(--hap-duration-fast) var(--hap-ease);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-button .elementor-button:hover,
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-form .elementor-button[type="submit"]:hover {
	border-color: var(--hap-btn-primary-bg-hover);
	background-color: var(--hap-btn-primary-bg-hover);
	color: var(--hap-btn-primary-fg-hover);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) :is(.elementor-widget-button, .elementor-widget-form) .elementor-button svg {
	fill: currentColor;
}

/* Keyboard focus. Elementor removes the outline on buttons. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) :is(.elementor-widget-button, .elementor-widget-form) .elementor-button:focus-visible {
	outline: var(--hap-focus-ring);
	outline-offset: var(--hap-focus-offset);
}

/* Links in running text: accent, underlined. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) :is(.elementor-widget-text-editor, .elementor-widget-theme-post-content) a:not(.elementor-button) {
	color: var(--hap-link);
	text-decoration: underline;
	text-decoration-thickness: var(--hap-link-underline-thickness);
	text-underline-offset: var(--hap-link-underline-offset);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) :is(.elementor-widget-text-editor, .elementor-widget-theme-post-content) a:not(.elementor-button):hover {
	color: var(--hap-link-hover);
	text-decoration-thickness: 2px;
}

/* Posts widget (Insights cards): hairline card instead of Elementor's
   drop shadow; readable metadata and excerpt; text-link "Read more". */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__card {
	border: var(--hap-rule);
	border-radius: var(--hap-radius-sm);
	box-shadow: none;
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__meta-data {
	border-top-color: var(--hap-color-rule);
	color: var(--hap-color-text-muted);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__excerpt p {
	color: var(--hap-color-text-muted);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__title a:hover {
	color: var(--hap-color-accent-strong);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__read-more {
	color: var(--hap-btn-text-fg);
	font-family: var(--hap-btn-font-family);
	font-size: var(--hap-btn-font-size);
	font-weight: var(--hap-btn-font-weight);
	letter-spacing: var(--hap-btn-tracking);
	text-transform: none;
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-posts .elementor-post__read-more:hover {
	color: var(--hap-btn-text-fg-hover);
	text-decoration: underline;
	text-underline-offset: var(--hap-link-underline-offset);
}

/* Pagination: links in accent, current page in ink. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-pagination .page-numbers {
	color: var(--hap-link);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-pagination a.page-numbers:hover {
	color: var(--hap-link-hover);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-pagination .page-numbers.current {
	color: var(--hap-color-ink);
	font-weight: var(--hap-font-weight-semibold);
}

/* ==================================================================
 * 2. VARIANTS  +  3. TRANSITIONAL OVERRIDES
 * Each rule lists the class-based variant first, then the named widgets
 * that should receive that class (B-numbers, docs/brand-ui.md).
 * Variant selectors (0,5,0) and override selectors (0,5,0) both beat
 * Elementor's per-widget selector (0,4,0); hover adds one pseudo-class.
 * ================================================================== */

/* Secondary: ink outline on light surfaces. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-secondary .elementor-button,
/* B1 — Home, "See Our Services" (Who we help section). */
.elementor-14 .elementor-element.elementor-element-834c2ac.elementor-widget-button .elementor-button,
/* B2 — About, "See Our Services". */
.elementor-15 .elementor-element.elementor-element-e99ea66.elementor-widget-button .elementor-button {
	border-color: var(--hap-btn-secondary-border);
	background-color: var(--hap-btn-secondary-bg);
	color: var(--hap-btn-secondary-fg);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-secondary .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-834c2ac.elementor-widget-button .elementor-button:hover,
.elementor-15 .elementor-element.elementor-element-e99ea66.elementor-widget-button .elementor-button:hover {
	border-color: var(--hap-btn-secondary-border);
	background-color: var(--hap-btn-secondary-bg-hover);
	color: var(--hap-btn-secondary-fg-hover);
}

/* Inverse: the primary button on an ink band or dark photo. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-inverse .elementor-button,
/* B3 — Home hero, "Book Your Discovery Session".
   Defeats: accent background and border; hover white with black text. */
.elementor-14 .elementor-element.elementor-element-40915aa.elementor-widget-button .elementor-button,
/* B4 — Home closing band (dark photo), "Book Your Discovery Session". */
.elementor-14 .elementor-element.elementor-element-41b0830.elementor-widget-button .elementor-button,
/* B5 — Closing band "Book Your Discovery Session" on Our Services, ABA
   Marketing and PMD Framework (duplicated widget), and Who We Help.
   Defeats: white background, black text; hover Primary. */
.elementor-282 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button,
.elementor-841 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button,
.elementor-853 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button,
.elementor-539 .elementor-element.elementor-element-d1cf0b2.elementor-widget-button .elementor-button {
	border-color: var(--hap-btn-inverse-bg);
	background-color: var(--hap-btn-inverse-bg);
	color: var(--hap-btn-inverse-fg);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-inverse .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-40915aa.elementor-widget-button .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-41b0830.elementor-widget-button .elementor-button:hover,
.elementor-282 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:hover,
.elementor-841 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:hover,
.elementor-853 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:hover,
.elementor-539 .elementor-element.elementor-element-d1cf0b2.elementor-widget-button .elementor-button:hover {
	border-color: var(--hap-btn-inverse-bg-hover);
	background-color: var(--hap-btn-inverse-bg-hover);
	color: var(--hap-btn-inverse-fg-hover);
}
/* Per-widget rules colour the icon directly (fill #000 / #FFF). */
.elementor-14 .elementor-element.elementor-element-40915aa.elementor-widget-button .elementor-button:is(:hover, :focus) svg,
.elementor-282 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:is(:hover, :focus) svg,
.elementor-841 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:is(:hover, :focus) svg,
.elementor-853 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:is(:hover, :focus) svg,
.elementor-539 .elementor-element.elementor-element-d1cf0b2.elementor-widget-button .elementor-button:is(:hover, :focus) svg {
	fill: currentColor;
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-inverse .elementor-button:focus-visible,
.elementor-14 .elementor-element.elementor-element-40915aa.elementor-widget-button .elementor-button:focus-visible,
.elementor-14 .elementor-element.elementor-element-41b0830.elementor-widget-button .elementor-button:focus-visible,
.elementor-282 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:focus-visible,
.elementor-841 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:focus-visible,
.elementor-853 .elementor-element.elementor-element-0bd8d8a.elementor-widget-button .elementor-button:focus-visible,
.elementor-539 .elementor-element.elementor-element-d1cf0b2.elementor-widget-button .elementor-button:focus-visible {
	outline-color: var(--hap-color-focus-inverse);
}

/* Text: understated accent link; keeps the widget's own arrow icon. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-text .elementor-button,
/* B6 — Home service cards, "Learn More" (3).
   Defeats: 2% accent background, zero padding (kept), uppercase. */
.elementor-14 .elementor-element.elementor-element-b73a007.elementor-widget-button .elementor-button,
.elementor-14 .elementor-element.elementor-element-ee3c72a.elementor-widget-button .elementor-button,
.elementor-14 .elementor-element.elementor-element-3350226.elementor-widget-button .elementor-button {
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 0;
	background-color: transparent;
	color: var(--hap-btn-text-fg);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.elementor-widget-button.hap-btn-text .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-b73a007.elementor-widget-button .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-ee3c72a.elementor-widget-button .elementor-button:hover,
.elementor-14 .elementor-element.elementor-element-3350226.elementor-widget-button .elementor-button:hover {
	background-color: transparent;
	color: var(--hap-btn-text-fg-hover);
	text-decoration: underline;
	text-underline-offset: var(--hap-link-underline-offset);
}

/* B7 — Form submit hover. Defeats: hover background Secondary (#1A1F36,
   the same ink as the button), which would make hover invisible. */
.elementor-640 .elementor-element.elementor-element-07a4b3c.elementor-widget-form .elementor-button[type="submit"]:hover,
.elementor-853 .elementor-element.elementor-element-608060a.elementor-widget-form .elementor-button[type="submit"]:hover,
.elementor-16 .elementor-element.elementor-element-6c4334d.elementor-widget-form .elementor-button[type="submit"]:hover {
	background-color: var(--hap-btn-primary-bg-hover);
}

/* Ink surface: replaces the full-width teal bands. Text on them is
   already white. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-element.e-con.hap-surface-ink:not(.elementor-motion-effects-element-type-background),
/* B8 — Teal bands. Defeats: background Accent.
   Closing CTA band on Our Services, ABA Marketing, PMD Framework;
   "Are we a fit" band on Who We Help; intro band on Insights;
   "What's inside" band on PMD Framework. */
.elementor-282 .elementor-element.elementor-element-e97d77e.e-con:not(.elementor-motion-effects-element-type-background),
.elementor-841 .elementor-element.elementor-element-e97d77e.e-con:not(.elementor-motion-effects-element-type-background),
.elementor-853 .elementor-element.elementor-element-e97d77e.e-con:not(.elementor-motion-effects-element-type-background),
.elementor-539 .elementor-element.elementor-element-29f0917.e-con:not(.elementor-motion-effects-element-type-background),
.elementor-712 .elementor-element.elementor-element-ec19611.e-con:not(.elementor-motion-effects-element-type-background),
.elementor-853 .elementor-element.elementor-element-dd4eba1.e-con:not(.elementor-motion-effects-element-type-background) {
	background-color: var(--hap-color-ink);
}

/* Links on ink surfaces: white, underlined. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .e-con.hap-surface-ink .elementor-widget-text-editor a,
/* B9 — PMD Framework, "HAP Insights" link in the navy "Developed by…"
   band. Defeats: Hello's pink link colour on navy (unreadable). */
.elementor-853 .elementor-element.elementor-element-227590b .elementor-widget-text-editor a {
	color: var(--hap-link-inverse);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .e-con.hap-surface-ink .elementor-widget-text-editor a:hover,
.elementor-853 .elementor-element.elementor-element-227590b .elementor-widget-text-editor a:hover {
	color: var(--hap-link-inverse-hover);
}
