/* ==========================================================================
   Divi Child — Accessibility stylesheet (WCAG 2.1 AA)
   Loaded after Divi + child style.css so selectors here win without !important
   where possible. Where Divi ships inline styles or higher specificity,
   !important is used deliberately — each such rule documents why.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Skip link
   -------------------------------------------------------------------------- */
.divi-child-skip-link {
	position: absolute;
	left: -10000px;
	top: auto;
	width: 1px;
	height: 1px;
	overflow: hidden;
	z-index: 100000;
}

.divi-child-skip-link:focus,
.divi-child-skip-link:focus-visible {
	position: fixed;
	left: 1rem;
	top: 1rem;
	width: auto;
	height: auto;
	padding: 0.75rem 1rem;
	background: #ffffff;
	color: #111111;
	border: 2px solid #111111;
	border-radius: 4px;
	font-weight: 700;
	text-decoration: underline;
	box-shadow: 0 0 0 3px #ffbf47;
	outline: none;
}

/* --------------------------------------------------------------------------
   Focus indicators — Divi removes them in several places. Restore with a
   high-contrast outline that meets 3:1 against all backgrounds on the site.
   Uses :focus-visible so mouse users don't see outlines on click.
   -------------------------------------------------------------------------- */
a:focus,
button:focus,
input:focus,
select:focus,
textarea:focus,
[tabindex]:focus,
summary:focus,
.et_pb_button:focus,
.et_pb_contact_submit:focus,
.et_pb_newsletter_button:focus {
	outline: 2px solid #ffbf47;
	outline-offset: 2px;
}

a:focus:not(:focus-visible),
button:focus:not(:focus-visible),
.et_pb_button:focus:not(:focus-visible) {
	outline: none;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible,
summary:focus-visible,
.et_pb_button:focus-visible,
.et_pb_contact_submit:focus-visible,
.et_pb_newsletter_button:focus-visible,
#main-header .menu-item > a:focus-visible,
#top-menu li a:focus-visible,
.et-social-icon a:focus-visible {
	outline: 3px solid #ffbf47 !important; /* Divi sets outline:none inline on some buttons */
	outline-offset: 2px !important;
	box-shadow: 0 0 0 2px #111111 !important; /* ensures 3:1 against yellow backgrounds */
}

/* --------------------------------------------------------------------------
   Reduced motion — honors user OS preference; Divi's parallax, sliders,
   fades, and scroll effects are visually pleasant but trigger vestibular
   issues. We reset transitions to near-zero and pause autoplay.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}

	.et_pb_slider,
	.et_pb_fullwidth_slider,
	.et_pb_post_slider {
		/* Divi's slider autoplays via JS; JS companion disables autoplay. */
	}

	.et_parallax_bg,
	.et_pb_parallax_css {
		background-attachment: scroll !important;
		transform: none !important;
	}
}

/* --------------------------------------------------------------------------
   Color contrast patches.
   Divi's default button, link, and muted text colors frequently fail 4.5:1.
   We override the common cases. Additional per-section overrides go below.
   -------------------------------------------------------------------------- */

/* Body text — ensure at least 4.5:1 on white */
body,
#main-content,
.entry-content,
.et_pb_text_inner {
	color: #111111;
}

/* Links — Divi default is often too light; ensure sufficient contrast and
   require a non-color affordance (underline) per WCAG 1.4.1 Use of Color. */
a,
.entry-content a,
#main-content a {
	color: #0b5ed7;
	text-decoration: underline;
}

a:hover,
.entry-content a:hover,
#main-content a:hover {
	color: #083e94;
	text-decoration: underline;
}

/* Menu links may legitimately omit underline because list context conveys
   purpose — but keep color contrast strong. */
#top-menu li a,
#main-header .menu-item > a {
	text-decoration: none;
	color: #111111;
}

#top-menu li a:hover,
#main-header .menu-item > a:hover {
	color: #0b5ed7;
	text-decoration: underline;
}

/* Buttons — ensure the default Divi button has >= 4.5:1 text and >= 3:1
   border against its background. */
.et_pb_button,
.et_pb_button:hover {
	color: #ffffff !important;
	background-color: #0b5ed7;
	border-color: #0b5ed7;
}

.et_pb_button:hover {
	background-color: #083e94;
	border-color: #083e94;
}

/* Form placeholder text — Divi uses #999 which fails contrast */
::placeholder {
	color: #595959 !important;
	opacity: 1;
}

/* --------------------------------------------------------------------------
   Menu — keyboard + submenu visibility
   -------------------------------------------------------------------------- */
#top-menu li ul.sub-menu {
	display: none;
}

#top-menu li.menu-item-has-children:hover > ul.sub-menu,
#top-menu li.menu-item-has-children:focus-within > ul.sub-menu,
#top-menu li.menu-item-has-children.divi-child-submenu-open > ul.sub-menu {
	display: block;
}

#top-menu li ul.sub-menu a {
	color: #111111;
	background: #ffffff;
}

#top-menu li ul.sub-menu a:focus-visible,
#top-menu li ul.sub-menu a:hover {
	color: #0b5ed7;
	text-decoration: underline;
	background: #f6f6f6;
}

/* --------------------------------------------------------------------------
   Screen-reader-only utility (for visually-hidden labels we inject)
   -------------------------------------------------------------------------- */
.divi-child-sr-only {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* --------------------------------------------------------------------------
   Decorative images — Divi sometimes inserts empty alt images as section
   dividers; these should already be aria-hidden but we belt-and-braces it.
   -------------------------------------------------------------------------- */
img[alt=""]:not([role]) {
	/* role="presentation" enforced via a11y.js fallback */
}

/* --------------------------------------------------------------------------
   Forms — visible error/required state for Gravity Forms
   -------------------------------------------------------------------------- */
.gfield.gfield_error label,
.gfield_error .gfield_label {
	color: #8b0000;
}

.gfield_required {
	color: #8b0000;
	margin-left: 0.25em;
}

.validation_message {
	color: #8b0000;
	font-weight: 600;
}

/* High-contrast focus for form controls */
.gfield input:focus-visible,
.gfield textarea:focus-visible,
.gfield select:focus-visible,
.et_pb_contact_form input:focus-visible,
.et_pb_contact_form textarea:focus-visible,
.et_pb_contact_form select:focus-visible {
	outline: 3px solid #ffbf47 !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 2px #111111 !important;
}

/* --------------------------------------------------------------------------
   Divi Contact Form — keep labels in the accessibility tree.
   Divi ships .et_pb_contact_form_label { display:none } which hides the
   label from screen readers too. Replace with visually-hidden pattern so
   screen readers still announce the field name.
   -------------------------------------------------------------------------- */
.et_pb_contact_form_label {
	display: block !important;
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	padding: 0 !important;
	margin: -1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* Error messages for Divi contact form — visually prominent */
.et-pb-contact-message p,
.et_contact_error_text {
	color: #8b0000;
	font-weight: 600;
}
