/* ==========================================================================
   Silbentrennung fuer Fliesstext-Absaetze: verhindert grosse Luecken am
   Zeilenende bei langen Woertern (z.B. Fachbegriffe wie "Querfoerderschnecke").
   hyphens:auto verlaesst sich auf lang="de-DE" im <html>-Tag (setzt WordPress
   automatisch ueber get_language_attributes()), damit der Browser die
   deutschen Trennregeln anwendet.
   ========================================================================== */
p {
	hyphens: auto;
	-webkit-hyphens: auto;
	overflow-wrap: break-word;
}

/* ==========================================================================
   <strong>/<b> global auf "SemiBold" (600) statt Browser-"Bold" (700):
   sowohl in Ueberschriften (manche Patterns haben Ueberschriften-Text in
   <strong>/<b> gewrappt, echtes HTML-Markup, kein CSS) als auch im
   Fliesstext (Absaetze, Tabellenzellen, Listen - z. B. die technischen
   Datentabellen in patterns/mobile-fuetterung.php). Vorher war das
   uneinheitlich: Ueberschriften standen bereits auf 600, Fliesstext hatte
   gar keine Regel und fiel auf Browser-Bold (700) zurueck - bei Inter
   fehlt fuer 700/normal sogar die Schriftdatei (siehe assets/fonts.css),
   wodurch der Browser dort zusaetzlich synthetisch fett oder auf
   ExtraBold auswich. 600 ist bei Open Sans UND Inter ein echter, eigener
   Schriftschnitt (nicht vom Browser simuliert). Wirkt automatisch auch
   auf bereits gespeicherte Seiten, ohne dass Bloecke dort neu eingefuegt
   werden muessen.
   ========================================================================== */
strong, b {
	font-weight: 600;
}

/* ==========================================================================
   Feature-Icons: runder grüner Container, wie im Original (sow-icon-container)
   ========================================================================== */
.grundmann-icon-circle {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--primary-light);
	margin: 0 auto 8px auto;
}

.grundmann-icon-circle svg {
	width: 40px;
	height: 40px;
	color: var(--wp--preset--color--primary);
}

/* Kontakt-CTA-Block (parts/kontakt.html): Icon-Kreis ohne Hintergrundflaeche,
   nur das reine Icon-Umriss-Symbol - bewusste Abweichung von der sonst
   ueberall im Theme verwendeten gruenen .grundmann-icon-circle-Optik, nur
   fuer diesen einen Kontext. Basisklasse selbst bleibt unveraendert. */
.grundmann-kontakt .grundmann-icon-circle {
	background-color: transparent;
}

/* Feature-Text im Original zentriert unter dem Icon */
.grundmann-feature {
	text-align: center;
}

/* Abstand zwischen Feature-Headline (h4) und Beschreibungstext verringern
   (Standard-Block-Spacing aus theme.json ist hier zu groß). */
.grundmann-feature h4 {
	margin-top: 8px;
	margin-bottom: 4px;
}

.grundmann-feature__text {
	margin-top: 0;
}

/* ==========================================================================
   Kategorie-Badge: kleines Label oberhalb der Produkt-Überschrift zur
   Einordnung in die Produktkategorie (z. B. "Fütterungstechnik").
   ========================================================================== */
.grundmann-category-badge__text {
	margin: 0 0 8px 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--text-dark);
}

/* ==========================================================================
   Freistehendes Icon ohne Kreis-Hintergrund (z. B. CTA-Bereich).
   Im Original hat dieses Icon KEINEN "sow-container-round" Kreis wie die
   Feature-Icons, sondern steht frei/größer.
   ========================================================================== */
.grundmann-icon-plain {
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 auto 16px auto;
}

.grundmann-icon-plain svg {
	width: 40px;
	height: 40px;
	color: var(--wp--preset--color--primary);
}

/* ==========================================================================
   Card: weißer Kasten mit Schatten + Radius (aus "panel-widget-style"
   #panel-2286-0-0-0 im Original). Umschließt im Original den GESAMTEN
   Inhaltsblock einer Produktseite (Hero + Features + Funktionsprinzip/
   Technische Daten), nicht nur die Hero-Textspalte.
   ========================================================================== */
/* Nur die "normale" Card (nicht die Style-Variante "Ohne Kasten-Optik")
   bekommt Kasten-Optik (weisser Hintergrund, Radius, Schatten, Innenabstand).
   Die Style-Variante "Ohne Kasten-Optik" (is-style-grundmann-card-plain,
   registriert in functions.php) uebernimmt NUR die Spalten-Struktur/-Gaps
   weiter unten, aber keine sichtbare Kastenform - fuer Startseiten-
   Abschnitte im Card-Look (Text/Bild-Hero + Feature-Icon-Zeile), die im
   Original-Design direkt auf der Sektionsflaeche liegen. */
.grundmann-card:not(.is-style-grundmann-card-plain) {
	background-color: #ffffff;
	border-radius: 6px;
	padding: 42px;
	box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15);
	/* Eigene, von der umgebenden Section-Hintergrundfarbe unabhaengige
	   Textfarbe (z. B. is-style-grundmann-bg-primary/-dark setzen color:
	   white auf dem ganzen Abschnitt) - eine weisse Karte ist immer eine
	   eigene "Insel" mit dunklem Text, unabhaengig vom Abschnitt drumherum. */
	color: var(--wp--preset--color--text-dark);
}

@media (max-width: 781px) {
  .grundmann-card {
     padding: 15px !important;
  }
  .grundmann-card > .wp-block-columns {
    row-gap: 32px;
  }
}

/* Abstand zwischen Textspalte (links) und Bildspalte (rechts) im Hero.
   Als eigene CSS-Regel statt Inline-Style im Pattern-Markup, damit die
   Aenderung auch auf bereits gespeicherten Seiten wirkt, ohne dass der
   Block dort neu eingefuegt werden muss. Gilt fuer beide Card-Varianten
   (normal UND "Ohne Kasten-Optik"), da der Selektor auf die gemeinsame
   Basisklasse .grundmann-card zielt, nicht auf eine der beiden Varianten. */
.grundmann-card > .wp-block-columns {
	column-gap: 48px;
}

/* Spaltenabstand im Absprung-Block (grundmann/related-products), analog
   zum Hero-Kartenabstand oben. Als eigene CSS-Regel statt eines blockGap-
   Style-Attributs am core/columns-Block, damit Attribut (JSON-Kommentar)
   und sichtbares HTML deckungsgleich bleiben (siehe
   custom-blocks-troubleshooting.md, "ungueltiger Inhalt"). */
.grundmann-related-products__inner > .wp-block-columns {
	column-gap: 24px;
	row-gap: 24px;
}

/* Gleicher 24px/24px-Abstand wie im Absprung-Block oben, aber fuer die
   zweite (und jede weitere) Columns-Zeile INNERHALB einer Card - z.B. die
   Feature-Icon-Zeile unter dem Hero, sowohl bei der normalen Card als auch
   bei der Style-Variante "Ohne Kasten-Optik" auf der Startseite. */
.grundmann-card > .wp-block-columns:not(:first-of-type) {
	column-gap: 24px;
	row-gap: 24px;
}

/* ==========================================================================
   Tabellen: Zellenumrandung entfernen (WordPress-Core setzt standardmaessig
   einen 1px-Rahmen um jede Zelle). Ueberschreibt gezielt das Core-Stylesheet,
   damit es auf allen Seiten (auch bereits gespeicherten) automatisch wirkt.
   ========================================================================== */
.wp-block-table td,
.wp-block-table th {
	border: none !important;
	padding: 6px 0 !important;
}

/* ==========================================================================
   Etwas mehr Abstand zwischen den beiden Zeilen im Kontakt-CTA-Absatz
   ("Fuer weitere Informationen..." / "Wir freuen uns..."). Angesprochen
   ueber den strukturellen Anker ".grundmann-icon-circle + p" (der Absatz
   direkt nach dem freistehenden Message-Icon im CTA-Block) statt einer
   neuen Klasse im Pattern-Markup - so wirkt die Regel auch auf bereits
   gespeicherte Seiten, ohne dass dort etwas neu eingefuegt werden muss.
   Alle <br> innerhalb dieses Absatzes werden zu Blockelementen mit Abstand;
   .grundmann-icon-circle wird auch bei Feature-Icons verwendet, dort folgt
   aber immer ein h4, kein p - keine Kollision.
   ========================================================================== */
.grundmann-icon-circle + p br {
	display: block;
	content: "";
	margin-top: 6px;
}

/* ==========================================================================
   Info-Box: fuer den grundmann/technical-data-box Block
   (z. B. "Technische Daten" neben dem Fliesstext).
   ========================================================================== */
.grundmann-technical-data-box {
	background-color: var(--wp--preset--color--primary-light);
	color: var(--wp--preset--color--primary);
	border-radius: 6px;
	border: 1px solid var(--wp--preset--color--primary);
	padding: 20px 25px;
}

@media screen and (max-width: 600px) {
  .grundmann-technical-data-box {
    padding: 10px 15px !important;
  }
}

/* ==========================================================================
   Produktkarten ("Weitere Biogastechnik" etc.): weißer Kasten mit dezentem
   Schatten + abgerundeten Ecken, wie im Original ("product-card"-Klasse,
   die aus einem externen, nicht mitgelieferten Stylesheet stammt - hier
   anhand des Screenshots der Live-Seite nachgebaut).
   ========================================================================== */
.grundmann-product-card {
	background-color: #ffffff;
	border-radius: 12px;
	padding: 20px;
	box-shadow: 0 4px 18px rgba(0, 0, 0, 0.08);
	height: 100%;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	/* Eigene, von der umgebenden Section-Hintergrundfarbe unabhaengige
	   Textfarbe (z. B. is-style-grundmann-bg-primary/-dark setzen color:
	   white auf dem ganzen Abschnitt) - eine weisse Karte ist immer eine
	   eigene "Insel" mit dunklem Text, unabhaengig vom Abschnitt drumherum. */
	color: var(--wp--preset--color--text-dark);
}

.grundmann-product-card .wp-block-image {
	margin-bottom: 20px;
}

.grundmann-product-card .wp-block-image img {
	border-radius: 8px;
	width: 100%;
}

.grundmann-product-card h4 {
	color: var(--wp--preset--color--primary);
	font-size: 1.375rem;
	font-weight: 700;
	margin: 0 0 10px 0;
	line-height: 1.375;
}

.grundmann-product-card p {
	margin: 0 0 10px 0;
	line-height: 1.7;
}

.grundmann-product-card__subheadline {
	font-weight: 600;
}

/* ==========================================================================
   Hintergrund-Varianten für Abschnitte: die frueheren core/group-
   Block-Styles (is-style-grundmann-bg-weiss/grau/svg/gruen/dunkelgrau)
   wurden entfernt. Jeder Abschnitt ist jetzt ein core/cover-Block mit
   den nativen Cover-Optionen "Hintergrund: Farbe" (Theme-Preset-Farbe,
   dimRatio 100) bzw. "Hintergrund: Bild" (Mediathek-Bild + Overlay-
   Farbe/-Deckkraft) - kein eigenes CSS mehr noetig, core/cover bringt
   die Hintergrunddarstellung selbst mit. Dunkle Farbvarianten (z. B.
   Primary/Dunkelgrau) setzen ueber core/cover's isDark-Verhalten bzw.
   die eigene Textfarbwahl im Editor automatisch helle Schrift - siehe
   claude/hintergrund-varianten-abschnitte.md fuer den Nachtrag zur
   Umstellung. */

/* Block-Style-Variante "Bild gespiegelt (horizontal)" (is-style-grundmann-
   cover-flip-h, registriert in functions.php via register_block_style auf
   core/cover): spiegelt NUR das eigentliche Hintergrundbild, NICHT den
   Cover-Inhalt (Ueberschrift/Text/Buttons in .wp-block-cover__inner-
   container) und NICHT die Overlay-Farbflaeche. WICHTIG: das Bild liegt in
   core/cover als eigenes <img class="wp-block-cover__image-background">
   -Element NEBEN dem <span class="wp-block-cover__background"> (Letzteres
   ist nur die Dim/Overlay-Farbebene, enthaelt KEIN Bild - siehe
   wp-includes/blocks/cover/style.css) - deshalb gezielt auf
   .wp-block-cover__image-background angewendet, nicht auf __background.
   Wirkt nur sichtbar bei gesetztem Bild (Hintergrund: Bild); im reinen
   Farb-Modus (kein Bild, dimRatio 100) existiert dieses img-Element gar
   nicht im Markup, die Style-Variante hat dort schlicht keinen Effekt. */
.is-style-grundmann-cover-flip-h > .wp-block-cover__image-background {
	transform: scaleX(-1);
}

/* Textfarbe in core/cover-Abschnitten OHNE eigene Farbwahl: WordPress-Core
   setzt fuer jeden core/cover-Block standardmaessig weisse Schrift (Annahme:
   "Cover-Bilder sind meist dunkel"), siehe wp-includes/blocks/cover/
   style.css: ":where(.wp-block-cover:not(.has-text-color)) { color: #fff }".
   Das passt bei einem dunklen/gruenen Overlay (z. B. Hero, siehe
   startseite-hero.php, dort weiterhin gewuenscht), ist aber falsch bei
   hellen Abschnitten (Weiss/Grau) ohne Bild, wo Core-CSS trotzdem #fff
   erzwingt und Fliesstext ohne eigene textColor (z. B. .grundmann-service-
   item__text, .grundmann-service-card__text, einfache <p>-Absaetze in
   startseite.php) dadurch unlesbar weiss auf hellem Grund erscheint (siehe
   Nachtrag in claude/kontakt-und-absprung-bloecke.md). Fix: Cover-Blocks,
   die im Editor explizit als hell markiert sind (isDark:false, WordPress
   setzt dafuer automatisch die Klasse "is-light"), bekommen die normale
   Theme-Textfarbe als Fallback - aber NUR wenn kein Element bereits eine
   eigene Farbe traegt (:not(.has-text-color) betrifft den Cover-Block
   selbst und dessen direkte Kinder ohne eigene Farbwahl, per CSS-Vererbung
   wirkt color auf alle text-color-losen Nachfahren). */
.wp-block-cover.is-light:not(.has-text-color) {
	color: var(--wp--preset--color--text-dark);
}

/* ==========================================================================
   CTA-Button mit Pfeil-Icon (aus sow-button mit ow-icon-placement-right).
   WICHTIG: rein strukturell ueber den Standard-core/button-Selektor erzeugt
   (":after"-Pseudo-Element mit eingebettetem Pfeil-SVG als Hintergrundbild) -
   KEINE "has-icon"-Klasse und KEIN Inline-SVG im Pattern-/Template-Part-
   Markup mehr noetig. Jeder core/button im Content bekommt den Pfeil damit
   automatisch, auch auf bereits gespeicherten Seiten, ohne dass der Block
   dort neu eingefuegt werden muss (siehe custom-blocks-troubleshooting.md,
   Grundprinzip "Styling gehoert strukturell erzwungen, nicht per neuer
   Klasse im Pattern-Markup"). Falls irgendwann ein Button OHNE Pfeil
   gebraucht wird, dafuer eine explizite Ausnahme-Klasse einfuehren (z.B.
   "no-icon"), nicht umgekehrt eine Opt-in-Klasse fuer den Pfeil.
   ========================================================================== */
/* !important noetig: WordPress' eigenes core/button-Stylesheet
   (wp-includes/blocks/button/style.css) setzt .wp-block-button__link
   (gleiche Klasse, gleiche Spezifitaet) selbst auf "display: inline-block;
   align-content: center; height: 100%". Je nach Lade-Reihenfolge im
   Frontend (im Editor via editor-styles laedt unser theme.css zuverlaessig
   zuletzt, im Frontend nicht garantiert) gewinnt mal die eine, mal die
   andere Regel - ohne !important konnte das Core-CSS "display: inline-
   block" gewinnen, wodurch der Pfeil (::after) nicht mehr per Flexbox
   vertikal zentriert wird, sondern im normalen Inline-Textfluss auf der
   Grundlinie sitzt und dadurch leicht "verrutscht" wirkt (Symptom trat
   nur im Live-Frontend auf, nicht im Editor - Reihenfolge-Unterschied
   bestaetigt den Verdacht). */
.wp-block-button__link {
	display: inline-flex !important;
	align-items: center !important;
	gap: 8px;
}

.wp-block-button__link::after {
	content: "";
	display: inline-block;
	width: 22px;
	height: 22px;
	flex-shrink: 0;
	background-color: currentColor;
	-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>');
	mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"/><path d="M13 6l6 6-6 6"/></svg>');
	-webkit-mask-repeat: no-repeat;
	mask-repeat: no-repeat;
	-webkit-mask-position: center;
	mask-position: center;
	-webkit-mask-size: contain;
	mask-size: contain;
}

/* ==========================================================================
   Button-Style-Variante "Outline (Grün)" (is-style-grundmann-btn-outline):
   gruener Rand, gruene Schrift, transparenter Hintergrund, KEIN Pfeil-Icon.
   Fuer sekundaere Button-Reihen (z. B. Produkt-Kurzlinks unterhalb des
   Hero-Contents), die sich bewusst vom Haupt-CTA (voll gruen gefuellt,
   siehe .wp-block-button__link oben) abheben sollen. Registrierung siehe
   functions.php (register_block_style, core/button).
   ========================================================================== */
.wp-block-buttons:has(.is-style-grundmann-btn-outline) {
	gap: 16px;
}

.wp-block-button.is-style-grundmann-btn-outline .wp-block-button__link {
	background-color: transparent;
	color: var(--wp--preset--color--text-dark);
	border: 2.5px solid var(--wp--preset--color--text-dark);
	font-weight: 600;
}

.wp-block-button.is-style-grundmann-btn-outline .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--primary-light);
	color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
}

/* Pfeil-Pseudo-Element (siehe .wp-block-button__link::after oben) gezielt
   fuer diese Variante wieder ausblenden - Outline-Buttons in einer Reihe
   sollen schlicht bleiben, ohne den sonst theme-weiten Pfeil. */
.wp-block-button.is-style-grundmann-btn-outline .wp-block-button__link::after {
	display: none;
}

/* ==========================================================================
   Produktkarten-Links mit Pfeil-Icon (aus dem "Mehr erfahren"-Muster).
   Im Original nur ein reines Icon ohne sichtbaren Text (schlecht für
   Barrierefreiheit) - wir behalten das Icon-Aussehen bei, ergänzen aber
   ein aria-label statt sichtbarem Text zu erzwingen.
   ========================================================================== */
.grundmann-card-spacer {
	flex-grow: 1;
}

.grundmann-card-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 36px;
	height: 36px;
	box-sizing: border-box;
	border-radius: 50%;
	background-color: var(--wp--preset--color--primary);
	margin-top: 10px;
}

.grundmann-card-link svg {
	width: 20px;
	height: 20px;
	color: #ffffff;
}

.grundmann-card-link:hover {
	background-color: var(--wp--preset--color--primary-hover);
}

/* ==========================================================================
   Header / Hauptnavigation
   Ziel: aufgeraeumt, minimalistisch, klar funktional - sticky beim Scrollen,
   dezente Trennlinie statt Schatten, ruhige Hover-/Active-Zustaende,
   sauber gestaltete Submenues. Keine neuen Abhaengigkeiten, reines CSS.

   Responsive-Strategie (Mobile First):
   - Dieser Abschnitt enthaelt zuerst die Basis-Styles, die auf JEDER
     Breite gelten (Farben, Grundabstaende, Typo) - inkl. dem Mobile-
     Overlay-Menue, das WordPress' Navigation-Block unterhalb von 782px
     automatisch zeigt (Kernverhalten, das overlayMenu:"mobile" mitbringt,
     siehe wp-includes/blocks/navigation/block.json).
   - Alles was NUR am Desktop-Hover-Dropdown haengt (Mega-Menü-Grid,
     Spalten, Positionierung) steht gebuendelt in einem einzigen
     @media (min-width: 782px) Block weiter unten, mit demselben
     Breakpoint, den WordPress selbst fuer den Wechsel von Mobile-Overlay
     zu Desktop-Menue verwendet - Header/Nav wechseln so exakt synchron.
   ========================================================================== */
.grundmann-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background-color: #ffffff;
	border-bottom: 1px solid var(--wp--preset--color--surface-grey);
}

/* Logo: auf sehr schmalen Screens etwas kleiner, damit neben dem
   Menü-Button genug Luft bleibt und der zweizeilige Firmenname nicht zu
   dominant wirkt. */
.grundmann-header .wp-block-site-logo img {
	max-width: 140px;
	height: auto;
}

@media (min-width: 782px) {
	.grundmann-header .wp-block-site-logo img {
		max-width: 170px;
	}

	/* Logo etwas Luft zur Navigation (nur relevant, wenn Logo und Menü
	   nebeneinander stehen, also ab Desktop-Breite). */
	.grundmann-header .wp-block-site-logo {
		margin-right: 24px;
	}
}

/* Navigationslinks: ruhige Typo, klarer Hover-/Active-Zustand statt
   Standard-Unterstreichung. Farbe folgt dem Link-Preset aus theme.json.
   Gilt fuer Desktop-Menü UND Mobile-Overlay gleichermaßen. */
.grundmann-nav .wp-block-navigation-item .wp-block-navigation-item__content {
	color: var(--wp--preset--color--text-dark);
	font-weight: 500;
	padding: 12px 16px;
	border-radius: 4px;
	transition: color 0.15s ease, background-color 0.15s ease;
}

.grundmann-nav .wp-block-navigation-item .wp-block-navigation-item__content:hover,
.grundmann-nav .wp-block-navigation-item .wp-block-navigation-item__content:focus {
	color: var(--wp--preset--color--primary);
	background-color: var(--wp--preset--color--surface-grey);
}

/* Aktueller Menüpunkt (aktuelle Seite) dezent hervorheben */
.grundmann-nav .current-menu-item > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--primary);
	font-weight: 600;
}

/* "Notdienst" als ruhig hervorgehobener Punkt statt reinem Textlink -
   wichtige Info, aber ohne lauten Button-Look. */
.grundmann-nav .grundmann-nav-highlight > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--primary);
	font-weight: 600;
}

/* Dropdown-Pfeil: bewusst komplett ausgeblendet (Desktop wie Mobile).
   Der kleine Pfeil (ein eigenstaendiger <button>, kein Teil des Links)
   brachte mehr Komplexitaet als Nutzen; dass ein Menüpunkt ein Untermenü
   hat, zeigt sich ohnehin durchs Aufklappen selbst. */
.grundmann-nav .wp-block-navigation-submenu__toggle.wp-block-navigation__submenu-icon {
	display: none;
}

/* Gruppenüberschriften ("Fütterungstechnik" usw. im Biogastechnik-Menü):
   in Grün statt Grau, damit sie sich klar von den eigentlichen
   Menüpunkten abheben. Als Basis-Style gesetzt, damit sie auch im
   Mobile-Overlay (einspaltig) korrekt gruen erscheinen, nicht nur im
   Desktop-Mega-Menü. */
.grundmann-nav .grundmann-nav-group-label > .wp-block-navigation-item__content {
	padding-top: 4px;
	padding-bottom: 8px;
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	/* !important noetig: WP-Core setzt ".wp-block-navigation:not(.has-text-color)
	   .wp-block-navigation__submenu-container { color: #000 }", das im
	   verschachtelten Mega-Menü-Container unsere gruene Farbe sonst schlägt. */
	color: var(--wp--preset--color--primary) !important;
}

.grundmann-nav .grundmann-nav-group-label > .wp-block-navigation-item__content:hover,
.grundmann-nav .grundmann-nav-group-label > .wp-block-navigation-item__content:focus {
	color: var(--wp--preset--color--primary-hover) !important;
	background-color: transparent;
}

.grundmann-nav .wp-block-navigation__responsive-container-open {
	/* Kein Rahmen/Padding mehr: mit dem eigenen CSS-Icon (::before/::after
	   unten) hat der Button keinen "echten" Inhalt mehr, der ihm eine
	   Groesse gibt (die Balken sind position:absolute und zaehlen nicht
	   zur Button-Groesse) - der Button schrumpft dadurch auf seine
	   Minimalgroesse, wodurch Rahmen und Balken zu eng aneinander
	   kleben. Einfachste, robusteste Loesung: Rahmen weg, Groesse ueber
	   width/height fest auf das Klickfeld setzen (wie bei den anderen
	   Header-Icons/Flaggen, die ebenfalls ohne umgebenden Kasten
	   auskommen). */
	width: 44px;
	height: 44px;
	position: relative;
}

/* Eigenes Hamburger-Icon statt WordPress' Standard-SVG: WP-Cores SVG
   zeichnet die beiden Balken als 1.5px hohe <path>-Rechtecke innerhalb
   eines 24x24-Viewbox, das im Button nicht ganzzahlig (auf ~24x24px vs.
   Button-Innenmasse) skaliert wird - je nach Geraet/Browser fuehrt das
   zu leicht unterschiedlichem Sub-Pixel-Antialiasing der beiden Balken
   (mal wirkt der obere, mal der untere minimal breiter/schmaler - siehe
   Nachtrag: auf einem Test-Browser oben breiter, auf einem Handy unten
   breiter - reines Rendering-Artefakt, kein Layout-Fehler). Zwei reine
   CSS-Balken mit fester Pixelbreite/-hoehe sind unabhaengig vom
   SVG-Rendering und daher auf jedem Geraet garantiert identisch. */
.grundmann-nav .wp-block-navigation__responsive-container-open svg {
	display: none;
}

.grundmann-nav .wp-block-navigation__responsive-container-open::before,
.grundmann-nav .wp-block-navigation__responsive-container-open::after {
	content: "";
	position: absolute;
	left: 50%;
	width: 22px;
	height: 2px;
	background-color: #333333;
	transform: translateX(-50%);
}

.grundmann-nav .wp-block-navigation__responsive-container-open::before {
	top: calc(50% - 7px);
	box-shadow: 0 7px 0 #333333;
}

.grundmann-nav .wp-block-navigation__responsive-container-open::after {
	top: calc(50% + 7px);
}

.grundmann-nav .wp-block-navigation__responsive-container.is-menu-open {
	background-color: #ffffff;
}

/* Linksbündig statt der rechtsbündigen Desktop-Ausrichtung
   (justifyContent:"right" im Navigation-Block-Attribut, gedacht fürs
   Hover-Menü neben dem Logo): im vollflächigen Mobile-Overlay ist eine
   linksbündige Liste die klar lesbarere, uebliche Konvention.
   WICHTIG: WordPress-Core setzt genau dafür bereits eine eigene Regel
   ".wp-block-navigation.items-justified-right.is-vertical {
   --navigation-layout-align: flex-end }" (das Overlay macht das Menü
   "is-vertical", wodurch die Rechtsbündigkeit zur Cross-Achse wird).
   Wir überschreiben diese Custom Property mit derselben Spezifität plus
   unserer eigenen .grundmann-nav-Klasse, damit unsere Regel gewinnt. */
.grundmann-nav.items-justified-right {
	/* WP-Core setzt ".items-justified-right { --navigation-layout-justification-setting: flex-end }",
	   und im geöffneten Mobile-Overlay wird GENAU DIESE Property (nicht
	   --navigation-layout-align) für align-items des Overlay-Inhalts
	   verwendet: ".is-menu-open ... .responsive-container-content {
	   align-items: var(--navigation-layout-justification-setting) }".
	   Deshalb hier überschreiben, nicht bei -align. */
	--navigation-layout-justification-setting: flex-end !important;
}

.grundmann-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-size: 1.1rem;
	padding: 12px 20px;
	text-align: right;
}

/* WP-Core setzt speziell fuer die direkten Top-Level-Punkte im Overlay
   (nicht fuer verschachtelte Unterpunkte) eine eigene Regel mit hoeherer
   Spezifitaet, die padding wieder auf 0 zuruecksetzt. Dadurch hatten nur
   die Unterpunkte das 4px rechte Padding, Top-Level-Punkte keins - das
   erzeugte den sichtbaren Rand-Versatz zwischen beiden Ebenen. Hier
   gezielt mit derselben :where()-Kette erneut erzwungen. */
.grundmann-nav .wp-block-navigation__responsive-container.is-menu-open:where(:not(.disable-default-overlay)) .wp-block-navigation__responsive-container-content .wp-block-navigation-item__content {
	padding: 12px 20px !important;
}

/* Schließen-Button ("×") etwas Abstand vom Rand, statt am Bildschirmrand
   zu kleben. */
.grundmann-nav .wp-block-navigation__responsive-container-close {
	margin: 8px;
}

/* Verschachtelte Untermenüs (Biogastechnik > Fütterungstechnik etc.) im
   Overlay: WordPress klappt sie standardmäßig als eigenes Panel auf -
   hier stattdessen einfach eingerückt inline anzeigen, das ist auf dem
   Handy die deutlich simplere und verständlichere Interaktion (kein
   zusätzlicher Navigationsschritt / Zurück-Button nötig). */
.grundmann-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	position: static !important;
	visibility: visible !important;
	opacity: 1 !important;
	width: auto !important;
	height: auto !important;
	background: transparent !important;
	border: none !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin: 0 !important;
	animation: none !important;
}

/* Innerhalb des Overlays: Top-Level-Punkte hervorheben */
.grundmann-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu > .wp-block-navigation-item__content {
	font-weight: 700;
}

/* ==========================================================================
   Ankündigungsbalken ueber dem Header (Shopify-Style "Announcement Bar"):
   schmaler, farbig abgesetzter Streifen fuer den Notdienst-Hinweis.
   Bewusst separat vom .grundmann-header, damit dieser weiterhin sticky
   fuer sich bleiben kann (die Bar scrollt normal mit).
   ========================================================================== */
.grundmann-announcement-bar {
	background-color: var(--wp--preset--color--primary);
	padding: 8px 20px;
}

.grundmann-announcement-bar__text {
	margin: 0;
	color: #ffffff;
	font-size: 0.85rem;
	font-weight: 500;
	letter-spacing: 0.01em;
}

.grundmann-announcement-bar__text a {
	color: #ffffff;
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.5);
	text-underline-offset: 2px;
}

.grundmann-announcement-bar__text a:hover {
	text-decoration-color: #ffffff;
}

@media (max-width: 600px) {
	.grundmann-announcement-bar__text {
		font-size: 0.78rem;
		line-height: 1.5;
	}
}

/* ==========================================================================
   Ab hier: alles, was ausschließlich fuer das Desktop-Hover-Dropdown gilt
   (782px ist WordPress' eigener Breakpoint fuer den Wechsel vom Mobile-
   Overlay zum normalen Hover-Menü, siehe wp-includes/blocks/navigation).
   Darunter bleibt es beim einfachen, linearen Mobile-Overlay von oben.
   ========================================================================== */
@media (min-width: 782px) {
	/* Untermenüs (Dropdowns): hochwertigerer, "entkoppelter" Look statt
	   direkt am Trigger anklebendem Kasten. Weicher Schatten + feiner
	   Rahmen, dezente Öffnungs-Animation, eigene (ruhigere) Typografie. */
	.grundmann-nav .wp-block-navigation__submenu-container {
		background-color: #ffffff;
		border: 1px solid rgba(0, 0, 0, 0.06);
		border-radius: 8px;
		box-shadow: 0 12px 28px rgba(0, 0, 0, 0.1), 0 2px 8px rgba(0, 0, 0, 0.04);
		padding: 8px;
		min-width: 240px;
		/* Kein margin-top: eine Luecke zwischen Trigger und Dropdown wuerde
		   die Maus beim Diagonal-Bewegen "verlieren" und das Menue vorzeitig
		   schliessen. Der Kasten dockt daher direkt an. */
		animation: grundmann-submenu-in 0.14s ease-out;
	}

	.grundmann-nav .wp-block-navigation__submenu-container .wp-block-navigation-item {
		margin: 0;
	}

	.grundmann-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		padding: 11px 16px;
		border-radius: 5px;
		font-size: 0.95rem;
		font-weight: 500;
		color: var(--wp--preset--color--text-muted);
	}

	.grundmann-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover,
	.grundmann-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:focus {
		color: var(--wp--preset--color--primary);
		background-color: var(--wp--preset--color--surface-grey);
	}

	/* Hover-Hintergrund/Radius liegen auf dem gemeinsamen <li>, damit
	   Label und (unsichtbarer) Toggle dieselbe Klickflaeche bilden. */
	.grundmann-nav .wp-block-navigation-submenu {
		border-radius: 4px;
		transition: background-color 0.15s ease;
	}

	.grundmann-nav .wp-block-navigation-submenu:hover,
	.grundmann-nav .wp-block-navigation-submenu:focus-within {
		background-color: var(--wp--preset--color--surface-grey);
	}

	.grundmann-nav .wp-block-navigation-submenu > .wp-block-navigation-item__content:hover,
	.grundmann-nav .wp-block-navigation-submenu > .wp-block-navigation-item__content:focus {
		background-color: transparent;
	}

	.grundmann-nav .wp-block-navigation-submenu:hover > .wp-block-navigation-item__content,
	.grundmann-nav .wp-block-navigation-submenu:focus-within > .wp-block-navigation-item__content {
		color: var(--wp--preset--color--primary);
	}

	/* Mega-Menü "Biogastechnik": drei Produktgruppen (Fütterungstechnik,
	   Fördertechnik, Zerkleinerungstechnik) nebeneinander als eigene
	   Spalten statt einer langen, flachen Liste. Jede Spalte wird genau
	   so breit wie ihr eigener breitester Eintrag (max-content). */
	.grundmann-nav .grundmann-nav-megamenu > .wp-block-navigation__submenu-container {
		/* !important noetig: WP-Core setzt auf .wp-block-navigation
		   .has-child .wp-block-navigation__submenu-container ebenfalls
		   "display: flex" mit vergleichbarer Spezifitaet. */
		display: grid !important;
		grid-template-columns: repeat(3, max-content);
		grid-template-rows: repeat(4, auto);
		grid-auto-flow: column;
		column-gap: 24px;
		/* width:max-content lässt den Container sich exakt an die Summe
		   der (variablen) Spaltenbreiten anpassen. left/right müssen
		   erzwungen werden, da WP-Core hier beide gleichzeitig setzt,
		   was ohne feste Breite zu einer falsch berechneten Position
		   fuehrt (ragt sonst aus dem Viewport). */
		width: max-content !important;
		left: auto !important;
		right: 0 !important;
	}

	/* Sicherheitsnetz: Menüpunkt-Text nie umbrechen, damit die
	   Spaltenbreite auch bei abweichenden Schriftmetriken nicht knapp
	   wird. */
	.grundmann-nav .grundmann-nav-megamenu .wp-block-navigation-item__label {
		white-space: nowrap;
	}

	/* Schmalere Desktop-/Laptop-Breiten (782–1300px): 3 Spalten reichen
	   nach links oft nicht aus, ohne über den Viewport-Rand
	   hinauszuragen. Dort auf eine einzige Spalte zurückfallen. */
	@media (max-width: 1300px) {
		.grundmann-nav .grundmann-nav-megamenu > .wp-block-navigation__submenu-container {
			grid-template-columns: 232px !important;
			grid-template-rows: none !important;
			grid-auto-flow: row !important;
			box-sizing: border-box !important;
			width: 250px !important;
		}

		.grundmann-nav .grundmann-nav-col-2,
		.grundmann-nav .grundmann-nav-col-3 {
			border-left: none !important;
			padding-left: 0 !important;
		}
	}

	/* Vertikale Trennlinie zwischen den Spalten statt horizontaler
	   Linien zwischen einzelnen Einträgen (nur bei ≥1300px relevant,
	   siehe Override oben). */
	.grundmann-nav .grundmann-nav-col-2,
	.grundmann-nav .grundmann-nav-col-3 {
		border-left: 1px solid rgba(0, 0, 0, 0.06);
		padding-left: 8px;
	}

	/* Zugehörige Einzelprodukte einer Gruppe: kompakteres Padding als im
	   normalen, einspaltigen Dropdown. */
	.grundmann-nav .grundmann-nav-subitem > .wp-block-navigation-item__content {
		padding-top: 8px;
		padding-bottom: 8px;
	}
}

@keyframes grundmann-submenu-in {
	from {
		opacity: 0;
		transform: translateY(-4px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ==========================================================================
   Footer: responsive
   Der Footer besteht aus einem "wp:columns"-Block (Kontakt / Bürozeiten /
   Anschrift), der von WordPress-Core standardmäßig bereits unter 782px
   gestackt wird (isStackedOnMobile ist per Default true) - das brauchen
   wir hier also nicht selbst nachbauen.
   Was Core NICHT liefert: seitliches Padding. Weder der Footer noch die
   Spalten haben ein eigenes horizontales Padding, weil das Theme keine
   globale "root padding" (useRootPaddingAwareAlignments) aktiviert hat.
   Dadurch klebt der Footer-Inhalt auf schmalen Screens direkt an der
   Bildschirmkante. Gleiches Muster wie beim Hauptinhalt - hier aber
   gezielt für den Footer behoben, plus zusätzlicher Row-Gap zwischen den
   gestackten Spalten, da diese sonst ohne Abstand aneinanderkleben.
   ========================================================================== */
.grundmann-footer,
.grundmann-footer-bottom {
	padding-left: 20px;
	padding-right: 20px;
}

.grundmann-footer .wp-block-columns {
	row-gap: 32px;
}

@media (min-width: 782px) {
	.grundmann-footer,
	.grundmann-footer-bottom {
		padding-left: 32px;
		padding-right: 32px;
	}
}

/* Copyright-Zeile: auf sehr schmalen Screens linksbündig statt zentriert,
   damit der Zeilenumbruch nicht mitten im Satz (z.B. vor einem "–")
   passiert und der Text besser lesbar bleibt. Die Zeile sitzt in einer
   eigenen Gruppe (.grundmann-footer-bottom) unterhalb des eigentlichen
   Footers, nicht im Footer selbst. */
@media (max-width: 480px) {
	.grundmann-footer-bottom p.has-text-align-center {
		text-align: left;
	}
}

/* Footer-Spalten (aktuell: Kontakt / Notdienst / Bürozeiten / Anschrift):
   am Desktop nicht gleich breit, sondern nur so breit wie der jeweils
   breiteste Inhalt - dieselbe Logik wie beim Mega-Menü (siehe
   .grundmann-nav-megamenu weiter oben). Core setzt via "is-layout-flex"
   normalerweise "flex: 1 1 0" auf jede Spalte, wodurch sie sich gleich
   breit auf den verfügbaren Platz verteilen. Das überschreiben wir hier
   mit einem Grid aus "max-content"-Spalten. Nur am Desktop (>= 782px),
   weil die Spalten darunter ohnehin gestackt sind (volle Breite, eine
   pro Zeile) und dort "max-content" nur zu ungewolltem Umbruch/Überlauf
   führen würde. "justify-content: space-between" verteilt den übrigen
   Platz zwischen den Spalten, statt ihn nur nach dem Grid zu summieren -
   dadurch liegt die erste Spalte links und die letzte rechts an, mit
   gleichmäßigem Abstand dazwischen. Die max-width von 1150px (= gleiche
   contentSize wie der Footer-Container) begrenzt, wie weit die letzte
   Spalte bei sehr breiten Screens nach rechts wandert.
   WICHTIG: "repeat(4, ...)" muss zur tatsächlichen Anzahl an
   wp:column-Bloecken in parts/footer.html passen. Weniger/mehr Spalten
   im Editor hinzufuegen/entfernen erfordert, diese Zahl hier anzupassen -
   sonst brechen ueberzaehlige Spalten in eine neue Zeile um (kein
   automatisches Nachziehen, da "max-content"-Spaltenbreiten mit reinem
   CSS nicht dynamisch an die Blockanzahl gekoppelt werden koennen). */
@media (min-width: 782px) {
	.grundmann-footer .wp-block-columns {
		display: grid;
		grid-template-columns: repeat(4, max-content);
		justify-content: space-between;
		max-width: 1150px;
	}

	.grundmann-footer .wp-block-column {
		flex: none !important;
		width: auto !important;
	}
}

/* ==========================================================================
   Footer-Bottom-Leiste (Copyright/Impressum/Datenschutz/AGB): eigener,
   dunkler Vollbreiten-Abschnitt unterhalb des Hauptfooters (siehe
   parts/footer.html - .grundmann-footer-bottom ist ein eigenstaendiges
   Geschwister-Element, kein verschachtelter Block, weil ein "align:full"-
   Kindblock innerhalb eines "constrained"-Elternblocks in der Praxis
   nicht zuverlaessig ueber die volle Breite ausbricht).
   Links darin sollen sich zurueckhaltend einfuegen statt in der
   Primaerfarbe (Gruen) hervorzustechen - gedaempftes Weiss statt Vollton,
   analog zur Ankuendigungsleiste oben im Header.
   ========================================================================== */
.grundmann-footer-bottom a {
	color: rgba(255, 255, 255, 0.65);
	text-decoration: underline;
	text-decoration-color: rgba(255, 255, 255, 0.35);
	text-underline-offset: 2px;
}

.grundmann-footer-bottom a:hover {
	color: #ffffff;
	text-decoration-color: #ffffff;
}

/* ==========================================================================
   Content-Abschnitte mit Überschrift + Text (z. B. "Funktionsprinzip",
   "Transport", "Anschlüsse", "Substrate" auf Produktseiten, im Textbereich
   neben der Technische-Daten-Box). Eigene Klasse statt globalem
   core/heading-Abstand (theme.json: margin-bottom 0.6em), damit der Abstand
   hier gezielt reduziert werden kann, ohne andere Überschriften im Theme
   zu beeinflussen.
   ========================================================================== */
.grundmann-content-heading {
	margin-bottom: 0.42em; /* ca. 30% weniger als der Standard-Abstand (0.6em) */
}

.grundmann-content-text {
	margin-top: 0;
}

/* ==========================================================================
   Editor-only: "Abschnitt hinzufügen"-Button im grundmann/content-section-
   Block (siehe blocks/content-section/edit.js). Erscheint nur im Block-
   Editor, nicht im Frontend (dort gibt es keinen ".grundmann-content-
   section__add-wrapper" im gerenderten Markup).
   ========================================================================== */
.grundmann-content-section__add-wrapper {
	margin-top: 1rem;
}

/* ==========================================================================
   Sprachumschalter (Polylang-Block "wp:polylang/language-switcher") im
   Header. Polylang rendert ihn als <ul><li>...</li></ul> mit Standard-
   Listen-Styles (Bulletpoints, Einträge untereinander). Wir wollen die
   Flaggen stattdessen bulletlos nebeneinander, wie separate Icons im
   Header – daher hier gezielt die Listen-Darstellung aufgehoben statt sie
   über den Block-Editor zu konfigurieren (dort gibt es keine Option dafür).
   ========================================================================== */
.wp-block-polylang-language-switcher {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.wp-block-polylang-language-switcher .lang-item {
	list-style: none;
	margin: 0;
	padding: 0;
}

.wp-block-polylang-language-switcher .lang-item a {
	display: flex;
	align-items: center;
}

/* ==========================================================================
   Section-Header: wiederverwendbare Ueberschrift-Optik fuer Abschnitte, die
   (anders als ein Card-Hero) eine zentrierte Titelzeile ueber dem eigent-
   lichen Inhalt brauchen - z.B. "Weitere Biogastechnik" (Absprung-Block)
   und "Unsere Serviceleistungen". Als eigene, block-unabhaengige Klasse
   angelegt, damit kuenftige Abschnitte sie ebenfalls nutzen koennen, statt
   die Optik erneut manuell nachzubauen.

   Farbe bewusst NICHT hier fest verdrahtet (frueher: color: var(--primary)),
   sondern currentColor - Redakteure sollen zwischen Gruen (primary) und
   Dunkelgrau (text-dark) waehlen koennen. Bei core/heading (z.B.
   "Unsere Serviceleistungen") geschieht das ueber WordPress' eingebaute
   Textfarbe-Auswahl im Inspector (textColor-Attribut, has-*-color-Klasse) -
   currentColor laesst diese Klasse durchschlagen. Beim grundmann/related-
   products-Block ("Weitere Biogastechnik") ist "primary" ueber
   supports.color.text + RichText-Farbauswahl im Inspector waehlbar (siehe
   blocks/related-products/block.json/edit.js) - Default bleibt primary
   (Gruen), wenn keine Farbe gewaehlt wurde.
   ========================================================================== */
.grundmann-section-header {
	text-align: center;
	/* Schriftgroesse/-staerke an die Card-Hero-Ueberschrift angeglichen
	   (z. B. "Mobile Fuetterung": fontSize xx-large + <strong>), damit
	   beide Ueberschriften-Arten im Theme einheitlich wirken - siehe
	   claude/section-badge-und-heading-standardisierung.md. Font-weight 600
	   statt 700, weil <strong>/<b> global auf 600 (SemiBold) statt 700
	   gesetzt sind (siehe Regel "strong, b" oben in dieser Datei) - beide
	   Wege zu "hervorgehoben" sollen gleich aussehen. */
	font-size: var(--wp--preset--font-size--xx-large);
	font-weight: 600;
	color: var(--wp--preset--color--primary);
}

.grundmann-section-header.has-text-color {
	color: currentColor;
}

/* Ausrichtung ist per Default zentriert (siehe oben), aber ueber die von
   WordPress automatisch gesetzten has-text-align-*-Klassen (core/heading-
   Ausrichtungsfeld bzw. das eigene headingAlign-Attribut/SelectControl bei
   grundmann/related-products) explizit veraenderbar. */
.grundmann-section-header.has-text-align-left {
	text-align: left;
}

.grundmann-section-header.has-text-align-right {
	text-align: right;
}

/* ==========================================================================
   Serviceleistung (grundmann/service-item): Zeile aus rundem Icon links
   und Titel/Text rechts - fuer vertikale Listen wie "Unsere Service-
   leistungen". Anders als grundmann-feature (zentriert, fuer Spalten
   gedacht) ist dies ein horizontales Zeilen-Layout.
   ========================================================================== */
.grundmann-service-item {
	display: flex;
	align-items: flex-start;
	gap: 24px;
}

.grundmann-service-item + .grundmann-service-item {
	margin-top: 32px;
}

.grundmann-service-item__icon {
	/* Gleiche Groesse wie grundmann-feature (.grundmann-icon-circle: 64px
	   Kreis, 40px SVG) - hier nur die automatische Zentrierung (margin:
	   0 auto) der Basisklasse aufgehoben, weil das Icon in der Zeile links
	   ausgerichtet sein muss statt zentriert. */
	flex-shrink: 0;
	margin: 0;
}

.grundmann-service-item__body h4 {
	margin: 0 0 6px 0;
}

.grundmann-service-item__text {
	margin: 0;
}

/* ==========================================================================
   Service-Karten (grundmann/service-card): alternative Gestaltung zu
   grundmann-service-item (Zeilen-Liste) fuer ein Karten-Grid - weisse
   Karte mit duennem Rahmen (kein Schatten), quadratische Icon-Kachel
   oben, Titel und Text darunter.
   ========================================================================== */
.grundmann-service-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 4px;
	height: 100%;
	padding: 28px;
	background-color: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--surface-grey);
	border-radius: 8px;
	box-sizing: border-box;
	/* Eigene, von der umgebenden Section-Hintergrundfarbe unabhaengige
	   Textfarbe (z. B. is-style-grundmann-bg-primary/-dark setzen color:
	   white auf dem ganzen Abschnitt) - eine weisse Karte ist immer eine
	   eigene "Insel" mit dunklem Text, unabhaengig vom Abschnitt drumherum. */
	color: var(--wp--preset--color--text-dark);
}

@media (max-width: 781px) {
	.grundmann-service-card {
		padding: 16px;
	}
}

.grundmann-service-card__icon {
	/* Identisch zu .grundmann-icon-circle (Feature-Icon/Service-Item):
	   runder gruener Hintergrund, 64px. Urspruenglich (Nachtrag 3, siehe
	   claude/serviceleistungen-abschnitt.md) bewusst ohne Kreis gebaut,
	   auf Nutzerwunsch aber wieder vereinheitlicht - siehe Nachtrag 6. */
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--primary-light);
	margin: 0 0 16px 0;
}

.grundmann-service-card__icon svg {
	width: 40px;
	height: 40px;
	color: var(--wp--preset--color--primary);
}

/* Bild-Variante der Icon-Kachel: statt SVG-Icon ein eigenes, hochgeladenes
   Bild. Zwei Formen zur Wahl (imageShape-Attribut):
   - round: wie bisher die kleine 64px-Kreis-Kachel (Standard, passt neben
     Karten mit Icon in dasselbe Raster).
   - rect: grosses Rechteckbild ueber die volle Kartenbreite im 4:3-Format
     mit abgerundeten Ecken statt Kreis - fuer Karten, bei denen das Bild
     selbst der Blickfang sein soll. */
.grundmann-service-card__icon--image {
	background-color: var(--wp--preset--color--surface-grey);
	overflow: hidden;
}

.grundmann-service-card__icon--image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.grundmann-service-card__icon--image-round {
	width: 64px;
	height: 64px;
	border-radius: 50%;
}

.grundmann-service-card__icon--image-rect {
	width: 100%;
	aspect-ratio: 4 / 3;
	height: auto;
	border-radius: 8px;
	margin: 0 0 16px 0;
}

.grundmann-service-card h4 {
	margin: 0 0 8px 0;
}

.grundmann-service-card__text {
	margin: 0 !important;
	color: var(--wp--preset--color--text-muted);
}

/* ==========================================================================
   Abschnitts-Badge (grundmann/section-badge): gleiche Optik wie das
   Kategorie-Badge auf der Produktkarte (Grossbuchstaben, dezente Schrift),
   aber als eigener Block mit waehlbarer Farbe/Ausrichtung fuer Abschnitte
   ausserhalb von Produktkarten (z. B. oberhalb einer Section-Ueberschrift).
   ========================================================================== */
.grundmann-section-badge {
	text-align: center;
}

.grundmann-section-badge.has-text-align-left {
	text-align: left;
}

.grundmann-section-badge.has-text-align-right {
	text-align: right;
}

.grundmann-section-badge__text {
	margin: 0 0 8px 0;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--text-dark);
}

.grundmann-section-badge__text.has-text-color {
	color: currentColor;
}

/* ==========================================================================
   Startseiten-Hero: 16:9-Video-Box rechts (aktuell Platzhalterbild via
   core/image, spaeter durch <video autoplay muted loop playsinline>
   ersetzt). Feste Seitenverhaeltnis-Box statt Bild-Originalgroesse, damit
   Video und Platzhalterbild exakt denselben Rahmen einnehmen und der
   spaetere Video-Austausch keine Layoutverschiebung verursacht.
   ========================================================================== */
.grundmann-hero-video-box {
	position: relative;
	width: 100%;
	aspect-ratio: 16 / 9;
	border-radius: 8px;
	overflow: hidden;
	/* Fallback-Flaeche: background-image statt nur poster-Attribut, denn
	   ein <video> ohne gesetzte src (bevor die Redaktion eine Videodatei
	   hochlaedt) zeigt sein poster-Bild in keinem Browser an - das Element
	   bleibt dann schlicht leer. background-image auf dem Wrapper selbst
	   sorgt dafuer, dass IMMER ein Bild zu sehen ist, unabhaengig davon,
	   ob/welches Video gerade eingebunden ist. Bewusst hier in theme.css
	   als feste Regel statt als core/group "style":{"background":...}
	   Inline-Style im Pattern-Markup - Letzteres fuehrte im Editor zu
	   "Block enthaelt ungueltigen Inhalt" (Validierungs-Mismatch bei der
	   von WordPress erwarteten background-image:url('...')-Syntax mit
	   Anfuehrungszeichen). Eine reine CSS-Klasse umgeht dieses Risiko
	   komplett. Sobald ein echtes <video src="..."> vorhanden ist, liegt
	   es (siehe Regel unten) deckend darueber und verdeckt den
	   Hintergrund. */
	background-image: url('https://grundmann-maschinenbau.de/wp-content/uploads/2024/10/01-mobiler-Dosierer-e1730371398957.jpg');
	background-size: cover;
	background-position: center;
}

.grundmann-hero-video-box img,
.grundmann-hero-video-box video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* ==========================================================================
   Startseiten-Hero: Bullet-Liste mit "›"-Zeichen statt Standard-Punkten
   (aus dem Referenz-Design uebernommen), etwas grosszuegiger im Abstand
   zwischen den Punkten als core/list es standardmaessig vorsieht.
   ========================================================================== */
.grundmann-hero-list {
	list-style: none;
	margin: 0;
	/* Zusaetzlicher linker Einzug, damit die Bulletpoints erkennbar
	   eingerueckt stehen statt linksbuendig auf einer Linie mit dem
	   Haupttitel (grundmann-hero-title) zu stehen. */
	padding: 0 0 0 1.5em;
	/* Etwas groesser als das gewaehlte Preset (x-large/1.4rem) - eigene,
	   leicht groessere Stufe direkt fuer diese Liste statt eines neuen
	   globalen font-size-Presets in theme.json. */
	font-size: 1.6rem;
}

.grundmann-hero-list li {
	position: relative;
	padding-left: 1.2em;
	margin-bottom: 10px;
	/* Grossbuchstaben fuer die Listenpunkte (energieeffizient/verschleiss-
	   arm/robust wirken als kurze Schlagworte, nicht als Fliesstext). */
	text-transform: uppercase;
}

.grundmann-hero-list li::before {
	content: "\203A";
	position: absolute;
	left: 0;
	top: -0.25em;
	color: var(--wp--preset--color--primary);
	font-weight: 700;
	font-size: 1.3em;
}

.grundmann-hero-title {
	line-height: 1.4;
}

/* ==========================================================================
   Listen-Optionen fuer core/list (normaler Editor-Aufzaehlungs-/
   Nummerierungsblock): drei unabhaengig kombinierbare An/Aus-Optionen im
   Sidebar-Panel "Listen-Optionen" (siehe functions.php +
   blocks/list-options/editor.js), da WordPress' native "Stile"-Leiste pro
   Block immer nur eine einzige Variante gleichzeitig erlaubt und fuer drei
   unabhaengig kombinierbare Optionen (Fett/Kursiv/Abstand) nicht ausreicht.
   Jede Klasse landet direkt am <ul>/<ol>-Wrapper und wirkt ueber Vererbung
   auf alle <li>-Kinder.
   ========================================================================== */
/* "Fett": bewusst NUR auf ::marker (das vom Browser automatisch erzeugte
   Aufzaehlungszeichen - Bulletpoint bei core/list, "1."/"a." bei
   core/list-item mit Nummerierung/Buchstaben), NICHT auf den li-Text
   selbst - der eigentliche Listentext bleibt in normaler Schriftstaerke.
   ::marker ist ein reines CSS-Pseudoelement ohne eigenen Text-Node, ein
   <strong>-Tag laesst sich technisch nicht hineinschreiben - font-weight
   auf ::marker ist der einzige Weg, der beim nativen List-Block ohne
   Eingriff in den redaktionellen Text moeglich ist, wirkt aber optisch
   identisch zu <strong>. */
.grundmann-list-bold li::marker {
	font-weight: 700;
}

.grundmann-list-italic {
	font-style: italic;
}

/* "Abstand unten": Pixelwert kommt aus dem Editor-Zahlenfeld und wird pro
   Liste individuell als Inline-Custom-Property --grundmann-list-gap auf den
   <ul>/<ol>-Wrapper geschrieben (siehe editor.js) - diese Regel liest die
   Variable nur aus und vererbt sie normal per CSS-Kaskade an alle
   <li>-Kinder. Fallback 8px, falls die Variable ausnahmsweise fehlen sollte
   (z. B. sehr alte, vor Einfuehrung des Zahlenfelds gespeicherte Listen). */
.grundmann-list-gap li {
	margin-bottom: var(--grundmann-list-gap, 8px);
}

.grundmann-list-gap li:last-child {
	margin-bottom: 0;
}

.hero-wallpaper {
   height: 92vh;
}

@media (max-width: 781px) {
   .hero-wallpaper {
      height: 40vh;
      padding-left: 20px !important;
      padding-right: 20px !important;
   }
}

.subline {
  font-size: clamp(0.4rem, 5vw + 0.5rem, 2.5rem) !important;
  text-shadow: 2px 2px 12px rgba(0, 0, 0, 0.2);
}

.subline span {
  display: inline;
}
.subline span:not(:last-child)::after {
  content: " | ";
}

@media (max-width: 768px) {
  .subline span {
    display: block;
  }
  .subline span:not(:last-child)::after {
    content: "";
  }
  .subline span::before {
    content: "› ";
  }
}

/* 404-Seite: grosse Fehlerziffer optisch als Blickfang, dezent gehalten */
.grundmann-404 {
	text-align: center;
}
