/**
 * Elementor alignment layer — typography (Task 2A).
 *
 * Applies the HAP type system to Elementor page and post content only.
 * Header, footer, popups, navigation, spacing, layout and component titles
 * (icon boxes, post cards, custom-HTML blocks) are out of scope and
 * untouched. Colours, buttons and links: ui.css (Task 2B).
 *
 * Two layers (full matrix in docs/typography.md):
 *
 *   1. SYSTEM DEFAULTS — replace Elementor's global typography (Theme Style,
 *      Global Fonts widget defaults, the heading line-height default).
 *      Any typography set on an individual widget still wins over these.
 *
 *   2. TRANSITIONAL OVERRIDES — named widgets whose own Style-tab settings
 *      conflict with the system (e.g. weight 800, forced uppercase). They
 *      outrank Elementor's per-widget selector (0,4,0) with one extra class
 *      (0,5,0). No !important is used. Each rule is removed once its widget
 *      is reset to the global design system in Elementor.
 */

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

/* Body copy: set on the document so widgets inherit it. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) {
	font-size: var(--hap-fs-body);
	line-height: var(--hap-lh-body);
}

/* Running text is Open Sans (a direct rule beats an inherited font). */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor :is(p, li, blockquote) {
	font-family: var(--hap-font-body);
}

/* Theme Style forces every H2 to uppercase. Beats `.elementor-kit-N h2`. */
:root :is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) h2 {
	text-transform: none;
}

/* Heading widget. Beats `.elementor-widget-heading .elementor-heading-title`
   (Global Fonts: Montserrat 800), Theme Style and `line-height: 1`. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading :is(h1, h2, h3, h4).elementor-heading-title {
	font-family: var(--hap-font-display);
	font-weight: var(--hap-font-weight-semibold);
	letter-spacing: var(--hap-tracking-heading);
	line-height: var(--hap-lh-heading);
	text-transform: none;
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading h1.elementor-heading-title {
	font-size: var(--hap-fs-h1);
	font-weight: var(--hap-font-weight-bold);
	line-height: var(--hap-lh-display);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading h2.elementor-heading-title { font-size: var(--hap-fs-h2); }
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading h3.elementor-heading-title { font-size: var(--hap-fs-h3); }
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-heading h4.elementor-heading-title { font-size: var(--hap-fs-h4); }

/* Headings inside rich text (Text Editor). Beats Hello's h1–h6 defaults
   (inherited Open Sans, 500) and Theme Style. H5/H6 are out of scope. */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor :is(h1, h2, h3, h4) {
	font-family: var(--hap-font-display);
	font-weight: var(--hap-font-weight-semibold);
	letter-spacing: var(--hap-tracking-heading);
	line-height: var(--hap-lh-heading);
	text-transform: none;
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor h1 {
	font-size: var(--hap-fs-h1);
	font-weight: var(--hap-font-weight-bold);
	line-height: var(--hap-lh-display);
}
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor h2 { font-size: var(--hap-fs-h2); }
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor h3 { font-size: var(--hap-fs-h3); }
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-text-editor h4 { font-size: var(--hap-fs-h4); }

/* Eyebrow / section label (Divider widget text): the only uppercase style
   in page content. Beats the widget default (Secondary global, Open Sans). */
:is([data-elementor-type="wp-page"], [data-elementor-type="wp-post"]) .elementor-widget-divider .elementor-divider__text {
	font-family: var(--hap-font-ui);
	font-size: var(--hap-fs-eyebrow);
	font-weight: var(--hap-font-weight-semibold);
	letter-spacing: var(--hap-tracking-eyebrow);
	text-transform: uppercase;
}

/* ==================================================================
 * 2. TRANSITIONAL OVERRIDES
 * Selector pattern: `.elementor-{page} .elementor-element.elementor-element-{id}.elementor-widget-{type} …`
 * Each block names the Elementor setting it defeats. Delete the block
 * once that widget's typography is reset in Elementor (docs/typography.md,
 * "Transitional overrides"). Sizes set on these widgets are left alone.
 * ================================================================== */

/* T1 — Home hero H1. Defeats: weight 800, uppercase. */
.elementor-14 .elementor-element.elementor-element-f39c252.elementor-widget-heading .elementor-heading-title {
	font-weight: var(--hap-font-weight-bold);
	text-transform: none;
}

/* T2 — Contact Us, "Prefer to Reach Out Directly?" H4. Defeats: weight 800, uppercase. */
.elementor-640 .elementor-element.elementor-element-85bce0e.elementor-widget-heading .elementor-heading-title {
	font-weight: var(--hap-font-weight-semibold);
	text-transform: none;
}

/* T3 — Insights, "Insights That Drive Scalable Growth…" H2. Defeats: weight 800. */
.elementor-712 .elementor-element.elementor-element-a2a0127.elementor-widget-heading .elementor-heading-title,
/* T4 — Article "How PE Firms Can Avoid…", title H2. Defeats: weight 800. */
.elementor-729 .elementor-element.elementor-element-36f4ae7.elementor-widget-heading .elementor-heading-title,
/* T5 — Same article, "How We Approach It…" H3. Defeats: weight 800. */
.elementor-729 .elementor-element.elementor-element-ac4aee9.elementor-widget-heading .elementor-heading-title,
/* T6 — Article "Paid Media Post-Close…", "Ready to build the system…" H3.
   Defeats: weight bound to the Primary global (800). Also resolved by
   setting Global Fonts → Primary to 600. */
.elementor-759 .elementor-element.elementor-element-36b46c2.elementor-widget-heading .elementor-heading-title {
	font-weight: var(--hap-font-weight-semibold);
}

/* T7 — Eyebrow dividers (17). Defeats: Open Sans 14px, weight 500,
   2.2px tracking. */
.elementor-14 .elementor-element.elementor-element-1e55f75.elementor-widget-divider .elementor-divider__text,
.elementor-14 .elementor-element.elementor-element-b50c801.elementor-widget-divider .elementor-divider__text,
.elementor-14 .elementor-element.elementor-element-b17d9bd.elementor-widget-divider .elementor-divider__text,
.elementor-14 .elementor-element.elementor-element-75f904b.elementor-widget-divider .elementor-divider__text,
.elementor-15 .elementor-element.elementor-element-c0dc383.elementor-widget-divider .elementor-divider__text,
.elementor-15 .elementor-element.elementor-element-f97916f.elementor-widget-divider .elementor-divider__text,
.elementor-15 .elementor-element.elementor-element-05c34f0.elementor-widget-divider .elementor-divider__text,
.elementor-15 .elementor-element.elementor-element-8849097.elementor-widget-divider .elementor-divider__text,
.elementor-16 .elementor-element.elementor-element-7f10904.elementor-widget-divider .elementor-divider__text,
.elementor-282 .elementor-element.elementor-element-d3f865a.elementor-widget-divider .elementor-divider__text,
.elementor-282 .elementor-element.elementor-element-8c5c846.elementor-widget-divider .elementor-divider__text,
.elementor-282 .elementor-element.elementor-element-85d9007.elementor-widget-divider .elementor-divider__text,
.elementor-539 .elementor-element.elementor-element-d9aff7a.elementor-widget-divider .elementor-divider__text,
.elementor-841 .elementor-element.elementor-element-d3f865a.elementor-widget-divider .elementor-divider__text,
.elementor-841 .elementor-element.elementor-element-8c5c846.elementor-widget-divider .elementor-divider__text,
.elementor-841 .elementor-element.elementor-element-85d9007.elementor-widget-divider .elementor-divider__text,
.elementor-853 .elementor-element.elementor-element-d3f865a.elementor-widget-divider .elementor-divider__text {
	font-family: var(--hap-font-ui);
	font-size: var(--hap-fs-eyebrow);
	font-weight: var(--hap-font-weight-semibold);
	letter-spacing: var(--hap-tracking-eyebrow);
}
