/* ============================================================
   gemuese-balkon.de — Theme-Glue
   ------------------------------------------------------------
   Was hier hineingehört: WordPress-Brücken. Regeln, die es nur
   deshalb gibt, weil das Design-System in WordPress läuft und
   nicht in einer leeren HTML-Seite — Core-Kaskaden-Fallen,
   Block-Editor-Marker-Klassen, geerbte Twenty-Twenty-Five-Stile,
   Übergangsregeln für noch nicht umbenannten Altcontent.

   Was hier NICHT hineingehört: Gestaltung. Die steht vollständig
   in gb-design-system.css von Claude Design. Diese Datei existiert,
   damit jene Datei beim nächsten Sync unverändert ersetzt werden
   kann, ohne dass die Brücken mitverloren gehen.

   Lädt nach gb-design-system.css (deps-Kette in functions.php) und
   damit auch nach global-styles-inline-css.
   ============================================================ */


/* ---------- 1. Tote Twenty-Twenty-Five-Slugs auffangen ----------
   Übernommen aus der kitchencouple-Migration (Fund 26.07.2026).
   theme.json ERSETZT die Eltern-Palette, die Eltern-STYLES bleiben
   aber gemergt. Twenty Twenty-Five verweist darin auf base, contrast
   und accent-1…6 — Slugs, die unsere Palette nicht kennt. Die Verweise
   laufen ins Leere und fallen still auf currentColor zurück.

   Sichtbarste Folge bei KC: der Fokus-Rahmen auf Buttons (outline-color:
   accent-4) wurde auf hellem Grund praktisch unsichtbar — ein echter
   WCAG-2.4.7-Verstoß, der in keiner Sichtprüfung auffällt, weil man
   den Fokus-Ring nur mit der Tastatur zu sehen bekommt.

   Auf eigene Tokens mappen statt die Slugs in die Palette aufzunehmen:
   die Palette soll im Editor sauber bleiben und nur zeigen, was CDs
   System wirklich vorsieht. */
:root {
	--wp--preset--color--base:       var(--wp--preset--color--surface);
	--wp--preset--color--base-2:     var(--wp--preset--color--surface-cream);
	--wp--preset--color--contrast:   var(--wp--preset--color--ink);
	--wp--preset--color--contrast-2: var(--wp--preset--color--ink-muted);
	--wp--preset--color--contrast-3: var(--wp--preset--color--ink-soft);
	--wp--preset--color--accent-1:   var(--wp--preset--color--green-800);
	--wp--preset--color--accent-2:   var(--wp--preset--color--green-600);
	--wp--preset--color--accent-3:   var(--wp--preset--color--lime);
	--wp--preset--color--accent-4:   var(--wp--preset--color--green-700);
	--wp--preset--color--accent-5:   var(--wp--preset--color--surface-cream);
	--wp--preset--color--accent-6:   var(--wp--preset--color--ink-muted);
}


/* ---------- 2. has-text-color schlägt die gewählte Farbe ----------
   WordPress-Core-Kaskaden-Falle, bei kitchencouple am 31.07.2026 per
   CSSOM-Diagnose im Live-Browser verifiziert.

   Sobald ein Block über den Farb-Picker eine BENANNTE Preset-Textfarbe
   bekommt (z. B. has-lime-ink-color), hängt der Block-Editor IMMER
   zusätzlich die generische Marker-Klasse has-text-color an dasselbe
   Element. Das ist Gutenberg-Standardverhalten und nicht abschaltbar.
   WordPress gibt in global-styles-inline-css für BEIDE Klassen einen
   Regelsatz mit exakt gleicher Spezifität (0,1,0) UND !important aus —
   has-text-color aber NACH der benannten Klasse. Bei Gleichstand in
   Spezifität und Wichtigkeit entscheidet allein die Reihenfolge, also
   gewinnt die generische Klasse und fällt auf die Standard-Textfarbe
   zurück. Die eigentlich gewählte Farbe kommt nie an.

   ⚠️ Bei KC war das dreimal einzeln als „Fusion Builder überschreibt
   die Farbe" fehldiagnostiziert und mit Element-!important gepatcht.
   Fusion war nicht die Ursache — das Plugin klebt seine Klasse nur
   zufällig gleichzeitig auf fast jede Überschrift. Reine Korrelation.
   Wer diesen Fehler bei GB sieht, sucht bitte nicht wieder bei Avada.

   Alle Slugs außer "ink" selbst — has-text-color allein, ohne benannte
   Preset-Klasse, ist ohnehin korrekt. */
.has-green-900-color.has-text-color         { color: var(--wp--preset--color--green-900) !important; }
.has-green-800-color.has-text-color         { color: var(--wp--preset--color--green-800) !important; }
.has-green-700-color.has-text-color         { color: var(--wp--preset--color--green-700) !important; }
.has-green-600-color.has-text-color         { color: var(--wp--preset--color--green-600) !important; }
.has-green-500-color.has-text-color         { color: var(--wp--preset--color--green-500) !important; }
.has-lime-color.has-text-color              { color: var(--wp--preset--color--lime) !important; }
.has-lime-ink-color.has-text-color          { color: var(--wp--preset--color--lime-ink) !important; }
.has-orange-color.has-text-color            { color: var(--wp--preset--color--orange) !important; }
.has-orange-ink-color.has-text-color        { color: var(--wp--preset--color--orange-ink) !important; }
.has-surface-color.has-text-color           { color: var(--wp--preset--color--surface) !important; }
.has-surface-cream-color.has-text-color     { color: var(--wp--preset--color--surface-cream) !important; }
.has-surface-cream-warm-color.has-text-color{ color: var(--wp--preset--color--surface-cream-warm) !important; }
.has-surface-green-color.has-text-color     { color: var(--wp--preset--color--surface-green) !important; }
.has-surface-lime-color.has-text-color      { color: var(--wp--preset--color--surface-lime) !important; }
.has-surface-orange-color.has-text-color    { color: var(--wp--preset--color--surface-orange) !important; }
.has-ink-heading-color.has-text-color       { color: var(--wp--preset--color--ink-heading) !important; }
.has-ink-muted-color.has-text-color         { color: var(--wp--preset--color--ink-muted) !important; }
.has-ink-soft-color.has-text-color          { color: var(--wp--preset--color--ink-soft) !important; }
.has-ink-on-dark-color.has-text-color       { color: var(--wp--preset--color--ink-on-dark) !important; }
.has-link-color.has-text-color              { color: var(--wp--preset--color--link) !important; }


/* ---------- 3. Seitenrand nach CDs Staffelung ----------
   CDs Abschnitt 35b regelt den Rand über eine eigene Klasse .gb-page.
   In WordPress kommt derselbe Rand aus dem Root-Padding, weil davon auch
   alignfull/alignwide abhängen (useRootPaddingAwareAlignments). Die
   Grundstufe steht in theme.json, die Stufen brauchen Media Queries und
   damit diese Datei.

   Die Werte sind CDs, nicht neu erfunden: mobil bewusst schmal, weil
   16 px bei 390 px Schirmbreite noch 358 px Textbreite lassen — bei 40 px
   wären es 310 und die Zeile bräche mitten im Wort. */
@media (min-width: 620px) {
	:root {
		--wp--style--root-padding-left:  24px;
		--wp--style--root-padding-right: 24px;
	}
}
@media (min-width: 1024px) {
	:root {
		--wp--style--root-padding-left:  40px;
		--wp--style--root-padding-right: 40px;
	}
}


/* ---------- 4. Query-Loop im Kartenraster ----------
   ⚠️ Hier bewusst KEIN display/gap/grid-template-columns. Das gehört
   vollständig CD (Abschnitt 19 Grundregel, Abschnitt 36 Modifier).
   Eine Regel .gb-cards{…} an dieser Stelle stünde auf derselben
   Spezifität wie .gb-cards--3 (beide 0,1,0), lüde aber später — und
   würde die feste Spaltenzahl still aushebeln. Beim Schreiben dieser
   Datei genau so passiert und vor dem ersten Deploy korrigiert.

   Übrig bleiben zwei Dinge, die nur WordPress erzeugt: */

/* Core hängt dem Query-Block eine Layout-Klasse an und setzt darüber
   Abstände zwischen Geschwistern (.is-layout-flow > * + *). Im Raster
   regelt das gap — die Core-Margins kämen obendrauf und verzögen die
   Zeilenhöhe unregelmäßig, je nachdem welche Karte ein Bild hat. */
.gb-cards:where(.is-layout-flow, .is-layout-constrained) > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* ⚠️ Und derselbe Abstand noch einmal, aus einer zweiten Quelle — gefunden
   am 12.08.2026 beim Einzelbeitrag, vorhanden aber auch auf der STARTSEITE,
   seit sie gebaut wurde.

   `wp:post-template` gibt seine Karten als Listenpunkte aus. Steht das
   Raster in einem `.gb-prose`-Bereich (Startseite und Einzelbeitrag tun
   das, und aus gutem Grund — daran haengt die Ueberschriften-Typografie),
   greift `.gb-prose li { margin-bottom: 0.4em }`. Das sind 6,4 px, und die
   Regel darueber faengt sie NICHT ab: sie traegt 0,1,0 (`:where` zaehlt
   nicht mit), CDs Regel 0,1,1.

   Wirkung, gemessen: Die hoechste Karte bestimmt die Zeilenhoehe, alle
   anderen dehnen sich nur bis 6,4 px darunter. Auf der Startseite standen
   die drei Beitragskarten mit 340 / 340 / 346 px, auf dem Einzelbeitrag
   mit 339 / 339 / 345 px. Kein Umbruch, keine Verschiebung — nur drei
   Karten, deren Unterkanten nicht auf einer Linie liegen. Genau die Sorte
   Fehler, die man sieht, ohne sie zu finden.

   0,2,1 schlaegt 0,1,1. Bewusst an `.gb-cards > li` und nicht an
   `.gb-prose li` allgemein: Aufzaehlungen im Fliesstext sollen ihren
   Abstand behalten. */
.gb-prose .gb-cards > li {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Paginierung und Leer-Meldung sind Kinder des Query-Blocks und zählen
   sonst als Rasterzelle mit — sichtbar als leere Lücke neben der letzten
   Karte. Über die volle Zeile ziehen statt aus dem Raster nehmen, damit
   sie zentrierbar bleiben. */
.gb-cards > .wp-block-query-pagination,
.gb-cards > .wp-block-query-no-results {
	grid-column: 1 / -1;
}


/* ---------- 5. Video-Rahmen: Sicherheitsnetz ----------
   ⚠️ Bewusste Ausnahme von CDs Grundsatz „keine Legacy-Regeln".

   283 Videos in 160 unmigrierten Beiträgen stecken in base64-kodierten
   Fusion-Code-Blöcken und tragen dort die alte Klasse .videoWrapper.
   Diese Beiträge lassen sich nicht per Skript umbenennen — der Content
   ist kodiert. Die Brücke ist ein the_content-Filter im mu-plugin
   gb-fusion-fallback.php, der .videoWrapper auf CDs .gb-video umschreibt.

   Diese fünf Zeilen sind das Netz darunter. Sie greifen, wenn das
   mu-plugin fehlt, deaktiviert wird oder — der realistische Fall — nach
   Phase 6.2 planmäßig entfernt wird, während irgendwo noch ein Rest
   .videoWrapper liegt. Ohne sie kollabiert das Video auf Höhe 0 und der
   Beitrag sieht aus, als fehle er ganz.

   Selbsttragend formuliert: eigenes aspect-ratio, keine Abhängigkeit von
   .gb-video. Wenn diese Regel eines Tages nichts mehr trifft, kann sie
   ersatzlos weg — sie hängt an nichts anderem.
   Prüfen mit: Suche nach "videoWrapper" über alle Posts, Soll = 0. */
.videoWrapper {
	position: relative;
	aspect-ratio: 16 / 9;
	width: 100%;
	margin: var(--gb-space-lg) 0;
	max-width: var(--gb-text-max);
}
.videoWrapper > iframe,
.videoWrapper > video,
.videoWrapper > object,
.videoWrapper > embed {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}
/* Alte Padding-Hack-Varianten setzten die Höhe über ein ::before mit
   padding-top: 56.25%. Zusammen mit aspect-ratio ergäbe das doppelte
   Höhe. */
.videoWrapper::before { content: none; }


/* ---------- 5d. Nackte Trennlinie ----------
   Gehört zu den drei fusion_separator-Fundstellen, die das mu-plugin als
   <hr> ohne Klasse ausgibt.

   Warum ohne Klasse: CDs .gb-divider ist KEIN Ersatz für eine Trennlinie,
   sondern ein Bereichstrenner-Baustein mit grüner Fläche, Nummern-Badge,
   Titel und Notiz (Abschnitt 42, fünf Kindklassen). Ein <hr class="gb-divider">
   hätte einen leeren grünen Balken ergeben. Der Plan hatte diese Zuordnung
   vorgesehen — beim Nachsehen im Stylesheet widerlegt, 08.08.2026.

   Ein nacktes <hr> stylt das Design-System nicht, weil es dort schlicht
   nicht vorkommt. Diese Regel ist deshalb bewusst zurückhaltend: eine
   Haarlinie in der Randfarbe, mehr nicht. Sie gilt auch für den
   wp:separator-Block, falls in neuem Content einer gesetzt wird. */
hr,
.wp-block-separator {
	height: 0;
	border: 0;
	border-top: 1px solid var(--gb-border);
	margin: var(--gb-space-xl) auto;
	max-width: var(--gb-text-max);
}


/* ---------- 5e. Block-Markup an CDs Bausteine anpassen ----------
   CDs Entwurfsseiten sind handgeschriebenes HTML. Die Core-Blöcke geben
   dieselbe Sache leicht anders aus. Drei Stellen, an denen das auffällt —
   alle drei sind WordPress-Eigenheiten, keine Designfragen. */

/* wp:post-featured-image rendert ein <figure>, CD hatte ein <div>.
   <figure> bringt vom Browser 1em/40px Rand mit und würde die 120px-Spalte
   der Beitragszeile sprengen.

   ⚠️ .gb-card__media stand hier bis zum 11.08.2026 mit in der Liste und
   hat CDs Regel ausgehebelt — sie setzt für die Kartenfläche bewusst
   NEGATIVE Ränder (Abschnitt 19), damit das Bild bis an die Kartenkante
   läuft. Beide Regeln tragen 0,1,0, die Glue lädt später und gewann:
   Das randlose Kartenbild gab es in keiner der vier Fundstellen
   (Sorten-Hub, Ankerkarten, single.html, Startseite), ohne dass es nach
   einem Fehler aussah. Der Browser-Rand des <figure> ist hier ohnehin
   kein Thema — CDs Regel setzt alle vier Ränder ausdrücklich. */
.gb-postrow__media {
	margin: 0;
}

/* wp:post-excerpt legt den Text in ein <p> innerhalb des Block-<div>.
   Die Klasse landet am div, das line-clamp also auch — der Rand des
   inneren <p> stünde sonst zusätzlich unter der abgeschnittenen Zeile. */
.gb-postrow__text > p,
.gb-card__text > p {
	margin: 0;
}

/* wp:query-pagination-numbers schiebt einen <span>-Wrapper um die Zahlen.
   CDs Regel ".gb-pagination span" trifft ihn mit und machte aus dem Wrapper
   selbst eine 44px-Schaltfläche mit Rahmen — sichtbar als leerer Kasten
   vor den Seitenzahlen. display:contents nimmt ihn aus dem Layout, ohne
   ihn aus dem Screenreader-Baum zu entfernen. */
.gb-pagination > .wp-block-query-pagination-numbers {
	display: contents;
}

/* Core benennt den aktuellen Zustand .current und die Auslassung .dots,
   CD nennt sie __current und __gap. Beide Namen auf dieselbe Darstellung
   führen, statt am Markup zu drehen. */
.gb-pagination .page-numbers.current {
	background: var(--gb-green-800);
	border-color: var(--gb-green-800);
	color: #fff;
}
.gb-pagination .page-numbers.dots {
	border: 0;
	min-width: 24px;
	color: var(--gb-ink-muted);
	font-weight: 400;
}


/* ---------- 6. Icons im Übergang ----------
   ⏳ BEFRISTET. Entfernen, sobald das Umbenennungsskript gelaufen ist
   und eine Suche nach "gb-icon-" (einfacher Bindestrich) über alle
   Posts und Pages 0 Treffer liefert.

   Der Bestand schreibt gb-icon-calendar, CDs System erwartet
   gb-icon--calendar (zwei Bindestriche). Die Basisklasse .gb-icon trägt
   CDs Datei bereits, es fehlen also nur die ::before-Glyphen.

   ⚠️⚠️ ZWEI ZUORDNUNGEN SIND NICHT DIE NAHELIEGENDEN (gefunden 08.08.2026
   beim Öffnen von gb-fonts.css). CD hat zwei Namen neu belegt:

     Bestand              Glyphe   CDs Klasse für diese Glyphe
     gb-icon-calendar     \e953    .gb-icon--calendar-solid   (NICHT --calendar, das ist \ea5e)
     gb-icon-store        \ea4e    .gb-icon--store-front      (NICHT --store, das ist \ea5c)

   Eine stumpfe Umbenennung ein Bindestrich → zwei Bindestriche würde
   hier ein ANDERES Bild rendern. Kein Fehler, keine leere Kachel, keine
   Konsolenmeldung — einfach das falsche Icon, 34 Aktivitätsboxen weit.
   Das Umbenennungsskript muss diese beiden Fälle gesondert behandeln.
   Die Codepoints unten sind deshalb die des Bestands, nicht die der
   gleichnamigen CD-Klasse. */
.gb-icon-calendar::before    { content: "\e953"; }  /* = CDs --calendar-solid */
.gb-icon-store::before       { content: "\ea4e"; }  /* = CDs --store-front    */
.gb-icon-leaf::before        { content: "\e9f3"; }
.gb-icon-seedling::before    { content: "\ea63"; }
.gb-icon-inbox::before       { content: "\e9fe"; }
.gb-icon-hand-lizard::before { content: "\e917"; }
.gb-icon-edit::before        { content: "\e9f5"; }
.gb-icon-hands-wash::before  { content: "\ea51"; }
.gb-icon-braille::before     { content: "\ea50"; }
.gb-icon-spa::before         { content: "\ea4b"; }

/* ---------------------------------------------------------------------------
   Leitbild: --full füllt die Textbreite auch bei 800-px-Quellen
   ---------------------------------------------------------------------------
   CDs Grundregel „Bilder werden nie hochskaliert" ist richtig und bleibt für
   alle anderen Figuren gültig. Beim Leitbild führt sie aber zu einem sichtbaren
   Bruch: Die Beitragsbilder der Kräuterseiten sind 800 px breit, die Textspalte
   ist ~975 px. Sie stehen dann schmaler als das Leitbild der Nachbarseite, das
   zufällig eine 1024-px-Quelle hat — auf Salbei, Rosmarin und Lavendel gemeldet
   (Sebastian, 09.08.2026).

   Bewusst nur auf `--full` beschränkt, nicht auf `.gb-figure` allgemein: Die
   halbspaltigen Inhaltsbilder sollen weiterhin ihre Quellbreite behalten.
   Hochskaliert wird höchstens um ein Fünftel, das ist bei Fotos unkritisch.

   📮 Gehört zu CD zurück: Entweder die Regel dort aufnehmen oder eine
   Mindestquellbreite für Leitbilder festlegen.
   --------------------------------------------------------------------------- */

/* ---------------------------------------------------------------------------
   Sticky Header: die Regel gehört auf den WordPress-Wrapper, nicht auf .gb-header
   ---------------------------------------------------------------------------
   `wp:template-part {"tagName":"header"}` erzeugt SELBST ein
   <header class="wp-block-template-part"> um den eingebundenen Teil herum.
   Die eigene .gb-header-Div liegt dadurch eine Ebene TIEFER als im Mockup —
   `position: sticky` darauf bleibt wirkungslos, das Element scrollt aus dem Bild.
   Genau dieser Fund ist bei moerserwelt (05.08.2026) und kitchencouple
   (07.08.2026) dokumentiert; hier trat er zum dritten Mal auf.

   ⚠️ TAG-Selektor, nicht nur die Klasse: `.wp-block-template-part` allein träfe
   bei `tagName:"footer"` auch den Fußbereich und würde ihn mit ankleben.

   ⚠️ .gb-header behält sein `position: sticky` bewusst. GB hat BEIDE
   Rendering-Pfade: Block-Templates erzeugen den Wrapper, die
   Kompatibilitätsbrücke header.php ruft `block_template_part()` und erzeugt ihn
   NICHT — dort ist .gb-header selbst das äußerste Element. Ohne beide Regeln
   klebt der Header je nach Seitentyp mal und mal nicht; genau dieses
   Symptom-Muster war bei kitchencouple monatelang als „funktioniert auf
   /rezepte, aber nicht auf der Startseite" dokumentiert, ohne erkannte Ursache.

   Der zweite bekannte Sticky-Killer (`overflow` auf html/body) existiert hier
   nicht — geprüft am 09.08.2026, GB steht in der Referenzkonfiguration.
   --------------------------------------------------------------------------- */
header.wp-block-template-part {
  position: sticky;
  top: 0;
  z-index: 50;
}

/* ---------------------------------------------------------------------------
   Mobil: Suche, Kalender und Shop bleiben neben dem Menü-Knopf stehen
   ---------------------------------------------------------------------------
   CDs Entwurf blendet auf schmalen Viewports den kompletten `.gb-search`-Block
   aus, sodass nur der Burger übrig bleibt. Sebastian möchte die drei
   Schnellzugriffe auch mobil sehen (09.08.2026) — Reihenfolge Suche · Kalender
   · Shop · Menü, und genau so steht es bereits im Markup. Es genügt also, das
   Ausblenden zurückzunehmen; nichts wird umsortiert.

   Die Regel muss dieselbe Spezifität wie CDs Regel haben (0,2,0) und gewinnt
   über die spätere Position — die Glue-Datei lädt nach dem Design-System.

   📮 Gehört bei der nächsten größeren Design-Runde zu CD zurück: Das ist eine
   inhaltliche Entscheidung über die mobile Kopfzeile, keine Reparatur.
   --------------------------------------------------------------------------- */
@media (max-width: 1024px) {
  .gb-search:not(.gb-search--inline) { display: flex; }
}



/* Der Abschnitt „Mega-Menü: geschlossener Zustand fehlt" stand hier bis zum
   09.08.2026. Er war die Korrektur dazu, dass `.gb-nav__menu--mega` ein
   unbedingtes `display: grid` setzte und damit den geschlossenen Zustand des
   Bausteins überschrieb — alle Mega-Menüs standen dauerhaft offen.

   Claude Design hat den Befund übernommen (Antwort vom 09.08.2026, Punkt 4):
   Der Modifier setzt `display` gar nicht mehr, und die Öffnen-Regel nennt
   `--mega` jetzt ausdrücklich mit. Damit ist die Glue-Fassung gegenstandslos
   und ersatzlos entfallen. */

/* ---------------------------------------------------------------------------
   Korrekturen aus Sebastians Sichtung (09.08.2026)
   --------------------------------------------------------------------------- */


/* 2 · Mobil: Kopf-Aktionen als eine Gruppe, ohne Lücke vor dem Menü-Knopf.
   Der Abstand kam aus dem `gap` der Kopfzeile — das trennt auf dem Desktop
   Logo, Navigation und Aktionen. Mobil gibt es nur Logo und Aktionen; dort
   wirkt derselbe Wert als Lücke mitten in der Gruppe.
   Deshalb: Zeilen-`gap` klein, und die Gruppe per `margin-left:auto`
   nach rechts schieben statt über den `gap`. */
@media (max-width: 1024px) {
  .gb-header__inner { gap: 6px; }
  .gb-header__inner > .gb-search { margin-left: auto; }
  .gb-header__inner > .gb-burger { margin-left: 0; }
}


/* 4 · Rechtstexte: 62 Zeichen, linksbündig.
   ---------------------------------------------------------------------------
   ⚠️ Erster Versuch war falsch: `.gb-legal > * { max-width: 62ch }` allein
   genügt nicht. WordPress' Constrained-Layout setzt auf JEDES Kind
   `margin-left/right: auto !important`. Bei unterschiedlich breiten Kindern
   ergibt das unterschiedliche linke Kanten — kurze Überschriften rücken
   weiter ein als lange Absätze, der Text „fliegt in der Mitte"
   (Sebastians Befund 09.08.2026).

   Die Breite kommt deshalb aus `contentSize` im Template (WordPress vergibt
   dann allen Kindern dieselbe), und hier werden nur die automatischen
   Ränder zurückgenommen. Das `!important` ist unvermeidlich: Cores Regel
   trägt selbst eines, da hilft keine Spezifität.
   --------------------------------------------------------------------------- */
.gb-legal > * {
  margin-left: 0 !important;
  margin-right: auto !important;
}

/* ---------------------------------------------------------------------------
   Korrekturen aus Sebastians Sichtung (09.08.2026, zweite Runde)
   --------------------------------------------------------------------------- */


/* 6 · Suchpanel im Kopf: nicht über die volle Breite.
   `.gb-search__panel` ist `display: flex` und damit ein Blockelement — es
   zieht sich über die ganze Kopfzeile. CDs Entwurf zeigt eine kompakte
   Fläche rechts unter den Icons. */
.gb-search__panel {
  width: max-content;
  max-width: calc(100% - 2 * var(--gb-space-md));
  margin-left: auto;
}
.gb-search__icon { border: 0; width: 34px; background: transparent; }

/* 7 · Filterzeile in Blog, Archiv und Suche bleibt stehen.
   ⚠️ `top` kann nicht 0 sein wie in CDs Regel: Die Kopfzeile ist hier selbst
   sticky (z-index 50) und läge darüber.

   Erster Versuch war 60 px — die `min-height` der geschrumpften Kopfzeile.
   Das war zu knapp: `min-height` ist nicht die Boxhöhe, Polster und
   Unterkante kommen dazu. Die Leiste klebte dadurch teilweise HINTER der
   Kopfzeile und sah aus, als klebe sie gar nicht (Sebastians Befund).

   ⚠️ Zwei geratene Werte später (60 px, dann 84 px) ist klar, dass ein
   fester Wert hier NICHT stimmen kann: Die Kopfzeile schrumpft beim
   Scrollen von 72 auf 60 px Innenhöhe, Zoom und Schriftgröße verschieben
   beides zusätzlich. Zu wenig → die Leiste liegt halb hinter der
   Kopfzeile; zu viel → ein Spalt, durch den der Inhalt sichtbar
   durchscrollt (Sebastians Screenshot 09.08.2026).

   Die Kopfzeile veröffentlicht ihre GEMESSENE Höhe deshalb als
   `--gb-header-h` (gb-header.js, per ResizeObserver aktuell gehalten).
   Der Rückfallwert greift nur, solange das Skript noch nicht gelaufen ist.

   📌 Regel für jede weitere sticky Leiste: Höhe messen lassen, nicht
   schätzen. Zwei gestapelte sticky Elemente brauchen eine gemeinsame
   Quelle für die Höhe des oberen. */
.gb-filterbar--sticky { top: var( --gb-header-h, 84px ); }

/* 9 · Mega-Menü hängt rechts aus dem Bild.
   ---------------------------------------------------------------------------
   `.gb-nav__item` ist `position: relative`, das Menü hängt also am
   MENÜPUNKT und wächst von dessen linker Kante nach rechts. Bei „Sorten"
   und „Zubehör" — beide weit rechts, das Menü bis 720 px breit — läuft es
   dadurch aus dem Fenster (Sebastians Befund 09.08.2026).

   CD hat dafür `.gb-nav__menu--right` vorgesehen. Der Modifier hilft hier
   aber nicht: Welcher Punkt „zu weit rechts" ist, hängt von der
   Fensterbreite ab — das kann weder das Stylesheet noch der Renderer
   zuverlässig wissen.

   Deshalb der Anker eine Ebene höher: Breite Mega-Menüs hängen an der
   NAVIGATIONSLEISTE statt am einzelnen Punkt und klappen von deren rechter
   Kante nach links auf. Diese Kante liegt immer im Bild, weil die Leiste
   selbst im Bild liegt. Nebeneffekt: Alle Mega-Menüs beginnen auf derselben
   Höhe, statt je nach Punkt zu springen.

   Die schmalen Dropdowns (Kräuter, Anbauen ohne Enkel) bleiben an ihrem
   Punkt — sie passen ohnehin.

   📮 Gehört zu CD: `--right` löst das Problem nicht, weil es eine feste
   Entscheidung für einen beweglichen Fall ist.
   --------------------------------------------------------------------------- */
.gb-nav { position: relative; }
.gb-nav__item:has(> .gb-nav__menu--mega) { position: static; }
.gb-nav__menu--mega { left: auto; right: 0; }

/* 10 · Hover-Brücke gehört an den Menüpunkt, nicht ans Menü.
   ---------------------------------------------------------------------------
   `.gb-nav__menu` hat `margin-top: 6px`. Der Abstand gehört zur Gestaltung,
   ist aber toter Raum: Überquert ihn die Maus, ist sie weder über dem
   Menüpunkt noch über dem Menü, `:hover` fällt weg und das Menü schließt.
   Derselbe Fund wie bei moerserwelt.

   ⚠️ Erster Versuch lag daneben: Die Brücke saß als `::before` AM MENÜ und
   war damit so breit wie dieses. Seit die Mega-Menüs an der
   Navigationsleiste hängen, sind das bis zu 720 px — ein breiter
   unsichtbarer Streifen unter der halben Leiste, der beim Vorbeifahren
   fremde Menüs offen hielt und den Zustand flackern ließ
   („die Nav-Bar vibriert", Sebastian 09.08.2026).

   Richtig ist die Brücke am LINK: genau so breit wie der Menüpunkt, direkt
   unter ihm, und sie kann keinen anderen Punkt beeinflussen.
   --------------------------------------------------------------------------- */
.gb-nav__link { position: relative; }
.gb-nav__link::after {
  content: "";
  position: absolute;
  left: 0; right: 0;
  top: 100%;
  height: 10px;
}

/* 11 · Bildlaufleiste darf die Breite nicht ändern.
   ---------------------------------------------------------------------------
   Das aufgeklappte Mega-Menü ist absolut positioniert und rund 500 px hoch.
   Absolut positionierte Elemente zählen trotzdem zur scrollbaren Fläche —
   auf einer kurzen Seite erscheint dadurch beim Öffnen eine vertikale
   Bildlaufleiste. Die nimmt Breite weg, die Kopfzeile rückt, der Zeiger
   verliert den Menüpunkt, das Menü schließt, die Leiste verschwindet, der
   Zeiger trifft wieder — eine Rückkopplung, die als Flackern sichtbar wird
   („die Nav-Bar vibriert", Sebastian 09.08.2026).

   `scrollbar-gutter: stable` reserviert den Platz dauerhaft. Damit ändert
   sich die Breite beim Erscheinen der Leiste nicht mehr, und die
   Rückkopplung kann gar nicht entstehen.

   ⚠️ Bewusst NICHT `overflow: hidden` auf html oder body — das ist der
   zweite dokumentierte Sticky-Killer (kitchencouple 07.08.2026) und würde
   Kopfzeile und Filterzeile lahmlegen.
   --------------------------------------------------------------------------- */
html { scrollbar-gutter: stable; }


/* Die Abschnitte 13–17 standen hier bis zum 09.08.2026: Shop-Rasterbreite,
   Sprungziele, Abstände, gleiche Kartenhöhen, Mega-Menü als Spaltensatz.
   Claude Design hat alle fünf ins Design-System übernommen (Antwort vom
   09.08.2026, Abschnitt B) — sie sind hier ersatzlos entfallen.

   Die letzte verbliebene Mega-Menü-Zeile — Aufklappen auf `display: block`
   statt `grid` — ist am 09.08.2026 ebenfalls entfallen, nachdem CD sie ins
   Design-System übernommen hat (Fassung aus Zip 7, gemessen: `.gb-calnow`
   und `.gb-nav__item:focus-within .gb-nav__menu--mega { display: block }`
   sind drin).

   ⚠️ CD deklariert `--gb-header-h: 72px` fest in `:root`. Unser
   gb-header.js schreibt den gemessenen Wert als Inline-Stil auf das
   Wurzelelement — Inline schlägt Stylesheet, der gemessene Wert gewinnt
   also weiterhin. Das ist Absicht: 72px ist geraten, gemessen war die
   Kopfzeile bisher nie genau so hoch. */



/* 19 · Das Beitragsbild einer Hub-Seite nimmt die volle Textbreite.
   Auf den Anbau-Seiten ist das Bild ein Leitbild neben dem Steckbrief und
   bewusst schmal. Auf einer Hub-Seite steht es allein über dem Katalog —
   dort wirkt eine halbe Breite wie ein Platzhalter, der nicht fertig geladen
   hat. Gleiche Begründung wie CDs `.gb-figure--full`, nur an der Stelle, an
   der das Blocktemplate das Bild ausgibt.
   📮 Zu CD: Entwurf 06 und 10 zeigen kein Beitragsbild — offen, ob es dort
   überhaupt vorgesehen ist. */
.gb-pagehead + .wp-block-post-featured-image,
.wp-block-post-featured-image.gb-figure {
  max-width: var(--gb-text-max);
}
.wp-block-post-featured-image.gb-figure img { width: 100%; height: auto; }


/* Die Abschnitte 14–18 und 20 standen hier bis zum 09.08.2026: der
   Monatskopf-Selektor, `.gb-callead`, das Icon in der Überschrift, die
   Suchfeldbreite in `.gb-filterbar`, `.gb-hubselect` und die Fluss-Fassung
   von Umschalter und Trefferzahl.

   Claude Design hat alle sechs übernommen (Antwort vom 09.08.2026, Zip 8) —
   sie sind hier ersatzlos entfallen. Vor dem Löschen gegengemessen: alle
   neun Marker sind in der neuen Fassung vorhanden, und die beiden toten
   Selektoren (`.gb-calbar__cell`, `.gb-months > [aria-current]`) sind dort
   gestrichen statt korrigiert.

   ⚠️ Zwei Änderungen am Markup gehören dazu, nicht nur der Wegfall:
   · Die Fluss-Fassung trägt jetzt CDs Modifier `--flow` an den Elementen
     selbst statt unserer Wrapper-Klasse `.gb-hubflow`. Ohne Wrapper bleibt
     auf breiten Fenstern auch keine leere Zeile stehen.
   · Der Erklärtext am Auswahlfeld ist `.gb-hubselect__hint` statt
     `.gb-card__meta`.

   Geblieben ist Abschnitt 19 (Beitragsbild) — dazu hat CD nichts gesagt. */

/* Die Abschnitte 21 und 22 standen hier bis zum 09.08.2026: die
   Spezifitäts-Korrekturen für `.gb-viewtoggle--flow` und `.gb-tag--soft`,
   beides Modifier, die vor ihrem Baustein standen und deshalb nichts taten.

   Claude Design hat beide behoben (Antwort vom 09.08.2026) — `.gb-tag` ist
   jetzt nur noch einmal definiert, und beide Modifier stehen hinter ihrem
   Baustein. Gegengemessen mit `scripts/css-modifier-vor-baustein.php`:
   0 akute, 0 latente Fälle im ganzen Stylesheet.

   ⚠️ Die Prüfung gehört vor jeden Stylesheet-Tausch, nicht nur nach einer
   Meldung. Dieser Fehlertyp erzeugt kein Symptom: `.gb-tag--soft` stand
   fünf Runden lang im Katalog, in den Vorlagen und in der Übergabe — nur
   nicht auf dem Bildschirm. */


/* Neun Abschnitte standen hier bis zum 11.08.2026 und sind mit CDs Runde 13
   ersatzlos entfallen — Claude Design hat alle neun ins System genommen:

     .gb-activity-Krücke · .gb-kalauszug .gb-calmonths · .gb-keyfacts--2
     .gb-card--soft · .gb-figure--full img · .gb-shopnav top
     .gb-burger:hover · list-style-Reset · die drei klebenden Leisten

   ⚠️ Zwei davon brauchten eine Markup-Änderung, nicht nur den Wegfall:
   · `.gb-activity` ist jetzt umgekehrt herum gebaut. Grundform ist der
     LISTENEINTRAG ohne Fläche, der Hinweiskasten trägt `--kasten`. Der
     häufige Fall kommt ohne Modifier aus — richtig so, aber es heißt, dass
     jeder bestehende Tipp-Kasten den Modifier bekommen muss.
   · Der Kalenderauszug trägt `.gb-calmonths--fest` statt unserer
     Kontextregel.

   Geblieben sind zwei Einträge, die CD ausdrücklich bei uns lässt: die
   mobile Kopfzeile (Entscheidung, keine Rückfrage mehr) und die Ausrichtung
   breiter Mega-Menüs an der Navigationsleiste. */
/* ---------------------------------------------------------------------------
   Startseite (11.08.2026)
   --------------------------------------------------------------------------- */

/* Fünf Regeln standen hier am 11.08.2026 und sind mit CDs Runden 20 und 21
   ersatzlos entfallen — Claude Design hat alle fünf ins System genommen:

     Runde 20  .gb-card--featured · .gb-prose .gb-stage__title
               .gb-eyebrow + h1/h2/h3
     Runde 21  .gb-card--featured .gb-card__icon · .gb-card--phase

   Zwei Dinge, die dabei über den Einzelfall hinausgehen:

   · Der Rahmenwert der hervorgehobenen Karte hat ein Token bekommen,
     `--gb-border-card-strong`. ⚠️ Nicht mit `--gb-border-strong`
     verwechseln, das ist das Grau für Formular-Bedienelemente.
   · Die weiße Icon-Kachel ist bei CD keine Ausnahme, sondern eine Regel:
     Auf getönter Kartenfläche kehrt sich die Kachel um — weiße Fläche,
     grünes Icon. Wer später einen weiteren tönenden Modifier baut,
     braucht dieselbe Zeile.

   Geblieben ist der eine Eintrag unten: eine WordPress-Brücke, die per
   Definition hierher gehört und nicht ins Design-System. */

/* Kartenraster im Query Loop: Die Rasterklasse sitzt auf `wp:post-template`
   und damit auf dem `<ul>`, das Core ausgibt (front-page.html). Core setzt
   dort eigene Aussenraender — im Raster regelt das `gap`. Gleiche
   Spezifitaet, Core laedt frueher; sicherheitshalber trotzdem benannt,
   weil die Ladereihenfolge von Core-Blockstilen nicht garantiert ist. */
ul.gb-cards.wp-block-post-template {
	margin: var(--gb-space-lg) 0;
	padding: 0;
	list-style: none;
}

/* ---------------------------------------------------------------------------
   Vier Zwischenloesungen vom 11.08.2026 sind hier ERSATZLOS entfallen
   ---------------------------------------------------------------------------

   Claude Design hat alle vier am selben Tag ins System genommen, zwei davon in
   einer weiter reichenden Fassung (Antwort „drei Luecken", Runde 23):

     AAWP-Bestsellerraster   -> `.aawp-grid` haelt jetzt selbst bei 3/2/1
                                Spalten, `minmax(260px, 1fr)`, `margin-inline: 0`,
                                und die horizontale Box im Raster stapelt.
                                Der Deckel greift ueber
                                `:not([class*="aawp-grid--col-"])`.
     Bilder ohne Huelle      -> `img { max-width: 100%; height: auto; }` steht
                                jetzt in Abschnitt 7, ohne Praefix, ohne
                                !important.
     Oberkanten im Raster    -> `.gb-split:not(.gb-split--flow) > *` statt nur
                                `> .gb-figure`. CDs Begruendung: Ein Raster
                                verspricht buendige Oberkanten; dass es
                                `.gb-figure` getroffen hat, war Zufall der
                                Fundstelle.
     Aufkleber in der Liste  -> Der Bandzettel laeuft in `--list` jetzt im Fluss
                                mit (`position: static`) statt absolut. Mein
                                `padding-top: 34px` haette Platz fuer etwas
                                reserviert, das gar nicht mehr schwebt.

   ⚠️ Wer eine dieser Regeln hier wieder einbaut, ueberschreibt die
   Systemfassung mit einer aelteren. Der Glue laedt NACH dem Design-System. */

/* Die Zwischenloesung `html body .gb-split > .gb-figure img { width: 100% }`
   stand hier am 11.08.2026 und ist mit CDs Runde 24 ersatzlos entfallen —
   sie steht jetzt als `.gb-split > .gb-figure img` im System (Abschnitt 8,
   direkt hinter den `.gb-figrow`-Bildregeln).

   ⚠️ CDs Pruefbitte dazu gehoert in die Arbeitsweise, nicht in diese Datei:
   Entsteht eine neue Bildhuelle, gehoert die Frage dazu, welche der drei
   Bildregeln sie braucht — `width: 100%`, `margin-block: 0`, Zuschnitt. Zwei
   davon stehen inzwischen allgemein (`img { max-width: 100% }`,
   `.gb-split > * { margin-block: 0 }`); die dritte laesst sich NICHT
   allgemein setzen, weil `width: 100%` im Fliesstext jedes kleine Bild
   aufblaesen wuerde. Das war die dritte Auslassung derselben Bauart. */


/* ---------------------------------------------------------------------------
   20 · Kommentarkopf: WordPress' Flusslayout aus der Kopfzeile nehmen
   ---------------------------------------------------------------------------

   `.gb-comment__head` ist bei CD ein Flex-Container mit `align-items:
   baseline` und eigenem `gap`. Im Blocktemplate ist er eine `wp:group` — und
   Core haengt jeder Gruppe seine Layoutklasse an. `is-layout-flow` setzt auf
   jedes Kind ausser dem ersten `margin-block-start`, also einen oberen Rand.
   In einer Zeile mit `align-items: baseline` schiebt der Datum und
   Antwort-Link nach unten: eine Kopfzeile, deren drei Teile auf drei Hoehen
   stehen.

   Dieselbe Stelle, dieselbe Begruendung wie Abschnitt 4 beim Kartenraster —
   der Abstand kommt aus `gap`, nicht aus Raendern.

   ⚠️ Bewusst NICHT ueber `{"layout":{"type":"flex"}}` im Template geloest.
   Core erzeugt dafuer eine eigene Container-Klasse mit eigenem `gap` und
   `align-items: center`, gleiche Spezifitaet wie CDs Regel — welche gewinnt,
   haengt dann an der Ladereihenfolge im Kopf. Das ist genau die Sorte
   Abhaengigkeit, die spaeter niemand mehr findet. */
.gb-comment__head:where(.is-layout-flow, .is-layout-constrained) > * {
	margin-block-start: 0;
	margin-block-end: 0;
}


/* ---------------------------------------------------------------------------
   21 · Die Teilen-Leiste steht am Ende der Metazeile
   ---------------------------------------------------------------------------

   In CDs Entwurf 02 steht `margin-left:auto` inline am `.gb-share` der
   Beitrags-Metazeile. Ueberall sonst waere das falsch — die Leiste kommt in
   Vorlage 13 auch im Fussbereich vor, dort ohne Schub nach rechts. Die Regel
   gehoert also an die Kombination, nicht an `.gb-share`.

   📮 Zu CD: gehoert vermutlich als `.gb-post__meta .gb-share` ins System,
   Abschnitt 17 — hier steht sie nur, weil sie im Entwurf inline stand. */
.gb-post__meta .gb-share { margin-left: auto; }


/* ---------------------------------------------------------------------------
   22 · Kommentarformular: WordPress' Absatz-Huellen an CDs Raster anpassen
   ---------------------------------------------------------------------------

   CDs Entwurf 02 zeigt `.gb-form` als Raster mit Beschriftung und Feld als
   direkten Kindern. WordPress liefert jedes Feld in einer eigenen
   `<p class="comment-form-…">`-Huelle aus. Damit landen zwischen Raster und
   Feld zwei Ebenen, die CD nicht kennt:

     · der Absatz bringt seinen Browser-Standardrand mit (1em oben und unten),
       der zum `gap` des Rasters hinzukommt — die Zeilen stehen zu weit
       auseinander, und zwar ungleichmaessig;
     · das Feld ist kein Rasterkind mehr und dehnt sich nicht auf die
       Spaltenbreite. `size="30"` gewinnt, und in der dreispaltigen Zeile
       stehen drei zu schmale Felder mit Luecke dahinter.

   ⚠️ `.gb-form__field` ist genau diese Bruecke — und hatte bis zum
   12.08.2026 keine einzige Regel. Die Klasse stand im Markup, sah nach
   Design-System aus und tat nichts; `klassen-abdeckung.php` hat sie als
   „Modifier ohne Regel" gemeldet. Sie ist damit derselbe Fall wie
   `gb-related`, das im selben Lauf auffiel.

   📮 Zu CD: Das Markup steht so nicht im Entwurf, weil es aus WordPress
   kommt und nicht aus dem Inhalt. Die Regeln gehoeren deshalb hierher. */
.gb-form p { margin: 0; }
.gb-form__field > p,
.gb-form > .comment-form-comment {
	display: grid;
	gap: 4px;
}
.gb-form input[type="text"],
.gb-form input[type="email"],
.gb-form input[type="url"],
.gb-form textarea {
	width: 100%;
}

/* Die Einwilligungs- und Abo-Kaestchen liefert WordPress bzw. Jetpack als
   Absatz mit Kaestchen und Beschriftung nebeneinander. CDs `.gb-form__check`
   ist genau diese Form; die Klasse laesst sich hier aber nicht setzen, weil
   das Markup aus dem Plugin kommt. */
.gb-form .comment-form-cookies-consent,
.gb-form .comment-subscription-form {
	display: flex;
	align-items: flex-start;
	gap: var(--gb-space-xs);
}
.gb-form .comment-form-cookies-consent label,
.gb-form .comment-subscription-form label {
	font-weight: 400;
	color: var(--gb-ink-muted);
	font-size: var(--gb-text-sm);
}
.gb-form .comment-form-cookies-consent input[type="checkbox"],
.gb-form .comment-subscription-form input[type="checkbox"] {
	width: 18px;
	height: 18px;
	margin-top: 2px;
	flex: none;
	accent-color: var(--gb-green-700);
}


/* ---------------------------------------------------------------------------
   23 · Autorenbox: Innenabstand in die Breite einrechnen
   ---------------------------------------------------------------------------

   `.gb-author` traegt `max-width: var(--gb-text-max)` und `padding:
   var(--gb-space-md)`, aber kein `box-sizing`. Ohne das kommt der
   Innenabstand AUF die Hoechstbreite obendrauf: gemessen 1015 statt 975 px,
   also 20 px Ueberstand nach jeder Seite. Sichtbar als eine Box, die als
   einzige aus der Textspalte herausragt.

   In CDs Entwurf faellt das nicht auf, weil die Box dort `max-width:none`
   traegt und die Demo-Flaeche die Breite vorgibt.

   ⚠️ Es gibt in diesem Stylesheet kein globales `box-sizing: border-box` —
   jeder Baustein setzt es selbst (`.gb-card`, `.gb-btn`, die Formularfelder
   und acht weitere). `.gb-author` ist der Baustein, bei dem es fehlt.

   📮 Zu CD: gehoert in Abschnitt 17 an `.gb-author` selbst. */
.gb-author { box-sizing: border-box; }


/* ---------------------------------------------------------------------------
   24 · Die Abschlussabschnitte des Beitrags stehen eine Stufe leiser
   ---------------------------------------------------------------------------

   In Entwurf 02 tragen „Ähnliche Beiträge" und „Tipps und Tricks vom
   Gemüse-Balkon" inline `font-size:1.5rem` — dieselbe Stufe wie
   `.gb-comments__title` direkt darueber, und eine Stufe unter den H2 des
   Beitragstextes (2rem). Das ist eine Rangfolge, keine Zufaelligkeit: Der
   Beitrag hoert auf, und was danach kommt, meldet sich leiser.

   ⚠️ Warum es hier ueberhaupt eine Regel braucht: Die beiden Abschnitte
   stehen im Template in einem `.gb-prose`-Bereich — anders bekaemen ihre
   Ueberschriften ueberhaupt keine Typografie (siehe Kommentar in
   `single.html`). Damit greift aber `.gb-prose h2` mit 2rem.

   ⚠️ Auf der STARTSEITE gilt das ausdruecklich NICHT: In Entwurf 05 sind
   „Wo möchtest du starten?" und „Letzte Beiträge" nackte H2 ohne
   Groessenangabe, also 2rem. Deshalb haengt die Regel an einer eigenen
   Klasse und nicht an `.gb-section h2`.

   📮 Zu CD: Der Baustein hat im System keinen Namen — im Entwurf steht die
   Groesse zweimal inline. `gb-posttail` ist ein Vorschlag. */
.gb-posttail h2 { font-size: var(--gb-h3); }


/* ---------------------------------------------------------------------------
   25 · „Schreibe einen Kommentar" — die Ueberschrift des Formulars
   ---------------------------------------------------------------------------

   WordPress gibt sie als `<h3 id="reply-title" class="comment-reply-title">`
   aus, mit einem `<small>` fuer „Antwort abbrechen" darin. Sie steht damit
   ausserhalb von `.gb-prose` und ausserhalb jeder Regel des Design-Systems:
   gemessen am 12.08.2026 mit 36 px in der Grundschrift des Browsers, mitten
   in einem sonst durchgestalteten Kommentarbereich — groesser als die
   Ueberschrift des Beitragstextes daneben.

   CDs Entwurf 02 zeigt sie als `.gb-comments__title` in 1,25rem, also eine
   Stufe unter der Ueberschrift „5 Kommentare" darueber. Genau das steht
   hier; die Klasse selbst laesst sich nicht setzen, das Markup kommt aus
   dem Core.

   📮 Zu CD: derselbe Fall wie das Formular-Markup in Abschnitt 22 — das
   Element kommt aus WordPress, nicht aus dem Inhalt. */
.gb-comments .comment-reply-title {
	font-family: var(--gb-font-heading);
	font-weight: 700;
	font-size: var(--gb-h4);
	line-height: 1.3;
	color: var(--gb-ink-heading);
	margin: var(--gb-space-lg) 0 var(--gb-space-xs);
}
.gb-comments .comment-reply-title small {
	font-family: var(--gb-font-body);
	font-weight: 400;
	font-size: var(--gb-text-xs);
	margin-left: var(--gb-space-xs);
}
