/* ============================================================================
   teil-z2-rhythmus.css — der senkrechte Rhythmus.

   Gemessen am 03.10.2026 in einem Messstand aus dem LIVE-HTML von
   brillen-voigt.de und den Theme-Dateien dieses Ordners, Fenster 1512 px.
   Gezaehlt wird das senkrechte Band, in dem NICHTS gemalt wird: Textblatt,
   Bild oder Kachel zaehlen, der vollbreite Abschnittsgrund nicht. Die
   Einblendungen (.einblenden bau.css 78, .wortteil teil-scroll.css 38,
   .stufenkind teil-scroll.css 64, .auf grund.css 451) waren fuer die Messung
   abgeschaltet — sonst misst man den Startzustand einer Bewegung, nicht die
   Geometrie.

   VORHER, Baender groesser als 90 px:

     /unsere-filialen/wiesbaden/   Seitenhoehe 5139 px
       160 px  vor „Herzlich …"            (erste Gruppe unter der Buehne)
       176 px  vor „Das Team"
       186 px  vor „Kompetenz, Qualitaet …"
     /  (Startseite)               Seitenhoehe 11392 px
       13 Baender zwischen 156 und 296 px, siebenmal davon vor einer
       Abschnitts-Ueberschrift
     /unsere-filialen/            Seitenhoehe 2376 px
       161 px  vor der Karte „Schweinfurt"
       170 px  vor dem Signet

   WOHER ES KOMMT — die beteiligten Regeln, gelesen, nicht erinnert:

     grund.css 238      section{ padding:clamp(3.6rem,7.4vw,6.6rem) 0 }
                        105,6 px oben UND unten an JEDEM Abschnitt. Zwei
                        Nachbarn ergeben 211,2 px. Diese eine Regel steckt in
                        jedem der obigen Baender.
     bau.css 29         .blatt h2{ margin:2.4em 0 .5em }
                        .blatt heisst zweierlei (bau.css 21): die Textspalte
                        UND <main class="blatt">. Auf der Startseite trifft die
                        Regel deshalb auch die Abschnitts-Ueberschriften:
                        2,4em auf 3,6rem Schriftgrad = 137,9 px gemessen,
                        obendrauf auf die 211,2 px der Naht. Das sind die
                        296 px vor „… unter einem Dach."
     teil-filiale.css 71  .fil-folge-feld{ padding:clamp(2.6rem,5.5vw,5rem) 0 0 }
                        80 px oben, 0 unten — einseitig.
     seiten.css 83      .fil-team-feld,.fil-rest-feld{ padding-top:clamp(2.4rem,5vw,4.4rem) }
                        70,4 px, die sich zu den 105,6 px des Nachbarn addieren:
                        das sind die 176 px vor „Das Team".
     seiten.css 40      .fil-reihe-feld{ padding-top:0 }
                        0 auf der einen, 105,6 auf der anderen Seite.
     teil-filiale.css 152 .fil-weitere-feld{ padding-block:clamp(2.6rem,5.5vw,5rem) }

   Das Muster ist immer dasselbe: an jeder Naht treffen sich zwei Werte, die
   voneinander nichts wissen, und addieren sich. Deshalb wird hier nicht an
   sieben Stellen nachgebessert, sondern eine Leiter gesetzt, die beide Seiten
   einer Naht aus derselben Zahl speist.

   NACHHER, derselbe Messstand, dieselbe Zaehlweise, 1512 px:

     /unsere-filialen/wiesbaden/   5139 -> 4966 px
       160 -> 102 px  vor „Herzlich …"        (*)
       176 ->   – px  vor „Das Team"
       186 ->   – px  vor „Kompetenz, Qualitaet …"
       zusaetzlich sichtbar geworden: 121 px vor der Kachel „Oeffnungszeiten"
     /  (Startseite)               11392 -> 9399 px
       13 Baender -> 6, keines ueber 97 px (dazu ein Messartefakt, s. u.)
     /unsere-filialen/             2376 -> 2250 px
       161 -> 98 px · 170 -> 106 px

     Andere Breiten, Filialseite und Startseite, Baender ueber 90 px:
        375 px: keines. scrollWidth 375 = clientWidth 375, kein Querscrollen.
                Seitenhoehe Filiale 7273 px, Startseite 14305 px.
        940 px: keines. scrollWidth 925 = clientWidth 925.
                Seitenhoehe Filiale 5174 px, Startseite 10468 px.
       1660 px: --luft-halb liegt dort am oberen Anschlag von 44 px, die Naht
                also bei 88. Startseite 92 bis 100 px, Filialseite 128 px vor
                der Kachel „Oeffnungszeiten" — dieselbe echte Ursache wie
                unten beschrieben (88 + 36,3 px leere Rasterzeile), nicht die
                Leiter. Dazu die beiden Messartefakte.

     Zwei der verbliebenen Zahlen sind Artefakte der MESSUNG, nicht der Seite,
     nachgesehen am Element:
       102 px vor „Herzlich …" — .fil-g-kopf::before (teil-filiale.css 102) ist
         ein 2 px hoher Goldstrich mit margin-bottom 14,4 px und malt genau in
         dieses Band. Ein Pseudoelement steht nicht im DOM, die Messung sieht es
         nicht. Das wirklich leere Band ist 85 px.
       152 px vor „… unter einem Dach." — die erste Zeile der Ueberschrift ist
         ein blanker Textknoten, erst die zweite steckt in einem <span>. Auch
         den sieht die Messung nicht. Der margin-top der Ueberschrift ist
         nachgesehen 0 px, die Regel unten greift also.

     Eine Zahl ist ECHT und liegt nicht in dieser Datei: die 121 px vor der
     Kachel „Oeffnungszeiten". vorlagen/filiale.php 681 gibt .fil-g-text auch
     dann aus, wenn keiner seiner Teile Inhalt hat; der leere Block belegt im
     Raster von .fil-g-innen eine Zeile und kostet deren row-gap von 36,3 px
     (teil-filiale.css 84). Mit Abstandsregeln ist das nicht zu heilen —
     :empty trifft ihn nicht, er enthaelt Leerraum, und ein :has() in einem
     :has() ist ungueltig. Gehoert in die Vorlage, nicht hierher.

     Unberuehrt, zur Gegenprobe gemessen: /augenoptik/ (15943 px) und
     /impressum/ (3668 px) sind vorher und nachher Zeile fuer Zeile gleich.
     Ihre Abschnitte polstern ueber eigene Klassen (.std-rumpf, .sammel-teil,
     .recht-*), die gegen den nackten Typselektor unten gewinnen. Die Leiter
     fasst nur an, was bisher den Vorgabewert aus grund.css 238 trug.

   Diese Datei laedt als vorletzte: functions.php 57 bindet teil-*.css
   alphabetisch nach seiten.css ein. Sie braucht deshalb kein !important und
   benutzt keines; jede Regel hier steht auf derselben Spezifitaetsstufe wie
   die, die sie ersetzt, und gewinnt ueber die Reihenfolge.

   Geaendert werden nur Abstaende — margin, padding, gap. Keine Farbe, keine
   Schriftgroesse. Nichts innerhalb von .fil-kachel, .fil-buehne, .sammel-*,
   .std-stellen und nichts am Karussell; dort arbeiten andere.
   ========================================================================= */


/* ── Die Abstandsleiter ──────────────────────────────────────────────────
   Drei Stufen statt sieben Einzelwerten. Gerechnet und am 03.10.2026 im
   Browser nachgemessen:
       1512 px:  --luft-s 41,6   --luft-m 54,4   --luft-g 84,7
        940 px:  --luft-s 30,1   --luft-m 39,5   --luft-g 52,6
        375 px:  --luft-s 25,6   --luft-m 35,2   --luft-g 48,0

   --luft-g ist der Abstand ZWISCHEN zwei Abschnitten, --luft-halb die Haelfte
   davon. Jeder Abschnitt traegt die Haelfte oben und die Haelfte unten; zwei
   Nachbarn ergeben zusammen genau eine ganze Stufe. So entsteht die Naht nicht
   mehr aus der Addition zweier fremder Werte, sondern aus einer Zahl.

   --luft-s ist Kopf -> Inhalt innerhalb eines Abschnitts, genau die halbe
   grosse Stufe: naeher am eigenen Inhalt als am Nachbarn, sonst liest sich
   eine Ueberschrift als Teil des Vorigen.

   --luft-m ist die Stufe zwischen Bloecken innerhalb eines Abschnitts. Sie
   wird hier bewusst noch nicht angewandt: teil-filiale.css 72 setzt
   .fil-folge{ gap } auf 57,6 px und senkt ihn bei 430 px eigens auf 28,8 px
   ab. Der Wert liegt bereits auf der Leiter; ihn von hier aus zu ueberschreiben
   wuerde die Handy-Zeile jener Datei still ausser Kraft setzen. Wer
   teil-filiale.css als naechstes anfasst, traegt dort var(--luft-m) ein.
   ---------------------------------------------------------------------- */
:root{
  --luft-s:clamp(1.6rem,3.2vw,2.6rem);
  --luft-m:clamp(2.2rem,4.2vw,3.4rem);
  --luft-g:clamp(3rem,5.6vw,5.5rem);
  --luft-halb:calc(var(--luft-g) / 2);
}


/* ── Jeder Abschnitt, der keine eigene Polsterung hat ────────────────────
   Bewusst der nackte Typselektor, Spezifitaet (0,0,1) — genau so niedrig wie
   grund.css 238, die er ersetzt. Jede Klassenregel eines Nachbarn gewinnt
   dagegen unabhaengig von der Ladereihenfolge und bleibt unberuehrt:
   .buehne (grund.css 166), .laufband (grund.css 225, ohnehin ein <div>),
   .fil-gruppe (teil-filiale.css 81, padding:0 — die Gruppen sind
   verschachtelte <section>), .leistung-aufruf, .std-rumpf, .sammel-teil,
   .scr-band. Getroffen wird nur, was bisher den Vorgabewert trug.

   padding-block und nicht die Kurzform: grund.css 238 setzt waagerecht 0,
   und das soll es bleiben — die Gasse kommt aus .bahn (grund.css 55).
   ---------------------------------------------------------------------- */
section{ padding-block:var(--luft-halb) }


/* ── Erstes und letztes Element eines Abschnitts ─────────────────────────
   Der Abstand zwischen zwei Abschnitten kommt aus der Leiter, nicht aus dem
   Aussenabstand des ersten oder letzten Blocks darin. Ohne diese zwei Zeilen
   addiert sich beides — das ist die haeufigere Haelfte solcher Luecken. Gilt
   nur fuer die direkten Kinder der Inhaltsbahn, damit der Fliesstext darin
   seine eigenen Abstaende behaelt.
   ---------------------------------------------------------------------- */
section > .bahn > :first-child{ margin-top:0 }
section > .bahn > :last-child{ margin-bottom:0 }


/* ── Die Ueberschrift einer Kopfzeile ────────────────────────────────────
   Die groesste Einzelursache auf der Startseite. bau.css 29 gibt jedem h2 im
   .blatt margin-top:2.4em; bei 3,6rem Schriftgrad sind das gemessen 137,9 px.
   Gedacht ist die Regel fuer Ueberschriften MITTEN im Fliesstext, wo sie
   richtig ist. In einer .kopfzeile steht die Ueberschrift aber ohnehin am
   Anfang ihres Abschnitts, und der Abstand dorthin kommt schon aus der Leiter.
   Die Zeile darueber ist das Augenbraeuchen .marke, das seinen eigenen
   margin-bottom von 1,1rem mitbringt (grund.css 67) — es bleibt unberuehrt.

   Die Regel greift nicht ueber :first-child: in der .kopfzeile ist die
   Ueberschrift das ZWEITE Kind, hinter der .marke. Spezifitaet (0,1,1),
   dieselbe wie .blatt h2; sie gewinnt ueber die Ladereihenfolge.
   Gemessen 03.10.2026 auf der Startseite: siebenmal 137,9 px entfernt.
   ---------------------------------------------------------------------- */
.kopfzeile > :is(h1,h2,h3,h4){ margin-top:0 }


/* ── Die Naht unter der Buehne ───────────────────────────────────────────
   .buehne (grund.css 166) und .fil-buehne (seiten.css 16) bringen ihr eigenes
   unteres Polster mit — gemessen 64 px auf der Filialseite bei 1512 px. Der
   folgende Abschnitt legt deshalb nur eine Viertelstufe darauf; zusammen
   ergibt das wieder rund eine ganze Stufe. Die Buehne selbst wird nicht
   angefasst, dort arbeitet teil-z4-buehne.css.

   Benannt statt ueber `.buehne + section`: der Nachbarselektor haette
   Spezifitaet (0,1,1) und wuerde damit auch Abschnitte uebersteuern, die ihre
   Polsterung ueber eine eigene Klasse setzen — auf Vorlagen, die hier gar
   nicht gemessen wurden. Genannt wird nur, was gemessen ist.
   ---------------------------------------------------------------------- */
.buehne + .fil-folge-feld,
.buehne + .fil-reihe-feld{ padding-top:calc(var(--luft-g) / 4) }


/* ── Filialseite: die Naehte auf eine Stufe ──────────────────────────────
   Diese fuenf Klassen tragen bisher vier verschiedene Werte (seiten.css 40
   und 83, teil-filiale.css 71 und 152). Hier tragen sie denselben. Sie stehen
   auf derselben Spezifitaetsstufe (0,1,0) wie die Regeln, die sie ersetzen,
   und gewinnen ueber die Ladereihenfolge.
   ---------------------------------------------------------------------- */
.fil-folge-feld,
.fil-reihe-feld,
.fil-team-feld,
.fil-rest-feld,
.fil-weitere-feld{ padding-block:var(--luft-halb) }


/* ── Ueberschrift und ihr Inhalt ─────────────────────────────────────────
   „Das Team" stand 30,4 px ueber seinem Raster (seiten.css 81), „Weitere
   Filialen" 27,2 px (seiten.css 114) — waehrend die Naehte ringsum bei 85 px
   liegen. Mit der halben grossen Stufe steht die Ueberschrift messbar naeher
   an ihrem Inhalt als am Nachbarabschnitt, und beide Werte kommen aus
   derselben Leiter.
   ---------------------------------------------------------------------- */
.fil-ueberschrift{ margin-bottom:var(--luft-s) }
.fil-weitere .filialen{ margin-top:var(--luft-s) }


/* ── Leere Reste aus dem Alt-Inhalt ──────────────────────────────────────
   Am 03.10.2026 wurden 31 vollstaendig leere Absaetze auf 19 von 49 Seiten
   serverseitig entfernt. Diese Leiter darf sich weder darauf verlassen, dass
   sie weg sind, noch darauf, dass sie da sind: ein Absatz ohne Inhalt traegt
   trotzdem seinen margin-bottom von 1,15em (bau.css 28) und verschiebt damit
   jede Naht, an der er zufaellig steht. Ein leerer Absatz nimmt hier keinen
   Platz mehr ein — gefunden wird er, egal ob der naechste Alt-Inhalt wieder
   welche mitbringt.

   :is() statt einer Aufzaehlung mit Komma, damit die Stufe bei (0,0,2) bleibt
   und :empty die Entscheidung traegt, nicht der Elementname.
   ---------------------------------------------------------------------- */
:is(p,h1,h2,h3,h4,h5,h6,li,dd):empty{ margin-block:0; padding-block:0 }


/* ── Schmal ──────────────────────────────────────────────────────────────
   Die Leiter rechnet mit clamp() selbst herunter: 84,7 px bei 1512, 52,6 bei
   940, 48,0 bei 375. Ein eigener Haltepunkt ist dafuer nicht noetig und waere
   eine zweite Wahrheit neben der Leiter. Die Haltepunkte des Hauses (1660,
   940, 430) bleiben den Dateien, die Raster umstellen.
   ---------------------------------------------------------------------- */


/* ── Bewegung ────────────────────────────────────────────────────────────
   Diese Datei bewegt nichts: sie setzt ausschliesslich margin, padding und die
   vier Masse in :root. Fuer prefers-reduced-motion gibt es deshalb nichts
   abzuschalten — ein leerer Zweig waere eine Behauptung ueber Bewegung, die
   hier nicht stattfindet. Die Einblendungen gehoeren teil-scroll.css und
   teil-bewegung.css, die ihre eigene Ruhe-Regel mitbringen (geprueft
   03.10.2026: beide Dateien haben einen @media (prefers-reduced-motion:reduce)-
   Zweig).
   ---------------------------------------------------------------------- */
