/* =========================================================================
   Schachverein Frauental – Bausteine des Plugins
   -------------------------------------------------------------------------
   Mannschaften, Chronik, Jahresseiten, Turniere, Sponsoren und die
   Bausteine im Seitentext ("Unser Verein").

   Ruhig und serioes statt laut: eine gut gemachte Vereinsseite, kein
   Baukasten. Entscheidung des Vereins vom 2026-10-13 ("schaut zu sehr nach
   KI aus, nicht so starke Farben"):

   - Farben gedaempft. Vereinsblau entsaettigt (um #2c4a72) und sparsam:
     Links, aktive Reiter, kleine Markierungen. Ocker (#b8862b) nur fuer
     winzige Details, nie als Flaeche, nie als Schrift auf Weiss. Sonst
     Weiss, ein neutrales Hellgrau und Tinte.
   - Ueberschriften in normaler Schreibweise. Barlow Condensed nur fuer
     Zahlen (Jahreszahlen, Tabellenziffern).
   - Karten flach: 1-px-Rahmen, Radius 8, kein Schatten, kein Huepfen.
     Knoepfe rechteckig mit Radius 6. Pillen und Reiter mit Rahmen, aktiv
     blau gefuellt.
   - Symbole nur, wo sie etwas aussagen. Keine Gelb-Balken, keine
     Zahlenwaende, keine Schachbrett-Platzhalter.
   - Nur hell: das Theme hat kein Dunkelschema, also auch hier keines.

   Die Token lesen die Variablen des Themes und haben die Zielwerte als
   Rueckfall - ohne Theme (etwa unter Hestia) sieht alles gleich aus.

   Spezifitaet: theme.css wird NACH dieser Datei geladen. Wo ein Baustein
   im Seiteninhalt (.prose) etwas anderes braucht als das Theme, hebt ein
   angehaengtes [class] bzw. [href]/[src] die Regel darueber - ohne
   !important.
   ========================================================================= */

:root {
	--svf-blau: var(--brand, #2c4a72);
	--svf-blau-dunkel: var(--brand-dark, #213a5b);
	--svf-ocker: var(--accent, #b8862b);
	--svf-ink: var(--ink, #1d1f23);
	--svf-graphite: var(--ink-2, #3c4047);
	--svf-muted: var(--muted, #5d6168);
	--svf-line: var(--line, #e2e2dc);
	--svf-line-stark: var(--line-strong, #c9c9c2);
	--svf-bg: var(--bg-soft, #f5f5f2);
	--svf-paper: var(--white, #ffffff);
	/* Hinterlegung von Vereinsspielern in Tabellen: ein Hauch Ocker,
	   Tinte darauf 16:1. */
	--svf-marke: #f7f0e1;

	/* Aeltere Namen, die das Hestia-Stylesheet des Plugins noch benutzt. */
	--svf-accent: var(--svf-blau);
	--svf-accent-hover: var(--svf-blau-dunkel);
	--svf-accent-soft: var(--brand-tint, var(--svf-bg));
	--svf-auf-akzent: #ffffff;
	--svf-rule: var(--svf-line);

	--svf-r: 8px;
	--svf-r-knopf: 6px;

	--svf-sans: var(--font-body, "Barlow", "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
	/* Nur fuer Zahlen. */
	--svf-zahl: var(--font-num, "Barlow Condensed", "Arial Narrow", "Roboto Condensed", system-ui, sans-serif);
	/* Keine Serifen mehr. Der Name bleibt fuer das Hestia-Stylesheet. */
	--svf-serif: var(--svf-sans);

	--svf-t-xs: 13px;
	--svf-t-sm: 14px;
	--svf-t-md: 15px;
	--svf-t-base: 17px;
	--svf-t-lg: 19px;
	--svf-t-xl: 21px;
	--svf-t-2xl: 24px;
	--svf-t-3xl: 27px;

	--svf-gap: 24px;
}

/* =========================================================================
   Grundbausteine
   ========================================================================= */

/* Ausgeblendetes bleibt ausgeblendet, auch wenn ein Baustein display setzt. */
[class*="svf-"][hidden] { display: none !important; }

/* Listen der Bausteine ohne Marken und Einzug - auch im Seiteninhalt des
   Themes. Dessen ::marker-Inhalt bliebe sonst trotz list-style stehen. */
ul[class*="svf-"][class*="svf-"],
ol[class*="svf-"][class*="svf-"] { list-style: none; margin: 0; padding: 0; }
ul[class*="svf-"] > li + li,
ol[class*="svf-"] > li + li { margin-top: 0; }
ul[class*="svf-"] > li::marker,
ol[class*="svf-"] > li::marker { content: none; }

/* Das Theme setzt unter Ueberschriften im Inhalt einen Strich und an
   verlinkte Ueberschriften einen Pfeil. Die Bausteine haben ihre eigene
   Ordnung - dort beides zurueck. Wo ::after als Klickflaeche ueber einer
   Karte liegt, wird es weiter unten neu gesetzt. */
[class*="svf-"]:is(h1, h2, h3, h4)[class]::after { content: none; display: none; }
[class*="svf-"]:is(h2, h3, h4) a[href]::after {
	display: none; width: auto; height: auto; margin: 0;
	background: none; -webkit-mask: none; mask: none; transform: none;
}

.svf-icon { width: 1.1em; height: 1.1em; flex: none; }

/* Nur fuer Vorleseprogramme. Die Bausteine nutzen die WordPress-Klasse;
   das eigene Theme kennt sie nicht von selbst. */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

.svf-lead[class] {
	font-size: 1.2rem;
	line-height: 1.6;
	color: var(--svf-graphite);
	max-width: 62ch;
	margin-bottom: 40px;
}

.svf-empty[class] {
	padding: 18px 20px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	color: var(--svf-graphite);
	max-width: 62ch;
}

/* Hinweis fuer angemeldete Redakteure - Besucher sehen ihn nie. */
.svf-redaktion[class] {
	margin: 0;
	padding: 10px 14px;
	border-radius: var(--svf-r-knopf);
	background: var(--svf-marke);
	color: var(--svf-ink);
	font-size: .9rem;
}
.svf-redaktion a[href] { color: var(--svf-blau); font-weight: 600; }

/* --- Abschnittstitel -------------------------------------------------- */

.svf-section-title[class] {
	margin: 64px 0 20px;
	font-family: var(--svf-sans);
	font-weight: 700;
	font-size: clamp(1.5rem, 2.4vw, 1.85rem);
	line-height: 1.2;
	letter-spacing: -.005em;
	text-transform: none;
	color: var(--svf-ink);
}
.svf-section-title[class]:first-child { margin-top: 0; }

/* Zahl neben einem Titel */
.svf-count {
	margin-left: .35em;
	color: var(--svf-muted);
	font-family: var(--svf-zahl);
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}
.svf-count::before { content: "("; }
.svf-count::after { content: ")"; }

.svf-more[href] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 0;
	font-weight: 600;
	color: var(--svf-blau);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}
.svf-more[href]:hover { color: var(--svf-blau-dunkel); text-decoration-thickness: 2px; }
.svf-more .svf-icon { width: 16px; height: 16px; }

/* --- Knoepfe ---------------------------------------------------------- */

.svf-btn[class] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 40px;
	padding: 0 14px;
	border: 1px solid var(--svf-line-stark);
	border-radius: var(--svf-r-knopf);
	background: var(--svf-paper);
	color: var(--svf-blau);
	font-family: var(--svf-sans);
	font-size: .95rem;
	font-weight: 600;
	line-height: 1.2;
	text-transform: none;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .15s, border-color .15s;
}
.svf-btn[class]:hover { background: var(--svf-bg); border-color: var(--svf-blau); color: var(--svf-blau-dunkel); }
.svf-btn .svf-icon { width: 16px; height: 16px; }

/* Der Liveticker ist die eine Hauptaktion einer Mannschaft. */
.svf-btn-live[class] {
	border-color: var(--svf-blau);
	background: var(--svf-blau);
	color: #ffffff;
}
.svf-btn-live[class]:hover { border-color: var(--svf-blau-dunkel); background: var(--svf-blau-dunkel); color: #ffffff; }

/* =========================================================================
   Tabellen: heller Kopf, Ziffern fluchten
   ========================================================================= */

.svf-table-wrap {
	margin: 0;
	overflow-x: auto;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	-webkit-overflow-scrolling: touch;
}

table.svf-table[class] {
	display: table;
	width: 100%;
	max-width: none;
	margin: 0;
	border-collapse: collapse;
	border-radius: 0;
	box-shadow: none;
	font-size: 1rem;
	line-height: 1.4;
	font-variant-numeric: tabular-nums;
	overflow: visible;
}
.svf-table[class] th,
.svf-table[class] td {
	padding: 10px 14px;
	border: 0;
	border-bottom: 1px solid var(--svf-line);
	background: none;
	text-align: left;
	vertical-align: middle;
}
.svf-table[class] tbody tr:last-child td { border-bottom: 0; }
.svf-table[class] thead th {
	background: var(--svf-bg);
	color: var(--svf-ink);
	font-family: var(--svf-sans);
	font-size: .9rem;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	white-space: nowrap;
}
.svf-table[class] tbody tr:nth-child(even) td { background: none; }
.svf-table[class] .svf-num { text-align: right; white-space: nowrap; font-family: var(--svf-zahl); font-size: 1.05rem; font-weight: 500; }
.svf-table[class] .svf-perf { font-weight: 700; }

/* Vereinsspieler in der Endtabelle von chess-results: hinterlegt und
   fett - die Farbe allein waere kein ausreichendes Kennzeichen, die
   Schriftstaerke traegt die Unterscheidung mit. */
.svf-table[class] tr.svf-cr-verein td { background: var(--svf-marke); font-weight: 700; color: var(--svf-ink); }
.svf-table-cr[class] td:first-child,
.svf-table-cr[class] th:first-child { width: 3.5em; text-align: right; }

/* =========================================================================
   Mannschaften
   ========================================================================= */

/* --- Saison-Reiter und Sprungmarken ----------------------------------- */

.svf-saisonleiste {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px 24px;
	margin: 0 0 8px;
}

.svf-seasons {
	position: relative;
	display: inline-flex;
	gap: 2px;
	max-width: 100%;
	padding: 3px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	overflow-x: auto;
	scrollbar-width: none;
}
.svf-seasons::-webkit-scrollbar { display: none; }

/* Wischleisten (Saison-Reiter, Turnierfilter): svf.js setzt die Klassen,
   solange es zur jeweiligen Seite weitergeht. Der Verlauf zeigt den
   Anschnitt als Absicht. */
.svf-mehr-rechts { -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent); mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent); }
.svf-mehr-links { -webkit-mask-image: linear-gradient(to right, transparent, #000 44px); mask-image: linear-gradient(to right, transparent, #000 44px); }
.svf-mehr-links.svf-mehr-rechts {
	-webkit-mask-image: linear-gradient(to right, transparent, #000 44px, #000 calc(100% - 44px), transparent);
	mask-image: linear-gradient(to right, transparent, #000 44px, #000 calc(100% - 44px), transparent);
}

.svf-season-btn[class] {
	flex: none;
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 16px;
	border-radius: var(--svf-r-knopf);
	color: var(--svf-graphite);
	font-family: var(--svf-zahl);
	font-size: 1.15rem;
	font-weight: 600;
	letter-spacing: .01em;
	text-decoration: none;
	font-variant-numeric: tabular-nums;
	transition: background-color .15s, color .15s;
}
.svf-season-btn[class]:hover { color: var(--svf-ink); background: var(--svf-bg); }
.svf-season-btn.is-active[class],
.svf-season-btn.is-active[class]:hover { background: var(--svf-blau); color: #ffffff; }
.svf-season-btn:focus-visible { outline-offset: -3px; }
.svf-season-btn.is-active:focus-visible { outline-color: #ffffff; }

.svf-sprung-liste[class] { display: flex; flex-wrap: wrap; gap: 6px; }
.svf-sprung .svf-nav-jahr[href] {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 40px;
	padding: 0 12px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r-knopf);
	color: var(--svf-graphite);
	font-weight: 500;
	font-size: .95rem;
	text-decoration: none;
}
.svf-sprung .svf-nav-jahr[href]:hover { border-color: var(--svf-line-stark); color: var(--svf-ink); }
.svf-sprung .is-hier .svf-nav-jahr[href] { border-color: var(--svf-blau); color: var(--svf-blau); }
.svf-nav-zahl { color: var(--svf-muted); font-size: .85rem; font-variant-numeric: tabular-nums; }

.svf-season-intro[class] { margin: 20px 0 0; color: var(--svf-graphite); max-width: 62ch; }

/* --- Gruppen und Karten ----------------------------------------------- */

.svf-kat-gruppe { scroll-margin-top: 24px; }
.svf-kat[class] {
	margin: 48px 0 20px;
	font-family: var(--svf-sans);
	font-weight: 700;
	font-size: clamp(1.5rem, 2.4vw, 1.85rem);
	line-height: 1.2;
	text-transform: none;
	color: var(--svf-ink);
}
.svf-panel .svf-kat-gruppe:first-of-type .svf-kat[class] { margin-top: 36px; }
.svf-kat-saison {
	margin-left: .25em;
	color: var(--svf-muted);
	font-family: var(--svf-zahl);
	font-weight: 500;
	font-variant-numeric: tabular-nums;
}
/* Auf der Jahresseite steht die Saison schon im Abschnittstitel. */
.svf-jahr .svf-kat-saison { display: none; }
.svf-jahr .svf-kat[class] { font-size: 1.25rem; margin: 28px 0 14px; }

.svf-team-raster {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
	gap: var(--svf-gap);
	align-items: stretch;
}

.svf-team {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: 22px 22px 20px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	color: var(--svf-ink);
}
.svf-team-titel[class] {
	margin: 0;
	font-family: var(--svf-sans);
	font-size: 1.3rem;
	font-weight: 600;
	line-height: 1.2;
	text-transform: none;
	color: var(--svf-ink);
}
.svf-team-titel a[href] { color: inherit; text-decoration: none; }
.svf-team-titel a[href]:hover { color: var(--svf-blau); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
/* Die Ligazeile hat immer dieselbe Hoehe - auch leer. So stehen Ergebnis
   und Knoepfe in einer Reihe mit den Nachbarkarten. */
.svf-team-liga[class] { display: block; margin: 0; min-height: 1.6em; line-height: 1.6; color: var(--svf-muted); font-weight: 500; }
.svf-team-liga-fehlt[class] { font-style: italic; }
.svf-team-liga-fehlt a[href] { color: var(--svf-blau); font-style: normal; font-weight: 600; font-size: .9rem; }

/* Saisonergebnis: eine Textzeile unter einer feinen Linie. Ein Aufstieg
   bekommt einen kleinen Ocker-Punkt - das einzige Ocker der Karte. Kein
   Kasten, kein Symbol. */
.svf-team-ergebnis[class] {
	margin: 8px 0 0;
	padding-top: 12px;
	border-top: 1px solid var(--svf-line);
	font-weight: 500;
	line-height: 1.45;
	color: var(--svf-ink);
}
.svf-team-ergebnis.ist-aufstieg::before {
	content: "";
	display: inline-block;
	width: 7px;
	height: 7px;
	margin-right: 8px;
	border-radius: 50%;
	background: var(--svf-ocker);
	vertical-align: .12em;
}
.svf-team-ergebnis + .svf-team-fuehrer,
.svf-team-ergebnis + .svf-cr,
.svf-team-notiz + .svf-team-fuehrer,
.svf-team-notiz + .svf-cr { margin-top: 8px; }
/* Kurze Fassung (Startseite): ein Link auf die Ergebnisse, unten buendig. */
.svf-team-cr[class] { margin: auto 0 0; padding-top: 10px; }
.svf-team-cr a[href] { color: var(--svf-blau); font-weight: 600; }

.svf-team-fuehrer small {
	display: block;
	font-size: .85rem;
	font-weight: 500;
	color: var(--svf-muted);
}

.svf-team-notiz { color: var(--svf-graphite); font-size: 1rem; line-height: 1.55; }
.svf-team-notiz > * { margin: 0; }
.svf-team-notiz > * + * { margin-top: .6em; }

.svf-team-fuehrer p { margin: 0; }
.svf-team-fuehrer strong { display: block; font-weight: 600; }
.svf-contact[href] {
	display: inline-flex;
	align-items: center;
	min-height: 32px;
	margin-right: 14px;
	color: var(--svf-blau);
	font-size: .95rem;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 3px;
	overflow-wrap: anywhere;
}
.svf-contact[href]:hover { text-decoration-thickness: 2px; }

.svf-cr { margin-top: auto; padding-top: 4px; }
.svf-cr-links { display: flex; flex-wrap: wrap; gap: 6px; }
.svf-live-wrap { margin-top: 12px; }
.svf-live-wrap iframe {
	display: block;
	width: 100%;
	height: 560px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r-knopf);
	background: #ffffff;
}
.svf-source[class] { margin: 10px 0 0; font-size: .85rem; color: var(--svf-muted); }
.svf-source a[href] { color: var(--svf-blau); }

/* =========================================================================
   Chronik: ruhige Zeitleiste
   ========================================================================= */

.svf-chronik[class] { position: relative; }
/* Duenne Linie durch die Punkte */
.svf-chronik[class]::before {
	content: "";
	position: absolute;
	left: 5px;
	top: 12px;
	bottom: 12px;
	width: 1px;
	background: var(--svf-line-stark);
}

.svf-chronik-eintrag {
	position: relative;
	display: grid;
	grid-template-columns: 128px minmax(0, 1fr);
	gap: 8px 24px;
	align-items: start;
	padding-left: 32px;
}
.svf-chronik-eintrag::before {
	content: "";
	position: absolute;
	left: 0;
	top: 10px;
	width: 11px;
	height: 11px;
	border: 2px solid var(--svf-blau);
	border-radius: 50%;
	background: var(--svf-paper);
}
.svf-chronik-eintrag + .svf-chronik-eintrag[class] { margin-top: 28px; }

.svf-year-link[href] {
	padding-top: 2px;
	color: var(--svf-blau);
	font-family: var(--svf-zahl);
	font-size: 1.6rem;
	font-weight: 600;
	line-height: 1.05;
	text-decoration: none;
	font-variant-numeric: tabular-nums;
	overflow-wrap: break-word;
}
.svf-year-link[href]:hover { color: var(--svf-blau-dunkel); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }

.svf-chronik-karte {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	overflow: hidden;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
}
.hat-foto .svf-chronik-karte { grid-template-columns: minmax(0, 1fr) minmax(220px, 320px); }

.svf-chronik-body { padding: 20px 24px 20px; display: flex; flex-direction: column; gap: 10px; }
.svf-chronik-title[class] {
	margin: 0;
	font-family: var(--svf-sans);
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.25;
	text-transform: none;
}
.svf-chronik-title a[href] { color: var(--svf-ink); text-decoration: none; }
.svf-chronik-title a[href]:hover { color: var(--svf-blau); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.svf-chronik-text { color: var(--svf-graphite); font-size: 1.0625rem; line-height: 1.65; max-width: 68ch; }
.svf-chronik-text > * { margin: 0; }
.svf-chronik-text > * + * { margin-top: .8em; }
.svf-chronik-more[class] { margin: auto 0 0; }
.svf-chronik-more a[href] {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 4px 0;
	color: var(--svf-blau);
	font-weight: 600;
	font-size: .95rem;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 4px;
}
.svf-chronik-more a[href]:hover { color: var(--svf-blau-dunkel); text-decoration-thickness: 2px; }
.svf-chronik-more .svf-icon { width: 16px; height: 16px; }

.svf-chronik-img[class] { position: relative; margin: 0; min-height: 200px; background: var(--svf-bg); }
.svf-chronik-img img[src] {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 0;
}
.svf-chronik-img figcaption[class] {
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	margin: 0;
	padding: 18px 12px 8px;
	background: linear-gradient(180deg, rgba(29, 31, 35, 0) 0%, rgba(29, 31, 35, .78) 100%);
	color: #ffffff;
	font-size: .8rem;
	line-height: 1.35;
}

/* =========================================================================
   Jahresseite
   ========================================================================= */

.svf-jahr-block + .svf-jahr-block[class] { margin-top: 64px; }
.svf-jahr[class] { margin-top: 0; }
* + .svf-jahr[class] { margin-top: 40px; }

/* Berichte des Jahres: schlichte Liste mit Datum */
.svf-jahr-liste[class] {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
	gap: 10px;
}
.svf-bericht[href] {
	display: flex;
	align-items: center;
	gap: 14px;
	height: 100%;
	padding: 10px 14px 10px 10px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	color: var(--svf-ink);
	text-decoration: none;
	transition: border-color .15s;
}
.svf-bericht[href]:hover { border-color: var(--svf-line-stark); color: var(--svf-ink); }
.svf-bericht[href]:hover .svf-bericht-titel { color: var(--svf-blau); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.svf-kalender {
	flex: none;
	width: 48px;
	padding: 6px 0 5px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	border-radius: var(--svf-r-knopf);
	background: var(--svf-bg);
	line-height: 1;
}
.svf-kalender span { font-size: .8rem; font-weight: 600; color: var(--svf-muted); }
.svf-kalender strong { font-family: var(--svf-zahl); font-size: 1.35rem; font-weight: 600; color: var(--svf-ink); font-variant-numeric: tabular-nums; }
.svf-bericht-titel { font-weight: 500; line-height: 1.35; overflow-wrap: break-word; hyphens: auto; }

/* Voriges Jahr - Chronik - naechstes Jahr */
.svf-jahr-nav[class] {
	margin-top: 64px;
	padding-top: 24px;
	border-top: 1px solid var(--svf-line);
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 16px;
}
.svf-jahr-nav .svf-nav-prev[href],
.svf-jahr-nav .svf-nav-next[href] {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 12px 16px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	color: var(--svf-ink);
	text-decoration: none;
}
.svf-jahr-nav .svf-nav-next[href] { align-items: flex-end; text-align: right; }
.svf-jahr-nav .svf-nav-prev[href]:hover,
.svf-jahr-nav .svf-nav-next[href]:hover { border-color: var(--svf-line-stark); background: var(--svf-bg); color: var(--svf-ink); }
.svf-jahr-nav-label { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; color: var(--svf-muted); }
.svf-jahr-nav-label .svf-icon { width: 14px; height: 14px; }
.svf-jahr-nav-jahr { font-family: var(--svf-zahl); font-size: 1.5rem; font-weight: 600; line-height: 1.1; color: var(--svf-blau); font-variant-numeric: tabular-nums; }
.svf-jahr-nav .svf-nav-all[href] {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 16px;
	border: 1px solid var(--svf-line-stark);
	border-radius: var(--svf-r-knopf);
	color: var(--svf-blau);
	font-weight: 600;
	text-decoration: none;
}
.svf-jahr-nav .svf-nav-all[href]:hover { border-color: var(--svf-blau); background: var(--svf-bg); }

/* =========================================================================
   Turniere
   ========================================================================= */

/* --- Filter als Pillen ----------------------------------------------- */

.svf-filter {
	display: grid;
	gap: 12px;
	margin: 0 0 40px;
	padding: 0 0 24px;
	border-bottom: 1px solid var(--svf-line);
}
.svf-filter-zeile { display: flex; align-items: center; gap: 8px 16px; min-width: 0; }
.svf-filter-titel { flex: none; width: 100px; font-size: .95rem; font-weight: 600; color: var(--svf-muted); }
.svf-pillen[class] { display: flex; flex-wrap: wrap; gap: 6px; min-width: 0; }
.svf-pillen > li { flex: none; }

.svf-pille {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 40px;
	padding: 0 14px;
	border: 1px solid var(--svf-line);
	border-radius: 999px;
	background: var(--svf-paper);
	color: var(--svf-graphite);
	font-weight: 500;
	font-size: .95rem;
	cursor: pointer;
	user-select: none;
	transition: border-color .15s, background-color .15s, color .15s;
}
.svf-pille:hover { border-color: var(--svf-line-stark); color: var(--svf-ink); }
/* Das Ankreuzfeld bleibt fuer Tastatur und Vorleseprogramme erhalten,
   die Pille zeigt den Zustand. */
.svf-pille-haken { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.svf-pille:has(.svf-pille-haken:focus-visible) { outline: 3px solid var(--svf-blau); outline-offset: 2px; }
.svf-pille-zahl { color: var(--svf-muted); font-size: .85rem; font-variant-numeric: tabular-nums; }
/* Gewaehlt: blau gefuellt, mit Haken - nicht nur ueber die Farbe. */
.svf-pille.ist-an,
.svf-pille:has(.svf-pille-haken:checked) { border-color: var(--svf-blau); background: var(--svf-blau); color: #ffffff; }
.svf-pille.ist-an .svf-pille-zahl,
.svf-pille:has(.svf-pille-haken:checked) .svf-pille-zahl { color: rgba(255, 255, 255, .85); }
.svf-pille.ist-an::before,
.svf-pille:has(.svf-pille-haken:checked)::before {
	content: "";
	width: 13px;
	height: 13px;
	margin-left: -2px;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center / contain no-repeat;
}

.svf-filter-fuss { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 18px; }
.svf-filter-fuss:has(.svf-filter-reset[hidden]) { display: none; }
.svf-filter-stand[class] { margin: 0; color: var(--svf-graphite); font-variant-numeric: tabular-nums; }
.svf-filter-reset {
	min-height: 40px;
	padding: 0 2px;
	border: 0;
	background: none;
	color: var(--svf-blau);
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 4px;
	cursor: pointer;
}
.svf-filter-reset:hover { color: var(--svf-blau-dunkel); text-decoration-thickness: 2px; }

/* --- Karten ---------------------------------------------------------- */

/* Ein durchgehendes Raster, neueste zuerst: bei wenigen Turnieren je Jahr
   stuende sonst unter jeder Jahreszahl eine einzelne Karte vor leeren
   Spalten. Das Jahr steht im Datum jeder Karte; die Jahresueberschriften
   bleiben fuer Vorleseprogramme und als Sprungziele erhalten. */
.svf-turniere-seite .svf-turniere {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
	gap: var(--svf-gap);
	align-items: stretch;
}
.svf-turniere-seite .svf-jahr-gruppe,
.svf-turniere-seite .svf-jahr-gruppe > .svf-turnier-raster { display: contents; }
.svf-turniere-seite .svf-year[class] {
	position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0;
	overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap;
}
.svf-turniere-seite .svf-keine-treffer,
.svf-turniere-seite .svf-fussnote { grid-column: 1 / -1; }
.svf-turniere-seite .svf-fussnote[class] { margin-top: 8px; }

.svf-turnier-raster {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
	gap: var(--svf-gap);
	align-items: stretch;
}

.svf-turnier {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	transition: border-color .15s;
	scroll-margin-top: 24px;
}
.svf-turnier:hover { border-color: var(--svf-line-stark); }

.svf-turnier-foto[class] { margin: 0; aspect-ratio: 16 / 9; overflow: hidden; background: var(--svf-bg); }
.svf-turnier-foto img[src] { width: 100%; height: 100%; object-fit: cover; border-radius: 0; }

.svf-turnier-inhalt { flex: 1; display: flex; flex-direction: column; gap: 8px; padding: 18px 20px 20px; }
.svf-turnier-datum[class] { margin: 0; }
.svf-datum {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: var(--svf-muted);
	font-size: .95rem;
	font-variant-numeric: tabular-nums;
}
.svf-datum .svf-icon { width: 15px; height: 15px; color: var(--svf-muted); }
.svf-ungefaehr { margin-left: -5px; color: var(--svf-ink); font-weight: 700; cursor: help; }

.svf-turnier-titel[class] {
	margin: 0;
	font-family: var(--svf-sans);
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.25;
	text-transform: none;
	overflow-wrap: break-word;
	hyphens: auto;
}
.svf-turnier-titel a[href] { color: var(--svf-ink); text-decoration: none; }
.svf-turnier:hover .svf-turnier-titel a[href] { color: var(--svf-blau); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
/* Die ganze Karte fuehrt zum Turnier; Knoepfe, Tabelle und Links im Text
   liegen darueber und bleiben eigenstaendig bedienbar. */
.svf-turnier-titel a[href]::after { content: ""; display: block; position: absolute; inset: 0; z-index: 1; }
.svf-turnier-titel a[href]:focus-visible { outline: none; }
.svf-turnier:has(.svf-turnier-titel a:focus-visible) { outline: 3px solid var(--svf-blau); outline-offset: 3px; }
.svf-turnier .svf-cr-links,
.svf-turnier-text a,
.svf-turnier .svf-table-wrap { position: relative; z-index: 2; }

.svf-meta[class] { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.svf-ort { display: inline-flex; align-items: center; gap: 6px; color: var(--svf-graphite); font-size: .95rem; }
.svf-ort .svf-icon { width: 15px; height: 15px; color: var(--svf-muted); }
.svf-art {
	display: inline-block;
	padding: 1px 8px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r-knopf);
	color: var(--svf-graphite);
	font-size: .85rem;
}

.svf-turnier-text { color: var(--svf-graphite); font-size: 1rem; line-height: 1.6; }
.svf-turnier-text > * { margin: 0; }
.svf-turnier-text > * + * { margin-top: .7em; }
.svf-turnier-text a[href] { color: var(--svf-blau); }

.svf-turnier .svf-table-wrap { margin-top: 4px; border-radius: var(--svf-r-knopf); }
.svf-turnier .svf-table[class] { font-size: .95rem; }
.svf-turnier .svf-table[class] th,
.svf-turnier .svf-table[class] td { padding: 7px 10px; }
.svf-turnier .svf-cr-links { margin-top: 4px; }

.svf-turnier-mehr[class] {
	margin: auto 0 0;
	padding-top: 4px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--svf-blau);
	font-weight: 600;
	font-size: .95rem;
}
.svf-turnier-mehr .svf-icon { width: 16px; height: 16px; }

/* Fussnote zum Sternchen am Datum */
.svf-fussnote[class] {
	margin: 32px 0 0;
	display: flex;
	gap: 6px;
	align-items: baseline;
	color: var(--svf-muted);
	font-size: .95rem;
	max-width: 70ch;
}
.svf-fussnote > span[aria-hidden] { color: var(--svf-ink); font-weight: 700; }

/* --- Einzelseite ------------------------------------------------------ */

.svf-single-meta[class] { margin: 0 0 28px; gap: 8px 20px; }
.svf-single-meta .svf-datum,
.svf-single-meta .svf-ort { color: var(--svf-graphite); font-size: 1rem; }

.svf-turnier-detail .svf-jahr-block[class] { margin-top: 56px; }
.svf-turnier-detail .svf-section-title[class] { font-size: 1.4rem; }
/* Wenige Spalten: ueber die volle Breite gezogen stuenden Name und
   Punkte einen Bildschirm auseinander. */
.svf-turnier-detail > .svf-jahr-block:not(.svf-endtabelle) .svf-table-wrap { max-width: 760px; }
.svf-endtabelle-stand[class] { margin: -8px 0 14px; color: var(--svf-muted); }
.svf-endtabelle-hinweis[class] {
	margin: 14px 0 0;
	display: flex;
	align-items: center;
	gap: 10px;
	color: var(--svf-graphite);
	font-size: .95rem;
}
.svf-cr-marke {
	flex: none;
	width: 18px;
	height: 14px;
	border-radius: 2px;
	background: var(--svf-marke);
	box-shadow: inset 0 0 0 1px var(--svf-line);
}
.svf-endtabelle .svf-source[class] { margin-top: 8px; }
.svf-endtabelle .svf-cr-links { margin-top: 16px; }

/* chess-results direkt eingebettet: Ansichten wie die Rubrikleiste
   (Radius 6, aktiv im Blauhauch), das iframe flach mit Rahmen, darunter
   Link und Datenschutzsatz klein in Beiwerk. Bei mehreren Gruppen eine
   Reiterleiste im selben Stil (svf.js, initGruppen). */
.svf-cr-ansichten { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.svf-cr-ansichten-label { margin-right: 4px; font-size: .9rem; font-weight: 600; color: var(--svf-muted); }
.svf-cr-ansicht[href],
.svf-cr-gruppe-knopf[class] {
	display: inline-flex;
	align-items: center;
	min-height: 40px;
	padding: 0 14px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r-knopf);
	background: var(--svf-paper);
	color: var(--svf-ink);
	font-family: var(--svf-sans);
	font-size: .95rem;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .15s, border-color .15s;
}
.svf-cr-ansicht[href]:hover,
.svf-cr-gruppe-knopf[class]:hover { border-color: var(--svf-line-stark); color: var(--svf-blau); }
.svf-cr-ansicht[aria-current],
.svf-cr-gruppe-knopf[aria-selected="true"] {
	border-color: var(--svf-blau);
	background: var(--blue-tint, #e9eef4);
	color: var(--svf-blau);
	font-weight: 600;
}
.svf-cr-gruppe-knopf:focus-visible { outline: 2px solid var(--svf-blau); outline-offset: 2px; }
.svf-cr-gruppenwahl { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.svf-cr-gruppenwahl[hidden] { display: none; }
.svf-cr-gruppe + .svf-cr-gruppe { margin-top: 40px; }
.svf-cr-gruppe-titel[class] { margin: 0 0 12px; font-size: 1.2rem; font-weight: 600; }
/* Mit Auswahl nennt der Reiter die Gruppe - die Zwischenueberschrift
   bleibt nur fuer Vorleseprogramme. */
.svf-cr-mit-wahl .svf-cr-gruppe-titel {
	position: absolute; width: 1px; height: 1px; overflow: hidden;
	clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}
.svf-cr-mit-wahl .svf-cr-gruppe + .svf-cr-gruppe { margin-top: 0; }
.svf-cr-rahmen { margin-top: 14px; }
.svf-cr-rahmen iframe {
	display: block;
	width: 100%;
	min-height: 420px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r-knopf);
	background: #ffffff;
}
.svf-cr-fuss[class] { display: flex; flex-wrap: wrap; gap: 4px 16px; margin-top: 10px; }
.svf-cr-datenschutz { color: var(--svf-muted); }

/* Frueheres / spaeteres Turnier */
.svf-nachbarn[class] {
	margin-top: 56px;
	padding-top: 24px;
	border-top: 1px solid var(--svf-line);
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 16px;
}
.svf-nachbar[href] {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 12px 16px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	color: var(--svf-ink);
	text-decoration: none;
}
.svf-nachbar[href]:hover { border-color: var(--svf-line-stark); background: var(--svf-bg); color: var(--svf-ink); }
.svf-nachbar-spaeter[href] { align-items: flex-end; text-align: right; }
.svf-nachbar-label { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; color: var(--svf-muted); }
.svf-nachbar-label .svf-icon { width: 14px; height: 14px; }
.svf-nachbar-titel { font-weight: 600; line-height: 1.35; color: var(--svf-blau); }

/* =========================================================================
   Bausteine im Seitentext ("Unser Verein")
   ========================================================================= */

.svf-split[class] {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr);
	gap: 28px 56px;
	align-items: start;
}
.svf-split > div > * { margin: 0; }
.svf-split > div > * + * { margin-top: 1.1em; }

/* Spiellokal: die Anschrift mit Ortssymbol */
.svf-anschrift[class] {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 14px 16px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-bg);
	font-weight: 600;
	line-height: 1.45;
}
.svf-anschrift-icon { flex: none; padding-top: 2px; color: var(--svf-blau); }
.svf-anschrift-icon .svf-icon { width: 20px; height: 20px; }

/* Tabellen neben dem Text als Info-Karten: der Kopf wird zur hellen
   Kartenleiste, jede Zeile zu einer Angabe. */
.svf-split > table.svf-table[class] {
	display: block;
	width: auto;
	overflow: hidden;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
}
.svf-split > .svf-table[class] thead,
.svf-split > .svf-table[class] tbody { display: block; }
.svf-split > .svf-table[class] tr { display: flex; justify-content: space-between; align-items: baseline; gap: 6px 16px; flex-wrap: wrap; }
.svf-split > .svf-table[class] thead tr { background: var(--svf-bg); border-bottom: 1px solid var(--svf-line); }
.svf-split > .svf-table[class] thead th { padding: 10px 16px; border: 0; background: none; color: var(--svf-muted); }
.svf-split > .svf-table[class] thead th:empty { display: none; }
.svf-split > .svf-table[class] tbody tr { padding: 12px 16px; }
.svf-split > .svf-table[class] tbody tr + tr { border-top: 1px solid var(--svf-line); }
.svf-split > .svf-table[class] tbody td { padding: 0; border: 0; }
.svf-split > .svf-table[class] tbody td:first-child { font-weight: 600; color: var(--svf-ink); }
.svf-split > .svf-table[class] tbody td + td { color: var(--svf-graphite); text-align: right; }

/* Spielerliste: Titel als kleines Kuerzel vor dem Namen */
.svf-split > .svf-table-spieler[class] { overflow: visible; }
.svf-table-spieler[class] thead {
	position: absolute !important;
	width: 1px; height: 1px; overflow: hidden;
	clip: rect(0, 0, 0, 0); white-space: nowrap;
}
.svf-split > .svf-table-spieler[class] tbody tr {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 3.2em;
	grid-template-rows: auto auto;
	column-gap: 12px;
	align-items: baseline;
	padding: 14px 16px;
}
.svf-split > .svf-table-spieler[class] tbody td:first-child { display: contents; }
.svf-split > .svf-table-spieler[class] tbody td + td {
	grid-column: 1;
	grid-row: 2;
	text-align: left;
	font-size: .95rem;
	line-height: 1.4;
}
/* Name und Beschreibung stehen in einer Spalte, das Titelkuerzel in einer
   festen schmalen Spalte rechts davon. Eine Zeile ohne Titel (Christoph
   Weber) laesst nur diese Spalte leer - Namen und Texte bleiben buendig. */
.svf-spieler-name { grid-column: 1; grid-row: 1; font-weight: 600; line-height: 1.3; }
.svf-titel-badge {
	grid-column: 2;
	grid-row: 1;
	justify-self: end;
	padding: 2px 6px 1px;
	border: 1px solid var(--svf-line-stark);
	border-radius: 4px;
	color: var(--svf-blau);
	font-family: var(--svf-zahl);
	font-size: .9rem;
	font-weight: 600;
	letter-spacing: .03em;
	line-height: 1.2;
}
.svf-titel-ohne { border: 0; padding: 0; }

/* =========================================================================
   Sponsoren
   ========================================================================= */

/* --- Reihe ------------------------------------------------------------ */

.svf-sponsorleiste[class] { margin-top: 72px; padding-top: 40px; border-top: 1px solid var(--svf-line); }
.svf-sponsorleiste-titel[class] {
	margin: 0;
	font-family: var(--svf-sans);
	font-size: 1.1rem;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	color: var(--svf-muted);
}
.svf-sponsorleiste-reihe[class] {
	margin-top: 18px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr));
	gap: 12px;
}
.svf-sponsorleiste-logo {
	height: 104px;
	display: grid;
	place-items: center;
	padding: 18px 24px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	text-decoration: none;
	transition: border-color .15s;
}
a.svf-sponsorleiste-logo:hover { border-color: var(--svf-line-stark); }
.svf-sponsorleiste-logo img[src] {
	width: auto;
	max-width: 100%;
	max-height: 52px;
	border-radius: 0;
	filter: grayscale(1);
	opacity: .75;
	transition: filter .2s, opacity .2s;
}
a.svf-sponsorleiste-logo:hover img,
a.svf-sponsorleiste-logo:focus-visible img { filter: none; opacity: 1; }
.svf-sponsorleiste-logo .svf-sponsor-name,
.svf-sponsor-bild .svf-sponsor-name {
	font-size: 1.15rem;
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	color: var(--svf-graphite);
}
.svf-sponsorleiste-mehr[class] { margin: 14px 0 0; }

/* --- Uebersichtsseite: Logo-Karten ------------------------------------ */

.svf-sponsoren[class] {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
	gap: var(--svf-gap);
}
.svf-sponsor {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	transition: border-color .15s;
}
.svf-sponsor-klickbar:hover { border-color: var(--svf-line-stark); }
.svf-sponsor-bild {
	height: 150px;
	display: grid;
	place-items: center;
	padding: 24px;
	border-bottom: 1px solid var(--svf-line);
}
.svf-sponsor-bild img[src] { width: auto; max-width: 100%; max-height: 76px; border-radius: 0; }
.svf-sponsor-inhalt { flex: 1; display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; }
.svf-sponsor-titel[class] {
	margin: 0;
	font-family: var(--svf-sans);
	font-size: 1.15rem;
	font-weight: 700;
	line-height: 1.25;
	text-transform: none;
}
.svf-sponsor-titel a[href] { color: var(--svf-ink); text-decoration: none; }
.svf-sponsor-klickbar:hover .svf-sponsor-titel a[href] { color: var(--svf-blau); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.svf-sponsor-titel .svf-sponsor-deckung[href]::after { content: ""; display: block; position: absolute; inset: 0; z-index: 1; }
.svf-sponsor-deckung:focus-visible { outline: none; }
.svf-sponsor:has(.svf-sponsor-deckung:focus-visible) { outline: 3px solid var(--svf-blau); outline-offset: 3px; }
.svf-sponsor-text[class] { margin: 0; color: var(--svf-graphite); font-size: 1rem; line-height: 1.5; }
.svf-sponsor-link[class] { margin: auto 0 0; padding-top: 4px; color: var(--svf-muted); font-size: .9rem; overflow-wrap: anywhere; }

/* =========================================================================
   Zitat
   ========================================================================= */

.svf-zitat[class] {
	margin: 48px 0;
	padding: 28px 32px;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-bg);
	color: var(--svf-ink);
}
.svf-zitat-marke { display: block; width: 28px; height: 28px; margin-bottom: 10px; color: var(--svf-ocker); }
.svf-zitat-text[class] { margin: 0; padding: 0; background: none; border-radius: 0; }
.svf-zitat-text[class]::before { content: none; }
.svf-zitat-text p { margin: 0; font-size: clamp(1.2rem, 2vw, 1.45rem); font-weight: 500; line-height: 1.45; max-width: 52ch; }
.svf-zitat-quelle[class] { margin: 12px 0 0; color: var(--svf-muted); font-size: 1rem; }
.svf-zitat-autor { font-style: normal; font-weight: 600; color: var(--svf-ink); }
.svf-zitat-person::before { content: " · "; }

/* =========================================================================
   Nur unter Hestia: Bausteine der frueheren Startseite
   -------------------------------------------------------------------------
   Das eigene Theme baut die Startseite selbst; diese Shortcodes erscheinen
   nur, wenn Hestia wieder aktiv ist. Knapp, im selben System.
   ========================================================================= */

.svf-kopf { margin: 0 0 32px; }
.svf-kopf-titel { margin: 0; font-size: clamp(2rem, 5vw, 3rem); font-weight: 700; line-height: 1.1; color: var(--svf-ink); }
.svf-kopf-zeile { margin: 10px 0 0; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 16px; color: var(--svf-muted); }
.svf-aufmacher { margin: 20px 0 0; }
.svf-aufmacher img { border-radius: var(--svf-r); }
.svf-aufmacher figcaption { margin-top: 8px; color: var(--svf-muted); font-size: .9rem; }

.svf-eckdaten { margin: 0 0 40px; display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--svf-graphite); }
.svf-eckdaten-trenner { color: var(--svf-line-stark); }

.svf-news { margin: 0 0 48px; }
.svf-news-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); gap: var(--svf-gap); }
.svf-news-link {
	display: flex;
	flex-direction: column;
	height: 100%;
	overflow: hidden;
	border: 1px solid var(--svf-line);
	border-radius: var(--svf-r);
	background: var(--svf-paper);
	color: inherit;
	text-decoration: none;
}
.svf-news-link:hover { border-color: var(--svf-line-stark); }
.svf-news-img { margin: 0; aspect-ratio: 16 / 9; overflow: hidden; background: var(--svf-bg); }
.svf-news-img img { width: 100%; height: 100%; object-fit: cover; }
.svf-news-img-empty { aspect-ratio: 16 / 9; background: var(--svf-bg); }
.svf-news-body { padding: 16px 18px 18px; }
.svf-news-date { display: block; color: var(--svf-muted); font-size: .95rem; }
.svf-news-title { margin: 4px 0 6px; font-size: 1.2rem; font-weight: 700; line-height: 1.25; color: var(--svf-ink); }
.svf-news-link:hover .svf-news-title { color: var(--svf-blau); }
.svf-news-excerpt { margin: 0; color: var(--svf-graphite); }

.svf-saison-aktuell { margin: 0 0 48px; }
.svf-season-badge { margin-left: .3em; color: var(--svf-muted); font-weight: 500; }
.svf-team-list { border: 1px solid var(--svf-line); border-radius: var(--svf-r); background: var(--svf-paper); }
.svf-team-row {
	display: grid;
	grid-template-columns: minmax(130px, 15em) minmax(0, 1fr) auto;
	gap: 8px 22px;
	align-items: center;
	padding: 12px 16px;
}
.svf-team-row + .svf-team-row { border-top: 1px solid var(--svf-line); }
.svf-team-name { font-weight: 600; color: var(--svf-ink); text-decoration: none; }
a.svf-team-name:hover { color: var(--svf-blau); text-decoration: underline; }
.svf-saison-aktuell .svf-team-liga { margin: 0; color: var(--svf-muted); }
.svf-team-links { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.svf-team-links a { color: var(--svf-blau); }
.svf-team-soon { color: var(--svf-muted); }

/* =========================================================================
   Schmalere Schirme
   ========================================================================= */

@media (max-width: 1000px) {
	.hat-foto .svf-chronik-karte { grid-template-columns: minmax(0, 1fr); }
	.hat-foto .svf-chronik-img[class] { order: -1; min-height: 0; aspect-ratio: 16 / 9; }
	.svf-split[class] { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 700px) {
	:root { --svf-gap: 16px; }

	/* Saisonen als wischbare Leiste; die Seite selbst scrollt dabei nicht
	   waagrecht, nur die Leiste. */
	.svf-saisonleiste { display: block; }
	.svf-seasons { display: flex; width: 100%; }
	.svf-sprung { margin-top: 10px; }

	.svf-team { padding: 18px 16px 16px; }

	/* Zeitleiste: Jahreszahl ueber dem Eintrag */
	.svf-chronik-eintrag { grid-template-columns: minmax(0, 1fr); padding-left: 26px; }
	.svf-chronik-eintrag::before { top: 8px; }
	.svf-year-link[href] { font-size: 1.35rem; }
	.svf-chronik-body { padding: 16px 16px 16px; }

	/* Turnierfilter: jede Reihe wird zur wischbaren Leiste, die bis an
	   den Rand laeuft - so ist sichtbar, dass es seitlich weitergeht. */
	.svf-filter-zeile { display: block; }
	.svf-filter-titel { display: block; width: auto; padding-bottom: 6px; }
	.svf-pillen[class] {
		flex-wrap: nowrap;
		overflow-x: auto;
		margin: 0 -16px;
		padding: 2px 16px 4px;
		scrollbar-width: none;
		scroll-padding-inline: 16px;
	}
	.svf-pillen::-webkit-scrollbar { display: none; }

	.svf-jahr-nav[class] { grid-template-columns: 1fr 1fr; }
	.svf-jahr-nav .svf-nav-all[href] { grid-column: 1 / -1; grid-row: 2; justify-self: center; }

	.svf-nachbarn[class] { grid-template-columns: 1fr; }
	.svf-nachbar-spaeter[href] { align-items: flex-start; text-align: left; }

	.svf-sponsorleiste[class] { margin-top: 56px; padding-top: 32px; }
	.svf-sponsorleiste-reihe[class] { grid-template-columns: 1fr 1fr; gap: 10px; }
	.svf-sponsorleiste-logo { height: 88px; padding: 12px 14px; }
	.svf-sponsorleiste-logo img[src] { max-height: 40px; }
	.svf-sponsorleiste-logo .svf-sponsor-name { font-size: 1rem; }

	.svf-zitat[class] { padding: 22px 20px; }

	.svf-table[class] th,
	.svf-table[class] td { padding: 8px 10px; }

	.svf-team-row { grid-template-columns: minmax(0, 1fr); }
}


@media (prefers-reduced-motion: reduce) {
	.svf-btn, .svf-turnier, .svf-bericht, .svf-sponsor, .svf-sponsorleiste-logo,
	.svf-sponsorleiste-logo img, .svf-pille, .svf-season-btn,
	.svf-cr-ansicht, .svf-cr-gruppe-knopf { transition: none !important; }
}
