/**
 * DALEEN Filter and Search – Basis-Styles.
 * Alle Farben/Abstände über CSS-Variablen, damit das Theme sie leicht
 * überschreiben kann (z. B. in einem Child-Theme oder Elementor Custom CSS).
 */
.daf-wrapper {
	--daf-accent: #003366;
	--daf-accent-light: #13315c;
	--daf-border: #d8dde3;
	--daf-radius: 6px;
	--daf-gap: 1.25rem;
	/* Abstand beim automatischen Zurückscrollen nach oben, z. B. für einen
	   sticky Header. Im Theme/Elementor überschreibbar. */
	--daf-scroll-offset: 0px;
	scroll-margin-top: var(--daf-scroll-offset);
}

.daf-wrapper.is-loading {
	opacity: 0.6;
}

.daf-filter-bar {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	gap: 1rem;
	margin-bottom: var(--daf-gap);
}

.daf-field {
	display: flex;
	flex-direction: column;
	gap: 0.35rem;
	min-width: 180px;
}

.daf-field label {
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--daf-accent);
}

.daf-field select,
.daf-field input[type="text"] {
	padding: 0.55rem 0.75rem;
	border: 1px solid var(--daf-border);
	border-radius: var(--daf-radius);
	font-size: 0.95rem;
	background: #fff;
}

/* Suchfeld + Reset-Button stecken zusammen in einer eigenen Flex-Gruppe, die
   selbst nicht intern umbricht (flex-wrap: nowrap). Dadurch bleibt der
   Reset-Button immer direkt neben dem Suchfeld, statt bei knappem Platz als
   einzelnes Element in eine neue Zeile umzubrechen. */
.daf-field-group {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-end;
	gap: 0.6rem;
	flex: 1 1 260px;
	min-width: 0;
}

.daf-field-group .daf-field--search {
	flex: 1 1 auto;
	min-width: 140px;
}

.daf-reset {
	flex: 0 0 auto;
	background: none;
	border: 1px solid var(--daf-border);
	border-radius: var(--daf-radius);
	padding: 0.55rem 1rem;
	cursor: pointer;
	font-size: 0.85rem;
	color: var(--daf-accent);
	align-self: flex-end;
	white-space: nowrap;
}

.daf-reset:hover {
	background: var(--daf-border);
}

/* Feste Markenfarbe (Marineblau) für die Buttons dieses Plugins, unabhängig
   von globalen Theme-/Kit-Button-Styles, die sonst z. B. eine abweichende
   Akzentfarbe erzwingen. .daf-filter-toggle bewusst OHNE .daf-wrapper
   Vorfahren-Selektor: der Button wird im Handy-Modus per JS in den
   Seiten-Header verschoben (siehe initHeaderFilterToggle) und liegt dann
   außerhalb von .daf-wrapper. */
.daf-wrapper .daf-reset,
.daf-filter-toggle {
	color: #003366 !important;
	border-color: #003366 !important;
}

.daf-wrapper .daf-reset:hover {
	background: #003366 !important;
	color: #fff !important;
}

/* Nach einem Klick behaelt der Button den Fokus; das Theme (Hello Elementor
   reset.css) faerbt button:focus pink (#c36). */
.daf-wrapper .daf-reset:focus:not(:hover) {
	background: none !important;
	color: #003366 !important;
}

.daf-filter-toggle:focus:not(:hover) {
	background: #fff !important;
	color: #003366 !important;
}

/* ---------------------------------------------------------------------
 * Responsive Filterleiste: auf schmalen Viewports hinter einem
 * Toggle-Button ("Akkordeon") einklappbar, statt immer voll ausgeklappt
 * und sperrig zu wirken.
 * ------------------------------------------------------------------- */

.daf-filter-toggle {
	/* !important: ein globaler Theme-/Reset-Style setzt "display: block" auf
	   Formularelemente (button/select) mit höherer Priorität als unsere
	   einfache Klassen-Regel (live bestätigt: ".daf-reset" und ein reines
	   "<select>" auf dieser Seite berechnen ebenfalls "display: block" trotz
	   fehlender eigener Regel dafür). Für ".daf-reset"/"<select>" ist das
	   unschädlich, da sie als Flex-Items in einem Flex-Container liegen –
	   ".daf-filter-toggle" ist jedoch selbst der Flex-Container für sein
	   Icon+Label und braucht sein eigenes "display", sonst expandiert der
	   Button als Block-Box auf 100% Breite, auch außerhalb 780px. */
	display: none !important;
	width: 100%;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 0.7rem 1rem;
	margin-bottom: 0.75rem;
	background: #fff;
	border: 1px solid var(--daf-border);
	border-radius: var(--daf-radius);
	font-size: 0.95rem;
	font-weight: 600;
	color: var(--daf-accent);
	cursor: pointer;
}

.daf-filter-toggle__icon {
	width: 0.55rem;
	height: 0.55rem;
	flex: 0 0 auto;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform 0.2s ease;
}

.daf-wrapper.is-filters-open .daf-filter-toggle__icon {
	transform: rotate(-135deg);
}

.daf-filter-toggle__glyph {
	display: none;
	align-items: center;
	justify-content: center;
	line-height: 0;
}

/* Kompakte Icon-Variante: wird per JS neben den Hamburger-Menü-Button in den
   Seiten-Header verschoben (initHeaderFilterToggle in daleen-filter-and-search.js),
   sobald dort ein ".elementor-menu-toggle" gefunden wird. Optik an
   ".elementor-menu-toggle" angelehnt (gleiche Größe/Padding/Radius), damit
   beide Buttons nebeneinander wie ein Paar wirken. Sichtbarkeit (nur im
   Handy-Modus) bleibt weiterhin über die 780px-Media-Query unten geregelt,
   da .daf-filter-toggle--in-header selbst kein display setzt. */
.daf-filter-toggle.daf-filter-toggle--in-header {
	width: auto;
	margin: 0;
	padding: 0.25em;
	background: rgba(0, 0, 0, 0.05);
	border: none;
	border-radius: 3px;
	gap: 0;
	font-size: 22px;
}

.daf-filter-toggle.daf-filter-toggle--in-header .daf-filter-toggle__glyph {
	display: flex;
}

.daf-filter-toggle.daf-filter-toggle--in-header .daf-filter-toggle__label,
.daf-filter-toggle.daf-filter-toggle--in-header .daf-filter-toggle__icon {
	display: none;
}

@media (max-width: 780px) {
	.daf-filter-toggle {
		display: flex !important;
	}

	/* CSS-only Collapse per grid-template-rows (0fr -> 1fr), keine JS-
	   Höhenberechnung nötig. Erfordert min-height:0 auf dem Kindelement,
	   damit es unter seine Inhaltshöhe schrumpfen kann. */
	.daf-filter-bar-collapse {
		display: grid;
		grid-template-rows: 0fr;
		transition: grid-template-rows 0.25s ease;
	}

	.daf-filter-bar-collapse > .daf-filter-bar {
		overflow: hidden;
		min-height: 0;
	}

	.daf-wrapper.is-filters-open .daf-filter-bar-collapse {
		grid-template-rows: 1fr;
	}

	.daf-filter-bar {
		flex-direction: column;
		align-items: stretch;
	}

	.daf-field,
	.daf-field-group {
		min-width: 0;
		width: 100%;
		/* In flex-direction:column wirkt flex-basis auf die HÖHE. Die
		   Desktop-Basis von 260px hätte hier eine riesige leere Fläche
		   unterhalb des Suchfelds erzeugt – daher auf Inhaltshöhe
		   zurücksetzen. */
		flex: 1 1 auto;
	}
}

/* ---------------------------------------------------------------------
 * Filter-Darstellung "buttons" (seit 1.5.0): native Radio-Inputs, visuell
 * als Pills dargestellt. Bewusst native <input type="radio"> statt
 * eigener div/button-Konstruktion, damit .checked/.value ganz normal
 * funktionieren und ein serverseitig neu aufgebauter Pill-Satz (aktuelle
 * facettierte Zähler) keine eigene JS-Zustandsverwaltung braucht.
 * ------------------------------------------------------------------- */

.daf-field--buttons {
	min-width: 0;
}

.daf-field__label {
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.02em;
	color: var(--daf-accent);
}

.daf-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
	margin-top: 0.35rem;
}

.daf-pill {
	display: inline-flex;
	align-items: center;
	cursor: pointer;
}

.daf-pill input[type="radio"] {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
}

.daf-pill span {
	padding: 0.4rem 0.9rem;
	border: 1px solid var(--daf-border);
	border-radius: 999px;
	font-size: 0.85rem;
	color: var(--daf-accent);
	background: #fff;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.daf-pill:hover span {
	border-color: var(--daf-accent);
}

.daf-pill input[type="radio"]:checked + span {
	background: var(--daf-accent);
	border-color: var(--daf-accent);
	color: #fff;
}

.daf-pill input[type="radio"]:focus-visible + span {
	outline: 2px solid var(--daf-accent);
	outline-offset: 2px;
}

/* ---------------------------------------------------------------------
 * Eigene Pagination (seit 1.10.0, siehe render_pagination_html()). Wird
 * per JS direkt hinter das "target"-Element verschoben (initPagination-
 * Placement() in daleen-filter-and-search.js) und liegt danach AUSSERHALB
 * von .daf-wrapper – die Farb-/Abstands-Variablen (--daf-accent usw.) sind
 * global auf :root nutzbar deklariert, damit sie dort trotzdem greifen.
 * ------------------------------------------------------------------- */

.daf-pagination {
	/* Farben aus Einstellungen > DALEEN Suche & Pagination (als --dsp-* per
	   Inline-CSS auf :root), mit den bisherigen Werten als Rueckfall. */
	--daf-accent: var(--dsp-accent, #003366);
	--daf-border: var(--dsp-border, #d8dde3);
	--daf-radius: var(--dsp-radius, 6px);
	--daf-hover-bg: var(--dsp-hover-bg, #009ee0);
	--daf-hover-text: var(--dsp-hover-text, #ffffff);
	--daf-gap: 1.25rem;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.4rem;
	margin-top: var(--daf-gap);
}

.daf-pagination[hidden] {
	display: none;
}

.daf-pagination__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 2.25rem;
	padding: 0.45rem 0.7rem;
	border: 1px solid var(--daf-border);
	border-radius: var(--daf-radius);
	background: #fff;
	color: var(--daf-accent);
	font-size: 0.9rem;
	cursor: pointer;
	transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

/* Die Seitenzahlen sind <button>. Das Theme Hello Elementor (reset.css)
   faerbt jeden Button bei :hover UND :focus pink (#c36). Deshalb hier alle
   Zustaende ausdruecklich setzen; die Selektoren sind spezifischer als die
   des Themes (.daf-pagination .daf-pagination__link = zwei Klassen). */
.daf-pagination .daf-pagination__link,
.daf-pagination .daf-pagination__link:focus {
	background: #fff;
	border-color: var(--daf-border);
	color: var(--daf-accent);
	text-decoration: none;
}

.daf-pagination .daf-pagination__link:hover:not(:disabled),
.daf-pagination .daf-pagination__link:focus-visible:not(:disabled) {
	background: var(--daf-hover-bg);
	border-color: var(--daf-hover-bg);
	color: var(--daf-hover-text);
}

.daf-pagination .daf-pagination__link:focus-visible {
	outline: 2px solid var(--daf-hover-bg);
	outline-offset: 2px;
}

.daf-pagination .daf-pagination__link:disabled,
.daf-pagination .daf-pagination__link:disabled:hover,
.daf-pagination .daf-pagination__link:disabled:focus {
	background: #fff;
	border-color: var(--daf-border);
	color: var(--daf-accent);
	opacity: 0.4;
	cursor: default;
}

.daf-pagination .daf-pagination__number.is-current,
.daf-pagination .daf-pagination__number.is-current:hover,
.daf-pagination .daf-pagination__number.is-current:focus {
	background: var(--daf-accent);
	border-color: var(--daf-accent);
	color: #fff;
}

.daf-pagination__gap {
	padding: 0 0.25rem;
	color: var(--daf-accent);
	opacity: 0.6;
}

@media (max-width: 480px) {
	.daf-pagination__first,
	.daf-pagination__last {
		/* Auf sehr schmalen Viewports "Erste"/"Letzte" ausblenden, um
		   Zeilenumbrüche zu vermeiden – Zurück/Zahlen/Weiter reichen dort
		   für die Navigation. */
		display: none;
	}
}
