/* onebrand Divi 5 Production Base: accessibility and media foundations. */

html {
	scroll-behavior: auto;
}

body {
	overflow-wrap: break-word;
}

/* ==========================================================================
   TYPOGRAPHY ENFORCEMENT SAFETY NET

   Follow the installed bys-typography-standards skill before editing this
   layer. Clear per-module overrides first, synchronize style.css, theme.json,
   Divi Design Variables, and Theme Options, then verify at desktop and mobile.
   These tiers prevent common editor drift. They are not a substitute for the
   Workflow B module sweep.
   ========================================================================== */

/* Tier 1: zero-specificity token defaults. */
:where(h1, h2, h3, h4, h5, h6) {
	font-family: var(--client-font-heading);
}

:where(body, p, li, td, th, label, input, textarea, select, button) {
	font-family: var(--client-font-body);
}

:where(body) {
	font-size: var(--client-text-base);
	line-height: 1.6;
}

:where(h1) {
	font-size: var(--client-text-2xl);
	line-height: 1.15;
}

:where(h2) {
	font-size: var(--client-text-xl);
	line-height: 1.2;
}

:where(h3) {
	font-size: var(--client-text-lg);
	line-height: 1.25;
}

:where(h4, h5, h6) {
	font-size: var(--client-text-base);
	line-height: 1.3;
}

:where(small, figcaption, .wp-caption-text) {
	font-size: var(--client-text-sm);
	line-height: 1.4;
}

/* Tier 2: normal-specificity family enforcement against common Divi output.
   Keep this tier family-only so legitimate module scale choices still work. */
.et_pb_module h1,
.et_pb_module h2,
.et_pb_module h3,
.et_pb_module h4,
.et_pb_module h5,
.et_pb_module h6,
.et_pb_section h1,
.et_pb_section h2,
.et_pb_section h3 {
	font-family: var(--client-font-heading);
}

.et_pb_module,
.et_pb_text,
.et_pb_blurb_description,
.fluentform,
.fluentform .ff-el-form-control {
	font-family: var(--client-font-body);
}

/* Preserve Divi icon glyphs when family enforcement is active. */
.et-pb-icon,
[class*="et_pb_icon"],
.et_pb_module .et-pb-icon::before {
	font-family: ETmodules !important;
}

/* Tier 3: surgical inline-style repair. Important is permitted only because
   inline line-height values cannot otherwise be neutralized. The selectors
   match exact zero values, never 0.9 or another valid ratio. */
.et_pb_module [style*="line-height: 0;"],
.et_pb_module [style*="line-height:0;"],
.et_pb_module [style*="line-height: 0px"],
.et_pb_module [style*="line-height:0px"],
.et_pb_module [style$="line-height: 0"],
.et_pb_module [style$="line-height:0"] {
	line-height: 1.5 !important;
}

/* SVGs that state their own width keep it (2026-10-02, Tony: "fix the error on all sites"): inside a flex row, max-width 100%
   collapsed Fluent's 11px conversational counter arrow to zero width. Images, video and width-less SVGs stay responsive. */
img,
picture,
svg:not([width]),
video {
	max-width: 100%;
}

img,
video {
	height: auto;
}

:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 2px solid var(--client-primary);
	outline-offset: 3px;
	box-shadow: var(--client-focus-ring);
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto !important;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}
