/*
Theme Name:   Hagebuttenmark
Theme URI:    https://hagebuttenmark.de
Description:  Child-Theme für Divi 5. Trägt die Gestaltungsvorgaben des Redesigns — Farben, Schriften, Abstände — und alles eigene CSS.
Author:       Bäuerles Hagebuttenmark
Template:     Divi
Version:      1.0.0
Text Domain:  hagebuttenmark
*/

/* =========================================================================
   Gestaltungsvorgaben aus den Entwürfen
   =========================================================================

   Als CSS-Variablen und nicht als feste Werte im Code: Wenn das Rot einmal
   nachjustiert wird, ist es eine Zeile statt vierzig. Die Namen sagen, wofür
   die Farbe da ist, nicht wie sie aussieht — `--hbm-akzent` überlebt einen
   Wechsel von Rot zu Dunkelrot, `--hbm-rot` nicht.
   ========================================================================= */

:root {
	--hbm-papier:        #fffdf9;  /* Seitenhintergrund, warmes Weiß */
	--hbm-dunkel:        #2a1a14;  /* Kopfleiste und Fuß, fast Schwarzbraun */
	--hbm-text:          #3b2b22;  /* Fließtext */
	--hbm-akzent:        #c7150e;  /* Warenkorb, aktive Menüpunkte, Knöpfe */

	--hbm-leinen:        #f6f1e8;  /* Abschnittsflächen, hebt sich leicht ab */
	--hbm-sand:          #efe6d9;  /* Platzhalter hinter Bildern */

	--hbm-linie:         #e8ddcd;  /* Trennlinien auf hellem Grund */
	--hbm-linie-dunkel:  #3d2a20;  /* Trennlinien auf dunklem Grund */

	--hbm-hell-auf-dunkel:  #e8dccb;
	--hbm-leiste-text:      #cbb7a2;  /* Vertrauensleiste auf Dunkelbraun */
	--hbm-gedaempft:        #bda893;
	--hbm-leise:            #8a7a6c;  /* Ortsangaben, Bildunterschriften */
	--hbm-sehr-leise:       #7d6b59;
	--hbm-auf-bild:         #e6d5c6;  /* Fließtext über dem Aufmacherfoto */
	--hbm-augenbraue-hell:  #f0b8b3;  /* Augenbraue auf dunklem Grund */

	--hbm-serif:  "Lora", Georgia, "Times New Roman", serif;
	--hbm-sans:   "Karla", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

	/* Augenbrauen und Labels stehen im Entwurf in einer Monospace. Bewusst
	   ohne Webfont: Der Entwurf lädt IBM Plex Mono gar nicht erst, es greift
	   also ohnehin die Systemschrift — und eine Schriftdatei weniger ist bei
	   der mobilen Ladezeit spürbar. */
	--hbm-mono:   ui-monospace, "SF Mono", Menlo, Consolas, monospace;

	/* Abstände. Aus dem Entwurf ausgemessen: 64 px Seitenrand am Desktop,
	   96 px Innenabstand oben und unten je Abschnitt.

	   Kopf und Fuß haben im Entwurf einen eigenen, schmaleren Rand (44 px,
	   nachgemessen in SiteHeader.dc.html und SiteFooter.dc.html). Das ist
	   kein Versehen der Vorlage: Logo und Menü stehen dadurch etwas weiter
	   außen als der Fließtext und rahmen die Seite. */
	--hbm-rand:        64px;
	--hbm-rand-kopf:   44px;
	--hbm-rand-mobil:  20px;
	--hbm-abschnitt:   96px;

	/* Abstand zwischen zwei Zeilen derselben Sektion — im Entwurf der Sprung
	   von der Abschnittsüberschrift zu den Kacheln. Divis Vorgabe sind 60 px. */
	--hbm-zeilenluft:  52px;

	/* Höhe der dunklen Versandleiste: 9 px Innenabstand oben und unten plus
	   eine Zeile 12,5 px mit Zeilenhöhe 1,4. Der klebende Kopf schiebt sich
	   um genau diesen Wert nach oben, damit nur die weisse Zeile stehen
	   bleibt. */
	--hbm-topbar-hoehe: 36px;
}

/* =========================================================================
   Grundlagen
   ========================================================================= */

/* Alles, was seitenweit wirkt, hängt an `.hbm-redesign` am <body>.
   Ohne diese Klasse ist das Child-Theme optisch wirkungslos — es lässt sich
   also gefahrlos auf der Live-Seite aktivieren, lange bevor das Redesign
   sichtbar werden soll. Die Klasse setzt functions.php: pro Seite über das
   Feld `hbm_redesign`, oder für die ganze Seite über die Option
   `hbm_redesign_global`. Zum Start wird genau dieser eine Schalter umgelegt. */

body.hbm-redesign {
	background: var(--hbm-papier);
	color: var(--hbm-text);
	font-family: var(--hbm-sans);
}

.hbm-redesign h1,
.hbm-redesign h2,
.hbm-redesign h3,
.hbm-redesign h4,
.hbm-redesign h5,
.hbm-redesign h6 {
	font-family: var(--hbm-serif);
	color: var(--hbm-text);
}

/* =========================================================================
   Divi-Vorgaben für unsere Abschnitte aushebeln

   Gemessen am fertigen HTML: Divi begrenzt JEDE Zeile auf `max-width: 1080px`
   und gibt ihr `padding: 20px 0`. Der Entwurf ist randlos mit 44 px
   Seitenabstand — und zwischen zwei Zeilen soll keine Luft stehen, solange
   kein Abschnittswechsel gemeint ist.

   Der Selektor greift nur auf Sektionen, die eine unserer `hbm-`Klassen
   tragen. Fremde Divi-Inhalte auf derselben Seite bleiben unberührt.
   ========================================================================= */

/* WARUM `!important` UND `body` DAVOR:
   Divi 5 erzeugt seine Modul-CSS als <style>-Blöcke, die NACH diesem
   Stylesheet stehen. Bei gleicher Spezifität gewinnt das Spätere — die Regeln
   hier blieben ohne Verstärkung wirkungslos (gemessen: Zeilen behielten ihre
   20 px). `body` davor hebt die Spezifität, `!important` gewinnt gegen die
   späteren Blöcke. Beschränkt auf Layout-Eigenschaften, die Divi fest
   vorgibt; alles Gestalterische kommt weiter ohne aus. */

body.hbm-redesign {
	/* Divis Musterhintergrund (back.gif) scheint sonst zwischen den
	   Abschnitten durch — der Entwurf ist durchgehend papierfarben.
	   `!important`, weil WordPress fuer `custom-background` eine eigene
	   Regel in den Kopf schreibt, die spezifischer ist als diese hier. */
	background-color: var(--hbm-papier) !important;
	background-image: none !important;
}

/* DIVIS GLOBALES ZEILEN-PRESET — die Quelle des Schlagschattens.
   Divi 5 hängt an JEDE Zeile die Klasse `preset--module--divi-row--default`.
   Dahinter steht in der Option `et_divi_builder_global_presets_d5` ein Preset
   namens „Zeile Preset 1“ mit weissem Hintergrund, 20 px Innenabstand rundum
   und `box-shadow: 0 12px 18px -6px rgba(0,0,0,.3)`.

   WARUM DIE SELEKTOREN AB HIER SO LANG SIND:
   Divi gibt das Preset mit ID im Selektor UND `!important` aus:

       .et-db #et-boc .et-l .preset--module--divi-row--default.et_pb_row {
           padding-top: 20px !important; … }

   Gegen eine ID kommt keine Zahl von Klassen an — gemessen: Zeilen behielten
   ihre 20 px, obwohl unsere Regel `!important` trug. Der Präfix
   `body.hbm-redesign.et-db #et-boc .et-l` bringt uns auf dieselbe Stufe (eine
   ID, eine Klasse mehr) und gewinnt damit.

   Das Preset selbst bleibt unangetastet: Es gilt für ALLE Divi-5-Inhalte,
   auch für die veröffentlichten Seiten (Startseite, Shop, Kasse, AGB …). Es
   zu ändern wäre ein Eingriff in das heutige Aussehen der Live-Seite und
   gehört abgestimmt, nicht nebenbei erledigt. */
body.hbm-redesign.et-db #et-boc .et-l .et_pb_row {
	box-shadow: none !important;
	background-color: transparent !important;

	/* Das Preset setzt zusätzlich `overflow: hidden`. Auf der Rezeptseite
	   hängt die linke Schiene an `position: sticky` — und die wirkt nicht
	   mehr, sobald ein Vorfahre den Überlauf abschneidet. */
	overflow: visible !important;

	/* Und es setzt `filter: hue-rotate(0deg)` — sichtbar wirkungslos, aber
	   folgenreich: Ein Element mit `filter` wird zum Bezugsrahmen für
	   `position: fixed`. Das mobile Menü, das den ganzen Bildschirm füllen
	   soll, war dadurch 108 px hoch statt 844. */
	filter: none !important;
}

body.hbm-redesign .et_pb_section[class*="hbm-"] {
	padding: 72px 0;

	/* Divi setzt zwischen zwei Zeilen derselben Sektion 60 px Flex-Abstand.
	   Der Entwurf kennt keine Zeilen, nur Blöcke — der Wert muss deshalb aus
	   dem Entwurf kommen und nicht aus Divis Voreinstellung. */
	gap: var(--hbm-zeilenluft);
}

body.hbm-redesign.et-db #et-boc .et-l .et_pb_section[class*="hbm-"]:not(.hbm-randlos) > .et_pb_row {
	max-width: none !important;
	width: 100% !important;
	padding: 0 var(--hbm-rand) !important;
	margin-left: 0;
	margin-right: 0;
}

/* Nicht jeder Abschnitt soll über die volle Breite laufen. `hbm-schmal`
   begrenzt die Zeile auf die Lesebreite und stellt sie mittig — für Blöcke,
   die auf einem 27-Zoll-Bildschirm sonst auseinanderfallen. */
body.hbm-redesign.et-db #et-boc .et-l .et_pb_section[class*="hbm-"].hbm-schmal > .et_pb_row {
	max-width: 1080px !important;
	margin-left: auto;
	margin-right: auto;
}

/* Kopf und Fuß sitzen bündig: Die dunkle Leiste beginnt oben ohne Luft und
   läuft bis an beide Ränder. Den Seitenabstand bringen die Bausteine selbst
   mit (.hbm-topbar, .hbm-kopf) — nur so ist die Fläche randlos und der Text
   trotzdem eingerückt.

   Dasselbe gilt für den Aufmacher der Rezeptseite: Das Foto läuft über die
   ganze Breite, der Text darin ist eingerückt. */
body.hbm-redesign .hbm-randlos {
	padding: 0 !important;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-randlos > .et_pb_row {
	max-width: none !important;
	width: 100% !important;
	padding: 0 !important;
	margin-left: 0;
	margin-right: 0;
}

/* Zwischen Versandhinweis und Logo gehört keine Luft — die Trennung macht die
   Farbe, nicht der Abstand. `.et_pb_section` steht im Selektor, damit die
   Regel die allgemeine darüber schlägt; ohne sie ist sie eine Klasse zu
   schwach und die 52 px bleiben stehen. */
body.hbm-redesign .et_pb_section.hbm-kopfbereich {
	gap: 0;
}

body.hbm-redesign .et_pb_section.hbm-footer {
	gap: 48px;
}

body.hbm-redesign .et_pb_section[class*="hbm-"] .et_pb_column {
	margin-bottom: 0 !important;
}

@media (max-width: 980px) {
	body.hbm-redesign .et_pb_section[class*="hbm-"] {
		padding: 44px 0;
	}
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section[class*="hbm-"]:not(.hbm-randlos) > .et_pb_row {
		padding: 0 var(--hbm-rand-mobil) !important;
	}
}

/* =========================================================================
   Startseite
   ========================================================================= */

/* Divi zentriert den Text in seinen Modulen. Der Entwurf ist durchgehend
   linksbündig — nur an einer Stelle zu korrigieren ist verlässlicher, als es
   in jedem Modul einzeln zu setzen. */
body.hbm-redesign .et_pb_section[class*="hbm-"] .et_pb_text,
body.hbm-redesign .et_pb_section[class*="hbm-"] .et_pb_text_inner,
body.hbm-redesign .et_pb_section[class*="hbm-"] h1,
body.hbm-redesign .et_pb_section[class*="hbm-"] h2,
body.hbm-redesign .et_pb_section[class*="hbm-"] h3,
body.hbm-redesign .et_pb_section[class*="hbm-"] h4,
body.hbm-redesign .et_pb_section[class*="hbm-"] p {
	text-align: left !important;
}

/* Divi sperrt Überschriften; der Entwurf tut das nur bei Augenbrauen. */
body.hbm-redesign .et_pb_section[class*="hbm-"] h2,
body.hbm-redesign .et_pb_section[class*="hbm-"] h3,
body.hbm-redesign .et_pb_section[class*="hbm-"] h4 {
	letter-spacing: normal;
}

/* Überschriftengrößen aus dem Entwurf (H1 52/44, H2 36, H3 24). Der Aufmacher
   weicht bewusst ab und setzt seine 58 px selbst. */
body.hbm-redesign .et_pb_section[class*="hbm-"] h2 {
	font-size: 36px;
	line-height: 1.2;
	font-weight: 500;
	margin: 0;
}

body.hbm-redesign .et_pb_section[class*="hbm-"] h3 {
	font-size: 24px;
	line-height: 1.3;
	font-weight: 500;
	margin: 0 0 10px;
}

body.hbm-redesign .et_pb_section[class*="hbm-"] p {
	font-size: 17px;
	line-height: 1.75;
}

/* Abschnittsabstand: im Entwurf 96 px oben und unten. */
body.hbm-redesign .hbm-grussbereich,
body.hbm-redesign .hbm-schrittbereich,
body.hbm-redesign .hbm-warumbereich,
body.hbm-redesign .hbm-hofladen,
body.hbm-redesign .hbm-rezeptbereich,
body.hbm-redesign .hbm-wegebereich {
	padding: var(--hbm-abschnitt) 0;
}

/* Divis Zeilen sind Flex-Container mit prozentualen Abständen. Für die
   Rasterabstände aus dem Entwurf ist `gap` die ehrlichere Angabe. */
body.hbm-redesign .hbm-grussbereich > .et_pb_row {
	display: grid;
	grid-template-columns: 0.85fr 1.15fr;
	gap: 64px;
	align-items: center;
}

body.hbm-redesign .hbm-schritte,
body.hbm-redesign .hbm-wege {
	display: grid;
	gap: 44px;
}

body.hbm-redesign .hbm-schritte { grid-template-columns: repeat(4, 1fr); }
body.hbm-redesign .hbm-wege     { grid-template-columns: repeat(3, 1fr); }

body.hbm-redesign .hbm-warumbereich > .et_pb_row {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	align-items: center;
}

/* Innerhalb eines Rasters darf Divi den Spalten keine eigene Breite geben. */
body.hbm-redesign .hbm-grussbereich > .et_pb_row > .et_pb_column,
body.hbm-redesign .hbm-warumbereich > .et_pb_row > .et_pb_column,
body.hbm-redesign .hbm-schritte > .et_pb_column,
body.hbm-redesign .hbm-wege > .et_pb_column {
	width: auto !important;
	flex: none !important;
	margin: 0 !important;
}

@media (max-width: 980px) {
	body.hbm-redesign .hbm-grussbereich > .et_pb_row,
	body.hbm-redesign .hbm-warumbereich > .et_pb_row,
	body.hbm-redesign .hbm-schritte,
	body.hbm-redesign .hbm-wege {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

/* Kleine Zeile über einer Überschrift („AUENDORF · SEIT ÜBER 250 JAHREN"). */
.hbm-redesign .hbm-augenbraue {
	font: 500 12px/1 var(--hbm-mono);
	letter-spacing: .18em;
	text-transform: uppercase;
	color: var(--hbm-akzent);
	margin: 0 0 14px;
}

/* Der Aufmacher: randloses Foto, dunkler Verlauf von links, Text darüber.
   Werte aus dem Entwurf übernommen (Höhe 620 px, Verlauf 100°, Text bei
   64 px linksbündig und senkrecht mittig, höchstens 620 px breit). */

body.hbm-redesign .hbm-aufmacher {
	position: relative;
	min-height: 620px;
	display: flex;
	align-items: center;

	/* Die Sektion ist ein Flex-Container mit `flex-direction: column` — dort
	   richtet `align-items` waagerecht aus, senkrecht tut es
	   `justify-content`. Ohne die zweite Zeile klebte der Text oben. */
	justify-content: center;
	overflow: hidden;
	padding: 0 !important;

	/* Verlauf und Foto als ZWEI Ebenen einer Angabe, nicht als Pseudo-Element:
	   Ein `::before` blieb hier unsichtbar (gemessen: richtige Größe, aber
	   nicht gezeichnet). Zwei Hintergrundebenen sind ohnehin die knappere
	   Lösung — die erste liegt über der zweiten. */
	background-image:
		linear-gradient(100deg,
			rgba(30, 14, 9, .86) 0%,
			rgba(30, 14, 9, .62) 42%,
			rgba(30, 14, 9, 0) 72%),
		url("https://hagebuttenmark.de/wp-content/uploads/2020/11/AdobeStock_45591200-scaled.jpg");
	background-size: cover, cover;
	background-position: center, center;
	background-repeat: no-repeat, no-repeat;
}

body.hbm-redesign .hbm-aufmacher > .et_pb_row {
	position: relative;   /* über den Verlauf heben */
	z-index: 1;
}

.hbm-redesign .hbm-hero {
	max-width: 620px;
	display: flex;
	flex-direction: column;
	gap: 24px;
	color: #fff;
}

.hbm-redesign .hbm-hero h1 {
	margin: 0;
	font-family: var(--hbm-serif);
	font-weight: 500;
	font-size: 58px;
	line-height: 1.08;
	letter-spacing: -.01em;
	color: #fff;
}

.hbm-redesign .hbm-hero .hbm-augenbraue {
	margin: 0;
	color: var(--hbm-augenbraue-hell);
	letter-spacing: .2em;
}

.hbm-redesign .hbm-hero__text {
	margin: 0;
	font-size: 18px;
	line-height: 1.75;
	color: var(--hbm-auf-bild);
	max-width: 490px;
}

.hbm-redesign .hbm-hero__knoepfe {
	display: flex;
	gap: 14px;
	margin: 6px 0 0;
	flex-wrap: wrap;
}

/* Eckig, nicht rund — im Entwurf 2 px Radius. */
.hbm-redesign .hbm-knopf {
	display: inline-block;
	background: var(--hbm-akzent);
	color: #fff;
	padding: 16px 30px;
	border-radius: 2px;
	text-decoration: none;
	font: 500 15px/1 var(--hbm-sans);
}

.hbm-redesign .hbm-knopf:hover { color: #fff; opacity: .92; }

/* Der zweite Knopf im Aufmacher — heller Umriss, weil er auf dem Foto steht. */
.hbm-redesign .hbm-knopf--leise {
	background: transparent;
	color: #fff;
	border: 1.5px solid rgba(255, 255, 255, .6);
	padding: 15px 28px;
}

/* Dieselbe Form für helle Flächen. Getrennte Klasse statt Farbwechsel per
   Vererbung: Welcher Grund darunter liegt, weiß nur die Stelle, an der der
   Knopf gesetzt wird — nicht das Stylesheet. */
.hbm-redesign .hbm-knopf--umriss {
	background: transparent;
	color: var(--hbm-dunkel);
	border: 1.5px solid var(--hbm-dunkel);
	padding: 15px 28px;
}

.hbm-redesign .hbm-knopf--umriss:hover {
	background: var(--hbm-dunkel);
	color: #fff;
}

/* Die vier Zusagen: eigener dunkler Streifen unter dem Foto, nicht im Bild. */
body.hbm-redesign .hbm-vertrauensleiste {
	background-color: var(--hbm-dunkel) !important;
	padding: 0 !important;
}

.hbm-redesign .hbm-vertrauen {
	display: flex;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 8px 28px;
	padding: 16px var(--hbm-rand);
	color: var(--hbm-leiste-text);
	font-size: 13.5px;
	letter-spacing: .03em;
}

@media (max-width: 980px) {
	body.hbm-redesign .hbm-aufmacher { min-height: 460px; }
	.hbm-redesign .hbm-hero h1 { font-size: clamp(32px, 7vw, 58px); }
	.hbm-redesign .hbm-vertrauen {
		justify-content: flex-start;
		padding: 14px var(--hbm-rand-mobil);
	}
}

.hbm-redesign .hbm-grusswort {
	font-family: var(--hbm-serif);
	font-size: 33px;
	line-height: 1.42;
	font-style: italic;
	font-weight: 400;
	color: var(--hbm-dunkel);
	margin: 0;
}

.hbm-redesign .hbm-grusswort__wer {
	font-family: var(--hbm-sans);
	font-style: normal;
	font-size: 14px;
	color: #6b5a4e;
	margin-top: 14px;
}

/* Jeder Schritt beginnt mit einem Strich, der erste in Rot — im Entwurf das
   Zeichen dafür, wo der Ablauf anfängt. Der Strich sitzt an der Spalte, nicht
   am Textmodul: Divi legt um jedes Modul noch eine Hülle, und die Linie soll
   über der ganzen Spaltenbreite stehen. */
body.hbm-redesign .hbm-schritte > .et_pb_column {
	border-top: 2px solid #ddd0be;
	padding-top: 20px;
}

body.hbm-redesign .hbm-schritte > .et_pb_column:first-child {
	border-top-color: var(--hbm-akzent);
}

/* Auch hier der ID-Präfix: Divi setzt Absatz- und Überschriftengrössen mit
   derselben ID-Regel wie die Zeilen-Presets. Ohne ihn blieb die Zahl bei
   17 px statt 34 (gemessen). */
body.hbm-redesign.et-db #et-boc .et-l p.hbm-schritt__nummer {
	font-family: var(--hbm-serif);
	font-size: 34px;
	line-height: 1;
	letter-spacing: 0;
	color: var(--hbm-akzent);
	margin: 0 0 14px;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-schritte h3 {
	font-size: 21px;
	font-weight: 500;
	margin: 0 0 14px;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-schritte p:not(.hbm-schritt__nummer) {
	font-size: 15px;
	line-height: 1.7;
	color: #6f6055;
	margin: 0;
}

/* Überschrift links, Weiterführung rechts — kommt auf der Startseite
   dreimal vor. */
.hbm-redesign .hbm-abschnittskopf {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	border-bottom: 1px solid var(--hbm-linie);
	padding-bottom: 14px;
	margin-bottom: 28px;
}

.hbm-redesign .hbm-abschnittskopf h2 { margin: 0; }

.hbm-redesign .hbm-weiter {
	font-size: 14.5px;
	color: var(--hbm-akzent);
	text-decoration: none;
	white-space: nowrap;
}

/* Jeder Weg steht im Entwurf in einem eigenen Kasten. Der Rahmen sitzt an der
   Spalte, damit alle drei gleich hoch sind und der Link unten bündig steht. */
body.hbm-redesign .hbm-wege > .et_pb_column {
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	padding: 34px;
	display: flex;
	flex-direction: column;
	gap: 13px;
	background: var(--hbm-papier);
}

body.hbm-redesign .hbm-wege > .et_pb_column > .et_pb_module {
	display: flex;
	flex-direction: column;
	gap: 13px;
	flex: 1;
}

body.hbm-redesign .hbm-wege .et_pb_text_inner {
	display: flex;
	flex-direction: column;
	gap: 13px;
	flex: 1;
}

body.hbm-redesign.et-db #et-boc .et-l h3.hbm-weg__titel {
	font-family: var(--hbm-serif);
	font-size: 23px;
	font-weight: 500;
	margin: 0;
}

/* Der Text schiebt den Link nach unten, damit die drei Links auf einer Linie
   sitzen — auch wenn die Texte verschieden lang sind. */
body.hbm-redesign.et-db #et-boc .et-l p.hbm-weg__text {
	margin: 0;
	font-size: 15px;
	line-height: 1.75;
	color: #6f6055;
	flex: 1;
}

.hbm-redesign .hbm-wege p:last-child { margin: 0; }

.hbm-redesign .hbm-wege .hbm-augenbraue { margin: 0; }

/* WooCommerce hängt unter die Produktreihe eine leere Aufzählung mit
   Standardabstand. Zusammen mit dem Abschnittsabstand wurde daraus eine
   sichtbare Lücke. */
body.hbm-redesign .hbm-hofladen ul.products {
	margin-bottom: 0;
}

/* WooCommerce räumt seine Float-Spalten mit einem Clearfix auf. Sobald die
   Liste ein Raster ist, werden aus `::before` und `::after` echte Zellen: Das
   erste Produkt rutschte dadurch in die zweite Spalte, und aus zwei Zeilen
   wurden drei (gemessen am iPhone-Format). */
body.hbm-redesign .hbm-hofladen ul.products::before,
body.hbm-redesign .hbm-hofladen ul.products::after {
	display: none !important;
}

body.hbm-redesign .hbm-hofladen {
	padding-bottom: 40px;
}

/* =========================================================================
   Kopfleiste
   ========================================================================= */

.hbm-topbar {
	background: var(--hbm-dunkel);
	color: var(--hbm-hell-auf-dunkel);
	padding: 9px var(--hbm-rand-kopf);
	font-size: 12.5px;

	/* Divis Fliesstext-Zeilenhöhe (2.3) machte aus der 40 px flachen Leiste
	   eine 55 px hohe. Der Entwurf gibt keine an — für eine einzeilige Leiste
	   ist knapp über der Schriftgrösse richtig. */
	line-height: 1.4;
	letter-spacing: .04em;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
}

.hbm-topbar__rechts { opacity: .75; }

/* Die Kopfzeile selbst: Logo links, Menü mittig, Aktionen rechts.
   Divi legt um jedes Modul eigene Hüllen; deshalb greifen die Regeln auf die
   Spalten der Zeile und nicht auf die Module. */

/* Der Kopfbereich steht auf Papierweiss — die Zeilen sind durchsichtig
   gesetzt, die Fläche gehört hierher. */
body.hbm-redesign .hbm-kopfbereich {
	background-color: var(--hbm-papier) !important;
}

/* Die weisse Kopfzeile bleibt beim Scrollen stehen, die dunkle Leiste darüber
   nicht — sie sagt ihre zwei Sätze einmal und darf dann weg.

   `position: sticky` statt `fixed`: Die Zeile bleibt Teil des Textflusses,
   nichts muss um ihre Höhe nach unten geschoben werden, und der Aufmacher
   darunter behält seine Geometrie. Der Schatten kommt erst, wenn die Zeile
   wirklich klebt — dafür sorgt der Schwellenwert-Beobachter im Skript. */
/* WARUM DER GANZE KOPF KLEBT UND NICHT NUR DIE ZEILE:
   `position: sticky` wirkt nur innerhalb des Elternelements. Die Zeile sitzt
   in der Kopfsektion, und die ist 131 px hoch — die Zeile klebte also genau
   131 px lang und scrollte dann mit weg (gemessen). Der Kopf-Wrapper dagegen
   liegt direkt in `#et-boc`, das die ganze Seite umfasst.

   Der negative Versatz erledigt den Rest: Der Kopf klebt um die Höhe der
   dunklen Leiste nach oben verschoben, die Leiste rutscht dadurch aus dem
   Bild und übrig bleibt genau die weisse Zeile. */
body.hbm-redesign .et-l--header {
	position: sticky;
	top: calc(-1 * var(--hbm-topbar-hoehe));
	z-index: 9000;
}

/* Die Fläche muss gesetzt sein, sonst scheint beim Kleben der Seiteninhalt
   durch. Ein Schatten kommt bewusst nicht dazu: Die feine Linie unter der
   Zeile trennt genug, und sie ist immer da — kein Zustand, der umschlagen
   und dabei flackern kann. */
body.hbm-redesign .hbm-kopf {
	background: var(--hbm-papier);
}

/* Angemeldete sehen die WordPress-Leiste; sie ist selbst fest und würde die
   Kopfzeile sonst verdecken. */
body.admin-bar.hbm-redesign .et-l--header {
	top: calc(32px - var(--hbm-topbar-hoehe));
}

@media (max-width: 782px) {
	body.admin-bar.hbm-redesign .et-l--header {
		top: calc(46px - var(--hbm-topbar-hoehe));
	}
}

/* Damit `sticky` überhaupt greift, darf kein Vorfahre den Überlauf
   abschneiden — Divis Sektion tut das sonst. */
body.hbm-redesign .hbm-kopfbereich,
body.hbm-redesign .et-l--header,
body.hbm-redesign #et-boc,
body.hbm-redesign #page-container {
	overflow: visible !important;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-kopfbereich > .et_pb_row.hbm-kopf {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 40px;
	padding: 20px var(--hbm-rand-kopf) !important;
	border-bottom: 1px solid var(--hbm-linie);
}

.hbm-redesign .hbm-kopf__logo img {
	height: 54px;
	width: auto;
	display: block;
}

/* Divis Menü-Modul bringt eine weiße Fläche mit — im Entwurf steht das Menü
   auf dem Papierweiß des Kopfes. Die Regel räumt sie ab, samt der Fläche, die
   das Modul zusätzlich um die Liste legt. */
body.hbm-redesign .hbm-kopf__menue,
body.hbm-redesign .hbm-kopf__menue .et_pb_menu__wrap,
body.hbm-redesign .hbm-kopf__menue .et_pb_menu__menu,
body.hbm-redesign .hbm-kopf__menue nav,
body.hbm-redesign .hbm-kopf__menue ul.et-menu {
	background: transparent !important;
}

body.hbm-redesign .hbm-kopf__menue .et_pb_menu__menu > nav > ul.et-menu {
	gap: 32px;
	align-items: center;
}

.hbm-redesign .hbm-kopf__menue ul.et-menu > li {
	padding: 0;
	margin: 0;
}

.hbm-redesign .hbm-kopf__menue ul.et-menu > li > a {
	font-family: var(--hbm-sans);
	font-size: 15px;
	font-weight: 400;
	color: var(--hbm-text);
	padding: 0 0 7px;
	text-decoration: none;
	opacity: 1;
	position: relative;
	transition: color .15s ease;
}

/* Der rote Balken unter dem aktuellen Punkt — im Entwurf das einzige
   Erkennungszeichen für die aktive Seite. Als eigenes Element statt als
   `border-bottom`, damit er beim Überfahren wachsen kann, ohne die Zeile zu
   verschieben. */
.hbm-redesign .hbm-kopf__menue ul.et-menu > li > a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 2px;
	background: var(--hbm-akzent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .18s ease;
}

.hbm-redesign .hbm-kopf__menue ul.et-menu > li > a:hover {
	color: var(--hbm-akzent);
}

.hbm-redesign .hbm-kopf__menue ul.et-menu > li > a:hover::after,
.hbm-redesign .hbm-kopf__menue ul.et-menu > li.current-menu-item > a::after,
.hbm-redesign .hbm-kopf__menue ul.et-menu > li.current-menu-ancestor > a::after {
	transform: scaleX(1);
}

/* Divi setzt für den aktiven Punkt eine eigene Farbe und halbe Deckkraft. */
.hbm-redesign .hbm-kopf__menue ul.et-menu > li.current-menu-item > a {
	color: var(--hbm-text);
	opacity: 1;
}

/* Der Pfeil hinter „Shop“ zeigt an, dass darunter mehr liegt. Divi bringt
   ihn über seine Icon-Schrift mit; hier ist er gezeichnet — dieselbe
   Überlegung wie beim Schliesskreuz im Handymenü. */
.hbm-redesign .hbm-kopf__menue ul.et-menu > li.menu-item-has-children > a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.hbm-redesign .hbm-kopf__menue ul.et-menu > li.menu-item-has-children > a::before {
	content: "";
	width: 0;
	height: 0;
	border-left: 4px solid transparent;
	border-right: 4px solid transparent;
	border-top: 4px solid currentColor;
	opacity: .55;
	order: 2;
	position: static;
	margin-top: 1px;
}

/* Das Untermenü: heller Kasten mit dünnem Rahmen statt Divis Schatten. */
.hbm-redesign .hbm-kopf__menue ul.sub-menu {
	background: var(--hbm-papier);
	border: 1px solid var(--hbm-linie);
	border-top: 2px solid var(--hbm-akzent);
	box-shadow: 0 12px 24px -18px rgba(50, 25, 15, .5);
	padding: 8px 0;
}

.hbm-redesign .hbm-kopf__menue ul.sub-menu li a {
	font-size: 14.5px;
	color: var(--hbm-text);
	padding: 9px 18px;
	width: auto;
	position: relative;
	display: block;
}

/* Dieselbe rote Linie wie oben, nur innerhalb des Kastens: Sie sitzt unter
   dem Text und wächst von links. */
.hbm-redesign .hbm-kopf__menue ul.sub-menu li a::after {
	content: "";
	position: absolute;
	left: 18px;
	right: 18px;
	bottom: 4px;
	height: 2px;
	background: var(--hbm-akzent);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform .18s ease;
}

.hbm-redesign .hbm-kopf__menue ul.sub-menu li a:hover {
	color: var(--hbm-akzent);
	background: transparent;
}

.hbm-redesign .hbm-kopf__menue ul.sub-menu li a:hover::after,
.hbm-redesign .hbm-kopf__menue ul.sub-menu li.current-menu-item > a::after {
	transform: scaleX(1);
}

.hbm-redesign .hbm-kopf__menue ul.sub-menu li.current-menu-item > a {
	color: var(--hbm-akzent);
}

.hbm-redesign .hbm-kopf__aktionen {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 18px;
}

/* Suche und Konto zeigen im Entwurf nur ihr Zeichen. Die Beschriftung bleibt
   im Markup und wird nur optisch entfernt: `display: none` nähme sie auch
   Screenreadern und der Tastaturnavigation weg, und dann wären die beiden
   Links unbenannt. */
.hbm-redesign .hbm-nur-vorlesen {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.hbm-redesign .hbm-kopf__zeichen {
	display: inline-flex;
	align-items: center;
	color: var(--hbm-text);
	line-height: 0;
	text-decoration: none;
}

.hbm-redesign .hbm-kopf__zeichen:hover { color: var(--hbm-akzent); }

.hbm-redesign .hbm-zeichen {
	display: block;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.hbm-redesign .hbm-kopf__warenkorb-huelle { display: inline-flex; }

.hbm-redesign .hbm-kopf__warenkorb {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: var(--hbm-akzent);
	color: #fff;
	padding: 10px 17px;
	border-radius: 999px;
	font-size: 14px;

	/* Ohne Angabe erbt der Chip Divis Fliesstext-Zeilenhöhe und wird 57 statt
	   38 px hoch — er würde die ganze Kopfzeile auseinanderdrücken. */
	line-height: 1.2;
	font-weight: 500;
	text-decoration: none;
	white-space: nowrap;
}

.hbm-redesign .hbm-kopf__warenkorb:hover { color: #fff; opacity: .9; }

@media (max-width: 980px) {
	.hbm-redesign .hbm-kopf {
		flex-wrap: wrap;
		gap: 16px;
		padding: 14px var(--hbm-rand-mobil);
	}
	.hbm-redesign .hbm-kopf__menue { order: 3; width: 100%; }
}

/* Auf dem Handy hat die zweite Zeile keinen Platz — und die Telefonnummer
   steht ohnehin im Fuß. Sie zu quetschen macht beide Angaben unleserlich. */
@media (max-width: 767px) {
	.hbm-topbar {
		padding: 8px var(--hbm-rand-mobil);
		font-size: 11.5px;
		justify-content: center;
		text-align: center;
	}
	.hbm-topbar__rechts { display: none; }
}

/* =========================================================================
   Fußbereich
   ========================================================================= */

.hbm-footer {
	background: var(--hbm-dunkel);
	color: var(--hbm-hell-auf-dunkel);
	font-family: var(--hbm-sans);
	padding: 64px var(--hbm-rand) 28px;
}

.hbm-footer a {
	color: var(--hbm-hell-auf-dunkel);
	text-decoration: none;
	font-size: 14.5px;
	line-height: 2;
}

.hbm-footer a:hover { color: #fff; text-decoration: underline; }

.hbm-footer__spalten {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1.5fr;
	gap: 56px;
}

.hbm-footer__titel {
	font-size: 12px;
	letter-spacing: .14em;
	color: var(--hbm-leise);
	text-transform: uppercase;
	display: block;
	margin-bottom: 13px;
}

.hbm-footer__logo img {
	max-width: 210px;
	height: auto;
	margin-bottom: 16px;
	display: block;
}

.hbm-footer__adresse {
	font-size: 14px;
	line-height: 1.75;
	color: var(--hbm-gedaempft);
	max-width: 270px;
	margin: 0 0 12px;
}

.hbm-footer__notiz {
	font-size: 13px;
	line-height: 1.7;
	color: var(--hbm-leise);
	margin: 0;
}

.hbm-footer__zahlarten {
	display: flex;
	flex-wrap: wrap;
	gap: 9px;
	margin-top: 14px;
}

.hbm-footer__zahlart {
	border: 1px solid #4d372c;
	border-radius: 2px;
	padding: 6px 11px;
	font-size: 12px;
	color: var(--hbm-gedaempft);
}

/* Der Trennstrich gehört über die ganze Seitenbreite, nicht nur über den
   Text: Er schliesst den Fuss ab. Deshalb sitzt er an der Zeile, und die
   Zeile bringt ihn ohne Innenabstand bis an beide Ränder. */
body.hbm-redesign .hbm-footer > .et_pb_row.hbm-footer__abschluss {
	border-top: 1px solid var(--hbm-linie-dunkel);
	margin-top: 48px;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-footer__unten {
	margin: 0;
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	font-size: 11.5px;
	line-height: 1.6;
	color: var(--hbm-sehr-leise);
}

.hbm-footer__copyright { text-align: left; }
.hbm-footer__preise    { text-align: right; }

/* Die Spaltenregel oben („Breite aus dem Inhalt“) ist für die vier
   Fussspalten gedacht. In der Abschlusszeile steht nur eine Spalte, und die
   soll die ganze Breite nehmen — sonst endet „Alle Preise …“ in der Mitte
   statt rechts (gemessen: Spalte 647 statt 1177 px). */
body.hbm-redesign .hbm-footer > .et_pb_row.hbm-footer__abschluss > .et_pb_column {
	width: 100% !important;
	flex: 1 1 auto !important;
}

@media (max-width: 980px) {
	.hbm-footer__spalten { grid-template-columns: 1fr 1fr; gap: 36px; }
}

@media (max-width: 600px) {
	.hbm-footer { padding: 44px var(--hbm-rand-mobil) 24px; }
	.hbm-footer__spalten { grid-template-columns: 1fr; gap: 32px; }
	body.hbm-redesign.et-db #et-boc .et-l p.hbm-footer__unten {
		flex-direction: column;
		gap: 6px;
		font-size: 11px;
	}

	/* Untereinander ist rechtsbündig sinnlos — beides beginnt links. */
	.hbm-footer__preise { text-align: left; }

	body.hbm-redesign.et-db #et-boc .et-l .hbm-footer > .et_pb_row.hbm-footer__abschluss {
		padding: 24px var(--hbm-rand-mobil) !important;
	}
}

/* =========================================================================
   Produktangaben aus hagebuttenmark-core
   =========================================================================

   Die Grundformatierung liefert das Plugin selbst mit, damit die Angaben auch
   ohne dieses Theme lesbar bleiben. Hier steht nur die Feinabstimmung auf das
   Redesign.
   ========================================================================= */

/* Diese drei Klassen gibt das Plugin schon heute auf jeder Produktseite aus.
   Deshalb ebenfalls hinter dem Schalter — sonst änderte das blosse Aktivieren
   des Child-Themes das Aussehen der Produktseiten. */

.hbm-redesign .hbm-naehrwerte th,
.hbm-redesign .hbm-naehrwerte td { border-bottom: 1px solid var(--hbm-linie); }

.hbm-redesign .hbm-zutaten__liste { line-height: 1.8; }

.hbm-redesign .hbm-versandinfo {
	background: #fdf3f2;
	border-left: 3px solid var(--hbm-akzent);
	padding: 12px 16px;
	font-size: 14px;
	line-height: 1.6;
}

/* =========================================================================
   Rezeptübersicht
   ========================================================================= */

/* Auswahlzeile über dem Raster. Echte Links, kein JavaScript — jede Auswahl
   hat eine eigene Adresse und ist teilbar. */
.hbm-redesign .hbm-filter {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0 0 44px;
}

.hbm-redesign .hbm-filter__knopf {
	display: inline-block;
	padding: 9px 18px;
	border: 1px solid var(--hbm-linie);
	border-radius: 2px;
	font-size: 14px;
	color: var(--hbm-text);
	text-decoration: none;
	background: transparent;
	white-space: nowrap;
}

.hbm-redesign .hbm-filter__knopf:hover {
	border-color: var(--hbm-dunkel);
	color: var(--hbm-text);
}

.hbm-redesign .hbm-filter__knopf--aktiv {
	background: var(--hbm-dunkel);
	border-color: var(--hbm-dunkel);
	color: #fff;
}

.hbm-redesign .hbm-rezeptliste {
	display: grid;
	grid-template-columns: repeat(var(--hbm-spalten, 3), 1fr);
	gap: 44px 32px;
}

/* Die Kachel ist im Entwurf eine Karte: heller Grund, dünner Rahmen, Bild
   bündig oben, Text mit 22 px Innenabstand. Ohne den Rahmen liefen Bild und
   Text auf dem Leinen-Hintergrund ineinander. */
.hbm-redesign .hbm-rezeptkachel {
	display: flex;
	flex-direction: column;
	text-decoration: none;
	color: inherit;
	background: var(--hbm-papier);
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	overflow: hidden;
	height: 100%;
}

/* Alles außer dem Bild bekommt den Innenabstand — das Bild sitzt bündig. */
.hbm-redesign .hbm-rezeptkachel > :not(.hbm-rezeptkachel__rahmen) {
	padding-left: 22px;
	padding-right: 22px;
}

.hbm-redesign .hbm-rezeptkachel > .hbm-augenbraue { padding-top: 4px; }
.hbm-redesign .hbm-rezeptkachel > :last-child { padding-bottom: 22px; }

/* Fester Bildausschnitt, damit die Kacheln eine Linie halten — auch wenn die
   Fotos nach und nach in unterschiedlichen Formaten dazukommen. */
.hbm-redesign .hbm-rezeptkachel__rahmen {
	display: block;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	background: var(--hbm-sand);
	margin-bottom: 18px;
}

.hbm-redesign .hbm-rezeptkachel__bild,
.hbm-redesign .hbm-rezeptkachel__platzhalter {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hbm-redesign .hbm-rezeptkachel .hbm-augenbraue {
	display: block;
	margin: 0 0 10px;
}

body.hbm-redesign.et-db #et-boc .et-l h3.hbm-rezeptkachel__titel {
	font-family: var(--hbm-serif);
	font-size: 20px;
	line-height: 1.3;
	font-weight: 500;
	margin: 0 0 9px;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-rezeptkachel__text {
	font-size: 14px;
	line-height: 1.7;
	color: #6f6055;
	margin: 0;
}

/* Der Produkthinweis ist eine Fußnote, kein zweiter Aufruf zum Kaufen —
   deshalb leise statt in der Akzentfarbe. */
body.hbm-redesign.et-db #et-boc .et-l p.hbm-rezeptkachel__produkt {
	font-size: 13px;
	color: var(--hbm-leise);
	margin: 10px 0 0;
}

/* Auf der schmalen Kachel bricht „Plätzchen & Weihnachtsgebäck · 50 Min“
   sonst in zwei Zeilen. */
.hbm-redesign .hbm-rezeptkachel .hbm-augenbraue {
	font-size: 10.5px;
	letter-spacing: .09em;
	color: #a08f7d;
	margin: 0 0 9px;
}

.hbm-redesign .hbm-rezeptliste__leer {
	color: var(--hbm-leise);
	font-size: 16px;
}

@media (max-width: 980px) {
	.hbm-redesign .hbm-rezeptliste { grid-template-columns: repeat(2, 1fr); gap: 32px 20px; }
}

@media (max-width: 600px) {
	.hbm-redesign .hbm-rezeptliste { grid-template-columns: 1fr; }
}

/* Seitenkopf für Unterseiten (Rezepte, Wochenmarkt, Firma). */
.hbm-redesign .hbm-seitenkopf { max-width: 720px; }

.hbm-redesign .hbm-seitenkopf h1 {
	font-family: var(--hbm-serif);
	font-size: 44px;
	line-height: 1.12;
	font-weight: 500;
	margin: 0 0 18px;
}

.hbm-redesign .hbm-seitenkopf__text {
	font-size: 17px;
	line-height: 1.75;
	color: var(--hbm-sehr-leise);
	margin: 0;
}

body.hbm-redesign .hbm-seitenkopfbereich { padding: 72px 0 44px; }
body.hbm-redesign .hbm-rezeptuebersicht  { padding: 0 0 var(--hbm-abschnitt); }

/* Fuß: Raster und Abstände aus dem Entwurf (1.4 / 1 / 1 / 1.5, Lücke 56 px,
   Innenabstand 64 px oben, 44 px seitlich, 28 px unten). */
body.hbm-redesign.et-db #et-boc .et-l .hbm-footer > .et_pb_row.hbm-footer__spalten {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1.5fr;
	gap: 56px;
	padding: 64px 44px 0 !important;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-footer > .et_pb_row.hbm-footer__abschluss {
	padding: 28px 44px !important;
}

body.hbm-redesign .hbm-footer > .et_pb_row > .et_pb_column {
	width: auto !important;
	flex: none !important;
	margin: 0 !important;

	/* Ohne die Begrenzung nimmt die Spalte die Breite ihres längsten Textes an
	   — auf dem Handy schob die Copyright-Zeile die ganze Seite auf 612 px und
	   die Seite liess sich seitlich schieben. */
	max-width: 100%;
	min-width: 0;
}

@media (max-width: 980px) {
	body.hbm-redesign.et-db #et-boc .et-l .hbm-footer > .et_pb_row.hbm-footer__spalten {
		grid-template-columns: 1fr 1fr;
		gap: 32px;
		padding: 44px var(--hbm-rand-mobil) 0 !important;
	}
}

@media (max-width: 600px) {
	body.hbm-redesign.et-db #et-boc .et-l .hbm-footer > .et_pb_row.hbm-footer__spalten {
		grid-template-columns: 1fr;
	}
}

/* =========================================================================
   Rezept-Detailseite

   Ein Layout für alle Rezepte. Die Inhalte kommen als Shortcodes aus dem
   Plugin (HBM_Rezept_Seite); hier steht nur, wie sie aussehen.
   ========================================================================= */

body.hbm-redesign .hbm-rezeptinhalt {
	padding: 0 !important;
}

/* Der Aufmacher trägt das Beitragsbild als Hintergrund — gesetzt vom
   Shortcode, weil das Bild pro Rezept wechselt. Der Verlauf liegt in
   derselben Eigenschaft davor, nicht als ::before: Eine zweite Ebene über
   einem Divi-Abschnitt war beim Aufmacher der Startseite trotz korrekter
   Geometrie unsichtbar. */
.hbm-redesign .hbm-rezeptkopf {
	position: relative;
	/* Der Entwurf nennt 460 px; auf einem breiten Bildschirm wirkt das flach,
	   weil das Foto dort deutlich mehr Breite hat als in der 1440er Vorlage. */
	min-height: 540px;
	display: flex;
	align-items: flex-end;
	background-color: var(--hbm-dunkel);
	background-size: cover;
	background-position: center;
}

.hbm-redesign .hbm-rezeptkopf__inhalt {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 0 56px 44px;
	color: #fff;
	width: 100%;
}

.hbm-redesign .hbm-rezeptkopf__art {
	font-family: var(--hbm-mono);
	font-size: 11.5px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #f0b8b3;
}

.hbm-redesign .hbm-rezeptkopf__titel {
	margin: 0;
	font-size: 46px;
	line-height: 1.1;
	font-weight: 500;
	color: #fff;
}

.hbm-redesign .hbm-rezeptkopf__eckdaten {
	display: flex;
	flex-wrap: wrap;
	gap: 26px;
	font-size: 15px;
	color: #e6d5c6;
}

/* Der Trenner steht als eigenes Element im Markup, damit er beim Umbruch
   nicht allein in einer Zeile landet. */
.hbm-redesign .hbm-rezeptkopf__eckdaten span[aria-hidden] {
	opacity: .5;
}

/* Zwei Spalten: links die feste Schiene mit Zutaten und Produkt, rechts die
   Zubereitung. Divis Raster kennt nur Bruchteile — die 360 px aus dem Entwurf
   gehen nur als Grid. */
body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-rezeptinhalt > .et_pb_row.hbm-rezeptzeile {
	display: grid;
	grid-template-columns: 360px 1fr;
	gap: 56px;
	align-items: start;
	padding: 64px 56px 76px !important;
	max-width: none !important;
	width: 100% !important;
}

body.hbm-redesign .hbm-rezeptzeile > .et_pb_column {
	width: auto !important;
	flex: none !important;
	margin: 0 !important;
}

/* Die linke Schiene läuft mit, solange rechts noch Schritte kommen. */
body.hbm-redesign .hbm-rezeptzeile > .et_pb_column:first-child {
	position: sticky;
	top: 24px;
	display: flex;
	flex-direction: column;
	gap: 26px;
}

body.hbm-redesign .hbm-rezeptzeile .et_pb_module { margin-bottom: 0; }

/* --- Zutaten ----------------------------------------------------------- */

.hbm-redesign .hbm-zutatenkasten {
	background: var(--hbm-leinen);
	border-radius: 3px;
	padding: 30px;
}

.hbm-redesign .hbm-zutatenkasten h2 {
	margin: 0 0 16px;
	font-size: 23px;
	font-weight: 500;
}

.hbm-redesign .hbm-zutaten__zeile {
	display: flex;
	justify-content: space-between;
	gap: 16px;
	font-size: 15.5px;
	line-height: 1.5;
	color: var(--hbm-text);
	border-bottom: 1px dotted #d8cbb9;
	padding-bottom: 9px;
	margin-bottom: 11px;
}

/* Die letzte Zutat braucht keinen Strich — darunter kommt nichts mehr. */
.hbm-redesign .hbm-zutaten__zeile:last-child {
	border-bottom: 0;
	padding-bottom: 0;
	margin-bottom: 0;
}

.hbm-redesign .hbm-zutaten__menge {
	color: #6f6055;
	white-space: nowrap;
}

/* Enger gesperrt als die übrigen Augenbrauen: In der 360 px schmalen Schiene
   bricht „Für den Knetteig“ sonst in zwei Zeilen.

   Der ID-Präfix ist nötig, weil Divi Überschriftengrößen mit derselben
   ID-Regel setzt wie die Zeilen-Presets — ohne ihn blieb die Zeile bei 24 px
   stehen (gemessen). Betrifft nur Überschriften-Tags in unseren Bausteinen;
   Absätze und <span> kommen ohne aus. */
body.hbm-redesign.et-db #et-boc .et-l h3.hbm-zutaten__gruppe,
body.hbm-redesign.et-db #et-boc .et-l h3.hbm-rezept-schritte__gruppe {
	font-family: var(--hbm-mono);
	font-size: 10.5px;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--hbm-akzent);
	margin: 22px 0 12px;
}

.hbm-redesign .hbm-zutaten__gruppe:first-child {
	margin-top: 0;
}

/* --- Das passende Produkt ---------------------------------------------- */

.hbm-redesign .hbm-produktkarte {
	display: flex;
	gap: 16px;
	align-items: center;
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	padding: 24px;
}

.hbm-redesign .hbm-produktkarte__bild {
	width: 72px;
	height: 72px;
	border-radius: 2px;
	overflow: hidden;
	background: var(--hbm-sand);
	flex-shrink: 0;
}

.hbm-redesign .hbm-produktkarte__bild img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.hbm-redesign .hbm-produktkarte__text {
	display: flex;
	flex-direction: column;
	gap: 6px;
	flex: 1;
}

.hbm-redesign .hbm-produktkarte__name {
	font-family: var(--hbm-serif);
	font-size: 17px;
	color: var(--hbm-text);
	text-decoration: none;
}

.hbm-redesign .hbm-produktkarte__preis {
	font-size: 14px;
	color: #8a7a6c;
}

.hbm-redesign .hbm-produktkarte__preis del { opacity: .6; }

.hbm-redesign .hbm-produktkarte__knopf {
	background: var(--hbm-akzent);
	color: #fff;
	text-align: center;
	padding: 9px;
	border-radius: 2px;
	font-size: 13.5px;
	font-weight: 500;
	line-height: 1.2;
	text-decoration: none;
}

.hbm-redesign .hbm-produktkarte__knopf:hover { color: #fff; opacity: .9; }

/* --- Zubereitung -------------------------------------------------------- */

.hbm-redesign .hbm-rezept-einleitung {
	margin: 0 0 34px;
	font-family: var(--hbm-serif);
	font-size: 22px;
	line-height: 1.6;
	color: var(--hbm-dunkel);
	text-wrap: pretty;
}

/* Die Nummern kommen aus einem Zähler statt aus der Liste selbst: Divi
   formatiert `ol`-Marker mit eigenem CSS, das sich nicht auf Lora und Rot
   umstellen lässt. */
.hbm-redesign ol.hbm-rezept-schritte {
	list-style: none;
	margin: 0;
	padding: 0;
	counter-reset: hbm-schritt;
}

.hbm-redesign ol.hbm-rezept-schritte > li {
	counter-increment: hbm-schritt;
	display: flex;
	gap: 22px;
	align-items: baseline;
	border-top: 1px solid #ece2d4;
	padding: 22px 0 0;
	margin: 0 0 26px;
	font-size: 16.5px;
	line-height: 1.85;
	color: #5c4c42;
}

.hbm-redesign ol.hbm-rezept-schritte > li::before {
	content: counter(hbm-schritt, decimal-leading-zero);
	font-family: var(--hbm-serif);
	font-size: 26px;
	color: var(--hbm-akzent);
	min-width: 44px;
	flex-shrink: 0;
}

/* Zwischenüberschriften in der Zubereitung beenden den Zähler nicht — die
   Schritte sind über den ganzen Ablauf hinweg durchnummeriert. Grösse und
   Sperrung kommen aus der Regel oben, hier nur der eigene Abstand. */
.hbm-redesign .hbm-rezept-schritte__gruppe {
	margin: 34px 0 0;
}

.hbm-redesign .hbm-rezept-tipp {
	background: var(--hbm-leinen);
	border-left: 3px solid var(--hbm-akzent);
	padding: 24px 28px;
	margin-top: 8px;
}

.hbm-redesign .hbm-rezept-tipp p {
	margin: 7px 0 0;
	font-size: 15.5px;
	line-height: 1.75;
	color: #5c4c42;
}

@media (max-width: 980px) {
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-rezeptinhalt > .et_pb_row.hbm-rezeptzeile {
		grid-template-columns: 1fr;
		gap: 40px;
		padding: 44px var(--hbm-rand-mobil) 56px !important;
	}

	/* Auf schmalen Geräten scrollt die Schiene mit dem Text — sie klebenzu
	   lassen würde die halbe Höhe kosten. */
	body.hbm-redesign .hbm-rezeptzeile > .et_pb_column:first-child {
		position: static;
	}

	.hbm-redesign .hbm-rezeptkopf {
		min-height: 320px;
	}

	.hbm-redesign .hbm-rezeptkopf__inhalt {
		padding: 0 var(--hbm-rand-mobil) 28px;
	}

	.hbm-redesign .hbm-rezeptkopf__titel {
		font-size: 32px;
	}
}

/* =========================================================================
   Wochenmarkt und Firma

   Beide Seiten teilen sich denselben zweispaltigen Kopf: links Augenbraue,
   Überschrift und Einleitung, rechts ein Kasten oder ein Bild.
   ========================================================================= */

body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-marktkopfbereich > .et_pb_row.hbm-marktkopf,
body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-firmakopfbereich > .et_pb_row.hbm-firmakopf {
	display: grid;
	grid-template-columns: 1.1fr .9fr;
	gap: 56px;
	align-items: end;
	padding: 56px var(--hbm-rand) 40px !important;
}

/* Auf der Firma-Seite steht rechts ein randloses Bild, links Text mit
   Innenabstand — deshalb sitzt der Abstand dort an der Textspalte. */
body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-firmakopfbereich > .et_pb_row.hbm-firmakopf {
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 56px;
	padding: 76px var(--hbm-rand) !important;
}

body.hbm-redesign .hbm-marktkopf > .et_pb_column,
body.hbm-redesign .hbm-firmakopf > .et_pb_column,
body.hbm-redesign .hbm-verkaufszeile > .et_pb_column,
body.hbm-redesign .hbm-hofzeile > .et_pb_column {
	width: auto !important;
	flex: none !important;
	margin: 0 !important;
}

body.hbm-redesign .hbm-marktkopfbereich {
	padding: 0 !important;
	border-bottom: 1px solid #ece2d4;
}

body.hbm-redesign .hbm-firmakopfbereich,
body.hbm-redesign .hbm-verkaufsbereich,
body.hbm-redesign .hbm-hofbereich {
	padding: 0 !important;
}

.hbm-redesign .hbm-firma__bild img {
	width: 100%;
	border-radius: 3px;
	display: block;
}

/* Der Kasten neben der Einleitung: „Terminangaben ohne Gewähr“. */
.hbm-redesign .hbm-hinweiskasten {
	background: var(--hbm-leinen);
	border-radius: 3px;
	padding: 26px 30px;
}

.hbm-redesign .hbm-hinweiskasten__label {
	margin: 0 0 8px;
	font-family: var(--hbm-mono);
	font-size: 11.5px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--hbm-akzent);
}

.hbm-redesign .hbm-hinweiskasten__satz {
	margin: 0 0 8px;
	font-family: var(--hbm-serif);
	font-size: 21px;
	line-height: 1.4;
}

.hbm-redesign .hbm-hinweiskasten p:last-child {
	margin: 0;
	font-size: 14px;
	color: #6f6055;
}

/* --- Die Terminliste aus dem Outlook-Kalender --------------------------- */

/* Das Kalender-Plugin bringt eigenes Markup mit — die Klassen unten stammen
   aus seiner Ausgabe, nicht aus dem Entwurf:

       <h3 class="ics-calendar-label">September 2026</h3>
       <div class="ics-calendar-date-wrapper">
         <h4 class="ics-calendar-date"><span data-date-format="j">17</span> …</h4>
         <dl class="events">
           <dt class="time">07:00 <span class="end_time">– 12:30</span></dt>
           <dd class="event"><span class="title">Markt Kaufbeuren</span>
             <div class="descloc"><div class="location">Kaiser-Max-Str. …</div></div>
           </dd>
         </dl>
       </div>

   Der Entwurf zeigt drei Spalten: Tag, Ort, Zeit. Die stehen im Markup nicht
   nebeneinander, sondern verschachtelt — deshalb zwei Raster ineinander und
   `order`, das die Zeit hinter den Ort schiebt. */

.hbm-redesign .hbm-markttermine .ics-calendar-label {
	font-family: var(--hbm-mono);
	font-size: 11.5px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--hbm-leise);
	margin: 34px 0 0;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--hbm-linie);
}

.hbm-redesign .hbm-markttermine .ics-calendar-label:first-child { margin-top: 0; }

.hbm-redesign .hbm-markttermine .ics-calendar-date-wrapper {
	display: grid;
	grid-template-columns: 210px 1fr;
	gap: 24px;
	align-items: baseline;
	padding: 22px 0;
	border-bottom: 1px solid var(--hbm-linie);
}

body.hbm-redesign .hbm-markttermine h4.ics-calendar-date {
	margin: 0;
	font-family: var(--hbm-serif);
	font-weight: 500;
	display: flex;
	align-items: baseline;
	gap: 8px;
}

.hbm-redesign .hbm-markttermine [data-date-format="j"] {
	font-size: 21px;
	color: var(--hbm-akzent);
}

.hbm-redesign .hbm-markttermine [data-date-format="F"] {
	font-family: var(--hbm-sans);
	font-size: 16px;
	color: #6f6055;
}

.hbm-redesign .hbm-markttermine dl.events {
	display: grid;
	grid-template-columns: 1.4fr 1fr;
	gap: 24px;
	align-items: baseline;
	margin: 0;
}

/* Die Zeit steht im Markup vor dem Termin; im Entwurf steht sie rechts. */
/* Das Plugin blendet die Zeit in der Listenansicht per eigenem CSS aus
   (gemessen: `display: none`) und zeigt sie erst beim Überfahren. Auf einer
   Marktseite ist die Uhrzeit aber die zweitwichtigste Angabe. */
.hbm-redesign .hbm-markttermine dl.events > dt.time {
	display: block !important;
	order: 2;
	font-size: 16px;
	color: var(--hbm-text);
	font-weight: 400;
	white-space: nowrap;
}

.hbm-redesign .hbm-markttermine dl.events > dd.event {
	order: 1;
	margin: 0;
}

.hbm-redesign .hbm-markttermine .end_time {
	color: #6f6055;
	display: inline !important;
	opacity: 1 !important;
	visibility: visible !important;
}

.hbm-redesign .hbm-markttermine .title {
	display: block;
	font-size: 17px;
	color: var(--hbm-text);
	font-weight: 400;
}

.hbm-redesign .hbm-markttermine .location {
	font-size: 14px;
	color: var(--hbm-leise);
	margin-top: 4px;
}

/* Vergangene Termine bleiben stehen, treten aber zurück. */
.hbm-redesign .hbm-markttermine [data-rel2today="past"] { opacity: .45; }

/* Der Kalender bringt eigene Rahmen und Hintergründe mit, die gegen die
   ruhige Fläche des Entwurfs arbeiten. */
.hbm-redesign .hbm-markttermine .ics-calendar,
.hbm-redesign .hbm-markttermine .ics-calendar * {
	background: transparent;
	border-radius: 0;
}

.hbm-redesign .hbm-markttermine .ics-calendar-subscribe,
.hbm-redesign .hbm-markttermine .ics-calendar-print { display: none; }

/* --- Verkaufsraum, Anfahrt ---------------------------------------------- */

.hbm-redesign .hbm-hofkasten h2,
.hbm-redesign .hbm-verkaufsraum h2 {
	margin: 0 0 18px;
	font-size: 32px;
	font-weight: 500;
	line-height: 1.25;
}

.hbm-redesign .hbm-hofkasten p,
.hbm-redesign .hbm-verkaufsraum p {
	margin: 0 0 18px;
	font-size: 16.5px;
	line-height: 1.85;
	color: #5c4c42;
}

.hbm-redesign .hbm-verkaufsraum__daten {
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 16px;
	color: var(--hbm-text);
}

.hbm-redesign .hbm-verkaufsraum__notiz { color: #6f6055; }

.hbm-redesign .hbm-hofkasten__adresse {
	font-size: 16px !important;
	color: var(--hbm-text) !important;
}

body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-hofbereich > .et_pb_row.hbm-hofzeile,
body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-verkaufsbereich > .et_pb_row.hbm-verkaufszeile {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
	padding: 76px var(--hbm-rand) !important;
}

/* Der Anfahrtskasten steht dort, wo im Entwurf eine Karte liegt. Warum kein
   eingebetteter Kartendienst: siehe wochenmarkt-bauen.py. */
.hbm-redesign .hbm-anfahrt {
	background: var(--hbm-papier);
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	padding: 30px 34px;
}

.hbm-redesign .hbm-anfahrt__adresse {
	margin: 14px 0 10px !important;
	font-family: var(--hbm-serif);
	font-size: 21px !important;
	line-height: 1.45;
	color: var(--hbm-text) !important;
}

.hbm-redesign .hbm-anfahrt__notiz {
	margin: 0 0 20px !important;
	font-size: 15.5px !important;
	line-height: 1.75;
	color: #6f6055 !important;
}

.hbm-redesign .hbm-anfahrt p:last-child { margin: 0; }

/* --- Firmengeschichte ---------------------------------------------------- */

.hbm-redesign .hbm-geschichte {
	max-width: 820px;
}

.hbm-redesign .hbm-geschichte h2 {
	margin: 16px 0 24px;
	font-size: 32px;
	font-weight: 500;
	line-height: 1.25;
}

.hbm-redesign .hbm-geschichte__text p {
	margin: 0 0 18px;
	font-size: 17px;
	line-height: 1.85;
	color: #5c4c42;
}

.hbm-redesign .hbm-geschichte__text p:last-child { margin-bottom: 0; }

@media (max-width: 980px) {
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-marktkopfbereich > .et_pb_row.hbm-marktkopf,
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-firmakopfbereich > .et_pb_row.hbm-firmakopf,
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-hofbereich > .et_pb_row.hbm-hofzeile,
	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-verkaufsbereich > .et_pb_row.hbm-verkaufszeile {
		grid-template-columns: 1fr;
		gap: 32px;
		padding: 44px var(--hbm-rand-mobil) !important;
	}
}

/* =========================================================================
   Handy und Tablet

   Der Entwurf zeigt die mobile Fassung ab Zeile 1695: 390 px Breite, alle
   Tap-Flächen mindestens 44 px, und ein Menü, das als dunkle Vollbildseite
   aufgeht statt als aufklappende Liste.

   Divi schaltet seine eigene Mobilfassung bei 980 px um — dieselbe Grenze
   gilt hier, damit nicht zwei Umbrüche kurz hintereinander passieren.
   ========================================================================= */

@media (max-width: 980px) {

	/* --- Kopf: Hamburger, Logo, Warenkorb --------------------------------- */

	/* Die Versandleiste fällt weg. Sie ist zweizeilig kaum lesbar, und beide
	   Angaben stehen im Fuß noch einmal.

	   Mit der Klammer aus ID und Klasse: Divi setzt `display: flex` auf jede
	   Zeile — ebenfalls mit ID im Selektor. Ohne die Klammer blieb die Leiste
	   stehen (gemessen: 32 px hoch bei 390 px Fensterbreite). */
	body.hbm-redesign.et-db #et-boc .et-l .hbm-kopfbereich > .et_pb_row:first-child,
	body.hbm-redesign .hbm-kopfbereich > .et_pb_row:first-child {
		display: none !important;
	}

	body.hbm-redesign.et-db #et-boc .et-l .hbm-kopfbereich > .et_pb_row.hbm-kopf {
		display: flex;
		flex-wrap: nowrap;
		align-items: center;
		justify-content: space-between;
		gap: 12px;
		padding: 10px var(--hbm-rand-mobil) 14px !important;
	}

	/* Reihenfolge aus dem Entwurf: Menüzeichen links, Logo mittig, Warenkorb
	   rechts. Im Markup steht das Logo zuerst — `order` dreht das um, ohne
	   das Layout anzufassen.

	   Die Breiten brauchen `!important`: Divi gibt den Spalten auf dem Handy
	   `et_flex_column_24_24_phone` mit fester Basis mit, und die Logospalte
	   war dadurch 0 px breit — das Logo verschwand. */
	body.hbm-redesign .hbm-kopf > .et_pb_column:nth-child(2) {
		order: 1;
		flex: 0 0 44px !important;
		width: 44px !important;
	}
	body.hbm-redesign .hbm-kopf > .et_pb_column:nth-child(1) {
		order: 2;
		flex: 1 1 auto !important;
		width: auto !important;
		min-width: 0;
	}
	body.hbm-redesign .hbm-kopf > .et_pb_column:nth-child(3) {
		order: 3;
		flex: 0 0 auto !important;
		width: auto !important;
	}

	.hbm-redesign .hbm-kopf__logo img {
		height: 34px;
		margin: 0 auto;
	}

	/* Suche und Konto verschwinden — beides steckt im Menü. Vom Warenkorb
	   bleibt das Zeichen: Der Entwurf zeigt mobil nur ein Symbol, und
	   „Warenkorb · 3“ passt neben Logo und Menüzeichen nicht auf 390 px
	   (gemessen: der Chip ragte 60 px über den Rand hinaus). */
	.hbm-redesign .hbm-kopf__aktionen .hbm-kopf__zeichen { display: none; }

	.hbm-redesign .hbm-kopf__warenkorb {
		padding: 0;
		width: 44px;
		height: 44px;
		min-height: 44px;
		justify-content: center;
		border-radius: 50%;
	}

	.hbm-redesign .hbm-kopf__warenkorb > span { display: none; }

	.hbm-redesign .hbm-kopf__warenkorb .hbm-zeichen {
		width: 19px;
		height: 19px;
	}

	/* --- Das Menü als dunkle Vollbildseite -------------------------------- */

	.hbm-redesign .hbm-kopf__menue .mobile_menu_bar {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		width: 44px;
		height: 44px;
	}

	.hbm-redesign .hbm-kopf__menue .mobile_menu_bar::before {
		color: var(--hbm-dunkel);
		font-size: 30px;
		top: 0;
	}

	/* Divi legt die Liste sonst als schmalen Kasten unter den Kopf. Der
	   Entwurf will die ganze Fläche — dunkel, mit grossen Zeilen. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu {
		position: fixed;
		inset: 0;
		z-index: 99999;
		width: 100%;
		max-height: none;
		height: 100%;
		margin: 0;
		padding: 0 24px 32px;
		overflow-y: auto;
		background: var(--hbm-dunkel) !important;
		border: 0;
		box-shadow: none;

		/* Der Fuss mit Suche und Warenkorb sitzt unten, auch wenn die Liste
		   kurz ist. */
		display: flex;
		flex-direction: column;
	}

	/* --- Kopf und Fuss im Handymenü (kommen aus js/mobilmenue.js) -------- */

	/* Der lange Selektor schlägt die Regel oben, die allen Einträgen der
	   Liste `padding: 0` gibt — sonst klebte das Logo am oberen Rand und der
	   erste Menüpunkt direkt darunter. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu > li.hbm-mobilmenue__kopf {
		display: flex;
		justify-content: center;
		align-items: center;

		/* Platz für das Schliesskreuz links daneben. */
		padding: 22px 0 30px;
		border: 0;
	}

	body.hbm-redesign .hbm-mobilmenue__kopf img {
		height: 34px;
		width: auto;
		display: block;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu > li.hbm-mobilmenue__fuss {
		margin-top: auto;
		padding: 24px 0 0;
		border: 0;
		border-top: 1px solid var(--hbm-linie-dunkel);
		display: flex;
		gap: 12px;
	}

	/* Der lange Selektor: Die Menüeinträge oben setzen Lora in 27 px, und die
	   beiden Knöpfe sind formal Einträge derselben Liste. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu a.hbm-mobilmenue__knopf {
		flex: 1;
		text-align: center;
		padding: 13px;
		border-radius: 2px;
		border-bottom: 0;
		font-family: var(--hbm-sans);
		font-size: 14.5px;
		text-decoration: none;
		min-height: 44px;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu a.hbm-mobilmenue__knopf--leise {
		border: 1px solid #4d372c;
		color: var(--hbm-hell-auf-dunkel);
		background: transparent;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu a.hbm-mobilmenue__knopf--voll {
		background: var(--hbm-akzent);
		color: #fff;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu > li {
		padding: 0;
		border: 0;
	}

	/* Fällt das Skript aus, fehlt der Logo-Kopf — dann schafft der erste
	   Punkt selbst Abstand zum Schliesskreuz. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu > li:first-child:not(.hbm-mobilmenue__kopf) {
		margin-top: 76px;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu > li > a {
		font-family: var(--hbm-serif);
		font-size: 27px;
		font-weight: 400;
		color: #fff;
		padding: 16px 0;
		border-bottom: 1px solid var(--hbm-linie-dunkel);
		background: transparent;
	}

	/* Die Unterpunkte des Shops bleiben sichtbar, treten aber zurück —
	   eingerückt und kleiner, wie im Entwurf. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu .sub-menu {
		display: block !important;
		padding: 0;
		background: transparent;
		border: 0;
	}

	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu .sub-menu a {
		font-family: var(--hbm-sans);
		font-size: 16px;
		color: var(--hbm-leiste-text);
		padding: 12px 0 12px 18px;
		border-bottom: 1px solid var(--hbm-linie-dunkel);
	}

	/* Divis Pfeil zum Aufklappen wird nicht gebraucht, weil alles offen ist. */
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu .menu-item-has-children > a + .sub-menu { display: block; }
	body.hbm-redesign .hbm-kopf__menue ul.et_mobile_menu .et_pb_menu__icon { display: none; }

	/* Das Kreuz zum Schliessen: Divi dreht dafür keine eigene Fläche, also
	   sitzt es auf dem Menüzeichen selbst — das bleibt über dem Overlay. */
	.hbm-redesign .hbm-kopf__menue .mobile_nav.opened .mobile_menu_bar {
		position: fixed;
		top: 18px;
		left: 16px;
		z-index: 100000;
	}

	/* Angemeldete Nutzer haben die WordPress-Leiste über der Seite; ohne den
	   Versatz läge das Kreuz darunter und wäre nicht anklickbar. */
	body.admin-bar.hbm-redesign .hbm-kopf__menue .mobile_nav.opened .mobile_menu_bar {
		top: 60px;
	}

	/* Das Kreuz wird gezeichnet, nicht gesetzt: Divis Icon-Schrift ETmodules
	   ist genau die Datei, deren Wegfall am 9.8.2026 die Live-Seite verändert
	   hat. Zwei gedrehte Striche haben diese Abhängigkeit nicht. */
	.hbm-redesign .hbm-kopf__menue .mobile_nav.opened .mobile_menu_bar::before {
		content: "";
		position: absolute;
		top: 21px;
		left: 10px;
		width: 24px;
		height: 2px;
		background: var(--hbm-hell-auf-dunkel);
		transform: rotate(45deg);
	}

	.hbm-redesign .hbm-kopf__menue .mobile_nav.opened .mobile_menu_bar::after {
		content: "";
		position: absolute;
		top: 21px;
		left: 10px;
		width: 24px;
		height: 2px;
		background: var(--hbm-hell-auf-dunkel);
		transform: rotate(-45deg);
	}

	/* --- Aufmacher: Text unten statt mittig ------------------------------- */

	body.hbm-redesign .hbm-aufmacher {
		min-height: 0;
		height: 340px;
		align-items: flex-end;
		justify-content: flex-end;
		background-image:
			linear-gradient(0deg, rgba(30, 14, 9, .92) 18%, rgba(30, 14, 9, .35) 70%, rgba(30, 14, 9, .2) 100%),
			url("https://hagebuttenmark.de/wp-content/uploads/2020/11/AdobeStock_45591200-scaled.jpg");
	}

	body.hbm-redesign.et-db #et-boc .et-l .hbm-aufmacher > .et_pb_row {
		padding: 0 var(--hbm-rand-mobil) 26px !important;
	}

	.hbm-redesign .hbm-hero { max-width: none; gap: 12px; }

	body.hbm-redesign.et-db #et-boc .et-l .hbm-hero h1 {
		font-size: 31px;
		line-height: 1.15;
	}

	body.hbm-redesign.et-db #et-boc .et-l .hbm-hero p.hbm-augenbraue {
		font-size: 11px;
		letter-spacing: .16em;
	}

	/* Der Fliesstext im Aufmacher fällt weg: Auf 340 px Höhe bleibt für
	   Überschrift, Knopf und Absatz kein Platz, ohne dass alles eng wird.
	   Der Text steht direkt darunter noch einmal. */
	.hbm-redesign .hbm-hero__text { display: none; }

	.hbm-redesign .hbm-hero__knoepfe {
		display: flex;
		flex-direction: column;
		gap: 10px;
	}

	.hbm-redesign .hbm-hero .hbm-knopf {
		text-align: center;
		padding: 15px;
		min-height: 44px;
	}

	/* Ohne den Abstand klebte der Knopf am unteren Bildrand. */
	.hbm-redesign .hbm-hero__knoepfe {
		margin-bottom: 4px;
	}

	/* Der zweite, leise Knopf entfällt — im Entwurf steht mobil nur einer. */
	.hbm-redesign .hbm-hero .hbm-knopf--leise { display: none; }

	/* --- Vertrauensleiste als umbrechende Zeile --------------------------- */

	/* Ohne die dunkle Leiste braucht der klebende Kopf keinen Versatz. */
	body.hbm-redesign .et-l--header { --hbm-topbar-hoehe: 0px; }

	/* Die dunkle Leiste fällt mobil weg. Vier Versprechen in Kleinschrift
	   direkt unter dem Aufmacher kosten eine halbe Bildschirmhöhe und sagen
	   weniger als das Foto darüber. Versandkostenfrei steht im Fuß. */
	body.hbm-redesign .hbm-vertrauensleiste {
		display: none;
	}

	/* --- Raster überall einspaltig ---------------------------------------- */

	body.hbm-redesign .hbm-grussbereich > .et_pb_row,
	body.hbm-redesign .hbm-warumbereich > .et_pb_row,
	body.hbm-redesign .hbm-schritte,
	body.hbm-redesign .hbm-wege {
		grid-template-columns: 1fr;
	}

	body.hbm-redesign .hbm-wege > .et_pb_column { padding: 26px; }

	/* Produkte zu zweit nebeneinander — vier sind auf 390 px unlesbar, eines
	   pro Zeile macht die Seite unnötig lang. */
	body.hbm-redesign .hbm-hofladen ul.products {
		display: grid !important;
		grid-template-columns: 1fr 1fr;
		gap: 14px;
	}

	body.hbm-redesign .hbm-hofladen ul.products li.product {
		width: 100% !important;
		margin: 0 !important;
		float: none !important;
	}

	/* --- Markttermine: Datum, Ort und Zeit untereinander ------------------ */

	.hbm-redesign .hbm-markttermine .ics-calendar-date-wrapper,
	.hbm-redesign .hbm-markttermine dl.events {
		grid-template-columns: 1fr;
		gap: 6px;
	}

	.hbm-redesign .hbm-markttermine dl.events > dt.time { order: 3; }

	/* --- Abschnittsköpfe --------------------------------------------------- */

	.hbm-redesign .hbm-abschnittskopf {
		align-items: flex-start;
		gap: 8px;
	}

	/* --- Rezept-Detailseite ------------------------------------------------ */

	.hbm-redesign .hbm-rezeptkopf__eckdaten {
		gap: 6px 14px;
		font-size: 14px;
	}

	body.hbm-redesign.et-db #et-boc .et-l .hbm-zutatenkasten h2 {
		font-size: 21px;
		margin-bottom: 12px;
	}

	.hbm-redesign .hbm-zutatenkasten { padding: 22px; }

	body.hbm-redesign.et-db #et-boc .et-l .hbm-zutaten__zeile {
		font-size: 15px;
		padding-bottom: 8px;
		margin-bottom: 9px;
	}

	body.hbm-redesign.et-db #et-boc .et-l ol.hbm-rezept-schritte > li {
		font-size: 15.5px;
		gap: 14px;
		padding-top: 18px;
		margin-bottom: 20px;
	}

	body.hbm-redesign.et-db #et-boc .et-l ol.hbm-rezept-schritte > li::before {
		font-size: 22px;
		min-width: 32px;
	}

	body.hbm-redesign.et-db #et-boc .et-l p.hbm-rezept-einleitung {
		font-size: 18px;
		margin-bottom: 26px;
	}

	/* Auf dem Handy gehört das Produkt hinter die Zubereitung: Erst lesen,
	   was man tut, dann sehen, was man dafür braucht. `display: contents`
	   löst die Spalten auf, damit alle drei Bausteine Kinder derselben Zeile
	   werden — nur dann greift `order` über die Spaltengrenze hinweg. */
	body.hbm-redesign .hbm-rezeptzeile > .et_pb_column,
	body.hbm-redesign .hbm-rezeptzeile > .et_pb_column:first-child {
		display: contents;
	}

	body.hbm-redesign .hbm-rezeptzeile .hbm-rezept-zutaten     { order: 1; }
	body.hbm-redesign .hbm-rezeptzeile .hbm-rezept-zubereitung { order: 2; }
	body.hbm-redesign .hbm-rezeptzeile .hbm-rezept-produkt     { order: 3; }

	body.hbm-redesign.et-db #et-boc .et-l .et_pb_section.hbm-rezeptinhalt > .et_pb_row.hbm-rezeptzeile {
		display: grid;
		grid-template-columns: 1fr;
		gap: 34px;
	}

	.hbm-redesign h1 { font-size: 32px; }
	.hbm-redesign h2 { font-size: 26px; }
}

/* Ab hier wird es wirklich eng: 390 px und darunter. */
@media (max-width: 600px) {
	.hbm-redesign .hbm-grusswort { font-size: 22px; }

	/* Der Fuß hat vier Spalten; zwei davon sind reine Linklisten und auf dem
	   Handy eine lange Rutschpartie. Sie bleiben, aber schmaler gesetzt. */
	body.hbm-redesign .hbm-footer__spalten { gap: 28px; }
}

/* =========================================================================
   Produktkarte

   Eine Karte für alle Reihen: Startseite, Kategorie, „Passt dazu“, Suche.
   WooCommerce baut sie als <li> mit einem Link um Bild, Namen und Preis; die
   Kategorie darüber und der Satz darunter kommen aus HBM_Shop.

   Der Knopf steht ausserhalb dieses Links — deshalb sitzt die Karte selbst im
   Flusslayout und nicht der Link. Sonst wäre der Knopf entweder im Link
   gefangen oder aus der Karte gefallen.
   ========================================================================= */

body.hbm-redesign ul.products {
	display: grid;
	grid-template-columns: repeat(var(--hbm-spalten, 4), 1fr);
	gap: 22px;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* WooCommerce räumt seine Float-Spalten mit einem Clearfix auf. Sobald die
   Liste ein Raster ist, werden aus `::before` und `::after` echte Zellen —
   das erste Produkt rutscht dann eine Zelle weiter. Gemessen am iPhone. */
body.hbm-redesign ul.products::before,
body.hbm-redesign ul.products::after {
	display: none !important;
}

body.hbm-redesign ul.products li.product {
	display: flex;
	flex-direction: column;
	background: var(--hbm-papier);
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	overflow: hidden;
	margin: 0;
	padding: 0;
	width: auto;
	float: none;
	transition: border-color .18s ease;
}

body.hbm-redesign ul.products li.product:hover {
	border-color: var(--hbm-akzent);
}

body.hbm-redesign ul.products li.product > a.woocommerce-loop-product__link {
	display: flex;
	flex-direction: column;
	gap: 9px;
	flex: 1;
	text-decoration: none;
	color: inherit;
}

body.hbm-redesign ul.products li.product img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
	margin: 0 0 11px;
	background: var(--hbm-sand);
	border-radius: 0;
}

/* Ab hier steht der Text ein Stück vom Rand weg. Der Innenabstand sitzt an den
   einzelnen Zeilen statt an einer Hülle, weil WooCommerce zwischen Link und
   Knopf keine gemeinsame Hülle setzt. */
body.hbm-redesign ul.products li.product .hbm-karte__augenbraue,
body.hbm-redesign ul.products li.product .woocommerce-loop-product__title,
body.hbm-redesign ul.products li.product .hbm-karte__text,
body.hbm-redesign ul.products li.product .price,
body.hbm-redesign ul.products li.product .hbm-karte__steuer,
body.hbm-redesign ul.products li.product > .button,
body.hbm-redesign ul.products li.product > .added_to_cart {
	margin-inline: 20px;
}

body.hbm-redesign ul.products li.product .hbm-karte__augenbraue {
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #a08f7d;
}

body.hbm-redesign.et-db #et-boc .et-l ul.products li.product h2.woocommerce-loop-product__title,
body.hbm-redesign ul.products li.product .woocommerce-loop-product__title {
	font-family: var(--hbm-serif);
	font-size: 19px;
	font-weight: 500;
	line-height: 1.3;
	color: var(--hbm-dunkel);
	margin: 0;
	padding: 0;
}

body.hbm-redesign ul.products li.product .hbm-karte__text {
	font-size: 13.5px;
	line-height: 1.6;
	color: #6f6055;
	flex: 1;
}

body.hbm-redesign ul.products li.product .price {
	font-family: var(--hbm-serif);
	font-size: 20px;
	color: var(--hbm-dunkel);
	margin-top: 6px;
}

body.hbm-redesign ul.products li.product .price del {
	font-size: 15px;
	color: #a08a76;
	margin-right: 8px;
}

body.hbm-redesign ul.products li.product .price ins {
	text-decoration: none;
}

body.hbm-redesign ul.products li.product .hbm-karte__steuer {
	font-size: 11.5px;
	color: #a08f7d;
	margin-top: 2px;
}

/* Der Knopf sitzt unten und über die ganze Kartenbreite: Im Entwurf steht er
   neben dem Preis, aber dort bricht er bei langen Beschriftungen um. Über die
   Breite bleibt die Tap-Fläche auch am Handy sicher über 44 px. */
body.hbm-redesign ul.products li.product > .button,
body.hbm-redesign ul.products li.product > .added_to_cart {
	display: block;
	text-align: center;
	margin-top: 14px;
	margin-bottom: 20px;
	padding: 11px 16px;
	border: 1.5px solid var(--hbm-akzent);
	border-radius: 2px;
	background: transparent;
	color: var(--hbm-akzent);
	font-family: var(--hbm-sans);
	font-size: 13.5px;
	font-weight: 500;
	line-height: 1;
	text-decoration: none;
	transition: background-color .18s ease, color .18s ease;
}

body.hbm-redesign ul.products li.product > .button:hover,
body.hbm-redesign ul.products li.product > .added_to_cart:hover {
	background: var(--hbm-akzent);
	color: #fff;
}

body.hbm-redesign ul.products li.product .onsale {
	position: absolute;
	top: 12px;
	left: 12px;
	margin: 0;
	padding: 7px 10px;
	background: var(--hbm-akzent);
	color: #fff;
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	font-weight: 500;
	letter-spacing: .08em;
	line-height: 1;
	border-radius: 2px;
	min-height: 0;
	min-width: 0;
}

body.hbm-redesign ul.products li.product {
	position: relative;
}

@media (max-width: 980px) {
	body.hbm-redesign ul.products { --hbm-spalten: 2; gap: 16px; }
}

/* =========================================================================
   Shop-Übersicht

   Die vier Kategorien als Karten (Entwurf 1d) und — mit `stil="kachel"` — als
   quadratische Kacheln mit Verlauf, wie sie der Entwurf auf der Startseite
   zeigt. Beide Formen kommen aus demselben Shortcode, damit eine fünfte
   Kategorie nirgends nachgetragen werden muss.
   ========================================================================= */

.hbm-redesign .hbm-kategorien {
	display: grid;
	gap: 26px;
}

.hbm-redesign .hbm-kategorien--karte { grid-template-columns: 1fr 1fr; }
.hbm-redesign .hbm-kategorien--kachel { grid-template-columns: repeat(4, 1fr); gap: 22px; }

.hbm-redesign .hbm-kategorie {
	display: grid;
	grid-template-columns: 1fr 1fr;
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	overflow: hidden;
	text-decoration: none;
	color: inherit;
	background: var(--hbm-papier);
	transition: border-color .18s ease;
}

.hbm-redesign .hbm-kategorie:hover { border-color: var(--hbm-akzent); }

.hbm-redesign .hbm-kategorie__bild {
	display: block;
	background: var(--hbm-sand);
	min-height: 230px;
}

.hbm-redesign .hbm-kategorie__bild img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.hbm-redesign .hbm-kategorie__text {
	display: flex;
	flex-direction: column;
	gap: 10px;
	padding: 30px;
}

.hbm-redesign .hbm-kategorie__name {
	font-family: var(--hbm-serif);
	font-size: 23px;
	color: var(--hbm-dunkel);
}

.hbm-redesign .hbm-kategorie__beschreibung {
	font-size: 14.5px;
	line-height: 1.7;
	color: #6f6055;
	flex: 1;
}

.hbm-redesign .hbm-kategorie__anzahl {
	font-size: 13px;
	color: #a08f7d;
}

.hbm-redesign .hbm-kategorie__mehr {
	color: var(--hbm-akzent);
	font-size: 14.5px;
	font-weight: 500;
	border-bottom: 1.5px solid var(--hbm-akzent);
	padding-bottom: 3px;
	align-self: flex-start;
}

/* Die quadratische Kachel: Bild über die ganze Fläche, Text davor. Der Verlauf
   sitzt auf dem Textfeld statt auf einem eigenen Element — ein Element
   weniger, und die Schrift bleibt auf jedem Foto lesbar. */
.hbm-redesign .hbm-kategorien--kachel .hbm-kategorie {
	display: block;
	position: relative;
	aspect-ratio: 1 / 1;
	border: none;
}

.hbm-redesign .hbm-kategorien--kachel .hbm-kategorie__bild {
	position: absolute;
	inset: 0;
	min-height: 0;
}

.hbm-redesign .hbm-kategorien--kachel .hbm-kategorie__text {
	position: absolute;
	inset: 0;
	justify-content: flex-end;
	gap: 4px;
	padding: 22px;
	color: #fff;
	background: linear-gradient(0deg, rgba(30, 14, 9, .78) 0%, rgba(30, 14, 9, 0) 55%);
}

.hbm-redesign .hbm-kategorien--kachel .hbm-kategorie__name {
	font-size: 22px;
	color: #fff;
}

.hbm-redesign .hbm-kategorien--kachel .hbm-kategorie__anzahl { color: var(--hbm-auf-bild); }

/* --- Suchfeld ------------------------------------------------------------ */

.hbm-redesign .hbm-suchfeld {
	display: flex;
	max-width: 480px;
}

.hbm-redesign .hbm-suchfeld input[type="search"] {
	flex: 1;
	min-width: 0;
	background: #fff;
	border: 1px solid #ded2c2;
	border-right: none;
	border-radius: 2px 0 0 2px;
	padding: 15px 18px;
	font-family: var(--hbm-sans);
	font-size: 15px;
	color: var(--hbm-text);
}

.hbm-redesign .hbm-suchfeld button {
	background: var(--hbm-dunkel);
	color: #fff;
	border: none;
	border-radius: 0 2px 2px 0;
	padding: 15px 26px;
	font-family: var(--hbm-sans);
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
}

.hbm-redesign .hbm-suchfeld button:hover { background: var(--hbm-akzent); }

@media (max-width: 980px) {
	.hbm-redesign .hbm-kategorien--karte { grid-template-columns: 1fr; }
	.hbm-redesign .hbm-kategorien--kachel { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 600px) {
	.hbm-redesign .hbm-kategorie { grid-template-columns: 1fr; }
	.hbm-redesign .hbm-kategorie__bild { min-height: 180px; }
}

/* =========================================================================
   Produktarchiv — Kategorieseite und Shop

   WooCommerce baut diese Seiten selbst, Divi stellt sie in `#left-area`. Die
   Reihenfolge im HTML ist flach: Brotkrumen, Titel, Beschreibung, Hinweise,
   Seitenleiste, Werkzeugleiste, Raster, Blätterlinks.

   Deshalb ist `#left-area` hier ein Raster mit zwei Spalten, und jedes Teil
   sagt selbst, in welche Spalte es gehört. Ohne diesen Kunstgriff müsste die
   Seitenleiste in eine gemeinsame Hülle mit dem Raster — und die gibt es in
   WooCommerces Vorlage nicht.
   ========================================================================= */

/* Divi begrenzt den Inhaltsbereich auf 1080 px. Die übrigen Redesign-Seiten
   laufen über die volle Breite mit 64 px Rand; ohne diese Regel wären die
   Shop-Seiten sichtbar schmaler als der Rest der Seite. */
body.hbm-redesign.woocommerce #main-content .container,
body.hbm-redesign.woocommerce-page #main-content .container {
	width: 100%;
	max-width: none;
	padding: 44px var(--hbm-rand) 76px;
}

/* Divis eigene Seitenleiste hat auf den Shop-Seiten nichts zu suchen: Die
   Filter stehen links, und rechts stünde sonst ein zweiter, leerer Kasten. */
body.hbm-redesign.woocommerce #sidebar,
body.hbm-redesign.woocommerce-page #sidebar {
	display: none;
}

/* Divi gibt `#left-area` 20 px Innenabstand. Der verschiebt alles gegenüber
   dem Seitenrand von 64 px — und randlose Abschnitte, die mit einem negativen
   Abstand von 64 px arbeiten, blieben um genau diese 20 px vom Rand entfernt
   stehen (gemessen: Abschnitt bei 20 px statt bei 0). */
body.hbm-redesign.woocommerce #left-area,
body.hbm-redesign.woocommerce-page #left-area {
	width: 100%;
	padding: 0;
	float: none;
}

body.hbm-redesign.tax-product_cat #left-area,
body.hbm-redesign.woocommerce-shop #left-area {
	display: grid;
	grid-template-columns: 250px 1fr;
	column-gap: 44px;
	align-items: start;
}

body.hbm-redesign.tax-product_cat #left-area > .woocommerce-breadcrumb,
body.hbm-redesign.tax-product_cat #left-area > .woocommerce-products-header,
body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__aufmacher,
body.hbm-redesign.tax-product_cat #left-area > .woocommerce-notices-wrapper,
body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__abschluss,
body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-breadcrumb,
body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-products-header,
body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__aufmacher,
body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-notices-wrapper,
body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__abschluss {
	grid-column: 1 / -1;
}

/* WARUM DIE LEISTE UEBER 99 ZEILEN GEHT:
   Ohne Angabe belegt sie genau eine Rasterzeile — dieselbe, in der rechts die
   Werkzeugleiste steht. Die Zeile wird dann so hoch wie die Leiste (gemessen:
   903 px), und das Produktraster beginnt erst darunter. Mit der Spanne liegt
   das Raster daneben, wie im Entwurf. 99 ist keine Zauberzahl, sondern
   „mehr Zeilen, als die Seite je haben wird“; leere Zeilen sind 0 px hoch,
   und ein Zeilenabstand ist bewusst nicht gesetzt, damit sie nichts kosten. */
body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__leiste,
body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__leiste {
	grid-column: 1;
	grid-row: span 99;
}

body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__werkzeuge,
body.hbm-redesign.tax-product_cat #left-area > ul.products,
body.hbm-redesign.tax-product_cat #left-area > .woocommerce-pagination,
body.hbm-redesign.tax-product_cat #left-area > .woocommerce-info,
body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__werkzeuge,
body.hbm-redesign.woocommerce-shop #left-area > ul.products,
body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-pagination,
body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-info {
	grid-column: 2;
}

body.hbm-redesign.tax-product_cat ul.products,
body.hbm-redesign.woocommerce-shop ul.products {
	--hbm-spalten: 3;
	margin-top: 26px;
}

/* --- Brotkrumen ---------------------------------------------------------- */

body.hbm-redesign .hbm-brotkrumen,
body.hbm-redesign nav.woocommerce-breadcrumb {
	font-family: var(--hbm-sans);
	font-size: 13.5px;
	color: var(--hbm-leise);
	margin: 0 0 22px;
	padding: 0;
}

body.hbm-redesign nav.woocommerce-breadcrumb a {
	color: var(--hbm-leise);
	text-decoration: none;
}

body.hbm-redesign nav.woocommerce-breadcrumb a:hover { color: var(--hbm-akzent); }

body.hbm-redesign .hbm-brotkrumen__trenner {
	color: #cbbba8;
	margin: 0 7px;
}

/* --- Kopf der Kategorieseite --------------------------------------------- */

body.hbm-redesign .woocommerce-products-header {
	margin: 0 0 14px;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l h1.woocommerce-products-header__title,
body.hbm-redesign h1.woocommerce-products-header__title {
	font-family: var(--hbm-serif);
	font-size: 42px;
	font-weight: 500;
	line-height: 1.15;
	color: var(--hbm-dunkel);
	margin: 0;
	padding: 0;
}

body.hbm-redesign .hbm-shop__aufmacher {
	display: grid;
	grid-template-columns: 1.2fr .8fr;
	gap: 56px;
	align-items: end;
	padding-bottom: 34px;
	margin-bottom: 30px;
	border-bottom: 1px solid #ece2d4;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-shop__einleitung,
body.hbm-redesign p.hbm-shop__einleitung {
	margin: 0;
	font-size: 16.5px;
	line-height: 1.8;
	color: #6f6055;
	max-width: 640px;
	text-wrap: pretty;
}

/* Der Hinweiskasten — auf der Kategorieseite, an der Kasse und überall dort,
   wo eine Einschränkung genannt werden muss. Roter Balken links statt eines
   Warnzeichens: Er fällt auf, ohne zu alarmieren. */
body.hbm-redesign .hbm-hinweiskasten {
	display: flex;
	flex-direction: column;
	gap: 8px;
	background: var(--hbm-leinen);
	border-left: 3px solid var(--hbm-akzent);
	padding: 20px 24px;
}

body.hbm-redesign .hbm-hinweiskasten__augenbraue {
	font-family: var(--hbm-sans);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: var(--hbm-akzent);
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-hinweiskasten p,
body.hbm-redesign .hbm-hinweiskasten p {
	margin: 0;
	font-size: 14px;
	line-height: 1.7;
	color: #5c4c42;
}

/* --- Seitenleiste mit den Filtern ---------------------------------------- */

body.hbm-redesign .hbm-shop__leiste {
	display: flex;
	flex-direction: column;
	gap: 30px;
	margin-top: 4px;
}

body.hbm-redesign .hbm-filter {
	display: flex;
	flex-direction: column;
	gap: 12px;
}

body.hbm-redesign .hbm-filter + .hbm-filter {
	border-top: 1px solid #ece2d4;
	padding-top: 26px;
}

body.hbm-redesign .hbm-filter__titel {
	font-family: var(--hbm-sans);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #a08f7d;
}

body.hbm-redesign .hbm-filter__liste {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 11px;
}

body.hbm-redesign .hbm-filter__eintrag {
	font-size: 15px;
	color: var(--hbm-text);
	text-decoration: none;
}

body.hbm-redesign .hbm-filter__eintrag:hover { color: var(--hbm-akzent); }

body.hbm-redesign .hbm-filter__eintrag--aktiv {
	color: var(--hbm-akzent);
	font-weight: 500;
}

body.hbm-redesign .hbm-filter__anzahl {
	color: #a08f7d;
	font-weight: 400;
}

/* Das Kästchen ist gezeichnet, nicht angeklickt: Der Filter läuft über Links,
   weil WooCommerce die gewählten Begriffe als Komma-Liste in der Adresse
   erwartet — ein Formular mit Ankreuzfeldern könnte das ohne JavaScript nicht
   erzeugen. Deshalb sieht es aus wie ein Ankreuzfeld und ist ein Link. */
body.hbm-redesign .hbm-filter__kasten {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 14.5px;
	color: var(--hbm-text);
	text-decoration: none;
	line-height: 1.4;
}

body.hbm-redesign .hbm-filter__kasten::before {
	content: "";
	flex: 0 0 auto;
	width: 15px;
	height: 15px;
	border: 1.5px solid #cbbba8;
	border-radius: 2px;
	background: #fff;
}

body.hbm-redesign .hbm-filter__kasten:hover::before { border-color: var(--hbm-akzent); }

body.hbm-redesign .hbm-filter__kasten--gesetzt::before {
	background: var(--hbm-akzent);
	border-color: var(--hbm-akzent);
	/* Das Häkchen als Hintergrundbild statt als Zeichen aus einer Icon-Schrift:
	   Genau deren Wegfall hat am 9.8.2026 die Live-Seite verändert. */
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-size: 11px 11px;
	background-position: center;
	background-repeat: no-repeat;
}

body.hbm-redesign .hbm-filter--preis .hbm-filter__preisfelder {
	display: flex;
	align-items: center;
	gap: 8px;
}

body.hbm-redesign .hbm-filter--preis input {
	width: 100%;
	min-width: 0;
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	padding: 9px 10px;
	font-family: var(--hbm-sans);
	font-size: 14px;
	color: var(--hbm-text);
}

body.hbm-redesign .hbm-filter--preis label { flex: 1; min-width: 0; }

body.hbm-redesign .hbm-filter__bis { font-size: 13px; color: #a08f7d; }

body.hbm-redesign .hbm-filter--preis button {
	border: 1px solid var(--hbm-dunkel);
	background: var(--hbm-dunkel);
	color: #fff;
	border-radius: 2px;
	padding: 9px 14px;
	font-family: var(--hbm-sans);
	font-size: 13.5px;
	font-weight: 500;
	cursor: pointer;
}

body.hbm-redesign .hbm-filter__spanne { font-size: 13.5px; color: #6f6055; }

/* --- Werkzeugleiste über dem Raster --------------------------------------- */

body.hbm-redesign .hbm-shop__werkzeuge {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 20px;
	flex-wrap: wrap;
	padding-bottom: 16px;
	border-bottom: 1px solid #ece2d4;
}

body.hbm-redesign .hbm-shop__marken {
	display: flex;
	align-items: center;
	gap: 9px;
	flex-wrap: wrap;
}

body.hbm-redesign .hbm-marke {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	background: var(--hbm-dunkel);
	color: #fff;
	border-radius: 999px;
	padding: 7px 13px;
	font-size: 13px;
	text-decoration: none;
}

body.hbm-redesign .hbm-marke:hover { background: var(--hbm-akzent); color: #fff; }

body.hbm-redesign .hbm-shop__anzahl { font-size: 13.5px; color: var(--hbm-leise); }

body.hbm-redesign .hbm-shop__sortierung {
	display: flex;
	align-items: center;
	gap: 10px;
	font-size: 14px;
	color: var(--hbm-text);
}

body.hbm-redesign .hbm-shop__sortierung > span { color: var(--hbm-leise); }

body.hbm-redesign .hbm-shop__sortierung form.woocommerce-ordering { margin: 0; }

body.hbm-redesign .hbm-shop__sortierung select {
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	padding: 9px 15px;
	font-family: var(--hbm-sans);
	font-size: 14px;
	color: var(--hbm-text);
}

/* --- Blätterlinks --------------------------------------------------------- */

body.hbm-redesign .woocommerce-pagination ul.page-numbers {
	display: flex;
	gap: 8px;
	list-style: none;
	margin: 34px 0 0;
	padding: 0;
	border: none;
}

body.hbm-redesign .woocommerce-pagination .page-numbers li { border: none; }

body.hbm-redesign .woocommerce-pagination .page-numbers a,
body.hbm-redesign .woocommerce-pagination .page-numbers span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	border: 1px solid var(--hbm-linie);
	border-radius: 2px;
	background: var(--hbm-papier);
	color: var(--hbm-text);
	font-size: 14.5px;
	text-decoration: none;
}

body.hbm-redesign .woocommerce-pagination .page-numbers .current {
	background: var(--hbm-dunkel);
	border-color: var(--hbm-dunkel);
	color: #fff;
}

/* --- Abschlusstexte ------------------------------------------------------- */

body.hbm-redesign .hbm-shop__abschluss {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	margin-top: 64px;
	padding: 48px var(--hbm-rand);
	background: var(--hbm-leinen);
	/* Der Abschluss läuft im Entwurf über die volle Breite. Innerhalb des
	   Inhaltsbereichs geht das nur, indem der Seitenrand hier wieder
	   herausgerechnet wird. */
	margin-inline: calc(-1 * var(--hbm-rand));
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-shop__abschluss h2,
body.hbm-redesign .hbm-shop__abschluss h2 {
	font-family: var(--hbm-serif);
	font-size: 28px;
	font-weight: 500;
	margin: 0 0 14px;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-shop__abschluss p,
body.hbm-redesign .hbm-shop__abschluss p {
	margin: 0;
	font-size: 15.5px;
	line-height: 1.8;
	color: #6f6055;
}

@media (max-width: 980px) {
	body.hbm-redesign.woocommerce #main-content .container,
	body.hbm-redesign.woocommerce-page #main-content .container {
		padding: 28px var(--hbm-rand-mobil) 48px;
	}

	body.hbm-redesign.tax-product_cat #left-area,
	body.hbm-redesign.woocommerce-shop #left-area {
		grid-template-columns: 1fr;
	}

	/* WARUM HIER JEDER BAUSTEIN EINZELN STEHT:
	   Ein Sammelselektor `#left-area > *` hat weniger Gewicht als die
	   Einzelregeln weiter oben (`… > ul.products`), weil dort ein Typ mehr
	   steht. Die Bausteine blieben deshalb in Spalte 2 — und weil es diese
	   Spalte in der Rasterangabe gar nicht mehr gibt, legte der Browser sie
	   ausserhalb der Seite an: 634 px Inhalt in einem 390 px breiten Fenster. */
	body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__leiste,
	body.hbm-redesign.tax-product_cat #left-area > .hbm-shop__werkzeuge,
	body.hbm-redesign.tax-product_cat #left-area > ul.products,
	body.hbm-redesign.tax-product_cat #left-area > .woocommerce-pagination,
	body.hbm-redesign.tax-product_cat #left-area > .woocommerce-info,
	body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__leiste,
	body.hbm-redesign.woocommerce-shop #left-area > .hbm-shop__werkzeuge,
	body.hbm-redesign.woocommerce-shop #left-area > ul.products,
	body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-pagination,
	body.hbm-redesign.woocommerce-shop #left-area > .woocommerce-info {
		grid-column: 1;
		grid-row: auto;
	}

	body.hbm-redesign .hbm-shop__aufmacher { grid-template-columns: 1fr; gap: 22px; }

	/* Die Filterleiste steht am Handy über dem Raster und legt sich waagerecht:
	   Untereinander wäre sie länger als der halbe Bildschirm, und niemand
	   scrollt an Filtern vorbei, um Produkte zu sehen. */
	body.hbm-redesign .hbm-shop__leiste {
		flex-direction: row;
		flex-wrap: wrap;
		gap: 20px 30px;
	}

	body.hbm-redesign .hbm-filter + .hbm-filter { border-top: none; padding-top: 0; }

	body.hbm-redesign .hbm-filter__liste { flex-direction: row; flex-wrap: wrap; gap: 8px 16px; }

	body.hbm-redesign.tax-product_cat ul.products,
	body.hbm-redesign.woocommerce-shop ul.products { --hbm-spalten: 2; }

	body.hbm-redesign .hbm-shop__abschluss {
		grid-template-columns: 1fr;
		gap: 26px;
		padding: 32px var(--hbm-rand-mobil);
		margin-inline: calc(-1 * var(--hbm-rand-mobil));
	}

	body.hbm-redesign h1.woocommerce-products-header__title { font-size: 30px; }
}

/* =========================================================================
   Produktseite — Variante A

   Links Galerie, rechts die Kaufbox; darunter über die volle Breite die
   Erzählung, „Passt dazu“ und die Bewertungen. Die Reihenfolge in der Kaufbox
   stellt HBM_Produkt um — hier steht nur, wie sie aussieht.
   ========================================================================= */

/* WARUM `#left-area >` UND NICHT NUR `div.product`:
   Divi haengt die Beitragsklassen auch an die Huelle des Kopf- und
   Fusslayouts. `div.product` traf damit auch die Kopfzeile — die Navigation
   brach in ein zweispaltiges Raster um. Der echte Produktbehaelter ist das
   einzige `.product` direkt unter `#left-area`. */
body.hbm-redesign.single-product #left-area > .product {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: start;
}

body.hbm-redesign.single-product #left-area > .product > .woocommerce-product-gallery,
body.hbm-redesign.single-product #left-area > .product > .clearfix > .woocommerce-product-gallery {
	grid-column: 1;
}

body.hbm-redesign.single-product #left-area > .product > .summary { grid-column: 2; }

body.hbm-redesign.single-product #left-area > .product > .woocommerce-notices-wrapper,
body.hbm-redesign.single-product #left-area > .product > section {
	grid-column: 1 / -1;
}

/* Divi rendert den Beschreibungstext ein zweites Mal als eigenen Block. Im
   Entwurf steht er unter der Kaufbox im Abschnitt „Aus der Beschreibung“ —
   zweimal derselbe Text waere ein Fehler, der wie Absicht aussieht. */
body.hbm-redesign.single-product #left-area > .product > .et-l--post {
	display: none;
}

/* WooCommerce legt Galerie und Kaufbox in eine gemeinsame Huelle mit
   `clearfix`. Sie loest sich auf, damit beide direkt im Raster liegen. */
body.hbm-redesign.single-product #left-area > .product > .clearfix {
	display: contents;
}

body.hbm-redesign.single-product .woocommerce-product-gallery {
	width: 100% !important;
	float: none;
	margin: 0;
}

body.hbm-redesign.single-product .woocommerce-product-gallery__wrapper img {
	width: 100%;
	border-radius: 3px;
	display: block;
}

body.hbm-redesign.single-product .flex-control-thumbs {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 12px;
	list-style: none;
	margin: 14px 0 0;
	padding: 0;
}

body.hbm-redesign.single-product .flex-control-thumbs li { width: auto; margin: 0; float: none; }

body.hbm-redesign.single-product .flex-control-thumbs img {
	width: 100%;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border: 1px solid var(--hbm-linie);
	border-radius: 2px;
	opacity: 1;
}

body.hbm-redesign.single-product .flex-control-thumbs img.flex-active {
	border: 2px solid var(--hbm-akzent);
}

/* --- Kaufbox -------------------------------------------------------------- */

body.hbm-redesign.single-product .summary {
	width: 100% !important;
	float: none;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 20px;
}

body.hbm-redesign .hbm-produkt__augenbraue {
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #a08f7d;
	text-decoration: none;
	margin-bottom: -8px;
}

body.hbm-redesign .hbm-produkt__augenbraue:hover { color: var(--hbm-akzent); }

body.hbm-redesign.et-db #et-boc .et-l .summary h1.product_title,
body.hbm-redesign .summary h1.product_title {
	font-family: var(--hbm-serif);
	font-size: 40px;
	font-weight: 500;
	line-height: 1.15;
	color: var(--hbm-dunkel);
	margin: 0;
	padding: 0;
}

body.hbm-redesign .summary .woocommerce-product-details__short-description {
	font-size: 17px;
	line-height: 1.8;
	color: #5c4c42;
	text-wrap: pretty;
}

body.hbm-redesign.et-db #et-boc .et-l .summary .woocommerce-product-details__short-description p,
body.hbm-redesign .summary .woocommerce-product-details__short-description p {
	margin: 0 0 12px;
	font-size: 17px;
	line-height: 1.8;
	color: #5c4c42;
}

body.hbm-redesign .summary .woocommerce-product-details__short-description p:last-child { margin-bottom: 0; }

body.hbm-redesign .summary > p.price,
body.hbm-redesign .summary > .price {
	font-family: var(--hbm-serif);
	font-size: 36px;
	color: var(--hbm-dunkel);
	margin: 0;
	padding-top: 22px;
	border-top: 1px solid #ece2d4;
}

body.hbm-redesign .summary > .price del { font-size: 22px; color: #a08a76; }
body.hbm-redesign .summary > .price ins { text-decoration: none; }

body.hbm-redesign .summary .woocommerce-product-details__short-description + .price { border-top: 1px solid #ece2d4; }

/* Menge und Warenkorbknopf in einer Zeile, der Knopf nimmt den Rest. */
body.hbm-redesign .summary form.cart {
	display: flex;
	gap: 14px;
	align-items: stretch;
	margin: 0;
}

body.hbm-redesign .summary form.cart .quantity {
	display: flex;
	align-items: center;
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	margin: 0;
	float: none;
}

body.hbm-redesign .summary form.cart .quantity input.qty {
	width: 74px;
	border: none;
	background: transparent;
	text-align: center;
	font-family: var(--hbm-sans);
	font-size: 16px;
	color: var(--hbm-text);
	padding: 15px 8px;
	height: auto;
}

body.hbm-redesign.et-db #et-boc .et-l .summary form.cart button.single_add_to_cart_button,
body.hbm-redesign .summary form.cart button.single_add_to_cart_button {
	flex: 1;
	background: var(--hbm-akzent);
	color: #fff;
	border: none;
	border-radius: 2px;
	padding: 17px 30px;
	font-family: var(--hbm-sans);
	font-size: 16px;
	font-weight: 500;
	line-height: 1;
	cursor: pointer;
	transition: background-color .18s ease;
}

body.hbm-redesign .summary form.cart button.single_add_to_cart_button:hover { background: #a51009; }

body.hbm-redesign .summary p.stock { display: none; }

/* --- Zusicherungen -------------------------------------------------------- */

body.hbm-redesign .hbm-produkt__zusicherungen {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 9px;
}

body.hbm-redesign .hbm-produkt__zusicherung {
	font-size: 14.5px;
	line-height: 1.5;
	color: #6f6055;
}

body.hbm-redesign .hbm-produkt__zusicherung--lager,
body.hbm-redesign .hbm-produkt__zusicherung--leer {
	display: flex;
	align-items: center;
	gap: 9px;
}

body.hbm-redesign .hbm-produkt__zusicherung--lager { color: #3f7d3a; }
body.hbm-redesign .hbm-produkt__zusicherung--leer { color: #9a6a2a; }

body.hbm-redesign .hbm-produkt__zusicherung--lager::before,
body.hbm-redesign .hbm-produkt__zusicherung--leer::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
	flex: 0 0 auto;
}

/* --- Aufklappteile -------------------------------------------------------- */

body.hbm-redesign .hbm-produkt__aufklapp {
	display: flex;
	flex-direction: column;
	border-top: 1px solid #ece2d4;
	margin-top: 6px;
}

body.hbm-redesign .hbm-aufklapp { border-bottom: 1px solid #ece2d4; }

body.hbm-redesign .hbm-aufklapp > summary {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 16px;
	padding: 20px 0;
	font-family: var(--hbm-serif);
	font-size: 19px;
	color: var(--hbm-dunkel);
	cursor: pointer;
	list-style: none;
}

body.hbm-redesign .hbm-aufklapp > summary::-webkit-details-marker { display: none; }

/* Plus und Minus gezeichnet statt als Zeichen: Ein „+“ aus der Textschrift
   sitzt je nach Schriftschnitt anders hoch als das „−“, und der Wechsel
   flackert. Zwei Striche, von denen einer verschwindet, tun das nicht. */
body.hbm-redesign .hbm-aufklapp > summary::after {
	content: "";
	flex: 0 0 auto;
	width: 14px;
	height: 14px;
	background:
		linear-gradient(currentColor, currentColor) center/14px 1.5px no-repeat,
		linear-gradient(currentColor, currentColor) center/1.5px 14px no-repeat;
	color: var(--hbm-leise);
}

body.hbm-redesign .hbm-aufklapp[open] > summary::after {
	background: linear-gradient(currentColor, currentColor) center/14px 1.5px no-repeat;
	color: var(--hbm-akzent);
}

body.hbm-redesign .hbm-aufklapp__inhalt {
	padding: 0 0 20px;
	font-size: 15px;
	line-height: 1.8;
	color: #6f6055;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-aufklapp__inhalt p,
body.hbm-redesign .hbm-aufklapp__inhalt p {
	margin: 0 0 10px;
	font-size: 15px;
	line-height: 1.8;
	color: #6f6055;
}

body.hbm-redesign .hbm-aufklapp__inhalt p:last-child { margin-bottom: 0; }

body.hbm-redesign .hbm-aufklapp__inhalt table {
	width: 100%;
	border-collapse: collapse;
	margin-top: 12px;
	font-size: 14.5px;
}

body.hbm-redesign .hbm-aufklapp__inhalt th,
body.hbm-redesign .hbm-aufklapp__inhalt td {
	border-bottom: 1px solid #ece2d4;
	padding: 8px 0;
	text-align: left;
}

body.hbm-redesign .hbm-aufklapp__inhalt td:last-child { text-align: right; }

body.hbm-redesign.et-db #et-boc .et-l p.hbm-produkt__kennung,
body.hbm-redesign p.hbm-produkt__kennung {
	margin: 0;
	padding: 20px 0 0;
	font-family: var(--hbm-serif);
	font-size: 15px;
	color: var(--hbm-leise);
}

body.hbm-redesign p.hbm-produkt__kennung a { color: var(--hbm-leise); text-decoration: none; }
body.hbm-redesign p.hbm-produkt__kennung a:hover { color: var(--hbm-akzent); }
body.hbm-redesign .hbm-punkt { color: #cbbba8; margin: 0 4px; }

/* --- „Aus der Beschreibung“ ----------------------------------------------- */

body.hbm-redesign .hbm-produkt__erzaehlung {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 64px;
	align-items: center;
	background: var(--hbm-leinen);
	padding: 64px var(--hbm-rand);
	margin: 64px calc(-1 * var(--hbm-rand)) 0;
}

body.hbm-redesign .hbm-produkt__erzaehlung--einspaltig { grid-template-columns: 1fr; }

body.hbm-redesign .hbm-produkt__erzaehltext {
	display: flex;
	flex-direction: column;
	gap: 4px;
	max-width: 660px;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-produkt__erzaehltext p,
body.hbm-redesign .hbm-produkt__erzaehltext p {
	margin: 14px 0 0;
	font-size: 16.5px;
	line-height: 1.85;
	color: #5c4c42;
	text-wrap: pretty;
}

body.hbm-redesign .hbm-produkt__erzaehlbild img {
	width: 100%;
	aspect-ratio: 3 / 2;
	object-fit: cover;
	border-radius: 3px;
	display: block;
}

/* --- „Passt dazu“ und Bewertungen ----------------------------------------- */

body.hbm-redesign .hbm-produkt__dazu { margin-top: 64px; }

body.hbm-redesign .hbm-abschnittskopf {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 20px;
	margin-bottom: 26px;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-abschnittskopf h2,
body.hbm-redesign .hbm-abschnittskopf h2 {
	font-family: var(--hbm-serif);
	font-size: 32px;
	font-weight: 500;
	margin: 0;
	padding: 0;
}

body.hbm-redesign .hbm-textlink {
	color: var(--hbm-akzent);
	font-family: var(--hbm-sans);
	font-size: 15px;
	font-weight: 500;
	text-decoration: none;
	border-bottom: 1.5px solid var(--hbm-akzent);
	padding-bottom: 3px;
	align-self: flex-start;
	white-space: nowrap;
}

body.hbm-redesign .hbm-produkt__bewertungen {
	display: grid;
	grid-template-columns: .7fr 1.3fr;
	gap: 56px;
	margin-top: 64px;
	padding-top: 56px;
	border-top: 1px solid #ece2d4;
	align-items: start;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-produkt__bewertungskopf h2,
body.hbm-redesign .hbm-produkt__bewertungskopf h2 {
	font-family: var(--hbm-serif);
	font-size: 32px;
	font-weight: 500;
	margin: 0 0 10px;
	padding: 0;
}

body.hbm-redesign .hbm-produkt__keinebewertung {
	font-size: 15px;
	line-height: 1.75;
	color: #6f6055;
	margin: 0;
}

body.hbm-redesign #reviews #comments > h2 { display: none; }

body.hbm-redesign .commentlist {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 22px;
}

body.hbm-redesign .commentlist li.review {
	border-bottom: 1px solid #ece2d4;
	padding-bottom: 20px;
	list-style: none;
}

body.hbm-redesign .commentlist li.review:last-child { border-bottom: none; }

body.hbm-redesign #review_form_wrapper {
	margin-top: 26px;
	border-top: 1px solid #ece2d4;
	padding-top: 26px;
}

body.hbm-redesign #review_form input[type="text"],
body.hbm-redesign #review_form input[type="email"],
body.hbm-redesign #review_form textarea {
	width: 100%;
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	padding: 13px 15px;
	font-family: var(--hbm-sans);
	font-size: 15px;
	color: var(--hbm-text);
}

@media (max-width: 980px) {
	body.hbm-redesign.single-product #left-area > .product {
		grid-template-columns: 1fr;
		gap: 30px;
	}

	body.hbm-redesign.single-product #left-area > .product > .woocommerce-product-gallery,
	body.hbm-redesign.single-product #left-area > .product > .summary { grid-column: 1; }

	body.hbm-redesign .summary h1.product_title { font-size: 30px; }
	body.hbm-redesign .summary > .price { font-size: 30px; }

	body.hbm-redesign .hbm-produkt__erzaehlung {
		grid-template-columns: 1fr;
		gap: 26px;
		padding: 40px var(--hbm-rand-mobil);
		margin: 44px calc(-1 * var(--hbm-rand-mobil)) 0;
	}

	body.hbm-redesign .hbm-produkt__bewertungen {
		grid-template-columns: 1fr;
		gap: 26px;
		margin-top: 44px;
		padding-top: 36px;
	}

	body.hbm-redesign .hbm-abschnittskopf h2,
	body.hbm-redesign .hbm-produkt__bewertungskopf h2 { font-size: 26px; }
}

/* =========================================================================
   Warenkorb

   Die Seite ist mit Divis WooCommerce-Modulen gebaut (Produkte links,
   Summen rechts). Hier steht nur, wie die Tabelle und der Summenkasten
   aussehen — und der Fortschritt zum kostenlosen Versand, der aus
   HBM_Kaufstrecke kommt.
   ========================================================================= */

body.hbm-redesign table.shop_table {
	border: none;
	border-collapse: collapse;
	width: 100%;
	border-radius: 0;
}

body.hbm-redesign table.shop_table thead th {
	border: none;
	border-top: 1px solid #ece2d4;
	border-bottom: 1px solid #ece2d4;
	padding: 22px 0;
	font-family: var(--hbm-sans);
	font-size: 12px;
	font-weight: 500;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #a08f7d;
	text-align: left;
	background: transparent;
}

body.hbm-redesign table.shop_table td {
	border: none;
	border-bottom: 1px solid #ece2d4;
	padding: 24px 0;
	vertical-align: middle;
	background: transparent;
}

body.hbm-redesign table.cart td.product-thumbnail img {
	width: 100px;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	border-radius: 2px;
	background: var(--hbm-sand);
}

body.hbm-redesign table.cart td.product-name a {
	font-family: var(--hbm-serif);
	font-size: 20px;
	color: var(--hbm-dunkel);
	text-decoration: none;
}

body.hbm-redesign table.cart td.product-name a:hover { color: var(--hbm-akzent); }

body.hbm-redesign table.cart td.product-price,
body.hbm-redesign table.cart td.product-subtotal {
	font-family: var(--hbm-serif);
	font-size: 20px;
	color: var(--hbm-dunkel);
}

body.hbm-redesign table.cart td.product-subtotal { text-align: right; }

body.hbm-redesign table.cart .quantity {
	display: inline-flex;
	align-items: center;
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
}

body.hbm-redesign table.cart .quantity input.qty {
	width: 62px;
	border: none;
	background: transparent;
	text-align: center;
	padding: 10px 4px;
	font-family: var(--hbm-sans);
	font-size: 15px;
}

body.hbm-redesign table.cart td.product-remove a.remove {
	color: #b9a794;
	font-size: 20px;
	line-height: 1;
	background: transparent;
	width: auto;
	height: auto;
}

body.hbm-redesign table.cart td.product-remove a.remove:hover {
	color: var(--hbm-akzent);
	background: transparent;
}

body.hbm-redesign .cart .actions .coupon {
	display: flex;
	gap: 0;
}

body.hbm-redesign .cart .actions .coupon input[type="text"] {
	border: 1px solid #ded2c2;
	border-right: none;
	border-radius: 2px 0 0 2px;
	background: #fff;
	padding: 13px 18px;
	font-family: var(--hbm-sans);
	font-size: 14.5px;
	min-width: 200px;
}

body.hbm-redesign .cart .actions .coupon button,
body.hbm-redesign .cart .actions > button {
	background: var(--hbm-dunkel);
	color: #fff;
	border: 1px solid var(--hbm-dunkel);
	border-radius: 0 2px 2px 0;
	padding: 13px 22px;
	font-family: var(--hbm-sans);
	font-size: 14.5px;
	font-weight: 500;
	cursor: pointer;
}

/* --- Summenkasten --------------------------------------------------------- */

body.hbm-redesign .cart_totals {
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	background: #faf6ef;
	padding: 32px;
	width: 100%;
	float: none;
}

body.hbm-redesign.et-db #et-boc .et-l .cart_totals h2,
body.hbm-redesign .cart_totals h2 {
	font-family: var(--hbm-serif);
	font-size: 24px;
	font-weight: 500;
	margin: 0 0 18px;
	padding: 0;
}

body.hbm-redesign .cart_totals table.shop_table th,
body.hbm-redesign .cart_totals table.shop_table td {
	border: none;
	padding: 7px 0;
	font-size: 15.5px;
	background: transparent;
	text-transform: none;
	letter-spacing: 0;
	color: var(--hbm-text);
}

body.hbm-redesign .cart_totals table.shop_table th {
	font-family: var(--hbm-sans);
	font-weight: 400;
	color: #6f6055;
	font-size: 15.5px;
}

body.hbm-redesign .cart_totals tr.order-total th,
body.hbm-redesign .cart_totals tr.order-total td {
	border-top: 1px solid #e3d9cc;
	padding-top: 18px;
	font-family: var(--hbm-serif);
	font-size: 22px;
	color: var(--hbm-dunkel);
}

body.hbm-redesign .cart_totals tr.order-total td { text-align: right; font-size: 28px; }

body.hbm-redesign .wc-proceed-to-checkout a.checkout-button {
	display: block;
	background: var(--hbm-akzent);
	color: #fff;
	text-align: center;
	padding: 17px;
	border-radius: 2px;
	font-family: var(--hbm-sans);
	font-size: 16px;
	font-weight: 500;
	text-decoration: none;
	margin-top: 4px;
}

body.hbm-redesign .wc-proceed-to-checkout a.checkout-button:hover { background: #a51009; }

/* --- Fortschritt zum kostenlosen Versand ---------------------------------- */

body.hbm-redesign tr.hbm-fortschritt td { padding: 14px 0 4px; border: none; }

body.hbm-redesign .hbm-fortschritt__kasten {
	display: flex;
	flex-direction: column;
	gap: 9px;
	background: #fff;
	border: 1px solid #ece2d4;
	border-radius: 2px;
	padding: 16px;
}

body.hbm-redesign .hbm-fortschritt__text { font-size: 14px; color: var(--hbm-text); }
body.hbm-redesign .hbm-fortschritt__text--erreicht { color: #3f7d3a; }

body.hbm-redesign .hbm-fortschritt__balken {
	display: block;
	height: 6px;
	background: #ece2d4;
	border-radius: 3px;
	overflow: hidden;
}

body.hbm-redesign .hbm-fortschritt__balken > span {
	display: block;
	height: 100%;
	background: var(--hbm-akzent);
}

@media (max-width: 980px) {
	/* Am Handy wird aus der Tabelle eine Liste: Fünf Spalten auf 390 px
	   ergeben Spalten von 60 px, in denen jeder Preis umbricht. */
	body.hbm-redesign table.cart thead { display: none; }

	body.hbm-redesign table.cart tr.cart_item {
		display: grid;
		grid-template-columns: 84px 1fr auto;
		gap: 6px 14px;
		align-items: center;
		padding: 18px 0;
		border-bottom: 1px solid #ece2d4;
	}

	body.hbm-redesign table.cart tr.cart_item td { border: none; padding: 0; }
	body.hbm-redesign table.cart td.product-thumbnail { grid-row: 1 / 3; }
	body.hbm-redesign table.cart td.product-thumbnail img { width: 84px; }
	body.hbm-redesign table.cart td.product-name { grid-column: 2 / 4; }
	body.hbm-redesign table.cart td.product-price { display: none; }
	body.hbm-redesign table.cart td.product-quantity { grid-column: 2; }
	body.hbm-redesign table.cart td.product-subtotal { grid-column: 3; }
	body.hbm-redesign table.cart td.product-remove { grid-column: 3; grid-row: 1; text-align: right; }

	body.hbm-redesign .cart .actions .coupon { flex-wrap: wrap; }
	body.hbm-redesign .cart .actions .coupon input[type="text"] { min-width: 0; flex: 1; }
	body.hbm-redesign .cart_totals { padding: 22px; }
}

/* =========================================================================
   Kasse

   Der Kopf schrumpft auf Logo und Schrittanzeige. Grund: Wer bezahlen will,
   soll nicht aus Versehen wieder im Shop landen. Der Fuß behält nur die
   Pflichtangaben — Links auf Kategorien wären an dieser Stelle ebenfalls nur
   ein Ausgang.
   ========================================================================= */

body.hbm-kasse .hbm-kopf__menue,
body.hbm-kasse .hbm-kopfbereich > .et_pb_row:first-child,
body.hbm-kasse .hbm-footer__spalten {
	display: none !important;
}

body.hbm-redesign .hbm-kopf__aktionen--kasse {
	display: flex;
	align-items: center;
	gap: 26px;
}

body.hbm-redesign .hbm-schritte {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 14px;
}

body.hbm-redesign .hbm-schritte__schritt { color: var(--hbm-leise); }
body.hbm-redesign .hbm-schritte__schritt--aktiv { color: var(--hbm-akzent); font-weight: 500; }
body.hbm-redesign .hbm-schritte__pfeil { color: #cbbba8; }

body.hbm-redesign .hbm-schritte__hilfe {
	font-size: 13.5px;
	color: var(--hbm-leise);
	text-decoration: none;
}

body.hbm-redesign .hbm-schritte__hilfe:hover { color: var(--hbm-akzent); }

body.hbm-redesign .hbm-hinweiskasten--kasse { margin-bottom: 30px; }

/* KEINE NUMMERIERUNG DER SCHRITTE.
   Der Entwurf zaehlt die Abschnitte des Kassenformulars (1 Kontakt, 2
   Lieferadresse, 3 Versand, 4 Zahlung). Divi zerlegt das Formular aber in
   fuenf Module, die alle dieselbe Ueberschrift tragen — gemessen: fuenfmal
   „Deine Bestellung“. Eine Zaehlung daran haette Zahlen an die falschen
   Stellen geschrieben. Die Ueberschriften bekommen deshalb nur die Form aus
   dem Entwurf, keine Nummern. */
body.hbm-redesign form.checkout h3,
body.hbm-redesign .woocommerce-billing-fields > h3,
body.hbm-redesign .woocommerce-shipping-fields > h3,
body.hbm-redesign .woocommerce-additional-fields > h3,
body.hbm-redesign #order_review_heading,
body.hbm-redesign .et_pb_wc_checkout_billing .et_pb_module_header,
body.hbm-redesign .et_pb_wc_checkout_shipping .et_pb_module_header,
body.hbm-redesign .et_pb_wc_checkout_order_details .et_pb_module_header,
body.hbm-redesign .et_pb_wc_checkout_payment_info .et_pb_module_header {
	font-family: var(--hbm-serif);
	font-size: 26px;
	font-weight: 500;
	color: var(--hbm-dunkel);
	margin: 0 0 16px;
	padding: 0;
	text-align: left;
}

body.hbm-redesign .woocommerce-billing-fields,
body.hbm-redesign .woocommerce-shipping-fields,
body.hbm-redesign .woocommerce-additional-fields {
	margin-bottom: 40px;
}

body.hbm-redesign .form-row {
	padding: 0;
	margin: 0 0 12px;
}

body.hbm-redesign .form-row label {
	display: block;
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: #a08f7d;
	margin-bottom: 5px;
}

body.hbm-redesign .form-row input.input-text,
body.hbm-redesign .form-row textarea,
body.hbm-redesign .form-row .select2-container .select2-selection--single,
body.hbm-redesign .form-row select {
	width: 100%;
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	padding: 14px 16px;
	font-family: var(--hbm-sans);
	font-size: 15.5px;
	color: var(--hbm-text);
	height: auto;
}

body.hbm-redesign .form-row input.input-text:focus,
body.hbm-redesign .form-row textarea:focus {
	border-color: var(--hbm-akzent);
	outline: none;
}

body.hbm-redesign #shipping_method,
body.hbm-redesign .wc_payment_methods {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}

body.hbm-redesign #shipping_method li,
body.hbm-redesign .wc_payment_methods li.wc_payment_method {
	border: 1px solid #ded2c2;
	border-radius: 2px;
	background: #fff;
	padding: 19px 22px;
	margin: 0;
}

body.hbm-redesign .wc_payment_methods li.wc_payment_method label {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 16px;
	color: var(--hbm-text);
}

body.hbm-redesign .wc_payment_methods .payment_box {
	background: transparent;
	margin: 10px 0 0;
	padding: 0;
	font-size: 13.5px;
	color: var(--hbm-leise);
}

body.hbm-redesign .wc_payment_methods .payment_box::before { display: none; }

body.hbm-redesign #order_review {
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	background: #faf6ef;
	padding: 30px;
	position: sticky;
	top: 120px;
}

body.hbm-redesign #order_review table.shop_table th,
body.hbm-redesign #order_review table.shop_table td {
	border: none;
	border-bottom: 1px solid #e3d9cc;
	padding: 12px 0;
	font-size: 15px;
	text-transform: none;
	letter-spacing: 0;
	color: var(--hbm-text);
	background: transparent;
}

body.hbm-redesign #order_review tr.order-total th,
body.hbm-redesign #order_review tr.order-total td {
	border-bottom: none;
	font-family: var(--hbm-serif);
	font-size: 21px;
	padding-top: 16px;
}

body.hbm-redesign #order_review tr.order-total td { text-align: right; font-size: 27px; }

body.hbm-redesign #place_order {
	width: 100%;
	background: var(--hbm-akzent);
	color: #fff;
	border: none;
	border-radius: 2px;
	padding: 18px;
	font-family: var(--hbm-sans);
	font-size: 16px;
	font-weight: 500;
	cursor: pointer;
	margin-top: 8px;
}

body.hbm-redesign #place_order:hover { background: #a51009; }

@media (max-width: 980px) {
	body.hbm-redesign #order_review { position: static; padding: 22px; }
	body.hbm-redesign .hbm-kopf__aktionen--kasse { gap: 12px; }
	body.hbm-redesign .hbm-schritte { font-size: 12.5px; gap: 7px; }
	body.hbm-redesign .hbm-schritte__hilfe { display: none; }
}

/* =========================================================================
   Bestellbestätigung

   Links Dank, Zeitleiste und Adressen, rechts die Bestellung. WooCommerce gibt
   die Teile hintereinander aus; das Raster stellt sie nebeneinander, ohne dass
   irgendetwas nachgebaut werden müsste.
   ========================================================================= */

body.hbm-redesign .woocommerce-order {
	display: grid;
	grid-template-columns: 1.15fr .85fr;
	gap: 56px;
	align-items: start;
}

body.hbm-redesign .woocommerce-order > .hbm-danke { grid-column: 1; grid-row: 1; }
body.hbm-redesign .woocommerce-order > .woocommerce-customer-details { grid-column: 1; grid-row: 2; }
body.hbm-redesign .woocommerce-order > .hbm-danke__warten { grid-column: 1; grid-row: 3; }
body.hbm-redesign .woocommerce-order > .woocommerce-order-details { grid-column: 2; grid-row: 1 / 4; }

/* Die Übersichtsliste doppelt, was in der Bestelltabelle rechts schon steht —
   Nummer, Datum, Summe, Zahlungsart. Sie fällt weg statt zweimal dazustehen. */
body.hbm-redesign .woocommerce-order > .woocommerce-order-overview,
body.hbm-redesign .woocommerce-order > .woocommerce-notice--success {
	display: none;
}

body.hbm-redesign .hbm-danke {
	display: flex;
	flex-direction: column;
	gap: 22px;
}

body.hbm-redesign.et-db #et-boc .et-l h1.hbm-danke__titel,
body.hbm-redesign h1.hbm-danke__titel {
	font-family: var(--hbm-serif);
	font-size: 44px;
	font-weight: 500;
	line-height: 1.15;
	color: var(--hbm-dunkel);
	margin: 0;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-danke__text,
body.hbm-redesign p.hbm-danke__text {
	margin: 0;
	font-size: 17px;
	line-height: 1.8;
	color: #5c4c42;
	max-width: 560px;
	text-wrap: pretty;
}

body.hbm-redesign .hbm-zeitleiste {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
	list-style: none;
	margin: 6px 0 0;
	padding: 0;
}

body.hbm-redesign .hbm-zeitleiste__station {
	display: flex;
	flex-direction: column;
	gap: 4px;
	border-top: 2px solid #e3d9cc;
	padding: 14px 12px 0 0;
}

body.hbm-redesign .hbm-zeitleiste__station--erreicht { border-top-color: var(--hbm-akzent); }

body.hbm-redesign .hbm-zeitleiste__name { font-size: 14.5px; color: var(--hbm-leise); }
body.hbm-redesign .hbm-zeitleiste__station--erreicht .hbm-zeitleiste__name { color: var(--hbm-text); font-weight: 500; }
body.hbm-redesign .hbm-zeitleiste__zeit { font-size: 13.5px; color: #a08f7d; }
body.hbm-redesign .hbm-zeitleiste__station--erreicht .hbm-zeitleiste__zeit { color: var(--hbm-leise); }

body.hbm-redesign .hbm-danke__warten {
	background: var(--hbm-leinen);
	border-radius: 3px;
	padding: 28px;
	display: flex;
	flex-direction: column;
	gap: 10px;
	align-items: flex-start;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-danke__warten h2,
body.hbm-redesign .hbm-danke__warten h2 {
	font-family: var(--hbm-serif);
	font-size: 21px;
	font-weight: 500;
	margin: 0;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-danke__warten p,
body.hbm-redesign .hbm-danke__warten p {
	margin: 0;
	font-size: 15px;
	line-height: 1.75;
	color: #6f6055;
}

body.hbm-redesign .woocommerce-order-details,
body.hbm-redesign .woocommerce-order-details__title {
	margin: 0;
}

body.hbm-redesign .woocommerce-order-details {
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	background: #faf6ef;
	padding: 30px;
}

body.hbm-redesign.et-db #et-boc .et-l .woocommerce-order-details__title,
body.hbm-redesign .woocommerce-order-details__title {
	font-family: var(--hbm-serif);
	font-size: 22px;
	font-weight: 500;
	margin: 0 0 18px;
}

body.hbm-redesign .woocommerce-order-details table.shop_table th,
body.hbm-redesign .woocommerce-order-details table.shop_table td {
	border: none;
	border-bottom: 1px solid #e3d9cc;
	padding: 12px 0;
	font-size: 15px;
	text-transform: none;
	letter-spacing: 0;
	background: transparent;
	color: var(--hbm-text);
}

body.hbm-redesign .woocommerce-customer-details {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}

body.hbm-redesign .woocommerce-customer-details .woocommerce-column,
body.hbm-redesign .hbm-konto__adresse {
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	padding: 26px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	width: auto;
	float: none;
}

body.hbm-redesign.et-db #et-boc .et-l .woocommerce-customer-details h2,
body.hbm-redesign .woocommerce-customer-details h2 {
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	font-weight: 400;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #a08f7d;
	margin: 0;
	padding: 0;
}

body.hbm-redesign address {
	font-style: normal;
	font-size: 15.5px;
	line-height: 1.7;
	color: var(--hbm-text);
	border: none;
	padding: 0;
	margin: 0;
}

@media (max-width: 980px) {
	body.hbm-redesign .woocommerce-order { grid-template-columns: 1fr; gap: 30px; }

	body.hbm-redesign .woocommerce-order > .hbm-danke,
	body.hbm-redesign .woocommerce-order > .woocommerce-order-details,
	body.hbm-redesign .woocommerce-order > .woocommerce-customer-details,
	body.hbm-redesign .woocommerce-order > .hbm-danke__warten {
		grid-column: 1;
		grid-row: auto;
	}

	body.hbm-redesign h1.hbm-danke__titel { font-size: 30px; }
	body.hbm-redesign .hbm-zeitleiste { grid-template-columns: 1fr 1fr; gap: 16px 0; }
	body.hbm-redesign .woocommerce-customer-details { grid-template-columns: 1fr; }
}

/* =========================================================================
   Mein Konto und Anmeldung
   ========================================================================= */

body.hbm-redesign .woocommerce-MyAccount-navigation ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 13px;
}

body.hbm-redesign .woocommerce-MyAccount-navigation li a {
	font-size: 15.5px;
	color: var(--hbm-text);
	text-decoration: none;
}

body.hbm-redesign .woocommerce-MyAccount-navigation li.is-active a {
	color: var(--hbm-akzent);
	font-weight: 500;
}

body.hbm-redesign .woocommerce-MyAccount-navigation li a:hover { color: var(--hbm-akzent); }

body.hbm-redesign .woocommerce-MyAccount-navigation li--woocommerce-logout a { color: var(--hbm-leise); }

/* Die Begrüßung kommt aus HBM_Konto und steht im HTML hinter WooCommerces
   Absätzen. Statt die Absätze zu verstecken, rückt die Überschrift nach
   oben — der Hinweistext bleibt damit erhalten. */
body.hbm-redesign .woocommerce-MyAccount-content {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

body.hbm-redesign .hbm-konto__kopf { order: -1; }

body.hbm-redesign.et-db #et-boc .et-l .hbm-konto__kopf h1,
body.hbm-redesign .hbm-konto__kopf h1 {
	font-family: var(--hbm-serif);
	font-size: 34px;
	font-weight: 500;
	margin: 0;
	padding: 0;
}

body.hbm-redesign table.hbm-konto__bestellungen {
	width: 100%;
	border-collapse: collapse;
	border: 1px solid var(--hbm-linie);
	border-radius: 3px;
	overflow: hidden;
	margin-top: 12px;
}

body.hbm-redesign table.hbm-konto__bestellungen th {
	background: #faf6ef;
	font-family: var(--hbm-sans);
	font-size: 12px;
	font-weight: 400;
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #a08f7d;
	text-align: left;
	padding: 16px 24px;
	border: none;
}

body.hbm-redesign table.hbm-konto__bestellungen td {
	padding: 20px 24px;
	border: none;
	border-top: 1px solid #ece2d4;
	font-size: 15px;
	vertical-align: middle;
}

body.hbm-redesign .hbm-status { color: var(--hbm-leise); }

body.hbm-redesign .hbm-status--processing,
body.hbm-redesign .hbm-status--on-hold {
	color: #3f7d3a;
	display: inline-flex;
	align-items: center;
	gap: 7px;
}

body.hbm-redesign .hbm-status--processing::before,
body.hbm-redesign .hbm-status--on-hold::before {
	content: "";
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: currentColor;
}

body.hbm-redesign .hbm-konto__adressen {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
	margin-top: 12px;
}

body.hbm-redesign .hbm-konto__adresse .hbm-textlink {
	font-size: 14.5px;
	margin-top: 6px;
}

/* --- Anmeldeseite --------------------------------------------------------- */

body.hbm-redesign #customer_login {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0;
	align-items: stretch;
}

body.hbm-redesign #customer_login > div {
	width: auto;
	float: none;
	padding: 56px var(--hbm-rand) 56px 0;
}

body.hbm-redesign #customer_login > .u-column2 {
	background: var(--hbm-leinen);
	padding: 56px var(--hbm-rand);
	margin-inline: calc(-1 * var(--hbm-rand)) 0;
}

body.hbm-redesign.et-db #et-boc .et-l #customer_login h2,
body.hbm-redesign #customer_login h2 {
	font-family: var(--hbm-serif);
	font-size: 36px;
	font-weight: 500;
	margin: 0 0 22px;
	padding: 0;
}

/* WooCommerce setzt über das Registrierformular die Überschrift
   „Registrieren“. Der Entwurf fragt an dieser Stelle „Neu hier?“ und erklärt
   erst, wofür ein Konto gut ist. Die zweite Überschrift wäre eine zu viel. */
body.hbm-redesign #customer_login > .u-column2 > h2 { display: none; }

body.hbm-redesign .hbm-konto__werbung {
	display: flex;
	flex-direction: column;
	gap: 14px;
	margin-bottom: 26px;
}

body.hbm-redesign.et-db #et-boc .et-l h2.hbm-konto__werbetitel,
body.hbm-redesign h2.hbm-konto__werbetitel {
	font-family: var(--hbm-serif);
	font-size: 36px;
	font-weight: 500;
	margin: 0;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-konto__werbung p,
body.hbm-redesign .hbm-konto__werbung p {
	margin: 0;
	font-size: 16.5px;
	line-height: 1.8;
	color: #5c4c42;
	max-width: 440px;
}

body.hbm-redesign .hbm-konto__vorteile {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 10px;
	font-size: 15.5px;
	color: var(--hbm-text);
}

body.hbm-redesign .hbm-konto__vorteile li::before { content: "· "; color: var(--hbm-akzent); }

body.hbm-redesign .hbm-konto__ohne { font-size: 15px !important; color: #6f6055; }

body.hbm-redesign .woocommerce-form-login__submit,
body.hbm-redesign .woocommerce-form-register__submit {
	background: var(--hbm-akzent);
	color: #fff;
	border: none;
	border-radius: 2px;
	padding: 16px 30px;
	font-family: var(--hbm-sans);
	font-size: 16px;
	font-weight: 500;
	cursor: pointer;
}

body.hbm-redesign .woocommerce-form-register__submit {
	background: transparent;
	color: var(--hbm-dunkel);
	border: 1.5px solid var(--hbm-dunkel);
}

body.hbm-redesign .woocommerce-form-register__submit:hover {
	background: var(--hbm-dunkel);
	color: #fff;
}

body.hbm-redesign .woocommerce-form-login .woocommerce-form-login__rememberme {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: #6f6055;
	text-transform: none;
	letter-spacing: 0;
}

body.hbm-redesign .woocommerce-LostPassword a {
	color: var(--hbm-akzent);
	font-size: 14px;
	text-decoration: none;
}

@media (max-width: 980px) {
	body.hbm-redesign #customer_login { grid-template-columns: 1fr; }

	body.hbm-redesign #customer_login > div { padding: 32px 0; }

	body.hbm-redesign #customer_login > .u-column2 {
		padding: 32px var(--hbm-rand-mobil);
		margin-inline: calc(-1 * var(--hbm-rand-mobil));
	}

	body.hbm-redesign #customer_login h2,
	body.hbm-redesign h2.hbm-konto__werbetitel { font-size: 27px; }

	body.hbm-redesign .hbm-konto__adressen { grid-template-columns: 1fr; }

	/* Aus der Bestelltabelle wird eine Liste. Die Spaltenüberschrift steht als
	   Beschriftung vor dem Wert — sonst stünden Zahlen ohne Bezug da. */
	body.hbm-redesign table.hbm-konto__bestellungen thead { display: none; }

	body.hbm-redesign table.hbm-konto__bestellungen tr {
		display: grid;
		grid-template-columns: auto 1fr;
		gap: 4px 14px;
		padding: 16px 18px;
		border-top: 1px solid #ece2d4;
	}

	body.hbm-redesign table.hbm-konto__bestellungen td { border: none; padding: 0; }

	body.hbm-redesign table.hbm-konto__bestellungen td[data-titel]::before {
		content: attr(data-titel) ": ";
		color: #a08f7d;
		font-size: 13px;
	}
}

/* =========================================================================
   Suchergebnisse und Fehlerseite
   ========================================================================= */

.hbm-redesign .hbm-suche { display: flex; flex-direction: column; gap: 34px; }

.hbm-redesign .hbm-suche__kopf {
	display: flex;
	flex-direction: column;
	gap: 18px;
	padding-bottom: 34px;
	border-bottom: 1px solid #ece2d4;
}

.hbm-redesign .hbm-suche__kopf .hbm-suchfeld { max-width: 640px; }

.hbm-redesign .hbm-suche__kopf .hbm-suchfeld input[type="search"] {
	border-color: var(--hbm-akzent);
	border-width: 1.5px;
	border-right: none;
	padding: 16px 20px;
	font-size: 17px;
}

.hbm-redesign .hbm-suche__kopf .hbm-suchfeld button { background: var(--hbm-akzent); padding: 16px 28px; font-size: 16px; }

body.hbm-redesign.et-db #et-boc .et-l p.hbm-suche__bilanz,
.hbm-redesign p.hbm-suche__bilanz {
	margin: 0;
	font-size: 15px;
	color: #6f6055;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-suche h2,
.hbm-redesign .hbm-suche h2 {
	font-family: var(--hbm-serif);
	font-size: 26px;
	font-weight: 500;
	margin: 0 0 22px;
	padding: 0;
}

.hbm-redesign .hbm-suche__weitere {
	border-top: 1px solid #ece2d4;
	padding-top: 34px;
}

.hbm-redesign .hbm-suche__weitere ul {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.hbm-redesign .hbm-suche__weitere li {
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.hbm-redesign .hbm-suche__weitere li a {
	font-family: var(--hbm-serif);
	font-size: 20px;
	color: var(--hbm-dunkel);
	text-decoration: none;
}

.hbm-redesign .hbm-suche__weitere li a:hover { color: var(--hbm-akzent); }

.hbm-redesign .hbm-suche__art { font-size: 14.5px; color: #6f6055; }

body.hbm-redesign.et-db #et-boc .et-l p.hbm-suche__leer,
.hbm-redesign p.hbm-suche__leer {
	margin: 0;
	font-size: 16px;
	line-height: 1.8;
	color: #6f6055;
}

/* =========================================================================
   Aufzählungen ohne Punkte

   Divi setzt `list-style-type: disc` mit einer ID im Selektor. Gegen eine ID
   kommt keine Zahl von Klassen an — deshalb steht hier dieselbe Klammer wie
   bei den Zeilen weiter oben. Betroffen ist jede Liste, die im Entwurf keine
   Punkte hat: Filter, Zusicherungen, Zeitleiste, Zahlungsarten, Treffer.
   ========================================================================= */

body.hbm-redesign.et-db #et-boc .et-l ul.products,
body.hbm-redesign.et-db #et-boc .et-l ul.hbm-filter__liste,
body.hbm-redesign.et-db #et-boc .et-l ul.hbm-produkt__zusicherungen,
body.hbm-redesign.et-db #et-boc .et-l ul.hbm-konto__vorteile,
body.hbm-redesign.et-db #et-boc .et-l ol.hbm-zeitleiste,
body.hbm-redesign.et-db #et-boc .et-l .hbm-suche__weitere ul,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-MyAccount-navigation ul,
body.hbm-redesign.et-db #et-boc .et-l ul.wc_payment_methods,
body.hbm-redesign.et-db #et-boc .et-l ul#shipping_method,
body.hbm-redesign.et-db #et-boc .et-l ol.commentlist,
body.hbm-redesign.et-db #et-boc .et-l .flex-control-thumbs,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-pagination ul.page-numbers,
body.hbm-redesign ul.products,
body.hbm-redesign ul.hbm-filter__liste,
body.hbm-redesign ul.hbm-produkt__zusicherungen,
body.hbm-redesign ul.hbm-konto__vorteile,
body.hbm-redesign ol.hbm-zeitleiste,
body.hbm-redesign .hbm-suche__weitere ul,
body.hbm-redesign .woocommerce-MyAccount-navigation ul,
body.hbm-redesign ul.wc_payment_methods,
body.hbm-redesign ul#shipping_method,
body.hbm-redesign ol.commentlist,
body.hbm-redesign .flex-control-thumbs,
body.hbm-redesign .woocommerce-pagination ul.page-numbers {
	list-style: none !important;
	padding-left: 0 !important;
}

body.hbm-redesign.et-db #et-boc .et-l ul.products > li,
body.hbm-redesign.et-db #et-boc .et-l .hbm-filter__liste > li,
body.hbm-redesign.et-db #et-boc .et-l .hbm-produkt__zusicherungen > li,
body.hbm-redesign.et-db #et-boc .et-l .hbm-konto__vorteile > li,
body.hbm-redesign.et-db #et-boc .et-l .hbm-zeitleiste > li,
body.hbm-redesign.et-db #et-boc .et-l .hbm-suche__weitere li,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-MyAccount-navigation li,
body.hbm-redesign.et-db #et-boc .et-l ol.commentlist > li {
	list-style: none !important;
	padding-left: 0 !important;
}

/* =========================================================================
   Divis Produktkachel abräumen

   Divi bringt für WooCommerce-Reihen eigene Regeln mit — mit ID im Selektor
   und deshalb stärker als alles, was oben steht. Gemessen: Die Karte war
   94 px breit statt 306 px, weil `width: 30.75%` gewann; der Text brach
   dadurch auf 497 px Höhe um.

   Drei Dinge müssen weg: die Breite (das Raster teilt die Spalten schon auf),
   die Umrandung des Bildes samt Überblendung, und die leere Sternreihe — die
   Karte im Entwurf zeigt keine Bewertung, und ohne Bewertungen wären es fünf
   graue Sterne ohne Aussage.
   ========================================================================= */

body.hbm-redesign.et-db #et-boc .et-l ul.products li.product,
body.hbm-redesign .woocommerce ul.products li.product,
body.hbm-redesign ul.products li.product {
	width: 100% !important;
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
	float: none !important;
	clear: none !important;
}

body.hbm-redesign.et-db #et-boc .et-l ul.products li.product .et_shop_image,
body.hbm-redesign ul.products li.product .et_shop_image {
	display: block;
	position: relative;
	margin: 0;
}

body.hbm-redesign ul.products li.product .et_overlay,
body.hbm-redesign ul.products li.product .star-rating {
	display: none !important;
}

body.hbm-redesign.et-db #et-boc .et-l ul.products li.product img,
body.hbm-redesign ul.products li.product img {
	width: 100% !important;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	display: block;
	margin: 0 0 11px !important;
	border-radius: 0;
	box-shadow: none;
}

/* Die Karte selbst ist ein Flusslayout — Divi setzt hier `display: block`
   und `text-align: center`, beides passt nicht zur Karte im Entwurf. */
body.hbm-redesign.et-db #et-boc .et-l ul.products li.product {
	display: flex !important;
	flex-direction: column;
	text-align: left;
}

body.hbm-redesign.et-db #et-boc .et-l ul.products li.product > a.woocommerce-loop-product__link {
	display: flex !important;
	flex-direction: column;
	gap: 9px;
	flex: 1;
}

/* Divi blendet WooCommerces Brotkrumen aus — es bringt ein eigenes Modul dafür
   mit, das hier nicht im Layout steht. Ohne diese Regel beginnt die
   Kategorieseite ohne den Weg dorthin. */
body.hbm-redesign.et-db #et-boc .et-l nav.woocommerce-breadcrumb,
body.hbm-redesign nav.woocommerce-breadcrumb {
	display: block !important;
}

/* `flex: 1` heisst `flex-basis: 0` — der Text schrumpft dann unter seine eigene
   Höhe, und die Karte schneidet ihn ab (gemessen: 472 px Karte bei 515 px
   Inhalt). Mit `auto` als Basis wächst die Karte stattdessen mit. */
body.hbm-redesign ul.products li.product .hbm-karte__text {
	flex: auto;
}

/* --- Feinschliff Produktseite -------------------------------------------- */

/* Das Angebotszeichen gehört auf das Bild, in der Akzentfarbe. WooCommerce
   setzt es als rundes, blasses Schildchen daneben. */
body.hbm-redesign.single-product #left-area > .product .onsale {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 2;
	margin: 0;
	padding: 8px 12px;
	background: var(--hbm-akzent);
	color: #fff;
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	font-weight: 500;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1;
	border-radius: 2px;
	min-height: 0;
	min-width: 0;
}

body.hbm-redesign.single-product .woocommerce-product-gallery { position: relative; }

/* Bei einem reduzierten Preis schreibt WooCommerce den Steuerhinweis zweimal —
   einmal hinter den durchgestrichenen, einmal hinter den gültigen Betrag.
   Einer genügt. */
body.hbm-redesign .summary .price del .woocommerce-price-suffix,
body.hbm-redesign .summary .price del small {
	display: none;
}

body.hbm-redesign .summary .price .woocommerce-price-suffix,
body.hbm-redesign .summary .price small {
	font-family: var(--hbm-sans);
	font-size: 14px;
	color: var(--hbm-leise);
	margin-left: 8px;
}

/* Die Mengenstaffel aus HBM_Bulk_Pricing steht im Entwurf nicht, ist aber eine
   echte Angabe: Wer drei Gläser nimmt, zahlt weniger. Sie bekommt hier die
   Form der übrigen Angaben statt WooCommerces Attributtabelle. */
body.hbm-redesign .summary table.hbm-staffelpreise {
	width: 100%;
	border-collapse: collapse;
	margin: 0;
	font-size: 14.5px;
}

body.hbm-redesign .summary table.hbm-staffelpreise caption {
	font-family: var(--hbm-sans);
	font-size: 11.5px;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #a08f7d;
	text-align: left;
	padding: 0 0 8px;
	caption-side: top;
}

body.hbm-redesign .summary table.hbm-staffelpreise th,
body.hbm-redesign .summary table.hbm-staffelpreise td {
	border: none;
	border-bottom: 1px solid #ece2d4;
	padding: 8px 0;
	text-align: left;
	background: transparent;
	font-weight: 400;
	color: var(--hbm-text);
}

body.hbm-redesign .summary table.hbm-staffelpreise td:last-child { text-align: right; }

body.hbm-redesign .summary p.hbm-staffel-aktiv:empty { display: none; }

/* =========================================================================
   Warenkorb und Kasse: zwei Spalten aus drei Divi-Zeilen

   Beide Seiten sind mit Divi gebaut und liegen auf Live. Ihre Zeilenstruktur
   passt nicht zum Entwurf:

     Warenkorb   Zeile 1: Produkte (volle Breite)
                 Zeile 2: Querverkäufe | Summen
     Kasse       Zeile 1: Hinweis
                 Zeile 2: Rechnungsangaben | Versand, Notiz, Bestellung, Zahlung

   Der Entwurf will Produkte beziehungsweise Formular links und die
   Zusammenfassung rechts als klebende Spalte.

   WARUM NICHT DIE SEITEN UMBAUEN:
   Es sind dieselben Seiten, die der Shop heute benutzt. Eine Änderung an ihrer
   Struktur wäre sofort für jeden Kunden sichtbar — und zwar mitten im
   Bezahlvorgang. `display: contents` löst die Zeilen und Spalten stattdessen
   nur dann auf, wenn das Redesign gilt; das HTML auf Live bleibt Zeichen für
   Zeichen dasselbe.

   Die Bausteine werden danach mit `grid-row` an ihren Platz gestellt. Ohne
   ausdrückliche Zeilenangabe rutscht die Zusammenfassung nach unten: Die
   automatische Verteilung füllt Zeile für Zeile und geht nie zurück.
   ========================================================================= */

body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_section,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_section {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 400px;
	column-gap: 48px;
	min-width: 0;
	align-items: start;
	padding: 0 var(--hbm-rand) 76px;
}

body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_row,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_row,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_row > .et_pb_column:nth-child(2) {
	display: contents;
}

/* --- Warenkorb ------------------------------------------------------------ */

body.hbm-redesign.woocommerce-cart .et_pb_row:first-child > .et_pb_column {
	grid-column: 1;
	grid-row: 1;
}

body.hbm-redesign.woocommerce-cart .et_pb_row:nth-child(2) > .et_pb_column:first-child {
	grid-column: 1;
	grid-row: 2;
}

body.hbm-redesign.woocommerce-cart .et_pb_row:nth-child(2) > .et_pb_column:nth-child(2) {
	grid-column: 2;
	grid-row: 1 / 3;
	position: sticky;
	top: 120px;
}

/* --- Kasse ---------------------------------------------------------------- */

body.hbm-redesign.woocommerce-checkout .et_pb_row:first-child > .et_pb_column {
	grid-column: 1 / -1;
	grid-row: 1;
}

body.hbm-redesign.woocommerce-checkout .et_pb_row:nth-child(2) > .et_pb_column:first-child {
	grid-column: 1;
	grid-row: 2;
}

body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_shipping { grid-column: 1; grid-row: 3; }
body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_additional_info { grid-column: 1; grid-row: 4; }

body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_order_details {
	grid-column: 2;
	grid-row: 2;
	position: sticky;
	top: 120px;
}

body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_payment_info {
	grid-column: 2;
	grid-row: 3 / 6;
}

/* Divi begrenzt jede Zeile auf 1080 px. Aufgelöste Zeilen geben diese Grenze
   an ihre Spalten weiter — hier muss sie weg, sonst stehen zwei schmale
   Säulen in einer breiten Seite. */
body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_column,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_column,
body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_module,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_module {
	max-width: none;
	width: auto;
	float: none;
}

/* Der Seitentitel („Warenkorb“, „Kasse“) steht im Entwurf gross über der
   Tabelle, nicht als Divi-Modulüberschrift mittig. */
body.hbm-redesign.woocommerce-cart .et_pb_post_title,
body.hbm-redesign.woocommerce-checkout .et_pb_post_title {
	grid-column: 1 / -1;
	text-align: left;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l .woocommerce-cart .et_pb_post_title h1,
body.hbm-redesign.woocommerce-cart .et_pb_post_title h1,
body.hbm-redesign.woocommerce-checkout .et_pb_post_title h1 {
	font-family: var(--hbm-serif);
	font-size: 40px;
	font-weight: 500;
	color: var(--hbm-dunkel);
	text-align: left;
	padding: 0;
}

@media (max-width: 980px) {
	body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_section,
	body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_section {
		grid-template-columns: minmax(0, 1fr);
		padding: 0 var(--hbm-rand-mobil) 48px;
		row-gap: 30px;
	}

	/* Dieselben Selektoren wie oben, Zeichen für Zeichen: Die Regeln für den
	   Desktop tragen `:first-child` beziehungsweise `:nth-child(2)` und wiegen
	   damit schwerer als eine Sammelregel. Ohne diese Wiederholung blieben die
	   Spalten nebeneinander — gemessen: 804 px Inhalt in einem 390 px breiten
	   Fenster. */
	body.hbm-redesign.woocommerce-cart .et_pb_row:first-child > .et_pb_column,
	body.hbm-redesign.woocommerce-cart .et_pb_row:nth-child(2) > .et_pb_column:first-child,
	body.hbm-redesign.woocommerce-cart .et_pb_row:nth-child(2) > .et_pb_column:nth-child(2),
	body.hbm-redesign.woocommerce-checkout .et_pb_row:first-child > .et_pb_column,
	body.hbm-redesign.woocommerce-checkout .et_pb_row:nth-child(2) > .et_pb_column:first-child,
	body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_shipping,
	body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_additional_info,
	body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_order_details,
	body.hbm-redesign.woocommerce-checkout .et_pb_wc_checkout_payment_info {
		grid-column: 1;
		grid-row: auto;
		position: static;
	}
}

/* =========================================================================
   WooCommerce-Meldungen

   „Produkt wurde hinzugefügt“, „Bitte Feld ausfüllen“, „Gutschein ungültig“ —
   drei Arten, die WooCommerce als grosse Farbflächen ausgibt. Im Redesign sind
   es ruhige Kästen mit einem farbigen Balken links; die Farbe sagt, worum es
   geht, ohne die halbe Seite einzufärben.
   ========================================================================= */

body.hbm-redesign .woocommerce-message,
body.hbm-redesign .woocommerce-info,
body.hbm-redesign .woocommerce-error,
body.hbm-redesign .woocommerce-notice {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	flex-wrap: wrap;
	background: var(--hbm-leinen);
	border: none;
	border-left: 3px solid var(--hbm-akzent);
	border-radius: 0;
	color: var(--hbm-text);
	font-size: 14.5px;
	line-height: 1.6;
	margin: 0 0 18px;
	padding: 16px 20px;
	list-style: none;
}

body.hbm-redesign .woocommerce-message { border-left-color: #3f7d3a; }
body.hbm-redesign .woocommerce-info { border-left-color: #9a6a2a; }

body.hbm-redesign .woocommerce-message::before,
body.hbm-redesign .woocommerce-info::before,
body.hbm-redesign .woocommerce-error::before,
body.hbm-redesign .woocommerce-message::after,
body.hbm-redesign .woocommerce-info::after,
body.hbm-redesign .woocommerce-error::after {
	display: none;
}

/* Leere Meldungen entstehen, wenn ein Text herausgefiltert wurde. Ein leerer
   Kasten wäre schlimmer als gar keiner. */
body.hbm-redesign .woocommerce-message:empty,
body.hbm-redesign .woocommerce-info:empty,
body.hbm-redesign .woocommerce-error:empty,
body.hbm-redesign .woocommerce-notices-wrapper:empty {
	display: none;
}

body.hbm-redesign .woocommerce-message .button,
body.hbm-redesign .woocommerce-info .button {
	background: transparent;
	border: 1.5px solid var(--hbm-dunkel);
	border-radius: 2px;
	color: var(--hbm-dunkel);
	font-family: var(--hbm-sans);
	font-size: 13.5px;
	font-weight: 500;
	padding: 9px 16px;
	text-decoration: none;
	white-space: nowrap;
}

body.hbm-redesign .woocommerce-message .button:hover,
body.hbm-redesign .woocommerce-info .button:hover {
	background: var(--hbm-dunkel);
	color: #fff;
}

/* Divi faerbt die Meldungen knallrot, mit ID im Selektor. Dieselbe Klammer wie
   bei den Zeilen: eine ID und eine Klasse mehr. */
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-message,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-info,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-error,
body.hbm-redesign .woocommerce-message,
body.hbm-redesign .woocommerce-info,
body.hbm-redesign .woocommerce-error {
	background: var(--hbm-leinen) !important;
	color: var(--hbm-text) !important;
	border: none !important;
	border-left: 3px solid var(--hbm-akzent) !important;
	border-radius: 0 !important;
	padding: 16px 20px !important;
	font-size: 14.5px;
}

body.hbm-redesign.et-db #et-boc .et-l .woocommerce-message { border-left-color: #3f7d3a !important; }
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-info { border-left-color: #9a6a2a !important; }

body.hbm-redesign.et-db #et-boc .et-l .woocommerce-message a,
body.hbm-redesign.et-db #et-boc .et-l .woocommerce-info a { color: var(--hbm-akzent); }

/* =========================================================================
   Warenkorbtabelle: Spalten wie im Entwurf

   WooCommerce gibt die Zellen in der Reihenfolge Entfernen, Bild, Name, Preis,
   Menge, Summe aus. Der Entwurf zeigt Bild, Name, Menge, Summe — und das
   Kreuz zum Entfernen ganz rechts, wo es niemand aus Versehen trifft.

   Die Zeile wird dafür zum Raster. Das erlaubt `order`, ohne die Reihenfolge
   im HTML anzufassen: Für Screenreader bleibt sie, wie WooCommerce sie meint.
   Der Einzelpreis entfällt — er steht im Entwurf unter dem Namen, und zweimal
   dieselbe Zahl in einer Zeile liest niemand.
   ========================================================================= */

body.hbm-redesign table.cart thead tr,
body.hbm-redesign table.cart tr.cart_item {
	display: grid;
	grid-template-columns: 100px minmax(0, 1fr) 150px 120px 40px;
	gap: 22px;
	align-items: center;
}

body.hbm-redesign table.cart .product-thumbnail { order: 1; }
body.hbm-redesign table.cart .product-name { order: 2; }
body.hbm-redesign table.cart .product-quantity { order: 3; }
body.hbm-redesign table.cart .product-subtotal { order: 4; text-align: right; }
body.hbm-redesign table.cart .product-remove { order: 5; text-align: center; }
body.hbm-redesign table.cart .product-price { display: none; }

body.hbm-redesign table.cart tr.actions { display: block; }
body.hbm-redesign table.cart tr.actions td { display: block; padding: 26px 0 0; border: none; }

body.hbm-redesign table.cart tr.actions td.actions {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 20px;
	flex-wrap: wrap;
}

/* --- Summenkasten: Beschriftung links, Betrag rechts ---------------------- */

body.hbm-redesign .cart_totals table.shop_table tr {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 20px;
}

body.hbm-redesign .cart_totals table.shop_table th { text-align: left; }
body.hbm-redesign .cart_totals table.shop_table td { text-align: right; }

body.hbm-redesign .cart_totals tr.hbm-fortschritt { display: block; }
body.hbm-redesign .cart_totals tr.hbm-fortschritt td { display: block; width: 100%; text-align: left; }

body.hbm-redesign .cart_totals ul#shipping_method {
	gap: 8px;
	text-align: right;
}

body.hbm-redesign .cart_totals ul#shipping_method li {
	border: none;
	background: transparent;
	padding: 0;
	font-size: 14.5px;
}

body.hbm-redesign .cart_totals .woocommerce-shipping-destination,
body.hbm-redesign .cart_totals .shipping-calculator-button {
	font-size: 13px;
	color: var(--hbm-leise);
}

@media (max-width: 980px) {
	body.hbm-redesign table.cart thead tr { display: none; }
}

/* Solange `table` ein Tabellenlayout ist, rechnet der Browser die Spalten
   selbst aus — die Rasterangabe an der Zeile gilt dann gegen eine viel zu
   schmale Breite, und der Produktname stand einbuchstabig untereinander.
   Erst als Block gibt die Tabelle ihren Zeilen die volle Breite. */
body.hbm-redesign table.cart,
body.hbm-redesign table.cart > thead,
body.hbm-redesign table.cart > tbody {
	display: block;
	width: 100%;
}

body.hbm-redesign.et-db #et-boc .et-l table.cart td.product-thumbnail img,
body.hbm-redesign table.cart td.product-thumbnail img {
	width: 100px !important;
	height: auto;
	aspect-ratio: 1 / 1;
	object-fit: cover;
	display: block;
	border-radius: 2px;
	background: var(--hbm-sand);
	max-width: none;
}

body.hbm-redesign table.cart td.product-thumbnail a { display: block; }

/* Die leere Kopfzelle über den Bildern zieht sonst einen Strich ins Nichts. */
body.hbm-redesign table.cart thead th:empty { border-bottom-color: transparent; }

/* Die Telefonnummer im Kassenkopf darf nicht umbrechen — sie stand sonst
   dreizeilig neben dem Logo (gemessen: 51 px breit, 110 px hoch). */
body.hbm-redesign .hbm-schritte,
body.hbm-redesign .hbm-schritte__hilfe,
body.hbm-redesign .hbm-schritte__schritt {
	white-space: nowrap;
}

body.hbm-redesign .hbm-kopf__aktionen--kasse { flex: 0 0 auto; }

/* Divi faerbt Formularfelder grau. Im Entwurf stehen sie auf Weiß, damit
   erkennbar bleibt, wo etwas einzutragen ist. */
body.hbm-redesign.et-db #et-boc .et-l .form-row input.input-text,
body.hbm-redesign.et-db #et-boc .et-l .form-row textarea,
body.hbm-redesign.et-db #et-boc .et-l .form-row select,
body.hbm-redesign.et-db #et-boc .et-l #customer_login input[type="text"],
body.hbm-redesign.et-db #et-boc .et-l #customer_login input[type="email"],
body.hbm-redesign.et-db #et-boc .et-l #customer_login input[type="password"] {
	background: #fff !important;
	border: 1px solid #ded2c2 !important;
	border-radius: 2px !important;
	padding: 14px 16px !important;
	font-family: var(--hbm-sans) !important;
	font-size: 15.5px !important;
	color: var(--hbm-text) !important;
	width: 100%;
}

/* Die Bestellübersicht auf der Kasse: Divi gibt ihr graue Zellen und
   Tabellenlinien. Sie bekommt dieselbe ruhige Form wie der Summenkasten im
   Warenkorb. */
body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table,
body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table tbody,
body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table tfoot {
	display: block;
	width: 100%;
	background: transparent;
	border: none;
}

body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table thead { display: none; }

body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table tr {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	gap: 16px;
	border-bottom: 1px solid #e3d9cc;
	padding: 12px 0;
}

body.hbm-redesign.et-db #et-boc .et-l .et_pb_wc_checkout_order_details table.shop_table th,
body.hbm-redesign.et-db #et-boc .et-l .et_pb_wc_checkout_order_details table.shop_table td {
	display: block;
	border: none !important;
	background: transparent !important;
	padding: 0 !important;
	font-size: 15px;
	color: var(--hbm-text);
	text-transform: none;
	letter-spacing: 0;
	font-weight: 400;
	text-align: left;
}

body.hbm-redesign .et_pb_wc_checkout_order_details table.shop_table tr.order-total {
	border-bottom: none;
	padding-top: 16px;
}

body.hbm-redesign.et-db #et-boc .et-l .et_pb_wc_checkout_order_details tr.order-total th,
body.hbm-redesign.et-db #et-boc .et-l .et_pb_wc_checkout_order_details tr.order-total td {
	font-family: var(--hbm-serif) !important;
	font-size: 21px !important;
}

body.hbm-redesign .et_pb_wc_checkout_order_details tr.order-total td { text-align: right; }

body.hbm-redesign .et_pb_wc_checkout_order_details ul#shipping_method li {
	border: none;
	background: transparent;
	padding: 0;
	text-align: right;
}

/* --- Fehlerseite ---------------------------------------------------------- */

.hbm-redesign .hbm-fehler {
	display: flex;
	flex-direction: column;
	gap: 20px;
	justify-content: center;
	height: 100%;
}

body.hbm-redesign.et-db #et-boc .et-l .hbm-fehler h1,
.hbm-redesign .hbm-fehler h1 {
	font-family: var(--hbm-serif);
	font-size: 42px;
	font-weight: 500;
	line-height: 1.15;
	margin: 0;
	padding: 0;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-fehler__text,
.hbm-redesign p.hbm-fehler__text {
	margin: 0;
	font-size: 17px;
	line-height: 1.8;
	color: #5c4c42;
	max-width: 460px;
}

body.hbm-redesign.et-db #et-boc .et-l p.hbm-fehler__knoepfe,
.hbm-redesign p.hbm-fehler__knoepfe {
	display: flex;
	gap: 14px;
	flex-wrap: wrap;
	margin: 6px 0 0;
}

.hbm-redesign .hbm-fehler__bild img {
	width: 100%;
	height: 100%;
	min-height: 460px;
	object-fit: cover;
	border-radius: 3px;
	display: block;
}

@media (max-width: 980px) {
	.hbm-redesign .hbm-fehler h1 { font-size: 30px; }
	.hbm-redesign .hbm-fehler__bild img { min-height: 240px; }
}

/* WooCommerce hängt an jeden Preis in der Reihe „inkl. MwSt.“ an. Die Karte
   trägt den vollständigen Pflichthinweis („inkl. MwSt. zzgl. Versand“) schon
   als eigene Zeile — der kurze davor wäre derselbe Satz zweimal. */
body.hbm-redesign ul.products li.product .price .woocommerce-price-suffix,
body.hbm-redesign ul.products li.product .price small {
	display: none;
}

/* =========================================================================
   Clearfix-Pseudoelemente in Rastern

   Dieselbe Falle wie bei den Produktreihen, nur an anderer Stelle: WooCommerce
   und Divi räumen ihre Float-Spalten mit `::before`/`::after` auf. Sobald der
   Behälter ein Raster wird, sind das echte Rasterzellen — sie belegen die
   erste Zelle, und der eigentliche Inhalt rutscht eine Zelle weiter.

   Gemessen auf der Anmeldeseite: Das Anmeldeformular stand rechts, der Kasten
   „Neu hier?“ darunter links.
   ========================================================================= */

body.hbm-redesign #customer_login::before,
body.hbm-redesign #customer_login::after,
body.hbm-redesign .woocommerce-order::before,
body.hbm-redesign .woocommerce-order::after,
body.hbm-redesign .woocommerce-customer-details::before,
body.hbm-redesign .woocommerce-customer-details::after,
body.hbm-redesign .hbm-konto__adressen::before,
body.hbm-redesign .hbm-konto__adressen::after,
body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_section::before,
body.hbm-redesign.woocommerce-cart .et-l--post .et_pb_section::after,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_section::before,
body.hbm-redesign.woocommerce-checkout .et-l--post .et_pb_section::after,
body.hbm-redesign.single-product #left-area > .product::before,
body.hbm-redesign.single-product #left-area > .product::after,
body.hbm-redesign.tax-product_cat #left-area::before,
body.hbm-redesign.tax-product_cat #left-area::after,
body.hbm-redesign.woocommerce-shop #left-area::before,
body.hbm-redesign.woocommerce-shop #left-area::after {
	display: none !important;
}

/* =========================================================================
   Rasterelemente dürfen schrumpfen

   Ein Rasterelement bekommt von sich aus `min-width: auto` — es wird nie
   schmaler als sein breitester unteilbarer Inhalt. Bei den Produktkarten ist
   das der Knopf „In den Warenkorb“. Auf dem Handy wuchs die Spalte dadurch
   auf 381 px in einem 310 px breiten Bereich, und die Seite liess sich
   seitwärts schieben.

   `minmax(0, 1fr)` an der Spalte und `min-width: 0` an den Elementen nehmen
   diese Untergrenze weg: Dann bricht der Text um, statt die Seite zu sprengen.
   ========================================================================= */

body.hbm-redesign.tax-product_cat #left-area,
body.hbm-redesign.woocommerce-shop #left-area {
	grid-template-columns: 250px minmax(0, 1fr);
}

body.hbm-redesign.woocommerce #left-area,
body.hbm-redesign.woocommerce-page #left-area {
	padding: 0 !important;
}

body.hbm-redesign ul.products,
body.hbm-redesign ul.products li.product,
body.hbm-redesign .hbm-shop__leiste,
body.hbm-redesign .hbm-shop__werkzeuge,
body.hbm-redesign .hbm-kategorie,
body.hbm-redesign .hbm-kategorie__text {
	min-width: 0;
}

@media (max-width: 980px) {
	body.hbm-redesign.tax-product_cat #left-area,
	body.hbm-redesign.woocommerce-shop #left-area {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* Das Sortierfeld ist das einzige Element mit einer festen Mindestbreite:
   WooCommerce laesst dem <select> die Breite seines laengsten Eintrags
   („Nach Preis sortieren: absteigend“). Auf dem Handy ragte es 31 px aus der
   Seite. */
body.hbm-redesign .hbm-shop__sortierung,
body.hbm-redesign .hbm-shop__sortierung form.woocommerce-ordering,
body.hbm-redesign .hbm-shop__sortierung select {
	max-width: 100%;
	min-width: 0;
}

body.hbm-redesign .hbm-shop__sortierung select {
	text-overflow: ellipsis;
}

@media (max-width: 980px) {
	body.hbm-redesign .hbm-shop__werkzeuge {
		flex-direction: column;
		align-items: stretch;
		gap: 12px;
	}

	body.hbm-redesign .hbm-shop__sortierung { justify-content: space-between; }
	body.hbm-redesign .hbm-shop__sortierung select { flex: 1; }
}

/* =========================================================================
   Warenkorbtabelle auf dem Handy

   Steht bewusst am Ende der Datei: Die Regeln für den Rechner weiter oben
   setzen fünf Spalten, und bei gleichem Gewicht gewinnt die spätere Regel.
   Eine Handy-Fassung weiter vorn hätte keine Wirkung — genau das war der
   Fehler, der die Tabelle auf 390 px zu einem Durcheinander gemacht hat.
   ========================================================================= */

@media (max-width: 980px) {
	body.hbm-redesign table.cart thead tr { display: none; }

	body.hbm-redesign table.cart tr.cart_item {
		display: grid;
		grid-template-columns: 84px minmax(0, 1fr) auto;
		gap: 6px 14px;
		align-items: center;
		padding: 18px 0;
		border-bottom: 1px solid #ece2d4;
	}

	body.hbm-redesign table.cart tr.cart_item td {
		border: none;
		padding: 0;
		text-align: left;
	}

	/* WooCommerce blendet auf schmalen Fenstern vor jeder Zelle ihre
	   Spaltenüberschrift ein („Produkt:“, „Anzahl:“). In dieser Anordnung
	   steht die Angabe für sich — die Beschriftung wäre nur Lärm. */
	body.hbm-redesign table.cart tr.cart_item td::before {
		display: none !important;
	}

	/* WooCommerce blendet das Produktbild auf schmalen Fenstern ganz aus
	   (`shop_table_responsive td.product-thumbnail { display: none }`). Im
	   Entwurf steht es auch am Handy da — es ist die schnellste Art zu
	   erkennen, was im Korb liegt. */
	body.hbm-redesign table.cart td.product-thumbnail {
		display: block !important;
		grid-column: 1;
		grid-row: 1 / 3;
		order: 0;
	}

	body.hbm-redesign.et-db #et-boc .et-l table.cart td.product-thumbnail img,
	body.hbm-redesign table.cart td.product-thumbnail img { width: 84px !important; }

	body.hbm-redesign table.cart td.product-name {
		grid-column: 2 / 4;
		grid-row: 1;
		order: 0;
	}

	body.hbm-redesign table.cart td.product-quantity {
		grid-column: 2;
		grid-row: 2;
		order: 0;
	}

	body.hbm-redesign table.cart td.product-subtotal {
		grid-column: 3;
		grid-row: 2;
		order: 0;
		text-align: right;
	}

	body.hbm-redesign table.cart td.product-remove {
		grid-column: 3;
		grid-row: 1;
		order: 0;
		text-align: right;
	}

	body.hbm-redesign table.cart td.product-name a { font-size: 17px; }

	body.hbm-redesign table.cart tr.actions td.actions {
		flex-direction: column;
		align-items: stretch;
	}
}

/* Divis Angebotszeichen ist ein oranger Kreis. Der Entwurf setzt ein rotes
   Rechteck auf das Bild — dieselbe Marke wie auf der Produktkarte. */
body.hbm-redesign.et-db #et-boc .et-l .onsale,
body.hbm-redesign .onsale {
	background: var(--hbm-akzent) !important;
	color: #fff !important;
	border-radius: 2px !important;
	font-family: var(--hbm-sans) !important;
	font-size: 11.5px !important;
	font-weight: 500 !important;
	letter-spacing: .08em !important;
	text-transform: uppercase;
	line-height: 1 !important;
	padding: 8px 12px !important;
	min-height: 0 !important;
	min-width: 0 !important;
	width: auto !important;
	height: auto !important;
}
