/* ==========================================================================
   TSV Schönberg – Styles für das GeneratePress Child Theme
   Inhalt:
   1  Variablen & Grundlagen      9  Chips
   2  Topbar                      10 Beitragskarten
   3  Header & Logo-Schild        11 Sportarten-Finder
   4  Hauptmenü & Button          12 Mitglied werden
   5  Mega-Menü                   13 Kacheln & Infoboxen
   6  Seiten mit Vorlagen         14 Spielbetrieb & Widgets
   7  Abschnitte                  15 Nächstes Spiel
   8  Buttons                     16 Footer
   ========================================================================== */

/* 1 Variablen & Grundlagen ------------------------------------------------ */
:root {
	--tsv-rot: #B3131A;
	--tsv-rot-dunkel: #8E0F15;
	--tsv-rot-hell: #FBEAEA;
	--tsv-rot-auf-schwarz: #FF8A8F;
	--tsv-schwarz: #141414;
	--tsv-grau: #F4F2EF;
	--tsv-linie: #E3E0DB;
	--tsv-linie-dunkel: #D6D2CC;
	--tsv-text-leise: #555;
	--tsv-breite: 1200px;
	--tsv-radius: 10px;
	--tsv-schrift: "Source Sans 3", system-ui, -apple-system, "Segoe UI", sans-serif;
	--tsv-titel: "Barlow Semi Condensed", "Arial Narrow", system-ui, sans-serif;
}

body {
	font-family: var(--tsv-schrift);
	font-size: 17px;
	line-height: 1.6;
	color: var(--tsv-schwarz);
}

h1, h2, h3, h4,
.main-title,
.entry-title {
	font-family: var(--tsv-titel);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: 0;
	color: inherit;
}
h1 { font-size: clamp(36px, 4.5vw, 56px); }
h2 { font-size: clamp(28px, 3.2vw, 40px); }
h3 { font-size: clamp(20px, 2vw, 24px); }

a { color: var(--tsv-rot); }
a:hover, a:focus { color: var(--tsv-rot-dunkel); }

:focus-visible {
	outline: 3px solid var(--tsv-rot);
	outline-offset: 2px;
}

/* 2 Topbar ---------------------------------------------------------------- */
.tsv-topbar {
	background: var(--tsv-schwarz);
	color: #E8E6E3;
	font-size: 14px;
}
.tsv-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 34px;
	padding: 0 40px;
}
.tsv-topbar__menu {
	display: flex;
	flex-wrap: wrap;
	gap: 4px 18px;
	list-style: none;
	margin: 0 0 0 auto;
	padding: 0;
}
.tsv-topbar a { color: #E8E6E3; text-decoration: none; }
.tsv-topbar a:hover { color: #fff; text-decoration: underline; }

/* 3 Header & Logo-Schild -------------------------------------------------- */
.site-header {
	position: relative;
	z-index: 100;
	background: #fff;
	border-bottom: 3px solid var(--tsv-rot);
}
.site-header .inside-header {
	position: relative;
	min-height: 76px;
	padding-top: 0;
	padding-bottom: 0;
	align-items: center;
}
.site-header .site-branding-container {
	align-self: stretch;
	align-items: flex-start;
}
/* Das Logo sitzt in einem weißen Schild, das unten über den Header hinausragt:
   präsent, ohne den Header höher zu machen. */
.site-header .site-logo {
	align-self: flex-start;
	position: relative;
	z-index: 5;
	margin-bottom: -34px;
	padding: 10px 12px 16px;
	background: #fff;
	border-radius: 0 0 50px 50px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, .15);
	line-height: 0;
}
.site-header .site-logo img,
.site-header .header-image {
	width: 68px;
	height: auto;
}
.site-header .site-branding {
	padding-top: 14px;
}
.site-header .main-title {
	font-size: 26px;
	line-height: 1.1;
	margin: 0;
}
.site-header .main-title a { color: var(--tsv-schwarz); text-decoration: none; }
.site-header .site-description {
	font-size: 13px;
	color: var(--tsv-text-leise);
	margin: 0;
}

/* 4 Hauptmenü & Button ---------------------------------------------------- */
.site-header .main-navigation,
.site-header .main-navigation ul ul {
	background: transparent;
}
.main-navigation .main-nav > ul {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
}
.main-navigation .main-nav ul li a {
	color: var(--tsv-schwarz);
	font-weight: 600;
	font-size: 16px;
	padding-left: 13px;
	padding-right: 13px;
}
.main-navigation .main-nav ul li:not([class*="current-menu-"]):hover > a,
.main-navigation .main-nav ul li:not([class*="current-menu-"]):focus-within > a,
.main-navigation .main-nav ul li[class*="current-menu-"] > a {
	color: var(--tsv-rot);
	background: transparent;
}
/* Untermenüs (normale Dropdowns) */
.main-navigation ul ul {
	background: #fff !important;
	box-shadow: 0 12px 28px rgba(0, 0, 0, .14);
	border-radius: 0 0 8px 8px;
}
.main-navigation .main-nav ul ul li a {
	font-weight: 400;
	line-height: 1.4;
	padding: 10px 18px;
}
/* Menüpunkt „Mitglied werden“: CSS-Klasse  tsv-cta  */
.main-navigation .main-nav ul li.tsv-cta > a {
	background: var(--tsv-rot);
	color: #fff !important;
	font-weight: 700;
	line-height: 1.2;
	padding: 12px 18px;
	margin-left: 14px;
	border-radius: 6px;
}
.main-navigation .main-nav ul li.tsv-cta > a:hover { background: var(--tsv-rot-dunkel); }
/* Hinweis „NEU“ an einem Menüpunkt: CSS-Klasse  ist-neu  */
.main-navigation li.ist-neu > a::after {
	content: "NEU";
	display: inline-block;
	margin-left: 8px;
	padding: 0 6px;
	border-radius: 4px;
	background: var(--tsv-rot);
	color: #fff;
	font: 700 11px/1.6 var(--tsv-schrift);
	vertical-align: middle;
}
.menu-toggle,
.menu-toggle:hover,
.menu-toggle:focus {
	color: var(--tsv-schwarz);
	background: transparent;
}

/* 5 Mega-Menü (Menüpunkt mit CSS-Klasse  tsv-mega) ------------------------ */
@media (min-width: 769px) {
	.site-header .main-navigation,
	.site-header .main-navigation .inside-navigation,
	.site-header .main-navigation .main-nav,
	.site-header .main-navigation .main-nav > ul,
	.main-navigation .main-nav ul li.tsv-mega {
		position: static;
	}
	.main-navigation .main-nav > ul > li > a { line-height: 76px; }
	.main-navigation .main-nav > ul > li.tsv-cta > a { line-height: 1.2; }

	.main-navigation .main-nav ul li.tsv-mega > ul.sub-menu {
		left: 24px !important;
		right: 24px;
		top: 100%;
		width: auto;
		display: grid;
		grid-template-columns: repeat(4, minmax(0, 1fr));
		gap: 22px 32px;
		padding: 28px 32px 26px;
		border-top: 3px solid var(--tsv-rot);
		border-radius: 0 0 12px 12px;
		box-shadow: 0 18px 40px rgba(0, 0, 0, .18);
	}
	/* 2. Ebene = Gruppen-Überschrift */
	.main-navigation .main-nav ul li.tsv-mega > ul > li { width: auto; }
	.main-navigation .main-nav ul li.tsv-mega > ul > li > a {
		padding: 0 0 6px;
		margin-bottom: 6px;
		border-bottom: 1px solid var(--tsv-linie);
		color: #6B6B6B;
		font: 700 13px/1.4 var(--tsv-schrift);
		letter-spacing: .6px;
		text-transform: uppercase;
		pointer-events: none;
		background: transparent;
	}
	.main-navigation .main-nav ul li.tsv-mega > ul > li.tsv-link > a {
		pointer-events: auto;
		color: var(--tsv-rot);
		text-transform: none;
		letter-spacing: 0;
		font-size: 16px;
		border: 0;
	}
	/* 3. Ebene = Sportarten, immer sichtbar */
	.main-navigation .main-nav ul li.tsv-mega ul ul {
		position: static;
		left: auto !important;
		opacity: 1;
		visibility: visible;
		height: auto;
		overflow: visible;
		pointer-events: auto;
		width: auto;
		float: none;
		box-shadow: none;
		border-radius: 0;
		background: transparent !important;
		padding: 0;
	}
	.main-navigation .main-nav ul li.tsv-mega ul ul li a {
		padding: 5px 0;
		font: 600 19px/1.3 var(--tsv-titel);
		color: var(--tsv-schwarz);
	}
	.main-navigation .main-nav ul li.tsv-mega ul ul li a:hover { color: var(--tsv-rot); text-decoration: underline; }
	.main-navigation .main-nav ul li.tsv-mega ul .dropdown-menu-toggle { display: none; }
}

/* 3–5 Handy ---------------------------------------------------------------- */
@media (max-width: 768px) {
	.tsv-topbar__inner { padding: 0 20px; }
	.tsv-topbar__text { display: none; }
	.tsv-topbar__menu { margin: 0 auto 0 0; }

	.site-header .inside-header { min-height: 62px; padding-left: 16px; padding-right: 8px; }
	.site-header .site-logo { margin-bottom: -20px; padding: 6px 8px 10px; border-radius: 0 0 34px 34px; }
	.site-header .site-logo img,
	.site-header .header-image { width: 44px; }
	.site-header .site-branding { padding-top: 14px; }
	.site-header .main-title { font-size: 21px; }
	.site-header .site-description { display: none; }

	.main-navigation.toggled .main-nav ul li a { font-size: 18px; }
	.main-navigation .main-nav ul li.tsv-cta > a { margin: 10px 16px; text-align: center; display: block; }

	/* Mega-Menü auf dem Handy: Gruppen als kleine Überschriften, Sportarten zweispaltig darunter */
	.main-navigation .main-nav ul li.tsv-mega > ul > li > a {
		color: #6B6B6B;
		font: 700 12px/1.4 var(--tsv-schrift);
		letter-spacing: .6px;
		text-transform: uppercase;
		padding-top: 14px;
		padding-bottom: 4px;
		pointer-events: none;
	}
	.main-navigation .main-nav ul li.tsv-mega > ul > li > a .dropdown-menu-toggle { display: none; }
	.main-navigation.toggled .main-nav ul li.tsv-mega ul ul {
		position: relative;
		left: auto !important;
		right: auto !important;
		float: none;
		width: 100%;
		height: auto;
		opacity: 1;
		visibility: visible;
		pointer-events: auto;
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		box-shadow: none;
	}
	.main-navigation.toggled .main-nav ul li.tsv-mega ul ul li a { padding-top: 8px; padding-bottom: 8px; font-weight: 400; }
}

/* 6 Seiten mit Vorlagen (volle Breite, ohne automatischen Seitentitel) ---- */
.tsv-vorlage .site-content { padding: 0; }
.tsv-vorlage .container.grid-container,
.tsv-vorlage .site-content.grid-container { max-width: none; }
.tsv-vorlage .site-main { margin: 0 !important; }
.tsv-vorlage .inside-article { padding: 0 !important; background: transparent; }
.tsv-vorlage .entry-content { margin-top: 0; }
.tsv-vorlage .entry-header { display: none; }

/* 7 Abschnitte ------------------------------------------------------------ */
.entry-content > .tsv-section,
.tsv-section {
	margin: 0 !important;
	padding: 60px 0;
}
.tsv-section--eng { padding: 36px 0; }
.tsv-section--grau { background: var(--tsv-grau); }
.tsv-section--schwarz { background: var(--tsv-schwarz); color: #fff; }
.tsv-section--rot { background: var(--tsv-rot); color: #fff; }
.tsv-section--schwarz a:not(.wp-block-button__link) { color: var(--tsv-rot-auf-schwarz); }
.tsv-section--rot a:not(.wp-block-button__link) { color: #fff; text-decoration: underline; }
.tsv-section--rand { border-top: 1px solid var(--tsv-linie); }

.tsv-inner {
	max-width: var(--tsv-breite);
	margin-left: auto !important;
	margin-right: auto !important;
	padding-left: 24px;
	padding-right: 24px;
	box-sizing: border-box;
}
.tsv-inner > *:first-child { margin-top: 0; }
.tsv-inner > *:last-child { margin-bottom: 0; }

/* Kopfzeile eines Abschnitts: Überschrift links, Filter/Link rechts */
.tsv-kopfzeile {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 14px 24px;
	margin-bottom: 22px !important;
}
.tsv-kopfzeile > * { margin: 0 !important; }
.tsv-kopfzeile h1,
.tsv-kopfzeile h2 { margin: 0; }

.tsv-kicker {
	margin: 0 0 4px !important;
	font-size: 15px;
	font-weight: 700;
	letter-spacing: .5px;
	color: var(--tsv-rot);
}
.tsv-section--schwarz .tsv-kicker { color: var(--tsv-rot-auf-schwarz); }
.tsv-section--rot .tsv-kicker { color: #fff; }

.tsv-lead { font-size: 19px; color: #333; max-width: 640px; }
.tsv-section--schwarz .tsv-lead { color: #E8E6E3; }
.tsv-leise { color: var(--tsv-text-leise); font-size: 15px; }
.tsv-section--schwarz .tsv-leise { color: #CFCBC5; }

/* Brotkrumen */
.tsv-brotkrumen {
	font-size: 14px;
	color: var(--tsv-text-leise);
	margin: 0 0 14px !important;
}
.tsv-brotkrumen a { color: var(--tsv-rot); }

/* Sprungmarken im Seitenkopf */
.tsv-sprungmarken {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 22px;
	margin-top: 26px !important;
	padding-top: 14px;
	border-top: 1px solid #DAD6D0;
	font-weight: 600;
	font-size: 15px;
}
.tsv-sprungmarken a { color: var(--tsv-schwarz); text-decoration: none; }
.tsv-sprungmarken a:hover { color: var(--tsv-rot); text-decoration: underline; }

/* Bild-Platzhalter */
.tsv-foto {
	border-radius: var(--tsv-radius);
	overflow: hidden;
	margin: 0;
}
.tsv-foto img { width: 100%; height: 100%; object-fit: cover; display: block; aspect-ratio: 16 / 9; }

/* Spalten-Abstand */
.tsv-section .wp-block-columns { gap: 32px; margin-bottom: 0; }

/* 8 Buttons --------------------------------------------------------------- */
.wp-block-button .wp-block-button__link {
	border-radius: 6px;
	font-weight: 700;
	padding: .7em 1.25em;
	text-decoration: none;
}
.wp-block-button.is-style-tsv-rot .wp-block-button__link { background: var(--tsv-rot); color: #fff; }
.wp-block-button.is-style-tsv-rot .wp-block-button__link:hover { background: var(--tsv-rot-dunkel); }
.wp-block-button.is-style-tsv-schwarz .wp-block-button__link { background: var(--tsv-schwarz); color: #fff; }
.wp-block-button.is-style-tsv-schwarz .wp-block-button__link:hover { background: #333; }
.wp-block-button.is-style-tsv-weiss .wp-block-button__link { background: #fff; color: var(--tsv-schwarz); }
.wp-block-button.is-style-tsv-weiss .wp-block-button__link:hover { background: var(--tsv-grau); }
.wp-block-button.is-style-tsv-rahmen .wp-block-button__link {
	background: transparent;
	color: currentColor;
	border: 2px solid currentColor;
	padding: calc(.7em - 2px) calc(1.25em - 2px);
}
.tsv-section:not(.tsv-section--schwarz):not(.tsv-section--rot) .wp-block-button.is-style-tsv-rahmen .wp-block-button__link { color: var(--tsv-schwarz); }

/* 9 Chips ----------------------------------------------------------------- */
.tsv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}
a.tsv-chip,
button.tsv-chip {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 7px 15px;
	border: 2px solid var(--tsv-linie-dunkel);
	border-radius: 999px;
	background: #fff;
	color: var(--tsv-schwarz);
	font: 600 15px/1.2 var(--tsv-schrift);
	text-decoration: none;
	cursor: pointer;
	box-sizing: border-box;
}
a.tsv-chip:hover,
button.tsv-chip:hover { border-color: var(--tsv-schwarz); color: var(--tsv-schwarz); background: #fff; }
a.tsv-chip.is-active,
button.tsv-chip.is-active { background: var(--tsv-schwarz); border-color: var(--tsv-schwarz); color: #fff; }

/* 10 Beitragskarten ------------------------------------------------------- */
.tsv-news__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 24px;
}
.tsv-news--aufmacher .tsv-news__grid { margin-top: 24px; }
.tsv-news--aufmacher .tsv-news__grid:empty { display: none; }
.tsv-card {
	background: #fff;
	border: 1px solid var(--tsv-linie);
	border-radius: var(--tsv-radius);
	overflow: hidden;
	transition: box-shadow .15s ease;
}
.tsv-card:hover { box-shadow: 0 6px 20px rgba(0, 0, 0, .08); }
.tsv-card__link {
	display: flex;
	flex-direction: column;
	height: 100%;
	color: inherit;
	text-decoration: none;
}
.tsv-card__link:hover { color: inherit; }
.tsv-card__link:hover .tsv-card__titel { text-decoration: underline; text-decoration-thickness: 2px; }
.tsv-card__bild {
	aspect-ratio: 16 / 9;
	background: repeating-linear-gradient(135deg, #EEECE8 0 14px, #E6E3DE 14px 28px);
	overflow: hidden;
}
.tsv-card__bild img { width: 100%; height: 100%; object-fit: cover; display: block; }
.tsv-card__text { padding: 16px 18px 20px; }
.tsv-card__meta { font-size: 13px; color: var(--tsv-text-leise); margin-bottom: 6px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tsv-card__kat { color: var(--tsv-rot); font-weight: 700; }
.tsv-card__titel {
	margin: 0;
	font-family: var(--tsv-titel);
	font-size: 21px;
	font-weight: 600;
	line-height: 1.2;
	color: var(--tsv-schwarz);
}
.tsv-card__auszug { margin: 8px 0 0; color: #444; font-size: 16px; }
.tsv-card--lead .tsv-card__bild { aspect-ratio: 16 / 8; }
.tsv-card--lead .tsv-card__text { padding: 22px 24px 26px; }
.tsv-card--lead .tsv-card__kat { background: var(--tsv-schwarz); color: #fff; padding: 2px 9px; border-radius: 4px; }
.tsv-card--lead .tsv-card__titel { font-size: clamp(24px, 2.6vw, 32px); font-weight: 700; line-height: 1.12; }

/* 11 Sportarten-Finder ---------------------------------------------------- */
.tsv-finder .tsv-chips { margin-bottom: 20px; }
.tsv-finder__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 12px;
}
.tsv-finder__grid li { margin: 0; }
.tsv-finder__grid li[hidden] { display: none; }
.tsv-tile {
	display: flex;
	flex-direction: column;
	justify-content: center;
	min-height: 76px;
	height: 100%;
	box-sizing: border-box;
	padding: 14px 16px;
	background: #fff;
	border: 2px solid var(--tsv-linie);
	border-radius: 8px;
	color: var(--tsv-schwarz);
	text-decoration: none;
}
.tsv-section--grau .tsv-tile { border-color: #fff; }
.tsv-tile:hover,
.tsv-tile:focus-visible { border-color: var(--tsv-rot) !important; color: var(--tsv-schwarz); }
.tsv-tile__titel {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	font: 700 21px/1.15 var(--tsv-titel);
}
.tsv-tile__sub { font-size: 14px; color: var(--tsv-text-leise); margin-top: 2px; }
.tsv-badge {
	display: inline-block;
	padding: 1px 7px;
	border-radius: 4px;
	background: var(--tsv-rot);
	color: #fff;
	font: 700 12px/1.5 var(--tsv-schrift);
}
.tsv-finder__leer { margin-top: 12px; color: var(--tsv-text-leise); }

/* 12 Mitglied werden ------------------------------------------------------ */
.tsv-preise {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
}
.tsv-preis {
	background: rgba(0, 0, 0, .22);
	border-radius: 8px;
	padding: 16px 18px;
	margin: 0 !important;
}
.tsv-preis p { margin: 0; }
.tsv-preis__label { font-size: 15px; line-height: 1.35; }
.tsv-preis__betrag { font: 700 34px/1.1 var(--tsv-titel); }
.tsv-preise__hinweis { grid-column: 1 / -1; font-size: 14px; margin: 0 !important; }

/* 13 Kacheln & Infoboxen -------------------------------------------------- */
.tsv-kacheln {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: 14px;
}
.tsv-kachel {
	position: relative;
	border: 2px solid var(--tsv-linie);
	border-radius: 8px;
	padding: 16px 18px;
	margin: 0 !important;
	background: #fff;
	color: var(--tsv-schwarz);
}
.tsv-kachel:hover,
.tsv-kachel:focus-within { border-color: var(--tsv-rot); }
.tsv-kachel h3 { font-family: var(--tsv-schrift); font-size: 18px; font-weight: 700; margin: 0 0 2px; line-height: 1.3; }
.tsv-kachel h3 a { color: var(--tsv-schwarz); text-decoration: none; }
.tsv-kachel h3 a::after { content: ""; position: absolute; inset: 0; } /* ganze Kachel klickbar */
.tsv-kachel p { margin: 0; font-size: 14px; color: var(--tsv-text-leise); }
.tsv-kachel--gross h3 { font-family: var(--tsv-titel); font-size: 23px; }

.tsv-infobox {
	border: 2px solid var(--tsv-linie);
	border-radius: var(--tsv-radius);
	padding: 20px 22px;
	margin: 0 !important;
	background: #fff;
	color: var(--tsv-schwarz);
}
.tsv-infobox h2,
.tsv-infobox h3 { font-size: 22px; margin: 0 0 8px; }
.tsv-infobox p { margin: 0 0 6px; }
.tsv-infobox p:last-child { margin-bottom: 0; }
.tsv-infobox .tsv-label { font-size: 13px; font-weight: 700; letter-spacing: .4px; color: var(--tsv-text-leise); text-transform: uppercase; margin: 10px 0 0; }
.tsv-infobox--grau { background: var(--tsv-grau); border-color: var(--tsv-grau); }
.tsv-infobox--rot { background: var(--tsv-rot); border-color: var(--tsv-rot); color: #fff; }
.tsv-infobox--rot a:not(.wp-block-button__link) { color: #fff; }
.tsv-infoboxen {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
}

/* 14 Spielbetrieb & Widgets ----------------------------------------------- */
.tsv-widget-box {
	background: #fff;
	color: var(--tsv-schwarz);
	border-radius: var(--tsv-radius);
	padding: 20px 22px;
	margin: 0 !important;
	overflow-x: auto;
}
.tsv-section:not(.tsv-section--schwarz) .tsv-widget-box { border: 1px solid var(--tsv-linie); }
.tsv-widget-box h3 { font-size: 22px; margin: 0 0 12px; }

/* Aufklappbare Mannschaften (Details-Block mit Klasse tsv-details) */
.wp-block-details.tsv-details {
	background: #fff;
	color: var(--tsv-schwarz);
	border-radius: var(--tsv-radius);
	margin: 0 0 10px !important;
	overflow: hidden;
}
.tsv-section:not(.tsv-section--schwarz) .wp-block-details.tsv-details { border: 1px solid var(--tsv-linie); }
.wp-block-details.tsv-details > summary {
	cursor: pointer;
	padding: 14px 20px;
	font: 700 21px/1.2 var(--tsv-titel);
	list-style-position: inside;
}
.wp-block-details.tsv-details[open] > summary { border-bottom: 1px solid var(--tsv-linie); }
.wp-block-details.tsv-details > :not(summary) { padding: 0 20px; }
.wp-block-details.tsv-details > :not(summary):last-child { padding-bottom: 18px; }
.wp-block-details.tsv-details > summary + * { padding-top: 16px; }

/* Tabellen der Handball-Plugins und allgemeine Tabellen in Widgets */
table.rh4a-standing,
table.rh4a-timetable,
.tsv-widget-box table {
	width: 100% !important;
	border-collapse: collapse;
	font-size: 15px;
	border: 0;
}
table.rh4a-standing th,
table.rh4a-timetable th,
.tsv-widget-box table th {
	text-align: left;
	font-size: 13px;
	color: var(--tsv-text-leise);
	font-weight: 700;
	padding: 6px 6px;
	border: 0;
	background: transparent;
}
table.rh4a-standing td,
table.rh4a-timetable td,
.tsv-widget-box table td {
	padding: 8px 6px;
	border: 0;
	border-top: 1px solid var(--tsv-linie);
}
.tsv-widget iframe { max-width: 100%; }

/* 15 Nächstes Spiel ------------------------------------------------------- */
.tsv-spiel {
	display: flex !important;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px 36px;
	background: var(--tsv-schwarz);
	color: #fff;
	border-radius: 12px;
	padding: 22px 28px;
	margin: 0 !important;
}
.tsv-spiel p { margin: 0; }
.tsv-spiel__wann { min-width: 160px; }
.tsv-spiel__label { font-size: 13px; font-weight: 700; letter-spacing: .6px; color: var(--tsv-rot-auf-schwarz); text-transform: uppercase; }
.tsv-spiel__zeit { font: 700 24px/1.2 var(--tsv-titel); }
.tsv-spiel__paarung { flex: 1 1 320px; text-align: center; font: 700 28px/1.2 var(--tsv-titel); }
.tsv-spiel__ort { font-size: 15px; color: #E8E6E3; min-width: 160px; }
.tsv-spiel a { color: var(--tsv-rot-auf-schwarz); font-weight: 700; }

/* 16 Footer (GeneratePress-Element „Site Footer“ mit der Vorlage „TSV Footer“) */
.tsv-footer {
	background: var(--tsv-schwarz);
	color: #E8E6E3;
	font-size: 15px;
}
.tsv-footer a { color: #E8E6E3; }
.tsv-footer a:hover { color: #fff; }
.tsv-footer h2,
.tsv-footer h3 { color: #fff; font-size: 18px; font-family: var(--tsv-schrift); margin: 0 0 8px; }
.tsv-footer .tsv-footer__name { font: 700 24px/1.2 var(--tsv-titel); color: #fff; }
.tsv-footer .wp-block-columns { gap: 32px; }
.tsv-footer__unten {
	border-top: 1px solid #333;
	margin-top: 32px !important;
	padding-top: 16px;
	font-size: 14px;
	display: flex;
	flex-wrap: wrap;
	gap: 8px 20px;
}
.tsv-footer__unten a { color: #BDBAB5; }
.tsv-footer ul { list-style: none; margin: 0; padding: 0; }
.tsv-footer li { margin: 0 0 4px; }

/* Hinweise nur für Redakteure */
.tsv-hinweis { background: #FFF4D6; border: 1px dashed #C9A227; padding: 10px 14px; font-size: 14px; }
.tsv-leer { color: var(--tsv-text-leise); }

/* Beiträge: Beitragsseiten etwas luftiger */
.single-post .entry-content { font-size: 18px; }

/* Abstand vom Logo-Schild zu Inhalten ohne Vorlage */
body:not(.tsv-vorlage) .site-content { padding-top: 56px; }

@media (max-width: 768px) {
	.tsv-section { padding: 40px 0; }
	.tsv-inner { padding-left: 18px; padding-right: 18px; }
	.tsv-preise { grid-template-columns: 1fr; }
	.tsv-spiel { padding: 18px 20px; }
	.tsv-spiel__paarung { text-align: left; font-size: 23px; }
	body:not(.tsv-vorlage) .site-content { padding-top: 36px; }
}

/* Sponsorenlogos */
.tsv-logos {
	display: grid !important;
	grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
	gap: 14px;
}
.tsv-logos .wp-block-image {
	margin: 0;
	height: 80px;
	border: 1px solid var(--tsv-linie);
	border-radius: 8px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10px;
	box-sizing: border-box;
	background: #fff;
}
.tsv-logos .wp-block-image img { max-height: 58px; width: auto; object-fit: contain; }

/* Seitenleiste mit Infokästen (Sparten- und Mannschaftsseiten) */
.tsv-boxen { display: flex !important; flex-direction: column; gap: 16px; }
.tsv-infobox table { width: 100%; border-collapse: collapse; font-size: 15px; margin: 4px 0 8px; }
.tsv-infobox table td { padding: 5px 6px 5px 0; border: 0; border-top: 1px solid var(--tsv-linie); vertical-align: top; }
.tsv-infobox table tr:first-child td { border-top: 0; }
.tsv-infobox figure.wp-block-table { margin: 0; }

/* Foto im Seitenkopf */
.tsv-kopf-bild .wp-block-image { margin: 0; }
.tsv-kopf-bild img { width: 100%; height: auto; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--tsv-radius); display: block; }

/* Klassische Themes (wie GeneratePress) packen den Inhalt von Gruppen-Blöcken in einen zusätzlichen
   Container. Damit Raster und Flex-Layouts der TSV-Bausteine greifen, wird dieser Container „durchsichtig“. */
[class*="tsv-"] > .wp-block-group__inner-container { display: contents; }

/* Einleitungstext auf Rot und Schwarz */
.tsv-section--rot .tsv-lead { color: #fff; }

/* ==========================================================================
   Header kompakter (überschreibt die Abstände aus dem GeneratePress-Customizer)
   ========================================================================== */
.site-header .main-title .tsv-titel-zusatz {
	display: block;
	font-family: var(--tsv-schrift);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.3;
	color: var(--tsv-text-leise);
	letter-spacing: 0;
}
.site-header .site-branding-container { flex-shrink: 0; }

@media (min-width: 769px) {
	.site-header .inside-header { flex-wrap: nowrap; gap: 20px; }
	.site-header .main-navigation { margin-left: auto; }
	.site-header .main-navigation .main-nav > ul { flex-wrap: nowrap; }

	/* Menüpunkte enger */
	.site-header .main-navigation .main-nav > ul > li > a,
	.site-header .main-navigation .main-nav > ul > li.menu-item-has-children > a {
		padding-left: 12px !important;
		padding-right: 12px !important;
		line-height: 76px !important;
		white-space: nowrap;
	}
	.site-header .main-navigation .main-nav > ul > li.tsv-cta > a {
		line-height: 1.2 !important;
		padding: 12px 18px !important;
		margin-left: 10px;
	}

	/* Keine Pfeile bei Untermenüs (auf dem Handy bleiben sie zum Aufklappen erhalten) */
	.site-header .main-navigation .main-nav ul li .dropdown-menu-toggle { display: none !important; }
}

/* Etwas schmalere Bildschirme: noch kompakter */
@media (min-width: 769px) and (max-width: 1180px) {
	.site-header .main-navigation .main-nav > ul > li > a,
	.site-header .main-navigation .main-nav > ul > li.menu-item-has-children > a {
		padding-left: 8px !important;
		padding-right: 8px !important;
		font-size: 15px;
	}
	.site-header .main-title { font-size: 22px; }
	.site-header .main-title .tsv-titel-zusatz { display: none; }
}

/* ==========================================================================
   Mega-Menü kompakter (überschreibt die Untermenü-Abstände aus GeneratePress)
   ========================================================================== */
@media (min-width: 769px) {
	.main-navigation .main-nav ul li.tsv-mega > ul.sub-menu {
		gap: 14px 28px;
		padding: 18px 26px 16px;
	}
	/* Gruppen-Überschriften */
	.main-navigation .main-nav ul li.tsv-mega > ul > li > a {
		padding: 0 0 4px !important;
		margin-bottom: 4px;
		font-size: 11.5px !important;
		line-height: 1.3 !important;
	}
	/* Sportarten */
	.main-navigation .main-nav ul li.tsv-mega ul ul li a {
		padding: 2px 0 !important;
		font-size: 16px !important;
		font-weight: 600;
		line-height: 1.3 !important;
	}
	.main-navigation .main-nav ul li.tsv-mega ul ul li { margin: 0; }
	.main-navigation li.tsv-mega li.ist-neu > a::after { font-size: 10px; padding: 0 5px; margin-left: 6px; }
}

/* ==========================================================================
   Feinschliff Sparten- und Mannschaftsseiten (Abstände wie im Entwurf)
   ========================================================================== */

/* GeneratePress gibt den inneren Containern von Gruppen eigene Abstände – in den TSV-Bausteinen nicht. */
.tsv-section .wp-block-group__inner-container {
	padding: 0 !important;
	max-width: none !important;
}
.tsv-section .wp-block-group { margin-top: 0; }

/* Abschnitte: gleichmäßiger, etwas enger */
.entry-content > .tsv-section,
.tsv-section { padding: 52px 0; }
.tsv-section--eng { padding: 36px 0; }
.tsv-section + .tsv-section:not([class*="tsv-section--"]) { padding-top: 24px; }   /* zwei weiße Abschnitte hintereinander */
.tsv-section--grau + .tsv-section:not([class*="tsv-section--"]) { padding-top: 48px; }

/* Überschriften in Abschnitten */
.tsv-section h2 { margin: 0 0 18px; }
.tsv-section h3 { margin: 0 0 12px; }
.tsv-section .tsv-kacheln + h3,
.tsv-section .tsv-kacheln + .wp-block-heading { margin-top: 32px; }
.tsv-section h2 + h3 { margin-top: 4px; }

/* Seitenkopf */
.tsv-section--grau h1 { margin: 0 0 10px; }
.tsv-section--grau .tsv-lead { margin: 0 0 22px; font-size: 19px; line-height: 1.5; }
.tsv-section--grau .tsv-kicker + h1 { margin-top: 2px; }
.tsv-section--grau .wp-block-buttons { margin: 0; gap: 10px; }
.tsv-section--grau .tsv-brotkrumen { margin-bottom: 18px !important; }

/* Sprungmarken wie im Entwurf: gut lesbar, mit Linie darüber */
p.tsv-sprungmarken {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
	margin: 28px 0 0 !important;
	padding-top: 16px;
	border-top: 1px solid #DAD6D0;
	font-size: 16px;
	font-weight: 600;
	line-height: 1.4;
}
p.tsv-sprungmarken a { color: var(--tsv-schwarz); text-decoration: none; padding: 4px 0; }
p.tsv-sprungmarken a:hover,
p.tsv-sprungmarken a:focus-visible { color: var(--tsv-rot); text-decoration: underline; text-underline-offset: 4px; }
.tsv-section[id] { scroll-margin-top: 20px; }

/* Kopfzeile eines Abschnitts: Text links, Button/Link rechts in einer Zeile */
.tsv-kopfzeile { align-items: flex-end; }
.tsv-kopfzeile > :first-child { flex: 1 1 420px; min-width: 0; }
.tsv-kopfzeile > :not(:first-child) { flex: 0 0 auto; }
.tsv-kopfzeile h2 { margin: 0 0 4px; }
.tsv-kopfzeile p { margin: 0; }

/* Text neben den Infokästen */
.tsv-section .wp-block-columns { align-items: flex-start; }
.tsv-section .wp-block-column > p:last-child { margin-bottom: 0; }

/* Kacheln: Abstand unter der Überschrift im Kachelinneren */
.tsv-kachel h3 { margin: 0 0 2px !important; }
.tsv-kachel p { margin: 0 !important; }

/* Ergebnisse-Block */
.tsv-section--schwarz .tsv-kopfzeile { margin-bottom: 20px !important; }
.tsv-widget-box > :last-child { margin-bottom: 0; }

@media (max-width: 768px) {
	.entry-content > .tsv-section,
	.tsv-section { padding: 36px 0; }
	p.tsv-sprungmarken { gap: 6px 18px; font-size: 15px; }
	.tsv-kopfzeile > :first-child { flex-basis: 100%; }
}
.tsv-section:not(.tsv-section--grau):not(.tsv-section--schwarz):not(.tsv-section--rot) + .tsv-section--eng { padding-top: 8px; }

/* ==========================================================================
   Mannschaftsseiten (wie im Entwurf): Text oben, Infokästen nebeneinander
   ========================================================================== */
.tsv-mannschaftsseite #infos .wp-block-columns {
	flex-direction: column;
	gap: 24px;
}
.tsv-mannschaftsseite #infos .wp-block-column {
	flex-basis: auto !important;
	width: 100%;
}
.tsv-mannschaftsseite #infos .wp-block-column:first-child { max-width: 780px; }
.tsv-mannschaftsseite #infos .tsv-boxen,
.tsv-mannschaftsseite #infos .tsv-infoboxen {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: 16px;
	align-items: start;
}
/* Seitenkopf ohne Foto: kompakter */
.tsv-mannschaftsseite .tsv-section--grau:first-child { padding-bottom: 40px; }
.tsv-mannschaftsseite .tsv-section--grau .tsv-kicker { letter-spacing: .6px; }

/* Widgets (fussball.de, handball) auf volle Breite */
.tsv-widget-box iframe,
.tsv-widget-box .fubade-widget,
.tsv-widget-box [id^="fubade"] {
	width: 100% !important;
	max-width: 100% !important;
}
.tsv-widget-box { padding: 16px; }

/* Handball: Spiele und Tabelle nebeneinander */
.tsv-hb-raster {
	display: grid;
	grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
	gap: 24px;
	align-items: start;
}
.tsv-hb-raster--eins { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 900px) { .tsv-hb-raster { grid-template-columns: minmax(0, 1fr); } }

/* Handball: Link-Kasten zu handball.net */
.tsv-hb-link {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 14px 24px;
	padding: 22px 24px;
	border: 2px solid var(--tsv-linie);
	border-radius: var(--tsv-radius);
	background: #fff;
	color: var(--tsv-schwarz);
}
.tsv-hb-link p { margin: 0; flex: 1 1 320px; font-size: 17px; }
.tsv-hb-button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 44px;
	padding: 10px 18px;
	border-radius: 6px;
	background: var(--tsv-rot);
	color: #fff !important;
	font-weight: 700;
	text-decoration: none !important;
	white-space: nowrap;
}
.tsv-hb-button:hover { background: var(--tsv-rot-dunkel); }
.tsv-section--schwarz .tsv-widget-box .tsv-hb-link,
.tsv-widget-box .tsv-hb-link { border: 0; padding: 4px; }

/* Beitragsbilder: Ausschnitt im oberen Drittel (Köpfe bleiben sichtbar), Aufmacher etwas höher */
.tsv-card__bild img { object-position: 50% 25%; }
.tsv-card--lead .tsv-card__bild { aspect-ratio: 16 / 9; }

/* Startseite: Abstand zwischen Aufmacher und den weiteren Beiträgen; Karten nutzen die volle Breite */
.tsv-section .wp-block-columns + .tsv-news,
.tsv-news + .tsv-news { margin-top: 28px; }
.tsv-news + .wp-block-buttons { margin-top: 28px; }
.tsv-news__grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.tsv-news__grid:has(> .tsv-card:only-child) { grid-template-columns: minmax(0, 420px); }
@media (max-width: 781px) {
	.tsv-section .wp-block-columns > .wp-block-column + .wp-block-column { margin-top: 24px; }
}

/* Logo-Schild mit etwas Abstand zur schwarzen Leiste darüber */
.site-header .site-logo {
	margin-top: 10px;
	margin-bottom: -44px;
	border-radius: 14px 14px 50px 50px;
}
@media (max-width: 768px) {
	.site-header .site-logo { margin-top: 6px; margin-bottom: -26px; border-radius: 10px 10px 34px 34px; }
}

/* ==========================================================================
   Startseite: „Der TSV stellt sich vor“ und Sponsoren
   ========================================================================== */
.tsv-section .wp-block-column > .tsv-kicker:first-child { margin-bottom: 6px !important; }
.tsv-section--verein .wp-block-buttons { margin-top: 22px; gap: 10px; }
.tsv-section--verein .wp-block-columns { gap: 56px; }

/* Service-Kacheln mit Pfeil */
.tsv-kacheln--service { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.tsv-kachel--pfeil { padding: 16px 44px 16px 18px; transition: border-color .15s, box-shadow .15s; }
.tsv-kachel--pfeil::after {
	content: "›";
	position: absolute;
	right: 18px;
	top: 50%;
	transform: translateY(-50%);
	font: 400 28px/1 var(--tsv-schrift);
	color: var(--tsv-rot);
	transition: transform .15s;
}
.tsv-kachel--pfeil:hover { box-shadow: 0 4px 14px rgba(0, 0, 0, .06); }
.tsv-kachel--pfeil:hover::after { transform: translate(3px, -50%); }
.tsv-kachel--pfeil h3 { font-size: 18px; }

/* Zentrierter Abschnitt (Sponsoren) */
.tsv-section--mitte .tsv-inner { text-align: center; }
.tsv-section--mitte .tsv-lead { margin-left: auto; margin-right: auto; }
.tsv-section--mitte .wp-block-buttons { justify-content: center; margin-top: 28px; gap: 10px; }
.tsv-section--mitte h2 { margin-bottom: 10px; }

/* Logos */
.tsv-logos {
	display: flex !important;
	flex-wrap: wrap;
	justify-content: center;
	gap: 14px;
	margin: 26px 0 0 !important;
}
.tsv-logos > * { margin: 0 !important; }
.tsv-logos .wp-block-image,
.tsv-logos > a,
.tsv-logos .wp-block-group__inner-container > a,
.tsv-logos > p {
	width: 170px;
	height: 96px;
	padding: 12px 16px;
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border-radius: 8px;
	border: 0;
}
.tsv-logos .wp-block-image a,
.tsv-logos > p > a { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
.tsv-logos img {
	width: auto !important;
	height: auto !important;
	max-width: 100% !important;
	max-height: 66px !important;
	object-fit: contain;
	filter: grayscale(100%);
	opacity: .85;
	transition: filter .2s, opacity .2s;
}
.tsv-logos a:hover img,
.tsv-logos a:focus-visible img { filter: none; opacity: 1; }
.tsv-section--mitte .tsv-leise { margin: 26px 0 0 !important; }
.tsv-logos--partner { margin-top: 12px !important; }

/* Footer: Inhalt in der Seitenbreite (die Klasse tsv-section darf hier den Rand nicht zurücksetzen) */
.tsv-footer .tsv-inner {
	margin-left: auto !important;
	margin-right: auto !important;
	padding: 48px 24px 26px !important;
}
.tsv-footer p { margin: 0 0 6px; }
.tsv-footer .tsv-footer__name { margin-bottom: 10px; }
.tsv-footer h3 { margin-bottom: 10px; }
.tsv-section--rot .wp-block-columns { align-items: center; }
.tsv-section--rot .wp-block-column:last-child .wp-block-buttons { justify-content: flex-end; }
@media (max-width: 781px) { .tsv-section--rot .wp-block-column:last-child .wp-block-buttons { justify-content: flex-start; } }

/* Schritte (z. B. „So wirst du Mitglied“) */
.tsv-schritte {
	display: grid !important;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
}
.tsv-schritt {
	position: relative;
	border: 2px solid var(--tsv-linie);
	border-radius: var(--tsv-radius);
	padding: 22px 22px 20px;
	margin: 0 !important;
	background: #fff;
}
.tsv-schritt p { margin: 0 0 10px; }
.tsv-schritt > :last-child,
.tsv-schritt .wp-block-group__inner-container > :last-child { margin-bottom: 0; }
.tsv-schritt h3 { margin: 0 0 10px !important; font-size: 22px; }
p.tsv-schritt__nr {
	width: 36px;
	height: 36px;
	border-radius: 50%;
	background: var(--tsv-rot);
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	font: 700 18px/1 var(--tsv-titel);
	margin: 0 0 12px !important;
}
.tsv-schritt .wp-block-buttons { margin-top: 6px; }
.tsv-section--rot .wp-block-column > p { color: #fff; }

/* ==========================================================================
   Archivseiten (Kategorien, News)
   ========================================================================== */
.tsv-archiv .site-content { display: block; }
.tsv-archiv .content-area { width: 100%; float: none; }
.tsv-archiv .tsv-section--grau .wp-block-buttons { margin: 0 0 4px; }
.tsv-archiv__filter { margin-top: 22px; padding-top: 18px; border-top: 1px solid #DAD6D0; }
.tsv-seitenzahl { font-size: .5em; color: var(--tsv-text-leise); font-weight: 600; }
@media (min-width: 900px) {
	.tsv-news--archiv .tsv-card--lead .tsv-card__link { flex-direction: row; }
	.tsv-news--archiv .tsv-card--lead .tsv-card__bild { flex: 0 0 58%; aspect-ratio: 16 / 10; }
	.tsv-news--archiv .tsv-card--lead .tsv-card__text { align-self: center; padding: 28px 32px; }
}

/* Seitennavigation */
.navigation.tsv-seiten,
.navigation.pagination { margin-top: 40px; }
.navigation.tsv-seiten .nav-links,
.navigation.pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
}
.navigation.tsv-seiten .page-numbers, .navigation.pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding: 0 14px;
	border: 2px solid var(--tsv-linie-dunkel);
	border-radius: 999px;
	color: var(--tsv-schwarz);
	font-weight: 600;
	text-decoration: none;
	box-sizing: border-box;
}
.navigation.tsv-seiten a.page-numbers:hover, .navigation.pagination a.page-numbers:hover { border-color: var(--tsv-schwarz); }
.navigation.tsv-seiten .page-numbers.current, .navigation.pagination .page-numbers.current { background: var(--tsv-schwarz); border-color: var(--tsv-schwarz); color: #fff; }
.navigation.tsv-seiten .page-numbers.dots, .navigation.pagination .page-numbers.dots { border: 0; min-width: auto; }

/* ==========================================================================
   Startseite: unter dem weißen Header beginnt es hellgrau (wie die Seitenköpfe der Unterseiten).
   „Aktuelles“ grau, „Finde deinen Sport“ dafür weiß – so wechseln sich die Flächen ab.
   ========================================================================== */
.entry-content > .tsv-section:first-child:has(.tsv-news--aufmacher) { background: var(--tsv-grau); }
.entry-content > .tsv-section:first-child:has(.tsv-news--aufmacher) .tsv-infobox--grau {
	background: #fff;
	border-color: #fff;
}
.entry-content > .tsv-section:first-child:has(.tsv-news--aufmacher) + .tsv-section--grau { background: #fff; }
.entry-content > .tsv-section:first-child:has(.tsv-news--aufmacher) + .tsv-section--grau .tsv-tile { border-color: var(--tsv-linie); }
.entry-content > .tsv-section:first-child:has(.tsv-news--aufmacher) + .tsv-section--grau .tsv-tile:hover { border-color: var(--tsv-rot) !important; }

/* ==========================================================================
   Normale Seiten und Beiträge: Text in Lesebreite
   ========================================================================== */
.tsv-seite .site-content,
.tsv-beitrag .site-content { display: block; }
.tsv-seite .content-area,
.tsv-beitrag .content-area { width: 100%; float: none; }

.tsv-text { font-size: 17px; line-height: 1.65; }
.tsv-text > p,
.tsv-text > ul,
.tsv-text > ol,
.tsv-text > h2,
.tsv-text > h3,
.tsv-text > h4,
.tsv-text > blockquote,
.tsv-text > .wp-block-heading,
.tsv-text > .wp-block-list,
.tsv-text > .wp-block-quote { max-width: 780px; }
.tsv-text > h2,
.tsv-text > .wp-block-heading:is(h2) { font-size: clamp(26px, 2.6vw, 32px); margin: 1.6em 0 .5em; }
.tsv-text > h3,
.tsv-text > .wp-block-heading:is(h3) { font-size: clamp(21px, 2vw, 24px); margin: 1.4em 0 .4em; }
.tsv-text > :first-child { margin-top: 0 !important; }
.tsv-text a { text-decoration: underline; text-underline-offset: 3px; }
.tsv-text .wp-block-button__link { text-decoration: none; }
.tsv-text figure { margin-bottom: 1.5em; }
.tsv-text img { border-radius: 6px; height: auto; }
.tsv-text figcaption { font-size: 14px; color: var(--tsv-text-leise); }
.tsv-text table { border-collapse: collapse; width: 100%; }
.tsv-text table td,
.tsv-text table th { border: 0; border-top: 1px solid var(--tsv-linie); padding: 8px 10px 8px 0; vertical-align: top; }
.tsv-text blockquote { border-left: 4px solid var(--tsv-rot); padding: 4px 0 4px 18px; margin-left: 0; font-style: italic; }

/* Beitrag: Kopf grau, Inhalt weiß – wie auf den Seiten */
.tsv-beitrag__kopf h1 { max-width: 900px; margin: 0; font-size: clamp(32px, 4vw, 48px); }
.tsv-beitrag__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 12px; font-size: 15px; color: var(--tsv-text-leise); }
.tsv-beitrag__kat {
	background: var(--tsv-schwarz);
	color: #fff !important;
	padding: 3px 10px;
	border-radius: 4px;
	font-weight: 700;
	font-size: 14px;
	text-decoration: none !important;
}
/* Mit Foto: der graue Kopf wird unten länger, das Foto ragt hinein */
.tsv-beitrag__kopf--bild { padding-bottom: 150px !important; }
.tsv-beitrag__bild {
	margin: -150px 0 32px;
	max-width: 900px;
	position: relative;
}
.tsv-beitrag__bild img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 600px;
	object-fit: cover;
	border-radius: 12px;
	box-shadow: 0 10px 30px rgba(0, 0, 0, .12);
}
.tsv-beitrag__bild figcaption { padding-top: 8px; font-size: 14px; color: var(--tsv-text-leise); }
.tsv-beitrag__body { padding-top: 40px !important; }
.tsv-beitrag__kopf--bild + .tsv-beitrag__body { padding-top: 0 !important; }
.tsv-beitrag__text { max-width: 780px; font-size: 18px; }
.tsv-beitrag__text > * { max-width: none; }
.tsv-beitrag__tags { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 28px; max-width: 780px; }
.tsv-beitrag__nav {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
	max-width: 780px;
	margin-top: 40px;
	padding-top: 24px;
	border-top: 1px solid var(--tsv-linie);
}
.tsv-beitrag__nav-link {
	display: block;
	border: 2px solid var(--tsv-linie);
	border-radius: 10px;
	padding: 14px 18px;
	color: var(--tsv-schwarz);
	font-weight: 600;
	text-decoration: none;
	line-height: 1.35;
}
.tsv-beitrag__nav-link span { display: block; font-size: 13px; font-weight: 700; color: var(--tsv-rot); margin-bottom: 2px; }
.tsv-beitrag__nav-link:hover { border-color: var(--tsv-rot); color: var(--tsv-schwarz); }
.tsv-beitrag__nav-link--next { text-align: right; }
.tsv-beitrag__kommentare { max-width: 780px; }
.tsv-beitrag__abteilung { margin-top: 24px; }
@media (max-width: 768px) {
	.tsv-beitrag__kopf--bild { padding-bottom: 80px !important; }
	.tsv-beitrag__bild { margin-top: -80px; }
	.tsv-beitrag__text { font-size: 17px; }
	.tsv-beitrag__nav { grid-template-columns: 1fr; }
	.tsv-beitrag__nav-link--next { text-align: left; }
}

/* Ältere Buttons in bestehenden Inhalten im Vereinsrot (sofern keine eigene Farbe gewählt ist) */
.tsv-text .wp-block-button:not([class*="is-style-tsv"]) .wp-block-button__link:not(.has-background) {
	background: var(--tsv-rot);
	color: #fff;
}
.tsv-text .wp-block-button:not([class*="is-style-tsv"]) .wp-block-button__link:not(.has-background):hover { background: var(--tsv-rot-dunkel); }
.tsv-beitrag__body .tsv-inner > .tsv-beitrag__bild { margin-top: -150px; }
@media (max-width: 768px) { .tsv-beitrag__body .tsv-inner > .tsv-beitrag__bild { margin-top: -80px; } }
.tsv-beitrag__kopf--bild { padding-bottom: 182px !important; }
@media (max-width: 768px) { .tsv-beitrag__kopf--bild { padding-bottom: 104px !important; } }
.tsv-inner.tsv-beitrag__kommentare { max-width: var(--tsv-breite); }
.tsv-beitrag__kommentare > * { max-width: 780px; }

/* Erster Abschnitt unter dem Header: genug Abstand, damit das Logo-Schild nicht in die Brotkrumen ragt */
.tsv-vorlage .entry-content > .tsv-section:first-child,
.tsv-vorlage .site-main > .tsv-section:first-child,
.tsv-vorlage .site-main > article > .tsv-section:first-child { padding-top: 72px; }
@media (max-width: 768px) {
	.tsv-vorlage .entry-content > .tsv-section:first-child,
	.tsv-vorlage .site-main > .tsv-section:first-child,
	.tsv-vorlage .site-main > article > .tsv-section:first-child { padding-top: 48px; }
}

/* Beitragsbild: so breit wie der Text, einheitlich 3:2, Ausschnitt oben (anpassbar pro Beitrag) */
.tsv-beitrag__bild { max-width: 780px; }
.tsv-beitrag__bild img {
	aspect-ratio: 3 / 2;
	max-height: none;
	object-fit: cover;
	object-position: 50% 25%;
}
.tsv-beitrag__kopf--bild { padding-bottom: 152px !important; }
.tsv-beitrag__body .tsv-inner > .tsv-beitrag__bild { margin-top: -120px; }
@media (max-width: 768px) {
	.tsv-beitrag__kopf--bild { padding-bottom: 92px !important; }
	.tsv-beitrag__body .tsv-inner > .tsv-beitrag__bild { margin-top: -68px; }
}

/* Kein weißer Streifen über dem Footer: Abstände, die GeneratePress um Inhalt und Artikel legt, zurücksetzen */
.tsv-vorlage .site-content { padding: 0 !important; }
.tsv-vorlage .site-main > *,
.tsv-vorlage .site-main > article,
.tsv-vorlage .content-area > .site-main { margin-bottom: 0 !important; }
.tsv-vorlage .content-area { margin: 0 !important; padding: 0 !important; }
.tsv-vorlage #page,
.tsv-vorlage .site.container { margin-bottom: 0 !important; padding-bottom: 0 !important; }
.tsv-vorlage .site-main > article > .tsv-section:last-child,
.tsv-vorlage .entry-content > .tsv-section:last-child { margin-bottom: 0 !important; }
.site-footer,
.site-footer > .tsv-footer,
.tsv-footer { margin-top: 0 !important; }
