/* ==========================================================================
   Lebenshilfe Herford – Barrierefreiheit (WCAG 2.2 AA)
   Umsetzung Audit 05.11.2026 · snutig GmbH
   Fokusfarbe: Endeavour Dark #005490 (7,86:1 auf Weiß) + weißer Innenring
   ========================================================================== */

:root {
	--lh-focus: #005490;
	--lh-focus-halo: #ffffff;
	--lh-field-border: #7F8284; /* Neutral – 3,87:1 auf Weiß */
	--lh-error: #B3261E;        /* 6,5:1 auf Weiß */
	--lh-header-h: 90px;
}

/* Visuell versteckt, für Screenreader lesbar */
.lh-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;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
	border: 0 !important;
}

/* ---------- K1: Skip-Link + main ---------- */
.lh-skip-link {
	position: fixed;
	left: 1rem;
	top: 1rem;
	z-index: 100001;
	transform: translateY(-200%);
	background: #ffffff;
	color: #001F36;
	padding: .75rem 1.25rem;
	border: 2px solid var(--lh-focus);
	border-radius: .375rem;
	font-family: "Open Sans", sans-serif;
	font-size: 1rem;
	font-weight: 600;
	text-decoration: underline;
	box-shadow: 0 4px 16px rgba(0, 0, 0, .2);
}
.lh-skip-link:focus,
.lh-skip-link:focus-visible {
	transform: none;
	outline: 3px solid var(--lh-focus);
	outline-offset: 2px;
}
main#content { display: block; }
main#content:focus { outline: none; }

/* Anker/Fokus nicht unter dem Sticky-Header verstecken (2.4.11) */
html { scroll-padding-top: calc(var(--lh-header-h) + 16px); }

/* ---------- H7: Sticky-Header ohne Elementor-Klon ---------- */
.elementor-location-header {
	position: sticky;
	top: 0;
	z-index: 99;
}
.admin-bar .elementor-location-header { top: var(--wp-admin--admin-bar--height, 32px); }

/* ---------- Sichtbarer Fokus überall (2.4.7) ---------- */
:where(a, button, input, select, textarea, summary, [tabindex]:not([tabindex="-1"]), [role="button"], [contenteditable="true"]):focus-visible {
	outline: 3px solid var(--lh-focus) !important;
	outline-offset: 2px !important;
	box-shadow: 0 0 0 2px var(--lh-focus-halo) !important;
}
/* Karten-Links (ganze Karte verlinkt) */
a.e-con:focus-visible,
.e-loop-item a:focus-visible {
	outline-offset: 4px !important;
}

/* ---------- H1: Dropdown-Buttons im Mega-Menü sichtbar und groß genug ---------- */
.e-n-menu-title { position: relative; }
.e-n-menu-title > .e-n-menu-dropdown-icon {
	min-width: 24px;
	min-height: 24px;
}
/* Titel ist verlinkt: Pfeil-Symbol gehört optisch zum Toggle-Button */
.e-n-menu-title.lh-has-toggle > .e-n-menu-dropdown-icon {
	position: absolute;
	inset-block: 0;
	inset-inline-end: 0;
	width: var(--lh-toggle-w, 2.25rem);
	background: transparent;
	border: 0;
	padding: 0;
	cursor: pointer;
	border-radius: .375rem;
}

/* ---------- K2: JetSmartFilters-Radios per Tastatur bedienbar ---------- */
.jet-radio-list__item { position: relative; }
.jet-radio-list .jet-radio-list__input {
	display: block !important;
	visibility: visible !important;
	position: absolute !important;
	opacity: 0 !important;
	width: 1px !important;
	height: 1px !important;
	margin: 0 !important;
	left: 0;
	top: 0;
	pointer-events: none;
}
.jet-radio-list .jet-radio-list__input:focus-visible + .jet-radio-list__button {
	outline: 3px solid var(--lh-focus);
	outline-offset: 2px;
	box-shadow: 0 0 0 2px var(--lh-focus-halo);
}
.jet-radio-list fieldset > legend,
.jet-smart-filters-radio fieldset > legend,
fieldset > legend[style*="display:none"],
fieldset > legend[style*="display: none"] {
	display: block !important;
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	clip: rect(0, 0, 0, 0) !important;
	clip-path: inset(50%) !important;
	white-space: nowrap !important;
	padding: 0 !important;
	margin: -1px !important;
	border: 0 !important;
}

/* ---------- H4/H5: Formulare ---------- */
.elementor-form .elementor-field-textual,
.elementor-form textarea.elementor-field,
.elementor-form .elementor-select-wrapper select {
	border-color: var(--lh-field-border) !important;
	border-style: solid !important;
	border-width: 1px !important;
}
.elementor-form .elementor-field-textual:focus,
.elementor-form textarea.elementor-field:focus,
.elementor-form select:focus {
	outline: 3px solid var(--lh-focus) !important;
	outline-offset: 1px !important;
	border-color: var(--lh-focus) !important;
}
.elementor-form input[type="checkbox"],
.elementor-form input[type="radio"] {
	accent-color: #0069B5;
	min-width: 18px;
	min-height: 18px;
}
/* Pflichtfeld-Stern (wird von Screenreadern nicht vorgelesen; aria-required übernimmt das) */
.elementor-form .elementor-field-required > label.elementor-field-label::after,
.elementor-form .elementor-field-required .elementor-field-option label::after {
	content: "\00a0*" / "";
	color: var(--lh-error);
	font-weight: 700;
}
.elementor-form .elementor-mark-required .elementor-field-label::after { content: none; }
.elementor-form .elementor-mark-required .elementor-field-required > label.elementor-field-label::after { content: "\00a0*" / ""; }
.lh-form-hint {
	flex-basis: 100%;
	width: 100%;
	margin: 0 0 .5rem;
	padding-inline: calc(var(--column-gap, 0px) / 2);
	font-size: .875rem;
	line-height: 1.5;
	color: inherit;
}
.lh-form-hint span[aria-hidden] { color: var(--lh-error); font-weight: 700; }
.lh-field-error {
	display: block;
	width: 100%;
	margin-top: .25rem;
	color: var(--lh-error);
	font-size: .875rem;
	font-weight: 600;
	line-height: 1.4;
}
.elementor-form [aria-invalid="true"] {
	border-color: var(--lh-error) !important;
	border-width: 2px !important;
}
/* Mindestgröße 16 px in Eingabefeldern (Newsletter hatte 12 px) */
.elementor-form .elementor-field-textual { font-size: max(1rem, 1em); }

/* ---------- M2: keine automatische Silbentrennung ---------- */
html[lang^="de"] :where(p, li, blockquote, figcaption, dd, h1, h2, h3, h4, h5, h6, .elementor-widget-text-editor, .elementor-heading-title) {
	-webkit-hyphens: manual;
	hyphens: manual;
}

/* ---------- H2: Pause-Button Hero-Video (unten rechts, 44 × 44 px) ---------- */
html body button.lh-video-toggle {
	position: absolute !important;
	right: 1rem;
	bottom: 1rem;
	left: auto;
	top: auto;
	z-index: 20;
	width: 44px !important;
	height: 44px !important;
	min-width: 44px;
	min-height: 44px;
	padding: 0 !important;
	margin: 0 !important;
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	border-radius: 50% !important;
	border: 2px solid #ffffff !important;
	background: rgba(0, 31, 54, .72) !important; /* Endeavour Darkest */
	color: #ffffff !important;
	font-size: 0 !important;
	line-height: 0 !important;
	cursor: pointer;
	opacity: .9;
	box-shadow: 0 2px 8px rgba(0, 0, 0, .25);
	transition: opacity .2s ease, background-color .2s ease;
}
html body button.lh-video-toggle:hover,
html body button.lh-video-toggle:focus-visible { opacity: 1; background: #0069B5 !important; }
html body button.lh-video-toggle svg {
	display: block;
	width: 16px !important;
	height: 16px !important;
	min-width: 16px;
	fill: #ffffff !important;
	pointer-events: none;
}
html body button.lh-video-toggle .lh-icon-play { display: none; }
html body button.lh-video-toggle[aria-pressed="true"] .lh-icon-play { display: block; }
html body button.lh-video-toggle[aria-pressed="true"] .lh-icon-pause { display: none; }
/* Desktop/Tablet: an der rechten Inhaltskante, damit das Ally-Symbol (rechts mittig) nichts verdeckt */
@media (min-width: 768px) {
	html body button.lh-video-toggle { right: 4rem; bottom: 1.25rem; }
}
@media (max-width: 767px) {
	html body button.lh-video-toggle { right: .75rem; bottom: .75rem; }
}
/* ---------- M1: Sitemap ---------- */
.lh-sitemap {
	max-width: 1440px;
	margin: 0 auto;
	padding: 4rem 4rem 5rem;
}
.lh-sitemap-title {
	margin: 0 0 2rem;
	font-family: "Open Sans", sans-serif;
	font-size: clamp(2rem, 1.5rem + 2vw, 3rem);
	font-weight: 700;
	line-height: 1.2;
	color: #001F36;
}
@media (max-width: 1024px) { .lh-sitemap { padding: 3rem 2rem; } }
@media (max-width: 767px) { .lh-sitemap { padding: 2rem 1rem; } }

/* ---------- N2: Slider-Bullets fokussierbar, Klickfläche 24 × 24 px (2.5.8) ---------- */
.swiper-pagination-bullets .swiper-pagination-bullet {
	box-sizing: content-box;
	border: 9px solid transparent;
	background-clip: content-box;
	margin: 0 !important;
}
.swiper-pagination-bullet:focus-visible { outline-offset: -6px !important; }

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