/* FSV DTal – was theme.json nicht abbilden kann. Maße aus der bisherigen Astra-Seite übernommen. */

/* ---------- Kopfzeile ---------- */
.fsv-kopf {
	background: var(--wp--preset--color--weiss);
	padding-top: 19px;
	padding-bottom: 19px;
}
.fsv-kopf-innen {
	align-items: center;
}
.fsv-kopf .wp-block-site-logo img {
	width: 126px;
	height: auto;
	display: block;
}
.fsv-menue {
	font-size: 19px;
	gap: 0;
}
.fsv-menue .wp-block-navigation__container {
	gap: 0;
}
.fsv-menue .wp-block-navigation-item__content {
	display: block;
	padding: 0 19px;
	line-height: 70px;
	color: var(--wp--preset--color--schrift);
	text-decoration: none;
}
.fsv-menue .wp-block-navigation-item__content:hover,
.fsv-menue .wp-block-navigation-item__content:focus-visible,
.fsv-menue .wp-block-navigation-item__content[aria-current="page"] {
	color: var(--wp--preset--color--gruen-dunkel);
	text-decoration: none;
}
/* Obermenüpunkt der aktuellen Seite grün wie bei Astra (z. B. „Kurse“ auf einer Kursseite) */
.fsv-menue .wp-block-navigation-submenu:has([aria-current="page"]) > .wp-block-navigation-item__content,
.fsv-menue .wp-block-navigation-submenu:has([aria-current="page"]) > .wp-block-navigation__submenu-icon {
	color: var(--wp--preset--color--gruen-dunkel);
}
/* Tastatur-Fokus nicht nur über die Farbe zeigen */
.fsv-menue .wp-block-navigation-item__content:focus-visible {
	text-decoration: underline;
	text-underline-offset: 6px;
}
/* Untermenü wie bei Astra: weiß, 240 px, Trennlinien */
.fsv-menue .wp-block-navigation__submenu-container {
	min-width: 240px !important;
	padding: 0;
	border: 0 !important;
	border-top: 1px solid #eaeaea !important;
	background: var(--wp--preset--color--weiss) !important;
	box-shadow: 0 4px 10px -2px rgba(0, 0, 0, 0.1);
}
.fsv-menue .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 17.1px 19px !important;
	line-height: 27.55px;
	border-bottom: 1px solid #eaeaea;
}
.fsv-menue .wp-block-navigation__submenu-icon {
	margin-left: -12px;
	margin-right: 19px;
}

/* Tablet und Handy (bis 921 px wie Astra): grüner Menü-Knopf, Menü klappt unter der Kopfzeile auf.
   Der Navigation-Block schaltet selbst erst bei 600 px um, daher hier erzwungen. */
@media (max-width: 921px) {
	.fsv-kopf {
		padding-top: 17px;
		padding-bottom: 17px;
	}
	.fsv-menue .wp-block-navigation__responsive-container-open:not(.always-shown) {
		display: grid;
	}
	.fsv-menue .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open) {
		display: none;
	}
	.fsv-menue .wp-block-navigation__responsive-container-open {
		width: 46px;
		height: 46px;
		place-items: center;
		border-radius: 2px;
		background: var(--wp--preset--color--gruen);
		color: var(--wp--preset--color--weiss);
	}
	.fsv-menue .wp-block-navigation__responsive-container.is-menu-open {
		position: fixed;
		inset: var(--fsv-kopf-hoehe, 113px) 0 auto 0;
		padding: 0;
		background: var(--wp--preset--color--weiss) !important;
		color: var(--wp--preset--color--schrift) !important;
		animation: none;
		box-shadow: 0 6px 12px rgba(0, 0, 0, 0.08);
	}
	.admin-bar .fsv-menue .wp-block-navigation__responsive-container.is-menu-open {
		top: calc(var(--fsv-kopf-hoehe, 113px) + var(--wp-admin--admin-bar--height, 0px));
	}
	.fsv-menue .is-menu-open .wp-block-navigation__responsive-container-close {
		position: fixed;
		top: 33px;
		right: 20px;
		width: 46px;
		height: 46px;
		display: grid;
		place-items: center;
		border-radius: 2px;
		background: var(--wp--preset--color--gruen);
		color: var(--wp--preset--color--weiss);
	}
	.admin-bar .fsv-menue .is-menu-open .wp-block-navigation__responsive-container-close {
		top: calc(33px + var(--wp-admin--admin-bar--height, 0px));
	}
	.fsv-menue .is-menu-open .wp-block-navigation__responsive-dialog {
		margin-top: 0 !important;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__responsive-container-content {
		display: block !important;
		padding-top: 0 !important;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__container,
	.fsv-menue .is-menu-open .wp-block-navigation__submenu-container {
		display: flex;
		flex-direction: column;
		align-items: stretch !important;
		gap: 0 !important;
		width: 100%;
	}
	.fsv-menue .is-menu-open .wp-block-navigation-item {
		display: block !important;
		width: 100%;
	}
	.fsv-menue .is-menu-open .wp-block-navigation-item__content {
		display: block;
		box-sizing: border-box;
		width: 100%;
		padding: 0 20px !important;
		line-height: 52px;
		text-align: left;
		border-top: 1px solid #eaeaea;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__container,
	.fsv-menue .is-menu-open .wp-block-navigation-item {
		justify-content: flex-start !important;
		text-align: left;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__submenu-container {
		position: static;
		min-width: 0 !important;
		border-top: 0 !important;
		box-shadow: none;
		padding: 0 !important;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		padding: 0 20px 0 40px !important;
		line-height: 52px;
		border-bottom: 0;
	}
	.fsv-menue .is-menu-open .wp-block-navigation__submenu-icon {
		display: none;
	}
}

/* Schriftgrößen Tablet/Handy wie bisher (Astra: Wurzelgröße 91,2 %) */
@media (max-width: 921px) {
	body {
		font-size: 17.328px;
		line-height: 1.5;
	}
	h2, .wp-block-heading.h2 { font-size: 30px; }
	h4 { font-size: 18.24px; }
}
@media (max-width: 544px) {
	h1 { font-size: 34px; }
	h4 { font-size: 16.416px; }
}

/* ---------- Inhalt ---------- */
.fsv-inhalt > .wp-block-post-content > * {
	margin-block-start: 0;
}
.fsv-inhalt > .wp-block-post-content > .alignfull {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* ---------- Fußzeile ---------- */
.fsv-fuss {
	padding-top: 105px;
	padding-bottom: 70px;
	margin-block-start: 0;
}
.fsv-fuss-innen {
	align-items: center;
}
.fsv-copyright {
	margin: 0;
	line-height: 1.5;
}
.fsv-fuss-menue,
.fsv-fuss-menue .wp-block-navigation__container {
	gap: 0;
}
.fsv-fuss-menue {
	font-size: inherit;
}
.fsv-fuss-menue .wp-block-navigation-item__content {
	color: var(--wp--preset--color--weiss);
	padding: 0 0 0 19px;
}
.fsv-fuss-menue .wp-block-navigation-item__content:hover,
.fsv-fuss-menue .wp-block-navigation-item__content:focus-visible {
	text-decoration: underline;
}
/* Tablet: Links untereinander rechts */
@media (max-width: 921px) {
	.fsv-fuss {
		padding-top: 85px;
		padding-bottom: 50px;
	}
	.fsv-fuss-menue {
		min-width: 200px;
	}
	.fsv-fuss-menue .wp-block-navigation__container {
		flex-direction: column;
		align-items: flex-start !important;
		gap: 4px;
	}
	/* Tippfläche mindestens 44 px hoch, Abstand wie bisher */
	.fsv-fuss-menue .wp-block-navigation-item__content {
		display: block;
		padding: 8px 0;
	}
}
/* Handy: alles untereinander, Links als zentrierter Block */
@media (max-width: 544px) {
	.fsv-fuss-innen {
		flex-direction: column;
		align-items: stretch !important;
		gap: 22px;
	}
	.fsv-fuss-menue {
		justify-content: center !important;
	}
}

/* ---------- Nach oben ---------- */
.fsv-nach-oben {
	position: fixed;
	right: 30px;
	bottom: 30px;
	z-index: 99;
	width: 63px;
	height: 63px;
	display: grid;
	place-items: center;
	border-radius: 2px;
	background: var(--wp--preset--color--anthrazit);
	color: #fff;
}
.fsv-nach-oben[hidden] {
	display: none;
}
@media (max-width: 599px) {
	.fsv-nach-oben {
		right: 20px;
		bottom: 20px;
		width: 46px;
		height: 46px;
	}
}

/* ======================================================================
   Bausteine (Patterns). Klassen fsv-* kommen aus themes/fsv-dtal/patterns/.
   ====================================================================== */

.fsv-inhalt > .wp-block-post-content > .wp-block-group,
.fsv-inhalt > .wp-block-post-content > .wp-block-cover {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Schräge Unterkante (wie Elementor-Shape „Dreieck negativ“, 52 px hoch) */
.fsv-schraege {
	position: relative;
	overflow: hidden;
	padding-bottom: calc(var(--fsv-pad-unten, 110px) + 0px);
}
.fsv-schraege::after {
	content: "";
	position: absolute;
	left: 50%;
	bottom: -1px;
	width: 134.1%;
	height: 52px;
	transform: translateX(-50%);
	background: var(--fsv-schraege-farbe, #fff);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 100' preserveAspectRatio='none'%3E%3Cpath d='M500.2,94.7L0,0v100h1000V0L500.2,94.7z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 100' preserveAspectRatio='none'%3E%3Cpath d='M500.2,94.7L0,0v100h1000V0L500.2,94.7z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	pointer-events: none;
	z-index: 1;
}
.fsv-schraege.fsv-schraege-gruen { --fsv-schraege-farbe: var(--wp--preset--color--gruen); }
.fsv-schraege.fsv-schraege-petrol { --fsv-schraege-farbe: var(--wp--preset--color--petrol); }
.fsv-schraege.fsv-schraege-hellgrau { --fsv-schraege-farbe: var(--wp--preset--color--hellgrau); }

/* Seitenkopf: farbiges Band oder Bild mit Farbschleier, Titel zentriert weiß */
.fsv-seitenkopf {
	padding-top: 110px !important;
	padding-bottom: 110px !important;
	text-align: center;
}
.fsv-seitenkopf h1,
.fsv-seitenkopf h2,
.fsv-seitenkopf p {
	color: var(--wp--preset--color--weiss);
	text-align: center;
}
.fsv-seitenkopf .wp-block-heading {
	margin: 0;
	padding: 10px;
}
.fsv-seitenkopf .fsv-unterzeile {
	font-family: var(--wp--preset--font-family--sarala);
	font-weight: 600;
	font-size: 30px;
	line-height: 1.4;
	margin: 0;
}
.wp-block-cover.fsv-seitenkopf {
	min-height: 0;
}
.fsv-seitenkopf-gross h1 {
	font-size: 70px;
	line-height: 1.2;
}

/* Abschnitte mit Innenabstand */
.fsv-abschnitt {
	padding-top: 90px;
	padding-bottom: 90px;
}
.fsv-abschnitt-klein {
	padding-top: 50px;
	padding-bottom: 50px;
}
.fsv-text {
	padding-top: 10px;
	padding-bottom: 10px;
}
.fsv-text > * {
	max-width: 1180px;
}

/* Bild + Text (Bild links 570 px, Text rechts mit Einzug) */
.fsv-bild-text > .wp-block-columns,
.fsv-bild-text.wp-block-columns {
	gap: 30px;
	align-items: flex-start;
}
.fsv-bild-text .wp-block-image img {
	width: 100%;
	height: auto;
	display: block;
}
.fsv-bild-text .fsv-spalte-text {
	padding: 0 50px 0 31px;
}
.fsv-bild-text .fsv-spalte-text h2 {
	font-size: 30px;
	line-height: 42px;
	margin: 0 0 58px;
}

/* Farbband mit Überschrift links (1/3) und Text rechts (2/3) */
.fsv-band .wp-block-columns {
	gap: 0;
}
.fsv-band .fsv-spalte-titel {
	padding-left: 120px;
}
.fsv-band h2 {
	margin-top: 0;
}

/* Preiskarten */
.fsv-preise .wp-block-columns {
	gap: 20px;
}
.fsv-karte {
	background: var(--wp--preset--color--weiss);
	padding: 75px 50px 65px;
	text-align: center;
	height: 100%;
}
.fsv-karte.has-kartengrau-background-color {
	background: var(--wp--preset--color--kartengrau);
}
.fsv-karte h3 {
	font-size: 23px;
	line-height: 1.5;
	font-weight: 400;
	margin: 0;
}
.fsv-karte .fsv-preis {
	font-family: var(--wp--preset--font-family--sarala);
	font-weight: 600;
	font-size: 40px;
	line-height: 52px;
	color: var(--wp--preset--color--schrift);
	margin: 0;
}
.fsv-karte .fsv-preis small {
	font-size: 19px;
	font-weight: 400;
}
.fsv-karte hr,
.fsv-trenner {
	width: 80px;
	margin: 25px auto !important;
	border: 0;
	border-top: 1px solid var(--wp--preset--color--gruen) !important;
	opacity: 1;
}
.fsv-karte ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.fsv-karte li {
	padding-bottom: 5px;
}

/* Trennlinie mit Muster (Elementor „pattern“) */
.wp-block-separator.is-style-muster {
	height: 20px;
	border: 0 !important;
	background: radial-gradient(circle, var(--wp--preset--color--gruen) 2px, transparent 2.5px) 0 50% / 12px 12px repeat-x;
	opacity: 1;
	width: 100%;
	max-width: none;
}

/* Icon-Spalten (Häkchen + Text) */
.fsv-icon {
	display: block;
	width: 35px;
	height: 35px;
	margin: 0 auto 10px;
	color: var(--wp--preset--color--schrift);
}
.fsv-icon-spalten p {
	text-align: center;
}

/* Häufige Fragen */
.fsv-fragen {
	max-width: 720px;
	margin-inline: auto !important;
}
.wp-block-details {
	margin: 0 0 25px;
	background: var(--wp--preset--color--weiss);
	box-shadow: 0 0 6px rgba(0, 0, 0, 0.1);
}
.wp-block-details summary {
	padding: 28px;
	font-weight: 700;
	line-height: 1;
	cursor: pointer;
}
.wp-block-details > :not(summary) {
	padding: 0 28px;
	margin-top: 0;
}
.wp-block-details[open] > :last-child {
	padding-bottom: 30px;
}

/* Kursangebot-Kacheln (Startseite): Bild mit Schleier, Text unten */
.fsv-kurse .wp-block-columns {
	gap: 0;
}
.fsv-kurse .wp-block-cover {
	min-height: 661px;
	padding: 0 20px 40px;
	align-items: flex-end;
}
.fsv-kurse .wp-block-cover h3 {
	font-size: 28px;
	line-height: 1.4;
	color: #f7f7f7;
	text-align: center;
	margin: 0 0 12px;
	/* Lange Wörter wie „Wirbelsäulengymnastik“ trennen statt überlaufen */
	hyphens: auto;
	overflow-wrap: break-word;
}
.fsv-kurse .wp-block-cover p {
	color: #e8e8e8;
	text-align: center;
}

/* Buttons nebeneinander */
.fsv-buttons {
	gap: 20px;
}

/* Kontakt-Spalten */
.fsv-kontakt ul {
	list-style: none;
	padding: 0;
}

/* Handy/Tablet */
@media (max-width: 921px) {
	.fsv-seitenkopf {
		padding-top: 80px !important;
		padding-bottom: 80px !important;
	}
	.fsv-abschnitt {
		padding-top: 60px;
		padding-bottom: 60px;
	}
	.fsv-bild-text .fsv-spalte-text,
	.fsv-band .fsv-spalte-titel {
		padding: 0;
	}
	.fsv-bild-text .fsv-spalte-text h2 {
		margin-bottom: 20px;
	}
	.fsv-kurse .wp-block-cover {
		min-height: 420px;
	}
}
@media (max-width: 544px) {
	.fsv-seitenkopf-gross h1 {
		font-size: 40px;
	}
	.fsv-karte {
		padding: 50px 30px 40px;
	}
}

/* Startseite: Kopfbereich dreispaltig (Text | Bild | Termine) */
.fsv-start-kopf {
	padding-top: 100px;
	padding-bottom: 152px;
	color: var(--wp--preset--color--weiss);
}
.fsv-start-kopf h1,
.fsv-start-kopf p {
	color: var(--wp--preset--color--weiss);
}
.fsv-start-spalten {
	gap: 40px;
}
.fsv-start-text {
	flex-basis: 40% !important;
}
.fsv-start-bild,
.fsv-start-termine {
	flex-basis: 30% !important;
}
.fsv-kicker {
	font-family: var(--wp--preset--font-family--sarala);
	font-weight: 700;
	font-size: 21px;
	line-height: 1.2;
	margin: 0;
}
.fsv-start-kopf h1 {
	margin: 20px 0;
}
.fsv-start-kopf .wp-block-image img {
	width: 100%;
	height: auto;
	display: block;
}
/* Ohne anzeigbare Termine bleibt die Spalte leer: dann zweispaltig ohne Lücke. */
.fsv-start-termine:not(:has(.fsvk-liste)) {
	display: none;
}
@media (max-width: 781px) {
	.fsv-start-kopf {
		padding-top: 60px;
		padding-bottom: 100px;
	}
	.fsv-start-spalten {
		gap: 40px;
	}
	.fsv-start-text,
	.fsv-start-bild,
	.fsv-start-termine {
		flex-basis: 100% !important;
	}
}

/* Auf dunklen Vereinsfarben ist Text weiß (wie bisher), auf Hellgrün/Beige/Grau dunkel. */
:is(.has-gruen-background-color, .has-petrol-background-color, .has-anthrazit-background-color, .has-grau-background-color) > :is(h1, h2, h3, h4, p, ul, .wp-block-heading),
:is(.has-gruen-background-color, .has-petrol-background-color, .has-anthrazit-background-color, .has-grau-background-color) > .wp-block-columns > .wp-block-column > :is(h1, h2, h3, h4, p, ul) {
	color: var(--wp--preset--color--weiss);
}
/* Weiß auf Vereinsgrün erreicht nur 3,1:1. Fett und mindestens 19 px gilt als große Schrift
   (WCAG: ab 18,66 px fett), dafür reichen 3:1 – das Grün selbst bleibt unverändert. */
.has-gruen-background-color > p,
.has-gruen-background-color > .wp-block-columns > .wp-block-column > p:not(.fsv-kicker),
.fsv-fuss {
	font-size: max(1em, 19px);
	font-weight: 700;
}

/* Sichtbarer Tastatur-Fokus für Links und Buttons im Inhalt und in der Fußzeile */
.fsv-inhalt a:focus-visible,
.fsv-fuss a:focus-visible,
.wp-element-button:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

/* ---------- Aus dem Elementor-Bestand übernommen (Konverter-Klassen) ---------- */
/* Kleiner Pfeil oben (Elementor „Pfeil“, 24 px hoch, weiß) */
.fsv-pfeil-oben {
	position: relative;
	/* Pfeil ist breiter als der Abschnitt: seitlich abschneiden, sonst entsteht ein horizontaler Scrollbalken. */
	overflow-x: clip;
}
.fsv-pfeil-oben::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 50%;
	width: 115.1%;
	height: 24px;
	transform: translateX(-50%);
	background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 700 10' preserveAspectRatio='none'%3E%3Cpath d='M350,10L340,0h20L350,10z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 700 10' preserveAspectRatio='none'%3E%3Cpath d='M350,10L340,0h20L350,10z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	pointer-events: none;
	z-index: 1;
}
/* Bogen unten (Elementor „Kurve negativ“) */
.fsv-bogen {
	position: relative;
	overflow: hidden;
}
.fsv-bogen::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -1px;
	width: 100%;
	height: 50px;
	background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 100' preserveAspectRatio='none'%3E%3Cpath d='M500,97C126.7,96.3,0.8,19.8,0,0v100l1000,0V1C1000,19.4,873.3,97.8,500,97z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 100' preserveAspectRatio='none'%3E%3Cpath d='M500,97C126.7,96.3,0.8,19.8,0,0v100l1000,0V1C1000,19.4,873.3,97.8,500,97z'/%3E%3C/svg%3E") 0 0 / 100% 100% no-repeat;
	pointer-events: none;
	z-index: 1;
}

/* Karten */
.fsv-karte-schatten {
	border-radius: 10px;
	box-shadow: 0 30px 50px -20px rgba(0, 0, 0, 0.3);
	height: 100%;
}
.fsv-rund { border-radius: 15px; }
.fsv-schatten-weich { box-shadow: 0 5px 50px 0 rgba(33, 33, 33, 0.15); }
.fsv-schatten-leicht { box-shadow: 0 9px 24px -12px rgba(188, 188, 188, 0.5); }

/* Listen ohne Aufzählungszeichen (ehem. Icon-Liste) */
.fsv-icon-liste {
	list-style: none;
	padding-left: 0;
	margin: 0;
}
.fsv-icon-liste li {
	padding-bottom: 5px;
}

/* Linien */
.wp-block-separator.fsv-linie {
	border: 0;
	border-top: 2px solid currentColor;
	opacity: 1;
	margin-inline: auto;
}
.fsv-linie-voll { width: 100%; max-width: none; border-top-width: 1px !important; }
.fsv-linie-schmal { width: 720px; max-width: 100%; }
.fsv-linie-kurz { width: 330px; max-width: 100%; }
.fsv-linie-schrift { color: #212121; }
.fsv-linie-gruen { color: var(--wp--preset--color--gruen); --fsv-muster: var(--wp--preset--color--gruen); }
.fsv-linie-petrol { color: var(--wp--preset--color--petrol); --fsv-muster: var(--wp--preset--color--petrol); }
/* Muster-Trennlinie: kurze Schrägstriche, 80 px breit (Elementor „Muster“) */
.wp-block-separator.is-style-muster {
	width: 80px;
	height: 6px;
	margin: 0 auto !important;
	background: repeating-linear-gradient(115deg, var(--fsv-muster, var(--wp--preset--color--gruen)) 0 2px, transparent 2px 7px);
}

/* Keine Lücke zwischen Inhalt und Kopf-/Fußzeile */
.wp-site-blocks > main,
.wp-site-blocks > footer {
	margin-block-start: 0;
}
/* Links in weißem Text: weiß und unterstrichen (wie bisher) */
p.has-weiss-color a,
.has-weiss-color p a {
	color: inherit;
	text-decoration: underline;
}
.wp-block-heading a {
	color: inherit;
	text-decoration: none;
}

.fsv-fuss .wp-block-navigation-item__content {
	text-decoration: none;
}
.fsv-fuss .wp-block-navigation-item__content:hover {
	text-decoration: underline;
}
/* Zusätzliche Abstände aus Elementor stehen in .fsv-abstand; dort keinen Block-Abstand addieren. */
.fsv-abstand > :first-child {
	margin-block-start: 0;
}
.fsv-abstand > :last-child {
	margin-block-end: 0;
}
/* Mit Leerzeichen ausgerichtete Zeilen (z. B. Öffnungszeiten) */
.fsv-vorformatiert {
	white-space: pre-wrap;
}
/* Öffnungszeiten als Tabelle: Tag links, Zeiten in festen Spalten */
.wp-block-table.fsv-oeffnungszeiten {
	margin: 0;
	max-width: 34rem;
}
.fsv-oeffnungszeiten table {
	border-collapse: collapse;
	width: 100%;
	font-size: var(--wp--preset--font-size--s21);
	font-variant-numeric: tabular-nums;
}
.fsv-oeffnungszeiten :is(th, td) {
	border: 0;
	border-bottom: 1px solid rgb(255 255 255 / 0.35);
	padding: 0.55em 0.75em 0.55em 0;
	text-align: left;
	white-space: nowrap;
}
.fsv-oeffnungszeiten thead th {
	border-bottom-width: 2px;
	border-bottom-color: currentColor;
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}
.fsv-oeffnungszeiten tbody td:first-child {
	font-weight: 700;
}
.fsv-oeffnungszeiten tbody tr:last-child td {
	border-bottom: 0;
}
@media (max-width: 480px) {
	.fsv-oeffnungszeiten table {
		font-size: 16px;
	}
	.fsv-oeffnungszeiten :is(th, td) {
		padding-right: 0.5em;
	}
}
/* Preiskarten: Preis groß mit Einheit, darunter Tarife als Zeilen „Art … Preis“ */
.fsv-preiskarte {
	display: flex;
	flex-direction: column;
	gap: 0;
}
.fsv-preiskarte > * {
	margin-block: 0;
}
.fsv-preiskarte .fsv-preis {
	margin-block: 12px 20px;
	font-weight: 700;
	line-height: 1.1;
	white-space: nowrap;
}
.fsv-preis-einheit {
	margin-left: 0.3em;
	/* Auf dem Handy nicht unter 15 px, sonst ist „Erwachsene“ kaum lesbar */
	font-size: max(0.4em, 15px);
	font-weight: 400;
}
.fsv-preiskarte .wp-block-separator {
	margin-block-end: 20px !important;
}
.fsv-preisliste {
	list-style: none;
	padding-left: 0;
}
.fsv-preisliste li {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 12px;
	padding-block: 9px;
	border-bottom: 1px solid rgb(0 0 0 / 0.1);
}
.fsv-preisliste li:last-child {
	border-bottom: 0;
}
.fsv-preisliste strong {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.fsv-preiskarte .fsv-preis-hinweis {
	margin-top: 8px;
	opacity: 0.8;
}
/* Team-Abschnitt: Abstand zwischen Einleitung und Raster */
.fsv-team-abschnitt .wp-block-fsv-team {
	margin-block-start: 56px;
}

/* Kontakt: Karte mit Foto und Angaben neben der Landkarte, beide gleich hoch */
.fsv-kontakt .wp-block-columns {
	gap: 30px;
	align-items: stretch;
}
.fsv-kontaktkarte {
	overflow: hidden;
}
.fsv-kontaktkarte > * {
	margin-block: 0;
}
.fsv-kontakt-bild img {
	display: block;
	width: 100%;
	height: 220px;
	object-fit: cover;
}
.fsv-kontakt-text > * {
	margin-block: 0 14px;
}
.fsv-kontakt-text > :last-child {
	margin-block-end: 0;
}
.fsv-kontakt-zeile span {
	display: block;
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	opacity: 0.75;
}
.fsv-kontakt-zeile a {
	overflow-wrap: anywhere;
}
.fsv-karte-einbettung {
	height: 100%;
	min-height: 420px;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 30px 50px -20px rgba(0, 0, 0, 0.3);
}
.fsv-karte-einbettung iframe {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 420px;
	border: 0;
}
@media (max-width: 781px) {
	.fsv-karte-einbettung,
	.fsv-karte-einbettung iframe {
		min-height: 320px;
	}
}
/* Bilder, die in Elementor die Spalte füllten */
.wp-block-image.fsv-bild-voll img {
	width: 100%;
	height: auto;
}

/* Tablet/Handy: aus Elementor übernommene Desktop-Abstände begrenzen (Elementor hatte eigene Handy-Werte). */
@media (max-width: 921px) {
	.wp-block-post-content [style*="padding-left"] {
		padding-left: min(20px, 5vw) !important;
	}
	.wp-block-post-content [style*="padding-right"] {
		padding-right: min(20px, 5vw) !important;
	}
	.wp-block-post-content .wp-block-column > .wp-block-cover {
		min-height: 330px !important;
		padding-top: 40px !important;
	}
}
@media (max-width: 781px) {
	.wp-block-post-content .alignfull[style*="padding-top"] {
		padding-top: min(60px, var(--fsv-pt, 60px)) !important;
	}
	.wp-block-post-content .wp-block-columns {
		gap: 20px;
	}
}

/* Feste Schriftgrößen am Tablet/Handy wie bisher bei Astra/Elementor */
@media (max-width: 921px) {
	.has-titel-font-size { font-size: 30px !important; }
	.has-xxl-font-size { font-size: 50px !important; }
}
@media (max-width: 544px) {
	.has-riesig-font-size { font-size: 34px !important; }
	.has-xxl-font-size { font-size: 40px !important; }
	.has-mittel-font-size { font-size: 24px !important; }
}

/* Seiten ohne eigenen Kopfbereich (bisher Astra „getrennter Container“):
   hellgrauer Kasten mit Seitentitel. Seiten mit Abschnitten über volle Breite zeigen keinen Titel. */
.fsv-inhalt:has(.wp-block-post-content > .alignfull) .fsv-kasten {
	display: none;
}
.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) {
	padding: 76px 20px;
}
.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .fsv-kasten,
.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .wp-block-post-content {
	max-width: 1200px;
	margin-inline: auto;
	background: #f5f5f5;
	box-sizing: border-box;
	padding-inline: 126px;
}
.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .fsv-kasten {
	padding-top: 105px;
}
.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .wp-block-post-content {
	margin-top: 0;
	padding-bottom: 100px;
}
.fsv-seitentitel {
	font-size: 30px;
	font-weight: 400;
	margin: 0 0 20px;
}
@media (max-width: 921px) {
	.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .fsv-kasten,
	.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) > .wp-block-post-content {
		padding-inline: 20px;
	}
	.fsv-inhalt:not(:has(.wp-block-post-content > .alignfull)) {
		padding: 20px 0;
	}
}
/* Seite ganz ohne Inhalt: Kasten unten trotzdem schließen */
.fsv-inhalt:not(:has(.wp-block-post-content > *)) > .fsv-kasten {
	padding-bottom: 100px;
}
.fsv-inhalt:not(:has(.wp-block-post-content > *)) > .wp-block-post-content {
	display: none;
}

/* Termin-Box im Kopfbereich der Startseite (Variante C): dunkleres Grün, hellgrüne Datums-Kacheln,
   „Alle Termine“ als Button wie „Zum Fitnessstudio“. */
.fsv-start-termine .fsvk-liste {
	background: #048a6d;
	color: var(--wp--preset--color--weiss);
	box-shadow: none;
}
.fsv-start-termine .fsvk-liste-titel,
.fsv-start-termine .fsvk-titel {
	color: var(--wp--preset--color--weiss);
}
.fsv-start-termine .fsvk-meta {
	color: rgba(255, 255, 255, 0.88);
}
.fsv-start-termine .fsvk-eintrag {
	border-bottom-color: rgba(255, 255, 255, 0.18);
}
.fsv-start-termine .fsvk-datum {
	background: var(--wp--preset--color--hellgruen);
	color: #035c48;
}
.fsv-start-termine .fsvk-alle {
	display: inline-block;
	margin-top: 16px;
	padding: 15px 30px;
	border-radius: 30px;
	background: var(--wp--preset--color--weiss);
	color: var(--wp--preset--color--schrift);
	font-family: var(--wp--preset--font-family--pt-sans);
	font-size: 15px;
	font-weight: 400;
	line-height: 1;
	text-decoration: none;
}
.fsv-start-termine .fsvk-alle:hover,
.fsv-start-termine .fsvk-alle:focus-visible {
	background: var(--wp--preset--color--gruen);
	color: var(--wp--preset--color--weiss);
	text-decoration: none;
	outline: 2px solid var(--wp--preset--color--weiss);
	outline-offset: 2px;
}

/* Seitenkopf mit Unterzeile, auf dem Handy flacher (Kursseiten) */
.fsv-kopf-unterzeile {
	font-family: var(--wp--preset--font-family--sarala);
	font-weight: 600;
	font-size: var(--wp--preset--font-size--s21);
	line-height: 1.4;
	margin: 12px 0 0;
}
.wp-block-cover.fsv-kopf-kompakt {
	min-height: 0;
}
@media (max-width: 599px) {
	.wp-block-cover.fsv-kopf-kompakt {
		min-height: 0;
		padding-top: 48px !important;
		padding-bottom: 84px !important;
	}
}

/* Mitmachen-Band: Links im Text dunkel statt grün (Grün auf Hellgrün ist kaum lesbar) */
.fsv-mitmachen a:not(.wp-element-button) {
	color: inherit;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Mitgliedschaft: Laufzeit und Kündigung als Liste mit fettem Stichwort, Links unterstrichen */
.fsv-bedingungen h2 {
	margin-block: 0 24px;
}
.fsv-bedingungen ul {
	padding-left: 1.1em;
}
.fsv-bedingungen li + li {
	margin-top: 12px;
}
.fsv-bedingungen a {
	color: inherit;
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--gruen);
	text-decoration-thickness: 2px;
	text-underline-offset: 0.2em;
}

/* ---------- Fitnessstudio (Tal Studio) ---------- */
/* Kopf: Angebot und zwei Aktionen. Das Foto bleibt sichtbar, der Text bekommt einen weichen Schatten. */
.fsv-studio-kopf h1,
.fsv-studio-kopf .fsv-kopf-unterzeile {
	text-wrap: balance;
	text-shadow: 0 1px 12px rgb(0 0 0 / 0.35);
}
.fsv-studio-kopf .fsv-kopf-unterzeile {
	margin-block: 16px 36px;
}
@media (max-width: 544px) {
	.fsv-studio-kopf {
		padding-top: 64px !important;
		padding-bottom: 96px !important;
	}
}
/* Zweiter Button: Umriss in Schriftfarbe der Fläche (weiß auf Petrol und Foto) */
.wp-block-button.is-style-outline > .wp-block-button__link {
	border: 2px solid currentColor;
	background: transparent;
	color: inherit;
	padding: 13px 28px;
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
	background: var(--wp--preset--color--weiss);
	color: var(--wp--preset--color--schrift);
	border-color: var(--wp--preset--color--weiss);
}
.has-petrol-background-color .wp-block-button,
.fsv-studio-kopf .wp-block-button {
	color: var(--wp--preset--color--weiss);
}
/* Auf Petrol: Hover dunkel statt Vereinsgrün (Weiß auf Grün ist zu schwach) */
:is(.has-petrol-background-color, .fsv-studio-kopf) .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover {
	background: var(--wp--preset--color--dunkel);
	color: var(--wp--preset--color--weiss);
}
:is(.has-petrol-background-color, .fsv-studio-kopf) .wp-element-button:focus-visible {
	outline-color: var(--wp--preset--color--weiss);
}
.fsv-studio-aktionen .wp-block-button__link {
	font-size: 17px;
	font-weight: 700;
}

/* Sprungziele nicht unter den Rand schieben */
#oeffnungszeiten,
#preise,
#trainer,
#kontakt {
	scroll-margin-top: 20px;
}

/* Fließtext über volle Breite: lesbare Zeilenlänge */
.fsv-fliesstext {
	max-width: 68ch;
	margin-inline: auto !important;
}

/* Öffnungszeiten-Band */
.fsv-zeiten-band .wp-block-columns {
	gap: 40px;
}
.fsv-zeiten-band h2 {
	margin-block: 0 12px;
}

/* Angebot: drei Spalten mit Foto, Titel und kurzem Text, darunter Eindrücke */
.fsv-angebot > h2 {
	margin-block: 0 48px;
}
.fsv-angebot-spalten {
	gap: 40px;
}
.fsv-angebot-spalten .wp-block-column > * {
	margin-block: 0;
}
.fsv-angebot-bild img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: 10px;
}
.fsv-angebot-spalten h3 {
	margin-block: 20px 8px !important;
}
.wp-block-gallery.fsv-angebot-galerie {
	margin-block-start: 56px;
	gap: 12px;
}
.fsv-angebot-galerie .wp-block-image img {
	aspect-ratio: 4 / 3;
	border-radius: 6px;
}
@media (max-width: 781px) {
	.wp-block-gallery.fsv-angebot-galerie {
		margin-block-start: 40px;
	}
}

/* Preise: eine Tafel mit allen Verträgen, darunter 10er-Karte und Trainingspläne */
.fsv-preise > h2 {
	margin-block: 0 12px;
}
.fsv-preise-einleitung {
	max-width: 36em;
	margin: 0 auto 40px !important;
	font-size: var(--wp--preset--font-size--s21);
	text-wrap: balance;
}
.fsv-preistafel {
	height: auto;
}
.fsv-preistafel > * {
	margin-block: 0;
}
.fsv-preistafel h3,
.fsv-preiskarte h3 {
	margin-block-end: 8px;
}
.wp-block-table.fsv-preistabelle {
	margin-block: 8px 16px;
	overflow-x: auto;
}
.fsv-preistabelle table {
	width: 100%;
	table-layout: fixed;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
}
.fsv-preistabelle :is(th, td):first-child {
	width: 28%;
}
.fsv-preistabelle :is(th, td) {
	border: 0;
	border-bottom: 1px solid rgb(0 0 0 / 0.1);
	padding: 12px 12px 12px 0;
	text-align: right;
	vertical-align: baseline;
}
.fsv-preistabelle thead th {
	vertical-align: bottom;
}
.fsv-preistabelle :is(th, td):first-child {
	text-align: left;
}
.fsv-preistabelle :is(th, td):last-child {
	padding-right: 0;
}
.fsv-preistabelle thead th {
	font-size: 15px;
	font-weight: 700;
	line-height: 1.3;
	border-bottom: 2px solid var(--wp--preset--color--petrol);
	hyphens: manual;
}
.fsv-preistabelle tbody td {
	font-size: var(--wp--preset--font-size--gross);
	font-weight: 700;
}
.fsv-preistabelle tbody td:first-child {
	font-size: inherit;
	font-weight: 400;
	white-space: nowrap;
}
.fsv-preistabelle tbody tr:last-child td {
	border-bottom: 0;
}
.fsv-preistafel .fsv-preis-hinweis {
	opacity: 0.8;
}
.fsv-preis-rabatt {
	margin-block-start: 16px !important;
	padding-top: 16px;
	border-top: 1px solid rgb(0 0 0 / 0.1);
}
@media (max-width: 544px) {
	.fsv-preistafel {
		padding: 28px 20px 24px !important;
	}
	.fsv-preistabelle :is(th, td) {
		padding-right: 8px;
	}
	.fsv-preistabelle thead th {
		font-size: 13px;
	}
	.fsv-preistabelle tbody td {
		font-size: 19px;
	}
}
.wp-block-columns.fsv-preise-extra {
	margin-block: 30px 48px;
	gap: 30px;
}
.fsv-preise-extra .fsv-preiskarte p {
	margin-block: 0 12px;
	opacity: 0.8;
}

/* Landkarte erst nach Klick laden (Daten gehen an Google) */
.fsv-karte-einbettung:not(:has(iframe)) {
	display: grid;
	place-items: center;
	background: var(--wp--preset--color--weiss);
}
.fsv-karte-hinweis {
	max-width: 22em;
	padding: 32px;
	text-align: center;
}
.fsv-karte-hinweis p {
	margin: 0 0 16px;
}
.fsv-karte-hinweis p:last-child {
	margin: 0;
}
.fsv-karte-hinweis-titel {
	font-family: var(--wp--preset--font-family--sarala);
	font-size: var(--wp--preset--font-size--gross);
	font-weight: 600;
}
.fsv-karte-laden {
	cursor: pointer;
	background: var(--wp--preset--color--petrol) !important;
	color: var(--wp--preset--color--weiss) !important;
}
.fsv-karte-laden:hover {
	background: var(--wp--preset--color--dunkel) !important;
}
