/*
 * Gestaltungssystem — Stand 24. August 2026
 * ========================================
 *
 * LEITREFERENZ: unvergessen-agentur.de. Uebernommen sind Gestaltung und
 * Aufbau - Typografie, Weissraum, Farbstrategie, Kopf, Fuss, Formular.
 * NICHT uebernommen ist die Verkaufsdramaturgie: keine Erfolgszahlen, keine
 * Testimonials, keine wiederholten Handlungsaufforderungen, keine
 * Problem-dann-Loesung-Inszenierung. Bei einem Bestatter waere das
 * uebergriffig - die Not ist bereits da.
 *
 * FARBEN aus dem Logo, Pixel ausgezaehlt: #404040 (der Kreis, 54 Prozent der
 * deckenden Pixel) und #8CA23E (Blatt und Schriftzug). Jeder Wert unten ist
 * mit `node tools/kontrast.mjs` nachgerechnet.
 *
 * SCHRIFT: Instrument Sans, dieselbe wie die Referenz, selbst gehostet als
 * variable Datei mit 27,9 KB.
 *
 * Drei Saetze, die jede Einzelentscheidung schlichten:
 *   1. Sehen zwei Loesungen gleich gut aus, gewinnt die besser lesbare.
 *   2. Bewegt sich etwas, braucht es dafuer einen Grund ausserhalb der Optik.
 *   3. Der Besucher sucht einen Namen oder eine Nummer. Alles dazwischen
 *      ist zu rechtfertigen.
 */

*, *::before, *::after { box-sizing: border-box; }

/* ==========================================================================
   1. TOKEN
   ========================================================================== */

:root {
	/* --- Flaechen ------------------------------------------------------- */
	--bp-weiss:  #FFFFFF;   /* Inhaltsflaechen, Karten, Formularfelder */
	--bp-ruhe:   #EDF1E4;   /* die ruhige Grundflaeche, Pendant zu #e6efed */
	--bp-ruhe-2: #E3E9D6;   /* zweite Stufe: Umschalter, Hover */

	/*
	 * Die abgesetzte Flaeche - dazugekommen am 26. August 2026.
	 *
	 * Eine Spur heller als die Grundflaeche, nicht dunkler: Sie hebt etwas
	 * HERAUS, statt es zurueckzunehmen. Gemischt aus der zweiten Stufe und
	 * Weiss, damit sie im selben Farbton bleibt - ein eigener Hex-Wert waere
	 * die zwoelfte Farbe in einer Palette, die mit elf auskommt.
	 *
	 * Verwendet an zwei Stellen: dem Angabenfeld der Kontaktseite und dem
	 * Wege-Streifen ganz oben im Kopf. Als Token, weil ein Wert an zwei
	 * Stellen sonst genau einmal geaendert wird und dann auseinanderlaeuft.
	 */
	--bp-flaeche-hell: color-mix(in srgb, var(--bp-ruhe-2) 55%, var(--bp-weiss));
	--bp-rinde:  #2B2E24;   /* dunkles Band */

	/* --- Text ----------------------------------------------------------- */
	--bp-tinte:  #191C11;   /* die EINE Tinte, 15,06:1 auf der Grundflaeche */

	/*
	 * Sekundaertext ist KEINE eigene Graustufe, sondern dieselbe Tinte mit
	 * reduzierter Deckkraft. Das ist der Kniff der Referenz: Dort traegt
	 * #0c1915 139 von rund 212 Textknoten, und /0.7, /0.5, /0.38 machen
	 * daraus drei Lautstaerken bei konstantem Farbton.
	 *
	 * 65 statt der 50 Prozent der Referenz: Nachgerechnet haelt 50 Prozent
	 * hier nur 3,2:1 - genug fuer Grossschrift, zu wenig fuer eine
	 * 16-px-Zeile. 65 Prozent erreichen 5,05:1 auf der Grundflaeche und
	 * 5,38:1 auf Weiss. Die Wirkung bleibt, der Text bleibt lesbar.
	 */
	--bp-tinte-leise: color-mix(in srgb, var(--bp-tinte) 65%, transparent);

	/* --- Linie ---------------------------------------------------------- */
	--bp-linie: #D3D9C2;    /* die EINE Linienfarbe, 1px */

	/* --- Akzent --------------------------------------------------------- */
	--bp-akzent:      #434F1D;   /* Links, Primaerknopf, 7,71:1 */
	--bp-akzent-tief: #2F3A13;   /* gedrueckt */
	--bp-marke:       #8CA23E;   /* Logo-Gruen: NUR Zierrat und Flaeche */

	/* --- Zustaende ------------------------------------------------------ */
	--bp-fehler: #8B1F26;
	--bp-erfolg: #1F5C3D;
	--bp-fokus:  #191C11;

	/* --- Abstaende ------------------------------------------------------
	 * 4er-Leiter mit 32 als Grundeinheit am Schreibtisch, 24 mobil - so wie
	 * es die Referenz macht: 93 Prozent ihrer Vorkommen liegen auf dieser
	 * Leiter, die exotischen Werte sind Abschnittspolster.
	 */
	--bp-1:  4px;   --bp-2:  8px;   --bp-3: 12px;   --bp-4: 16px;
	--bp-5: 20px;   --bp-6: 24px;   --bp-7: 32px;   --bp-8: 48px;
	--bp-9: 64px;   --bp-10: 96px;  --bp-11: 128px;

	/* --- Breiten --------------------------------------------------------
	 * Die Referenz haelt die linke Kante bei x=96 und die rechte bei
	 * x=1344 - Inhalt also 1248 breit. Das ist wichtiger als eine kurze
	 * Liste von Abstandswerten: Die senkrechten Kanten wandern nie.
	 */
	--bp-weit:   78rem;   /* 1248px */
	--bp-mittel: 55rem;   /* 880px, Pendant zu ihren 872 */
	--bp-lese:   62ch;    /* Fliesstext, Ziel 55-70 Zeichen */

	/*
	 * DIESELBE BREITE, ABER FEST - fuer Elemente mit einer ANDEREN SCHRIFT
	 * oder Groesse als der Fliesstext. Dazugekommen am 26. August 2026.
	 *
	 * `ch` ist die Breite der Ziffer Null IN DER SCHRIFT DES ELEMENTS. Fuer
	 * den Fliesstext (Instrument Sans, 20 px) sind 62ch gemessene 826 px -
	 * genau die Breite, auf der alle Absaetze und Listen stehen.
	 *
	 * Fuer eine Zwischenueberschrift in Marcellus mit 32 px sind dieselben
	 * 62ch aber rund 1200 px. Setzt man dort `var(--bp-lese)`, steht die
	 * Ueberschrift ueber die ganze Reihe und ihre Mitte liegt bei x=720,
	 * waehrend der Inhalt darunter seine Mitte bei x=509 hat. Zentriert
	 * sieht dann aus wie verrutscht.
	 *
	 * 51,6rem sind 825,6 px und damit dieselbe Kante wie 62ch am Fliesstext.
	 * WER --bp-lese AENDERT, muss diesen Wert nachziehen; sie gehoeren
	 * zusammen. Nachmessen: die Breite eines gewoehnlichen Absatzes im
	 * Seiteninhalt bei 1440 px Fenster.
	 */
	--bp-lese-fest: 51.6rem;
	--bp-rand:   var(--bp-6);

	/* --- Schrift -------------------------------------------------------- */
	--bp-schrift: "Instrument Sans", system-ui, -apple-system, "Segoe UI",
	              Roboto, "Helvetica Neue", Arial, sans-serif;

	/*
	 * Groessen aus der Referenz, gemessen am 24. August:
	 *   h1/h2   48px  lh 1.28  600  ls -0.4px      (mobil h1 24, h2 28)
	 *   h3      22px  lh 1.31  600
	 *   Text    16 / 18 / 20px  lh 1.5  400
	 *
	 * Der Fliesstext nimmt die OBERE Stufe ihrer Spanne: 18 mobil, 20 am
	 * Schreibtisch. Ihr haeufigster Wert ist 16 - fuer eine Zielgruppe
	 * ueber 60 waere das ein Rueckschritt, und beide Werte kommen auf ihrer
	 * Seite ebenso vor.
	 */
	--bp-t-h1:    clamp(1.5rem,   2.86vw + 0.857rem, 3rem);      /* 24 -> 48 */
	--bp-t-h2:    clamp(1.75rem,  2.38vw + 1.214rem, 3rem);      /* 28 -> 48 */
	--bp-t-h3:    clamp(1.25rem,  0.71vw + 1.089rem, 1.625rem);  /* 20 -> 26 */
	--bp-t-lead:  clamp(1.125rem, 0.48vw + 1.018rem, 1.375rem);  /* 18 -> 22 */
	--bp-t-text:  clamp(1.125rem, 0.24vw + 1.071rem, 1.25rem);   /* 18 -> 20 */
	--bp-t-klein: 1rem;                                           /* 16 */

	/* --- Rundungen ------------------------------------------------------
	 * Die Referenz fuehrt 4, 8, 16 und 100 px. 16 traegt Karten und Bilder,
	 * 100 macht Pillen und Avatare.
	 */
	--bp-r-klein: 6px;    /* Knoepfe, Felder */
	--bp-r-gross: 16px;   /* Karten, Bilder, Flaechen */
	--bp-r-voll:  100px;  /* Pillen, runde Bilder */

	/* --- Bewegung ------------------------------------------------------- */
	--bp-dauer: 150ms;
	--bp-easing: cubic-bezier(0.2, 0, 0.38, 0.9);

	color-scheme: light;
}

@media (min-width: 48em) { :root { --bp-rand: var(--bp-7); } }
@media (min-width: 64em) { :root { --bp-rand: var(--bp-10); } }

/* ==========================================================================
   2. GRUNDLAGEN
   ========================================================================== */

html { font-size: 100%; -webkit-text-size-adjust: 100%; }

body {
	background: var(--bp-ruhe);
	color: var(--bp-tinte);
	font-family: var(--bp-schrift);
	font-size: var(--bp-t-text);
	font-weight: 400;
	line-height: 1.5;          /* der Wert der Referenz, 97x im Einsatz */
	text-rendering: optimizeLegibility;
}

/* Linksbuendig ist die Grundstellung. Zentriert nur, was hoechstens zwei
   Zeilen lang ist - der Seitentitel und das Zitat. */
main :is(p, li, dd, dt, blockquote, figcaption, td, th) {
	text-align: start;
	text-wrap: pretty;
	letter-spacing: 0;         /* Laufweite 0 im Lesetext, wie die Referenz */
}

/* --- Ueberschriften ----------------------------------------------------- */

:is(h1, h2, h3, h4, h5, h6) {
	font-weight: 600;
	color: var(--bp-tinte);
	text-wrap: balance;
	overflow-wrap: break-word;
	/* Deutsche Komposita: "Bestattungsunternehmen" sprengt sonst die Spalte. */
	hyphens: auto;
}

h1 {
	font-size: var(--bp-t-h1);
	line-height: 1.28;
	letter-spacing: -0.0083em;   /* die -0.4px der Referenz bei 48px */
	margin-block: 0 var(--bp-6);
}

h2 {
	font-size: var(--bp-t-h2);
	line-height: 1.28;
	letter-spacing: -0.0083em;
	margin-block: var(--bp-10) var(--bp-6);
}

h3 {
	font-size: var(--bp-t-h3);
	line-height: 1.31;
	letter-spacing: -0.005em;
	margin-block: var(--bp-8) var(--bp-4);
}

h4, h5, h6 {
	font-size: var(--bp-t-lead);
	line-height: 1.4;
	margin-block: var(--bp-7) var(--bp-3);
}

:is(h1, h2, h3, h4, h5, h6):first-child { margin-block-start: 0; }

p + p { margin-block-start: var(--bp-6); }

main :is(p, ul, ol, dl, blockquote) { max-inline-size: var(--bp-lese); }

/* Sekundaertext */
.bp-leise, main small, figcaption { color: var(--bp-tinte-leise); }

/* --- Links -------------------------------------------------------------- */

/*
 * Unterstreichen ist Bedingung, nicht Geschmack: Die Akzentfarbe hebt sich
 * vom Lesetext nur mit 2,17:1 ab, gefordert sind 3:1 (WCAG 1.4.1, G183).
 *
 * Die Referenz macht es ebenso - dort tragen die Menue- und Fusszeilenlinks
 * eine feine Unterstreichung mit Abstand.
 */
main a, footer a {
	color: var(--bp-akzent);
	text-decoration: underline;
	text-underline-offset: 0.28em;
	text-decoration-thickness: 1px;
	transition: color var(--bp-dauer) var(--bp-easing);
}

main a:hover, main a:focus-visible,
footer a:hover, footer a:focus-visible {
	color: var(--bp-akzent-tief);
	text-decoration-thickness: 2px;
}

:focus-visible {
	outline: 3px solid var(--bp-fokus);
	outline-offset: 2px;
	border-radius: 2px;
	transition: none;
}

[id], :target { scroll-margin-block-start: var(--bp-10); }

/* --- Breite Inhalte scrollen in sich, nie die Seite --------------------- */
.bp-scrollt { overflow-x: auto; max-inline-size: 100%; }
.bp-scrollt table { inline-size: max-content; min-inline-size: 100%; }

/* ==========================================================================
   3. FLAECHEN UND RHYTHMUS
   ========================================================================== */

/*
 * Die Referenz trennt Abschnitte ueber Flaechenton und Weissraum, nicht ueber
 * Linien: Fuer die ganze Seite gibt es dort genau EINE Strichdefinition.
 */
.bp-reihe {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	margin-inline: auto;
}

.bp-reihe--mittel { max-inline-size: var(--bp-mittel); }

.bp-abschnitt { padding-block: var(--bp-10); }
@media (min-width: 64em) { .bp-abschnitt { padding-block: var(--bp-11); } }

.bp-flaeche-weiss { background: var(--bp-weiss); }
.bp-flaeche-ruhe  { background: var(--bp-ruhe); }

/* Karten und Bilder: 16 px Rundung, kein Schatten. Die Referenz legt 124
   Bilder ohne einen einzigen Schatten flach in die Flaeche. */
.bp-karte {
	background: var(--bp-weiss);
	border-radius: var(--bp-r-gross);
	padding: var(--bp-7);
}

img, .wp-block-image img {
	max-inline-size: 100%;
	block-size: auto;
	box-shadow: none;
}

.bp-bild-rund { border-radius: var(--bp-r-gross); overflow: hidden; }

/* ==========================================================================
   4. KOMPONENTEN
   ========================================================================== */

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

.bp-knopf,
.wp-block-button__link,
.bp-flaeche {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--bp-2);
	min-block-size: 48px;
	padding: var(--bp-3) var(--bp-6);
	font-family: var(--bp-schrift);
	font-size: var(--bp-t-klein);
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
	border: 1px solid transparent;
	border-radius: var(--bp-r-klein);
	background: var(--bp-akzent);
	color: var(--bp-weiss);
	cursor: pointer;
	transition: background-color var(--bp-dauer) var(--bp-easing),
	            border-color var(--bp-dauer) var(--bp-easing);
}

.bp-knopf:hover, .bp-knopf:focus-visible,
.wp-block-button__link:hover, .bp-flaeche:hover {
	background: var(--bp-akzent-tief);
	color: var(--bp-weiss);
	text-decoration: none;
}

/* Der umrandete Knopf aus dem Kopfbereich der Referenz. */
.bp-knopf--rand {
	background: transparent;
	color: var(--bp-tinte);
	border-color: var(--bp-tinte);
}

.bp-knopf--rand:hover, .bp-knopf--rand:focus-visible {
	background: var(--bp-tinte);
	color: var(--bp-ruhe);
	border-color: var(--bp-tinte);
}

/* --- Formular ----------------------------------------------------------- */

/*
 * Nach dem Vorbild der Referenz: weisse Felder auf ruhigem Grund, weiche
 * Rundung, kein harter Rahmen. Label darueber, linksbuendig - das ist die
 * Form mit den kuerzesten Ausfuellzeiten im Eyetracking.
 */
.bp-formular-feld { margin-block-end: var(--bp-6); }

form label {
	display: block;
	margin-block-end: var(--bp-2);
	font-size: var(--bp-t-klein);
	font-weight: 600;
	color: var(--bp-tinte);
	text-align: start;
}

input[type="text"], input[type="email"], input[type="tel"],
input[type="search"], textarea, select {
	inline-size: 100%;
	min-block-size: 52px;
	padding: var(--bp-3) var(--bp-4);
	font-family: inherit;
	font-size: var(--bp-t-klein);
	line-height: 1.5;
	color: var(--bp-tinte);
	background: var(--bp-weiss);
	border: 1px solid var(--bp-linie);
	border-radius: var(--bp-r-klein);
	text-align: start;
	transition: border-color var(--bp-dauer) var(--bp-easing);
}

input:focus-visible, textarea:focus-visible, select:focus-visible {
	border-color: var(--bp-akzent);
}

textarea { min-block-size: 9rem; resize: vertical; }

::placeholder { color: var(--bp-tinte-leise); opacity: 1; }

/* Fehler: Rahmen verstaerken UND Klartext - nie Farbe allein. */
[aria-invalid="true"] { border-width: 2px; border-color: var(--bp-fehler); }

.bp-feldfehler {
	display: block;
	margin-block-end: var(--bp-2);
	color: var(--bp-fehler);
	font-size: var(--bp-t-klein);
	font-weight: 600;
}

.bp-formular-hilfe, .bp-formular-hinweis {
	font-size: var(--bp-t-klein);
	color: var(--bp-tinte-leise);
}

/* ==========================================================================
   5. BEWEGUNG
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
	html { scroll-behavior: smooth; }
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ==========================================================================
   6. KOPFBEREICH
   ==========================================================================
   Nach dem Vorbild der Leitreferenz, am Bild abgelesen: klebend,
   durchsichtig, Logo links, Menuepunkte mit feiner Unterstreichung, Nummer
   und Ort mit Symbol, rechts ein umrandeter Knopf, darunter eine Haarlinie
   ueber die Inhaltsbreite.
   ========================================================================== */

/*
 * DER KLEBENDE KOPF WEICHT DER ADMINLEISTE AUS.
 *
 * BEFUND vom 26. August 2026: „Wenn ich nach unten scrolle, sehe ich die
 * Buchstaben vom Header oben noch ein bisschen und auch die hellere Farbe."
 *
 * Nachgestellt mit angemeldetem Benutzer: WordPress' Adminleiste liegt
 * `position: fixed` bei y=0 mit z-index 99999. Der Kopf klebt ebenfalls bei
 * 0 und schiebt sich darunter - gemessen waren 32 der 52 px des
 * Wege-Streifens verdeckt. Uebrig blieb die untere Haelfte der
 * Telefonnummer und ein Rest der helleren Flaeche.
 *
 * BESUCHER SEHEN DAS NIE. Die Adminleiste gibt es nur fuer angemeldete
 * Benutzer, und `body.admin-bar` steht nur dann da. Der Fehler betrifft
 * also genau die Ansicht, in der man die Seite baut - und damit jeden, der
 * hier weiterarbeitet.
 *
 * DREI WERTE, WEIL DIE LEISTE DREI ZUSTAENDE HAT:
 *
 *   ab 783 px   32 px hoch, fest
 *   601-782     46 px hoch, fest
 *   bis 600     46 px hoch, ABER `position: absolute` - sie scrollt weg,
 *               der Kopf darf dort also wieder bei 0 kleben
 *
 * Nicht `var(--wp-admin--admin-bar--height)`: Das Token gibt es nur im
 * Backend zuverlaessig, im Frontend liefert es je nach WordPress-Fassung
 * nichts. Die drei Zahlen stehen in WordPress' eigenem admin-bar.css und
 * sind seit Jahren unveraendert.
 */
body.admin-bar .bp-kopf { inset-block-start: 46px; }

@media screen and (min-width: 783px) {
	body.admin-bar .bp-kopf { inset-block-start: 32px; }
}

@media screen and (max-width: 600px) {
	body.admin-bar .bp-kopf { inset-block-start: 0; }
}

.bp-kopf {
	position: sticky;
	inset-block-start: 0;
	z-index: 20;
	background: var(--bp-ruhe);
	padding-block: var(--bp-3);
	/* Kein Schatten. Die Referenz hat auf der ganzen Seite keinen. */
	box-shadow: none;
}

.bp-kopf-zeile {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--bp-4) var(--bp-7);
}

.bp-marke { flex: 0 0 auto; margin-inline-end: auto; }

.bp-logo img, .bp-logo .custom-logo {
	display: block;
	inline-size: 72px;
	block-size: auto;
	border-radius: 0;
}

/*
 * 104 STATT 64 PX am Schreibtisch, 72 statt 56 auf schmalen Bildschirmen.
 * Am 26. August 2026 auf Wunsch: „kaum lesbar".
 *
 * Der Einwand war zutreffend und nachmessbar. Im Logo steht der Betriebsname
 * als Schriftzug IM BILD. Bei 64 px Kantenlaenge war dieser Schriftzug rund
 * 7 px hoch - unter jeder Lesegrenze. Es war damit kein Logo, sondern ein
 * Fleck in ungefaehr der richtigen Farbe.
 *
 * WARUM NICHT MEHR ALS 104: Die Datei hat 216 px Kantenlaenge. Auf einem
 * Bildschirm mit doppelter Aufloesung braucht eine Anzeige von 104 px genau
 * 208 echte Bildpunkte; das geht sich gerade noch scharf aus. Bei 112 waeren
 * es 224 und damit mehr, als die Datei hergibt. Wer groesser will, muss
 * zuerst die 820er Fassung neu einspielen, die auf dem Kundenserver liegt.
 *
 * WAS DAS KOSTET: Der klebende Kopf wird am Schreibtisch rund 40 px hoeher.
 * Auf schmalen Bildschirmen ist der Zuwachs bewusst kleiner gehalten (56 auf
 * 72), weil dort jede Zeile Kopf vom Inhalt abgeht.
 */
/*
 * BEIDE SELEKTOREN, nicht nur `.bp-logo img` - und das ist kein Zierrat.
 *
 * Die Grundregel oben lautet `.bp-logo img, .bp-logo .custom-logo`. Das Bild
 * traegt BEIDE Merkmale: Es ist ein img UND es hat die Klasse `custom-logo`,
 * die WordPress dem Logo gibt. Aus einer Selektorliste zaehlt fuer ein
 * Element aber die HOECHSTE Spezifitaet, die darin auf es passt - also
 * (0,2,0) aus `.bp-logo .custom-logo`, nicht (0,1,1) aus `.bp-logo img`.
 *
 * Eine Regel mit `.bp-logo img` allein hat (0,1,1) und verliert damit gegen
 * die Grundregel, egal wie weit unten sie steht. Genau das ist hier zuerst
 * passiert: Im Quelltext stand 104, gemessen wurden 72.
 *
 * Dasselbe Muster wie bei `:is()` in Abschnitt 11 und wie bei
 * `figure.wp-block-image:not(#individual-image)` in Abschnitt 17. Es ist die
 * haeufigste stille Fehlerquelle in dieser Datei: Die Regel steht da, sie
 * ist richtig geschrieben, und sie wirkt nicht.
 */
@media (min-width: 64em) {
	.bp-logo img, .bp-logo .custom-logo { inline-size: 104px; }
}

/*
 * HIER STANDEN DIE REGELN FUER DIE HAARLINIE UNTER DEM KOPF.
 * Entfernt am 26. August 2026 auf Wunsch, zusammen mit dem <div> in
 * parts/header.html und zwei weiteren Regeln in Abschnitt 12.
 *
 * Sie kam aus der Leitreferenz und hatte dort eine Aufgabe: Deren Kopf ist
 * nicht klebend, die Linie markiert also die Grenze zwischen Kopf und Seite.
 * Hier klebt der Kopf und traegt einen eigenen Grund - die Grenze ist dadurch
 * ohnehin sichtbar, und die Linie war eine zweite Aussage ueber dieselbe
 * Sache.
 */

/* --- Die Wege rechts ---------------------------------------------------- */

/*
 * Auf JEDER Breite sichtbar - seit 26. August 2026 abends auf Wunsch:
 * „Nummer und Ort sollen auch beim Scrollen stehen bleiben."
 *
 * Vorher gab es die Zeile erst ab 64em; darunter stand die Nummer als
 * runder Rufknopf im Menue. Beides zugleich waere doppelt gewesen, deshalb
 * ist der Knopf mit dieser Aenderung entfallen - Begruendung an seiner
 * alten Stelle in Abschnitt 12.
 */
.bp-kopf-wege {
	display: flex;
	align-items: center;
	gap: var(--bp-6);
}

.bp-kopf-nummer, .bp-kopf-ort {
	display: inline-flex;
	align-items: center;
	gap: var(--bp-2);
	min-block-size: 44px;
	font-size: var(--bp-t-klein);
	color: var(--bp-tinte);
	white-space: nowrap;
}

.bp-kopf-nummer { font-weight: 600; text-decoration: none; }

.bp-kopf-nummer:hover, .bp-kopf-nummer:focus-visible {
	color: var(--bp-akzent);
	text-decoration: underline;
	text-underline-offset: 0.28em;
}

.bp-kopf-ort { color: var(--bp-tinte-leise); }
.bp-kopf-wege svg { flex: 0 0 auto; }

.bp-kopf-knopf { min-block-size: 44px; padding-block: var(--bp-2); }

/* --- Das Menue ---------------------------------------------------------- */

/*
 * `.bp-kopf` DAVOR IST DER ZAEHLER, NICHT DIE BESCHREIBUNG.
 *
 * WordPress druckt in seinen globalen Stilen `body .is-layout-flex {
 * display: flex }` - Spezifitaet (0,1,1). Beide Menuebloecke tragen
 * `is-layout-flex`. Ein blankes `.bp-navigation--breit { display: none }`
 * liegt bei (0,1,0) und VERLIERT dagegen.
 *
 * GEMESSEN, was das angerichtet hat: Bei 375 px stand die <nav>-Huelle des
 * breiten Menues als leerer Kasten von 139 px in der Kopfzeile, bei 1440 px
 * die des schmalen mit 130 px. Unsichtbar, weil die <ul> darin von einer
 * spezifischeren Regel ausgeblendet war - aber im Fluss.
 *
 * Die Folgen waren an drei Stellen zu sehen, ohne dass die Ursache
 * dazugehoert haette:
 *
 *   - Der Umschalter sass auf dem Telefon nicht rechts, sondern in der
 *     Mitte. Der leere Kasten hielt die rechte Position besetzt.
 *   - Zwischen 1024 und 1152 px brach die Kopfzeile um und der Kopf war
 *     229 px hoch: Die 130 px des leeren Kastens fehlten dem Menue.
 *   - Der Rufknopf hat das jahrelang verdeckt, weil er mit
 *     `margin-inline-start: auto` alles nach rechts geschoben hat.
 *
 * Aufgefallen ist es erst, als der Rufknopf entfiel.
 */
.bp-kopf .bp-navigation--breit { display: none; }

/*
 * DIE SCHWELLE LIEGT BEI 72em (1152 px), NICHT BEI 64em (1024).
 *
 * Sie ist nachgerechnet, nicht gewaehlt. Das waagrechte Menue misst mit
 * neun deutschen Punkten zu 18 px gemessene 824 px. Dazu das Logo mit 104
 * und die Rinne mit 32: 960 px. Die Inhaltsreihe ist die Fensterbreite
 * minus zweimal 96 Rand, also braucht sie 1152.
 *
 * BIS 1140 px BRACH DIE ZEILE UM und der klebende Kopf war 229 px hoch -
 * bei 800 px Bildschirmhoehe 29 Prozent, dauerhaft. Gemessen ueber das
 * ganze Band: 1024, 1050, 1080, 1100, 1120, 1140 alle 229; erst 1152
 * ergab 165.
 *
 * Zwischen 1024 und 1151 uebernimmt jetzt der Umschalter. Der Kopf ist dort
 * 133 px statt 229.
 *
 * WER DAS MENUE AENDERT, rechnet nach: Ein zehnter Punkt oder ein laengeres
 * Wort verschiebt diese Schwelle. Die Zahl steht an drei Stellen in diesem
 * Block und muss dann an allen dreien mitwandern.
 */
@media (min-width: 72em) {
	.bp-kopf .bp-menue-schalter { display: none; }
	.bp-kopf .bp-navigation--breit { display: flex; }
}

/* Darunter klappt der Schalter das Menue auf. Faellt :has() aus, bleibt es
   sichtbar - das ist das gutmuetige Ausfallverhalten. */
@media (max-width: 71.99em) {
	.bp-kopf-zeile:has(.bp-menue-schalter:not([open])) .bp-navigation--schmal { display: none; }
	.bp-navigation--schmal { flex-basis: 100%; }
}

/* Der quadratische Umschalter der Referenz: leicht abgesetzte Flaeche,
   weiche Rundung, drei Striche. */

/*
 * `margin-inline-start: auto` SCHIEBT IHN AN DIE RECHTE KANTE.
 *
 * Das hat bis zum 26. August 2026 abends der Rufknopf getan, der zwischen
 * Logo und Umschalter stand und diese Angabe trug. Mit ihm ist sie
 * verschwunden, und der Umschalter klebte ploetzlich am Logo - eine Kachel
 * neben der anderen, mit 300 px Leere daneben.
 *
 * Die Regel steht jetzt bei dem Element, das sie braucht, statt bei einem
 * Nachbarn, der zufaellig davorstand. Genau daran ist sie beim Entfernen
 * fast unbemerkt mitgegangen.
 *
 * `.bp-marke { margin-inline-end: auto }` tut dasselbe von der anderen
 * Seite; beide zusammen halten Logo links und Umschalter rechts, auch wenn
 * dazwischen einmal nichts steht.
 */
.bp-menue-schalter {
	flex: 0 0 auto;
	margin-inline-start: auto;
}

.bp-menue-schalter > summary {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 52px;
	block-size: 52px;
	background: var(--bp-ruhe-2);
	border-radius: var(--bp-r-klein);
	cursor: pointer;
	list-style: none;
}

.bp-menue-schalter > summary::-webkit-details-marker { display: none; }

/* Drei Striche zu, ein Strich auf. Reines CSS, kein Symbolzeichensatz. */
.bp-menue-strich {
	inline-size: 20px;
	block-size: 14px;
	background:
		linear-gradient(currentColor, currentColor) center 0    / 100% 2px no-repeat,
		linear-gradient(currentColor, currentColor) center 50%  / 100% 2px no-repeat,
		linear-gradient(currentColor, currentColor) center 100% / 100% 2px no-repeat;
}

.bp-menue-schalter[open] .bp-menue-strich {
	background: linear-gradient(currentColor, currentColor) center 50% / 100% 2px no-repeat;
}

/*
 * Die Menuepunkte.
 *
 * BIS ZUM 26. AUGUST 2026 trug hier jeder Punkt eine feine Unterstreichung
 * mit 0,5em Abstand - das Kennzeichen der Leitreferenz, wo alle Menue- und
 * Fusszeilenlinks sie tragen. Auf Wunsch entfernt.
 *
 * 18 STATT 16 PX, ebenfalls auf Wunsch. Das Menue ist der Hauptweg durch die
 * Seite; es stand bisher in derselben Groesse wie die Telefonnummer daneben,
 * obwohl es sieben Ziele traegt und die Nummer eines.
 *
 * DAS ZUSAMMEN GEHT SICH GERADE AUS. Nachgerechnet bei 1248 px Reihe:
 * sieben Punkte zu 18 px mit 24 px Abstand sind rund 900 px, das Logo 104,
 * zusammen 1004. Es bleiben 244 px Luft. Bei 20 px waeren es 1090 und die
 * Luft zu knapp fuer „Bestattungsformen" - deutsche Menuepunkte sind lang.
 */
.bp-navigation .wp-block-navigation-item__content {
	display: inline-flex;
	align-items: center;
	min-block-size: 48px;
	padding-inline: 0;
	font-family: var(--bp-schrift);
	font-size: 1.125rem;
	font-weight: 500;
	color: var(--bp-tinte);
	text-decoration: none;
}

/*
 * BEIM ZEIGEN NUR FARBE, KEINE LINIE - auf Wunsch, 26. August 2026.
 *
 * Hier stand bis dahin eine Unterstreichung. Sie war die Rueckmeldung „hier
 * kann man klicken", und die Begruendung dafuer war dieselbe wie beim
 * Marker der aktuellen Seite: Farbe allein ist fuer rund acht Prozent der
 * Maenner keine Rueckmeldung.
 *
 * WARUM SIE TROTZDEM WEG IST: Auf „Bestattungsformen" steht die Maus
 * zwangslaeufig, sonst klappt das Untermenue nicht auf. Der Unterstrich war
 * dort also praktisch dauerhaft zu sehen - genau das, was drei Runden lang
 * abgeschafft werden sollte. Zweimal gemeldet, beide Male fuer denselben
 * Punkt.
 *
 * WAS DAMIT BEZAHLT IST, und es ist nicht nichts: Wer Farben schlecht
 * unterscheidet, bekommt beim Zeigen keine Rueckmeldung mehr. Was bleibt,
 * ist der Mauszeiger, der ueber einem Verweis zur Hand wird - der einzige
 * nicht-farbliche Hinweis, und einer, den der Browser gibt, nicht wir.
 *
 * DER TASTATURFOKUS IST DAVON AUSGENOMMEN. Er steht weiter unten mit einem
 * eigenen Ring (Abschnitt 4) und hat mit dem Zeigen nichts zu tun: Wer mit
 * der Tastatur navigiert, hat keinen Mauszeiger, der etwas verraten
 * koennte. Ein Fokus ohne sichtbare Marke ist ein Bedienfehler, kein
 * Geschmack - wer hier `:focus-visible` mit hineinschreibt, nimmt der
 * Tastaturbedienung ihre einzige Ortsangabe.
 */
.bp-navigation a.wp-block-navigation-item__content:hover {
	color: var(--bp-akzent);
}

/*
 * DIE AKTUELLE SEITE: Farbe UND GEWICHT, nie Farbe allein.
 *
 * DRITTE FASSUNG DIESER REGEL an drei Tagen, und der Weg dahin gehoert
 * hierher, weil die Begruendung jedes Mal dieselbe geblieben ist:
 *
 *   bis 26.8.   Farbe + kraeftigere Unterstreichung
 *   26.8. frueh Farbe + 2 px Balken darunter (die Unterstreichungen fielen
 *               auf Wunsch weg, der Balken trat an ihre Stelle)
 *   26.8. spaet Farbe + Gewicht (auch der Balken sah aus wie eine
 *               Unterstreichung - zweimal angesprochen, also weg)
 *
 * DIE BEGRUENDUNG, die alle drei Fassungen ueberlebt hat: Farbe allein ist
 * fuer rund acht Prozent der Maenner keine Rueckmeldung. Es braucht ein
 * zweites Merkmal, das nicht Farbe ist.
 *
 * Jetzt ist es das Gewicht: Die Menuepunkte stehen auf 500, der aktuelle auf
 * 600. Instrument Sans ist eine variable Schrift mit der Achse 400 bis 600 -
 * beide Werte sind echte Schnitte, keine vom Browser gerechnete Fettung.
 *
 * DAS IST DAS LEISESTE DER DREI MERKMALE, und das ist der bewusst bezahlte
 * Preis. Ein Balken ist deutlicher als ein Gewichtsschritt. Wer ihn
 * zurueckholen will, findet ihn im Verlauf; wer ein drittes Merkmal sucht,
 * nimmt KEINE Linie - das war der Punkt.
 *
 * `aria-current="page"` setzt WordPress selbst. Fuer ein Vorleseprogramm ist
 * die aktuelle Seite dadurch unabhaengig von jeder Gestaltung angesagt.
 */
.bp-navigation :is(.current-menu-item, .current-menu-ancestor, .current-page-ancestor) > a.wp-block-navigation-item__content {
	color: var(--bp-akzent);
	font-weight: 600;
}

/* Schmale Ansicht: gestapelt, ein Punkt je Zeile, gleicher linker Anfang. */
.bp-navigation--schmal .wp-block-navigation__container {
	flex-direction: column;
	align-items: stretch;
	inline-size: 100%;
	gap: 0;
}

.bp-navigation--schmal .wp-block-navigation-item {
	border-block-start: 1px solid var(--bp-linie);
}

.bp-navigation--schmal .wp-block-navigation-item__content {
	inline-size: 100%;
	min-block-size: 52px;
	text-decoration: none;
}

.bp-navigation--schmal .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding-inline-start: var(--bp-6);
	font-weight: 400;
	min-block-size: 48px;
}

/*
 * DIE UNTERMENUEPUNKTE gehen bei der Vergroesserung mit - am 26. August 2026
 * ausdruecklich mitbestellt („dasselbe bei den Untermenuepunkten").
 *
 * Sie erben die 18 px bereits ueber die Regel oben, die auf JEDEN
 * `.wp-block-navigation-item__content` innerhalb von `.bp-navigation` greift,
 * also auch auf die in einem `__submenu-container`. Diese Regel setzt den
 * Wert deshalb NICHT ein zweites Mal - sie haelt nur fest, dass die
 * Vererbung hier Absicht ist.
 *
 * Der Unterschied zwischen Haupt- und Unterpunkt bleibt das GEWICHT (500
 * gegen 400), nicht die Groesse. Das ist die ruhigere Staffelung: Zwei
 * Groessen nebeneinander im selben aufgeklappten Block saehen aus wie ein
 * Fehler, zwei Gewichte wie eine Ordnung.
 */
.bp-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	font-weight: 400;
}

/*
 * Der aktuelle Punkt IM UNTERMENUE geht auf 600 - dieselbe Stufe wie oben.
 * Ohne diese Regel gewaenne die 400 aus der Regel darueber: Sie ist
 * spezifischer als der Marker (drei Klassen gegen zwei), und „Urnen" waere
 * als aktuelle Seite leichter gesetzt als seine Nachbarn.
 */
.bp-navigation .wp-block-navigation__submenu-container :is(.current-menu-item, .current-menu-ancestor) > a.wp-block-navigation-item__content {
	font-weight: 600;
}

/* ==========================================================================
   7. FUSSBEREICH
   ==========================================================================
   Drei Spalten auf der Inhaltskante, derselbe ruhige Grund wie der Kopf,
   grosszuegiges Polster. Getrennt wird ueber Weissraum, nicht ueber Farbe.
   ========================================================================== */

/*
 * OBEN VIEL, UNTEN WENIG - und das ist Absicht, nicht Nachlaessigkeit.
 *
 * Das Polster oben trennt den Fuss vom Inhalt darueber; es muss die Trennung
 * tragen. Das Polster unten trennt gar nichts, darunter kommt das Fensterende.
 *
 * Am 26. August 2026 abends in zwei Schritten verkleinert, beide auf Wunsch:
 * erst von 48 auf 24 px, dann auf 0. Der Abstand unter dem Schlussvermerk kam
 * nicht von der Zeile selbst, sondern von hier.
 *
 * NULL IST HIER RICHTIG UND KEIN VERSEHEN. Der Schlussvermerk traegt selbst
 * 16 px Polster oben wie unten. Damit steht er genau mittig zwischen der
 * Haarlinie darueber und dem Ende der Seite - 16 px auf jeder Seite, aus
 * einer Angabe. Ein zusaetzliches Polster hier haette diese Symmetrie
 * wieder zerstoert, und die war der urspruengliche Wunsch.
 *
 * (Hier stand bis eben „weniger als 24 nicht, sonst beruehrt die Zeile den
 * unteren Rand". Das war eine Behauptung ohne Messung. Nachgemessen sind es
 * mit den 16 px des Schlussvermerks weiterhin 16 px Luft - die Zeile
 * beruehrt nichts.)
 */
/*
 * DIE LUFT IM FUSS STEHT ALS EINE ZAHL DA - seit 26. August 2026 abends.
 *
 * Wunsch: „Der Abstand zwischen der Linie oben und dem Logo soll gleich sein
 * wie zwischen dem Knopf und der Linie darunter."
 *
 * Gemessen waren es 129 px oben und 48 unten. Die 129 kamen aus dem Polster
 * des Fusses (128 plus die Haarlinie), die 48 aus dem Aussenabstand des
 * Schlussvermerks - zwei Werte an zwei Stellen, die nie voneinander wussten.
 *
 * `--bp-fuss-luft` ist beides. Sie kann sich nicht mehr auseinander
 * entwickeln, weil es nur noch eine Zahl gibt.
 *
 * 48 UND NICHT 128: Von den beiden Werten gewinnt der kleinere. Der Fuss
 * traegt keinen eigenen Grund - er steht auf derselben Flaeche wie die
 * Seite, getrennt nur durch eine Haarlinie. 128 px Polster darunter waren
 * fuer einen abgesetzten Block gedacht, den es hier nie gab.
 */
.bp-fuss {
	--bp-fuss-luft: var(--bp-8);
	background: var(--bp-ruhe);
	padding-block: var(--bp-fuss-luft) 0;
	margin-block-start: var(--bp-11);
	border-block-start: 1px solid var(--bp-linie);
}

.bp-fuss-reihe {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--bp-9) var(--bp-7);
}

@media (min-width: 48em) {
	.bp-fuss-reihe { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 64em) {
	.bp-fuss-reihe { grid-template-columns: 1fr 1fr 1fr; gap: var(--bp-7); }
	/*
	 * HIER STAND `padding-block: var(--bp-11) 0` - 128 px oben am
	 * Schreibtisch. Entfernt am 26. August 2026: Die Luft im Fuss steht
	 * jetzt als `--bp-fuss-luft` an einer Stelle und gilt auf jeder Breite.
	 * Eine zweite Angabe hier haette sie am Schreibtisch wieder von der
	 * unteren getrennt - genau der Zustand, der zu 129 gegen 48 gefuehrt hat.
	 */
}

.bp-fuss-titel {
	font-size: var(--bp-t-h3);
	line-height: 1.28;
	letter-spacing: -0.005em;
	margin-block: 0 var(--bp-6);
}

/*
 * `>` STATT EINES LEERZEICHENS, und daran haengt mehr als es aussieht.
 *
 * Die 34ch sind eine LESEWEITE fuer die Anschrift und den Satz darunter.
 * Ohne den direkten Nachfahren traf die Regel seit dem 26. August 2026 auch
 * die Absaetze IM KONTAKTFORMULAR - jedes Feld steht in einem <p>. Die
 * Spalte war 748 px breit, die Felder 453: Das Formular ist auf Wunsch
 * breiter geworden und sah aus, als waere nichts passiert.
 *
 * Mit `>` gilt die Leseweite fuer die Absaetze DER SPALTE, und was in einer
 * Komponente darin steht, regelt die Komponente selbst. Das ist die richtige
 * Grenze: Eine Spaltenregel soll nichts ueber das Innere eines Formulars
 * sagen, das zufaellig in ihr steht.
 */
.bp-fuss-spalte > p { max-inline-size: 34ch; margin-block: 0 var(--bp-4); }
.bp-fuss-anschrift { line-height: 1.6; }
.bp-fuss-nummer { font-weight: 600; }
.bp-fuss-zeit { color: var(--bp-tinte-leise); font-size: var(--bp-t-klein); }

.bp-fuss-liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--bp-1);
}

.bp-fuss-liste a {
	display: inline-flex;
	align-items: center;
	min-block-size: 44px;
	font-size: var(--bp-t-klein);
	text-underline-offset: 0.4em;
}

/*
 * `display: block` ist noetig, nicht ordentlich: Ein <img> ist von Haus aus
 * inline und sitzt damit auf der Grundlinie seiner Zeile. Darunter bleiben
 * je nach Zeilenhoehe 6 bis 10 px stehen, die in keiner Angabe vorkommen -
 * gemessen waren es hier 8. Genau die haben die Ueberschrift „Kontakt" um
 * 8 px gegen „Menue" daneben verschoben.
 */
.bp-fuss-logo {
	display: block;
	inline-size: 80px;
	block-size: auto;
	margin-block-end: var(--bp-4);
}

.bp-fuss-satz {
	color: var(--bp-tinte-leise);
	font-size: var(--bp-t-klein);
	line-height: 1.6;
}

.bp-fuss-schluss {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	margin: var(--bp-9) auto 0;
	padding-block-start: var(--bp-6);
	border-block-start: 1px solid var(--bp-linie);
}

.bp-fuss-schluss p {
	margin: 0;
	font-size: var(--bp-t-klein);
	color: var(--bp-tinte-leise);
}

/*
 * Die feste Leiste am unteren Rand ist entfallen. Der Innenabstand, der den
 * Seiteninhalt vor ihr freihielt, wird hier zurueckgenommen - sonst bliebe
 * unter jeder Seite ein leerer Streifen stehen.
 */
.wp-site-blocks { padding-block-end: 0; }

/* ==========================================================================
   8. KORREKTUREN NACH DER ERSTEN AUFNAHME (24. August)
   ========================================================================== */

/*
 * 1. BEIDE MENUES WAREN GLEICHZEITIG SICHTBAR.
 *
 * Ab 64em war der Umschalter ausgeblendet und das breite Menue eingeblendet -
 * das schmale aber auch, weil die :has()-Regel darunter nur unter 64em greift.
 * Gemessen: Der Kopf war dadurch 280 px hoch statt rund 90.
 */
/*
 * `.bp-kopf` davor aus demselben Grund wie beim breiten Menue: Ohne den
 * Zaehler verliert (0,1,0) gegen WordPress' `body .is-layout-flex` mit
 * (0,1,1), und die leere <nav>-Huelle des schmalen Menues stand bei 1440 px
 * als 130 px breiter Kasten mitten in der Kopfzeile.
 *
 * 72em wie die beiden Regeln beim Umschalter - dies ist die dritte der drei
 * Stellen, die zusammengehoeren.
 */
@media (min-width: 72em) {
	.bp-kopf .bp-navigation--schmal { display: none; }
}

/*
 * 2. DER INHALT STAND ZENTRIERT STATT AUF DER INHALTSKANTE.
 *
 * WordPress zentriert in einem `constrained`-Layout jedes Kind auf der
 * Leseweite: bei 1440 px und 39rem Leseweite beginnt der Text damit bei
 * x=408. Die Leitreferenz haelt ihre linke Kante dagegen ueber die ganze
 * Seite bei x=96 - und genau das ist dort der Grund, warum 46 verschiedene
 * Abstandswerte trotzdem geordnet wirken.
 *
 * Deshalb: `main` wird selbst zur Inhaltsreihe, seine Kinder ruecken an
 * deren linke Kante statt sich zu zentrieren. Die Leseweite bleibt als
 * Obergrenze erhalten - sie richtet sich nach der Zeilenlaenge, nicht nach
 * dem Bildschirm.
 */
main.is-layout-constrained {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	margin-inline: auto;
	padding-inline: 0;
}

main.is-layout-constrained > :where(:not(.alignfull):not(.alignwide)),
.entry-content.is-layout-constrained > :where(:not(.alignfull):not(.alignwide)) {
	margin-inline: 0;
	max-inline-size: var(--bp-lese);
}

/* Breite Bloecke fuellen die Reihe, laufen aber nicht darueber hinaus. */
main.is-layout-constrained > .alignwide,
.entry-content.is-layout-constrained > .alignwide {
	margin-inline: 0;
	max-inline-size: 100%;
}

/*
 * Vollflaechige Baender duerfen weiterhin ueber die ganze Fensterbreite
 * laufen. Sie brechen aus der Reihe aus - der Wert ist die halbe Differenz
 * zwischen Fenster und Reihe.
 */
main.is-layout-constrained > .alignfull,
.entry-content.is-layout-constrained > .alignfull {
	margin-inline: calc(50% - 50vw);
	max-inline-size: 100vw;
	inline-size: 100vw;
}

/*
 * 3. TELEFONNUMMERN UND UEBERSCHRIFTEN STANDEN MITTIG.
 *
 * Reste der Kartengestaltung. Zentriert bleibt nur, was die Referenz auch
 * zentriert: nichts im Fliesstext.
 */
main :is(.wp-block-post-content, .wp-block-post-content > *, .bp-einstieg-wort,
         .bp-einstieg-wort > *, .bp-abschnittskopf, .bp-archiv-hinweis,
         .bp-zurueck, .bp-trauerfall-blatt, .bp-liste-text) {
	text-align: start;
}

main .wp-block-post-content > :is(h1, h2, h3, h4, h5, h6) { text-align: start; }

/*
 * 4. DER HELLERE STREIFEN HINTER DEM SEITENANFANG.
 *
 * Eine Flaechenregel aus der alten Gestaltung. Der Grund ist jetzt
 * durchgehend `--bp-ruhe`; ein zweiter Ton mitten im Text hat keinen Zweck.
 */
.bp-blatt, .bp-einstieg-blatt {
	background: transparent;
	border: 0;
	padding-inline: 0;
	box-shadow: none;
	margin-block-start: var(--bp-10) !important;
}

/* Die Aufzaehlungen behalten haengende Zeichen und die Leseweite. */
main :is(ul, ol) { padding-inline-start: 1.25rem; }
main li + li { margin-block-start: var(--bp-2); }

/*
 * 2b. DIE INHALTSKANTE, ZWEITER ANLAUF.
 *
 * Der erste Versuch hat `main` richtig auf die Inhaltsreihe gesetzt (gemessen
 * l=96, w=1248), aber der Inhalt stand weiter bei x=386. Die Kette zeigte,
 * warum:
 *
 *   main            l=96   w=1248   <- richtig
 *   .entry-content  l=0    w=1440   margin-inline: -96px   <- bricht aus
 *   p               l=386           margin-inline: 369.78px auto
 *
 * Zwei Ursachen uebereinander. Erstens bricht `post-content` als `alignfull`
 * auf die volle Fensterbreite aus. Zweitens zentriert WordPress darin jedes
 * Kind mit `auto`-Raendern.
 *
 * Beides wird hier zurueckgenommen. `post-content` braucht die volle Breite
 * nicht: Die einzigen vollflaechigen Elemente dieser Seiten - das Kopfband
 * und das Kontaktband - stehen direkt in `main`, nicht darin.
 *
 * Die Spezifitaet ist bewusst hoch genug gewaehlt: WordPress schreibt seine
 * Zentrierregel als `:root :where(.is-layout-constrained) > :where(...)`,
 * also (0,1,0). Ein `:not()` zaehlt sein Argument mit, deshalb liegt die
 * Regel unten bei (0,3,1) und gewinnt ohne !important.
 */
main > .entry-content.alignfull,
main > .wp-block-post-content.alignfull {
	margin-inline: 0;
	inline-size: 100%;
	max-inline-size: 100%;
	padding-inline: 0;
}

/*
 * NACHTRAG: Warum hier !important steht.
 *
 * Die Regel oben hat gegriffen, die darunter nicht - und das war der Hinweis.
 * WordPress schreibt seine Zentrierung so:
 *
 *   :where(.is-layout-constrained) > :where(:not(.alignleft):not(.alignright):not(.alignfull)) {
 *       margin-left: auto !important; margin-right: auto !important;
 *   }
 *
 * Das `!important` schlaegt jede normale Deklaration, egal wie spezifisch.
 * `entry-content` selbst ist `alignfull` und damit von der Regel ausgenommen -
 * deshalb liess es sich ohne weiteres verschieben, seine Kinder aber nicht.
 *
 * Ein `!important` laesst sich nur mit einem `!important` beantworten. Die
 * saubere Alternative waere, in allen 17 Vorlagen `layout: constrained` auf
 * `default` zu stellen; dann muesste diese Gestaltung aber die gesamte
 * Ausrichtungslogik selbst tragen - mehr Angriffsflaeche fuer denselben
 * Effekt. Deshalb genau diese eine Ausnahme, hier begruendet.
 */
main .entry-content > :not(.alignfull):not(.alignwide),
main .wp-block-post-content > :not(.alignfull):not(.alignwide) {
	margin-inline: 0 !important;
	max-inline-size: var(--bp-lese);
}

main.is-layout-constrained > :not(.alignfull):not(.alignwide) {
	margin-inline: 0 !important;
}

main .entry-content > .alignwide,
main .wp-block-post-content > .alignwide {
	margin-inline: 0;
	max-inline-size: 100%;
}

/* Ueberschriften duerfen breiter laufen als der Lesetext - sie sind kurz und
   brauchen den Umbruch nicht so frueh. */
main .entry-content > :is(h1, h2, h3),
main .wp-block-post-content > :is(h1, h2, h3) {
	max-inline-size: 22ch;
}

@media (min-width: 48em) {
	main .entry-content > :is(h1, h2, h3),
	main .wp-block-post-content > :is(h1, h2, h3) { max-inline-size: 28ch; }
}

/* ==========================================================================
   9. DIE BAENDER DER STARTSEITE AUF DIE INHALTSKANTE
   ==========================================================================

   Nachgemessen bei 1440 px stand der Text der Baender bei x=408 statt 96.
   Die Rechnung geht genau auf:

       96 + (1248 - 624) / 2 = 408

   1248 ist die Inhaltsreihe, 624 die Leseweite aus theme.json (39rem). Jedes
   Band ist eine `constrained`-Gruppe, und WordPress zentriert darin jedes
   Kind auf der Leseweite. Sechs Baender, sechs eigene Achsen - das ist der
   Grund, warum die Seite trotz sauberer Einzelwerte unruhig wirkt.

   Die Leitreferenz macht das Gegenteil: EINE linke Kante ueber die ganze
   Seite, von der Kopfzeile bis zum Fussbereich. Der Weissraum entsteht
   rechts, nicht auf beiden Seiten.

   Deshalb die Umkehr der Grundannahme: Innerhalb von `main` zentriert sich
   nichts mehr von selbst. Was mittig stehen soll, muss es ausdruecklich
   sagen - und auf diesen Seiten soll es nichts.

   Zum `!important` gilt dieselbe Begruendung wie in Abschnitt 8: WordPress
   setzt `margin-left: auto !important`, und das laesst sich nicht anders
   beantworten.
   -------------------------------------------------------------------------- */

main :is(.wp-block-group, .wp-block-cover__inner-container).is-layout-constrained
	> :not(.alignfull):not(.alignwide) {
	margin-inline: 0 !important;
}

/*
 * Das Kopfband. Der Titel stand mittig - ein Rest der alten Gestaltung, in
 * der das Band eine Bildunterschrift trug. Die Referenz setzt ihre grosse
 * Zeile links auf dieselbe Kante wie alles andere.
 */
.bp-seitenkopf .wp-block-post-title,
.bp-seitenkopf .wp-block-query-title,
.bp-seitenkopf .bp-bandtitel,
.bp-seitenkopf :is(h1, h2, p) {
	text-align: start !important;
	margin-inline: 0 !important;
}

/*
 * Der Einstieg. Das Blatt hatte eine eigene Breite (43rem) und stand mittig -
 * damit eine siebte Achse. Es folgt jetzt der Inhaltsreihe.
 */
.bp-einstieg-blatt,
.bp-einstieg-blatt.bp-einstieg-schmal {
	max-width: none;
	margin-inline: 0 !important;
}

.bp-einstieg-wort { padding: 0; }
.bp-einstieg-wort > * { max-inline-size: var(--bp-lese); }

/*
 * Das Kontaktband. Es war das einzige mittig gesetzte Element der Seite -
 * `text-align: center` plus `margin-inline: auto` auf jedem Kind. Auf einer
 * dunklen Flaeche faellt das doppelt auf, weil die Kante dort sichtbar ist.
 *
 * Das zusaetzliche Innenpolster faellt ebenfalls weg: Es hat den Inhalt auf
 * x=120 geschoben, also 24 px neben alle anderen Abschnitte.
 */
.bp-kontaktband { text-align: start; }
.bp-kontaktband > * { margin-inline: 0 !important; }
.bp-kontaktband .bp-schreibtitel { text-align: start; }
.bp-kontaktband .bp-kontakt-spalten { margin-inline: 0 !important; }

.bp-zitatband p, .bp-zitat { margin-inline: 0 !important; text-align: start; }

/*
 * Der Abschnittskopf.
 *
 * BIS ZUM 26. AUGUST 2026 stand hier `display: flex` mit `space-between`:
 * Ueberschrift links, Verweis „Alle Trauerfaelle ansehen" rechts, beide auf
 * ihrer Kante der Reihe. Das war die eine Stelle, an der die Leitreferenz
 * zwei Achsen benutzt, und dort trugen sie eine Aussage.
 *
 * Der Verweis steht jetzt UNTER den Kacheln. Damit ist im Kopf nur noch der
 * Titel uebrig - und `space-between` hat den gegen die RECHTE Kante
 * geschoben, weil er der letzte Flex-Gegenstand war. Im Bild stand
 * „Aktuelle Parten" bei x=1014 statt bei x=96.
 *
 * Ein Block stapelt Vorlauf und Titel wieder untereinander auf der linken
 * Kante.
 */
.bp-abschnittskopf {
	display: block;
}

.bp-abschnittskopf > * { margin-inline: 0 !important; }
.bp-abschnittskopf .bp-mehr { margin-block: 0; }

/* ==========================================================================
   10. DAS KOPFBAND UND DAS KONTAKTBAND
   ==========================================================================

   Zwei Baender laufen ueber die volle Fensterbreite und brauchen deshalb
   eine eigene Inhaltsreihe in sich - sonst steht ihr Text auf dem
   Fensterrand statt auf der Kante der Seite. Gemessen: der Bandtitel bei
   x=20 statt 96, das Kontaktband bei x=120 statt 96.
   -------------------------------------------------------------------------- */

/* Das Kopfband. Der Inhalt bekommt die Reihe, das Bild bleibt vollflaechig. */
.bp-seitenkopf > .wp-block-cover__inner-container {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	margin-inline: auto;
	padding: 0;
}

/*
 * Das Kontaktband war eine dunkle, gerundete Flaeche mit eigenem Polster.
 * Zwei Gruende, das aufzugeben:
 *
 *   1. Das Polster hat den Inhalt auf x=120 geschoben - 24 px neben jeden
 *      anderen Abschnitt der Seite. Genau die Art von Abweichung, die man
 *      nicht benennen kann und trotzdem sieht.
 *   2. Die Leitreferenz setzt ihren Kontaktbereich auf den normalen Grund,
 *      linksbuendig, mit Feldern ohne Rahmen. Der Auftrag lautet, das
 *      Formular gleich zu machen.
 *
 * Die dunkle Flaeche ging auf die alte Gestaltung zurueck, in der sie den
 * Abschluss der Seite markieren sollte. Diesen Dienst tut jetzt der
 * Fussbereich, der ohnehin einen eigenen Grund hat.
 */
.bp-kontaktband {
	background-color: transparent;
	color: var(--bp-tinte);
	border-radius: 0;
	box-shadow: none;
	padding: 0;
	border-block-start: 1px solid var(--bp-linie);
	padding-block-start: var(--bp-10);
	margin-block-start: var(--bp-11);
}

.bp-kontaktband :is(h2, h3, p, label, li) { color: var(--bp-tinte); }
.bp-kontaktband .bp-vorlauf { color: var(--bp-akzent); }
.bp-kontaktband .bp-kontakt-label { color: var(--bp-tinte-leise); }
.bp-kontaktband .bp-kontakt-nummer a { color: var(--bp-akzent); }

.bp-kontaktband a {
	color: var(--bp-akzent);
	text-underline-offset: 0.28em;
}

.bp-kontaktband a:hover, .bp-kontaktband a:focus-visible { color: var(--bp-akzent-tief); }

/*
 * Die Felder: Unterstrich statt Rahmen, so wie in der Referenz gemessen.
 * Der Unterstrich ist 1 px im Ruhezustand und 2 px im Fokus - die Aenderung
 * traegt also nicht nur Farbe, sondern auch Form.
 */
.bp-kontaktband .bp-formular-feld input,
.bp-kontaktband .bp-formular-feld textarea {
	background: transparent;
	border: 0;
	border-block-end: 1px solid var(--bp-linie);
	border-radius: 0;
	padding-inline: 0;
	color: var(--bp-tinte);
}

.bp-kontaktband .bp-formular-feld input::placeholder,
.bp-kontaktband .bp-formular-feld textarea::placeholder {
	color: var(--bp-tinte-leise);
}

.bp-kontaktband .bp-formular-feld input:focus-visible,
.bp-kontaktband .bp-formular-feld textarea:focus-visible {
	outline: 0;
	border-block-end: 2px solid var(--bp-akzent);
	box-shadow: 0 1px 0 0 var(--bp-akzent);
}

.bp-kontaktband .bp-formular-hilfe,
.bp-kontaktband .bp-formular-hinweis { color: var(--bp-tinte-leise); }

.bp-kontaktband .bp-formular-knopf,
.bp-kontaktband .bp-knopf {
	background: var(--bp-akzent);
	color: var(--bp-weiss);
	border: 0;
}

.bp-kontaktband .bp-formular-knopf:hover,
.bp-kontaktband .bp-formular-knopf:focus-visible,
.bp-kontaktband .bp-knopf:hover,
.bp-kontaktband .bp-knopf:focus-visible {
	background: var(--bp-akzent-tief);
	color: var(--bp-weiss);
}

.bp-kontaktband .bp-knopf-leise {
	background: transparent;
	color: var(--bp-akzent);
	border: 1px solid var(--bp-akzent);
}

.bp-kontaktband .bp-knopf-leise:hover,
.bp-kontaktband .bp-knopf-leise:focus-visible {
	background: var(--bp-ruhe-2);
	color: var(--bp-akzent-tief);
}

/* ==========================================================================
   11. ZWEI NACHTRAEGE AUS DEM RUNDGANG
   ==========================================================================

   Der Rundgang ueber alle 17 Ansichten hat zwei Muster gezeigt, die sich
   erst zeigten, als alles andere auf einer Kante stand.
   -------------------------------------------------------------------------- */

/*
 * ERSTENS: Der Bandtitel stand auf allen Unterseiten bei x=116 statt 96.
 *
 * Die Kette, nachgemessen:
 *
 *   .wp-block-cover   l=0    w=1440   padding-inline: 20px
 *   .inner-container  l=116  w=1208   margin-inline: 96px (auto)
 *
 * Das Band traegt 20 px eigenes Polster. Die Reihe darin wird deshalb gegen
 * 1400 statt 1440 gerechnet: min(1400 - 192, 1248) = 1208, und 20 + 96
 * ergibt 116. Auf der Startseite fiel es nicht auf, weil dort das Band
 * ueber `bp-seitenkopf-start` eine andere Regel bekam.
 *
 * Zwanzig Pixel klingen nach nichts. Sie sind aber genau der Betrag, bei dem
 * man die Verschiebung nicht mehr benennen kann und trotzdem sieht: Der
 * Titel im Band steht nicht ueber der ersten Zeile darunter.
 */
.bp-seitenkopf { padding-inline: 0; }

/*
 * ZWEITENS: Galerien und Tabellen standen auf Leseweite.
 *
 * Die Regel aus Abschnitt 8 deckelt jedes Kind des Inhalts auf 62 Zeichen -
 * richtig fuer Text, falsch fuer alles, was keine Zeilen hat. Die
 * Sargmodelle waren dadurch 668 statt 1248 px breit: drei Kacheln links,
 * rechts 580 px Leere.
 *
 * Die Leseweite gilt fuer Gelesenes. Was betrachtet wird, bekommt die Reihe.
 */
/*
 * Das doppelte `:not()` ist kein Zierrat, sondern Rechnung: Die Regel aus
 * Abschnitt 8 steht bei (0,3,1). Ein `:is()` zaehlt nur EINE Klasse, diese
 * Regel laege also bei (0,2,1) und wuerde verlieren - die Galerie blieb
 * gemessen bei 668 px. Mit den beiden `:not()` sind es (0,4,1).
 */
main .entry-content > :is(figure, .wp-block-gallery, .wp-block-image,
                          .wp-block-embed, .wp-block-table, .wp-block-columns,
                          .wp-block-buttons, .wp-block-separator):not(.alignfull):not(.alignwide),
main .wp-block-post-content > :is(figure, .wp-block-gallery, .wp-block-image,
                          .wp-block-embed, .wp-block-table, .wp-block-columns,
                          .wp-block-buttons, .wp-block-separator):not(.alignfull):not(.alignwide),
main.is-layout-constrained > :is(figure, .wp-block-gallery, .wp-block-image,
                          .wp-block-embed, .wp-block-table):not(.alignfull):not(.alignwide) {
	max-inline-size: 100%;
}

/*
 * Die Kacheln einer Galerie sollen die Reihe fuellen, nicht in ihr stehen.
 * WordPress laesst sie mit `flex-grow: 1` wachsen - das reicht, sobald die
 * Reihe stimmt. Was fehlte, war eine sinnvolle Mindestbreite: Bei zwoelf
 * Bildern und `columns-3` blieben sonst 207 px breite Kacheln uebrig.
 */
main .wp-block-gallery.has-nested-images {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr));
	gap: var(--bp-6);
}

main .wp-block-gallery.has-nested-images > figure.wp-block-image {
	inline-size: 100%;
	max-inline-size: none;
	margin: 0;
}

main .wp-block-gallery.has-nested-images > figure.wp-block-image > a,
main .wp-block-gallery.has-nested-images > figure.wp-block-image > img {
	display: block;
	inline-size: 100%;
}

main .wp-block-gallery.has-nested-images img {
	inline-size: 100%;
	block-size: auto;
	border-radius: var(--bp-r-gross);
}

/*
 * Die Kacheln einer Galerie.
 *
 * Nach dem Umbau auf ein Gitter war die Kachel 294 px breit, das Bild darin
 * aber 82. Der Grund: WordPress setzt fuer `is-cropped` eine eigene Regel auf
 * `.wp-block-gallery.is-cropped figure.wp-block-image img` - Spezifitaet
 * (0,3,2). Sie richtet das Bild als Flex-Kind aus und rechnet mit einer
 * Hoehe, die es im Gitter nicht mehr gibt.
 *
 * Statt dagegen zu halten bekommt die Kachel hier eine eigene Form: eine
 * weisse Flaeche im Seitenverhaeltnis 4:3, das Bild darin vollstaendig
 * sichtbar.
 *
 * `contain`, nicht `cover`: Das sind Produktfotos vor weissem Grund. Ein
 * beschnittener Sarg ist kein Sarg mehr, sondern ein Ausschnitt - und
 * beschnittene Urnen verlieren genau das, was sie unterscheidet.
 */
/*
 * Das `:not(#individual-image)` ist von WordPress abgeschaut, nicht erfunden.
 *
 * Der Kern setzt die Kachelbreite so:
 *
 *   .wp-block-gallery.columns-3.has-nested-images figure.wp-block-image:not(#individual-image)
 *       { width: calc(33.33% - var(--wp--style--unstable-gallery-gap) * 0.667) }
 *
 * Der ID-Selektor im `:not()` trifft nie etwas - er hebt die Regel nur auf
 * Spezifitaet (1,3,2), damit sie sich nicht versehentlich ueberschreiben
 * laesst. Gemessen war die Kachel dadurch 82 px breit: 33 Prozent nicht der
 * Reihe, sondern der Gitterzelle, in der sie schon steht.
 *
 * Eine Klassenregel kann das nicht gewinnen, egal wie lang. Zwei Antworten
 * waeren moeglich - `!important` oder dasselbe Muster. Hier steht dasselbe
 * Muster - plus eine Klasse mehr.
 *
 * Die gleiche Spezifitaet allein hat nicht gereicht: Nachgemessen blieb die
 * Kachel bei 82 px, WordPress druckt seine Blockstile also NACH dieser
 * Datei. Deshalb `main.wp-block-group` statt `main` - eine echte Klasse,
 * die ohnehin am Element steht, und die Regel liegt bei (1,4,2) statt
 * (1,3,2). Kein erfundener Selektor, kein !important.
 */
main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) {
	display: block;
	inline-size: 100%;
	max-inline-size: none;
	background: var(--bp-weiss);
	border-radius: var(--bp-r-gross);
	overflow: hidden;
	padding: var(--bp-4);
	margin: 0;
}

main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) > :is(a, img) {
	display: block;
	inline-size: 100%;
	block-size: auto;
}

main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) img {
	inline-size: 100%;
	block-size: 100%;
	aspect-ratio: 4 / 3;
	object-fit: contain;
	border-radius: 0;
}

/* Die Bildunterschrift steht unter der Flaeche, nicht darauf. Ueber dem Bild
   waere sie ein Etikett; darunter ist sie eine Angabe. */
main .wp-block-gallery.has-nested-images > figure.wp-block-image figcaption {
	position: static;
	background: none;
	padding: var(--bp-3) 0 0;
	margin: 0;
	color: var(--bp-tinte-leise);
	font-size: var(--bp-t-klein);
	text-align: start;
}

/* ==========================================================================
   12. DER KOPF IN ZWEI ZEILEN
   ==========================================================================

   Der Umbau der Vorlage braucht drei Aenderungen an den Regeln aus
   Abschnitt 6. Die alten stehen dort und werden hier ueberschrieben statt
   dort geaendert, damit der Vergleich mit dem Vorher lesbar bleibt - beim
   naechsten Aufraeumen wandern sie zusammen.
   -------------------------------------------------------------------------- */

/*
 * ERSTENS: Kopf und Fuss zentrieren ihre Kinder nicht mehr.
 *
 * Abschnitt 9 hat das fuer `main` geregelt, Kopf und Fuss standen aussen vor.
 * Die Haarlinie war deshalb 624 px breit und mittig - gemessen von x=408 bis
 * x=1032 statt von 96 bis 1344. Eine Linie, die weder anfaengt noch aufhoert,
 * wo etwas anderes anfaengt oder aufhoert.
 */
:is(.bp-kopf, .bp-fuss).is-layout-constrained > :not(.alignfull):not(.alignwide) {
	max-inline-size: none;
}

/*
 * Und der Kopf traegt kein eigenes Polster mehr.
 *
 * Erster Versuch war `margin-inline: 0` wie in Abschnitt 9 - ein Eigentor:
 * Die Linie soll ja mittig sitzen, ihre Breite ist die Reihe. Der Deckel auf
 * der Leseweite war das Problem, nicht die Zentrierung.
 *
 * Blieb ein Rest von 16 px: `has-global-padding` gibt dem Kopf ein eigenes
 * Polster, die Reihe darin wird gegen 1408 statt 1440 gerechnet und landet
 * bei 1216 @112. Dieselbe Ursache wie beim Kopfband in Abschnitt 11.
 */
.bp-kopf.has-global-padding, .bp-fuss.has-global-padding { padding-inline: 0; }

/*
 * ZWEITENS: Die Wege stehen jetzt oben, rechtsbuendig, auf jeder Breite.
 *
 * Vorher waren sie unter 64em ausgeblendet. Damit fehlte auf dem Handy genau
 * die Telefonnummer, deren staendige Erreichbarkeit die Begruendung dafuer
 * war, die feste Leiste am unteren Bildschirmrand abzuschaffen.
 *
 * Der Ort bleibt schmalen Bildschirmen erspart: Er ist eine Einordnung, keine
 * Handlung, und kostet 180 px, die dort niemand hat.
 */
.bp-kopf-wege {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--bp-6);
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	margin-inline: auto;
	padding-block-end: var(--bp-2);
}

.bp-kopf-ort { display: none; }

@media (min-width: 48em) {
	.bp-kopf-ort { display: inline-flex; }
}

/*
 * Die Wege tragen die kleinere Stufe: Sie ordnen ein, sie fuehren nicht.
 * 44 px Hoehe bleiben trotzdem - die Nummer ist ein Ziel, kein Hinweis.
 *
 * 14 STATT 16 PX seit dem 26. August 2026, auf Wunsch. Der Grund dahinter
 * traegt: Nummer und Ort stehen jetzt neben einem 104-px-Logo statt neben
 * einem 64-px-Logo. Bei gleicher Schriftgroesse haetten sie mit der Marke um
 * dieselbe Aufmerksamkeit konkurriert.
 *
 * 14 px ist die kleinste Groesse, die auf dieser Website vorkommt, und sie
 * ist hier vertretbar: Die Nummer ist zusaetzlich fett gesetzt, steht auf
 * 15,06:1 Kontrast und hat weiterhin 44 px Klickflaeche. Kleiner wird hier
 * nichts mehr - 12 px waeren fuer eine Zielgruppe ueber 60 ein Rueckschritt.
 */
.bp-kopf-nummer, .bp-kopf-ort {
	min-block-size: 44px;
	font-size: 0.875rem;
}

/*
 * Die Symbole gehen mit. Sie sind im Quelltext mit 18 px angelegt; ohne
 * diese Regel stuenden sie neben der kleineren Schrift zu gross da und
 * zoegen den Blick auf sich statt auf die Nummer.
 */
.bp-kopf-wege svg { inline-size: 15px; block-size: 15px; }

/*
 * DER WEGE-STREIFEN BEKOMMT EINE EIGENE FLAECHE - auf Wunsch vom
 * 26. August 2026, in derselben Farbe wie das Angabenfeld der Kontaktseite.
 *
 * Er trennt damit sichtbar, was er ohnehin trennt: Nummer und Ort sind die
 * DAUERHAFTEN Angaben, das Menue darunter sind die Wege durch die Seite.
 * Bisher lagen beide auf demselben Grund und der Unterschied stand nur in
 * der Schriftgroesse.
 *
 * ER GEHT UEBER DIE VOLLE FENSTERBREITE, sein Inhalt bleibt auf der
 * Inhaltskante. Ein Streifen, der bei x=96 anfaengt, waere kein Streifen,
 * sondern ein Kasten - und der Kopf klebt, das faellt beim Scrollen auf.
 *
 * Die Rechnung im `padding-inline` macht genau das:
 *
 *   max( Rand , (Fensterbreite - Inhaltsbreite) / 2 )
 *
 * Bei 1440 sind beide 96. Bei 1920 gewinnt die Haelfte (336) und der Inhalt
 * bleibt auf der Reihe. Unter 1440 gewinnt der Rand und der Streifen behaelt
 * seinen Mindestabstand zur Fensterkante. Dieselbe Rechnung wie ueberall
 * sonst, nur andersherum aufgeloest: Sonst wird die BREITE gedeckelt, hier
 * das POLSTER geweitet.
 *
 * AUF JEDER BREITE, seit die Zeile ueberall sichtbar ist. Bis zum Abend des
 * 26. August 2026 stand das hier in einem `@media (min-width: 64em)`, weil
 * es die Zeile darunter nicht gab.
 */
.bp-kopf-wege {
	inline-size: auto;
	max-inline-size: none;
	margin-inline: 0;
	padding-inline: max(var(--bp-rand), calc((100% - var(--bp-weit)) / 2));
	background: var(--bp-flaeche-hell);
}

/*
 * DRITTENS: Der Kontaktknopf steht in der zweiten Zeile neben dem Menue und
 * verschwindet auf schmalen Bildschirmen - dort steht der Punkt „Kontakt"
 * ohnehin im aufgeklappten Menue, und ein zweiter Weg zum selben Ziel neben
 * dem Umschalter waere nur Gedraenge.
 */
.bp-kopf-knopf { display: none; }

@media (min-width: 64em) {
	.bp-kopf-knopf {
		display: inline-flex;
		align-items: center;
		min-block-size: 44px;
		padding-block: var(--bp-2);
		white-space: nowrap;
	}
}

/*
 * Die zweite Zeile ist `alignwide` und bekaeme damit die Blockbreite aus
 * theme.json - bei 1280 px sind das 1248 @16, waehrend die Wege darueber bei
 * 1088 @96 stehen. Zwei Kanten im selben Kopf, sichtbar ab dem Moment, wo das
 * Fenster schmaler als 1440 ist. Also dieselbe Rechnung wie ueberall.
 */
.bp-kopf-zeile.alignwide {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	max-inline-size: none;
	margin-inline: auto;
}

/*
 * HIER STAND `.bp-kopf { padding-block: var(--bp-2) var(--bp-3) }`.
 * Entfernt am 26. August 2026.
 *
 * Es war die ZWEITE von drei Angaben zum selben Polster - 60 Zeilen weiter
 * unten stand eine dritte, die sie ohnehin ueberschrieben hat. Sie hat also
 * nie gewirkt und war nur eine Stelle, an der jemand nachschaut und den
 * falschen Wert findet.
 *
 * Hausregel: Steht ein Wert an zwei Stellen, ist eine davon ein Fehler.
 * Bei drei Stellen sind es zwei.
 */

/* Die Fusslinie folgt derselben Regel. */
.bp-fuss-schluss { max-inline-size: none; }

/*
/*
 * HIER STAND DER RUNDE RUFKNOPF. Entfernt am 26. August 2026 abends,
 * zusammen mit dem <a> in parts/header.html.
 *
 * Die Begruendung von damals: Der Kopf war mit zwei Zeilen 166 px hoch,
 * bei 667 px Bildschirmhoehe ein Viertel - und das klebend, also dauerhaft.
 * Die Wege-Zeile entfiel deshalb unter 64em, und die Nummer blieb als
 * 52-px-Knopf neben dem Umschalter erreichbar.
 *
 * WAS SICH GEAENDERT HAT: Der Wunsch, dass Nummer und Ort auf jeder Breite
 * sichtbar bleiben, macht die Wege-Zeile ueberall sichtbar. Damit stuenden
 * Knopf und Zeile nebeneinander - zweimal dieselbe Nummer im selben Kopf,
 * 40 px voneinander entfernt. Dasselbe Argument, das am 24. August den
 * Kontaktknopf gekostet hat.
 *
 * Von den beiden geht der Knopf, nicht die Zeile: Die Zeile traegt auch
 * den Ort, sie ist ein `tel:`-Verweis wie der Knopf, und sie sagt die
 * Nummer, statt sie hinter einem Symbol zu verstecken.
 *
 * DER PREIS, gemessen: Der klebende Kopf waechst auf schmalen Bildschirmen
 * von 89 auf rund 137 px. Bei 667 px Bildschirmhoehe sind das 21 statt 13
 * Prozent. Weniger als die 166 px von damals, aber mehr als vorher.
 */

@media (max-width: 63.99em) {
	/*
	 * Das Logo bleibt schmal kleiner als am Schreibtisch - es traegt hier
	 * keine Zeile neben sich, sondern zwei Knoepfe.
	 *
	 * 72 STATT 48 PX seit dem 26. August 2026. Der Einwand „kaum lesbar" galt
	 * auf einem Telefon noch staerker als am Schreibtisch: Der Schriftzug im
	 * Bild war dort rund 5 px hoch. 72 px lassen neben dem Rufknopf (44) und
	 * dem Menueschalter (44) bei 375 px Breite noch 190 px Luft.
	 */
	.bp-logo img, .bp-logo .custom-logo { inline-size: 72px; }
}

/*
 * Der Blockabstand zwischen den beiden Kopfzeilen.
 *
 * WordPress setzt 24 px zwischen Bloecke. Zwischen zwei Zeilen desselben
 * Kopfes ist das keine Trennung, sondern Hoehe: Sie machten allein ein
 * Siebtel der gemessenen 166 px aus.
 */
.bp-kopf > * { margin-block: 0; }
.bp-kopf .bp-kopf-zeile { margin-block-start: 0; }

/*
 * DAS POLSTER DES KOPFES - die EINZIGE Angabe dazu, seit dem 26. August 2026.
 *
 * Vorher standen drei: hier, 60 Zeilen weiter oben und in Abschnitt 19.
 * Zwei davon haben nie gewirkt.
 *
 * OBEN NULL, auf jeder Breite. Der Wege-Streifen traegt eine eigene Flaeche
 * und muss die Oberkante des Kopfes beruehren - mit Polster darueber laege
 * ein Band in Kopffarbe ueber dem Streifen, und der saehe aus wie ein
 * Kasten, der nicht ganz nach oben reicht.
 *
 * Die frueher hier stehende Ausnahme fuer schmale Bildschirme ist entfallen:
 * Dort gab es den Streifen nicht, seit dem 26. August 2026 abends schon.
 */
.bp-kopf { padding-block: 0 var(--bp-2); }

/*
 * DER STREIFEN POLSTERT OBEN WIE UNTEN GLEICH - auf Wunsch, 26. August 2026:
 * „oben etwas weniger Abstand, damit es genau gleich viel ist oben und
 * unten."
 *
 * Gemessen waren es 8 px oben und 4 unten, dazu die 8 px Kopfpolster
 * DARUEBER, die gar nicht zum Streifen gehoerten. Zusammen sah es nach
 * deutlich mehr Luft oben aus, als unten war.
 *
 * Jetzt 4 px auf beiden Seiten, aus EINER Angabe. Die Verweise darin sind
 * 44 px hoch (Mindestklickflaeche), der Streifen also 52 - die Zeile im
 * Text sitzt damit genau in der Mitte.
 *
 * Die frueher hier stehende Einzelangabe `padding-block-end: var(--bp-1)`
 * ist entfallen: Sie war der Grund fuer die Ungleichheit.
 */
.bp-kopf-wege { padding-block: var(--bp-1); }

/* ==========================================================================
   13. DIE TRAUERFALL-KACHEL
   ==========================================================================

   Gemessen war die Kachel 301 x 201 px, das Bild darin 72 x 102 - bei einer
   Vorlage von 144 x 203. Die Haelfte also, und mittig gesetzt, waehrend Datum
   und Name links standen. Zwei Achsen auf 301 px Breite.

   Das Gesicht auf einer Parte war damit rund 20 px gross. Wer hier sucht,
   sucht einen Menschen, den er kennt - 20 px reichen dafuer nicht.

   ZUR SCHAERFE: 144 CSS-Pixel aus einer 144-Pixel-Vorlage sind auf einem
   Bildschirm mit doppelter Aufloesung leicht weich. Das ist der Preis, und er
   ist bewusst bezahlt: Ein gestochen scharfes Bild, auf dem man niemanden
   erkennt, hat seinen Zweck verfehlt. Eine groessere Vorlage waere die
   bessere Antwort - sie hiesse aber, `add_image_size` zu aendern und 224
   Vorschaubilder neu zu erzeugen. Das ist eine Datenaenderung, nicht
   Gestaltung, und steht deshalb im Bericht statt hier.
   -------------------------------------------------------------------------- */

.bp-liste-karten .bp-liste-eintrag > a,
.bp-liste-karten-vier .bp-liste-eintrag > a {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	justify-items: start;
	align-content: start;
	text-align: start;
	padding: var(--bp-4);
	row-gap: var(--bp-3);
}

.bp-liste-karten .bp-liste-bild,
.bp-liste-karten-vier .bp-liste-bild {
	inline-size: 144px;
	max-inline-size: 100%;
	block-size: auto;
	aspect-ratio: 144 / 203;
	object-fit: cover;
	border-radius: var(--bp-r-klein);
}

.bp-liste-karten .bp-liste-bild-leer,
.bp-liste-karten-vier .bp-liste-bild-leer {
	inline-size: 144px;
	aspect-ratio: 144 / 203;
	border-radius: var(--bp-r-klein);
}

.bp-liste-karten .bp-liste-text,
.bp-liste-karten-vier .bp-liste-text {
	inline-size: 100%;
	justify-items: start;
	text-align: start;
}

.bp-liste-karten :is(.bp-liste-datum, .bp-liste-termin, .bp-liste-ort, .bp-liste-kondolenzen),
.bp-liste-karten-vier :is(.bp-liste-datum, .bp-liste-termin, .bp-liste-ort, .bp-liste-kondolenzen) {
	text-align: start;
	color: var(--bp-tinte-leise);
	font-size: var(--bp-t-klein);
}

/*
 * Der Name traegt die Kachel. Er ist das einzige, wonach hier gesucht wird -
 * und mit 32 px die groesste Schrift ausserhalb der Ueberschriften.
 */
.bp-liste-karten .bp-liste-name,
.bp-liste-karten-vier .bp-liste-name {
	font-size: var(--bp-t-h3);
	line-height: 1.2;
	letter-spacing: -0.005em;
	color: var(--bp-tinte);
	hyphens: auto;
}

/* Die Kachel selbst: dieselbe weisse Flaeche und Rundung wie jede andere. */
.bp-liste-karten .bp-liste-eintrag,
.bp-liste-karten-vier .bp-liste-eintrag {
	background: var(--bp-weiss);
	border-radius: var(--bp-r-gross);
	border: 0;
	box-shadow: none;
	overflow: hidden;
}

.bp-liste-karten .bp-liste-eintrag:hover,
.bp-liste-karten-vier .bp-liste-eintrag:hover,
.bp-liste-karten .bp-liste-eintrag:focus-within,
.bp-liste-karten-vier .bp-liste-eintrag:focus-within {
	background: var(--bp-weiss);
	box-shadow: 0 0 0 2px var(--bp-akzent);
}

.bp-liste-karten .bp-liste-eintrag > a,
.bp-liste-karten-vier .bp-liste-eintrag > a { text-decoration: none; }

/* Das Gitter folgt der Reihe, nicht einer eigenen Breite. */
.bp-liste.bp-liste-karten {
	max-inline-size: none;
	gap: var(--bp-6);
}

/* ==========================================================================
   14. UEBERSCHRIFTEN UND TEXT IN SPALTEN
   ==========================================================================

   Eine Ueberschrift richtet sich nach ihrer Ebene, aber lesen muss man sie in
   ihrer Spalte. Auf den Bestattungsformen standen drei h2 mit 48 px in
   Spalten von 400 px - gemessen brach das mitten im Wort um:
   "Feuerbe-stattung", "Sonstige Bestat-tungsformen".

   Also eine Stufe tiefer, sobald eine Ueberschrift in einer Spalte steht. Die
   Ebene im Dokument bleibt unveraendert - ein Vorleseprogramm hoert weiter
   eine h2. Nur die Groesse folgt dem Platz.
   -------------------------------------------------------------------------- */

main .wp-block-column :is(h1, h2) {
	font-size: var(--bp-t-h3);
	line-height: 1.25;
	letter-spacing: -0.005em;
	hyphens: manual;   /* In einer kurzen Zeile ist ein Trennstrich Laerm. */
}

main .wp-block-column h3 { font-size: var(--bp-t-lead); }

/*
 * Der Fliesstext in den Spalten stand auf 17 px - unter der Grenze von 18,
 * die fuer diese Zielgruppe gilt. `--wp--preset--font-size--normal` ist ein
 * Wert aus dem alten System; hier gilt derselbe Text wie ueberall.
 */
.bp-formen :is(p, li),
main .wp-block-column :is(p, li) {
	font-size: var(--bp-t-text);
	color: var(--bp-tinte);
}

.bp-formen li { color: var(--bp-tinte); }

/*
 * DIE NUMMERIERUNG 01, 02, 03 IST ENTFALLEN.
 *
 * Sie stand als `::before` vor jeder Spaltenueberschrift. Drei
 * Bestattungsformen sind aber keine Schritte und keine Rangfolge - es gibt
 * kein "zuerst 01, dann 02". Die Nummern haben eine Ordnung behauptet, die
 * die Sache nicht hat.
 *
 * Dazu kommt der ausdrueckliche Teil des Auftrags: Von der Leitreferenz sind
 * Weissraum, Typografie und Bildbehandlung uebernommen, NICHT ihre
 * Verkaufsdramaturgie. Durchnummerierte Leistungsbausteine gehoeren zu
 * zweiterem.
 */
.bp-formen :is(h2, h3)::before { content: none; }

/*
 * Die Aufzaehlungszeichen waren goldene Rauten. Ein Punkt reicht: Die Liste
 * zaehlt auf, sie schmueckt nicht.
 */
.bp-formen ul { list-style: disc; padding-inline-start: 1.25rem; }
.bp-formen li { padding-inline-start: 0; position: static; }
.bp-formen li::before { content: none; }
.bp-formen li::marker { color: var(--bp-tinte-leise); }

/* Die Karten der Spalten tragen dieselbe Flaeche und Rundung wie alle. */
.bp-formen .wp-block-column {
	background: var(--bp-weiss);
	border-radius: var(--bp-r-gross);
	overflow: hidden;
	padding: 0 0 var(--bp-6);
}

.bp-formen .wp-block-column > :not(.wp-block-image) {
	padding-inline: var(--bp-6);
}

/* ==========================================================================
   15. DIE TRAUERFALL-SEITE
   ==========================================================================

   Gemessen stand hier alles mittig in einer Spalte von 46 rem, die selbst
   mittig in der Inhaltsreihe sass. Der Name begann dadurch bei x=200 - weder
   auf der Kante der Seite noch mittig im Fenster, sondern auf einer dritten
   Achse. Der Rueckweg darunter stand als einziges bei x=96 und hat die
   Abweichung damit selbst vorgefuehrt.

   Zentriert bleibt hier nichts. Eine Parte ist ein Dokument, kein Plakat: Der
   Name steht oben links, darunter das Datum, darunter das Blatt, darunter die
   beiden Wege. Genau die Reihenfolge, in der man es liest.
   -------------------------------------------------------------------------- */

.bp-trauerfall-blatt,
.bp-zurueck {
	max-inline-size: none;
	margin-inline: 0;
	text-align: start;
}

.bp-parte-kopf,
.bp-trauerfall-blatt .bp-parte > h2,
.bp-trauerfall-blatt .bp-parte-download,
.bp-parte,
.bp-parte-hinweis {
	text-align: start;
	padding-inline: 0;
}

/*
 * Das Parte-Bild. Es ist der Grund, warum jemand diese Seite geoeffnet hat -
 * der Text darauf soll ohne Vergroesserung lesbar sein.
 *
 * DER DECKEL VON 420 PX IST AM 27. AUGUST 2026 ENTFALLEN. Er war die ZWEITE
 * Stelle fuer diese Breite (die erste stand in style.css) und stammte aus
 * der Zeit, als das Blatt 826 px breit war. Seit das Blatt selbst auf 624 px
 * steht, fuellt die Parte es aus - die Breite steht jetzt an einer Stelle,
 * am Blatt in Abschnitt 20.
 *
 * Hausregel: Steht ein Wert an zwei Stellen, ist eine davon ein Fehler. Hier
 * waren es zwei Stellen mit demselben Wert - und beide mussten weg, bevor
 * die Aenderung wirkte.
 */
.bp-trauerfall-blatt .bp-parte-link,
.bp-parte-link {
	display: block;
	inline-size: 100%;
	margin-inline: 0;
}

.bp-trauerfall-blatt .bp-parte-bild,
.bp-parte-bild {
	inline-size: 100%;
	max-inline-size: none;
	block-size: auto;
	border-radius: var(--bp-r-klein);
	box-shadow: none;
	border: 1px solid var(--bp-linie);
}

/* Die Zeile ueber dem Blatt ordnet ein, sie ruft nicht. */
.bp-trauerfall-blatt .bp-parte > h2,
.bp-parte h2 {
	font-size: var(--bp-t-klein);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--bp-tinte-leise);
	margin-block: 0 var(--bp-3);
}

.bp-trauerfall-blatt .bp-parte-download { display: block; }

/*
 * Der Name traegt die Seite - dieselbe Groesse wie eine Ueberschrift erster
 * Ebene, weil er hier genau das ist.
 */
.bp-parte-kopf .bp-parte-name,
.bp-parte-kopf h1 {
	font-size: var(--bp-t-h1);
	line-height: 1.2;
	margin-block: 0 var(--bp-3);
}

.bp-parte-kopf .bp-anrede { color: var(--bp-tinte-leise); }

/*
 * Der kurze Strich zwischen Name und Datum sass mit `margin-left: -36px` auf
 * der Mitte seines Kastens - ein Rest der zentrierten Fassung. Er bleibt,
 * denn er trennt zwei Angaben, die sonst zu dicht stuenden. Er beginnt jetzt
 * nur dort, wo alles andere auch beginnt.
 */
.bp-lebensdaten::before { margin-inline: 0; }

/* Und alles unterhalb des Blattes folgt derselben Kante. */
.bp-trauerfall-blatt :is(.bp-parte-vergroessern, .bp-parte-hinweis, p, span, a) {
	text-align: start;
}

/* ==========================================================================
   16. ZWEI ARTEN VON GALERIE
   ==========================================================================

   Abschnitt 11 setzt `object-fit: contain` fuer alle Kacheln. Fuer Urnen und
   Saerge ist das richtig: Produktfotos vor weissem Grund, bei denen jeder
   Beschnitt etwas wegnimmt, das den Unterschied ausmacht.

   Fuer die Fotogalerie ist es falsch. Dort liegen Aufnahmen aus Kirchen und
   Aufbahrungen, hoch und quer gemischt. Im 4:3-Kasten stehen die hochkanten
   Bilder mit weissen Balken links und rechts - vier Kacheln je Reihe, in
   jeder ein anderer Rand. Gemessen an der Aufgabe: Diese Bilder zeigen eine
   Stimmung, keinen Gegenstand. Ein Beschnitt nimmt ihr nichts.

   DIE UNTERSCHEIDUNG, und warum sie so und nicht anders getroffen ist:

   Urnen und Sargmodelle sind Unterseiten von „Bestattungsformen" und tragen
   deshalb `parent-pageid-1195`. Das ist der einzige Unterschied, den das
   Markup hergibt - die Bilder selbst sehen fuer CSS gleich aus.

   Der Preis ist eine Zahl im Stylesheet. Wird die Seitenstruktur umgebaut,
   muss sie mit. Die Alternative waere `is-cropped` gewesen - der Schalter
   „Bilder zuschneiden" im Editor, den WordPress fuer genau diese Frage hat.
   Er steht aber heute auf BEIDEN Galerien, die Urnen wuerden also
   beschnitten, bis jemand ihn umlegt. Steht im Bericht.
   -------------------------------------------------------------------------- */

main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) img {
	object-fit: cover;
}

body.parent-pageid-1195 main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) img {
	object-fit: contain;
}

/* Fotos brauchen kein weisses Polster um sich - sie sind selbst die Flaeche. */
body:not(.parent-pageid-1195) main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) {
	padding: 0;
}

/* ==========================================================================
   17. DAS VERZEICHNIS
   ==========================================================================

   Die Regel aus Abschnitt 8 deckelt jedes Kind des Inhalts auf die Leseweite.
   Fuer Fliesstext ist das der Zweck; fuer das Archiv war es falsch. Gemessen
   standen dort 25 Zeilen in 668 px, jede mit einem 96 px breiten Bild und
   einem Namen - und rechts daneben 580 px Leere.

   Eine Namensliste wird ueberflogen, nicht gelesen. Die Grenze von 62 Zeichen
   schuetzt das Auge beim Zeilenwechsel; hier gibt es keinen Zeilenwechsel,
   sondern 25 Sprunge von oben nach unten.

   880 px statt der vollen Reihe: Bei 1248 px liegen Bild und Name so weit
   auseinander, dass der Blick die Strecke dazwischen mitgehen muss.

   `--bp-mittel` und nicht das alte `--bp-verzeichnis` (52rem): Zwei Namen
   fuer fast denselben Wert sind der Anfang des Problems, das dieser Umbau
   aufraeumt. Der alte Wert steht noch in style.css und wird beim naechsten
   Durchgang dort entfernt.
   -------------------------------------------------------------------------- */

/*
 * Die Blaetterleiste steht als `nav` DIREKT in `main`, nicht im Inhaltsblock -
 * deshalb hier ein eigener Selektor. Die erste Fassung hat sie mit
 * `.entry-content >` gesucht und nicht gefunden; gemessen blieb sie bei 668.
 */
main .entry-content > :is(.bp-liste, .bp-blaettern),
main .wp-block-post-content > :is(.bp-liste, .bp-blaettern),
main > :is(.bp-liste, .bp-blaettern),
main .wp-block-bp-trauerfall-liste {
	max-inline-size: var(--bp-mittel) !important;
	margin-inline: 0 !important;
}

/* Die Kachelansicht bleibt davon unberuehrt - sie fuellt die ganze Reihe. */
main :is(.entry-content, .wp-block-post-content) > .bp-liste.bp-liste-karten,
main .bp-liste.bp-liste-karten {
	max-inline-size: none !important;
}

/*
 * DIE BLAETTERLEISTE FOLGT DER LISTE, UNTER DER SIE STEHT.
 *
 * Sie soll mittig stehen (Wunsch vom 26. August 2026). „Mittig" ist aber nur
 * eine halbe Angabe, solange nicht feststeht, WORIN - dieselbe Lehre wie bei
 * den Bandtiteln, siehe Styleguide B11.
 *
 * Die beiden Ansichten haben verschiedene Breiten, und das ist Absicht:
 *
 *   /trauerfaelle/          Kacheln ueber die ganze Reihe   1248 px
 *   /trauerfaelle/archiv/   Zeilenliste auf Verzeichnisbreite 880 px
 *
 * Eine Leiste mit fester Breite trifft damit hoechstens eine der beiden.
 * Gemessen stand sie unter den Kacheln bei Mitte 536, waehrend die Kacheln
 * darueber ihre Mitte bei 720 hatten - „zentriert" sah dort aus wie
 * verrutscht.
 *
 * `:has(.bp-liste-karten)` fragt genau das Richtige: Steht ueber mir die
 * Kachelansicht? Dann nimm die ganze Reihe. Sonst bleibt es bei der
 * Verzeichnisbreite, und die Leiste sitzt mittig unter der Zeilenliste.
 *
 * Kein `body`-Klassenname und keine zweite Klasse aus dem Plugin: Die Frage
 * ist eine ueber das, was auf DIESER Seite steht, und `:has()` beantwortet
 * sie ohne eine zweite Stelle, die mitgepflegt werden muss.
 */
main:has(.bp-liste-karten) > .bp-blaettern {
	max-inline-size: none !important;
}

/*
 * DIE BLAETTERLEISTE STEHT MITTIG - auf Wunsch, 26. August 2026.
 *
 * Sie stand seit dem 24. August auf `space-between`: „Neuere" ganz links auf
 * der Kante, „Aeltere" ganz rechts, der Stand dazwischen. Ueber 1248 px
 * verteilt waren das drei Stuecke mit rund 400 px Luft dazwischen - sie
 * sahen nicht wie eine Leiste aus, sondern wie drei Dinge, die zufaellig auf
 * derselben Hoehe liegen.
 *
 * Die Begruendung von damals - „beide auf ihrer Kante" - kam aus der Regel
 * der einen linken Kante. Sie gilt fuer eine Blaetterleiste nicht: Die drei
 * gehoeren zusammen und werden als Gruppe gelesen.
 *
 * DIE PLATZHALTER BLEIBEN. Auf der ersten Seite gibt es kein „Neuere", auf
 * der letzten kein „Aeltere"; dort steht ein leeres <span> mit derselben
 * Mindestbreite (7rem, style.css). Ohne sie spraenge „Seite 1 von 19" beim
 * Blaettern um rund 100 px zur Seite - genau der Grund, aus dem sie einmal
 * angelegt wurden. Mit `center` sind sie noch wichtiger als mit
 * `space-between`.
 */
.bp-blaettern {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--bp-4) var(--bp-7);
}

.bp-blaettern-stand { margin: 0; text-align: center; }

/* ==========================================================================
   18. FUENF KACHELN IN DER FOTOGALERIE
   ==========================================================================

   Die Galerie wog 2,34 MB. Nicht wegen der Anzahl - 33 Bilder sind 33 Bilder -
   sondern wegen der Groesse jedes einzelnen: Der Browser lud die Fassung mit
   679 px Breite fuer eine Kachel von 294 px.

   Das war kein Fehler des Browsers. Die Bildleiter, die WordPress fuer diese
   Aufnahmen erzeugt hat, lautet:

       144w   199w   265w   679w   768w   928w

   Zwischen 265 und 679 liegt nichts. Bei 294 px Kachel braucht der Browser
   mindestens 294w und nimmt die naechste vorhandene Stufe - also 679, mehr
   als das Doppelte.

   Fuenf Kacheln statt vier machen aus 294 px 230 px. Damit reicht die Stufe
   265w, und dieselben 33 Bilder wiegen rund ein Drittel.

   Fuenf waren ohnehin gewuenscht. Dass die Rechnung dazu passt, ist Glueck -
   die bessere Antwort waere eine Zwischenstufe um 400 px in der Bildleiter.
   Die anzulegen heisst `add_image_size` erweitern und die Bilder neu erzeugen,
   also Daten statt Gestaltung. Steht im Bericht.

   Urnen und Saerge bleiben bei vier: Dort sind es zwoelf Stuecke, die man
   vergleicht, keine Stimmung, die man ueberfliegt - und ihre Bilder liegen
   ohnehin unter der Grenze.
   -------------------------------------------------------------------------- */

/*
 * Die Spaltenzahl steht ausdruecklich je Breite, nicht ueber `auto-fill`.
 *
 * `auto-fill` mit 15rem Mindestbreite ergab bei 768 px genau ZWEI Spalten,
 * also 340 px Kachel - und damit wieder die 679er Stufe. Die Galerie wog dort
 * 2,6 MB, mehr als am Schreibtisch. Wer die Seite auf einem Tablet oder einem
 * kleinen Fenster oeffnet, hat selten die bessere Leitung.
 *
 * Gerechnet wird gegen die Bildleiter, nicht gegen ein Gefuehl:
 *
 *   Breite  Spalten  Kachel   Stufe
 *      375        2   151px    199w
 *      768        3   218px    265w
 *     1440        5   230px    265w
 */
body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (min-width: 48em) {
	body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 64em) {
	body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
		grid-template-columns: repeat(5, minmax(0, 1fr));
	}
}

/* ==========================================================================
   19. DIE RUECKMELDUNG VOM 26. AUGUST 2026
   ==========================================================================

   Siebzig Einzelwuensche, gesammelt und in einem Zug umgesetzt. Der
   Sammelabschnitt ist Absicht: Was am selben Tag aus derselben Durchsicht
   kommt, gehoert zusammen dokumentiert - sonst steht in einem halben Jahr
   siebzigmal „auf Wunsch" ohne den Zusammenhang.

   DER TRAGENDE PUNKT DARIN, und er dreht eine Entscheidung des letzten
   Durchgangs zurueck:

   Am 24. August wurde ALLES auf EINE linke Kante gestellt. Abschnitt 8 und 9
   dieser Datei haben dafuer eigens die mittige Ausrichtung aus dem Kopfband,
   dem Zitat und dem Kontaktband entfernt, mit der Begruendung: „Zentriert
   bleibt nur, was die Referenz auch zentriert: nichts im Fliesstext."

   Diese Rueckmeldung will die grossen Ueberschriften wieder mittig. Das ist
   kein Widerspruch, sondern eine andere Abwaegung - die Referenz ist ein
   Vorbild, kein Gesetz. Aber es MUSS eine Grenze geben, sonst entsteht eine
   Mischung aus beidem, und die sieht nicht nach Entscheidung aus, sondern
   nach Versehen. Die Grenze lautet:

     MITTIG   das Kopfband (Seitentitel und Betriebsname), das Zitat, der
              Inhalt einer Trauerfall-Kachel, die Zwischenueberschriften
              („Diese Dokumente werden benoetigt", „Welche Leistungen ...")

     LINKS    jeder Fliesstext, jede Aufzaehlung, jede Bildunterschrift,
              der Fussbereich, das Formular

   Kurz: Was man ANSIEHT, steht mittig. Was man LIEST, steht links. Eine
   mittig gesetzte Aufzaehlung mit acht Punkten ist keine Gestaltung, sondern
   eine Zumutung fuer das Auge, das nach jedem Punkt den Zeilenanfang neu
   suchen muss.

   WER HIER ETWAS HINZUFUEGT, entscheidet zuerst, auf welcher Seite dieser
   Grenze es steht.
   -------------------------------------------------------------------------- */

/* --- 19.1 Die Schrift der Ueberschriften -------------------------------- */

/*
 * Marcellus, seit 26. August 2026. Eine Lapidarschrift nach roemischen
 * Inschriften - dieselbe Formfamilie, aus der Grabstein-Lettern kommen. Auf
 * einer Bestattungsseite ist das kein Zitat, sondern die Herkunft.
 *
 * NUR EIN SCHNITT (400). Es gibt kein Fett. Wer hier `font-weight: 600`
 * schreibt, bekommt vom Browser eine gerechnete Fettung, und die zerstoert
 * genau die feinen Serifen, wegen derer die Schrift gewaehlt wurde. Die
 * Rangfolge zwischen Ueberschriften entsteht deshalb ueber GROESSE und
 * LAUFWEITE, nicht ueber Gewicht.
 *
 * Deshalb steht hier ueberall ausdruecklich `font-weight: 400` - nicht als
 * Zierrat, sondern um das 600 zu ueberschreiben, das Abschnitt 2 auf alle
 * Ueberschriften setzt.
 */
:root {
	--bp-schrift-titel: "Marcellus", "Iowan Old Style", "Palatino Linotype",
	                    Palatino, Georgia, "Times New Roman", serif;
}

/*
 * WELCHE UEBERSCHRIFTEN DIE NEUE SCHRIFT TRAGEN - und welche nicht.
 *
 * Sie traegt: den Betriebsnamen im Kopfband, jeden Seitentitel, jede h2 und
 * h3 im Seiteninhalt, das Zitat, die Fussspaltentitel.
 *
 * Sie traegt NICHT: den Namen auf einer Trauerfall-Kachel. Der ist der
 * Name eines Verstorbenen und wird GELESEN, nicht betrachtet - er bleibt
 * in der Textschrift, wo er in jeder Groesse verlaesslich ist. Das ist eine
 * bewusste Ausnahme und keine Luecke.
 */
.bp-bandname,
.bp-seitenkopf :is(h1, h2),
main .wp-block-post-content > :is(h1, h2, h3),
main .wp-block-post-content .wp-block-column > :is(h2, h3),
.bp-einstieg-wort > :is(h2, h3),
.bp-abschnittskopf h2,
.bp-zitat,
.bp-fuss-titel,
.bp-untertitel,
.bp-angabe-titel {
	font-family: var(--bp-schrift-titel);
	font-weight: 400;
	letter-spacing: 0;
}

/* --- 19.2 Das Kopfband: mittig statt links ------------------------------ */

/*
 * Dies hebt die Regel aus Abschnitt 9 auf, die den Bandtitel auf die linke
 * Kante gestellt hat. Sie steht dort weiterhin mit ihrer Begruendung; hier
 * steht, warum sie nicht mehr gilt.
 *
 * DAS `!important` IST GEERBT, NICHT NEU: Abschnitt 9 musste es setzen, weil
 * WordPress `margin-left: auto !important` auf zentrierte Kinder schreibt.
 * Eine Regel ohne `!important` koennte die von dort nicht schlagen, egal wie
 * spezifisch sie ist. Wer eine der beiden loescht, muss die andere
 * mitloeschen.
 */
/*
 * DIESELBE SPEZIFITAETSFALLE WIE BEIM ZITAT, und sie ist hier erst beim
 * dritten Nachmessen aufgefallen.
 *
 * `.bp-seitenkopf :is(h1, h2, p)` liegt bei (0,1,1). Die Regel aus
 * Abschnitt 9 - `main :is(.wp-block-group, …).is-layout-constrained >
 * :not(.alignfull):not(.alignwide)` - liegt bei (0,4,1) und setzt
 * `margin-inline: 0 !important`.
 *
 * Das Ergebnis sah aus wie zentriert und war es nicht: Der TEXT stand mittig
 * in seinem Kasten, der Kasten aber links im Band. Gemessen lag
 * „Bestattung Pöttinger" bei Mitte x=522 statt x=720.
 *
 * WARUM ES NIEMAND GESEHEN HAT: Eine Pruefung auf `text-align: center` sagt
 * „ja". Die Frage ist aber nicht, ob die Zeilen in ihrem Kasten mittig
 * stehen, sondern wo der Kasten steht. tools/rueckmeldung-pruefen.mjs
 * vergleicht deshalb jetzt MITTEN, nicht `text-align`.
 *
 * DIE ARITHMETIK, weil sie beim ersten Anlauf falsch war:
 *
 *   .bp-seitenkopf .wp-block-cover__inner-container > :is(h1, h2, p)
 *
 * sieht nach viel aus und ist (0,2,1) - `:is(h1, h2, p)` zaehlt als
 * ELEMENT, nicht als Klasse, weil seine staerkste Alternative ein Element
 * ist. Gegen (0,4,1) chancenlos, und wieder still: Im Quelltext stand
 * `auto`, gewirkt hat `0`.
 *
 * Vier Klassen sind noetig. Die Regel unten nimmt drei vom Behaelter
 * (`wp-block-cover__inner-container`, `is-layout-constrained`,
 * `has-global-padding` - alle drei setzt WordPress selbst) plus
 * `.bp-seitenkopf` vom Band. Macht (0,4,1), gleichauf mit der Regel aus
 * Abschnitt 9 und weiter unten in derselben Datei - damit gewinnt sie.
 *
 * WER EINE DER DREI WORDPRESS-KLASSEN HIER STREICHT, weil sie ueberfluessig
 * aussieht, macht die Regel wirkungslos. Sie sind der Zaehler, nicht die
 * Beschreibung.
 */
.bp-seitenkopf .wp-block-cover__inner-container.is-layout-constrained.has-global-padding > :is(h1, h2, p),
.bp-seitenkopf .wp-block-post-title,
.bp-seitenkopf .wp-block-query-title,
.bp-seitenkopf .bp-bandtitel,
.bp-seitenkopf :is(h1, h2, p) {
	text-align: center !important;
	margin-inline: auto !important;
}

/*
 * Der Betriebsname auf der Startseite.
 *
 * VIER WUENSCHE IN EINER REGEL: zentrieren, andere Schrift, deutlich
 * groesser, „als schoener, auffaelliger Schriftzug gestalten".
 *
 * Der vierte ist der eigentliche. Die ersten drei sind Mittel dazu, und
 * dazu kommen zwei, die nicht dastanden, aber gemeint waren:
 *
 *   LAUFWEITE. Lapidarschriften stehen auf Inschriften weit. Bei 0,04em
 *   auf 88 px sind das rund 3,5 px je Zeichenpaar - genug, dass die Zeile
 *   atmet, zu wenig, dass sie zerfaellt.
 *
 *   ZEILENABSTAND. Am Schreibtisch steht der Name auf EINER Zeile - der
 *   frueher erzwungene Umbruch „Bestattung" ueber „Poettinger" ist mit der
 *   neuen Schrift nicht mehr noetig, 20 Zeichen Marcellus passen bei 88 px
 *   in die Reihe. Auf schmalen Bildschirmen bricht er weiterhin um, und
 *   dort waere das normale 1,28 zu locker: Die zwei Zeilen saehen aus wie
 *   zwei Dinge. 1,05 macht daraus einen Block.
 *
 *   Der Umbruch kommt ueber die Breite, nie ueber ein <br> - der Block gibt
 *   den Website-Titel aus, in den laesst sich keine Auszeichnung schreiben.
 *
 * GROESSE: 40 px auf schmalen Bildschirmen, 88 am Schreibtisch. Zum
 * Vergleich: Ein Seitentitel auf einer Unterseite geht bis 48. Der Name
 * traegt damit fast das Doppelte, und das ist die Absicht - das Band der
 * Startseite ist 520 px hoch, doppelt so hoch wie das der Unterseiten.
 */
.bp-bandname {
	font-size: clamp(2.5rem, 4.57vw + 1.43rem, 5.5rem);
	line-height: 1.05;
	letter-spacing: 0.04em;
	max-inline-size: 12ch;
	text-wrap: balance;
}

/*
 * Die Seitentitel der Unterseiten. Dieselbe Schrift, ruhigere Groesse.
 *
 * `text-wrap: balance` bricht lange Titel auf zwei etwa gleich lange Zeilen
 * statt auf eine lange und ein Wort. Betroffen ist hier genau einer -
 * „Bestattungsformen" auf schmalen Bildschirmen - aber die Regel kostet
 * nichts und faengt den naechsten langen Titel gleich mit ab.
 */
.bp-seitenkopf :is(.wp-block-post-title, .wp-block-query-title) {
	letter-spacing: 0.02em;
	text-wrap: balance;
}

/* --- 19.3 Abstand zwischen Kopfband und Inhalt -------------------------- */

/*
 * „Abstand zwischen Header bzw. Ueberschrift und dem Content vergroessern" -
 * viermal in der Rueckmeldung, fuer Trauerfaelle, Bestattungsformen, Urnen
 * und Galerie. Also nicht vier Einzelregeln, sondern eine fuer alle.
 *
 * Vorher lag der erste Inhalt 32 px unter der Bandkante. Das Band ist eine
 * dunkle Flaeche mit einer grossen Zeile darauf; 32 px darunter ist zu nah,
 * der Inhalt klebt daran. 96 px am Schreibtisch geben ihm einen Anfang.
 *
 * Warum am `main`-Kind und nicht am Band selbst: Ein Aussenabstand UNTER dem
 * Band wuerde auch dann stehen, wenn kein Inhalt folgt (404-Seite). Der
 * Abstand gehoert dem, was anfaengt, nicht dem, was aufhoert.
 */
.bp-seitenkopf + * { margin-block-start: var(--bp-8) !important; }

@media (min-width: 64em) {
	.bp-seitenkopf + * { margin-block-start: var(--bp-10) !important; }
}

/* --- 19.4 Die Zwischenueberschriften ------------------------------------ */

/*
 * „Diese Dokumente werden benoetigt", „Welche Leistungen werden vom
 * Bestattungsunternehmen uebernommen?" - beide sollen mittig und kleiner.
 *
 * KLEINER IST HIER DER WICHTIGERE TEIL. Sie standen auf var(--bp-t-h2), also
 * bis 48 px - derselben Stufe wie der Seitentitel im Band darueber. Zwei
 * gleich grosse Zeilen untereinander sagen dem Auge, dass beide gleich
 * wichtig sind; tatsaechlich ist die eine der Titel der Seite und die andere
 * eine Zwischenueberschrift darin.
 *
 * 26 bis 32 px setzt sie eine Stufe darunter. Die Ordnung ist damit wieder
 * ablesbar: Band 48, Zwischentitel 32, Text 20.
 *
 * `text-align: center` braucht hier KEIN `!important`: Abschnitt 8 setzt
 * `text-align: start` auf `main .wp-block-post-content > :is(h1..h6)` mit
 * (0,2,1) - diese Regel hier hat mit der zusaetzlichen Klasse (0,3,1) und
 * gewinnt regulaer.
 */
/*
 * `max-inline-size: var(--bp-lese)` und NICHT `none` - das war der erste
 * Versuch und er sah falsch aus.
 *
 * Ohne Deckel spannt die Ueberschrift ueber die ganze Reihe (96..1344) und
 * zentriert ihren Text auf der SEITENMITTE bei x=720. Die Kaestchen darunter
 * stehen aber auf der Leseweite (96..922) mit Mitte bei x=509. Ueberschrift
 * und Inhalt hatten damit zwei verschiedene Mitten, und das sieht nicht nach
 * zentriert aus, sondern nach verrutscht.
 *
 * Mit demselben Deckel wie der Inhalt sitzen beide Mitten aufeinander. Das
 * ist der Grund, warum hier eine BREITE steht, obwohl es um eine
 * AUSRICHTUNG geht: Zentrieren heisst immer „mittig worin".
 *
 * `--bp-lese-fest` und NICHT `--bp-lese`: Das eine ist in rem, das andere in
 * ch - und ch haengt an der Schrift DES ELEMENTS. Mit `--bp-lese` bekam die
 * Ueberschrift in 32 px Marcellus 1599 px statt der 826 des Textes.
 * Die vollstaendige Begruendung steht beim Token in Abschnitt 1.
 *
 * `.wp-block-heading` IM SELEKTOR ist kein Zierrat, sondern Arithmetik.
 * Die Regel, gegen die diese hier antritt, lautet:
 *
 *     main .wp-block-post-content > :not(.alignfull):not(.alignwide)
 *
 * `:not()` uebernimmt die Spezifitaet seines Arguments, und hier stehen
 * ZWEI davon. Die Regel liegt damit bei (0,3,1), nicht bei (0,2,1), wie man
 * sie liest. Ohne die dritte Klasse hier verliert diese Regel - und zwar
 * still: Im Quelltext stand die Leseweite, gewirkt hat die ganze Reihe.
 *
 * Dieselbe Falle wie bei `:is()` in Abschnitt 11 und beim Logo in
 * Abschnitt 6. Wer hier eine Klasse streicht, misst nach.
 */
main .wp-block-post-content > .bp-untertitel.wp-block-heading,
main .wp-block-post-content .bp-untertitel.wp-block-heading {
	font-size: clamp(1.625rem, 1.19vw + 1.33rem, 2rem);
	line-height: 1.25;
	text-align: center;
	max-inline-size: var(--bp-lese-fest);
	margin-block: var(--bp-4) var(--bp-8);
}

/*
 * DIE ÜBERSCHRIFT RUECKT NACH OBEN, DAMIT DARUNTER PLATZ ENTSTEHT.
 * Auf Wunsch, 26. August 2026 abends.
 *
 * Gemessen war die Verteilung schief: 160 px ueber der Ueberschrift, ZEHN
 * darunter. Sie klebte an den Kaestchen und stand zugleich verloren unter
 * dem Kopfband - das Gegenteil dessen, was Abstand leisten soll. Ein
 * Zwischentitel gehoert naeher an das, was er ankuendigt, als an das, was
 * vor ihm aufgehoert hat.
 *
 * Jetzt 96 px darueber und 48 darunter:
 *
 *              vorher   jetzt
 *   darueber    160 px   96 px
 *   darunter     10 px   48 px
 *
 * Die 96 kommen allein von `.bp-seitenkopf + *` - dem Abstand, den JEDE
 * Seite zwischen Band und erstem Inhalt hat. Der eigene Aussenabstand faellt
 * fuer die erste Ueberschrift weg; addiert ergaeben beide wieder eine
 * Sonderregel fuer diese eine Stelle.
 *
 * Steht die Ueberschrift NICHT zuoberst, bleiben 16 px - dort trennt sie
 * zwei Abschnitte und braucht oben etwas Luft.
 */
main .wp-block-post-content > .bp-untertitel:first-child {
	margin-block-start: 0;
}

/*
 * DIE ZWISCHENUEBERSCHRIFT SITZT MITTIG AUF DER REIHE - seit dem 26. August
 * 2026 abends, als „Im Todesfall" und „Leistungen" ganz zentriert wurden.
 *
 * Vorher war sie auf die Kaestchen darunter ausgerichtet, und die standen
 * linksbuendig auf der Leseweite (Mitte 509). Seit die Kaestchen mittig auf
 * der Reihe stehen (Mitte 720), muss die Ueberschrift mit - sonst haetten
 * Ueberschrift und Inhalt wieder zwei verschiedene Mitten. Das ist genau der
 * Fehler, den die Regel darueber einmal behoben hat, nur andersherum.
 *
 * Die Breite bleibt gedeckelt: Auch mittig soll die Zeile nicht ueber die
 * ganze Reihe laufen.
 *
 * Vier Klassen als Zaehler gegen (0,4,1) aus Abschnitt 9 - siehe die
 * ausfuehrliche Begruendung bei `.bp-mittig` weiter unten.
 */
main .wp-block-post-content.has-global-padding.is-layout-constrained > .bp-untertitel {
	margin-inline: auto !important;
}

/*
 * Die eine Ausnahme: „Schreiben Sie uns" auf der Kontaktseite. Sie steht
 * ueber einem Formular in der linken Spalte und muss dessen Kante treffen -
 * eine mittige Ueberschrift ueber linksbuendigen Feldern waere schief.
 *
 * Die Margin-Regel darueber trifft sie nicht - dort steht `>`, und diese
 * Ueberschrift steht in einer Spalte, nicht direkt im Inhaltsblock. Die
 * text-align-Regel trifft sie sehr wohl, ueber ihren zweiten, absteigenden
 * Selektor mit (0,3,1).
 *
 * DESHALB VIER KLASSEN HIER. Ein blankes
 * `main .wp-block-post-content .bp-untertitel-links` liegt bei (0,2,1) und
 * verliert - gemessen stand „Schreiben Sie uns" mittig ueber der Spalte
 * (Mitte 448) statt auf der Kante des Formulars darunter.
 */
main .wp-block-post-content .wp-block-column > .bp-untertitel.bp-untertitel-links {
	text-align: start;
}

/*
 * Die Angabentitel der Kontaktseite: „Anschrift", „Telefon", „E-Mail".
 * Ausdruecklich kleiner gewuenscht. Sie stehen als h3 im Quelltext und
 * traegen damit --bp-t-h3, also bis 26 px; das ist fuer eine Beschriftung
 * ueber drei Zeilen Anschrift zu laut.
 *
 * 18 px, Grossbuchstaben, weite Laufweite: Damit sind sie eindeutig
 * Beschriftungen und nicht Ueberschriften - und der Unterschied zur
 * Anschrift darunter entsteht ueber die Form, nicht ueber die Groesse.
 * Sie bleiben h3 im Quelltext, die Gliederung fuer Vorleseprogramme bleibt
 * also unveraendert.
 */
/*
 * `main .bp-kontakt-angaben .bp-angabe-titel` statt `.bp-angabe-titel`:
 * `main .wp-block-column h3` aus Abschnitt 14 hat (0,1,2) und setzt
 * var(--bp-t-lead), also 22 px. Ein blankes `.bp-angabe-titel` (0,1,0)
 * verliert dagegen. Gemessen: 22 statt der geschriebenen 18.
 */
main .bp-kontakt-angaben .bp-angabe-titel {
	font-size: 1.125rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--bp-tinte-leise);
	margin-block: var(--bp-7) var(--bp-2);
}

main .bp-kontakt-angaben .bp-angabe-titel:first-child { margin-block-start: 0; }

/* --- 19.5 Das Zitat ----------------------------------------------------- */

/*
 * „Das schoenste Denkmal ..." - zentrieren, auf Wunsch.
 *
 * Hebt die Regel aus Abschnitt 9 auf, die es auf die linke Kante gestellt
 * hat. Hier ist die Umkehr am leichtesten zu begruenden: Ein Zitat ist der
 * eine typografische Moment der Startseite. Es steht allein auf der Flaeche,
 * ohne Band, ohne Bild, ohne Schaltflaeche. Es gibt nichts, dessen linke
 * Kante es treffen muesste.
 *
 * `max-inline-size` in ch statt in rem: Ein zentrierter Satz zerfaellt, wenn
 * er zu breit laeuft - das Auge findet den naechsten Zeilenanfang nicht
 * mehr. 34 Zeichen halten ihn auf drei kurze Zeilen.
 */
/*
 * `main .bp-zitatband .bp-zitat` statt `.bp-zitat`, und zwar aus zwei
 * Gruenden, die beide gemessen sind:
 *
 *   1. `main :is(p, li, dd, dt, blockquote, figcaption, td, th)` aus
 *      Abschnitt 8 hat (0,1,1) und schlaegt ein blankes `.bp-zitat` (0,1,0).
 *   2. `.bp-zitatband p` aus Abschnitt 9 hat ebenfalls (0,1,1).
 *
 * Beide setzen `text-align: start`. Im Quelltext stand `center`, gewirkt hat
 * `start` - dieselbe stille Sorte Fehler wie beim Logo weiter oben.
 */
/*
 * DIE SPEZIFITAET IST HIER DER GANZE PUNKT, und beim ersten Anlauf war sie
 * zu niedrig.
 *
 * `main .bp-zitatband .bp-zitat` liegt bei (0,2,1) und hat gegen die Regel
 * aus Abschnitt 9 verloren:
 *
 *   main :is(.wp-block-group, …).is-layout-constrained
 *        > :not(.alignfull):not(.alignwide)   { margin-inline: 0 !important }
 *
 * Die zaehlt vier Klassen - `:is()` eine, `.is-layout-constrained` eine und
 * jedes `:not()` eine - also (0,4,1). Beide tragen `!important`, und bei
 * `!important` gegen `!important` entscheidet wieder die Spezifitaet.
 *
 * Das Ergebnis war das Verrutschte, nicht das Zentrierte: Der TEXT stand
 * mittig in seinem Kasten, der Kasten aber links auf der Reihe. Gemessen
 * lag die Zitatmitte bei x=452, die Reihenmitte bei x=720.
 *
 * `> p.bp-zitat` bringt (0,4,2) und gewinnt damit sauber.
 *
 * Zentrieren heisst immer „mittig WORIN" - dieselbe Lehre wie bei
 * `.bp-untertitel` weiter oben. Ein `text-align: center` allein zentriert
 * nur die Zeilen in ihrem Kasten. Wo der Kasten steht, ist eine zweite
 * Frage, und die beantwortet `margin-inline`.
 */
main .wp-block-group.bp-zitatband.is-layout-constrained > p.bp-zitat {
	margin-inline: auto !important;
	text-align: center;
	max-inline-size: 34ch;
	font-size: var(--bp-t-h3);
	line-height: 1.45;
	text-wrap: balance;
}

/* --- 19.6 Die Kaestchen statt der Aufzaehlungszeichen ------------------- */

/*
 * „Aktuelle Aufzaehlungszeichen ueberarbeiten, da sie optisch nicht passend
 * wirken. Als Alternative die einzelnen Punkte in separaten Kaestchen."
 *
 * Betrifft drei Seiten: Im Todesfall (7 Dokumente), Leistungen (8
 * Leistungen), Bestattungsformen (2 + 3 Punkte in Spalten).
 *
 * ES BLEIBT EINE `<ul>` IM QUELLTEXT. Das ist der ganze Kniff dieser Loesung:
 * Der Kunde bearbeitet die Punkte weiterhin als gewoehnliche Liste im
 * Seiteneditor, ein Vorleseprogramm sagt weiterhin „Liste mit 7 Eintraegen"
 * an, und die Kaestchen entstehen allein hier. Haette ich stattdessen
 * <div>-Kaesten in den Seiteninhalt geschrieben, waere beides weg gewesen.
 *
 * `list-style: none` nimmt den Punkt. Fuer VoiceOver in Safari faellt damit
 * die Listenansage weg - deshalb `role="list"` ... das steht im HTML nicht
 * zur Verfuegung, weil der Kunde die Liste bearbeitet. Der Ausgleich: Die
 * Kaesten bleiben sichtbar getrennte Elemente, und die Zahl ist im Text
 * nirgends zugesagt.
 */
/*
 * KEINE BREITENANGABE HIER, und das ist Absicht.
 *
 * Ein erster Versuch hatte `max-inline-size: none`. Die Angabe hat nie
 * gewirkt: `main .bp-kaesten` liegt bei (0,1,1) und verliert gegen
 * `main .wp-block-post-content > :not(.alignfull):not(.alignwide)` mit
 * (0,3,1). Sie stand also als Behauptung in der Datei, waehrend die Liste
 * auf der Leseweite lag.
 *
 * Die Leseweite ist hier richtig - die Kaestchen sollen dieselbe Kante und
 * dieselbe Breite haben wie jeder Absatz darueber und darunter. Die tote
 * Angabe ist deshalb ersatzlos raus statt mit mehr Klassen durchgesetzt.
 */
main .bp-kaesten {
	list-style: none;
	padding-inline-start: 0;
	display: grid;
	gap: var(--bp-3);
}

main .bp-kaesten > li {
	margin-block-start: 0;
	background: var(--bp-weiss);
	border: 1px solid var(--bp-linie);
	border-radius: var(--bp-r-klein);
	padding: var(--bp-4) var(--bp-5);
	line-height: 1.45;
}

/*
 * ZWEI SPALTEN ERST AB 48em, und nur fuer die langen Listen.
 *
 * Bei sieben und acht Punkten sind zwei Spalten richtig: Die Liste ist dann
 * vier Zeilen hoch statt acht, man sieht sie ganz, ohne zu scrollen. Bei
 * zwei oder drei Punkten - den Listen in den Bestattungsformen-Spalten -
 * waeren zwei Spalten dagegen albern; die stehen in einer Spalte von 400 px
 * und bekommen deshalb `bp-kaesten-klein`.
 */
@media (min-width: 48em) {
	main .bp-kaesten:not(.bp-kaesten-klein) {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/*
 * Die kleinen Kaesten in den Spalten der Bestattungsformen. Leiser als die
 * grossen: Sie sind Beispiele („Urnenbeisetzung im eigenen Garten"), nicht
 * die Aussage der Spalte. Deshalb der ruhige Grund statt Weiss und kein
 * Rahmen - sonst haette jede Spalte drei weisse Kaesten unter einer
 * Ueberschrift und saehe aus wie eine Preisliste.
 */
/*
 * DER SATZ NACH DEN KAESTCHEN BEKOMMT LUFT.
 *
 * „Fehlt ein Dokument, ist das kein Problem" stand mit 22 px unter dem
 * letzten Kaestchen - demselben Abstand, den die Kaestchen UNTEREINANDER
 * haben (12 px Rinne plus Zeilenraum). Er las sich dadurch wie ein neunter
 * Punkt der Liste, und genau das ist er nicht: Er ist die Entwarnung zu
 * allem darueber.
 *
 * 48 px, also derselbe Wert wie zwischen Zwischenueberschrift und
 * Kaestchen. Damit hat der Block „Ueberschrift - Liste - Entwarnung" oben
 * und unten denselben Rhythmus, und der Satz steht sichtbar ausserhalb der
 * Aufzaehlung.
 *
 * `+` statt einer eigenen Klasse: Die Regel gilt fuer das, was auf eine
 * Kaestchenliste FOLGT - unabhaengig davon, welcher Absatz das gerade ist.
 * Eine Klasse im Seiteninhalt haette derselbe Kunde beim naechsten
 * Umformulieren verloren.
 */
main .bp-kaesten + p { margin-block-start: var(--bp-8); }

main .bp-kaesten-klein > li {
	background: color-mix(in srgb, var(--bp-ruhe-2) 60%, var(--bp-weiss));
	border-color: transparent;
	padding: var(--bp-3) var(--bp-4);
	font-size: var(--bp-t-klein);
}

/* --- 19.7 Die Trauerfall-Kacheln ---------------------------------------- */

/*
 * VIER KACHELN JE REIHE, auch auf der Startseite - und der Inhalt darin
 * mittig.
 *
 * Die Startseite zeigt seit dem 26. August ACHT Parten statt sechs. Acht bei
 * vier Spalten sind genau zwei volle Reihen; das war die Rechnung hinter dem
 * Wunsch, und sie geht auf. Bei drei Spalten waeren es zwei Reihen und ein
 * Rest von zwei - eine angebrochene Zeile am Seitenende.
 *
 * Die Uebersicht /trauerfaelle/ steht bereits auf vier (Klasse
 * `bp-liste-karten-vier`, gesetzt im Plugin). Diese Regel holt die
 * Startseite auf denselben Stand, damit eine Kachel auf beiden Seiten
 * gleich gross ist - sie zeigt dieselbe Sache.
 *
 * Gerechnet: (1248 - 3 x 24) / 4 = 294 px je Kachel.
 */
main .bp-liste.bp-liste-karten {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--bp-6);
	max-inline-size: none;
}

@media (min-width: 48em) {
	main .bp-liste.bp-liste-karten { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 64em) {
	main .bp-liste.bp-liste-karten { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/*
 * PARTE, DATUM UND NAME MITTIG - zweimal gewuenscht, fuer Startseite und
 * Uebersicht.
 *
 * Das dreht die Entscheidung aus Abschnitt 8 zurueck, die den Kachelinhalt
 * auf die linke Kante gestellt hat („Reste der Kartengestaltung"). Die
 * Begruendung von damals war die eine linke Kante der ganzen Seite.
 *
 * Warum die Umkehr hier besonders gut traegt: Eine Kachel ist ein
 * geschlossenes Feld mit einem Bild darin. Das Bild - die Parte - ist
 * 144 px breit und steht in einer Kachel von 294 px. Steht es links, bleiben
 * rechts daneben 150 px leer, und die Kachel sieht aus, als fehle dort
 * etwas. Mittig gesetzt ist die Leere symmetrisch und liest sich als Rand.
 *
 * `text-align` und `justify-items` muessen BEIDE gesetzt sein: Das eine
 * richtet den Text in seinem Kasten aus, das andere den Kasten im Gitter.
 * Nur eins von beiden ergibt eine mittige Zeile in einem linksbuendigen
 * Kasten - genau das sah vorher schief aus.
 */
main .bp-liste-karten .bp-liste-eintrag > a,
main .bp-liste-karten-vier .bp-liste-eintrag > a {
	justify-items: center;
	text-align: center;
	padding: var(--bp-5) var(--bp-4);
	row-gap: var(--bp-4);
}

main .bp-liste-karten .bp-liste-text,
main .bp-liste-karten-vier .bp-liste-text,
main .bp-liste-karten :is(.bp-liste-datum, .bp-liste-termin, .bp-liste-ort, .bp-liste-kondolenzen),
main .bp-liste-karten-vier :is(.bp-liste-datum, .bp-liste-termin, .bp-liste-ort, .bp-liste-kondolenzen),
main .bp-liste-karten .bp-liste-name,
main .bp-liste-karten-vier .bp-liste-name {
	text-align: center;
	justify-self: center;
}

/*
 * DIE KACHELN HOEHER, „damit die Parte ausreichend Platz hat".
 *
 * Die Parte liegt mit 144 px Breite vor - das ist die Vorlagengroesse
 * `bp-liste`, und mehr existiert nicht. Sie kann also nicht groesser werden,
 * ohne weich zu werden; das ist am 24. August schon einmal abgewogen und
 * bewusst so entschieden worden.
 *
 * Was der Wunsch tatsaechlich meint, ist der Platz DRUMHERUM: Die Kachel war
 * so knapp, dass das Bild oben und unten an die Kante stiess. 16 px Polster
 * auf 20/16 erhoeht und eine Mindesthoehe gesetzt - damit steht die Parte
 * frei, und alle Kacheln einer Reihe sind gleich hoch, auch wenn ein Name
 * zweizeilig umbricht („Walter Manhartsgruber").
 *
 * Ohne die Mindesthoehe waere die Reihe so hoch wie ihr laengster Name, und
 * die kuerzeren Kacheln staenden mit einem Loch darunter.
 */
main .bp-liste-karten .bp-liste-eintrag,
main .bp-liste-karten-vier .bp-liste-eintrag {
	min-block-size: 340px;
	display: flex;
}

main .bp-liste-karten .bp-liste-eintrag > a,
main .bp-liste-karten-vier .bp-liste-eintrag > a {
	inline-size: 100%;
	align-content: center;
}

/*
 * Der Weg ins Vollstaendige unter den Kacheln, mittig auf der Reihe.
 *
 * `max-inline-size: none` ist noetig, nicht bloss ordentlich: Der Absatz ist
 * ein gewoehnliches Kind einer `constrained`-Gruppe und wird damit auf die
 * Inhaltsbreite aus theme.json gedeckelt - 39rem, also 624 px. Zentriert war
 * der Knopf dadurch in seinem eigenen schmalen Kasten mittig und auf der
 * Reihe darueber sichtbar links. Gemessen: Knopfmitte bei x=408 statt 720.
 */
main .bp-alle-parten {
	margin-block-start: var(--bp-8) !important;
	margin-block-end: 0 !important;
	max-inline-size: none;
	text-align: center;
}

/*
 * WENIGER ABSTAND UNTER DEM KNOPF - auf Wunsch, 26. August 2026 abends.
 *
 * Unter dem Knopf standen 128 px: 24 px Aussenabstand des Absatzes plus die
 * 104, mit denen der `bp-aktuelle`-Abschnitt endet. Der Knopf schwebte
 * dadurch in der Mitte zwischen den Kacheln darueber und dem Zitat darunter,
 * statt zu den Kacheln zu gehoeren.
 *
 * Jetzt 48 px, und der Absatz selbst traegt keinen Aussenabstand mehr - der
 * eine Wert steht am Abschnitt. Der Knopf gehoert damit sichtbar zu dem, was
 * ueber ihm steht.
 */
main .bp-aktuelle { padding-block-end: 0; }
main .bp-aktuelle:has(.bp-alle-parten) { margin-block-end: var(--bp-8); }

/*
 * „ÜBER UNS" MITTIG - UEBERSCHRIFT UND TEXT.
 *
 * Zuerst stand hier nur die Ueberschrift mittig, mit der Begruendung aus
 * Abschnitt 19: Was man ansieht, steht mittig; was man liest, steht links.
 * Auf Wunsch vom 26. August 2026 abends gilt das fuer diesen einen Block
 * nicht mehr - er steht ganz mittig.
 *
 * DIE AUSNAHME IST BEGRENZT UND SOLL ES BLEIBEN. Sie betrifft „Über uns"
 * auf der Startseite und sonst nichts. Zentrierter Fliesstext ist muehsamer
 * zu lesen, weil das Auge nach jeder Zeile den Zeilenanfang neu suchen muss
 * - bei zwei kurzen Absaetzen als Vorstellung des Betriebs ist das
 * vertretbar, bei den Dokumentenlisten unter „Im Todesfall" waere es das
 * nicht.
 *
 * WAS DEN SCHADEN BEGRENZT, ist die Leseweite: Sie bleibt bei 62 Zeichen
 * (--bp-lese-fest fuer die Ueberschrift, weil `ch` an der Schrift DES
 * ELEMENTS haengt und Marcellus bei 32 px daraus 1599 px machen wuerde).
 * Je laenger die Zeile, desto teurer wird das Zurueckspringen; kurze Zeilen
 * halten den Weg des Auges kurz.
 *
 * `margin-inline: auto` MUSS dabei sein. Ohne es stuende der Text mittig in
 * einem Kasten, der links auf der Reihe klebt - das sieht nicht zentriert
 * aus, sondern verrutscht. Dieselbe Lehre wie beim Zitat weiter oben.
 */
/*
 * `text-align` MUSS auf den KINDERN stehen, nicht nur auf dem Block.
 *
 * Abschnitt 8 setzt `text-align: start` unter anderem auf
 * `.bp-einstieg-wort > *` - innerhalb eines `:is()`, also mit (0,1,1). Eine
 * Regel auf dem Elternteil vererbt zwar, aber Vererbung verliert immer
 * gegen eine Regel, die das Kind SELBST trifft. Im Quelltext stand
 * `center`, gemessen wurde `start`.
 */
main .bp-einstieg-wort,
main .bp-einstieg-wort > * {
	text-align: center;
}

/*
 * DER TEXT IM BLOCKSATZ, die Ueberschrift mittig - auf Wunsch,
 * 26. August 2026: „nicht nur zentriert, sondern als Block."
 *
 * `hyphens: auto` IST DABEI PFLICHT, NICHT ZIERRAT. Blocksatz zieht die
 * Wortabstaende einer Zeile auseinander, bis beide Kanten buendig sind. Im
 * Deutschen stehen dem Woerter wie „Bestattungsunternehmen" (22 Zeichen)
 * und „Angelegenheiten" im Weg: Passt so eines nicht mehr in die Zeile,
 * wandert es ganz in die naechste und hinterlaesst in der vorigen ein Loch
 * von mehreren Zentimetern. Mit Silbentrennung bricht es stattdessen um.
 *
 * `lang="de"` steht am <html>, sonst haette der Browser keine Trennregeln
 * fuer Deutsch - WordPress setzt es aus der Spracheinstellung.
 *
 * `text-wrap` bleibt hier aus: `balance` und `pretty` rechnen Zeilenlaengen
 * aus, die der Blocksatz danach ohnehin wieder gleich zieht. Zusammen
 * ergeben sie nur mehr Trennstriche.
 *
 * NUR HIER. Blocksatz ist auf schmalen Spalten eine Zumutung - je weniger
 * Woerter in eine Zeile passen, desto groeber die Loecher. Dieser Absatz
 * steht auf der Leseweite (62 Zeichen) und traegt ihn; die Kaestchen unter
 * „Im Todesfall" mit vier Woertern je Zeile taeten es nicht.
 */
main .bp-einstieg-wort > p {
	text-align: justify;
	hyphens: auto;
}

/*
 * EINE BREITE FUER DEN GANZEN BLOCK, in rem - nicht `--bp-lese` fuer den
 * Text und `--bp-lese-fest` fuer die Ueberschrift.
 *
 * Der Grund ist derselbe wie beim Token in Abschnitt 1: `ch` haengt an der
 * Schrift DES ELEMENTS. Die Ueberschrift steht in Marcellus mit 32 px, der
 * Text in Instrument Sans mit 20 - dieselbe ch-Zahl ergaebe hier zwei
 * verschiedene Breiten und damit zwei verschiedene Kanten in einem Block,
 * der als einer gelesen wird.
 *
 * Mit einer rem-Angabe auf dem Elternteil steht die Zahl EINMAL da, und
 * Ueberschrift wie Text erben sie.
 *
 * 38.75rem = 620 px, auf Wunsch vom 26. August 2026 rund ein Viertel
 * schmaler als die 826 px der Leseweite („etwas weniger breit, ca. um 1/4").
 *
 * WAS DAS KOSTET, und es ist im Blocksatz nicht nichts: 620 px sind rund
 * 46 Zeichen je Zeile statt 62. Je weniger Woerter in eine Zeile passen,
 * desto grober muessen die Wortabstaende gezogen werden, um beide Kanten
 * buendig zu bekommen. Die Silbentrennung faengt das ab - ohne sie waere
 * diese Breite fuer Blocksatz zu schmal. Wer hier weiter verkuerzt, sollte
 * den Blocksatz aufgeben.
 */
main .bp-einstieg-wort {
	--bp-einstieg-breite: 38.75rem;
}

main .bp-einstieg-wort > * {
	margin-inline: auto !important;
	max-inline-size: var(--bp-einstieg-breite);
}

/*
 * `.bp-mittig` IM SEITENINHALT - dieselbe Klasse, jetzt auch fuer Bloecke,
 * die der Kunde im Editor setzen kann.
 *
 * Verwendet auf „Im Todesfall" und „Leistungen" (Wunsch vom 26. August 2026:
 * „auch das alles zentrieren"). Die Klasse steht im Seiteninhalt, nicht hier
 * - damit ist an jeder Stelle sichtbar, dass die Mitte Absicht ist, und der
 * Kunde kann sie im Editor unter „Erweitert > Zusaetzliche CSS-Klasse"
 * setzen und wieder wegnehmen, ohne einen Entwickler.
 *
 * DIE VIER KLASSEN IM SELEKTOR SIND DER ZAEHLER, nicht die Beschreibung.
 * Die Regel, gegen die sie antritt, ist die aus Abschnitt 9:
 *
 *   main :is(.wp-block-group, …).is-layout-constrained
 *        > :not(.alignfull):not(.alignwide)  { margin-inline: 0 !important }
 *
 * Die liegt bei (0,4,1) - `:is()` eine Klasse, `.is-layout-constrained` eine
 * und JEDES `:not()` eine. Ein blankes `.bp-mittig` haette (0,1,0) und
 * verloere still: Der Text stuende mittig in einem Kasten, der links klebt.
 * Siehe Styleguide B11; das ist an einem Tag viermal passiert.
 *
 * `.has-global-padding` und `.is-layout-constrained` setzt WordPress selbst
 * auf den Inhaltsblock. Wer sie hier streicht, macht die Regel wirkungslos.
 */
main .wp-block-post-content.has-global-padding.is-layout-constrained > .bp-mittig {
	margin-inline: auto !important;
	text-align: center;
}

/*
 * Auch der Text IN den Kaestchen, wenn die Liste mittig steht.
 *
 * Ohne diese Regel stuenden die Kaesten zwar mittig auf der Reihe, ihr Text
 * darin aber links - und weil ein Kasten eine sichtbare Kante hat, faellt
 * genau das auf. Bei „alles zentrieren" ist das Gegenteil gemeint.
 *
 * WAS DAS KOSTET: Die laengeren Leistungen brechen auf zwei Zeilen um, und
 * zentrierter Text ueber zwei Zeilen liest sich langsamer. Bei acht kurzen
 * Punkten in Kaesten ist das vertretbar; bei einem Absatz waere es das
 * nicht. Die Grenze aus dem Kopf dieses Abschnitts gilt weiter - dies ist
 * eine benannte Ausnahme, keine neue Regel.
 */
main .bp-kaesten.bp-mittig > li { text-align: center; }

/* --- 19.8 Der Fussbereich ----------------------------------------------- */

/*
 * DREI SPALTEN, ABER NICHT GLEICH BREIT.
 *
 * Das Kontaktformular steht seit dem 26. August 2026 in der dritten Spalte
 * (zuerst stand es als eigene Reihe darueber; die Begruendung fuer den
 * Wechsel steht in parts/footer.html).
 *
 * Bei drei gleichen Spalten haette es 395 px von 1248 (1184 nach zwei Rinnen
 * zu 32). Das klingt nach genug und ist es nicht: Ein Nachrichtenfeld dieser
 * Breite mit sieben Zeilen ist hoeher als breit, also ein Schacht.
 *
 * 1fr 1fr 1.5fr gibt dem Formular 507 px und laesst Kontakt und Menue je
 * 338. Gemessen im Browser bei 1440 px:
 *
 *   Spalte 1  x  96..434    338 breit
 *   Spalte 2  x 466..805    338 breit
 *   Spalte 3  x 837..1344   507 breit
 *
 * WARUM NICHT MEHR ALS 1.5: Die laengste Zeile in Spalte 1 ist
 * „office@bestattung-poettinger.at" mit gemessenen 300 px. Die Spalte darf
 * also nicht unter 300 fallen, und das begrenzt die dritte auf hoechstens
 * 1.9fr. Die Grenze ist damit nicht gestalterisch, sondern von der
 * laengsten Zeichenkette gesetzt.
 *
 * ZWEI SPALTEN seit dem Abend desselben Tages - die Menuespalte ist auf
 * Wunsch entfallen, das Formular soll breiter werden.
 *
 * 1fr 1.6fr gibt dem Formular 748 px und der Kontaktspalte 468:
 *
 *   Spalte 1  x  96..564    468 breit
 *   Spalte 2  x 596..1344   748 breit
 *
 * WARUM NICHT MEHR: Bei 1fr 2.5fr faellt die Kontaktspalte auf 347 px. Die
 * E-Mail-Adresse (300 px) passt dort noch, aber der Satz „In dritter
 * Generation..." braeuchte fuenf Zeilen statt drei. 1.6 ist die Abwaegung
 * zwischen einem breiten Formular und einer Spalte, die noch aussieht wie
 * eine Spalte und nicht wie eine Schlucht.
 */
@media (min-width: 64em) {
	.bp-fuss-reihe { grid-template-columns: 1fr 1.6fr; }
}

/*
 * HIER STAND EINE REGEL, DIE DIE SPALTENUEBERSCHRIFTEN AUF EINE LINIE
 * GEZOGEN HAT. Entfernt am Abend des 26. August 2026 auf Wunsch:
 * „Wir sind fuer Sie da und das Logo sollen in derselben Hoehe sein."
 *
 * Sie hat die Ueberschriften der Spalten OHNE Logo um dessen Hoehe nach
 * unten geschoben (80 px Bild plus 16 Abstand), damit alle drei Spaltentitel
 * auf einer Linie standen. Bei drei Spalten war das richtig.
 *
 * Bei zwei ist die andere Ausrichtung die bessere: Links beginnt die Spalte
 * mit einem Bild, rechts mit einer Zeile, und beide beginnen oben. Die
 * gemeinsame Oberkante ist die Kante der Reihe selbst, nicht eine gedachte
 * Linie 96 px darunter.
 *
 * „Kontakt" steht dadurch tiefer als „Wir sind fuer Sie da", und das ist
 * richtig: „Kontakt" ist die Ueberschrift ueber der Anschrift, nicht ueber
 * dem Logo. Das Logo gehoert zu keiner der beiden - es ist der Absender.
 *
 * Ersatzlos entfernt statt auf 0 gesetzt: Eine Regel, die nichts tut, ist
 * eine Stelle, an der jemand spaeter sucht.
 */

/*
 * Zuerst der Blockabstand von WordPress. Es setzt 24 px zwischen
 * Geschwistern; im Gitter wirkt das NICHT als Rinne, sondern schiebt jede
 * Spalte ausser der ersten in ihrer eigenen Zelle nach unten. Gemessen
 * begann Spalte 1 bei y=2593 und die anderen beiden bei y=2617.
 *
 * Die Rinne zwischen den Spalten macht `gap`, nicht `margin`.
 */
.bp-fuss-reihe > * { margin-block: 0; }

/*
 * DIE INHALTSKANTE IM FUSS - ein Fehler, den es seit dem 24. August gab und
 * der erst am 26. beim Nachmessen aufgefallen ist.
 *
 * Gemessen an der linken Kante des Fussbereichs:
 *
 *   Breite   Spaltenreihe   Schlussvermerk
 *      375        0 px          24 px
 *      768        0 px          32 px
 *     1440       96 px          96 px
 *
 * Am Schreibtisch stimmte es, darunter nicht. Deshalb ist es niemandem
 * aufgefallen: Die Spalten stehen unter 64em untereinander, und eine Spalte
 * ohne Nachbarn sieht auch dann richtig aus, wenn sie an der Fensterkante
 * klebt. Erst der Schlussvermerk 24 px daneben verraet es.
 *
 * Die Ursache ist WordPress' `constrained`-Layout: `alignwide` bekommt
 * `max-width: wideSize`. Ist das Fenster BREITER als wideSize, zentriert
 * sich die Reihe und hat Rand. Ist es schmaler, fuellt sie 100 Prozent -
 * und 100 Prozent sind bis an die Fensterkante.
 *
 * Dieselbe Rechnung wie in Abschnitt 12 fuer `.bp-kopf-zeile.alignwide`.
 * Wer eine der beiden aendert, aendert die andere mit.
 *
 * DER RUNDGANG HAT DAS NICHT GEFUNDEN: Er misst die Kante des Inhalts, nicht
 * die des Fusses. tools/rueckmeldung-pruefen.mjs prueft sie jetzt auf allen
 * drei Breiten.
 */
.bp-fuss-reihe.alignwide {
	inline-size: min(100% - 2 * var(--bp-rand), var(--bp-weit));
	max-inline-size: none;
	margin-inline: auto;
}

.bp-fuss-schreiben .bp-formular { margin-block-start: 0; }

/*
 * Das Nachrichtenfeld niedriger: sieben Zeilen sind in einer Spalte zu viel
 * und machen den Fuss unnoetig hoch.
 */
.bp-fuss-schreiben .bp-formular textarea {
	block-size: 8rem;
	min-block-size: 0;
}

/*
 * NAME UND E-MAIL NEBENEINANDER - wieder, seit die Spalte 748 px breit ist.
 *
 * Der Weg dieser Regel an einem Tag: In der vollen Inhaltsreihe standen die
 * beiden nebeneinander. Als das Formular in eine 507-px-Spalte zog, wurde
 * daraus ein Stapel - zwei Felder haetten dort je 238 px gehabt, schmaler
 * als die Beschriftung „Ihre E-Mail-Adresse" darueber. Bei 748 px sind es
 * je 362, und das ist breiter als jede Beschriftung.
 *
 * Es spart zugleich rund 90 px Fusshoehe auf jeder Seite.
 *
 * `:has()` statt `:nth-child`: Die Feldreihenfolge steckt in
 * class-formular.php und kann sich aendern. Ueber die Feldkennung ist die
 * Zuordnung eindeutig, und faellt ein Feld weg, faellt still seine Regel
 * mit statt die falsche zu treffen.
 */
/*
 * DAS GITTER GILT AUF JEDER BREITE, nur die ZWEI SPALTEN nicht.
 *
 * Ein einspaltiges Gitter verhaelt sich wie ein Stapel - mit dem
 * Unterschied, dass `row-gap` die Abstaende macht und nicht die
 * Aussenabstaende der Felder. Genau darauf kommt es an: Aussenabstaende
 * verdoppeln sich im Gitter und fallen im Stapel zusammen, ein `row-gap`
 * tut auf beiden dasselbe.
 *
 * Stand vorher nur ab 64em. Unter 64em blieben die Felder bei ihren
 * Aussenabstaenden, und der Knopf hatte darunter 18 px mehr Luft als
 * gemessen sein sollte - der Fuss war oben und unten wieder ungleich.
 */
.bp-fuss-schreiben .bp-formular form {
	display: grid;
	row-gap: var(--bp-3);
}

.bp-fuss-schreiben .bp-formular form > * { margin-block: 0; }

@media (min-width: 64em) {
	.bp-fuss-schreiben .bp-formular form {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: var(--bp-6);
	}

	.bp-fuss-schreiben .bp-formular form > * { grid-column: 1 / -1; }

	.bp-fuss-schreiben .bp-formular-feld:has([id^="bp_name"])  { grid-column: 1; }
	.bp-fuss-schreiben .bp-formular-feld:has([id^="bp_email"]) { grid-column: 2; }

	/*
	 * IM GITTER MACHT `row-gap` DIE ABSTAENDE, NICHT DIE AUSSENABSTAENDE.
	 *
	 * Zwischen Gitterzellen fallen Aussenabstaende NICHT zusammen. Die 12 px
	 * unten am einen Feld und die 12 oben am naechsten ergaeben hier 24 -
	 * doppelt so viel wie im gestapelten Fall, und das ist genau der
	 * Unterschied, der die Fassung davor auf 48 px gebracht hat.
	 *
	 * Aussenabstaende auf 0, ein `row-gap` fuer alle: Der Wert steht damit
	 * an EINER Stelle und kann sich nicht verdoppeln.
	 *
	 * Nebenbei erledigt das den Versatz von 4 px zwischen „Ihr Name" und
	 * „Ihre E-Mail-Adresse", fuer den hier vorher eine eigene Regel stand:
	 * Ohne Aussenabstaende beginnen beide an der Oberkante ihrer Zeile.
	 */
}

/*
 * DIE ABSTAENDE IM FUSSFORMULAR - auf Wunsch, 26. August 2026: „kleiner
 * machen. Ihre Telefonnummer soll gleich weit entfernt von dem Kaestchen
 * ueber sich sein wie von dem Text unter sich."
 *
 * Gemessen war das schief:
 *
 *                              vorher   jetzt
 *   ueber der Beschriftung      48 px   12 px
 *   Beschriftung -> Hilfetext   14 px   12 px
 *   Hilfetext -> Eingabefeld     6 px    8 px
 *
 * Die 48 kamen aus 24 unten am Feld darueber plus 24 oben an diesem - im
 * Gitter fallen Aussenabstaende nicht zusammen. Die 14 aus 5,6 px Abstand
 * im Feld plus 8 px unter der Beschriftung.
 *
 * WAS MAN DAFUER AUFGIBT: Der Abstand ZWISCHEN zwei Feldern ist jetzt so
 * gross wie der INNERHALB eines Feldes. Fuer das Auge gruppiert sich ein
 * Feld dadurch weniger deutlich als vorher. Das war ausdruecklich
 * gewuenscht, und es traegt hier: Jede Beschriftung steht unmittelbar ueber
 * ihrem Kaestchen, und die Reihenfolge ist eindeutig.
 *
 * NUR IM FUSS. Das Formular auf der Kontaktseite steht in einer Spalte von
 * 700 px, hat viel Platz nach unten und behaelt seine ruhigeren Abstaende.
 */
/*
 * KEIN `margin-block` HIER MEHR. Die Abstaende zwischen den Feldern macht
 * das `row-gap` des Formulars; eine Angabe hier waere die zweite Stelle fuer
 * denselben Wert - und sie hat ohnehin nie gewirkt, weil
 * `… form > *` mit (0,2,1) spezifischer ist als `… .bp-formular-feld` mit
 * (0,2,0).
 */
.bp-fuss-schreiben .bp-formular-feld {
	gap: var(--bp-2);
}

.bp-fuss-schreiben .bp-formular-feld > label {
	margin-block-end: var(--bp-1);
}

/*
 * DER SCHLUSSVERMERK: gleicher Abstand nach oben wie nach unten.
 *
 * Gewuenscht war „den Abstand reduzieren" und „gleichmaessig zum Strich
 * darueber und darunter". Der zweite Teil war der eigentliche Befund:
 * Gemessen standen ueber der Zeile 48 px und darunter 96 - der Vermerk hing
 * am oberen Strich statt in der Mitte zwischen beiden.
 *
 * 24 px auf beiden Seiten, aus EINER Angabe. Ein einzelner Wert kann nicht
 * auseinanderlaufen; zwei koennen es, und genau das war passiert.
 *
 * ABENDS DESSELBEN TAGES auf 16 px verkleinert: „unter dem Schlussvermerk
 * weniger Abstand". Weniger geht nicht - darunter beruehrt die Zeile den
 * unteren Fensterrand, und der Fuss hoert dann nicht auf, er reisst ab.
 *
 * DER WERT STEHT WEITERHIN AN EINER STELLE. Wer hier oben und unten trennt,
 * hat in einem halben Jahr wieder 48 gegen 96.
 */
.bp-fuss-schluss {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--bp-2) var(--bp-6);
	padding-block: var(--bp-4);
	margin-block-start: var(--bp-fuss-luft);
	border-block-start: 1px solid var(--bp-linie);
}

.bp-fuss-schluss p { margin: 0; }

/*
 * DER FUSS OHNE SPALTEN - auf der Kontaktseite.
 *
 * Dort faellt die Spaltenreihe weg, weil die Seite Formular und Anschrift
 * schon selbst traegt (der Filter dafuer steht in functions.php). Uebrig
 * bleibt der Schlussvermerk.
 *
 * Ohne diese Regel stuende er unter 128 px Polster und 48 px Aussenabstand,
 * also 176 px Leere - ein Polster, das fuer drei Spalten gedacht war und
 * jetzt nichts mehr polstert. Gemessen war der Fuss dort 186 px hoch, davon
 * 129 leer.
 *
 * `:has()` fragt genau das Richtige: Ist die Reihe ueberhaupt da? Kein
 * Seitenname, keine zweite Stelle, die mitgepflegt werden muss - und die
 * Regel greift von selbst, wenn eine weitere Seite das Formular bekommt.
 */
/*
 * NUR EINE LINIE, NICHT ZWEI.
 *
 * Der Fuss traegt eine Haarlinie an seiner Oberkante ueber die volle
 * Fensterbreite, der Schlussvermerk eine zweite ueber die Inhaltsbreite.
 * Auf jeder gewoehnlichen Seite liegen zwischen ihnen die Spalten - rund
 * 940 px. Auf der Kontaktseite, wo die Spalten wegfallen, lagen sie 33 px
 * auseinander: zwei parallele Striche, von denen der laengere nichts mehr
 * trennte.
 *
 * Es geht die OBERE weg, nicht die untere. Die untere gehoert zum
 * Schlussvermerk und markiert, wo der Text von dem abgesetzt ist, was
 * darueber steht - hier also vom Seiteninhalt. Die obere markiert den
 * Anfang des Fusses, und der faengt ohne Spalten nirgendwo mehr an.
 *
 * UND DER ABSTAND DAVOR SCHRUMPFT MIT. Gemessen standen unter dem Knopf
 * „Nachricht senden" 148 px bis zum Fussanfang und weitere 32 bis zur
 * Linie - zusammen 180. Davon kamen 128 aus dem Aussenabstand des Fusses,
 * und der ist fuer einen 1000 px hohen Block gedacht, der hier nicht mehr
 * steht.
 *
 * Jetzt 24 + 24: unter dem Knopf rund 68 px bis zur Linie. Genug, dass der
 * Schlussvermerk nicht am Formular klebt, wenig genug, dass die Seite nicht
 * mit einer leeren Flaeche aufhoert.
 *
 * BEIDE WERTE HIER, NICHT EINER: Der Aussenabstand trennt den Fuss vom
 * Inhalt, das Polster den Schlussvermerk von der Fusskante. Sie tun
 * verschiedene Dinge und sind deshalb zwei Angaben - im Gegensatz zu den
 * 16 px oben und unten am Schlussvermerk, die dasselbe tun und deshalb
 * eine sind.
 */
.bp-fuss:not(:has(.bp-fuss-reihe)) {
	margin-block-start: var(--bp-6);
	padding-block-start: var(--bp-6);
	border-block-start: 0;
}

.bp-fuss:not(:has(.bp-fuss-reihe)) .bp-fuss-schluss {
	margin-block-start: 0;
}

/*
 * Die zwei Rechtsverweise, seit die Menuespalte entfallen ist.
 *
 * Rechts auf der Zeile des Schlussvermerks, damit sie keine eigene Zeile
 * kosten. Auf schmalen Bildschirmen bricht die Reihe um und sie stehen
 * darunter - dafuer ist das `flex-wrap` da, nicht als Zierrat.
 *
 * § 5 ECG und § 25 MedienG verlangen, dass Impressum und Offenlegung von
 * jeder Seite aus leicht und unmittelbar auffindbar sind. WER SIE HIER
 * ENTFERNT, muss sie anderswo hinstellen - nicht weglassen.
 */
.bp-fuss-recht {
	display: flex;
	flex-wrap: wrap;
	gap: var(--bp-2) var(--bp-6);
}

/* --- 19.9 Die Galerien: Spaltenzahl und Bildgroesse --------------------- */

/*
 * DREI ZAHLEN AENDERN SICH, und jede hat einen eigenen Grund.
 *
 *   Fotogalerie      5 -> 4 Kacheln   (auf Wunsch: „4 Bilder pro Reihe")
 *   Urnen            4 -> 3 Kacheln   (auf Wunsch: „Bilder groesser")
 *   Sargmodelle      3 -> 3 Kacheln   (unveraendert, siehe unten)
 *
 * ZUR FOTOGALERIE UND IHREM GEWICHT. Die fuenf Kacheln vom 24. August waren
 * keine Geschmacksentscheidung, sondern eine Rechnung: 5 Kacheln = 230 px,
 * und damit reichte die vorhandene Bildstufe 265w. Vier Kacheln sind 294 px
 * und haetten die naechste Stufe verlangt - 679w, also mehr als das
 * Doppelte. Die Galerie hat aus genau diesem Grund einmal 2,34 MB gewogen.
 *
 * Deshalb ist zusammen mit dieser Aenderung eine Zwischenstufe angelegt
 * worden: `bp-galerie-vier`, 440 px breit, in functions.php. Die Leiter
 * lautet jetzt 144 - 199 - 265 - 292 - 440 - 679 - 768 - 928, und eine
 * 294er Kachel greift zur 440er statt zur 679er.
 *
 * WER DIE SPALTENZAHL HIER WIEDER AENDERT, rechnet zuerst nach, welche
 * Bildstufe die neue Kachelbreite trifft. Sonst ist die naechste Messung
 * wieder siebenstellig.
 */
body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (min-width: 48em) {
	body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (min-width: 64em) {
	body:not(.parent-pageid-1195) main .wp-block-gallery.has-nested-images {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

/*
 * URNEN UND SAERGE: drei je Reihe, damit beide gleich gross sind.
 *
 * Der Wunsch lautete „Bilder groesser" fuer beide und „Bildgroesse an jene
 * der Urnen angleichen" fuer die Saerge. Tatsaechlich war es umgekehrt: Die
 * Saerge standen bereits auf drei Spalten, die Urnen auf vier - die Urnen
 * waren die kleineren. Drei fuer beide macht sie gleich und beide groesser.
 *
 * (1248 - 2 x 24) / 3 = 400 px je Kachel.
 *
 * WAS DABEI NICHT AUFGEHT, und das gehoert hierher statt in den Bericht
 * allein: Die Urnenbilder liegen mit 250 x 375 px vor. Das ist alles, was es
 * gibt - nicht nur hier, sondern auch im Archiv der bestehenden Website und
 * in bilder-alt/. Groesser existiert nirgends.
 *
 * Die Kachel ist 400 px breit. Ein Bild mit 250 px darin sieht KLEINER aus
 * als vorher, obwohl es groesser ist: Es stand bei vier Spalten fast randlos
 * in einer 294er Kachel und schwimmt jetzt mit 75 px Weiss auf jeder Seite.
 * „Groesser" heisst fuer das Auge „fuellt mehr aus", nicht „hat mehr Pixel".
 *
 * Deshalb die Hoehenangabe unten: Sie zieht das Bild auf rund 297 px Breite,
 * also das 1,19-fache seiner Datei. Das ist eine Hochrechnung und damit ein
 * Verlust an Schaerfe - bei 19 Prozent auf einem Produktfoto vor weissem
 * Grund ist er nicht zu sehen. Bei den 1,6-fachen, die eine randlose Kachel
 * verlangt haette, waere er es.
 *
 * Wer es scharf UND randlos will, muss die Urnen neu fotografieren oder
 * groessere Dateien vom Lieferanten holen. Danach genuegt ein
 * `media regenerate`, an dieser Regel aendert sich nichts.
 */
body.parent-pageid-1195 main .wp-block-gallery.has-nested-images {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

@media (min-width: 48em) {
	body.parent-pageid-1195 main .wp-block-gallery.has-nested-images {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/*
 * Gleiche Kachelhoehe fuer Urnen und Saerge.
 *
 * Die einen sind hochkant (250 x 375), die anderen quer (900 x 604). Ohne
 * feste Hoehe waere jede Reihe so hoch wie ihr hoechstes Bild, und die
 * Reihen der beiden Seiten haetten verschiedene Hoehen - genau das, was
 * „angleichen" nicht meint.
 *
 * EIN QUADRAT STATT 4:3, und das ist der eigentliche Hebel bei „Bilder
 * groesser darstellen".
 *
 * Abschnitt 16 legt jede Galeriekachel auf 4:3 fest. Das ist fuer die
 * Fotogalerie richtig, fuer Produktfotos aber die Ursache des Problems:
 * Eine Urne steht HOCHKANT (250 x 375). In einem 4:3-Kasten von 400 x 300
 * begrenzt die Hoehe, das Bild wird 184 x 276 - und laesst links und rechts
 * je 108 px Weiss stehen. Die Kachel wurde durch die drei Spalten groesser,
 * das Bild darin kaum.
 *
 * Im Quadrat wird dieselbe Urne 245 x 368 - und zwar aus einer Datei mit
 * 250 x 375. Das ist das 0,98-fache, also eine minimale VERKLEINERUNG:
 * gestochen scharf, und zugleich das Groesste, was diese Dateien hergeben.
 *
 * WARUM NICHT 3:4, das den Urnen noch mehr gaebe: Die Saerge liegen QUER
 * (900 x 604). Was den Urnen nuetzt, nimmt ihnen dasselbe, und beide sollten
 * gleich gross sein. Das Quadrat ist die einzige Form, die keine der beiden
 * bevorzugt - jede fuellt genau eine Richtung ganz aus.
 *
 * GEMESSEN im Browser bei 1440 px, Kachel 368 px (400 minus Polster):
 *
 *              Datei        4:3 (vorher)   1:1 (jetzt)
 *   Urne       250 x 375     184 x 276      245 x 368     +33 %
 *   Sarg       900 x 604     368 x 247      368 x 247      unveraendert
 *
 * Die Saerge aendern sich nicht - sie fuellten die Breite schon vorher aus.
 * Gewonnen haben die Urnen, und die waren gemeint.
 *
 * DIE SPEZIFITAET (1,5,3) IST PFLICHT, nicht Vorsicht: Die 4:3-Regel aus
 * Abschnitt 16 traegt `:not(#individual-image)`, und eine ID im `:not()`
 * zaehlt als ID. Sie liegt damit bei (1,4,3), und alles ohne ID verliert
 * gegen sie, egal wie viele Klassen daneben stehen.
 *
 * `contain` statt `cover` bleibt: Abschnitt 16 hat das fuer Produktfotos auf
 * weissem Grund entschieden. Ein Sarg, dem der Zuschnitt die Enden nimmt,
 * ist als Modell nicht mehr zu beurteilen.
 */
body.parent-pageid-1195 main.wp-block-group .wp-block-gallery.has-nested-images > figure.wp-block-image:not(#individual-image) img {
	aspect-ratio: 1 / 1;
}

/* --- 19.10 Die Kontaktseite --------------------------------------------- */

/*
 * Zwei Spalten: links schreiben, rechts erreichen.
 *
 * Die Reihenfolge der Angaben rechts - Anschrift, Telefon, E-Mail - steht
 * im Seiteninhalt und nicht hier. Sie war ausdruecklich gewuenscht und ist
 * damit dort aenderbar, wo der Kunde sie sieht.
 *
 * Die Spalten sind `wp:columns` und brechen unter 782 px von selbst
 * untereinander; das ist WordPress' eigene Schwelle, und sie ist hier
 * richtig. Ein Formular neben einer Anschrift auf einem Telefon waere
 * zweimal zu schmal.
 */
.bp-kontakt-seite { margin-block-start: 0; }

/*
 * Die rechte Spalte steht auf dem ruhigen Grund abgesetzt. Ohne das stuenden
 * dort drei Beschriftungen und drei Absaetze frei in der Flaeche, waehrend
 * links ein Formular mit sichtbaren Feldern steht - die Seite haette rechts
 * ein Loch.
 */
.bp-kontakt-angaben {
	background: var(--bp-flaeche-hell);
	border-radius: var(--bp-r-gross);
	padding: var(--bp-7);
	align-self: start;
}

.bp-kontakt-angaben p { margin-block: 0; }

/*
 * Die Telefonnummern. Untereinander ueber die <br> im Seiteninhalt, auf
 * derselben linken Kante wie Anschrift und E-Mail daneben.
 *
 * Ersetzt drei Regeln, die bis zum 26. August 2026 in style.css standen und
 * die Nummern als zentrierte Knopfspalte gesetzt haben - ein Rest der alten
 * Kartengestaltung. Sie waren dadurch als einziger Block der Spalte um rund
 * 130 px eingerueckt. Begruendung an der Fundstelle dort.
 *
 * `inline-block` statt `inline`: Damit greift die Mindesthoehe, und die
 * Klickflaeche einer Nummer bleibt hoch genug. Auf einem Telefon ist eine
 * Nummer das wichtigste Ziel dieser ganzen Seite.
 */
.bp-kontakt-angaben .bp-nummernblock a {
	display: inline-block;
	min-block-size: 32px;
	padding-block: var(--bp-1);
	font-weight: 600;
}

.bp-kontakt-zeit {
	margin-block-start: var(--bp-2) !important;
	color: var(--bp-tinte-leise);
	font-size: var(--bp-t-klein);
}

/* --- 19.11 Die Grossansicht der Galerie --------------------------------- */

/*
 * Gehoert zu bp-theme/js/galerie.js. Die Begruendung, warum diese Ansicht
 * selbst geschrieben ist und nicht aus einer Bibliothek kommt, steht dort.
 *
 * Der Grund ist SEHR dunkel (94 Prozent), nicht schwarz: Ein reines Schwarz
 * hinter einem Foto laesst dessen dunkle Stellen ausfransen - man sieht
 * nicht mehr, wo das Bild aufhoert. Die Tinte der Seite mit hoher Deckkraft
 * bleibt dagegen erkennbar eine Flaeche.
 */
.bp-grossansicht {
	position: fixed;
	inset: 0;
	z-index: 100;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--bp-3);
	padding: var(--bp-4);
	background: color-mix(in srgb, var(--bp-tinte) 94%, transparent);
}

.bp-grossansicht[hidden] { display: none; }

/* Die Seite darunter scrollt nicht mit. */
.bp-ga-offen, .bp-ga-offen body { overflow: hidden; }

.bp-ga-buehne {
	grid-column: 2;
	margin: 0;
	display: grid;
	justify-items: center;
	gap: var(--bp-4);
	max-block-size: 100%;
}

/*
 * Das Bild bekommt hoechstens so viel Platz, wie da ist - abzueglich der
 * Zeile darunter. Ohne die Rechnung schiebt ein Hochformat die
 * Bildunterschrift aus dem Fenster.
 */
.bp-ga-buehne img {
	max-inline-size: 100%;
	max-block-size: calc(100vh - 9rem);
	inline-size: auto;
	block-size: auto;
	object-fit: contain;
	border-radius: var(--bp-r-klein);
	background: var(--bp-weiss);
}

.bp-ga-buehne figcaption {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--bp-2) var(--bp-5);
	color: var(--bp-weiss);
	font-size: var(--bp-t-klein);
	text-align: center;
}

.bp-ga-stand { color: color-mix(in srgb, var(--bp-weiss) 70%, transparent); }

/*
 * Die drei Knoepfe. 56 px, also deutlich ueber den 44, die als Mindestmass
 * gelten: Sie liegen auf einem Foto, nicht auf einer ruhigen Flaeche, und
 * muessen ohne Suchen zu treffen sein.
 */
.bp-grossansicht button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 56px;
	block-size: 56px;
	padding: 0;
	border: 1px solid color-mix(in srgb, var(--bp-weiss) 35%, transparent);
	border-radius: var(--bp-r-voll);
	background: color-mix(in srgb, var(--bp-tinte) 55%, transparent);
	color: var(--bp-weiss);
	cursor: pointer;
	transition: background var(--bp-dauer) var(--bp-easing),
	            border-color var(--bp-dauer) var(--bp-easing);
}

.bp-grossansicht button:hover:not(:disabled) {
	background: color-mix(in srgb, var(--bp-weiss) 22%, transparent);
	border-color: var(--bp-weiss);
}

.bp-grossansicht button:focus-visible {
	outline: 3px solid var(--bp-weiss);
	outline-offset: 2px;
}

/*
 * Der abgeschaltete Knopf bleibt SICHTBAR und behaelt seinen Platz.
 *
 * Ihn auszublenden waere bequemer zu schreiben und schlechter zu benutzen:
 * Das Bild springt dann bei jedem Blaettern um 60 px zur Seite, sobald man
 * am Anfang oder Ende ankommt.
 */
.bp-grossansicht button:disabled {
	opacity: 0.3;
	cursor: default;
}

.bp-ga-zurueck { grid-column: 1; }
.bp-ga-vor     { grid-column: 3; }

/*
 * Der Schliessen-Knopf oben rechts, aus dem Gitter heraus. Er gehoert nicht
 * in die Reihe der Blaetterknoepfe - er tut etwas anderes.
 */
.bp-ga-zu {
	position: absolute;
	inset-block-start: var(--bp-4);
	inset-inline-end: var(--bp-4);
	z-index: 1;
}

/*
 * SCHMALE BILDSCHIRME: Die Blaetterknoepfe wandern unter das Bild.
 *
 * Bei 375 px Breite nehmen zwei Knoepfe zu 56 px plus Abstand 148 px weg -
 * das Bild haette 227. Untereinander bekommt es die volle Breite, und die
 * Knoepfe stehen dort, wo der Daumen ohnehin liegt.
 */
@media (max-width: 34em) {
	.bp-grossansicht {
		grid-template-columns: 1fr 1fr;
		grid-template-rows: minmax(0, 1fr) auto;
		align-content: center;
	}

	.bp-ga-buehne  { grid-column: 1 / -1; grid-row: 1; }
	.bp-ga-zurueck { grid-column: 1; grid-row: 2; justify-self: end; }
	.bp-ga-vor     { grid-column: 2; grid-row: 2; justify-self: start; }
	.bp-ga-buehne img { max-block-size: calc(100vh - 14rem); }
}

/* Wer Bewegung abbestellt hat, bekommt keine. */
@media (prefers-reduced-motion: reduce) {
	.bp-grossansicht button { transition: none; }
}

/* ==========================================================================
   20. DIE TRAUERFALL-SEITE, ZWEITER DURCHGANG (27. August 2026)
   ==========================================================================

   Sieben Wuensche an einem Stueck. Sie haengen zusammen, deshalb ein
   Abschnitt und nicht sieben Einzelregeln verstreut:

     1. ein schmaler Streifen oben statt gar keines Kopfes
     2. Name und Sterbedatum direkt untereinander
     3. kein Strich dazwischen
     4. die Parte oeffnet die Grossansicht statt einer neuen Seite
     5. der Knopf ohne „PDF, 303,6 KB"
     6. der Weg zurueck rechts neben dem Namen
     7. weniger Abstand zum Fuss

   Vier davon stehen hier, drei woanders: Die Grossansicht ist js/galerie.js
   und functions.php, der Knopftext und der Zurueck-Knopf sind
   class-render.php, der alte Verweis am Seitenende war
   templates/single-trauerfall.html.
   -------------------------------------------------------------------------- */

/*
 * DER SCHMALE STREIFEN.
 *
 * Diese Seite war die einzige ohne Kopfband - der Parte-Kopf war der Anfang.
 * Das hat gestimmt, solange der Name ganz oben stand; als Seite unter einem
 * klebenden Kopf fehlte ihr der Absatz, den jede andere hat.
 *
 * 130 PX, DIE HAELFTE DER 260 der uebrigen Seiten, mit demselben Bild.
 * Ein erster Anlauf hatte 48 px OHNE Bild, aus der Ueberlegung heraus, dass
 * Blueten auf der Seite eines Verstorbenen eine Dekoration waeren, die
 * niemand bestellt hat. Im Bild sah es aus wie ein Fehler: ein dunkler
 * Balken ohne Inhalt, der zu nichts gehoerte.
 *
 * Das Band gehoert zur Seite, wenn es dasselbe Band ist wie ueberall. Nur
 * flacher - es soll absetzen, nicht auftreten.
 *
 * Das Bild kommt aus `.bp-seitenkopf-standard` (style.css), demselben Weg
 * wie beim Archiv. Kein `useFeaturedImage`: So tragen alle Trauerfall-Seiten
 * dasselbe Band, ohne dass je Parte ein Kopfbild gepflegt werden muss.
 *
 * KEINE HOEHENANGABE HIER. Sie steht als `min-height` im Cover-Block der
 * Vorlage, wo WordPress sie erwartet - eine zweite Angabe an dieser Stelle
 * waere die zweite Stelle fuer denselben Wert.
 *
 * DAS BAND WIRKT ETWAS HELLER als das der anderen Seiten, und das ist kein
 * Fehler. Gemessen: mittlere Helligkeit 83 von 255 gegen 70 beim 260er Band.
 *
 * Grund ist `background-size: cover`. Die Skalierung richtet sich nach der
 * BREITE - die ist auf beiden Seiten 1440 -, beschnitten wird senkrecht.
 * Ein 130 px hoher Ausschnitt zeigt also einen schmalen Streifen aus der
 * BILDMITTE, und die ist heller als das Bild im Durchschnitt.
 *
 * Das laesst sich nicht beheben, ohne eines der beiden aufzugeben: entweder
 * dasselbe Bild oder dieselbe Helligkeit. Eine staerkere Abdunklung nur hier
 * waere ein zweiter Wert fuer dieselbe Flaeche - genau die Sorte Sonderfall,
 * die diese Datei sonst vermeidet.
 */
.bp-seitenkopf-schmal .wp-block-cover__inner-container {
	/*
	 * Der Behaelter ist leer (kein Titel im Band). WordPress gibt ihm
	 * trotzdem das globale Polster, und das macht aus 130 px in der Vorlage
	 * gemessene 226 im Bild.
	 */
	padding: 0;
	min-block-size: 0;
}

/*
 * NAME UND ZURUECK IN EINER ZEILE.
 *
 * Der Weg zurueck stand am Seitenende. Wer eine Parte gelesen hat, will oft
 * zur naechsten und musste dafuer an Parte und Herunterladen vorbeiscrollen.
 *
 * `align-items: baseline` und nicht `center`: Der Name ist rund 44 px hoch,
 * der Knopf 20. Mittig ausgerichtet saesse der Knopf optisch zu hoch - auf
 * der Grundlinie steht er dort, wo das Auge die Zeile liest.
 *
 * UNTER 48em BRICHT DIE ZEILE UM. Ein Name wie „Walter Manhartsgruber" und
 * ein Knopf nebeneinander sind auf 375 px zusammen breiter als der Platz;
 * `flex-wrap` stellt den Knopf dann darunter, linksbuendig unter den Namen.
 */
.bp-name-zeile {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--bp-2) var(--bp-6);
}

.bp-name-zeile .bp-name { margin-block: 0; }

/*
 * Der Knopf selbst: leise. Er ist ein Weg zurueck, keine Handlung - der
 * einzige gefuellte Knopf dieser Seite bleibt „Parte als PDF herunterladen".
 */
.bp-parte-zurueck {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: var(--bp-2);
	min-block-size: 44px;
	font-size: var(--bp-t-klein);
	font-weight: 600;
	color: var(--bp-akzent);
	text-decoration: none;
	white-space: nowrap;
}

.bp-parte-zurueck:hover,
.bp-parte-zurueck:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.4em;
}

/*
 * KEIN STRICH ZWISCHEN NAME UND DATUM.
 *
 * Er stand seit dem ersten Entwurf da, mit einer guten Begruendung: „Auf dem
 * Papier steht er dort ebenfalls - er trennt die Person von den Daten."
 *
 * Auf Papier stimmt das. Dort steht der Name mittig, gross, und darunter
 * folgen mehrere Zeilen Daten; der Strich fasst sie zusammen. Hier steht
 * unter dem Namen EINE Zeile, und die Seite ist links ausgerichtet. Ein
 * Strich, der eine Zeile von einer Zeile trennt, trennt nichts.
 *
 * Die Regel steht in style.css (`.bp-lebensdaten::before`) und wird hier
 * abgeschaltet statt dort entfernt: style.css wird als Ganzes abgeloest, und
 * bis dahin bleibt der Verlauf dort lesbar.
 */
.bp-lebensdaten::before { content: none; }

/*
 * Ohne Strich braucht das Datum auch das Polster nicht mehr, das nur dazu
 * da war, ihn freizustellen. Gemessen standen zwischen Name und Datum
 * 1,6 rem Aussenabstand plus 1,6 rem Polster - 51 px fuer eine Haarlinie.
 */
.bp-lebensdaten {
	margin-block-start: var(--bp-3);
	padding-block-start: 0;
}

/*
 * WENIGER ABSTAND ZUM FUSS.
 *
 * Gemessen lagen zwischen dem Knopf und dem Fuss 200 px: 72 px Rest des
 * Blattes, dazu 128 px Aussenabstand des Fusses. Der ist fuer eine Seite
 * gedacht, die mit Text aufhoert - diese hoert mit einem Knopf auf, und
 * darunter kam nichts mehr.
 *
 * 48 px, derselbe Wert wie die Luft IM Fuss (`--bp-fuss-luft`). Damit ist
 * der Abstand vor dem Fuss so gross wie der darin, und die Seite hoert auf,
 * statt auszulaufen.
 *
 * NUR AUF DIESER SEITE. Andere Seiten enden mit Fliesstext oder einer
 * Galerie und tragen die 128 px zu Recht.
 */
body.single-trauerfall .bp-fuss { margin-block-start: var(--bp-8); }

/*
 * Die 72 px unter dem Knopf, aufgeschluesselt: 52 px Polster am Blatt und
 * 20 px Aussenabstand des Absatzes, in dem der Knopf steht.
 *
 * Das Blattpolster traegt die Parte - oben und an den Seiten ist es richtig.
 * Unten schliesst der Knopf die Seite ab; dort polstert es gegen nichts.
 */
/*
 * DER INHALT STEHT MITTIG AUF DER SEITE - 27. August 2026 auf Wunsch:
 * „Schiebe den Content im body in die Mitte."
 *
 * Gemessen stand das Blatt bei 96..922, also mit Mitte 509 auf einer Seite,
 * deren Mitte bei 720 liegt. Rechts blieben 422 px leer. Auf jeder anderen
 * Seite faellt das nicht auf, weil dort Text die Reihe fuellt; hier steht
 * eine Parte von 420 px und sonst nichts.
 *
 * `margin-inline: auto` mit `!important`, weil Abschnitt 9 allen Kindern
 * einer `constrained`-Gruppe `margin-inline: 0 !important` gibt - die Regel,
 * die die eine linke Kante der Seite durchsetzt. Hier ist sie falsch: Diese
 * Seite hat keine Textspalte, an der sich etwas ausrichten muesste.
 *
 * DIE INHALTE BLEIBEN LINKSBUENDIG. Zentriert wird der KASTEN, nicht der
 * Satz - dieselbe Unterscheidung wie beim Zitat und beim Bandtitel
 * (Styleguide B11). Ein zentrierter Name ueber einer linksbuendigen Parte
 * saehe schief aus.
 *
 * `main.is-layout-constrained >` IST DER ZAEHLER. Die Regel aus Abschnitt 9
 * lautet `main.is-layout-constrained > :not(.alignfull):not(.alignwide)` und
 * liegt bei (0,3,1) - zwei `:not()` zaehlen zwei Klassen. Ein blankes
 * `body.single-trauerfall .bp-trauerfall-blatt` hat (0,2,1) und verliert,
 * trotz `!important` auf beiden Seiten. Gemessen: geschrieben `auto`,
 * gewirkt `0`.
 */
body.single-trauerfall main.is-layout-constrained > .bp-trauerfall-blatt {
	margin-inline: auto !important;
}

/*
 * NAME UND PARTE WEITER NACH OBEN.
 *
 * Gemessen lagen zwischen Bandkante und Name 148 px: 96 px aus
 * `.bp-seitenkopf + *` (der Abstand, den JEDE Seite zwischen Band und Inhalt
 * hat) plus 52 px Polster des Blattes.
 *
 * Die 96 sind fuer eine Seite gedacht, die mit einer Ueberschrift anfaengt.
 * Hier faengt sie mit einem NAMEN an, und der ist der Titel - er soll nicht
 * so aussehen, als haette man ihn vergessen und dann nachgetragen.
 *
 * Es sind aber ZWEI Abstaende, und das war beim ersten Anlauf nicht auf dem
 * Schirm: `main` traegt 48 px, das Blatt darin noch einmal 96 (aus
 * Abschnitt 8, `margin-block-start: var(--bp-10) !important` fuer alle
 * Blaetter). Der groessere gewinnt, weil beide Aussenabstaende zusammen-
 * fallen - gemessen blieben 96, obwohl `main` schon auf 48 stand.
 *
 * Deshalb wird auch das Blatt zurueckgesetzt. Zusammen 48 px, und die Parte
 * rueckt automatisch mit.
 */
body.single-trauerfall .bp-seitenkopf + * {
	margin-block-start: var(--bp-8) !important;
}

body.single-trauerfall main.is-layout-constrained > .bp-trauerfall-blatt {
	margin-block-start: 0 !important;
	padding-block-start: 0;
}

body.single-trauerfall .bp-parte { margin-block-start: var(--bp-9); }

/*
 * DAS BLATT SO BREIT WIE SEIN INHALT.
 *
 * Zentrieren allein hat nicht gereicht: Das Blatt war 826 px breit (die
 * Leseweite), die Parte darin 420. Der Kasten sass mittig, sein Inhalt klebte
 * links, und rechts standen 400 px leer - es sah aus wie vorher, nur weiter
 * rechts.
 *
 * 39rem = 624 px. Die Zahl kommt vom Namen, nicht vom Bild: „Walter
 * Manhartsgruber" ist der laengste der 229 und misst mit 44 px Schrift
 * gemessene 512 px; dazu der Zurueck-Knopf mit 90 und eine Rinne. Kuerzer,
 * und der laengste Name braeche um.
 *
 * Die Leseweite als Vergleich waere hier das falsche Mass: Auf dieser Seite
 * steht kein Fliesstext, den man ueber Zeilen hinweg liest. Es steht ein
 * Name, ein Datum und ein Bild.
 */
body.single-trauerfall main.is-layout-constrained > .bp-trauerfall-blatt {
	max-inline-size: 39rem;
}

/*
 * DIE PARTE MITTIG IM BLATT UND GROESSER.
 *
 * Mittig, weil sie ein BILD ist: Was man ansieht, steht mittig; was man
 * liest, steht links (Abschnitt 19). Name und Datum bleiben deshalb links,
 * der Zurueck-Knopf rechts - die Parte dazwischen zentriert.
 *
 * SO BREIT WIE DAS BLATT - 27. August 2026: „Es soll so breit sein wie der
 * Container." Vorher 480 px in einem 624 px breiten Blatt, davor 420.
 *
 * Damit ist die Parte das, was sie sein soll: der Inhalt dieser Seite, nicht
 * eine Abbildung davon. Die Schrift ist bei 624 px ohne Grossansicht lesbar.
 *
 * `100%` UND KEINE FESTE ZAHL. Das Blatt ist 39rem breit; eine zweite Zahl
 * hier waere die zweite Stelle fuer dieselbe Breite und liefe beim naechsten
 * Mal auseinander. Wer das Blatt aendert, aendert die Parte mit.
 *
 * ZUR AUFLOESUNG: 624 px Anzeige brauchen auf einem Bildschirm mit doppelter
 * Pixeldichte 1248 px. Die grosse Vorschau hat seit heute 1400 - das reicht
 * auch dafuer. Mit den 800 px von vorher waere die Parte hier weich gewesen;
 * die Reihenfolge war also richtig herum.
 *
 * Der Rahmen (`.bp-parte-link`) sitzt jetzt auf derselben Breite, nicht mehr
 * `fit-content`: Bei einem Bild, das den Container fuellt, ist beides
 * dasselbe - aber `100%` sagt es, statt es auszurechnen.
 */
body.single-trauerfall .bp-parte-bild {
	display: block;
	inline-size: 100%;
	block-size: auto;
	margin-inline: 0;
}

body.single-trauerfall .bp-parte-link {
	display: block;
	inline-size: 100%;
	margin-inline: 0;
}

/*
 * DIE KOPFZEILE DER PARTE: „PARTE" links, „vergroessert ansehen" rechts.
 *
 * Dieselbe Form wie die Namenszeile darueber - links was es ist, rechts was
 * man tun kann. Zwei gleiche Zeilen untereinander lesen sich als Ordnung;
 * zwei verschiedene als Zufall.
 *
 * `align-items: baseline`, weil die Ueberschrift 16 px klein und in
 * Grossbuchstaben gesetzt ist und der Link 16 px normal: Auf der Grundlinie
 * stehen beide dort, wo das Auge die Zeile liest. Mittig ausgerichtet saesse
 * der Link zu hoch.
 *
 * Unter 34em bricht die Zeile um. Der Link steht dann unter der
 * Ueberschrift, linksbuendig - auf 375 px waeren beide nebeneinander zu eng.
 */
.bp-parte-kopfzeile {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--bp-2) var(--bp-5);
}

.bp-parte-kopfzeile h2 { margin-block: 0; }

/*
 * Der Link ist KEIN Block, anders als der Bild-Link darunter - sonst fuellte
 * er die Zeile und stuende links statt rechts. `inline-size: auto` hebt die
 * Regel darueber gezielt fuer diesen einen auf.
 */
.bp-parte-vergroessern {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	min-block-size: 44px;
	inline-size: auto;
	font-size: var(--bp-t-klein);
	color: var(--bp-akzent);
	text-decoration: underline;
	text-underline-offset: 0.3em;
	white-space: nowrap;
}

body.single-trauerfall .bp-parte-vergroessern { inline-size: auto; }

/*
 * DER KNOPF SO BREIT WIE DIE PARTE - 27. August 2026 auf Wunsch.
 *
 * Er war 243 px breit in einem 624 px breiten Blatt und stand darin links.
 * Auf die volle Breite gezogen schliesst er die Seite ab, statt sie
 * auslaufen zu lassen: Parte und Knopf haben dieselbe Kante, links wie
 * rechts.
 *
 * `justify-content: center` haelt die Beschriftung in der Mitte. Ein 624 px
 * breiter Knopf mit linksbuendigem Text saehe aus wie ein Kasten, in den
 * jemand ein Wort gelegt hat.
 */
body.single-trauerfall .bp-parte-download .bp-flaeche {
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 100%;
}

body.single-trauerfall main { padding-block-end: 0; }
body.single-trauerfall .bp-trauerfall-blatt { margin-block-end: 0; padding-block-end: 0; }
body.single-trauerfall .bp-parte-download { margin-block-end: 0; }



/* ===========================================================================
   KONDOLENZEN
   28. August 2026
   ===========================================================================

   ZWEI IRRTUEMER AUF DEM WEG HIERHER, beide am selben Tag, beide dieselbe
   Ursache - und deshalb bleiben sie aufgeschrieben:

   ERSTENS habe ich den Abschnitt als weisses Blatt gebaut, weil die Vorlage
   `single-trauerfall.html` die Klasse `.bp-blatt` noch traegt. „Papier und
   Moos" hat das Blatt aber abgeschafft: Weiter oben in dieser Datei steht
   `.bp-blatt { background: transparent; box-shadow: none }`. Die Klasse im
   Markup ist ein Rest, den diese Datei stilllegt - kein Angebot.

   ZWEITENS habe ich dem Abschnitt eine eigene Gruppe mit eigener Breite
   gegeben. Gemessen stand er dann bei x=262 und 826 px breit, die Parte bei
   x=574 und 624 px breit - zwei Achsen auf einer Seite. Direkte Kinder von
   `main` bekommen hier die Leseweite und stehen LINKS; die Parte sitzt
   mittig in der Inhaltsreihe.

   BEIDE MALE HABE ICH ETWAS FESTGELEGT, DAS SCHON FESTGELEGT WAR. Der
   Abschnitt haengt jetzt in derselben Gruppe wie die Parte und erbt ihre
   Spalte. Es steht hier deshalb KEINE Breite fuer den Abschnitt selbst.

   Wer hier je `max-inline-size` oder `margin-inline` am Abschnitt ergaenzt,
   macht den zweiten Fehler noch einmal. (Das FENSTER weiter unten hat sehr
   wohl eine Breite - es haengt in der obersten Ebene und nicht im Text.)
*/

/* ---------------------------------------------------------------------------
   1. DIE ZWEI WEGE IM PARTE-KOPF

   Auf Wunsch am 28. August 2026: „nur einen Button neben bzw. unter dem
   Zurueck Button." Vorher standen Liste und Formular offen unter der Parte -
   vier Felder, ein Kaestchen und ein Knopf, direkt unter dem Bild eines
   Verstorbenen. Das war viel Apparat an einer stillen Stelle.

   RECHTSBUENDIG, also in der Spalte von „Zurueck". Das ist die einzige Stelle
   dieser Seite, an der Handlungen stehen; alles darunter ist die Parte. Die
   Hausregel „Was man liest, steht links" gilt fuer Text, nicht fuer Schalter.
   --------------------------------------------------------------------------- */

.bp-kondolenz-wege {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: var(--bp-3);
	margin-block: var(--bp-5) 0;
}

/*
   LEISE KNOEPFE, KEINE FLAECHEN.

   „Zurueck" daneben ist ein blosser Textlink. Ein gefuellter Knopf in
   Moosgruen wuerde ihn erschlagen und die Kondolenz zur wichtigsten Handlung
   der Seite machen - das ist sie nicht, die Parte ist es. Ein Rahmen genuegt,
   um zu sagen: hier kann man etwas tun.
*/
.bp-kondolenz-weg {
	display: inline-flex;
	align-items: center;
	gap: var(--bp-2);
	min-block-size: 44px;
	padding-inline: var(--bp-4);
	font-size: var(--bp-t-klein);
	font-weight: 600;
	color: var(--bp-akzent);
	text-decoration: none;
	background: transparent;
	border: 1px solid var(--bp-linie);
	border-radius: var(--bp-r-klein);
	white-space: nowrap;
}

.bp-kondolenz-weg:hover,
.bp-kondolenz-weg:focus-visible {
	background: var(--bp-ruhe-2);
	border-color: var(--bp-akzent);
	text-decoration: none;
}

/* Das Kerzchen auf dem Knopf brennt RUHIG. Auf einem Schalter waere Bewegung
   Werbung; die lebendige Flamme steht bei den Eintraegen, wo sie jemandem
   gilt. */
.bp-kerzchen {
	flex: 0 0 auto;
	margin-inline-start: calc(-1 * var(--bp-1));
}

.bp-kerzchen .bp-kerze-koerper {
	fill: #F6F2E6;
	stroke: var(--bp-linie);
	stroke-width: 1;
}

.bp-kerzchen .bp-kerze-docht {
	stroke: #6B6455;
	stroke-width: 1.4;
	stroke-linecap: round;
	fill: none;
}

.bp-kerzchen .bp-kerze-flamme {
	fill: #E0952C;
}

/* ---------------------------------------------------------------------------
   2. DIE BEIDEN ABSCHNITTE

   Sie stehen im Dokument und werden von `js/kondolenz.js` in je ein
   `<dialog>` umgehaengt. Was hier steht, gilt fuer BEIDE Zustaende: offen auf
   der Seite (ohne JavaScript) und im Fenster (mit).
   --------------------------------------------------------------------------- */

.bp-kondolenzen {
	margin-block-start: var(--bp-9);
}

/*
   MIT JAVASCRIPT NIMMT DER BEHAELTER KEINEN PLATZ MEHR EIN.

   Das Skript setzt diese Klasse, nachdem es beide Abschnitte in Fenster
   gehaengt hat. Ohne sie bliebe unter der Parte eine Luecke von 64 px stehen,
   in der nichts ist - der klassische Rest eines Bausteins, den man versteckt
   hat, ohne seinen Abstand mitzunehmen.
*/
.bp-kondolenzen-fenster {
	margin-block-start: 0;
}

/*
   DIE KANTE ZUM FUSSBEREICH, und warum sie an einer Klasse haengt.

   Am 27. August wurde entschieden: `main { padding-block-end: 0 }` - die
   Parte soll den Fussbereich beruehren. Das stimmte, solange sie das letzte
   Element der Seite war.

   MIT DEN FENSTERN IST SIE ES WIEDER. Der Behaelter darunter ist 0 px hoch,
   Liste und Formular liegen in der obersten Ebene. Die Kante gilt also
   weiterhin - und deshalb steht hier KEINE Regel fuer diesen Fall.

   OHNE JAVASCRIPT steht das Formular offen unter der Parte, und das letzte
   Element der Seite ist ein Absendeknopf. Ein Knopf, der ohne Abstand am
   Fussbereich klebt, sieht nach Fehler aus. Nur dann bekommt die Seite ihren
   Abschluss zurueck.

   `js/kondolenz.js` setzt die Klasse am `<body>`, sobald die Fenster stehen.
   Ihr FEHLEN ist hier die Bedingung - der seltenere Fall bekommt die
   Ausnahme, nicht der haeufige.
*/
body.single-trauerfall:not(.bp-kondolenz-fenster-aktiv) main {
	padding-block-end: var(--bp-10);
}

.bp-kondolenz-teil-titel {
	margin-block: 0 var(--bp-6);
}

/* Ohne JavaScript folgen die beiden Abschnitte aufeinander. Dann trennt sie
   eine Linie - im Fenster steht jeder fuer sich und braucht keine. */
.bp-kondolenz-teil + .bp-kondolenz-teil {
	margin-block-start: var(--bp-8);
	padding-block-start: var(--bp-8);
	border-block-start: 1px solid var(--bp-linie);
}

.bp-fenster .bp-kondolenz-teil + .bp-kondolenz-teil,
.bp-fenster .bp-kondolenz-teil {
	margin-block-start: 0;
	padding-block-start: 0;
	border-block-start: 0;
}

/*
   DER DANK NACH DEM ABSENDEN steht ueber der Liste und nicht ueber dem
   Formular: Die eigenen Zeilen stehen jetzt in der Liste, und dorthin soll
   der Blick.
*/
.bp-kondolenz-dank {
	margin-block: 0 var(--bp-7);
	padding: var(--bp-3) var(--bp-4);
	background: var(--bp-ruhe-2);
	border-inline-start: 3px solid var(--bp-akzent);
	border-radius: var(--bp-r-klein);
}

/* ---------------------------------------------------------------------------
   3. DIE EINTRAEGE
   --------------------------------------------------------------------------- */

.bp-kondolenz-liste {
	list-style: none;
	margin: 0;
	padding: 0;
}

/* Die Aufzaehlungsregeln weiter oben geben jedem `li` einen linken
   Innenabstand und einen Abstand zum Vorgaenger. Beides ist hier falsch:
   Diese Liste hat keine Zeichen, und der Abstand kommt vom Trenner. */
.bp-kondolenz-liste li + li {
	margin-block-start: 0;
}

/*
   EINE HAARLINIE ZWISCHEN DEN EINTRAEGEN, keine Kaesten.

   Auf einer Bestattungsseite zaehlen Kaesten auf, Linien reihen. Hier wird
   gereiht. Dazu kommt: Eine Flaeche je Eintrag waere in diesem
   Gestaltungssystem ohnehin ein Rueckfall in die abgeschaffte Karte.

   Der erste Eintrag bekommt keine Linie - ueber ihm steht schon die
   Ueberschrift, und zwei Trenner uebereinander sind einer zu viel.
*/
.bp-kondolenz {
	display: flex;
	gap: var(--bp-5);
	align-items: flex-start;
	padding-block: var(--bp-6);
	border-block-start: 1px solid var(--bp-linie);
}

.bp-kondolenz:first-child {
	border-block-start: 0;
	padding-block-start: 0;
}

.bp-kondolenz-inhalt {
	/* `min-inline-size: 0` haelt lange Woerter im Rahmen: Ohne diese Angabe
	   waechst ein Flex-Kind ueber seinen Platz hinaus, statt umzubrechen. */
	flex: 1 1 auto;
	min-inline-size: 0;
}

.bp-kondolenz-text p {
	margin-block: 0 var(--bp-3);
	/* Was jemand geschrieben hat, kann eine sehr lange Adresse oder ein sehr
	   langes Wort enthalten. Es soll umbrechen und nicht die Spalte sprengen. */
	overflow-wrap: anywhere;
}

.bp-kondolenz-text p:last-child {
	margin-block-end: 0;
}

.bp-kondolenz-absender {
	margin-block: var(--bp-3) 0;
	font-size: var(--bp-t-klein);
}

.bp-kondolenz-name {
	font-weight: 600;
}

/*
   DAS DATUM BRICHT NICHT MEHR ENTZWEI.

   Bei 375 px stand da „Familie Hartinger, Pram · 28. / August 2026" - der
   Umbruch mitten im Datum. Mit `nowrap` rutscht es als Ganzes in die
   naechste Zeile, was sich liest wie eine Unterschrift mit Datum darunter.
*/
.bp-kondolenz-datum {
	color: var(--bp-tinte-leise);
	white-space: nowrap;
}

/*
   KEIN TRENNPUNKT MEHR ZWISCHEN NAME UND DATUM.

   Hier stand ein mittiger Punkt. Auf breiten Schirmen las er sich gut; sobald
   das Datum aber in die naechste Zeile rutscht - bei 375 px der Normalfall -
   stand er als einzelnes Zeichen am ZEILENANFANG, vor einem eingerueckten
   Datum. Ein Trennzeichen, das nichts mehr trennt, ist ein Schmutzfleck.

   Der Unterschied ist ohnehin schon da: Der Name steht halbfett, das Datum
   leise. Ein Zeichen dazwischen sagt nichts, was die beiden nicht selbst
   sagen.
*/
.bp-kondolenz-datum {
	margin-inline-start: 0.75em;
}

/* ---------------------------------------------------------------------------
   4. DIE KERZE

   DIE EINZIGE WARME FARBE AUF DIESER WEBSITE, und sie hat einen Grund: Eine
   Flamme in Moosgruen waere keine Flamme. Das Bernstein steht deshalb bewusst
   allein und taucht nirgends sonst auf - es ist kein zweiter Akzent neben dem
   Gruen, sondern das Licht in einem gruenen Raum.
   --------------------------------------------------------------------------- */

.bp-kerze {
	flex: 0 0 auto;
	display: block;
	inline-size: 28px;
	margin-block-start: 2px;
}

.bp-kerze-koerper {
	fill: #F6F2E6;
	stroke: var(--bp-linie);
	stroke-width: 1;
}

.bp-kerze-docht {
	stroke: #6B6455;
	stroke-width: 1.4;
	stroke-linecap: round;
	fill: none;
}

.bp-kerze-flamme {
	fill: #E0952C;
}

.bp-kerze-kern {
	fill: #FFE6AB;
}

/*
   Der Schein ist eine gewoehnliche Ellipse, die per CSS weichgezeichnet wird.

   Der naheliegende Weg waere ein `radialGradient` im SVG gewesen. Der
   scheitert an etwas Unscheinbarem: Ein Verlauf braucht eine id, und die
   Kerze steht so oft auf der Seite, wie es Kondolenzen gibt. Zwanzig
   Eintraege haetten zwanzigmal dieselbe id im Dokument - im Browser gewinnt
   dann die erste, waehrend jede Pruefung des Quelltextes zwanzig Fehler
   meldet.

   `filter: blur()` braucht keine id und faellt ohne Unterstuetzung auf eine
   schlichte Ellipse zurueck, nicht auf gar nichts.

   DIE ELLIPSE MUSSTE KLEINER WERDEN, nachgemessen am 28. August 2026 in der
   Ansicht bei 375 px: Sie war 12x15 gross und mittig bei (14|15), die
   Weichzeichnung 7 px. Zusammen reichte das ueber den Rand des SVG hinaus -
   und ein SVG schneidet dort ab. Statt eines runden Scheins stand ein
   sichtbares helles RECHTECK um die Kerze.

   Jetzt 8x8 bei (14|14) und 5 px Weichzeichnung: Das liegt mit Rand innerhalb
   der 28x64 des Bildfeldes. Wer eines von beiden vergroessert, holt das
   Rechteck zurueck.
*/
.bp-kerze-schein {
	fill: #F0B45E;
	opacity: 0.34;
	filter: blur(5px);
}

/*
   DIE BEWEGUNG.

   `transform-box: fill-box` ist der Grund, warum `transform-origin` hier
   ueberhaupt tut, was es soll: Ohne diese Angabe bezieht sich der Ursprung
   bei SVG auf das Koordinatensystem der ganzen Grafik, nicht auf das
   einzelne Element. Die Flamme kippte dann um einen Punkt weit unterhalb der
   Kerze weg, statt sich um ihren eigenen Fuss zu neigen.

   Die Verzoegerung kommt aus dem Markup und ist negativ - siehe
   class-kondolenz.php. Ohne sie flackerten alle Kerzen im Gleichschritt.
*/
.bp-kerze .bp-kerze-flamme,
.bp-kerze .bp-kerze-kern {
	transform-box: fill-box;
	transform-origin: 50% 100%;
	animation: bp-flamme 2.6s ease-in-out infinite;
	animation-delay: var(--bp-flackern-start, 0s);
}

.bp-kerze .bp-kerze-schein {
	transform-box: fill-box;
	transform-origin: 50% 65%;
	animation: bp-kerzenschein 2.6s ease-in-out infinite;
	animation-delay: var(--bp-flackern-start, 0s);
}

@keyframes bp-flamme {
	0%,
	100% { transform: scale(1, 1) rotate(-1deg); }
	22%  { transform: scale(1.03, 1.07) rotate(1.2deg); }
	48%  { transform: scale(0.97, 0.95) rotate(-1.5deg); }
	74%  { transform: scale(1.02, 1.04) rotate(0.7deg); }
}

@keyframes bp-kerzenschein {
	0%,
	100% { opacity: 0.30; transform: scale(1); }
	40%  { opacity: 0.44; transform: scale(1.09); }
}

/*
   Wer im Betriebssystem weniger Bewegung eingestellt hat, hat dafuer meist
   einen Grund, der schwerer wiegt als eine huebsche Flamme. Die Kerze bleibt
   stehen - sie verschwindet nicht, sie brennt nur ruhig.
*/
@media (prefers-reduced-motion: reduce) {
	.bp-kerze .bp-kerze-flamme,
	.bp-kerze .bp-kerze-kern,
	.bp-kerze .bp-kerze-schein {
		animation: none;
	}
}

/* ---------------------------------------------------------------------------
   5. DAS FORMULAR
   --------------------------------------------------------------------------- */

.bp-kondolenz-einleitung {
	margin-block: 0 var(--bp-7);
	color: var(--bp-tinte-leise);
	font-size: var(--bp-t-klein);
}

/*
   DAS KAESTCHEN DER EINWILLIGUNG.

   `.bp-formular-feld` ist eine Spalte - Beschriftung oben, Feld darunter.
   Fuer ein Kaestchen ist das falsch herum: Es gehoert VOR seinen Text, so
   wie man es aus jedem Formular kennt. Deshalb hier eine Reihe.

   Die Ueberschreibung von `inline-size` und `min-block-size` ist noetig,
   weil `.bp-formular-feld input` beides auf volle Breite und 48 px setzt -
   richtig fuer ein Textfeld, unbrauchbar fuer ein Kaestchen.
*/
.bp-kondolenz-formular .bp-formular-kasten {
	flex-direction: row;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: var(--bp-3);
}

.bp-kondolenz-formular .bp-formular-kasten input[type="checkbox"] {
	flex: 0 0 auto;
	inline-size: 18px;
	block-size: 18px;
	min-block-size: 0;
	margin-block-start: 3px;
	accent-color: var(--bp-akzent);
}

.bp-kondolenz-formular .bp-formular-kasten label {
	flex: 1 1 16rem;
	font-weight: 400;
	font-size: var(--bp-t-klein);
	line-height: 1.55;
}

/* Die Fehlermeldung gehoert ueber die Reihe, nicht daneben. */
.bp-kondolenz-formular .bp-formular-kasten .bp-formular-feldfehler {
	flex: 1 1 100%;
	order: -1;
}

/* Unter dem Absendeknopf braucht es keinen eigenen Abstand - den Abschluss
   macht der Innenabstand des Fensters beziehungsweise von `main`. */
.bp-kondolenz-formular form > p:last-child {
	margin-block-end: 0;
}

/* ---------------------------------------------------------------------------
   6. DAS FENSTER

   Ein echtes `<dialog>` und kein nachgebauter Kasten: Das Element kann von
   sich aus, was man sonst von Hand baut und dabei falsch macht - der Fokus
   bleibt drinnen, Escape schliesst, der Hintergrund ist fuer Vorleseprogramme
   stillgelegt, und die Anzeige liegt in der obersten Ebene.

   `js/kondolenz.js` erzeugt es. Ohne Skript gibt es kein `.bp-fenster`, und
   alles hier bleibt wirkungslos - genau so soll es sein.
   --------------------------------------------------------------------------- */

.bp-fenster {
	/* Bezugspunkt fuer den Schliessen-Knopf, siehe unten. */
	position: relative;
	inline-size: min(42rem, calc(100vw - 2 * var(--bp-5)));
	max-inline-size: none;
	/* `dvh` und nicht `vh`: Auf dem Handy zaehlt `vh` die Adressleiste mit,
	   und das Fenster waere hoeher als der sichtbare Bereich. */
	max-block-size: min(calc(100dvh - 2 * var(--bp-7)), 46rem);
	padding: 0;
	color: var(--bp-tinte);
	background: transparent;
	border: 0;
	overflow: visible;
}

.bp-fenster::backdrop {
	/* Die Tinte der Website, nicht reines Schwarz. */
	background: rgba(25, 28, 17, 0.58);
}

.bp-fenster-kasten {
	max-block-size: min(calc(100dvh - 2 * var(--bp-7)), 46rem);
	/*
	 * OBEN WENIGER ALS AN DEN SEITEN - 30. August 2026 auf Wunsch:
	 * „machen wir oben bitte weniger Abstand nach oben."
	 *
	 * Der Grund war nicht der Innenabstand allein, sondern der
	 * Schliessen-Knopf: Er stand als eigene Zeile ueber der Ueberschrift und
	 * schob sie um seine ganzen 44 px nach unten. Zusammen mit 44 px Polster
	 * begann der Text erst nach rund 80 px.
	 *
	 * Jetzt steht der Knopf frei (siehe unten) und nimmt keine Zeile mehr
	 * ein; oben genuegen 24 px.
	 */
	padding: var(--bp-6) clamp(1.5rem, 1rem + 2.5vw, 2.75rem) clamp(1.5rem, 1rem + 2.5vw, 2.75rem);
	background: var(--bp-weiss);
	border-radius: var(--bp-r-gross);
	overflow-y: auto;
	/* Wer im Fenster ans Ende scrollt, soll nicht die Seite dahinter
	   weiterschieben. */
	overscroll-behavior: contain;
	/* Ein schmaler Balken in der Linienfarbe. Der breite Systembalken saegt
	   sonst die rechte Rundung des Kastens ab. */
	scrollbar-width: thin;
	scrollbar-color: var(--bp-linie) transparent;
}

/*
   DER SCHLIESSEN-KNOPF BLEIBT STEHEN, auch wenn der Inhalt scrollt.

   Er ist im Markup das ERSTE Element im Kasten und damit der erste Tabstopp:
   Wer mit der Tastatur ankommt, hat den Ausgang sofort und muss sich nicht
   erst durch vier Formularfelder arbeiten.

   `margin-inline-start: auto` schiebt ihn nach rechts, ohne dass es dafuer
   einen Float oder eine absolute Position braucht - beides waere beim
   Scrollen unruhig.
*/
.bp-fenster-zu {
	/*
	 * FREIGESTELLT, NICHT IM TEXTFLUSS.
	 *
	 * Vorher stand er `sticky` als erstes Element im Kasten. Das hielt ihn
	 * beim Scrollen zwar oben, kostete aber eine ganze Zeile ueber der
	 * Ueberschrift.
	 *
	 * Der Bezugspunkt ist `.bp-fenster` und NICHT der Kasten: Der Kasten
	 * scrollt, das Fenster nicht. Damit bleibt der Knopf stehen, wo er ist,
	 * auch wenn ein langer Text darunter durchlaeuft - dasselbe Verhalten wie
	 * vorher, ohne den Platzbedarf.
	 *
	 * Er ist im Markup weiterhin das ERSTE Element im Kasten und damit der
	 * erste Tabstopp: Wer mit der Tastatur ankommt, hat den Ausgang sofort.
	 */
	position: absolute;
	inset-block-start: var(--bp-3);
	inset-inline-end: var(--bp-3);
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	inline-size: 44px;
	block-size: 44px;
	padding: 0;
	color: var(--bp-tinte-leise);
	background: var(--bp-weiss);
	border: 0;
	border-radius: var(--bp-r-voll);
	cursor: pointer;
}

.bp-fenster-zu:hover,
.bp-fenster-zu:focus-visible {
	color: var(--bp-tinte);
	background: var(--bp-ruhe);
}

/*
   DIE UEBERSCHRIFT IM FENSTER IST KLEINER ALS AUF DER SEITE.

   `--bp-t-h2` geht bis 48 px. Auf einer Seite traegt das eine Ueberschrift
   durch eine ganze Bildschirmhoehe; in einem Fenster von 42rem Breite bricht
   „Eine Kondolenz hinterlassen" dann auf zwei Zeilen um und nimmt ein Drittel
   des Fensters ein, bevor das erste Feld kommt.

   Ein Fenster ist ein kleinerer Raum und braucht eine kleinere Stimme.
*/
.bp-fenster .bp-kondolenz-teil-titel {
	margin-block-start: 0;
	font-size: var(--bp-t-h3);
	/* Platz fuer den freigestellten Schliessen-Knopf rechts daneben, damit
	   eine lange Ueberschrift nicht darunter durchlaeuft. */
	padding-inline-end: 44px;
}

/* ---------------------------------------------------------------------------
   DER HINWEIS AUF DER BEISPIEL-PARTE
   30. August 2026

   Er steht ganz oben auf der Vorschauseite, vor dem Namen. Die Adresse laesst
   sich weitergeben; wer sie bekommt, soll im ersten Satz wissen, dass hier
   niemand gestorben ist.

   DESHALB EIN RAHMEN UND KEINE BLOSSE FLAECHE. Alles andere auf dieser Seite
   ist ruhig und randlos - genau deshalb faellt eine gestrichelte Linie auf,
   ohne dass es dafuer eine Signalfarbe braucht. Rot waere hier falsch: Es ist
   kein Fehler, es ist eine Vorschau.
   --------------------------------------------------------------------------- */

.bp-beispiel-hinweis {
	margin-block: 0 var(--bp-7);
	padding: var(--bp-4) var(--bp-5);
	font-size: var(--bp-t-klein);
	color: var(--bp-tinte);
	background: var(--bp-ruhe-2);
	border: 2px dashed var(--bp-akzent);
	border-radius: var(--bp-r-klein);
}

/* ---------------------------------------------------------------------------
   DIE ZAHL DER KONDOLENZEN IM VERZEICHNIS
   30. August 2026

   Sie steht unter dem Namen und traegt dieselbe Kerze wie die Eintraege
   selbst, nur klein und ruhig. LEISER ALS DER TERMIN darunter: Der Termin ist
   bei einem aktuellen Fall die Angabe, wegen der jemand die Seite aufruft;
   die Zahl der Kondolenzen ist eine Beigabe.
   --------------------------------------------------------------------------- */

/*
   DIE AUSRICHTUNG STEHT NICHT HIER.

   Sie steht dort, wo auch Datum, Gemeinde und Termin ihre bekommen - in den
   beiden `:is(…)`-Listen weiter oben. Am 30. August 2026 fehlte sie dort, und
   die Zeile stand als einzige linksbuendig in einer sonst mittigen Kachel.

   Eine eigene Regel dagegenzustellen haette es auch behoben und waere die
   schlechtere Antwort gewesen: Dann gaebe es die Ausrichtung der Kachel an
   zwei Stellen, und die naechste Aenderung an der einen ginge an der anderen
   vorbei.
*/
.bp-liste-kondolenzen {
	display: inline-flex;
	align-items: center;
	gap: var(--bp-1);
	margin-block-start: var(--bp-1);
	font-size: 0.875rem;
}

.bp-liste-kondolenzen .bp-kerzchen {
	inline-size: 9px;
	block-size: 20px;
}

/* ---------------------------------------------------------------------------
   DAS FENSTER AUF DEM TELEFON
   30. August 2026, zweiter Anlauf nach zwei Bildschirmfotos vom iPhone

   ERSTER ANLAUF: unten andocken mit `margin-block: auto 0` und die Hoehe mit
   `dvh` deckeln. Im Simulator sass es damit bei 375, 390 und 412 px sauber an
   der Unterkante.

   AUF DEM GERAET NICHT. Die Datei lag nachweislich oben - Byte fuer Byte
   dieselbe -, und trotzdem stand das Fenster im oberen Bildschirmdrittel, oben
   unter der Adressleiste abgeschnitten und unten mitten im Absendeknopf
   gekappt.

   ZWEI ANNAHMEN HABEN SICH ALS FALSCH ERWIESEN, und beide sind auf iOS
   heikel:

     `margin: auto`  verteilt nur den UEBRIGEN Platz. Ist der Kasten so hoch
                     wie sein Bezug oder hoeher, wird daraus 0 - und er sitzt
                     oben. Ob Platz uebrig bleibt, haengt davon ab, welche
                     Ansicht Safari gerade als Bezug nimmt.

     `dvh`           ist die DYNAMISCHE Ansicht und aendert sich, waehrend die
                     Adressleiste ein- und ausfaehrt. Ein Deckel, der sich
                     bewegt, ist kein Deckel.

   JETZT WIRD NICHTS MEHR VERTEILT UND NICHTS GESCHAETZT:

     `position: fixed` mit `inset-block-end: 0` und `margin: 0` - die
     Unterkante ist gesetzt, nicht gerechnet.

     `svh` statt `dvh` - die KLEINSTE Ansicht, also die mit sichtbarer
     Adressleiste. Damit ist das Fenster nie hoeher als das, was man sieht,
     auch nicht im ungünstigsten Zustand. Es kann nicht abgeschnitten werden.

   Am Schreibtisch bleibt es ein mittiges Fenster; dort nimmt keine Leiste
   etwas weg.
   --------------------------------------------------------------------------- */

@media (max-width: 47.9375em) {

	.bp-fenster {
		/*
		 * Die Lage wird gesetzt, nicht ueber `auto` verteilt. `inset-block-start:
		 * auto` ist dabei wichtig: Ohne diese Zeile bliebe die Oberkante aus der
		 * Voreinstellung von `dialog:modal` (`inset: 0`) stehen, und der Kasten
		 * waere an BEIDEN Kanten festgemacht - also so hoch wie der Bildschirm.
		 */
		position: fixed;
		inset-block-start: auto;
		inset-block-end: 0;
		inset-inline: 0;
		margin: 0;

		inline-size: auto;
		max-inline-size: none;
		block-size: auto;

		/*
		 * EINE MINDESTHOEHE, NICHT NUR EIN DECKEL - 30. August 2026 auf Wunsch:
		 * „Jetzt ist das erste Drittel nichts und dann faengt das Modal an."
		 *
		 * `max-block-size` allein deckelt nur nach oben; wie hoch die Lade
		 * WIRKLICH wird, entscheidet ihr Inhalt. Beim Lesefenster mit wenigen
		 * Eintraegen waren das zwei Drittel des Bildschirms - und darueber ein
		 * Drittel abgedunkelte Seite, auf der nichts steht.
		 *
		 * Mit 82 % Mindesthoehe faengt sie immer weit oben an. Bleibt Platz
		 * uebrig, liegt er UNTER dem Inhalt, wo er nicht stoert.
		 *
		 * Oben bleiben zwischen 8 und 18 % der Seite stehen. Das ist Absicht
		 * und kein Rest: Die Lade braucht einen Anfang, und man soll sehen,
		 * dass die Parte dahinter noch da ist.
		 */
		min-block-size: 82svh;
		max-block-size: 92svh;

		border-end-start-radius: 0;
		border-end-end-radius: 0;
	}

	.bp-fenster-kasten {
		min-block-size: 82svh;
		max-block-size: 92svh;
		border-end-start-radius: 0;
		border-end-end-radius: 0;

		/*
		 * `env(safe-area-inset-bottom)` ist der Balken am unteren Rand der
		 * Geraete ohne Knopf. Ohne diese Zeile laege der Absendeknopf darunter.
		 */
		padding-block-end: max(var(--bp-6), env(safe-area-inset-bottom, 0px));
	}

	/*
	 * DER GRIFF.
	 *
	 * Ein kurzer Strich oben in der Mitte, wie ihn jede Lade auf einem Telefon
	 * traegt. Er sagt ohne ein Wort, dass das hier ein Fenster ist und nicht
	 * das Ende der Seite.
	 *
	 * ER IST AUCH DIE PROBE: Wer ihn sieht, hat die neue Fassung vor sich.
	 */
	.bp-fenster-kasten::before {
		content: "";
		display: block;
		inline-size: 40px;
		block-size: 4px;
		margin: 0 auto var(--bp-4);
		background: var(--bp-linie);
		border-radius: var(--bp-r-voll);
	}

	/* Der Schliessen-Knopf rueckt mit, damit er nicht ueber dem Griff sitzt. */
	.bp-fenster-zu {
		inset-block-start: var(--bp-2);
		inset-inline-end: var(--bp-2);
	}
}
