/* ============================================================
   HappyFam · hf-system.css · v2.77 · Stand 28.10.2026 · EIKE.DIGITAL
   v2.77: Block 42 · Produktseite mobil: keine Überbreite mehr (Thumb-Leiste schob die Spalte breiter als den Bildschirm, Flex-Kinder
          ohne min-width:0) · Sterne ohne Lücke links (Woo-Clearfix ::before war in der Flex-Zeile ein leeres Element + 12 px Abstand).
   v2.76: Block 39 · /danke/: Logo im Kopf ragte 10 px aus dem Rahmen (CartFlows-Rahmen 130×40, Bild bei 130 px Breite 50 px hoch) → Höhe 100 %, Breite automatisch ·
          rechte Spalte als Seitenpanel (Linie links, ohne Rahmen/Radius) statt Karte: lief über die volle Höhe, runde Ecken stießen an Kopf und Seitenende ·
          Seitenhintergrund Creme statt CartFlows-Grau (#f5f5f5 blitzte unter den Spalten durch).
   v2.75: Block 41 · /kasse/: Adresskarten (Liefer-/Rechnungsadresse) als weiße Karte, Name in Display, „Bearbeiten“ als Emerald-Link ·
          Abholstationen-Liste mit heller Linie, Radius und weichem Schatten statt dunklem Rahmen · Klarna-Logo hinter dem Namen.
   v2.74: Block 39 · /danke/: alle Regeln mit #wcf-instant-thankyou, weil CartFlows (5 Klassen) Polster der Karten und den Button
          „Weiter einkaufen“ überschrieb · ein Stern-Schrägstrich im Kommentar zu den Umbruch-Utilities (seit v1.16) beendete den Kommentar zu früh und
          machte die Regel .hf-txtpretty ungültig, korrigiert ·
          Block 41 · /kasse/: Abstand zwischen Name und Logo auch bei Apple Pay, Google Pay, Karten.
   v2.73: Block 41 · /kasse/ (Woo-Block-Kasse, Seite 1658) wie die Funnel-Kassen: Versand- und Zahlungsarten als weiße Karte mit
          Trennlinien (keine Emerald-Umrandung der gewählten Option), Radio mit Punkt in Vermillion, Namen in Display 700, Logos
          direkt hinter dem Namen, Beschreibung als Creme-Feld. Versandart vor der Abholstation, Abholstation als eigene Karte,
          Auswahlfeld wie die übrigen Felder. Checkbox-Haken mittig.
   v2.72: Block 39 · /danke/: Summenzeilen mit Abstand und Wert rechtsbündig (Versand-Text klebte am Label, „Kundenwunsch“ unter der Erstattung versetzt),
          Downloads ohne graue Innenfläche (CartFlows frontend.css), leere Download-Box aus (z. B. erstattete Bestellung ohne Download-Rechte).
   v2.71: Block 31 · Karte „Deine Bestellung“ ohne Polster: var(--hf-s-8) gibt es nicht (Raster beginnt bei 12) → ganze padding-/margin-Angabe ungültig. Jetzt 8px.
   v2.70: Block 31 · Funnel-Kasse (System-Layout) wie /kasse/: Bumps → Zahlungsart → Rechtstexte → Gutschein → „Deine Bestellung“ als Karte → Button.
          Ersetzt die Umsortierung aus v2.36 (Übersicht stand vor der Zahlung, zwischen Summe und Button lagen Gutschein, Zahlarten, Rechtstext).
          #order_review mit display:contents, damit die Überschrift (außerhalb von #order_review) neben die Tabelle sortiert werden kann.
          Mobil blendet CartFlows die Übersicht über dem Button aus (nur eingeklappt oben) → wieder sichtbar.
          Block 25 · /kasse/ mobil: Kopfzeile „Bestellübersicht“ wieder mit 16/24 px Polster (Germanized setzt is-mobile/-medium/-small padding 0, 0,5,0).
   v2.69: Block 40 · CartFlows-Kassen: Versand-Umschalter in den Summen ohne Button-Fläche (Elementor-Widget färbte jeden Button in #order_review Coral) ·
          alte Funnels: „× 1“ und Lieferzeit auf einer Linie mit Abstand (Germanized-Absatz hatte 16 px margin-top, klebte an der Menge).
   v2.68: Block 39 · /danke/ (CartFlows Instant Thank You, globale Kasse): Seite in Creme, Karten im System, Danke-Zeile als Display,
          Bestellübersicht rechts als weiße Karte, Download-Links als Pillen, „Weiter einkaufen“ als hf-btn--primary. Farben/Schrift
          der Instant-Kasse bleiben CartFlows-Einstellung (Store Checkout → Design), hier nur, was dort nicht einstellbar ist.
   v2.67: Block 38 · /warenkorb/ leer: Cart-Block-Leerzustand im System (Icon 64 px in Emerald, H2 Display, Button als hf-btn--primary).
   v2.66: Block 37 · Zahlungsarten-Seite (Germanized-Liste) als Kartenliste: Name + Logo in einer Zeile, Beschreibung darunter, leere Boxen aus.
   v2.65: Block 19 · Produktkarte: Bild mit object-fit contain statt cover (3er-Pakete wurden seitlich beschnitten; Fläche bleibt 1:1).
   v2.64: Block 36 · Sprach-Klassen hf-de-only / hf-en-only (Container nur in einer Sprache zeigen, z. B. Newsletter-Sektion nur DE).
   v2.63: Block 35 · Kasse/Warenkorb: doppelte Lieferzeit mit Roh-Label „gzd-delivery_time:“ unter dem Produktnamen ausgeblendet (Germanized + CartFlows).
   v2.62: KI-Bilderliste (/ai-information/) ohne Listen-Einzug links.
   v2.61: Modern Cart, leerer Warenkorb: Empfehlungskarte mit Bild 4:3 ohne Leerraum, Abstände Bild/Titel/Text/Preis/Button/Punkte im 8er-Raster, Button ohne Unterstreichung.
   v2.60: Modern Cart Slider (leerer Warenkorb + Empfehlungen): Punkte-Navigation unter dem Slider statt über dem Button, nur einmal, kleine Punkte statt Kit-Buttons · Pfeile weiß mit Emerald.
   v2.59: Block 32 · Alte Funnels (body.hf-legacy-step): Buttons im Look des alten Shops (Gold #D4B25C, weiß, Montserrat 700), Hover bleibt Gold statt Kit-Hover.
   v2.58: Primär-Button auf Coral: Kontrastring Emerald statt Ink (passt zum Ghost-Button, Kontrast bleibt).
   v2.57: Modern Cart: Abstand unter den Empfehlungs-Buttons (30 px) raus.
   v2.56: Modern Cart: Abdunkelung als eigene Ebene mit Einblenden (lief vorher mit der Slide-Animation von oben) · Empfehlungs-Buttons ohne Abschneiden.
   v2.55: Modern Cart: abgedunkelter Hintergrund + Schatten beim geöffneten Warenkorb · „Zur Kasse“ gegen cart.css (1,3,1) nachgeschärft · Empfehlungs-Buttons einzeilig.
   v2.54: Primär-Button-Hover auf Emerald/Ink: Creme statt Emerald (war unsichtbar) · Kasse: Abstand über „Jetzt kaufen“ (Germanized 36 px + Woo 36 px) auf 16 px · Modern Cart: Empfehlungen (Cross-Sells) als Karten, Buttons als Pillen, „Zur Kasse“ im System-Look.
   v2.53: Sprach-Sichtbarkeit: .hf-de-only (nur Deutsch) und .hf-en-only (nur Englisch) für Container/Widgets, gesteuert über html[lang].
   v2.52: Clearfix-Regel gegen woocommerce.css (0,3,3) nachgeschärft.
   v2.51: Kaufzeile ohne Woo-Clearfix (::before/::after waren Flex-Items, der Gap erzeugte Abstand links/rechts) · Preis-Hinweise kompakter: „inkl. MwSt. · zzgl. Versand“ in einer Zeile, Lieferzeit darunter, 2 px Zeilenabstand.
   v2.50: Block 28 KI-Kennzeichnung als Symbol im Bild unten rechts (hf-core 1.29.9), voller Text als Tooltip bei Hover/Fokus/Antippen.
   v2.49: Mengenfeld: −/+ als runde Flächen mit Innenabstand (Hover war eckig angeschnitten).
   v2.48: Mengenfeld im Bump nicht mehr ausgeblendet (steuert CartFlows), nur gestaltet. Preis kommt über {{product_price}} im Beschreibungstext.
   v2.47: Bump-Beschreibung: Fett-Regel p:has(del) raus (Eltern-Cards-Text ist ein einziger Absatz, wurde komplett fett), Preis über die CartFlows-Ausgabe (.wcf-regular-price/.wcf-discount-price/.wcf-normal-price), Blink-Pfeil nicht mehr überschrieben.
   v2.46: Nachtrag v2.45 (Block fehlte in der Datei) + !important gegen den CartFlows-Skin (font-weight:500 !important bei hervorgehobenen Produkten).
   v2.45: Checkout „Deine Wahl“: Produktname fett (CartFlows-Stil schlug Block 31), Varianten-Attribut („Kurs: Wut & Ärger Onlinekurs“) ausgeblendet, Untertext klein und gedämpft.
   v2.44: Danke-Seite: Clearfix-Pseudo der Übersicht aus dem Raster (erste Zelle war leer), Summenzeilen-Beschriftung normal statt fett.
   v2.43: Block 32 Danke-Seite der Kurs-Funnels: Bestellübersicht als Kennzahlen-Karte, Downloads und Bestelldetails als weiße Karten, Download-Buttons als Ghost-Pillen, Woo-Hinweis „Dankeschön …“ aus.
   v2.42: Bump-Bilder größer: Desktop 200 px Spalte, mobil bis 260 px über dem Text.
   v2.41: Stadt füllt die Zeile neben der Postleitzahl (beide wcf-column-33, rechts blieb ein Drittel leer).
   v2.40: Checkout-Felder: CartFlows-Raster (Wrapper margin 0 -7px, Feld-Padding 7px) durch Flex mit gap ersetzt, Breiten aus wcf-column-50/33 bzw. first/last.
   v2.39: Checkout mobil: Bump-Bild klein und links (war volle Breite), Produktname in der Übersicht nimmt die freie Breite (CartFlows gab ihm eine feste Breite, „× 1“ stand mittig).
   v2.38: CartFlows-Steps sind body.woocommerce-checkout: Rahmen der /kasse/ (max-width + Padding am main) gilt dort nicht mehr · Spalten-Padding von CartFlows mobil raus · „Deine Wahl“ bricht nicht mehr Wort für Wort · Lieferzeit unter dem Produktnamen.
   v2.37: Checkout-Bestellübersicht: Kopfzeile aus, Produktzeile als Bild · Name · Menge (CartFlows macht td.product-name zum Flex, Linie war nur halb und gestrichelt), MwSt.-Zeile leise.
   v2.36: Checkout: Zahlarten-Liste weiß statt grau, Gutschein-Button mit zwei IDs (schlug die Widget-Stile nicht), Reihenfolge in #order_review: Bumps, Bestellübersicht, Gutschein, Zahlart, Kaufen.
   v2.35: Zitat-Karte auf Creme weiß (hob sich nicht ab) · Abstand zwischen zentriertem Text und folgendem Raster/Track.
   v2.34: Block 31 CartFlows-Checkout im HappyFam-Look (Felder, Produktwahl, Zahlarten, Kaufbutton, Gutschein, Order Bumps), nur in .hf-sec.
   v2.33: Block 30 an .hf-sec gebunden statt an body:not(.hf-legacy-step): greift auf jeder Seite im System-Layout, alte Funnels (ohne hf-sec) bleiben unberührt.
   v2.32: Block 30 CartFlows-Button „Nächster Schritt“ im HappyFam-Look (Kurs-Landings, nur Steps mit [neu] im Titel).
   v2.31: Produkt-Box im Fließtext: Bild 4:3 mit cover, schneidet den weißen Rand der quadratischen Packshots oben/unten ab.
   v2.30: Fix v2.29: aspect-ratio auto + sizes="auto" (WP 6.7, contain:size) ergab 3000×1500-Platzhalter → feste 3:2-Fläche.
   v2.29: Produkt-Box im Fließtext: Bild vertikal mittig und ohne quadratischen Rahmen (Querformat-Packshots).
   v2.28: Block 29 Lesetext: Button-Block mit Klasse hf-btn am Wrapper neutralisiert (doppelte Pille),
   [hf_lead] im Fließtext volle Spaltenbreite, Feld und Button in einer Zeile.
   v2.27: Block 28 KI-Kennzeichnung (.hf-ai, hf-core 1.29.0): Unterschrift klein und grau unter dem Bild,
   auf Emerald/Ink hell · Raster [hf_ai_images].
   v2.26: Bewertungs-Raster mit minmax(0,1fr): Ein Text ohne Leerzeichen („Praktisch,kleinschrittig,…“)
   zog eine Spalte breit, sobald „Weitere Bewertungen“ ihn einblendete. Lange Wörter brechen jetzt um.
   v2.25: [hf_product] als Spalte im Split (Produktlinien-Seiten S3): Box gestapelt,
   Bild oben im Querformat, kein Außenabstand. Nebeneinander war die Titelspalte zu schmal.
   ------------------------------------------------------------
   v2.24: [hf_lead] in der Freebie-Karte an das globale Freebie-Formular angeglichen: Feld mit
   1-px-Rahmen, Button ohne Ink-Ring (der Ring aus v2.23 fällt weg).
   v2.23: [hf_lead] in der Freebie-Karte (.hf-card-xl) ohne eigene Karte: kein Weiß, kein Rahmen,
   kein Schatten, Feld und Button nebeneinander, sobald Platz ist (wie das globale Freebie-Formular).
   Auf Coral bekommt der Button den Ink-Ring wie .hf-btn--primary. [hf_lead] in der Media-Spalte
   eines Splits: spaltenbreit, 24 px unter dem Bild.
   v2.22: [hf_lead] auf Landingpages: im Copy-Stack linksbündig und spaltenbreit (Shortcode-Widget
   streckt sich, kein 32er-Rand oben/unten mehr), in .hf-center-Karten mittig. Langer Button-
   Text („Ja, schick mir das Workbook für 0 €!“) bricht um statt auf 390 px aus der Karte zu laufen.
   v2.21: Hover der orangen Buttons wechselt auf Emerald (wie der Ghost-Button). brightness(.92)
   aus v2.20 färbte auch den weißen Text grau, das Orange wirkte schmutzig.
   v2.20: Hover der orangen Buttons sichtbar: etwas dunkler (brightness .92 statt 1.05, Palette
   bleibt), Schatten kräftiger, Anheben bleibt. Gilt für .hf-btn--primary, Kaufen-Button und
   Kaufleiste.
   v2.19: Variable Produkte: weniger Luft zwischen Auswahl und Kaufbutton. woocommerce.css gab der
   Tabelle 1em Abstand (0,4,2 schlug .hf-buy table.variations), und „Zurücksetzen“ hielt
   unsichtbar (visibility:hidden) seine 34 px Platz.
   v2.18: „Weiterlesen“ als Block (all:unset der Basisregel machte den Button inline, das
   Screenshot-Bild rutschte daneben).
   v2.17: Bugs aus dem Call 09.10.: Kaufen-Button bei Hover und deaktiviert nicht mehr lila
   (woocommerce.css .button.alt) · Bewertungskarte immer einspaltig („Weiterlesen“ klebte neben
   dem Screenshot) · Core-Lightbox zeigt das ganze Bild · „ab“ vor Preisen variabler Produkte.
   v2.16: Trust-Zeile auf der Produktseite auch aus [hf_trust] (hf-core 1.22.0, Shortcode-Widget
   im Copy-Stack): gleiche Ausrichtung und Labelgröße wie der bisherige Container.
   v2.15: Weiß für alte Funnels mit !important (Elementor-Seiten-/Kit-Hintergrund) .
   v2.14: Alte Funnels (CartFlows-Steps aus dem alten Shop, Body-Klasse hf-legacy-step aus
   hf-core 1.21.0) mit weißem Hintergrund wie bisher · neue Varianten bleiben creme.
   v2.13: Lightbox-Knopf auch ohne Hover weiß (Core: :not(:hover):not(:active):not(.has-background)
   = 0,4,1 setzte das Grau).
   v2.12: Lightbox-Knopf (WordPress „Bei Klick vergrößern“) im System: runder weißer Knopf mit
   Lupe statt grauem Kasten — Hello/Kit gaben dem 20-px-Knopf Button-Polster, das Icon war weiß
   auf hellgrau unsichtbar. Erscheint bei Hover und Tastaturfokus, Klick aufs Bild bleibt.
   v2.11: Kasse + Warenkorb fluchten mit dem Header (1120 px Inhalt): main#content mit
   box-sizing:border-box — Hello rechnete das Seitenpolster oben drauf (≈1184 px).
   v2.10: Kasse ab Desktop (≥1025) zweispaltig: Formular links, Abschluss rechts sticky
   (Bestellübersicht, Gesamtsumme, „Jetzt kaufen“), darunter einspaltig wie bisher · Rücknahme aus
   v2.09: Innenabstand der Artikel wieder 24 px, keine Leerzeilen mehr zwischen Zwischensumme und
   Lieferung (leere Woo-Wrapper bekamen Polster) · Block 26 Warenkorb (/warenkorb/): Tabelle,
   Menge, Summenkarte sticky, Button im System, Cross-Sells als Karten, Floating-Cart aus.
   v2.09: Kasse — Titel „Bestellübersicht" in Display-Schrift (Woo 0,3,0 → 0,4,1), Innenabstände
   der Übersichtskarte einheitlich 24 px.
   v2.08: Block 25 Kasse (WooCommerce-Checkout-Block + Germanized) — einspaltig 720 px
   (Reihenfolge Formular → Rechtstexte → Bestellübersicht → Button), Felder, Checkboxen,
   Hinweise, Übersicht als Karte, Kaufbutton im System.
   v2.07: Produktkarte — Kurzbeschreibung (Widget-Klasse hf-pcard__text) auf 3 Zeilen,
   klein und gedämpft; leere Absätze aus dem Heading-Widget unsichtbar.
   v2.06: Produkt-Hero oben bündig mit optischem Versatz der Textspalte (Desktop) ·
   Bewertungsbilder unter dem Text, Lightbox (hf-frontend-reviews.js v2).
   v2.05: Bewertungen — „Weitere Bewertungen anzeigen“, lange Texte auf 7 Zeilen mit
   „Weiterlesen“ (hf-frontend-reviews.js v1).
   v2.04: Bewertungsformular — „Absenden“ im System-Look (woocommerce.css:
   .woocommerce #respond input#submit = 2,1,1 färbte ihn grau) → (2,2,1).
   v2.03: Block 16.1 Galerie-Stil „Karussell" (is-style-hf-carousel, hf-core 1.17.3) —
   wischbarer Bildstreifen mit Scroll-Snap, Mobile 1,2 Bilder, ab Tablet 2,5; Bilder
   ungeschnitten (contain) auf weißer Karte; Bildunterschrift unter statt über dem Bild.
   v2.02: Kaufleiste auch ab Tablet (Produktname links, Preis + Button rechts), Modern Carts
   Floating-Button rückt auf allen Breiten hoch.
   v2.01: Haarlinie über den Bewertungen endgültig raus (Elementor: .woocommerce
   div.product.elementor .woocommerce-tabs .panel = 0,5,1 → 0,6,0) · .hf-split--product
   (Hero der Produktseite: oben bündig statt vertikal mittig, Galerie ab Desktop sticky) ·
   Thumb-Leiste ohne sichtbaren Scrollbalken.
   v2.00: Produktseite, Live-Runde 3 — Bewertungs-Grid: Woos Clearfix (ol::before/::after,
   display:table) belegte die erste Grid-Zelle · Haarlinie über „X Bewertungen" (Elementor-
   Panel-Rahmen des Data-Tabs-Widgets) raus · Karten-Hover: Titel bleibt Ink (Kit-a:hover
   färbte über inherit grün) · Galerie Mobile: Hauptbild max. 72vw hoch, zentriert,
   Thumbs 56 px.
   v1.99: Block 24 Produktseite — Abschnitts-Navigation (.hf-secnav-wrap / .hf-secnav,
   Pills im Chip-Look, aktiv Emerald, sticky unter dem Header, auf dem Handy wischbar)
   und Mobile-Kaufleiste (.hf-buybar, nur ≤767, schiebt Modern Carts Floating-Button
   hoch). hf-core 1.17.0, JS-Modul hf-frontend-secnav.js · Bewertungen: v1.95-Umbau mit
   display:contents zurückgenommen (#reviews war ohne Box kein Sprungziel), Hinweis § 5b
   kommt jetzt aus hf-core direkt vor dem Formular.
   v1.98: Bewertungskarte gegen Live-Markup — WCML-Flagge raus, WCML-Wrapper div[lang]
   (Text + Screenshot) und Germanized-Status „Verifizierter Kauf" einsortiert ·
   woocommerce.css-Regeln mit #reviews #comments (2 IDs: Rand, 50px Einzug, p-Margins,
   Meta .75em) überschrieben.
   v1.97: Produktseite gegen Live-Screenshot 07.10. — Galerie-Thumbs als einzeilige
   Scroll-Leiste (woocommerce.css setzte 25 %-Raster und Deckkraft .5 mit 0,4,3) ·
   Bewertungszeile: Sterne Vermillion, kein Woo-Abstand · Mengenfeld fest 76 × 52,
   Screenreader-Label sicher versteckt · .hf-h1-product (Produktnamen sind lang:
   max. 2.6rem statt 3.2rem, balance).
   v1.96: Block 19 gegen das Live-Markup (Single-Product-Template, 07.10.):
   woocommerce.css bringt .woocommerce div.product p.price (0,3,2: Olive, 1.25em,
   del .5) und form.cart-Margins/-Floats — Preis (Produktseite, Karte, Variante)
   und Kaufzeile auf (0,4,x) gebumpt · einfache Produkte: Menge + Button in einer
   Zeile (Elementor rendert dort keinen Holder) · WCML-Link „Nur Bewertungen in
   Deutsch anzeigen" aus · .hf-safety (Produktsicherheit, hf-core 1.16.1).
   v1.95: Rezensionen × hf-core-Bewertungen (Block 19/23 zusammen): Woo gibt in
   .comment-text Sterne → p.meta → p.hf-review-src → .description → Screenshot aus.
   Neu sortiert: Sterne · Text · Screenshot · Name/Siegel · Herkunft. Hinweis § 5b
   (hängt hinter dem Formular) rückt zwischen Liste und Formular · Varianten-Label
   (th.label) linksbündig — Browser zentriert th · Kaufbutton „disabled" (variable
   Produkte vor der Auswahl) wieder blass: das all:unset der Basisregel schlug ihn.
   v1.94: Block 19 Angebote (hf-core 1.16.0) — .hf-sale-badge (Galerie + Loop-Item,
   Vermillion-Pille, ohne Versalien wegen „bis −20 %"), .hf-pcard__badge
   (Shortcode-Widget [hf_sale_badge] oben links auf dem Kartenbild), .hf-price-low
   (30-Tage-Tiefstpreis unter dem Preis, Legal-Skala .875, eigene Zeile) ·
   FIX Block 3: v1.70 hatte den .hf-star-Kommentar mitten in den Selektor
   „.hf-bg-emerald .hf-eyebrow" gesetzt → Stern nur auf Emerald Vermillion,
   Eyebrow auf Emerald fiel auf Emerald zurück (Block 6 gewann). Beides repariert.
   v1.93: Produkt-Box — Bild und Text oben bündig (war vertikal mittig, Querformat-Bilder
   schwebten), Bild im Quadrat oben statt mittig.
   v1.92: Zitat-Linie von Ober- bis Unterlänge (v1.91 schnitt an der Grundlinie ab).
   v1.91: Zitat-Linie bündig mit dem Text (text-box trim, Fallback halber Zeilenabstand).
   v1.90: Standard-Zitat leiser (Bricolage 500, max. 18 px, Zeilenhöhe 1.55, Linie 2 px).
   v1.89: Standard-Zitat im Beitrag/Rechtstext (.hf-post blockquote): Emerald-Linie, Display-Schrift.
   v1.88: .hf-review-img (Screenshot-Vorschau unter der Bewertung, hf-core 1.12.0).
   v1.87: Block 23 Bewertungen (hf-core 1.10.0): .hf-review-src (Herkunft + Link
   unter der Bewertung), .hf-review-notice (§ 5b UWG), Woo-Label „Verifizierter Kauf".
   v1.86: .hf-revoke hängt links raus — Schrift fluchtet mit den Footer-Links.
   v1.85: .hf-revoke im Heading-Widget: Schriftgröße gegen Elementors inherit-Regel (0,4,1).
   v1.84: .hf-revoke Schrift wie Footer-Links (DM Sans 1rem/400), Rand bleibt dezent.
   v1.83: .hf-site-logo optisch linksbündig (--hf-logo-shift, relativ zur Höhe;
   Header -6 %, Footer -10 %), Höhen als --hf-logo-h.
   v1.82: .hf-site-logo — SVG linksbündig im Bildrahmen (object-position), Link ohne Zeilenhöhe.
   v1.81: .hf-revoke leiser: .875rem/500, 1px-Rand, Creme 85 % — Größe der Rechtslinks.
   v1.80: .hf-revoke aus der Fließtext-Link-Regel (v1.59/1.73) ausgenommen —
   Unterstrich weg, Hover-Text war Creme auf Creme.
   v1.79: .hf-site-logo (Logo-Widget: Höhe aus dem System, Header 40/56, Footer
   .hf-site-logo--footer 96/120) · .hf-revoke (Widerrufsbutton: Kontur-Pille,
   deutlich sichtbar, aber kein Primär-CTA; hell und dunkel).
   v1.78: .hf-ccard mit Meta-Zeile: Meta + Txtlink docken gemeinsam unten an.
   v1.77: .hf-meta im .hf-center-Stack zentriert.
   v1.76: Block 21 Produkt-Box [hf_product] im Beitrag (hf-core 1.8.0).
   v1.75: Inhaltsverzeichnis (Rank Math) wieder Ink ohne Unterstrich, Emerald +
   Linie erst bei Hover (v1.60-Link-Regel hatte übernommen).
   v1.74: Beitrag — Gutenberg-Buttons im System-Look (core/button war WP-Schwarz) ·
   Deko-Bild (Block-Stil „hf-deco" / Klasse .hf-deco: zentriert, klein, weißer
   Bildgrund per multiply weg, enger Anschluss an die folgende H2) ·
   Block 20 Lead-Formular [hf_lead] (Mini-Karte, hf-core 1.7.0).
   v1.73: Fließtext-Links auf Emerald/Ink: Pillen und Txtlinks ausgenommen
   (Button-Unterstreichung) · .hf-lede--wide (72ch für Sektionsköpfe mit langer H2).
   v1.72: .e-con.hf-grid-2/-3-Kopplung (Regel 15) — Container bleibt Flex,
   Grid kommt aus der Klasse; Elementor-Grid-Setting (e-grid) nicht nötig.
   v1.71: pcard im Loop — Body wächst (gegen .e-con.e-child flex-grow:0),
   Preis + Txtlink docken unten an (auch ohne Preis).
   v1.70: .hf-star (Stern in Vermillion, Trust-Zeile) · Txtlink im pcard-Body
   auf Inhaltsbreite (Systemregel statt Widget-Width-Setting).
   v1.69: Block 19 „Shop" (WooCommerce) — .hf-gallery (Product-Images-
   Widget, Sale-Flash im Badge-Look), .hf-rating (Sterne Vermillion, Link
   1rem), .hf-price (Preis Display + Germanized-Hinweise als Legal),
   .hf-buy (Add-to-Cart: Varianten-Select, Menge, Kit-Button-Reset →
   Primär-Button), .hf-reviews (Rezensionen im qcard-Look, Formular),
   .hf-pcard__price (Preiszeile im Loop-Item), .hf-faq-sec:has(--none)
   blendet die FAQ-Sektion aus, wenn [hf_faq cat="auto"] leer ist ·
   .hf-split--media-first (Bild vor Copy auf Mobile, Block 5).
   v1.68: .hf-post h4/h5 (Datenschutz-Hierarchie).
   v1.67: .hf-legal-page — Hyphenate für H1/H2, H1 auf Mobile eine Stufe kleiner.
   v1.66: hf-copy ohne Widgets (Kit-Margins raus) · .hf-read auch als div,
   Artikel darin nicht doppelt zentriert (Rechtliches-Template).
   v1.65: .hf-wrap (Boxed-Wrapper für PHP-Templates).
   v1.64: hf-cover--plain (Freisteller ohne Rahmen) · hf-cover--1x1/4x3/3x4/3x2.
   v1.63: hf-center-Kontext: Häkchen-Liste als zentrierter Block linksbündig,
   CTA-Zeile zentriert (Danke-Seite).
   v1.62: Freebie: Badge→H2 +8, Legal-Abstand 24.
   v1.61: Badge/Tag im Copy-Stack width:auto.
   v1.60: Fließtext-Links hell (FAQ, Editor, Beitrag) unterstrichen.
   v1.59: Fließtext-Links auf Emerald/Ink erben Farbe + Unterstrich.
   v1.58: qcard-Quelle margin-top:auto.
   v1.57: Loop-Grid-Gaps 24 statt Elementor-30; gemountet 0.
   v1.56: Bleed für .hf-track--js auf ≤1024 (Container + Loop).
   v1.55: bcard-Kategorie wieder Emerald (Elementor-Span) · related-Meta
   Row-Gap 4 · Loop --related als Spur auf ≤1024 (Startseite Blog).
   v1.54: Block 9.1 Folgen-Zeilen auf Ink (.hf-ep-list/--fade, .hf-ep-row)
   für die Startseite; .hf-bg-ink .hf-txtlink Creme.
   v1.53: .hf-ccard--tag-over (Tag über Bild, am Container) · Bild-Abstand
   in der ccard mit (0,3,0).
   v1.52: .hf-ccard Elementor-Kopplung (Tag im Fluss, Bild optional).
   v1.51: .hf-pcard weiß + Elementor-Kopplung (Container-Link, __body,
   Bild-Radius, Heading-p-Zeilenhöhe).
   v1.50: Chip-Hover nur mit Link (a.hf-chip / .hf-chip:has(a)).
   v1.49: .e-con.hf-trust-row-Kopplung + Widget-Reset (Startseite Trust #1).
   v1.48: .hf-h1-sm (lange H1) · .hf-sec-foot (Schlusszeile unter Grid).
   v1.47: .hf-list-check auf Emerald · .hf-statement mit Abstand, wenn
   nicht erstes Kind · cite-Abstand wie __src.
   v1.46: Blob-Clip wieder nur horizontal (v1.43 revertiert).
   v1.45: Blob-Struktur festgelegt: Sektion Full Width → HTML-Blob →
   Container Boxed (kein e-con-inner-Eingriff).
   v1.44: Blob-Widget display:contents — Blob hängt an der Sektion,
   Boxed bleibt; Clip-Regel ohne Kind-Kombinator.
   v1.43: Blob-Sektionen clippen beide Achsen (kein Überhang mehr).
   v1.42: .e-con.hf-cta-row-Kopplung + Widget-Reset (Kurse S2, Button
   sprang nach rechts).
   v1.41: Text-Editor-p im Copy-Stack ohne Kit-Margins; Heading-p
   line-height 1.6 (Kurse S6).
   v1.40: .hf-qcard als Elementor-Struktur — Heading-Kopplung für
   .hf-stars und .hf-qcard__cite, Widget-Margin-Reset (Kurse S5) ·
   .hf-blob--tr auf ≤767 in die Ecke geschoben (Sektionskopf frei).
   v1.39: Bereinigung Block 9 — qcard/Chips/ecard standen doppelt
   (zweiter Block war der Stand vor v1.26, Span-Nummer statt Counter);
   Duplikat entfernt, jede Komponente einmal · .e-con.hf-chips-Kopplung
   + Widget-Reset für Chips-Zeilen (Podcast, Über mich).
   v1.38: text-wrap:pretty als Default für p/li · .hf-split auf (0,2,0) via .e-con — Elementor setzt flex-
   direction über .e-con.e-flex, der Split verlor je nach Container-
   Einstellung. Presse-Karten-Feinschliff (Link 1rem, Zitat 600).
   v1.37: Block 18 „Über mich" — .hf-list-check (Häkchen-Liste im
   Text-Editor-Widget), .hf-qcard--press (Presse-Zitat mit Quelle),
   .hf-statement (großes Zitat auf Emerald)
   v1.36: Beitrag — H1 auf 28–40px (war H2-Skala bis 46px, drei Zeilen
   bei 720) · .hf-post-img (Beitragsbild vor dem Inhalt, 16:9) ·
   H2 im Text 80 statt 64 oben
   v1.35: Beitrag Live-Fixes — Lesebreite als Token --hf-read (720),
   Klasse .hf-read am Container ums Post-Content-Widget (Widget selbst
   hat Elementors max-width:100%; Optimized Markup ohne inneren
   Container abgedeckt) · H2/H3 im Beitrag mit eigener
   Zeilenhöhe (Kit 1.06 zu eng) · Kopf/Autorin-Box zentriert
   v1.34: Block 17 „Beitrags-Template" — .hf-post-head (H1 in H2-Größe),
   .hf-meta (Meta-Zeile außerhalb von Karten, gleiche Härtung wie
   .hf-bcard__meta), .hf-author (Autorin-Box), .hf-loop--related
   (Archiv-Loop-Item 3-spaltig ohne --wide-Effekte)
   v1.33: Hero-Feinschliff — .hf-split--copy-wide (1.5:1 ab Desktop) ·
   .hf-lede mit fester Zeilenhöhe 1.6 (inkl. Heading-Title) · 12px
   extra nach H1/H2 im Copy-Stack (Underline-Ausgleich) ·
   .hf-chip:hover auf der Klasse statt auf a
   v1.32: Blog-Archiv Live-Fixes — Elementor Taxonomy-Filter im Chip-
   Look (.hf-chips--filter, „Alle" vorn, aria-pressed = aktiv) ·
   .hf-bcard__meta: Widgets in einer Zeile mit gleicher Höhe (Shortcode-
   Widget war 100 % breit, Heading-Spans line-height 1) · Auszug-Clamp
   und Zeilenhöhe sitzen jetzt am inneren <p>, nicht am Wrapper ·
   .hf-cover--round (Porträt im Blog-Hero) · Filter-Hover über Widget-
   Custom-Properties
   v1.31: Block 16 „Beitragsinhalt" — .hf-post (Lese-Typo für Gutenberg-
   Inhalt) · Block-Stile aus hf-core: is-style-hf-check (Häkchen-Liste),
   is-style-hf-faq (Details-Akkordeon), is-style-hf-pull (Zitat-Karte)
   · Rank-Math-TOC-Block gestylt (nummeriert, Karte) · Core-Akkordeon
   (WP 6.9) im FAQ-Look, Kit-Button-Reset am Toggle. Kein Gutenberg-
   Plugin nötig.
   v1.30: aktiver Kategorie-Chip im Archiv-Template über body.category-
   <slug> × .hf-chip--cat-<slug> — Elementor kann --active nicht
   dynamisch setzen. Slugs: elternschaft-entwickeln, eltern-staerken,
   kinder-verstehen, kinder-staerken, eltern-kind-beziehung.
   v1.29: Blog-Archiv — Block 15: .hf-loop (Elementor Loop Grid) mit
   Pagination im Chip-Look · .hf-bcard als Loop-Item-Container (Meta-
   Row, Body wächst, Txtlink dockt an — gleiche Härtung wie .hf-ecard)
   · Meta: Kategorie · Datum · Lesezeit (Trenner „·") · .hf-chip-Basis
   trägt Rand/Link-Reset/Hover (vorher nur --icon), .hf-chip--active
   v1.28: Karten-H3 (pcard/ccard/bcard/ecard) fest auf 700 — Kit-H3
   ist 800 für freistehende Zwischentitel, in Karten bei ~17px zu
   schwer · Font-Smoothing (antialiased / grayscale) auf body — lag nur
   in der Referenz-Demo-Ebene; macOS rendert Bricolage/DM Sans sonst
   subpixel-fett. Kein Effekt auf Windows/Android.
   v1.27: Folgen-Karte — Body wächst wieder (.e-con.e-child flex-grow:0
   schlug flex:1), Txtlink dockt unten an · h3 text-wrap:balance ·
   Meta-Trenner „·" zwischen Datum und Dauer · Meta auf Eyebrow-Skala (.78rem)
   v1.26: Folgen-Karte — Nummer aus CSS-Counter (kein Span mehr,
   Track zählt die Karten automatisch) · .hf-ecard__cover funktioniert
   direkt am Image-Widget · .hf-ecard__meta als Elementor-Container
   in Row (Default war Column)
   v1.25: Stretched Link für Heading-Widget-Pillen — .hf-btn und
   .hf-chip am Wrapper, <a> nur um den Text: das <a> bekommt ein
   Pseudo, das die ganze Pille klickbar macht (Tap-Ziel, BFSG).
   Button-Widget für Chips ungeeignet (Kit-Styles auf .elementor-button).
   v1.24: .hf-cover — Hero-/Produktbild als Objekt (Radius L, Schatten,
   füllt die Split-Spalte). Lag bisher nur in der Referenz-Demo-Ebene.
   v1.23: Sektions-Abstand steuerbar — .hf-pt-0/-slim/-sm und
   .hf-pb-0/-slim/-sm auf der pad-y-Skala. Regel: gleicher Grund →
   untere Sektion hf-pt-0 (ein pad-y dazwischen), Farbwechsel → beide
   voll · .hf-legal läuft natürlich, .hf-legal--narrow = 52ch
   v1.22: .hf-freebie-grid ENTFERNT — Freebie-Spalten laufen über
   Elementor-Container (Entscheid 03.09.), Mobile-Stack + Gap in den
   Responsive-Settings · Legal außerhalb des Grids: .hf-card-xl > .hf-legal
   bekommt 32 oben (Systemregel statt Widget-Margin) ·
   .hf-legal greift auch auf den Absatz im Heading-Widget
   (52ch schlug gegen .hf-copy p 58ch fehl) · line-height 1.5 fest,
   kein .hf-lh-* mehr nötig · keine Widget-Margins am Legal-Text
   v1.21: FAQ — Desktop-Größen per clamp (Frage 1→1.25rem, Antwort
   1→1.0625rem = 17px ab Tablet, Zeile 20px), Caret (--hf-svg-chevron) statt +/− mit
   180°-Drehung bei [open] · exklusives Öffnen: Shortcode setzt
   name="hf-faq-N" (nativ), JS-Modul animiert das Schließen des
   Geschwisters. Footer-Akkordeon behält +/− (Navigations-Chrome).
   v1.20: Hausregel Lesbarkeit (BFSG) — Lesetext nie unter 1rem:
   FAQ-Antwort, Karten-Absätze (pcard/ccard/ecard/bcard-excerpt),
   Footer-Links, Form-Input, Karten-Txtlinks, Chips, Desktop-Nav auf 1rem · .hf-legal .76→.875 (Rechtstext
   ist Lesetext) · Labels (Eyebrow, Meta, Badge, Tag) bleiben klein
   v1.19: FAQ-Feinschliff nach Live-Sicht — Antwort blendet beim
   Öffnen ein (JS-Modul in hf-frontend.js animiert die Höhe) · .hf-faq margin-top (32)
   zurück (war beim Block-14-Umbau rausgefallen) · Antwort-Absätze
   ohne Kit-/Browser-Margins, Abstand nur aus p + p · Antwort-Breite
   70ch · Zeilenhöhe 1.55 · Frage-Zeile 16px statt 18px
   v1.18: Kit-Kollisionen — .hf-h-sm wirkt jetzt auch auf den
   .elementor-heading-title darunter (saß nur am Wrapper) ·
   .hf-faq__q h3 auf (0,2,1) gebumpt · ENQUEUE-FIX nötig: hf-system
   muss NACH dem Site-Kit-Stylesheet laden (Handle elementor-post-
   {kit_id}), sonst gewinnt post-{kit}.css jeden (0,1,1)-Gleichstand
   — betrifft alle „.hf-xcard h3"-Regeln. Siehe Ladereihenfolge unten.
   v1.17: Podcast-Bausteine + FAQ-Umzug — .hf-chip--icon (Chip mit
   Icon-Maske, Icon pro Plattform über --hf-chip-icon am Modifier,
   Default Play-Glyphe) · .hf-ecard (Folgen-Karte, typografisches
   Cover mit Farb-Rotation Emerald/Coral/Creme via :nth-child,
   Geometrie = .hf-bcard) · Block 14 rendert jetzt das Shortcode-
   Markup aus hf-core.php ([hf_faq] → details.hf-faq__item), das
   Nested-Accordion-Mapping ist raus ·  .hf-ecard__cover mit Bild (Nummer wird Badge via :has) ·
   --hf-chip-icon-color-Hook (Marken-Icons in Ink, Guideline) ·
   .hf-btn white-space:nowrap (Freebie-Form-Button brach ≥768 um) · .hf-legal a erbt Farbe · .hf-center/.hf-sec-head (Sektionskopf) ·
   [id]{scroll-margin-top} für Anker unter dem Sticky-Header
   v1.16: Housekeeping vor dem Unterseiten-Build — keine neuen
   Regeln, keine Frontend-Änderung. Ungeführter Vorspann (html/
   body-Basis, Hand-Circle-Stapelung, text-wrap-Utilities, Bleed-
   Override) in die Blöcke einsortiert · Anschnitt-Bleed ≤1024 aus
   v1.7 ZURÜCKGENOMMEN (galt seit 22.07. nur noch per !important-
   Override, jetzt als Regel: Karussell endet am Gutter; Grund
   nachtragen) · neues Token --hf-creme-line für die Footer-
   Trennlinien (vorher 2× hart) · doppeltes --hf-h1 entfernt
   (der zuletzt gültige Wert bleibt) · Block 1.1 „Basis" neu
   v1.15: Mobile-Atmung — pad-y-Floors 58→64 / 46→52, Split-Stack
   32→40, CTA-Row-Abstand 12→16, s-48 neu in der Skala · Hand-Circle
   nur noch auf hellem Grund (Vermillion), auf Emerald/Ink rendert
   die Klasse automatisch die Underline (Lesbarkeits-Fix, kein
   Widget-Edit nötig) · Underline auf Emerald in Chartreuse ·
   Header-CTA ≤767 kompakt (im Widget „Hide on Mobile" lösen) ·
   .hf-cta-alt: Sekundärlink Langform gestapelt / Kurzform inline
   ab 1025 · Blob-X-Clip als :has-Systemregel (Container-Custom-CSS
   dafür wieder entfernen)
   v1.14: Slides height:auto — gleiche Kartenhöhen im Karussell
   (Stretch auf die höchste Karte, txtlink bleibt unten gepinnt)
   v1.13: Karussell-Geometrie (Anschnitt-Bleed + Dot-Padding) in den
   .swiper-Bump — Vendor-CSS lädt zur Laufzeit nach uns und hatte
   beides überschrieben (margin auto auf .swiper)
   v1.12: Footer-Akkordeons nur noch ≤767 mit Creme-Trennlinien
   und Tap-Padding; Tablet: Brand volle Zeile, drei Menüs
   nebeneinander (first-child-Span, keine Widget-Settings nötig)
   v1.11: Footer-Spalten als Mobile-Akkordeons (.hf-fcol/__head/__list)
   — zu als Default, No-JS offen, Desktop statisch, +/− aus CSS
   v1.10: Txtlinks in Karten (pcard/ccard/bcard) ohne Underline —
   Pfeil trägt die Affordance; Standalone behält die Linie
   v1.9: Blog-Variante — .hf-bcard--wide (2-spaltig Desktop, 16:9,
   größerer Titel) + Grundregeln .hf-bcard__media / __excerpt
   v1.8: Slide-Härtung Setup A — Elementors Container-Flex-Kaskade
   quetschte die Slides trotz Swiper-Inline-Breite (flex-shrink);
   neutralisiert via .swiper-wrapper/.swiper-slide-Bump
   v1.7: Karussell-Feinschliff — Slides breiter (1.18/2.15, Fallback
   84 %/45 % deckungsgleich), klickbare Dots im System-Look inkl.
   Dunkelgrund-Variante, rechter Anschnitt-Bleed ≤ 1024
   v1.6: Track-Fallback präzisiert (Plain-Container vs. Loop-Widget)
   + .e-con-Härtung für den Grid-Fallback
   v1.5: .hf-wordmark pensioniert — Original-Schriftzug (®) führt.
   Neu: .hf-logo (+--lg) mit Auto-Invert auf Emerald/Ink & im Panel
   v1.4: SVG-Dekor komplett nach CSS verlagert (mask + Token /
   currentColor) — keine Inline-SVGs mehr in Widgets, Ein-Klassen-
   API für Underline/Circle/Arrow, IG-Icon & Play via CSS
   v1.3: + Typo-Utilities .hf-lh-* (100/106/120/140/165) und
   .hf-fw-* (400–800) — Skala-Werte, kit-fest via :is()-Spezifität
   v1.2: FAQ-Breite aus dem CSS entfernt (steuert der Elementor-
   Container) · Mockup-Referenz-Block FAQ bereinigt (lag im Live-DOM
   auf demselben Wrapper → Doppel-Border-Fix) · Selektoren gegen
   reales Widget-DOM bestätigt
   v1.1: + Header/Nav (Theme-Builder-Template) · + FAQ-Mapping auf
   Elementor Nested Accordion (Selektoren gegen Repo verifiziert) ·
   Reveal an .hf-js gekoppelt (kein No-JS-Blackout)
   ------------------------------------------------------------
   Struktur- und Kontext-Klassen für den Elementor-Build.
   Quelle: happyfam-startseite-design-v02.html (v02.1)
   Creative Direction „Klar & Warm, mit Haltung" · Palette-Lock 19.06.2026

   Ladereihenfolge: NACH elementor-frontend UND nach dem Site-Kit
   enqueuen — deps ['elementor-frontend','elementor-post-'.kit_id],
   kit_id aus get_option('elementor_active_kit') (siehe Klassenblatt).
   Lesbarkeit (v1.20): Lesetext ≥ 1rem, Rechtstext ≥ .875rem, nur
   Labels/Meta darunter (Eyebrow .78, Meta .72, Badge .7, Tag .68).
   Konventionen: Skelett-Felder im Elementor-UI bleiben leer ·
   kein Widget-Custom-CSS · Global Fonts ohne Farbe · Gaps nur aus
   der Space-Skala · SVG-Dekor nur aus CSS · Elementor-Kopplung nur
   wo kommentiert · kein !important (Spezifität über Bumps) ·
   NICHTS vor diesem Header — jede Regel gehört in einen Block
   und in den Changelog.

   Media-Query-Kanten (mobile-first, deckungsgleich mit Elementor-Defaults):
   Basis = Mobile · min-width 768px = Tablet+ · min-width 1025px = Desktop
   ============================================================ */

/* ============ 1 · Tokens ============ */
:root{
    /* Farben — Duplikat der Site-Kit Global Colors (akzeptiert, Palette gelockt) */
    --hf-creme:#FDF9F3;
    --hf-emerald:#056146;
    --hf-vermillion:#E17238;
    --hf-chartreuse:#C6D819;
    --hf-coral:#FAB2AA;
    --hf-ink:#0C1F18;
    --hf-white:#FFFFFF;

    /* Abgeleitete Töne (AA-geprüft, siehe v02.1-Messwerte) */
    --hf-ink-muted:rgba(12,31,24,.72);      /* einziger Muted-Ton auf hellen Gründen */
    --hf-line:rgba(12,31,24,.12);           /* Trennlinie auf hellen Gründen */
    --hf-creme-line:rgba(253,249,243,.18);  /* v1.16: Trennlinie auf Emerald/Ink (Footer) */
    --hf-creme-85:rgba(253,249,243,.88);    /* Fließtext auf Emerald */
    --hf-creme-60:rgba(253,249,243,.62);    /* Fließtext auf Ink */

    /* Typografie — Familien-Duplikat des Site Kits */
    --hf-font-display:'Bricolage Grotesque',sans-serif;
    --hf-font-body:'DM Sans',system-ui,sans-serif;

    /* Heading-Skala als Referenz (führend gepflegt im Site Kit, Custom Unit) */
    --hf-h1:clamp(2.8rem,8.5vw,4rem);
    --hf-h2:clamp(1.9rem,6vw,2.9rem);
    --hf-h2-sm:clamp(1.6rem,5vw,2.3rem);
    --hf-h1-sm:clamp(2.2rem,6.5vw,3.2rem); /* v1.48: lange H1 (3 Zeilen) */
    --hf-h3:clamp(1.15rem,3.5vw,1.35rem);

    /* Radius & Schatten */
    --hf-r-s:10px;
    --hf-r-m:16px;
    --hf-r-l:26px;
    --hf-shadow:0 12px 32px rgba(12,31,24,.09);
    --hf-shadow-soft:0 6px 18px rgba(12,31,24,.07);

    /* Space-Skala — die einzigen erlaubten Gap-/Stack-Werte */
    --hf-s-12:12px;
    --hf-s-16:16px;
    --hf-s-24:24px;
    --hf-s-32:32px;
    --hf-s-40:40px;
    --hf-s-48:48px;
    --hf-s-64:64px;

    /* SVG-Shapes als mask-Quellen — Farbe kommt aus background (Token
       bzw. currentColor), dadurch bleiben alle Striche in der Token-
       Kette. Kein Inline-SVG in Widgets nötig (Konvention 6). */
    --hf-svg-underline:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 220 16' preserveAspectRatio='none'%3E%3Cpath d='M5 11C60 6.5 158 6 215 9.5' fill='none' stroke='%23000' stroke-width='7' stroke-linecap='round'/%3E%3C/svg%3E");
    --hf-svg-circle:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 90' preserveAspectRatio='none'%3E%3Cpath d='M18 48C14 18 200 6 226 34C244 58 90 92 34 76C12 69 14 58 22 52' fill='none' stroke='%23000' stroke-width='6' stroke-linecap='round'/%3E%3C/svg%3E");
    --hf-svg-arrow-hand:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 74 56'%3E%3Cpath d='M70 8C48 6 18 14 10 42M4 32L10 44L22 40' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --hf-svg-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h15m-6-6 6 6-6 6' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    --hf-svg-ig:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Crect x='3' y='3' width='18' height='18' rx='5' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='4' fill='none' stroke='%23000' stroke-width='2'/%3E%3Ccircle cx='17.2' cy='6.8' r='1.3'/%3E%3C/svg%3E");
    /* v1.21: Chevron (nach unten) — FAQ-Caret */
    --hf-svg-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5 9l7 7 7-7' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");

    /* Rahmen */
    --hf-wrap:1120px;                       /* = Site Kit Content Width */
    --hf-read:720px;                        /* v1.35: Lesebreite Beitrag (Kopf, Text, Autorin-Box) — ~80 Zeichen bei 17px */
    --hf-pad-x:clamp(22px,4vw,32px);        /* Gutter, liegt innen */
    --hf-pad-y:clamp(64px,10vw,104px);      /* v1.15: Mobile-Floor 58→64 */
    --hf-pad-y-sm:clamp(52px,8vw,80px);     /* v1.15: Mobile-Floor 46→52 */
    --hf-pad-y-slim:clamp(28px,5vw,44px);
}

/* ============ 1.1 · Basis (v1.16, aus dem Vorspann) ============
   rem-Anker fest auf 16px — die clamp()-Skalen oben rechnen darauf.
   overflow-x auf body ist der letzte Fangzaun gegen horizontales
   Scrollen (Blobs sind seit v1.15 per :has geclippt, Karussells
   enden seit v1.16 am Gutter — die Regel bleibt als Sicherung). */
html{font-size:16px}
body{overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} /* v1.28 */
/* v1.38: Witwen-Schutz sitewide — kein Einzelwort in der letzten Zeile.
   Headlines bleiben bei balance (hf-txtbalance). Progressive Enhancement. */
p,li,dd,figcaption{text-wrap:pretty}

/* ============ 2 · Sektionsrahmen ============ */
/* v1.65: Boxed-Wrapper für Theme-Templates (Rechtliches) und Referenz-HTML —
   Elementor-Boxed-Container bleibt der Normalfall, .hf-wrap ist das PHP-Äquivalent. */
.hf-wrap{max-width:var(--hf-wrap);margin-inline:auto;padding-inline:var(--hf-pad-x);box-sizing:content-box}
.hf-sec{
    position:relative;
    padding:var(--hf-pad-y) var(--hf-pad-x);
}
.hf-sec--sm{padding-block:var(--hf-pad-y-sm)}
.hf-sec--slim{padding-block:var(--hf-pad-y-slim)}
/* v1.23 · Seiten-Utilities (nach den Größen, damit sie gewinnen).
   Gleicher Grund oben/unten → untere Sektion hf-pt-0, sonst stapeln
   sich zwei pad-y. Farbwechsel → beide Sektionen voll. */
.hf-sec.hf-pt-0{padding-top:0}
.hf-sec.hf-pt-slim{padding-top:var(--hf-pad-y-slim)}
.hf-sec.hf-pt-sm{padding-top:var(--hf-pad-y-sm)}
.hf-sec.hf-pb-0{padding-bottom:0}
.hf-sec.hf-pb-slim{padding-bottom:var(--hf-pad-y-slim)}
.hf-sec.hf-pb-sm{padding-bottom:var(--hf-pad-y-sm)}
/* Inhalt über Deko-Ebene (Blobs) */
.hf-sec > *{position:relative;z-index:1}

/* ============ 3 · Hintergrund-Kontexte ============
   Ein Attribut bündelt: Fläche, Textfarben, Headings, Eyebrow,
   Platzhalter-Variante. Nutzbar auf Sektionen UND Karten.
   Creme = Default (Body-Hintergrund aus Site Kit), keine Klasse nötig. */
.hf-bg-white{background:var(--hf-white)}

.hf-bg-emerald{background:var(--hf-emerald);color:var(--hf-creme-85)}
.hf-bg-emerald :is(h1,h2,h3){color:var(--hf-white)}
.hf-bg-emerald .hf-eyebrow{color:var(--hf-creme-85)} /* v1.94: Selektor repariert (v1.70 hatte den Kommentar dazwischengesetzt) */
/* v1.70: einzelner Stern im Fließtext/Trust-Zeile: <span class="hf-star">★</span> */
.hf-star{color:var(--hf-vermillion)}
.hf-bg-emerald .hf-lede{color:var(--hf-creme-85)}

/* v1.73: Links in Pillen/Txtlinks ausgenommen (Heading-Widget-Muster v1.25, <a> ohne Klasse) */
.hf-bg-emerald :is(p,li,.elementor-heading-title,.elementor-widget-text-editor) a:not([class]):not(:is(.hf-btn,.hf-chip,.hf-txtlink,.hf-revoke) a),
.hf-bg-ink :is(p,li,.elementor-heading-title,.elementor-widget-text-editor) a:not([class]):not(:is(.hf-btn,.hf-chip,.hf-txtlink,.hf-revoke) a){color:inherit;text-decoration:underline;text-underline-offset:3px}
.hf-bg-emerald :is(p,li,.elementor-widget-text-editor) a:not([class]):hover,
.hf-bg-ink :is(p,li,.elementor-widget-text-editor) a:not([class]):hover{color:var(--hf-white)}

.hf-bg-ink{background:var(--hf-ink);color:var(--hf-creme-60)}
.hf-bg-ink :is(h1,h2,h3){color:var(--hf-white)}
.hf-bg-ink .hf-eyebrow{color:var(--hf-coral)}
.hf-bg-ink .hf-lede{color:var(--hf-creme-60)}

.hf-bg-coral{background:var(--hf-coral);color:var(--hf-ink)}
.hf-bg-coral .hf-eyebrow{color:var(--hf-ink)}
.hf-bg-coral .hf-lede{color:var(--hf-ink)}

/* Kontrastgrenzen auf Coral (v02.1: Vermillion vs Coral = 1,8:1) */
.hf-bg-coral .hf-btn--primary,
.hf-bg-coral .elementor-button{ /* Elementor-Kopplung, bewusst · v2.58: Ring Emerald statt Ink, passend zum Ghost-Button daneben */
    box-shadow:0 0 0 2px var(--hf-emerald),0 10px 22px rgba(12,31,24,.2);
}
.hf-bg-coral .hf-legal{color:rgba(12,31,24,.8)}

/* ============ 4 · Deko: Chartreuse-Blobs ============
   Systemregel im Code: Blobs rendern NUR auf Emerald. */
.hf-blob{
    display:none;
    position:absolute;z-index:0;
    background:var(--hf-chartreuse);
    border-radius:52% 48% 56% 44%/54% 46% 54% 46%;
    opacity:.9;pointer-events:none;
}
.hf-bg-emerald .hf-blob{display:block}
.hf-blob--tr{width:220px;height:190px;right:-70px;top:-60px}
.hf-blob--bl{width:180px;height:160px;left:-60px;bottom:-50px}
.hf-blob--sm-tr{width:150px;height:130px;right:-50px;top:30px}
/* v1.40: auf Mobile in die Ecke — zentrierte Sektionsköpfe auf Emerald
   (Kurse S4, Über mich Statement) liefen sonst ins Chartreuse. */
@media(max-width:767px){.hf-blob--tr{top:-120px;right:-100px}}
/* Blob-Überhang erzeugte X-Scroll: horizontal clippen, vertikal
   offen (Kanten-Überlapp Creme→Emerald bleibt). Systemregel statt
   Container-Custom-CSS (Konvention 2) — greift nur auf Sektionen,
   die tatsächlich einen Blob tragen. */
.hf-sec:has(.hf-blob){overflow-x:clip;overflow-y:visible} /* v1.46: vertikaler Überhang zurück (v1.43 revertiert) · ohne ">" — in Elementor liegt der Blob im Widget/Container */
/* v1.44/45: Blob im HTML-Widget (Elementor): Wrapper und Widget-Container
   aus dem Fluss (display:contents). Struktur: Sektion Full Width →
   HTML-Blob → Container Boxed — der Blob hängt am Full-Bleed-Rand. */
.hf-sec .elementor-widget:has(.hf-blob),
.hf-sec .elementor-widget:has(.hf-blob) > .elementor-widget-container{display:contents}

/* ============ 5 · Layout-Pattern ============ */
/* Split: DOM immer Copy → Media. --media-left dreht ab Tablet. */
/* v1.38: (0,2,0) via .e-con-Kopplung — Elementor setzt flex-direction über
   .e-con.e-flex (0,2,0), ein reines .hf-split verlor je nach Container-Setting */
.hf-split,
.e-con.hf-split{display:flex;flex-direction:column;gap:var(--hf-s-40)} /* v1.15: Mobile-Stack 32→40 */
.hf-split__copy,
.hf-split__media,
.e-con.hf-split__copy,
.e-con.hf-split__media{min-width:0;width:auto}
@media(min-width:768px){
    .hf-split,.e-con.hf-split{flex-direction:row;align-items:center;gap:var(--hf-s-40)}
    .hf-split--media-left,.e-con.hf-split--media-left{flex-direction:row-reverse}
    .hf-split__copy,.hf-split__media,
    .e-con.hf-split__copy,.e-con.hf-split__media{flex:1 1 0}
}
/* v1.69 · Media zuerst auf Mobile (Produktseite: Bild vor Titel/Preis),
   ab Tablet links — impliziert --media-left, nicht kombinieren. */
.hf-split--media-first,.e-con.hf-split--media-first{flex-direction:column-reverse}
@media(min-width:768px){.hf-split--media-first,.e-con.hf-split--media-first{flex-direction:row-reverse}}
@media(min-width:1025px){
    .hf-split,.e-con.hf-split{gap:var(--hf-s-64)}
    /* v1.33 · Copy breiter als Media (z. B. rundes Porträt rechts) */
    .hf-split--copy-wide > .hf-split__copy,.e-con.hf-split--copy-wide > .e-con.hf-split__copy{flex:1.5 1 0}
    .hf-split--copy-wide > .hf-split__media,.e-con.hf-split--copy-wide > .e-con.hf-split__media{flex:1 1 0}
}

/* Copy-Stack: Abstände kommen aus dem Stack, nicht aus den Elementen */
.hf-copy{display:flex;flex-direction:column;align-items:flex-start;gap:var(--hf-s-16)}
.hf-copy > :is(h1,h2,h3,h4,p,ul,ol){margin-block:0} /* v1.66: Kit-Margins raus, wenn hf-copy ohne Elementor-Widgets läuft (PHP-Templates) — Abstand kommt aus dem Gap */
.hf-copy p{max-width:58ch}
/* v1.41: Absätze im Copy-Stack — Kit-p-Margins raus, Abstand kommt aus
   dem Stack-Gap (Text-Editor) bzw. Heading-p ohne Elementor-line-height:1. */
.hf-copy .elementor-widget-text-editor p{margin:0}
.hf-copy .elementor-widget-text-editor p + p{margin-top:var(--hf-s-12)}
.hf-copy p.elementor-heading-title{line-height:1.6;margin:0}
.hf-copy > .elementor-widget:is(.hf-badge,.hf-tag){width:auto;max-width:none} /* v1.61: Pillen im Copy-Stack ohne Width-Setting */
.hf-copy > .hf-badge,
.hf-copy > .elementor-widget.hf-badge{margin-bottom:8px} /* v1.62: Badge → H2: 16 + 8 */
/* v1.17: Sektionskopf zentriert (Folgen, Zitate) + Abstand zum Inhalt darunter */
.hf-center{text-align:center;align-items:center;margin-inline:auto}
.hf-center p{margin-inline:auto}
.hf-sec-head{margin-bottom:var(--hf-s-40)}
.hf-sec-foot{margin-top:var(--hf-s-40)} /* v1.48: Schlusszeile unter einem Grid (Beratung S4) — Gegenstück zu hf-sec-head */
/* v1.17: Anker landen unter dem Sticky-Header, nicht dahinter */
[id]{scroll-margin-top:84px}
.hf-copy .hf-cta-row{margin-top:var(--hf-s-16)} /* v1.15: 12→16 (Lede→CTA gesamt 32) */
/* v1.33 · nach einer H1/H2 MIT Hand-Underline/Circle 12px extra — der Strich
   hängt unter die Grundlinie und frisst optisch vom Gap. Ohne Hand-Element
   bleibt das normale Gap. Elementor: Wrapper enthält das h. */
.hf-copy > :is(h1,h2):has(.hf-hand-underline,.hf-hand-circle) + *,
.hf-copy > :has(> :is(h1,h2) .hf-hand-underline, > :is(h1,h2) .hf-hand-circle) + *{margin-top:var(--hf-s-12)}
.hf-cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hf-s-24)}
/* v1.42: CTA-Zeile als Elementor-Container — (0,2,0) gegen Container-
   Settings (Direction/Justify), Widget-Reset wie bei .hf-chips. */
.e-con.hf-cta-row{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:var(--hf-s-24);padding:0}
.hf-cta-row > .elementor-widget{width:auto;max-width:none;margin:0}
.hf-center .hf-cta-row,
.hf-center .e-con.hf-cta-row{justify-content:center} /* v1.63: CTA-Zeile im zentrierten Stack (Danke-Seite) */

/* Track: Karussell-Fallback (Scroll-Snap) → ab Desktop Grid.
   Gilt für PLAIN-Container mit Karten als direkten Kindern.
   Loop-Widgets (eigenes Markup) bedient ausschließlich hf-swiper.js —
   deren No-JS-Fallback sind die Widget-Spalten (Mobile = 1, gestapelt).
   ≤1024 übernimmt das Swiper-Snippet (setzt .hf-track--js). */
/* Elementor-Härtung (Konvention 5): Grid gewinnt auch als .e-con */
.e-con.hf-track{display:grid}
.hf-track{
    display:grid;grid-auto-flow:column;grid-auto-columns:84%;
    gap:var(--hf-s-16);
    overflow-x:auto;scroll-snap-type:x mandatory;
    padding-block:6px 14px;
    scrollbar-width:none;
}
.hf-track::-webkit-scrollbar{display:none}
.hf-track > *{scroll-snap-align:start}
@media(min-width:768px){
    .hf-track{grid-auto-columns:45%}
}
@media(min-width:1025px){
    .hf-track{
        grid-auto-flow:row;grid-template-columns:repeat(3,1fr);
        overflow:visible;gap:var(--hf-s-24);
    }
}
/* Mounted-Zustand: Dots im System-Look. Das Karussell endet am
   Gutter (v1.16 — der rechte Anschnitt-Bleed aus v1.7 ist
   zurückgenommen; wer ihn zurückholt, setzt hier wieder
   margin-inline-end:calc(-1 * var(--hf-pad-x)) für ≤1024). */
.hf-track--js{
    display:block;scroll-snap-type:none;
    --swiper-pagination-color:var(--hf-emerald);
    --swiper-pagination-bullet-inactive-color:var(--hf-ink);
    --swiper-pagination-bullet-inactive-opacity:.22;
    --swiper-pagination-bullet-size:8px;
    --swiper-pagination-bullet-horizontal-gap:5px;
}
/* Mounted-Geometrie mit .swiper-Bump: swiper-bundle.css wird zur
   Laufzeit NACH hf-system geladen und setzt u. a. margin auto auf
   .swiper — (0,2,0) gewinnt reihenfolge-unabhängig (Konvention 5).
   margin-inline-end:0 explizit, damit Vendor-margin auto nicht
   greift. */
.hf-track--js.swiper{padding-bottom:34px;margin-inline-end:0} /* Raum für die Dots */
.hf-track--js .swiper-pagination{bottom:0}
.hf-bg-emerald .hf-track--js,
.hf-bg-ink .hf-track--js{
    --swiper-pagination-color:var(--hf-creme);
    --swiper-pagination-bullet-inactive-color:var(--hf-creme);
    --swiper-pagination-bullet-inactive-opacity:.35;
}
/* Elementor-Container als Slides (Setup A): Elementors Flex-Kaskade
   auf .e-con.e-child (0,2,0) schlägt swiper-bundle.css (.swiper-slide,
   0,1,0) — die Slides shrinken trotz Swipers Inline-Breite zusammen.
   Härtung über JS-garantierte Klassen, kein !important (Konvention 5). */
.hf-track--js.swiper > .swiper-wrapper{display:flex}
.hf-track--js.swiper > .swiper-wrapper > .swiper-slide{
    flex:0 0 auto;max-width:none;min-width:0;
    height:auto; /* Swipers 100 % raus → Flex-Stretch zieht alle Slides auf die höchste Karte */
}

/* Grids */
.hf-grid-2,
.e-con.hf-grid-2{display:grid;grid-template-columns:1fr;gap:var(--hf-s-16);padding:0}          /* 2-spaltig ab Tablet (Kurse) */
@media(min-width:768px){
    .hf-grid-2,.e-con.hf-grid-2{grid-template-columns:1fr 1fr;gap:var(--hf-s-24)}
}
.hf-grid-3,
.e-con.hf-grid-3{display:grid;grid-template-columns:1fr;gap:var(--hf-s-16);padding:0}          /* 3-spaltig erst ab Desktop (Zitate) */
@media(min-width:1025px){
    .hf-grid-3,.e-con.hf-grid-3{grid-template-columns:repeat(3,1fr);gap:var(--hf-s-24)}
}
/* v1.72: (0,2,0) via .e-con — schlägt .e-con.e-flex (display) und .e-con.e-grid
   (grid-template-columns aus dem Setting). Kinder-Container: Breite aus der Zelle. */
.e-con.hf-grid-2 > .e-con,
.e-con.hf-grid-3 > .e-con{width:auto;min-width:0}
.hf-grid-2 > .elementor-widget,
.hf-grid-3 > .elementor-widget{width:auto;max-width:none;margin:0}

/* Trust-Leiste (Sektion 2) */
.hf-trust-row{
    display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
    gap:var(--hf-s-24) var(--hf-s-32);text-align:center;
}
/* v1.49: Elementor-Kopplung (0,2,0) + Widget-Reset — Badges als HTML-Widget,
   Text als Heading-Widget; keine Width-Settings mehr nötig. */
.e-con.hf-trust-row{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--hf-s-24) var(--hf-s-32);text-align:center;padding:0}
.hf-trust-row > .elementor-widget{width:auto;max-width:none;margin:0}
.hf-trust-row p,
.hf-trust-row .elementor-heading-title{display:block;font-weight:600;max-width:34ch;line-height:1.45;margin:0} /* display:block — Heading-Tag span ist inline, sonst greift max-width nicht */
@media(min-width:768px){.hf-trust-row p,.hf-trust-row .elementor-heading-title{text-align:left}}

/* Footer-Raster (Sektion 14) */
.hf-footer{padding:var(--hf-pad-y-sm) var(--hf-pad-x) 0}
.hf-footer__top{display:grid;gap:var(--hf-s-32);padding-bottom:var(--hf-s-40)}
@media(min-width:768px) and (max-width:1024px){
    .hf-footer__top{grid-template-columns:repeat(3,1fr)}
    .hf-footer__top > :first-child{grid-column:1/-1} /* Brand volle Zeile, Menüs darunter nebeneinander */
}
@media(min-width:1025px){.hf-footer__top{grid-template-columns:1.4fr 1fr 1fr 1fr;gap:var(--hf-s-32)}}
.hf-footer h4{
    font-family:var(--hf-font-display);font-weight:700;
    color:var(--hf-white);font-size:.95rem;margin-bottom:var(--hf-s-12);
}
.hf-footer li{margin-bottom:9px;list-style:none}
.hf-footer li a{font-size:1rem;color:var(--hf-creme-85);text-decoration:none}
.hf-footer li a:hover{color:var(--hf-white);text-decoration:underline;text-underline-offset:4px}
.hf-footer__claim{margin-top:var(--hf-s-16);max-width:26ch}
.hf-footer__bottom{
    border-top:1px solid var(--hf-creme-line);
    padding:22px 0 30px;
    display:flex;flex-wrap:wrap;gap:var(--hf-s-12);justify-content:space-between;
    font-size:.82rem;color:var(--hf-creme-60);
}
.hf-ig-link{
    display:inline-flex;align-items:center;gap:10px;margin-top:var(--hf-s-16);
    font-weight:700;color:var(--hf-white);text-decoration:none;
}
.hf-ig-link::before{
    content:"";width:20px;height:20px;flex:0 0 auto;
    background:currentColor;
    -webkit-mask:var(--hf-svg-ig) center/contain no-repeat;
    mask:var(--hf-svg-ig) center/contain no-repeat;
}
.hf-ig-link:hover{color:var(--hf-coral)}

/* Footer-Spalten als Akkordeons NUR ≤767 (Elementor-Mobile) —
   Tablet/Desktop statisch. No-JS bleibt alles offen (.hf-js-Gate).
   +/− und Trennlinien kommen aus CSS (Konvention 6); Linie =
   --hf-creme-line, dieselbe wie .hf-footer__bottom. */
@media(max-width:767px){
    .hf-js .hf-footer__top{gap:0}
    .hf-js .hf-footer__top > :first-child{padding-bottom:24px} /* Brand atmet vor der ersten Linie */
    .hf-js .hf-fcol{border-top:1px solid var(--hf-creme-line)}
    .hf-js .hf-fcol__head{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding-block:16px}
    .hf-js .hf-fcol__head h4{margin-bottom:0}
    .hf-js .hf-fcol__head::after{content:"+";font-weight:700;font-size:1.25em;line-height:1;opacity:.7}
    .hf-js .hf-fcol.is-open .hf-fcol__head::after{content:"−"}
    .hf-js .hf-fcol__head:focus-visible{outline:2px solid currentColor;outline-offset:4px;border-radius:4px}
    .hf-js .hf-fcol:not(.is-open) .hf-fcol__list{display:none}
    .hf-js .hf-fcol.is-open .hf-fcol__list{padding-bottom:16px}
}

/* ============ 6 · Typo-Hilfsklassen ============ */
.hf-eyebrow{
    display:inline-block;
    font-family:var(--hf-font-body);font-weight:700;font-size:.78rem;
    letter-spacing:.14em;text-transform:uppercase;
    color:var(--hf-emerald);
}
.hf-lede,
.hf-lede .elementor-heading-title{color:var(--hf-ink-muted);line-height:1.6} /* v1.33: Zeilenhöhe fest, hf-lh-165 an Ledes entfällt */
/* Dynamische Ledes (Archiv-Beschreibung, Auszug) liefern <p> — Heading-Widget
   dann auf Tag div stellen (p-in-p ist ungültig); innere Absätze ohne Margin */
.hf-lede p{margin:0;max-width:58ch}
/* v1.73: breiter Lede für Sektionsköpfe mit langer H2 (72ch statt 58ch) */
.hf-lede.hf-lede--wide p,
.hf-lede.hf-lede--wide .elementor-heading-title{max-width:72ch}

.hf-lede p + p{margin-top:var(--hf-s-12)}
.hf-lede p:empty{display:none}
.hf-h1-sm,.hf-h1-sm .elementor-heading-title{font-size:var(--hf-h1-sm) !important} /* v1.48: H1 mit drei Zeilen (Beratung-Hero) — Kit-h1 kommt mit (0,1,1), daher !important wie hf-h-sm */
.hf-h-sm,.hf-h-sm .elementor-heading-title{font-size:var(--hf-h2-sm) !important} /* einzige erlaubte Ausnahme: kleine H2 (Sektion 4, Freebie, FAQ) — v1.18: greift auch am Heading-Widget */

/* Typo-Utilities — Feinjustage NUR über diese Skala, nie über
   Widget-Typografie-Felder (Konvention 4). Wirken auf das Element
   selbst und auf Headings/Text darunter. .elementor-heading-title
   im :is() ist bewusste Elementor-Kopplung (Konvention 5) — hebt die
   Spezifität auf (0,2,0) und schlägt die Kit-Typografie damit
   unabhängig von der Ladereihenfolge. b/strong bleiben bewusst
   draußen: Bold im Fließtext überlebt ein .hf-fw-400 am Container. */
.hf-lh-100,.hf-lh-100 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){line-height:1}
.hf-lh-106,.hf-lh-106 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){line-height:1.06}
.hf-lh-120,.hf-lh-120 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){line-height:1.2}
.hf-lh-140,.hf-lh-140 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){line-height:1.4}
.hf-lh-165,.hf-lh-165 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){line-height:1.65}

.hf-fw-400,.hf-fw-400 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){font-weight:400}
.hf-fw-500,.hf-fw-500 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){font-weight:500}
.hf-fw-600,.hf-fw-600 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){font-weight:600}
.hf-fw-700,.hf-fw-700 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){font-weight:700}
/* 800 nur auf Display-Elementen einsetzen — DM Sans hat keinen 800er-Schnitt (Faux-Bold-Risiko) */
.hf-fw-800,.hf-fw-800 :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){font-weight:800}

/* Umbruch-Utilities (v1.16, aus dem Vorspann) — gleiche Container-
   Logik wie .hf-lh-* und .hf-fw-*. balance für Headlines/kurze Ledes
(≤ 4 Zeilen), pretty für Fließtext (nur Witwen-Schutz). */
.hf-txtpretty :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){text-wrap:pretty}
.hf-txtbalance :is(h1,h2,h3,h4,h5,h6,p,li,blockquote,.elementor-heading-title){text-wrap:balance}

/* ============ 7 · Buttons & Links ============
   Basis führt das Site Kit (Bricolage 700 · 19px · Radius 999 ·
   Padding 15/27 · Vermillion/Weiß). Diese Klassen = Referenz,
   Ghost-Variante und Hover-Verhalten. */
.hf-btn{
    display:inline-flex;align-items:center;gap:10px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem; /* 19px = Large-Text-Kante */
    line-height:1;padding:15px 27px;border-radius:999px;
    white-space:nowrap; /* v1.17: Button bricht in Form-Zeilen nicht mehr um (Freebie ≥768) */
    text-decoration:none;cursor:pointer;border:0;
    transition:transform .18s ease,filter .18s ease,box-shadow .18s ease;
}
.hf-btn:hover{transform:translateY(-2px)}
.hf-btn:active{transform:translateY(0)}
/* v1.25 · Heading-Widget-Muster: Klasse am Wrapper, <a> innen nur um
   den Text. Die ganze Pille wird klickbar, Textfarbe erbt. Gilt für
   .hf-btn und .hf-chip (Elementor-Kopplung, bewusst). */
.hf-btn,.hf-chip{position:relative}
.hf-btn .elementor-heading-title,
.hf-chip .elementor-heading-title{font:inherit;color:inherit;line-height:inherit;margin:0}
.hf-btn .elementor-heading-title > a,
.hf-chip .elementor-heading-title > a{color:inherit;text-decoration:none}
.hf-btn .elementor-heading-title > a::after,
.hf-chip .elementor-heading-title > a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.hf-btn--primary{
    background:var(--hf-vermillion);color:var(--hf-white);
    box-shadow:0 8px 20px rgba(225,114,56,.32);
}
.hf-btn--primary:hover{filter:brightness(1.05)}
.hf-btn--ghost{
    background:transparent;
    border:2px solid var(--hf-emerald);color:var(--hf-emerald);
}
.hf-btn--ghost:hover{background:var(--hf-emerald);color:var(--hf-creme)}

.hf-txtlink{
    font-weight:700;display:inline-flex;align-items:center;gap:8px;
    color:inherit;text-decoration:none;
    border-bottom:2px solid currentColor;padding-bottom:2px;
}
/* In Karten trägt der Pfeil allein — die Linie bleibt Standalone-Links
   vorbehalten (Nicht-Farb-Affordance im Fließtext-Umfeld, WCAG 1.4.1). */
.hf-pcard .hf-txtlink,
.hf-ccard .hf-txtlink,
.hf-bcard .hf-txtlink{border-bottom:0;padding-bottom:0}
.hf-txtlink::after{
    content:"";width:1em;height:1em;flex:0 0 auto;
    background:currentColor;
    -webkit-mask:var(--hf-svg-arrow) center/contain no-repeat;
    mask:var(--hf-svg-arrow) center/contain no-repeat;
    transition:transform .18s ease;
}
.hf-txtlink:hover::after{transform:translateX(4px)}
.hf-txtlink--soft{
    font-weight:600;color:var(--hf-ink-muted);
    border-bottom:0;text-decoration:underline;text-underline-offset:4px;
}
.hf-txtlink--soft::after{content:none}

/* Sekundärlink mit zwei Längen (Entscheid 22.07.): gestapelt führt
   die Langform, inline neben dem Button ab Desktop die Kurzform.
   Ein Widget, beide Texte an einer Stelle gepflegt — keine
   Responsive-Visibility-Duplikate. Markup:
   <a class="hf-txtlink--soft hf-cta-alt" href="…">
     <span class="hf-cta-alt__long">oder direkt zu Kursen &amp; Beratung</span>
     <span class="hf-cta-alt__short">Kurse &amp; Beratung</span>
   </a> */
.hf-cta-alt__short{display:none}
@media(min-width:1025px){
    .hf-cta-alt__long{display:none}
    .hf-cta-alt__short{display:inline}
}

/* ============ 8 · Marken-Elemente ============ */
/* Logo: Original-Schriftzug HappyFam® — eingetragene Marke, identisch
   mit den Card-Verpackungen. Disziplin: Original farbig NUR auf
   Creme/Weiß. Auf Emerald/Ink und im Nav-Panel automatisch einfarbig
   Weiß (Filter-Fallback, bis eine Vektor-Weiß-Version vorliegt —
   danach per <picture>/src tauschen, Regel bleibt identisch).
   Die Farbregel „weiß-auf-Emerald, Fam in Vermillion" gilt weiter
   für typografische Setzungen des Namens, nicht mehr als Nav-Marke. */
.hf-logo{display:block;height:40px;width:auto}
.hf-logo--lg{height:52px}
.hf-bg-emerald .hf-logo,
.hf-bg-ink .hf-logo,
.hf-nav-panel .hf-logo{filter:brightness(0) invert(1)}
/* v1.79 · Logo als Elementor Site-Logo-/Image-Widget (neue SVGs, 18.09.).
   Klasse ans Widget, Breite im Widget auf Standard — Höhe kommt von hier.
   Auf Emerald/Ink die beige SVG einsetzen (kein Filter mehr nötig).
   SVG-Artboard eng auf die Form zuschneiden, sonst braucht es Widget-Margins. */
/* v1.83: optischer Linksbündig-Versatz — das Dach steht über, Wand/Schrift sollen
   auf der Textkante sitzen. Versatz relativ zur Logo-Höhe, skaliert mit.
   Feinjustage nur über --hf-logo-shift (Anteil der Höhe, negativ = nach links). */
.hf-site-logo{--hf-logo-h:40px;--hf-logo-shift:-0.06}
@media(min-width:1025px){.hf-site-logo{--hf-logo-h:56px}}
.hf-site-logo--footer{--hf-logo-h:96px;--hf-logo-shift:-0.1}
@media(min-width:1025px){.hf-site-logo--footer{--hf-logo-h:120px}}
.elementor-widget.hf-site-logo{width:auto;max-width:none;margin:0}
.hf-site-logo img{display:block;width:auto;height:var(--hf-logo-h);max-width:none;object-fit:contain;object-position:left center; /* v1.82: SVG im Rahmen linksbündig */
    margin-inline-start:calc(var(--hf-logo-h) * var(--hf-logo-shift))}
.hf-site-logo a{display:inline-block;line-height:0}

/* Hand-Touch: geometrisch, max. 1 Element pro Komposition.
   Reines CSS (mask + Token) — Ein-Klassen-API, kein Inline-SVG:
   Underline/Circle: das Wort in <span class="hf-hand-…"> wickeln,
   Arrow: leeres <div class="hf-hand-arrow"></div>. Übersteht
   Text-Edits im Widget und braucht kein unfiltered_html.
   Farbregel v1.15: helle Gründe Vermillion, Emerald Chartreuse.
   Formregel v1.15: Circle nur auf hellem Grund (Einzelwort mit
   Luft) — auf Emerald/Ink schneidet der Kreis durch Ober-/Unter-
   längen, dort rendert .hf-hand-circle deshalb automatisch die
   Underline. Bestehende Spans bleiben unangetastet.
   Stapelung v1.16: Circle liegt HINTER dem Wort (z-index:-1 im
   Stacking-Context der Sektion, den .hf-sec > * aufspannt) — der
   Strich darf die Buchstaben nicht überzeichnen. */
.hf-hand-underline,
.hf-hand-circle{position:relative;display:inline-block;white-space:nowrap}
.hf-hand-underline::after{
    content:"";position:absolute;left:-2%;bottom:-.14em;width:104%;height:.22em;
    background:var(--hf-vermillion);
    -webkit-mask:var(--hf-svg-underline) center/100% 100% no-repeat;
    mask:var(--hf-svg-underline) center/100% 100% no-repeat;
    pointer-events:none;
}
.hf-hand-circle::after{
    content:"";position:absolute;left:-7%;top:-16%;width:114%;height:132%;
    z-index:-1;
    background:var(--hf-vermillion);
    -webkit-mask:var(--hf-svg-circle) center/100% 100% no-repeat;
    mask:var(--hf-svg-circle) center/100% 100% no-repeat;
    pointer-events:none;
}
/* Dunkelgrund-Fallback: Circle-Span rendert Underline-Geometrie */
.hf-bg-emerald .hf-hand-circle::after,
.hf-bg-ink .hf-hand-circle::after{
    left:-2%;top:auto;bottom:-.14em;width:104%;height:.22em;
    -webkit-mask:var(--hf-svg-underline) center/100% 100% no-repeat;
    mask:var(--hf-svg-underline) center/100% 100% no-repeat;
}
.hf-bg-emerald :is(.hf-hand-underline,.hf-hand-circle)::after{background:var(--hf-chartreuse)}
.hf-hand-arrow{
    display:block;width:74px;height:56px;
    background:var(--hf-ink);
    -webkit-mask:var(--hf-svg-arrow-hand) center/contain no-repeat;
    mask:var(--hf-svg-arrow-hand) center/contain no-repeat;
}

/* v1.24 · Cover-/Objektbild im Split (Podcast-Cover, Produktfoto).
   Klasse ans Image-Widget; Radius + Schatten machen aus dem Bild ein
   Objekt auf dem Grund. Elementors max-width:100% am Wrapper bleibt,
   die 440 sitzen am <img>. */
.hf-cover img,
img.hf-cover{display:block;width:100%;height:auto;border-radius:var(--hf-r-l);box-shadow:var(--hf-shadow)}
/* Breite = Spalte (kein max-width — der Split regelt die Größe). Elternkette
   ohne overflow:hidden lassen, sonst wird der Schatten geclippt. */
/* v1.32 · Porträt-Variante (Blog-Hero): Kreis, kleiner, rechts in der Spalte */
/* v1.64: Freisteller/Mockups mit Transparenz — kein Kartenrahmen, Schatten am Objekt */
.hf-cover--plain img,
img.hf-cover--plain{border-radius:0;box-shadow:none;filter:drop-shadow(0 18px 30px rgba(12,31,24,.18))}
/* v1.64: Seitenverhältnis-Utilities für Split-Bilder (Zuschnitt per object-fit, Fokus Mitte) */
.hf-cover--1x1 img,.hf-cover--4x3 img,.hf-cover--3x4 img,.hf-cover--3x2 img{width:100%;height:auto;object-fit:cover}
.hf-cover--1x1 img{aspect-ratio:1/1}
.hf-cover--4x3 img{aspect-ratio:4/3}
.hf-cover--3x4 img{aspect-ratio:3/4}
.hf-cover--3x2 img{aspect-ratio:3/2}
.hf-cover--round img,
img.hf-cover--round{aspect-ratio:1;object-fit:cover;border-radius:50%;max-width:360px;margin-inline:auto 0;box-shadow:var(--hf-shadow-soft)}
@media(max-width:767px){.hf-cover--round img,img.hf-cover--round{max-width:260px;margin-inline:auto}}

/* Hero-Statement-Karte (Entscheid beim Foto-Einbau: bleibt oder fliegt) */
.hf-mini-card{
    position:absolute;right:-6px;bottom:0;z-index:2;
    background:var(--hf-white);border-radius:14px;
    padding:16px 18px 14px;max-width:210px;
    box-shadow:var(--hf-shadow);transform:rotate(-4deg);
}
.hf-mini-card::before{
    content:"";position:absolute;top:0;left:0;right:0;height:7px;
    background:var(--hf-emerald);border-radius:14px 14px 0 0;
}
.hf-mini-card small{
    display:block;font-size:.62rem;font-weight:700;letter-spacing:.12em;
    text-transform:uppercase;color:var(--hf-ink-muted);margin:4px 0 6px;
}
.hf-mini-card strong{
    font-family:var(--hf-font-display);font-weight:700;
    font-size:1rem;line-height:1.25;color:var(--hf-ink);
}
@media(min-width:1025px){.hf-mini-card{right:-18px;bottom:8px}}
.hf-hero-media{position:relative;padding-bottom:26px}

/* ============ 9 · Karten-Komponenten ============ */
/* XL-Karte (Freebie-Container) */
.hf-card-xl{
    border-radius:var(--hf-r-l);
    padding:clamp(34px,6vw,60px);
    overflow:hidden;position:relative;
}
/* Freebie-Spalten: KEINE Systemklasse mehr (Entscheid 03.09.) — Breiten,
   Gap und Mobile-Stack liegen in den Elementor-Container-Settings der
   beiden Cols. Dokumentierte Ausnahme zu Konvention 1. */
.hf-freebie-form{display:flex;flex-direction:column;gap:var(--hf-s-12);margin-top:var(--hf-s-24);max-width:460px}
.hf-copy > .elementor-widget.hf-freebie-form{width:100%} /* v1.62: hf-copy schrumpft Kinder auf Inhaltsbreite — Form braucht volle Breite bis max 460 */
@media(min-width:768px){.hf-freebie-form{flex-direction:row}}
.hf-freebie-form input{
    flex:1;font:inherit;font-size:1rem;
    padding:15px 20px;border-radius:999px;
    border:1.5px solid rgba(12,31,24,.7);
    background:var(--hf-white);color:var(--hf-ink);
}
.hf-freebie-form input::placeholder{color:rgba(12,31,24,.5)}
.hf-badge{
    display:inline-block;background:var(--hf-ink);color:var(--hf-creme);
    font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    padding:6px 14px;border-radius:999px;
}
.hf-legal,
.hf-legal p,
.hf-legal .elementor-heading-title{font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted);margin:0}
/* v1.23: Breite nur mit Modifier — am inneren Element, weil Elementors
   .e-con>.elementor-widget{max-width:100%} (0,2,0) die Wrapper-Regel schlägt. */
.hf-legal--narrow p,
.hf-legal--narrow .elementor-heading-title{max-width:52ch}
.hf-copy .hf-legal{margin-top:var(--hf-s-12)} /* im Copy-Stack: + Gap 16 = 28 */
.hf-card-xl > .hf-legal{margin-top:var(--hf-s-24)} /* v1.62: 32→24 — unter dem Grid, Karte schließt sonst unten zu schwer */
.hf-legal a{color:inherit;text-decoration:underline;text-underline-offset:3px} /* v1.17: Datenschutz-Link erbte Browser-Blau */

/* Produkt-Karte (Sektion 5) */
.hf-pcard{
    background:var(--hf-white);border:1px solid var(--hf-line); /* v1.51: Weiß wie ccard/bcard — Produktfotos haben weißen Grund, auf Creme stand ein Rechteck */
    border-radius:var(--hf-r-m);padding:var(--hf-s-16);
    transition:transform .18s ease,box-shadow .18s ease;
    color:var(--hf-ink);text-decoration:none; /* Karte ist als <a>-Container verlinkt */
}
.hf-pcard:hover{transform:translateY(-4px);box-shadow:var(--hf-shadow-soft)}
.hf-pcard h3{font-size:1.05rem;font-weight:700;margin-bottom:4px}
.hf-pcard p{font-size:1rem;color:var(--hf-ink-muted)}
.hf-pcard .hf-thumb{margin-bottom:var(--hf-s-16)}
/* v1.51: Elementor-Struktur — Container .hf-pcard (Link am Container, Padding 0)
     Image-Widget → Bild randlos · Container .hf-pcard__body (Padding 16) → Heading h3 + Heading p */
.hf-pcard,
.e-con.hf-pcard{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden} /* Bild bis an den Rand, Radius clippt */
.hf-pcard img{display:block;width:100%;height:auto}
.hf-pcard > .elementor-widget,
.hf-pcard__body > .elementor-widget{margin:0}
.hf-pcard__body,
.e-con.hf-pcard__body{display:flex;flex-direction:column;gap:4px;padding:var(--hf-s-16)}
.hf-pcard p.elementor-heading-title{line-height:1.5;margin:0}
.hf-pcard h3.elementor-heading-title{margin:0}

/* Kurs-Karte (Sektion 7) */
.hf-ccard{
    background:var(--hf-white);border:1px solid var(--hf-line);
    border-radius:var(--hf-r-m);padding:var(--hf-s-24);
    display:flex;flex-direction:column;gap:var(--hf-s-12);
    transition:transform .18s ease,box-shadow .18s ease;
}
.hf-ccard:hover{transform:translateY(-4px);box-shadow:var(--hf-shadow)}
.hf-ccard .hf-tag{
    align-self:flex-start;background:var(--hf-emerald);color:var(--hf-creme);
    font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
    padding:5px 12px;border-radius:999px;
}
.hf-ccard h3{font-weight:700}
.hf-ccard p,
.hf-ccard p.elementor-heading-title{color:var(--hf-ink-muted);font-size:1rem;line-height:1.55;margin:0}
.hf-ccard .hf-txtlink{margin-top:auto;color:var(--hf-emerald)} /* v1.38: wie bcard/ecard */
/* v1.52: Elementor-Kopplung — Container .hf-ccard (Link am Container möglich)
     Heading .hf-tag → Image (optional, im Fluss) → Heading h3 → Heading p/Text-Editor → Heading .hf-txtlink */
.e-con.hf-ccard{display:flex;flex-direction:column;gap:var(--hf-s-12);padding:var(--hf-s-24);color:var(--hf-ink);text-decoration:none}
.hf-ccard > .elementor-widget{margin:0;width:auto;max-width:100%}
/* Heading-Widget: Pille auf den Title, Wrapper neutral (sonst doppelte Höhe) */
.hf-ccard .elementor-widget.hf-tag{background:none;padding:0;border-radius:0;align-self:flex-start}
.hf-ccard .hf-tag .elementor-heading-title{display:inline-block;background:var(--hf-emerald);color:var(--hf-creme);font-family:var(--hf-font-body);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;line-height:1.3;padding:5px 12px;border-radius:999px;margin:0}
.hf-ccard img{display:block;width:100%;height:auto;border-radius:var(--hf-r-s)}
.hf-ccard > .elementor-widget.elementor-widget-image{margin-bottom:var(--hf-s-12)} /* (0,3,0) gegen den Widget-Reset — Bild → H3: Gap 12 + 12 = 24 */
/* v1.53: Tag über dem Bild — Modifier am Karten-Container, kein Widget-Setting.
   Container .hf-ccard.hf-ccard--tag-over → Tag absolut oben links, Bild rückt an den Kartenrand. */
.hf-ccard > .elementor-widget.hf-txtlink{margin-top:auto} /* (0,3,0): Link dockt unten an, auch im Elementor-Widget */
/* v1.78: Karte mit Meta-Zeile (Beratung: Dauer · Preis) — Meta + Link docken gemeinsam unten an,
   Meta-Zeilen stehen im Grid auf einer Höhe. Ohne Meta bleibt es beim Link allein. */
.hf-ccard > .hf-meta,
.hf-ccard > .e-con.hf-meta{margin-top:auto;padding-top:var(--hf-s-12)}
.hf-ccard > .hf-meta ~ .hf-txtlink,
.hf-ccard > .hf-meta ~ .elementor-widget.hf-txtlink{margin-top:0} /* (0,4,0) gegen die Auto-Regel oben */
a.hf-ccard:hover h3,
a.hf-ccard:hover p{color:inherit} /* Container-Link: Kit-a:hover färbt sonst die H3 */
a.hf-ccard:hover{color:var(--hf-ink)}
.hf-ccard--tag-over{position:relative}
.hf-ccard--tag-over > .hf-tag,
.hf-ccard--tag-over > .elementor-widget.hf-tag{position:absolute;top:var(--hf-s-16);left:var(--hf-s-16);z-index:1;margin:0}
.hf-ccard h3.elementor-heading-title{margin:0}
.hf-ccard .elementor-widget-text-editor p{margin:0}

/* Blog-Karte (Sektion 10) */
.hf-bcard{
    background:var(--hf-white);border:1px solid var(--hf-line);
    border-radius:var(--hf-r-m);overflow:hidden;
    display:flex;flex-direction:column;
    transition:transform .18s ease,box-shadow .18s ease;
}
.hf-bcard:hover{transform:translateY(-4px);box-shadow:var(--hf-shadow)}
.hf-bcard__body{padding:20px;padding-bottom:var(--hf-s-24);display:flex;flex-direction:column;gap:10px;flex:1}
.hf-bcard__meta{display:flex;flex-wrap:wrap;gap:var(--hf-s-12);align-items:center;font-size:.78rem;font-weight:700;letter-spacing:.06em}
.hf-bcard__cat{color:var(--hf-emerald);letter-spacing:.08em;text-transform:uppercase}
.hf-bcard__meta span:not(.hf-bcard__cat):not(.hf-bcard__cat *){color:var(--hf-ink-muted)} /* v1.55: Heading-Span im Kategorie-Widget ausgenommen — Kategorie blieb sonst muted */
.hf-bcard__cat .elementor-heading-title,
.hf-bcard__cat .elementor-heading-title a{color:var(--hf-emerald)}
.hf-bcard h3{font-size:1.08rem;font-weight:700}
.hf-bcard .hf-txtlink{margin-top:auto;font-size:1rem;align-self:flex-start;color:var(--hf-emerald)}
/* Bild im Loop-Item: Klasse ans Bild-Widget (oder direkt ans <img>) */
.hf-bcard__media{display:block;width:100%;aspect-ratio:3/2;object-fit:cover;overflow:hidden}
.hf-bcard__media img{display:block;width:100%;height:100%;object-fit:cover}
.hf-bcard__excerpt{
    color:var(--hf-ink-muted);font-size:1rem;line-height:1.55;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
/* Variante „wide": 2-spaltiges Desktop-Layout (Archivseite Elternwissen).
   Wirkt erst ab 1025 — darunter regieren Karussell/Stapel unverändert. */
@media(min-width:1025px){
    .hf-bcard--wide .hf-bcard__media{aspect-ratio:16/9}
    .hf-bcard--wide .hf-bcard__body{padding:22px 24px 26px;gap:12px}
    .hf-bcard--wide h3{font-size:clamp(1.15rem,1.6vw,1.5rem)}
}

/* Zitat-Karte (Sektion 11) */
.hf-qcard{
    position:relative;background:var(--hf-creme);color:var(--hf-ink);
    border-radius:var(--hf-r-m);padding:var(--hf-s-24);
    display:flex;flex-direction:column;gap:var(--hf-s-12);
}
.hf-qcard .hf-stars{color:var(--hf-vermillion);font-size:1rem;letter-spacing:2px}
.hf-qcard blockquote{
    font-family:var(--hf-font-display);font-weight:600;
    font-size:1.05rem;line-height:1.4;margin:0;
}
.hf-qcard cite{font-style:normal;font-size:.85rem;color:var(--hf-ink-muted)}
/* v1.40: Zitat-Karte mit Sternen als Elementor-Struktur (Kurse, Startseite).
   Alle Heading-Widgets, Tag div, Klasse am Widget:
   Container .hf-qcard (im .hf-track)
     Heading .hf-stars        → ★★★★★
     Heading .hf-qcard__q     → Zitat (Regel bei --press, gilt für beide)
     Heading .hf-qcard__cite  → Name · Kurs                                */
.hf-qcard .hf-stars .elementor-heading-title{font-family:var(--hf-font-body);font-size:1rem;font-weight:400;line-height:1;letter-spacing:2px;color:var(--hf-vermillion);margin:0}
.hf-qcard .hf-qcard__cite .elementor-heading-title{font-family:var(--hf-font-body);font-style:normal;font-size:.85rem;font-weight:400;line-height:1.4;color:var(--hf-ink-muted);margin:0}
.hf-qcard > .elementor-widget{margin:0}
.hf-qcard cite,
.hf-qcard > .elementor-widget.hf-qcard__cite{margin-top:auto} /* v1.58: Quelle dockt unten an — Karten im Grid gleich hoch */

/* Chips (Sektion 3) */
.hf-chips{display:flex;flex-wrap:wrap;gap:var(--hf-s-12)}
.hf-chip{
    display:inline-flex;align-items:center;gap:10px;
    background:var(--hf-creme);color:var(--hf-emerald);
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;
    padding:9px 18px;border-radius:999px;
    border:1px solid var(--hf-line);text-decoration:none; /* v1.29: Basis trägt Rand + Link-Reset (vorher nur --icon) */
    transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease;
}
/* Hover auf der Klasse, nicht auf a — im Heading-Widget liegt der Link innen */
/* v1.50: Hover nur für Chips, die ein Link sind oder einen enthalten —
   Label-Chips (Startseite Eltern Cards) bleiben ruhig. */
a.hf-chip:not(.hf-chip--active):hover,
.hf-chip:has(a):not(.hf-chip--active):hover{background:var(--hf-emerald);color:var(--hf-creme);transform:translateY(-2px);box-shadow:var(--hf-shadow-soft)}
.hf-bg-white .hf-chip{border-color:transparent}
/* v1.29 · aktive Kategorie (Archiv-Chips): Emerald, kein Hover-Sprung */
.hf-chip--active,
a.hf-chip--active:hover,
body.category-elternschaft-entwickeln .hf-chip--cat-elternschaft-entwickeln,
body.category-eltern-staerken .hf-chip--cat-eltern-staerken,
body.category-kinder-verstehen .hf-chip--cat-kinder-verstehen,
body.category-kinder-staerken .hf-chip--cat-kinder-staerken,
body.category-eltern-kind-beziehung .hf-chip--cat-eltern-kind-beziehung{background:var(--hf-emerald);color:var(--hf-creme);border-color:var(--hf-emerald);transform:none;box-shadow:none}
/* Neue Kategorie → eine Zeile hier ergänzen (v1.30). */
/* v1.17 · Chip mit Icon (Podcast-Plattformen). Als <a> einsetzen.
   Icon = Maske aus --hf-chip-icon, Default Play-Glyphe. Marken-Icons
   NICHT hier zeichnen: offizielle SVGs aus dem jeweiligen Press-Kit
   pro Modifier setzen, z. B.
     .hf-chip--spotify{--hf-chip-icon:url("data:image/svg+xml,…")}
   Einfarbig über currentColor — Marken-Farbicons würden die Palette
   sprengen. Auf Creme-Grund (Default-Sektion) hat der Chip einen
   Line-Rand, damit er sich vom Hintergrund löst. */
.hf-chip--icon{
    --hf-chip-icon:url("../icons/podcast.svg"); /* Default: generisches Podcast-Zeichen */
}
.hf-chip--icon::before{
    content:"";width:22px;height:22px;flex:0 0 auto; /* ≥21px: Spotify-Mindestgröße fürs Icon */
    background:var(--hf-chip-icon-color,currentColor);
    -webkit-mask:var(--hf-chip-icon) center/contain no-repeat;
    mask:var(--hf-chip-icon) center/contain no-repeat;
}
.hf-chip--icon:hover{--hf-chip-icon-color:var(--hf-creme)}
/* Marken-Modifier: Spotify/Apple erlauben ihre Marke nur in Originalfarbe,
   Schwarz oder Weiß → Icon in Ink, nie Emerald. SVG-Pfad aus dem
   jeweiligen Press-Kit als --hf-chip-icon eintragen. */
/* Marken-Icons als Dateien unter assets/icons/ (Icon-Zeichen ohne
   Wortmarke). Pfad relativ zu assets/css/. Apple + Podimo nutzen das
   Default-Zeichen podcast.svg. Farbe Ink (Guideline: Schwarz/Weiß erlaubt). */
.hf-chip--spotify{--hf-chip-icon:url("../icons/spotify.svg")}
.hf-chip--deezer{--hf-chip-icon:url("../icons/deezer.svg")}
.hf-chip--audible{--hf-chip-icon:url("../icons/audible.svg")}
.hf-chip--spotify,.hf-chip--apple,.hf-chip--audible,.hf-chip--deezer,.hf-chip--podimo{--hf-chip-icon-color:var(--hf-ink)}
.hf-chip--spotify:hover,.hf-chip--apple:hover,.hf-chip--audible:hover,.hf-chip--deezer:hover,.hf-chip--podimo:hover{--hf-chip-icon-color:var(--hf-creme)}
.hf-chips--center{justify-content:center}
/* v1.39: Chips als Elementor-Container — (0,2,0) gegen .e-con.e-flex
   (Direction/Gap), Heading-Widgets ohne Breite/Margin (analog .hf-meta).
   Kein Width/Direction mehr in Widget-Settings nötig. */
.e-con.hf-chips{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--hf-s-12);padding:0}
.e-con.hf-chips--center{justify-content:center}
.hf-chips > .elementor-widget{width:auto;max-width:none;margin:0}

/* v1.17 · Folgen-Karte (Podcast). Geschwister von .hf-bcard: gleiche
   Radien, gleicher Hover, Txtlink ohne Linie.
   v1.26: Nummer kommt aus einem CSS-Counter — der Track zählt seine
   .hf-ecard-Kinder, das Cover zeigt „01", „02" … von selbst. Kein
   Span, kein Nachpflegen. Mit Bild: Nummer als Badge oben links.
   Ohne Bild: große Nummer auf Farbrotation (Emerald → Coral → Creme).
   Elementor-Struktur:
   Container .hf-ecard
     Image-Widget .hf-ecard__cover       (Illustration 3:2)
     Container .hf-ecard__body
       Container .hf-ecard__meta         (2× Heading span: Datum · Dauer)
       Heading h3 · Heading p · Heading div.hf-txtlink mit <a> */
.hf-track{counter-reset:hf-ep}
.hf-ecard{
    counter-increment:hf-ep;
    background:var(--hf-white);border:1px solid var(--hf-line);
    border-radius:var(--hf-r-m);overflow:hidden;
    display:flex;flex-direction:column;
    transition:transform .18s ease,box-shadow .18s ease;
}
.hf-ecard:hover{transform:translateY(-4px);box-shadow:var(--hf-shadow)}
.hf-ecard__cover{
    position:relative;aspect-ratio:3/2;display:grid;place-items:center;
    background:var(--hf-emerald);color:var(--hf-creme);overflow:hidden;
    margin:0; /* Elementor-Widget-Margin raus */
}
.hf-ecard__cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Nummer: ohne Bild groß und mittig … */
.hf-ecard__cover::after{
    content:counter(hf-ep,decimal-leading-zero);
    font-family:var(--hf-font-display);font-weight:800;
    font-size:clamp(4rem,14vw,5.5rem);line-height:1;letter-spacing:-.03em;
}
/* … mit Bild als Badge oben links */
.hf-ecard__cover:has(img)::after{
    position:absolute;top:12px;left:12px;
    font-size:.95rem;font-weight:700;letter-spacing:.06em;
    padding:6px 11px;border-radius:999px;
    background:var(--hf-creme);color:var(--hf-ink);box-shadow:var(--hf-shadow-soft);
}
/* Farbrotation (greift sichtbar nur ohne Bild) */
.hf-ecard:nth-child(3n+2) .hf-ecard__cover{background:var(--hf-coral);color:var(--hf-ink)}
.hf-ecard:nth-child(3n+3) .hf-ecard__cover{background:var(--hf-creme);color:var(--hf-emerald);box-shadow:inset 0 -1px 0 var(--hf-line)}
.hf-ecard > .hf-ecard__body{padding:20px;padding-bottom:var(--hf-s-24);display:flex;flex-direction:column;gap:10px;flex:1 1 auto} /* (0,2,0) gegen .e-con.e-child flex-grow:0 */
/* Meta als Elementor-Container: Row erzwingen (e-con-Default ist Column) */
.hf-ecard__meta,
.e-con.hf-ecard__meta{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--hf-s-12);font-size:.78rem;font-weight:700;color:var(--hf-ink-muted);letter-spacing:.06em} /* = Eyebrow-Skala (Label) */
.hf-ecard__meta .elementor-heading-title{font:inherit;color:inherit;margin:0}
/* Trenner zwischen den Meta-Werten */
.hf-ecard__meta > * + *::before{content:"·";margin-right:var(--hf-s-12);opacity:.6}
.hf-ecard h3{font-size:1.08rem;font-weight:700;text-wrap:balance}
.hf-ecard p{color:var(--hf-ink-muted);font-size:1rem;line-height:1.55}
.hf-ecard .hf-txtlink,
.hf-ecard__body > .hf-txtlink{margin-top:auto;font-size:1rem;align-self:flex-start;color:var(--hf-emerald);border-bottom:0;padding-bottom:0}

/* ============ 9.1 · Folgen-Zeilen auf Ink (v1.54, Startseite Podcast) ============
   Elementor-Struktur:
   Container .hf-ep-list (.hf-ep-list--fade zeigt 2,5 Zeilen)
     Container .hf-ep-row  (Link am Container)
       HTML-Widget <span class="hf-ep-row__play"></span>
       Container .hf-ep-row__body
         Heading span .hf-ep-row__title  → Folgentitel
         Container .hf-ep-row__meta       → Heading spans: Datum · Dauer
   Danach Heading .hf-txtlink „Alle Folgen" (im Copy-Stack, nicht in der Liste). */
.hf-ep-list,
.e-con.hf-ep-list{display:flex;flex-direction:column;gap:10px;align-self:stretch;position:relative;padding:0}
.hf-ep-row,
.e-con.hf-ep-row{display:flex;flex-direction:row;align-items:center;gap:var(--hf-s-16);padding:12px 16px 12px 12px;
    background:rgba(253,249,243,.06);border:1px solid rgba(253,249,243,.12);border-radius:var(--hf-r-m);
    color:var(--hf-creme);text-decoration:none;transition:background .18s ease,transform .18s ease}
.hf-ep-row:hover{background:rgba(253,249,243,.1);border-color:rgba(253,249,243,.28)} /* kein translate — die Fade-Liste clippt sonst rechts */
.hf-ep-row > .elementor-widget,
.hf-ep-row__body > .elementor-widget{margin:0;width:auto;max-width:100%}
.hf-ep-row .elementor-widget-html:has(.hf-ep-row__play){flex:0 0 auto;line-height:0}
.hf-ep-row__play{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--hf-vermillion);flex:0 0 auto}
.hf-ep-row__play::after{content:"";width:0;height:0;border-style:solid;border-width:8px 0 8px 13px;border-color:transparent transparent transparent var(--hf-white);margin-left:3px}
.hf-ep-row__body,
.e-con.hf-ep-row__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto;padding:0}
.hf-ep-row__body > *{margin:0} /* Elementor-Kindabstände raus (Widget + Meta-Container) */
.hf-ep-row__title,
.hf-ep-row__title .elementor-heading-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;line-height:1.25;color:var(--hf-white);margin:0}
.hf-ep-row__meta,
.e-con.hf-ep-row__meta{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:0;padding:0;font-size:.74rem;font-weight:700;letter-spacing:.06em;line-height:1.3;color:var(--hf-creme-60)}
.hf-ep-row__meta .elementor-heading-title{font:inherit;line-height:1.3;color:inherit;margin:0}
.hf-ep-row__meta > .elementor-widget{width:auto;margin:0;line-height:1.3}
.hf-ep-row__meta > * + *::before{content:"·";margin:0 8px;opacity:.6}
.hf-ep-list--fade{max-height:calc(2 * 72px + 20px + 36px);overflow:hidden;
    -webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent 100%);mask-image:linear-gradient(to bottom,#000 70%,transparent 100%)}
.hf-bg-ink .hf-txtlink{color:var(--hf-creme)}

/* ============ 10 · FAQ ============
   Markup kommt aus hf-core.php ([hf_faq cat="…"]), Styling in Block 14.
   Breite bewusst NICHT im CSS begrenzt: steuert der Elementor-
   Container (dokumentierte Ausnahme zu Konvention 1). */

/* ============ 11 · Design-Phase (fliegt mit echten Inhalten) ============ */
/* Foto-Platzhalter */
.hf-ph{
    position:relative;border-radius:var(--hf-r-l);
    min-height:300px;display:grid;place-items:center;overflow:hidden;
    background:linear-gradient(145deg,#F4EDE1,#EDE2D0);
    border:1.5px dashed rgba(12,31,24,.25);
}
.hf-ph--sm{min-height:230px}
.hf-ph--tall{min-height:360px}
.hf-thumb{
    position:relative;height:130px;border-radius:var(--hf-r-s);
    background:linear-gradient(145deg,#F4EDE1,#EDE2D0);
    border:1.5px dashed rgba(12,31,24,.2);
    display:grid;place-items:center;
}
.hf-ph > span,
.hf-thumb > span{
    font-size:.78rem;font-weight:600;color:var(--hf-ink-muted);
    background:rgba(255,255,255,.92);padding:8px 14px;border-radius:999px;
    box-shadow:var(--hf-shadow-soft);text-align:center;max-width:82%;
}
.hf-thumb > span{font-size:.66rem;background:transparent;box-shadow:none;padding:0}
.hf-bg-emerald .hf-ph{background:rgba(253,249,243,.1);border-color:rgba(253,249,243,.45)}
.hf-bg-coral .hf-ph{background:rgba(255,255,255,.42);border-color:rgba(12,31,24,.3)}
.hf-bg-ink .hf-ph{background:rgba(253,249,243,.07);border-color:rgba(253,249,243,.35)}
.hf-bg-ink .hf-ph > span{color:var(--hf-creme-85);background:rgba(12,31,24,.5)}

/* FPO-Chip auf Platzhalter-Inhalten */
.hf-fpo{
    position:absolute;top:12px;left:12px;z-index:2;
    font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
    background:rgba(12,31,24,.55);color:var(--hf-white);
    padding:4px 9px;border-radius:6px;
}

/* Trust-Siegel-Platzhalter (real: ProvenExpert-Embed via Borlabs) */
.hf-seal{
    width:74px;height:74px;border-radius:14px;flex:0 0 auto;
    border:1.5px dashed var(--hf-line);background:var(--hf-creme);
    display:grid;place-items:center;padding:6px;text-align:center;
    font-size:.6rem;font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;line-height:1.35;color:var(--hf-ink-muted);
}

/* Podcast-Platzhalter (real: Cover-Bild + Episoden-Liste) */
.hf-pod-cover{
    position:relative;border-radius:var(--hf-r-l);min-height:280px;
    background:rgba(253,249,243,.07);border:1.5px dashed rgba(253,249,243,.35);
    display:grid;place-items:center;
}
.hf-pod-cover span{
    font-size:.78rem;font-weight:600;color:var(--hf-creme-85);
    background:rgba(12,31,24,.5);padding:8px 14px;border-radius:999px;
}
.hf-eps{display:grid;gap:var(--hf-s-12)}
.hf-ep{
    display:flex;align-items:center;gap:14px;
    background:rgba(253,249,243,.06);
    border:1px solid rgba(253,249,243,.14);
    border-radius:var(--hf-r-m);padding:14px 16px;
}
.hf-ep__play{
    width:42px;height:42px;border-radius:50%;flex:0 0 auto;
    background:var(--hf-vermillion);display:grid;place-items:center;
}
.hf-ep__play::before{
    content:"";width:14px;height:14px;margin-left:2px;
    background:var(--hf-white);
    clip-path:polygon(0 0,100% 50%,0 100%);
}
.hf-ep__lines{flex:1;display:grid;gap:7px}
.hf-ep__lines i{display:block;height:9px;border-radius:4px;background:rgba(253,249,243,.22)}
.hf-ep__lines i:last-child{width:55%}

/* Freebie-PDF-Mock (real: Cover-Grafik) */
.hf-freebie-visual{position:relative;min-height:230px;display:grid;place-items:center}
.hf-pdf-mock{
    position:relative;width:172px;aspect-ratio:3/4;
    background:var(--hf-white);border-radius:12px;
    box-shadow:0 18px 40px rgba(12,31,24,.22);
    transform:rotate(5deg);
    padding:16px;display:flex;flex-direction:column;
}
.hf-pdf-mock::before{content:"";height:8px;border-radius:6px;background:var(--hf-emerald);margin-bottom:14px}
.hf-pdf-mock strong{
    font-family:var(--hf-font-display);font-weight:800;
    font-size:1.15rem;line-height:1.15;color:var(--hf-ink);
}
.hf-pdf-mock small{
    margin-top:auto;font-size:.66rem;font-weight:700;
    color:var(--hf-ink-muted);letter-spacing:.08em;text-transform:uppercase;
}
.hf-freebie-arrow{position:absolute;left:8%;bottom:2%;opacity:.85}
@media(max-width:1024px){.hf-freebie-arrow{display:none}}

/* ============ 12 · Motion & A11y ============ */
/* Reveal nur mit aktivem JS (hf-js kommt inline aus wp_head) — No-JS zeigt sofort */
.hf-js .hf-rv{opacity:0;transform:translateY(16px);transition:opacity .55s ease,transform .55s ease}
.hf-js .hf-rv.is-in{opacity:1;transform:none}

:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px;border-radius:4px}

@media(prefers-reduced-motion:reduce){
    .hf-js .hf-faq__item[open] > .hf-faq__a{animation:none}
    .hf-faq__q::after{transition:none}
    .hf-js .hf-rv{opacity:1;transform:none;transition:none}
    .hf-btn,.hf-pcard,.hf-ccard,.hf-bcard,.hf-txtlink::after{transition:none}
}

/* ============ 13 · Header & Nav (Theme-Builder-Template) ============ */
.hf-header{
    position:sticky;top:0;z-index:50;
    background:var(--hf-creme);border-bottom:1px solid var(--hf-line);
}
body.admin-bar .hf-header{top:32px}
@media(max-width:782px){body.admin-bar .hf-header{top:46px}}
.hf-header__bar{
    display:flex;align-items:center;justify-content:space-between;
    max-width:var(--hf-wrap);margin-inline:auto;
    padding:14px var(--hf-pad-x);
}
.hf-nav-desktop{display:none;align-items:center;gap:28px}
.hf-nav-desktop a{font-weight:600;font-size:1rem;color:var(--hf-ink-muted);text-decoration:none}
.hf-nav-desktop a:hover{color:var(--hf-emerald)}
.hf-nav-desktop .hf-btn{padding:11px 22px}
.hf-burger{display:grid;gap:5px;padding:10px;background:none;border:0;cursor:pointer}
.hf-burger span{width:24px;height:3px;border-radius:3px;background:var(--hf-ink)}
@media(min-width:1025px){
    .hf-nav-desktop{display:flex}
    .hf-burger{display:none}
}
/* Header-CTA bleibt ≤767 sichtbar (Entscheid 22.07.) — im Button-
   Widget „Hide on Mobile" entfernen, Größe regelt das System.
   ≤359 (SE-Klasse) zieht das Logo mit, damit die Zeile hält. */
@media(max-width:767px){
    .hf-header__bar{gap:var(--hf-s-12)}
    .hf-header__bar .hf-btn{padding:10px 18px;font-size:1rem}
}
@media(max-width:359px){.hf-header .hf-logo{height:34px}}
.hf-nav-panel{
    position:fixed;inset:0;z-index:60;
    background:var(--hf-emerald);
    display:flex;flex-direction:column;padding:24px;
    transform:translateY(-102%);transition:transform .3s ease;
}
body.admin-bar .hf-nav-panel{top:32px}
@media(max-width:782px){body.admin-bar .hf-nav-panel{top:46px}}
.hf-nav-panel.is-open{transform:translateY(0)}
.hf-nav-panel__top{display:flex;justify-content:space-between;align-items:center}
.hf-nav-close{
    color:var(--hf-creme);font-size:2rem;line-height:1;
    padding:6px 12px;background:none;border:0;cursor:pointer;
}
.hf-nav-panel ul{margin:8vh 0 0;display:grid;gap:8px;list-style:none;padding:0}
.hf-nav-panel ul a{
    font-family:var(--hf-font-display);font-weight:800;
    font-size:clamp(1.7rem,7vw,2.4rem);
    color:var(--hf-creme);text-decoration:none;display:block;padding:8px 4px;
}
.hf-nav-panel ul a:hover{color:var(--hf-white)}
.hf-nav-panel .hf-btn{margin-top:auto;justify-content:center}
.hf-lock{overflow:hidden}
@media(prefers-reduced-motion:reduce){.hf-nav-panel{transition:none}}

/* ============ 14 · FAQ (Shortcode-Markup aus hf-core.php) ============
   v1.17: ersetzt das Nested-Accordion-Mapping. Natives details/summary.
   v1.21: Caret statt +/−, exklusiv über name-Attribut (Shortcode) +
   JS-Modul (animiert). Erste Frage optional offen über open="first".
   .hf-faq > details.hf-faq__item > summary.hf-faq__q > h3
                                  > div.hf-faq__a */
.hf-faq{border-top:1px solid var(--hf-line);margin-top:var(--hf-s-32)} /* v1.19: Abstand zur Headline */
.hf-faq__item{border-bottom:1px solid var(--hf-line)}
.hf-faq__q{
    display:flex;justify-content:space-between;align-items:center;gap:var(--hf-s-16);
    padding:20px 4px;cursor:pointer;list-style:none;
}
.hf-faq__q::-webkit-details-marker{display:none}
.hf-faq .hf-faq__q h3{ /* v1.18: (0,2,1) gegen Kit-h3 · v1.21: clamp */
    font-family:var(--hf-font-display);font-weight:700;
    font-size:clamp(1rem,.9rem + .5vw,1.25rem);line-height:1.3;
    color:var(--hf-ink);margin:0;
}
/* Caret: Chevron-Maske, dreht bei [open] um 180° */
.hf-faq__q::after{
    content:"";flex:0 0 auto;width:22px;height:22px;
    background:var(--hf-emerald);
    -webkit-mask:var(--hf-svg-chevron) center/contain no-repeat;
    mask:var(--hf-svg-chevron) center/contain no-repeat;
    transition:transform .26s cubic-bezier(.4,0,.2,1);
}
.hf-faq__item[open] > .hf-faq__q::after{transform:rotate(180deg)}
.hf-faq__q:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:-3px;border-radius:4px}
.hf-faq__a{padding:0 4px 24px;max-width:70ch} /* v1.19: Lesbreite auch in breiten Containern */
/* Einblenden nur mit JS (Höhe animiert hf-frontend.js) — ohne JS sofort sichtbar */
.hf-js .hf-faq__item[open] > .hf-faq__a{animation:hf-faq-in .26s ease both}
@keyframes hf-faq-in{from{opacity:0}to{opacity:1}}
.hf-faq .hf-faq__a p{margin:0;color:var(--hf-ink-muted);font-size:clamp(1rem,.9rem + .35vw,1.0625rem);line-height:1.6} /* (0,2,1): Kit-p-Margins raus */
.hf-faq .hf-faq__a p + p{margin-top:var(--hf-s-12)}
/* v1.60: Fließtext-Links (FAQ, Text-Editor, Beitragsinhalt) — Emerald + Unterstrich,
   nicht nur Farbe (WCAG 1.4.1). Klassen-Links (Buttons, Chips, Txtlinks) ausgenommen. */
.hf-faq__a a:not([class]),
.hf-copy .elementor-widget-text-editor a:not([class]),
.hf-post a:not([class]){color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1.5px}
.hf-faq__a a:not([class]):hover,
.hf-copy .elementor-widget-text-editor a:not([class]):hover,
.hf-post a:not([class]):hover{color:var(--hf-ink)}
.hf-faq .hf-faq__a :is(ul,ol){margin:var(--hf-s-12) 0 0;padding-left:1.2em;color:var(--hf-ink-muted);font-size:clamp(1rem,.9rem + .35vw,1.0625rem)}
/* Dunkelgrund-Variante, falls FAQ mal auf Emerald sitzt */
.hf-bg-emerald .hf-faq,
.hf-bg-emerald .hf-faq__item{border-color:var(--hf-creme-line)}
.hf-bg-emerald .hf-faq .hf-faq__q h3{ /* v1.18: (0,2,1) gegen Kit-h3 */color:var(--hf-white)}
.hf-bg-emerald .hf-faq__q::after{background:var(--hf-chartreuse)}
.hf-bg-emerald .hf-faq .hf-faq__a p{color:var(--hf-creme-85)}
/* Editor-Hinweis (nur für eingeloggte Redaktion sichtbar, siehe hf-core) */
.hf-faq--empty{font-size:.85rem;color:var(--hf-vermillion)}

/* ============ 15 · Blog-Archiv: Loop Grid + Pagination (v1.29) ============
   Klasse .hf-loop ans Loop-Grid-Widget (Elternwissen + Kategorie-Archiv).
   Spalten/Gap kommen aus dem Widget (dokumentierte Ausnahme: Loop Grid
   ist ein Widget mit eigenem Grid). Das Loop-Item selbst trägt
   .hf-bcard hf-bcard--wide (Block 9). Pagination = Elementor-Markup
   nav.elementor-pagination > a/span.page-numbers */
.hf-loop .elementor-pagination{
    display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
    gap:var(--hf-s-12);margin-top:var(--hf-s-40);
}
.hf-loop .page-numbers{
    display:inline-flex;align-items:center;justify-content:center;
    min-width:44px;height:44px;padding:0 14px;border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;
    color:var(--hf-emerald);background:var(--hf-white);border:1px solid var(--hf-line);
    text-decoration:none;transition:background .18s ease,color .18s ease,transform .18s ease;
}
.hf-loop a.page-numbers:hover{background:var(--hf-emerald);color:var(--hf-creme);transform:translateY(-2px)}
.hf-loop .page-numbers.current{background:var(--hf-emerald);color:var(--hf-creme);border-color:var(--hf-emerald)}
.hf-loop .page-numbers.dots{border:0;background:transparent;min-width:auto;padding:0 4px;color:var(--hf-ink-muted)}
.hf-loop .page-numbers.prev,
.hf-loop .page-numbers.next{padding:0 18px}
/* Loop-Item: Elementor rendert das Item als Container — Karten-Regeln
   greifen über die Klasse am Item-Container. Meta-Container in Row.
   v1.32: Heading-, Shortcode- und Text-Widgets im Meta alle auf eine
   Zeile mit gleicher Höhe — Elementor-Widgets sind 100 % breit und
   .elementor-heading-title hat line-height 1. */
.e-con.hf-bcard__meta{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--hf-s-12);line-height:1.3}
.hf-bcard__meta > .elementor-widget{width:auto;max-width:none;margin:0;display:inline-flex;align-items:center}
.hf-bcard__meta .elementor-widget-container,
.hf-bcard__meta .elementor-shortcode{display:inline-flex;align-items:center}
.hf-bcard__meta .elementor-heading-title{font:inherit;color:inherit;margin:0;line-height:inherit}
.hf-bcard__meta .hf-bcard__cat a{color:inherit;text-decoration:none}
.hf-bcard__meta .hf-bcard__cat a:hover{text-decoration:underline;text-underline-offset:3px}
.hf-bcard__meta > * + *::before{content:"·";margin-right:var(--hf-s-12);opacity:.6}
/* Auszug: Elementor rendert den Text im <p> — Clamp + Zeilenhöhe dort */
.hf-bcard .hf-bcard__excerpt .elementor-heading-title{
    font-size:1rem;line-height:1.55;color:var(--hf-ink-muted);margin:0;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.hf-bcard .hf-bcard__excerpt{display:block;-webkit-line-clamp:unset;overflow:visible}
/* Elementor Taxonomy-Filter als Chips (nur auf der Elternwissen-Seite;
   Kategorie-Template nutzt Link-Chips). Buttons = Kit-Button-Reset. */
.hf-chips--filter .e-filter{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--hf-s-12);overflow:visible}
.hf-chips--filter .e-filter-item{
    all:unset;box-sizing:border-box;cursor:pointer;
    display:inline-flex;align-items:center;gap:10px;
    background:var(--hf-creme);color:var(--hf-emerald);
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;
    padding:9px 18px;border-radius:999px;border:1px solid var(--hf-line);
    transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease;
}
/* Hover: Widget-CSS setzt eigene :hover-Regeln über Custom Properties und
   lädt nach uns → (0,4,0) + die Variablen selbst belegen */
.hf-chips--filter .e-filter .e-filter-item:hover{
    --e-filter-item-color-hover:var(--hf-creme);
    --e-filter-item-background-hover:var(--hf-emerald);
    --e-filter-item-border-color-hover:var(--hf-emerald);
    background:var(--hf-emerald);color:var(--hf-creme);border-color:var(--hf-emerald);
    transform:translateY(-2px);box-shadow:var(--hf-shadow-soft);
}
.hf-chips--filter .e-filter .e-filter-item[aria-pressed="true"]{
    --e-filter-item-color-active:var(--hf-creme);
    --e-filter-item-background-active:var(--hf-emerald);
    --e-filter-item-border-color-active:var(--hf-emerald);
    background:var(--hf-emerald);color:var(--hf-creme);border-color:var(--hf-emerald);transform:none;box-shadow:none;
}
.hf-chips--filter .e-filter-item[data-filter="__all"]{order:-1}
.hf-chips--filter .e-filter-item:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
.hf-bg-white .hf-chips--filter .e-filter-item{border-color:transparent}
.hf-bcard > .hf-bcard__body{flex:1 1 auto} /* (0,2,0) gegen .e-con.e-child */
.hf-bcard__body > .hf-txtlink{margin-top:auto}
.hf-bcard .hf-bcard__media{margin:0} /* Widget-Margin raus */

/* ============ 16 · Beitragsinhalt (v1.31) ============
   .hf-post ans Post-Content-Widget (Single-Template) — trägt die Lese-
   Typografie des Gutenberg-Inhalts. Block-Stile aus hf-core (is-style-
   hf-*) und der Rank-Math-TOC-Block werden hier gezeichnet. Im Block-
   Editor lädt hf-core dieses CSS mit, daher greifen die Stil-Regeln
   auch ohne .hf-post-Wrapper. */
/* v1.35: Elementor rendert den Inhalt in .elementor-widget-container — Breite
   und Kind-Regeln müssen dort greifen (Wrapper hat max-width:100% mit 0,2,0).
   Referenz-HTML nutzt .hf-post direkt; beide Fälle abgedeckt. */
/* Lesebreite: Container .hf-read um das Post-Content-Widget (Elementor gibt
   dem Widget selbst max-width:100% mit 0,2,0). Blöcke liegen bei Optimized
   Markup direkt im Widget, sonst in .elementor-widget-container. */
.hf-read,
.e-con.hf-read,
article.hf-post{max-width:var(--hf-read);margin-inline:auto}
.hf-read > article.hf-post{max-width:none;margin-inline:0;margin-top:var(--hf-s-24);width:100%}
/* v1.67: Rechtliche Seiten (Template page-rechtliches.php) — lange Titel wie
   „Allgemeine Geschäftsbedingungen (AGB) und Verbraucherinformationen" brechen
   mit Silbentrennung statt vierzeilig. Nur hier, nicht systemweit. */
.hf-legal-page :is(h1,h2){hyphens:auto;-webkit-hyphens:auto;overflow-wrap:anywhere;text-wrap:balance}
@media(max-width:767px){.hf-legal-page .hf-h1-sm{font-size:clamp(1.8rem,7vw,2.2rem) !important}} /* v1.66: liegt der Artikel schon im .hf-read, nicht noch einmal zentrieren (Versatz zum Kopf) */
/* Basis-Abstand: exakt (0,1,1) — schlägt Kit-p (0,1,1, lädt früher), verliert
   gegen .hf-post h2/h3 (gleiche Spezifität, stehen weiter unten) */
.hf-post > :is(p,ul,ol,figure,blockquote,div,details,hr,table,pre,h2,h3,h4),
.hf-post > :where(.elementor-widget-container) > :is(p,ul,ol,figure,blockquote,div,details,hr,table,pre,h2,h3,h4){margin-block:0 var(--hf-s-24)}
/* Zwischentitel: viel Luft davor, wenig danach — die Überschrift gehört zum
   Text, der ihr folgt (v1.36: oben 80/48, unten 16/12) */
.hf-post h2{font-size:var(--hf-h2-sm);line-height:1.15;margin-top:calc(var(--hf-s-64) + var(--hf-s-16));margin-bottom:var(--hf-s-16);text-wrap:balance}
.hf-post h3{font-size:1.35rem;font-weight:700;line-height:1.25;margin-top:var(--hf-s-48);margin-bottom:var(--hf-s-12);text-wrap:balance}
.hf-post h4{font-size:1.1rem;font-weight:700;line-height:1.3;margin-top:var(--hf-s-32);margin-bottom:8px} /* v1.68: rechtliche Seiten (Datenschutz) */
.hf-post h5{font-size:1rem;font-weight:700;line-height:1.4;margin-top:var(--hf-s-24);margin-bottom:8px}
.hf-post h2 + h3,.hf-post h3 + h4,.hf-post h4 + h5{margin-top:0}
.hf-post > :is(h2,h3):first-child,
.hf-post > .elementor-widget-container > :is(h2,h3):first-child{margin-top:0}
.hf-post p,.hf-post li{font-size:clamp(1rem,.9rem + .35vw,1.0625rem);line-height:1.65}
.hf-post p{text-wrap:pretty}
.hf-post a{color:var(--hf-emerald);text-decoration:underline;text-underline-offset:4px;font-weight:600}
.hf-post strong{font-weight:700;color:var(--hf-ink)}
.hf-post :is(ul,ol){padding-left:1.4em}
.hf-post li{margin-bottom:8px}
.hf-post :is(img,figure){max-width:100%;height:auto;border-radius:var(--hf-r-m)}
.hf-post figcaption{font-size:.875rem;color:var(--hf-ink-muted);margin-top:8px}
.hf-post hr{border:0;border-top:1px solid var(--hf-line);margin-block:var(--hf-s-40)}
/* v1.89 · Standard-Zitat (core/quote ohne Stil) — Linie Emerald, Display-Schrift.
   „Hervorhebung" (is-style-hf-pull, Coral-Karte) bleibt der laute Stil. */
.hf-post blockquote:not(.is-style-hf-pull){margin:var(--hf-s-32) 0;padding:0 0 0 var(--hf-s-24);border-left:2px solid var(--hf-emerald);background:none}
.hf-post blockquote:not(.is-style-hf-pull) p{font-family:var(--hf-font-display);font-weight:500;font-size:clamp(1.0625rem,1rem + .2vw,1.125rem);line-height:1.55;letter-spacing:-.005em;color:var(--hf-ink);margin:0} /* v1.90: leiser — 500 statt 600, max. 18 px, 2px-Linie */
.hf-post blockquote:not(.is-style-hf-pull) p + p{margin-top:var(--hf-s-12)}
/* v1.91: Linie endet am Text statt am Zeilenkasten — halben Zeilenabstand oben/unten
   abziehen (Fallback), wo unterstützt exakt Ober- bis Unterlänge (text-box). */
.hf-post blockquote:not(.is-style-hf-pull) > :first-child{margin-top:calc(.5em - .5lh)}
.hf-post blockquote:not(.is-style-hf-pull) > :last-child{margin-bottom:calc(.5em - .5lh)}
@supports (text-box:trim-both text text){
    .hf-post blockquote:not(.is-style-hf-pull) > :first-child,
    .hf-post blockquote:not(.is-style-hf-pull) > :last-child{margin-block:0}
    .hf-post blockquote:not(.is-style-hf-pull){text-box:trim-both text text} /* v1.92: Ober- bis Unterlänge statt Versal bis Grundlinie */
}
.hf-post blockquote:not(.is-style-hf-pull) cite{display:block;margin-top:var(--hf-s-12);font-family:var(--hf-font-body);font-style:normal;font-size:.875rem;color:var(--hf-ink-muted)}

/* v1.74 · Gutenberg-Buttons im Beitrag (core/button) im System-Look.
   (0,2,0) schlägt .hf-post a (0,1,1) — Unterstreichung/Emerald fallen weg. */
.hf-post .wp-block-button__link{display:inline-flex;align-items:center;gap:10px;background:var(--hf-vermillion);color:var(--hf-white);font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;padding:15px 27px;border-radius:999px;text-decoration:none;box-shadow:0 8px 20px rgba(225,114,56,.32);transition:transform .18s ease,filter .18s ease}
.hf-post .wp-block-button__link:hover{color:var(--hf-white);filter:brightness(1.05);transform:translateY(-2px)}
.hf-post .is-style-outline .wp-block-button__link{background:transparent;color:var(--hf-emerald);border:2px solid var(--hf-emerald);box-shadow:none}
.hf-post .is-style-outline .wp-block-button__link:hover{background:var(--hf-emerald);color:var(--hf-creme)}
/* v1.74 · Deko-Bild — Block-Stil core/image „Deko" (is-style-hf-deco, hf-core 1.7.0)
   oder Klasse .hf-deco am Elementor-Image-Widget. Zentriert, max. 180px,
   ohne Radius/Schatten. Weißer Bildgrund verschwindet: multiply gegen den
   Figure-Grund (nicht gegen die Seite — so klappt es auch in isolierten
   Stacking-Contexts wie .hf-sec > *). Grund folgt der Fläche via --hf-deco-bg. */
.is-style-hf-deco,.hf-deco{--hf-deco-bg:var(--hf-creme);background:var(--hf-deco-bg);text-align:center}
.hf-bg-white :is(.is-style-hf-deco,.hf-deco){--hf-deco-bg:var(--hf-white)}
.hf-post .is-style-hf-deco img,.hf-deco img{display:inline-block;width:auto;max-width:min(100%,180px);height:auto;border-radius:0;box-shadow:none;mix-blend-mode:multiply}
.hf-post > .is-style-hf-deco,
.hf-post > .elementor-widget-container > .is-style-hf-deco{margin:var(--hf-s-64) auto var(--hf-s-12)}
.hf-post > .is-style-hf-deco + :is(h2,h3),
.hf-post > .elementor-widget-container > .is-style-hf-deco + :is(h2,h3){margin-top:0} /* (0,2,1) gegen .hf-post h2 — Bild gehört zur Überschrift */

/* Häkchen-Liste (Block-Stil core/list) */
.is-style-hf-check{list-style:none;padding-left:0}
.is-style-hf-check > li{position:relative;padding-left:34px}
.is-style-hf-check > li::before{
    content:"";position:absolute;left:0;top:.2em;width:22px;height:22px;border-radius:50%;
    background:var(--hf-emerald);
}
.is-style-hf-check > li::after{
    content:"";position:absolute;left:7px;top:calc(.2em + 5px);width:6px;height:10px;
    border:2.5px solid var(--hf-creme);border-top:0;border-left:0;transform:rotate(45deg);
}

/* FAQ-Akkordeon (Block-Stil core/details) — Look von Block 14, ohne Exklusiv-JS */
.is-style-hf-faq{border-top:1px solid var(--hf-line);border-bottom:1px solid var(--hf-line);margin-block:0}
.is-style-hf-faq + .is-style-hf-faq{border-top:0}
.is-style-hf-faq > summary{
    display:flex;justify-content:space-between;align-items:center;gap:var(--hf-s-16);
    padding:18px 4px;cursor:pointer;list-style:none;
    font-family:var(--hf-font-display);font-weight:700;font-size:clamp(1rem,.9rem + .5vw,1.2rem);line-height:1.3;color:var(--hf-ink);
}
.is-style-hf-faq > summary::-webkit-details-marker{display:none}
.is-style-hf-faq > summary::after{
    content:"";flex:0 0 auto;width:22px;height:22px;background:var(--hf-emerald);
    -webkit-mask:var(--hf-svg-chevron) center/contain no-repeat;mask:var(--hf-svg-chevron) center/contain no-repeat;
    transition:transform .26s cubic-bezier(.4,0,.2,1);
}
.is-style-hf-faq[open] > summary::after{transform:rotate(180deg)}
.is-style-hf-faq > :not(summary){padding:0 4px 20px;margin:0;color:var(--hf-ink-muted)}
.is-style-hf-faq > :not(summary):last-child{padding-bottom:20px}

/* Core-Akkordeon (WP 6.9, core/accordion) — Look von Block 14. Der Toggle
   ist ein <button>, den das Site Kit als Vermillion-Pille stylt (Kit-Regel
   trifft jedes nackte button) → (0,2,0)-Reset. Exklusiv-Öffnen macht der
   Block selbst (autoclose). Hidden until-found: Browser-Suche findet Text
   in zugeklappten Antworten. */
.wp-block-accordion{border-top:1px solid var(--hf-line);margin-block:var(--hf-s-24) var(--hf-s-40)}
.wp-block-accordion-item{border-bottom:1px solid var(--hf-line);margin:0}
.wp-block-accordion .wp-block-accordion-heading{margin:0;font-size:inherit}
.hf-post .wp-block-accordion-heading{margin-top:0}
.wp-block-accordion .wp-block-accordion-heading__toggle{
    all:unset;box-sizing:border-box;
    display:flex;width:100%;justify-content:space-between;align-items:center;gap:var(--hf-s-16);
    padding:18px 4px;cursor:pointer;text-align:left;
    font-family:var(--hf-font-display);font-weight:700;
    font-size:clamp(1rem,.9rem + .5vw,1.2rem);line-height:1.3;color:var(--hf-ink);
}
.wp-block-accordion .wp-block-accordion-heading__toggle:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:-3px;border-radius:4px}
.wp-block-accordion .wp-block-accordion-heading__toggle:hover{text-decoration:none} /* Block-CSS unterstreicht bei Hover */
.wp-block-accordion .wp-block-accordion-heading__toggle:hover .wp-block-accordion-heading__toggle-title{color:var(--hf-emerald);text-decoration:none}
/* Icon: das „+" des Blocks ausblenden, Chevron-Maske drüber */
.wp-block-accordion .wp-block-accordion-heading__toggle-icon{
    font-size:0;flex:0 0 auto;width:22px;height:22px;
    background:var(--hf-emerald);
    -webkit-mask:var(--hf-svg-chevron) center/contain no-repeat;mask:var(--hf-svg-chevron) center/contain no-repeat;
    transition:transform .26s cubic-bezier(.4,0,.2,1);
}
/* (0,4,0): der Block dreht sein +-Icon bei is-open selbst um 45° (0,3,0) */
.wp-block-accordion .wp-block-accordion-item.is-open .wp-block-accordion-heading__toggle .wp-block-accordion-heading__toggle-icon{transform:rotate(180deg)}
/* is-layout-flow gibt dem Panel als zweitem Kind einen Margin-Top → raus.
   Kein vertikales Padding am Panel: der Abstand sitzt am letzten Kind, damit
   er Teil der animierten Höhe ist (sonst Ruck beim Auf-/Zuklappen). */
.wp-block-accordion .wp-block-accordion-panel{padding:0 4px;margin:0}
.wp-block-accordion .wp-block-accordion-panel > :last-child{padding-bottom:20px}
.wp-block-accordion .wp-block-accordion-panel > *{margin:0;color:var(--hf-ink-muted)}
.wp-block-accordion .wp-block-accordion-panel > * + *{margin-top:var(--hf-s-12)}
@media(prefers-reduced-motion:reduce){.wp-block-accordion .wp-block-accordion-heading__toggle-icon{transition:none}}

/* Hervorhebung (Block-Stil core/quote) — Zitat als Kartenmoment */
.is-style-hf-pull{
    border:0;padding:var(--hf-s-24) var(--hf-s-32);margin:var(--hf-s-40) 0;
    background:var(--hf-coral);color:var(--hf-ink);border-radius:var(--hf-r-m);
}
.is-style-hf-pull p{font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1.35;margin:0}
.is-style-hf-pull cite{display:block;margin-top:var(--hf-s-12);font-style:normal;font-size:.875rem;color:rgba(12,31,24,.75)}

/* Rank-Math-Inhaltsverzeichnis */
.wp-block-rank-math-toc-block{
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);
    padding:var(--hf-s-24);margin-block:var(--hf-s-32) var(--hf-s-40);
}
.wp-block-rank-math-toc-block > h2,
.wp-block-rank-math-toc-block > h3,
.wp-block-rank-math-toc-block > h4{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--hf-emerald);margin:0 0 var(--hf-s-12);font-family:var(--hf-font-body)}
.wp-block-rank-math-toc-block :is(ul,ol){list-style:none;padding:0;margin:0;counter-reset:hf-toc}
.wp-block-rank-math-toc-block li{margin:0;padding:0;counter-increment:hf-toc;font-size:1rem;line-height:1.45}
.wp-block-rank-math-toc-block li + li{margin-top:8px}
.wp-block-rank-math-toc-block li::before{content:counter(hf-toc) ".";display:inline-block;min-width:1.8em;font-family:var(--hf-font-display);font-weight:700;color:var(--hf-emerald)}
.wp-block-rank-math-toc-block li li{counter-increment:none;padding-left:1.8em;font-size:.95rem}
.wp-block-rank-math-toc-block li li::before{content:"–";color:var(--hf-ink-muted)}
/* v1.75: :not([class]) hebt auf (0,2,1) — sonst gewann die Fließtext-Link-Regel aus v1.60
   (.hf-post a:not([class]), gleiche Spezifität, steht weiter oben → Reihenfolge entscheidet) */
.wp-block-rank-math-toc-block a,
.wp-block-rank-math-toc-block a:not([class]){color:var(--hf-ink);text-decoration:none;font-weight:600}
.wp-block-rank-math-toc-block a:hover,
.wp-block-rank-math-toc-block a:not([class]):hover{color:var(--hf-emerald);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}
/* ============ 17 · Beitrags-Template (v1.34) ============
   Kopf, Meta, Autorin-Box, verwandte Beiträge. Lesebreite = .hf-post (70ch);
   Kopf und Autorin-Box laufen im selben Raster (Container Max-Width 760). */

/* Kopf und Autorin-Box: Lesebreite zentriert — Elementor: Max-Width 640 am
   Container, das Zentrieren macht das System (0,2,0 gegen e-con-Margins) */
.e-con.hf-post-head,
.e-con.hf-author,
.e-con.hf-read{max-width:var(--hf-read);margin-inline:auto}
/* Kopf: Eyebrow = Kategorie (Link) · H1 in H2-Größe (Titel sind lang) · Meta */
/* H1 kleiner als der Seiten-H1: Beitragstitel sind lang, Lesebreite 720 —
   Desktop 40px, Mobile 28px (v1.36, vorher H2-Skala bis 46px) */
.hf-post-head h1,
.hf-post-head h1.elementor-heading-title{font-size:clamp(1.75rem,4.5vw,2.5rem);line-height:1.1;text-wrap:balance} /* (0,2,1) gegen Kit-h1 */
/* Beitragsbild vor dem Inhalt (Entscheid 03.09.): 16:9, Radius L, im Lesemaß */
.hf-post-img,
.hf-post-img img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:var(--hf-r-l);margin:0}
.e-con.hf-read > .hf-post-img{margin-bottom:var(--hf-s-40)}
.hf-post-head .hf-eyebrow a{color:inherit;text-decoration:none}
.hf-post-head .hf-eyebrow a:hover{text-decoration:underline;text-underline-offset:3px}

/* Meta-Zeile (auch außerhalb von Karten): Datum · Lesezeit */
.hf-meta,
.e-con.hf-meta{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--hf-s-12);line-height:1.3;
    font-size:.78rem;font-weight:700;letter-spacing:.06em;color:var(--hf-ink-muted)}
.hf-meta > .elementor-widget{width:auto;max-width:none;margin:0;display:inline-flex;align-items:center}
.hf-meta .elementor-widget-container,
.hf-meta .elementor-shortcode{display:inline-flex;align-items:center}
.hf-meta .elementor-heading-title{font:inherit;color:inherit;margin:0;line-height:inherit}
.hf-meta > * + *::before{content:"·";margin-right:var(--hf-s-12);opacity:.6}
/* v1.77: Meta-Zeile im zentrierten Stack (Kurse, Präsenzseminar) — (0,3,0) gegen Container-Justify */
.hf-center .hf-meta,
.hf-center .e-con.hf-meta{justify-content:center}

/* Autorin-Box: Creme-Karte, rundes Porträt, Name, zwei Sätze, Link */
.hf-author,
.e-con.hf-author{
    display:flex;flex-direction:row;align-items:flex-start;gap:var(--hf-s-24);
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);
    padding:var(--hf-s-24);margin-top:var(--hf-s-64);
}
.hf-author__img,
.hf-author__img img{flex:0 0 auto;width:72px;height:72px;border-radius:50%;object-fit:cover;margin:0}
.hf-author > .hf-author__img{width:72px;max-width:72px}
.hf-author > .hf-author__body{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:6px}
.hf-author__name,
.hf-author__name .elementor-heading-title{font-family:var(--hf-font-display);font-weight:700;font-size:1.05rem;color:var(--hf-ink);margin:0;line-height:1.3}
.hf-author__text,
.hf-author__text .elementor-heading-title{font-size:1rem;line-height:1.55;color:var(--hf-ink-muted);margin:0}
.hf-author .hf-txtlink{margin-top:4px;font-size:1rem;color:var(--hf-emerald);border-bottom:0;padding-bottom:0}
@media(max-width:767px){
    .hf-author,.e-con.hf-author{flex-direction:column;gap:var(--hf-s-16)}
}

/* Verwandte Beiträge: gleiches Loop-Item wie das Archiv, aber 3-spaltig —
   die --wide-Variante wird hier neutralisiert (Titel/16:9 gelten nur 2-spaltig) */
@media(min-width:1025px){
    .hf-loop--related .hf-bcard--wide .hf-bcard__media{aspect-ratio:3/2}
    .hf-loop--related .hf-bcard--wide .hf-bcard__body{padding:20px;padding-bottom:var(--hf-s-24);gap:10px}
    .hf-loop--related .hf-bcard--wide h3{font-size:1.08rem}
}
/* Schmale Karten: Meta zweizeilig — Kategorie allein oben, dann Datum · Lesezeit.
   Verhindert den Trenner am Zeilenanfang nach einem Umbruch. */
.hf-loop--related .hf-bcard__meta > .hf-bcard__cat{flex:0 0 100%}
.hf-loop--related .hf-bcard__meta > .hf-bcard__cat + *::before{content:none}
/* v1.57: Loop-Grid-Gaps auf System-Maß (Elementor-Default 30) · gemountet übernimmt Swiper (data-hf-gap) */
.hf-loop .elementor-grid{--grid-column-gap:var(--hf-s-24);--grid-row-gap:var(--hf-s-24)}
.hf-loop .elementor-grid.hf-track--js{grid-column-gap:0;grid-row-gap:0}
.hf-loop--related .e-con.hf-bcard__meta{row-gap:4px} /* v1.55: Kategorie-Zeile enger an Datum · Lesezeit */
.hf-loop--related .hf-bcard__meta{margin-bottom:6px} /* Meta → H3: Gap 10 + 6 */
/* v1.55: Loop als Spur auf ≤1024 — gleiche Mechanik wie .hf-track, ohne Dots (die kommen nur mit hf-swiper.js) */
@media(max-width:1024px){
    .hf-loop--related .elementor-loop-container:not(.hf-track--js){display:grid;grid-auto-flow:column;grid-auto-columns:84%;gap:var(--hf-s-16);overflow-x:auto;scroll-snap-type:x mandatory;padding-block:6px 14px;scrollbar-width:none}
    .hf-loop--related .elementor-loop-container:not(.hf-track--js)::-webkit-scrollbar{display:none}
    .hf-loop--related .elementor-loop-container:not(.hf-track--js) > *{scroll-snap-align:start}
}
@media(min-width:768px) and (max-width:1024px){.hf-loop--related .elementor-loop-container:not(.hf-track--js){grid-auto-columns:45%}}
/* Mit hf-swiper.js (.hf-loop.hf-swiper): Host bekommt .hf-track--js, die Spur oben tritt zurück, Dots aus Block 5. */
/* v1.56: Bleed für gemountete Spuren (Container-Track und Loop-Host) auf ≤1024 —
   Spur läuft bis an den Viewport-Rand, Slides starten am Gutter. Ersetzt das
   Custom-CSS vom Startseiten-Grid; v1.16 hatte den Bleed entfernt, jetzt bewusst zurück. */
@media(max-width:1024px){
    .hf-track--js.hf-track--js{
        margin-left:calc(-1 * var(--hf-pad-x));margin-right:calc(-1 * var(--hf-pad-x));
        width:calc(100% + 2 * var(--hf-pad-x));
        padding-left:var(--hf-pad-x);padding-right:var(--hf-pad-x)
    }
}

/* ============ 18 · Über mich (v1.37) ============ */
/* Häkchen-Liste im Elementor Text-Editor (gleicher Look wie Block-Stil is-style-hf-check) */
.hf-list-check ul,
ul.hf-list-check{list-style:none;padding-left:0;margin:0}
.hf-list-check li{position:relative;padding-left:34px;margin-bottom:10px;font-size:1rem;line-height:1.55}
.hf-list-check li::before{content:"";position:absolute;left:0;top:.2em;width:22px;height:22px;border-radius:50%;background:var(--hf-emerald)}
.hf-list-check li::after{content:"";position:absolute;left:7px;top:calc(.2em + 5px);width:6px;height:10px;border:2.5px solid var(--hf-creme);border-top:0;border-left:0;transform:rotate(45deg)}
.hf-list-check li strong{color:var(--hf-ink)}
/* v1.63: Häkchen-Liste im zentrierten Stack — Block zentriert, Zeilen linksbündig, Icons am Textanfang */
.hf-center .hf-list-check{text-align:left;width:fit-content;max-width:100%;margin-inline:auto}
.hf-center .elementor-widget.hf-list-check{width:fit-content;max-width:100%;margin-inline:auto}
.hf-center .elementor-widget.hf-list-check ul{text-align:left}
/* v1.47: Häkchen-Liste auf Emerald (Beratung S5) — Kreis Chartreuse, Haken Emerald */
.hf-bg-emerald .hf-list-check li::before{background:var(--hf-chartreuse)}
.hf-bg-emerald .hf-list-check li::after{border-color:var(--hf-emerald)}
.hf-bg-emerald .hf-list-check li strong{color:var(--hf-white)}

/* Presse-Zitat: Zitat-Karte ohne Sterne, Quelle als Label + Link.
   Elementor-Struktur (alle Heading-Widgets, Tag div):
   Container .hf-qcard.hf-qcard--press
     Heading .hf-qcard__q            → Zitat
     Container .hf-qcard__src
       Heading .hf-qcard__brand      → Quelle (Label)
       Heading .hf-qcard__detail     → Detail
       Heading .hf-qcard__link       → <a>Link</a>            */
.e-con.hf-qcard,
.e-con.hf-qcard--press{padding:var(--hf-s-24);gap:var(--hf-s-12)} /* (0,2,0) gegen e-con-Padding */
.hf-qcard.hf-qcard--press,
.e-con.hf-qcard--press{background:var(--hf-white);border:1px solid var(--hf-line)}
.hf-qcard--press .hf-stars{display:none}
.hf-qcard--press blockquote,
.hf-qcard .hf-qcard__q .elementor-heading-title{font-family:var(--hf-font-display);font-weight:600;font-size:1.1rem;line-height:1.4;color:var(--hf-ink);margin:0} /* (0,3,0) gegen Kit-Weight */
.hf-qcard__src,
.e-con.hf-qcard__src{display:flex;flex-direction:column;gap:4px;margin-top:auto;padding:0}
.hf-qcard__src strong,
.hf-qcard__brand .elementor-heading-title{font-family:var(--hf-font-body);font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--hf-emerald);margin:0}
.hf-qcard__src span,
.hf-qcard__detail .elementor-heading-title{font-size:.875rem;line-height:1.45;color:var(--hf-ink-muted);margin:0}
.hf-qcard__src a,
.hf-qcard__link .elementor-heading-title,
.hf-qcard__link .elementor-heading-title a{font-family:var(--hf-font-body);font-size:1rem;font-weight:600;line-height:1.4;color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px;margin:0}
.hf-qcard__link{margin-top:4px}
.hf-qcard__src > .elementor-widget{margin:0}

/* Statement: ein Zitat groß auf Emerald — der Farbmoment der Seite */
.hf-statement{max-width:900px;margin-inline:auto;text-align:center}
.hf-statement blockquote,
.hf-statement .elementor-heading-title{font-family:var(--hf-font-display);font-weight:800;font-size:clamp(1.5rem,4.5vw,2.6rem);line-height:1.15;color:var(--hf-white);margin:0;text-wrap:balance}
.hf-statement cite,
.hf-statement .hf-statement__src,
.hf-statement .hf-statement__src .elementor-heading-title{display:block;margin:0;font-family:var(--hf-font-body);font-weight:500;font-style:normal;font-size:1rem;line-height:1.4;color:var(--hf-creme-85)}
.hf-statement .hf-statement__src{margin-top:var(--hf-s-24)}
.hf-statement cite{margin-top:var(--hf-s-24)} /* v1.47: Referenz-Markup gleichauf mit __src */
/* v1.47: Statement nach anderem Inhalt in derselben Sektion (Beratung S5:
   Split + Zitat) — allein in der Sektion (Über mich) bleibt es bei 0. */
.hf-statement:not(:first-child){margin-top:var(--hf-s-64)}

/* ============ 19 · Shop (WooCommerce, v1.69) ============
   Woo-Markup ist kein Container-Markup — hier wird gezielt Woo-/Elementor-
   Widget-Markup ins System gezogen. Klassen sitzen am Elementor-Widget
   (Advanced → CSS-Klassen) oder am Container, nie Custom-CSS.
   Struktur Single-Product-Template (Theme Builder, alle Produkte):
     Section hf-sec · Boxed → Split hf-split hf-split--media-first
       Media  → Product Images  .hf-gallery
       Copy   hf-split__copy hf-copy
         Heading div .hf-eyebrow (dynamisch: Produktkategorie)
         Product Title (h1) .hf-h1-sm
         Product Rating .hf-rating
         Short Description .hf-lede
         Container .hf-price → Product Price + Germanized-Hinweise
         Add to Cart .hf-buy
         Container .hf-trust-row
     Section hf-sec hf-pt-0 → Container .hf-read → Product Content (hf-post-Typo)
     Section hf-sec hf-bg-white hf-faq-sec → [hf_faq cat="auto"]
     Section hf-sec → Product Data Tabs .hf-reviews (hf-core lässt nur den Rezensionen-Tab)
     Section hf-sec hf-bg-white → Loop Grid (Quelle Related) .hf-loop, Item .hf-pcard
   Elementors Woo-Widgets bringen eigene (0,2,0)/(0,2,1)-Regeln mit
   (.elementor-widget-woocommerce-* …) — Selektoren hier bewusst mit zwei
   Klassen + Element, damit sie gewinnen. */

/* --- Galerie: Product-Images-Widget. Hauptbild wie hf-cover, Thumbs klein --- */
.hf-gallery .woocommerce-product-gallery{position:relative;width:100%;max-width:none;margin:0}
.hf-gallery .woocommerce-product-gallery__wrapper{margin:0}
.hf-gallery .woocommerce-product-gallery__image img{display:block;width:100%;height:auto;border-radius:var(--hf-r-l);box-shadow:var(--hf-shadow)}
.hf-gallery .woocommerce-product-gallery__image a{display:block;border-radius:var(--hf-r-l)}
.hf-gallery .flex-control-thumbs{display:flex;flex-wrap:wrap;gap:var(--hf-s-12);margin:var(--hf-s-16) 0 0;padding:0;list-style:none}
.hf-gallery .flex-control-thumbs li{width:72px;margin:0;float:none}
.hf-gallery .flex-control-thumbs li img{display:block;width:100%;height:72px;object-fit:cover;border-radius:var(--hf-r-s);border:2px solid transparent;opacity:.65;cursor:pointer;transition:opacity .18s ease,border-color .18s ease}
.hf-gallery .flex-control-thumbs li img:hover,
.hf-gallery .flex-control-thumbs li img.flex-active{opacity:1;border-color:var(--hf-emerald)}
/* Lupe (Trigger) im Chip-Look, Sale-Flash im Badge-Look (Vermillion) */
.hf-gallery a.woocommerce-product-gallery__trigger{top:var(--hf-s-16);right:var(--hf-s-16);width:44px;height:44px;border-radius:999px;background:var(--hf-white);box-shadow:var(--hf-shadow-soft);z-index:3}
.hf-gallery .onsale,
.hf-gallery span.onsale{
    position:absolute;top:var(--hf-s-16);left:var(--hf-s-16);z-index:3;
    display:inline-block;min-width:0;min-height:0;line-height:1.3;
    background:var(--hf-vermillion);color:var(--hf-white);
    font-family:var(--hf-font-body);font-size:.7rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    padding:6px 14px;border-radius:999px;margin:0;
}
/* Freisteller/Mockups: --plain wie bei hf-cover (v1.64) */
.hf-gallery--plain .woocommerce-product-gallery__image img{border-radius:0;box-shadow:none;filter:drop-shadow(0 18px 30px rgba(12,31,24,.18))}

/* --- Bewertung: Product-Rating-Widget --- */
.hf-rating .woocommerce-product-rating{display:flex;align-items:center;gap:var(--hf-s-12);margin:0;line-height:1}
.hf-rating .star-rating,
.hf-rating .star-rating::before,
.hf-rating .star-rating span::before{color:var(--hf-vermillion)}
.hf-rating .star-rating{float:none;margin:0;font-size:1rem}
.hf-rating a.woocommerce-review-link{font-size:1rem;font-weight:600;color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px}
.hf-copy > .elementor-widget.hf-rating{width:auto;max-width:none;margin:0}

/* --- Preis-Block: Container .hf-price → Product Price + Germanized-Hinweise ---
   Preis auf Display-Skala; Streichpreis muted; Hinweise (MwSt., Versand,
   Lieferzeit) auf der Legal-Skala .875 — Rechtstext ist Lesetext (v1.20). */
.hf-price,
.e-con.hf-price{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0;margin-top:var(--hf-s-12)}
.hf-price > .elementor-widget{width:auto;max-width:none;margin:0}
.hf-price .price,
.hf-price p.price{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--hf-s-12);
    font-family:var(--hf-font-display);font-weight:700;font-size:clamp(1.6rem,4vw,2.1rem);line-height:1.1;
    color:var(--hf-ink);margin:0;
}
.hf-price .price del{font-family:var(--hf-font-body);font-weight:500;font-size:1.05rem;color:var(--hf-ink-muted);text-decoration:line-through;opacity:1}
.hf-price .price ins{text-decoration:none;font-weight:inherit;background:none}
.hf-price .price .woocommerce-Price-currencySymbol{font-weight:inherit}
/* Germanized hängt Hinweise in den Preis-HTML (.wc-gzd-additional-info) —
   im Preisblock raus, als eigene Widgets darunter. */
.hf-price .price .wc-gzd-additional-info,
.hf-price .price .price-unit{display:none}
.hf-price .wc-gzd-additional-info,
.hf-price .wc-gzd-additional-info p,
.hf-price p.wc-gzd-additional-info,
.hf-price .hf-price__note,
.hf-price .hf-price__note .elementor-heading-title{font-family:var(--hf-font-body);font-size:.875rem;line-height:1.5;font-weight:400;color:var(--hf-ink-muted);margin:0}
.hf-price .wc-gzd-additional-info a,
.hf-price .hf-price__note a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.hf-price .wc-gzd-additional-info:first-of-type{margin-top:4px}

/* --- Kaufbox: Add-to-Cart-Widget (.hf-buy) ---
   form.cart: einfache Produkte = Menge + Button · variable Produkte =
   table.variations (Select) → .single_variation_wrap (Preis, Verfügbarkeit,
   Menge + Button). Alles in einer Spalte, Abstände aus dem Gap. */
.hf-buy form.cart,
.hf-buy form.cart.variations_form{display:flex;flex-direction:column;gap:var(--hf-s-16);margin:var(--hf-s-12) 0 0;width:100%}
.hf-copy > .elementor-widget.hf-buy{width:100%;max-width:none;margin:0}
/* Trust-Zeile im Copy-Stack (Produktseite): linksbündig, volle Breite, Labelgröße */
.hf-copy > .elementor-widget:has(.hf-trust-row){width:100%;max-width:none;margin:0} /* v2.16 [hf_trust] */
.hf-copy > .hf-trust-row,
.hf-copy > .e-con.hf-trust-row,
.hf-copy > .elementor-widget .hf-trust-row{justify-content:flex-start;text-align:left;width:100%;gap:var(--hf-s-12) var(--hf-s-24);margin-top:4px}
.hf-copy > .hf-trust-row p,
.hf-copy > .elementor-widget .hf-trust-row p,
.hf-copy > .hf-trust-row .elementor-heading-title{font-size:.875rem;text-align:left;max-width:none}
/* Varianten-Tabelle → Stack */
.hf-buy table.variations,
.hf-buy table.variations tbody,
.hf-buy table.variations tr,
.hf-buy table.variations th,
.hf-buy table.variations td{display:block;width:100%;border:0;padding:0;margin:0;background:none}
.hf-buy table.variations{margin:0}
.hf-buy table.variations tr + tr{margin-top:var(--hf-s-12)}
.hf-buy table.variations th.label,
.hf-buy table.variations th.label label{
    font-family:var(--hf-font-body);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
    color:var(--hf-emerald);line-height:1.3;margin:0 0 8px;text-align:left; /* v1.95: th zentriert per Browser-Default */
}
.hf-buy table.variations td.value{position:relative}
.hf-buy .variations select,
.hf-buy select{
    all:unset;box-sizing:border-box;display:block;width:100%;
    font-family:var(--hf-font-body);font-size:1rem;line-height:1.3;color:var(--hf-ink);
    padding:15px 48px 15px 20px;border-radius:var(--hf-r-m);
    border:1.5px solid rgba(12,31,24,.7);background:var(--hf-white);
    background-image:var(--hf-svg-chevron);background-repeat:no-repeat;background-position:right 16px center;background-size:18px;
    cursor:pointer;appearance:none;-webkit-appearance:none;
}
.hf-buy select:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
.hf-buy .reset_variations{display:inline-block;margin-top:8px;font-size:.875rem;font-weight:600;color:var(--hf-ink-muted);text-decoration:underline;text-underline-offset:3px}
/* Gewählte Variante: Preis in der Preis-Skala, Hinweise als Legal, Verfügbarkeit */
.hf-buy .single_variation_wrap{display:flex;flex-direction:column;gap:var(--hf-s-16)}
.hf-buy .woocommerce-variation{display:flex;flex-direction:column;gap:4px}
.hf-buy .woocommerce-variation-price .price{font-family:var(--hf-font-display);font-weight:700;font-size:clamp(1.4rem,3.5vw,1.8rem);line-height:1.1;color:var(--hf-ink);margin:0}
.hf-buy .woocommerce-variation-price .price del{font-family:var(--hf-font-body);font-weight:500;font-size:1rem;color:var(--hf-ink-muted)}
.hf-buy .woocommerce-variation-price .price ins{text-decoration:none;background:none}
.hf-buy .woocommerce-variation-price .price .wc-gzd-additional-info{display:block;font-family:var(--hf-font-body);font-size:.875rem;font-weight:400;line-height:1.5;color:var(--hf-ink-muted);margin-top:4px}
.hf-buy .woocommerce-variation-description p,
.hf-buy .woocommerce-variation-availability p,
.hf-buy p.stock{font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted);margin:0}
.hf-buy p.stock.in-stock{color:var(--hf-emerald);font-weight:600}
.hf-buy p.stock.out-of-stock{color:var(--hf-vermillion);font-weight:600}
/* Menge + Button in einer Zeile (Elementor-Holder oder Woo-Default) */
.hf-buy .e-atc-qty-button-holder,
.hf-buy .woocommerce-variation-add-to-cart{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hf-s-12)}
.hf-buy .quantity{display:inline-flex;margin:0}
.hf-buy .quantity input.qty,
.hf-buy input.qty{
    all:unset;box-sizing:border-box;width:76px;height:52px;text-align:center;
    font-family:var(--hf-font-body);font-size:1rem;font-weight:600;color:var(--hf-ink);
    border:1.5px solid rgba(12,31,24,.7);border-radius:999px;background:var(--hf-white);
    -moz-appearance:textfield;
}
.hf-buy input.qty::-webkit-outer-spin-button,
.hf-buy input.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.hf-buy input.qty:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
/* Kaufen-Button: Kit-Button-Regel trifft jedes <button> → all:unset, dann hf-btn--primary */
.hf-buy form.cart button.single_add_to_cart_button,
.hf-buy button.single_add_to_cart_button{
    all:unset;box-sizing:border-box;cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;gap:10px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;
    padding:15px 27px;border-radius:999px;white-space:nowrap;
    background:var(--hf-vermillion);color:var(--hf-white);
    box-shadow:0 8px 20px rgba(225,114,56,.32);
    transition:transform .18s ease,filter .18s ease,box-shadow .18s ease;
}
.hf-buy button.single_add_to_cart_button:hover{transform:translateY(-2px);filter:brightness(1.05)}
.hf-buy button.single_add_to_cart_button:active{transform:translateY(0)}
.hf-buy button.single_add_to_cart_button:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}
.hf-buy button.single_add_to_cart_button.disabled,
.hf-buy button.single_add_to_cart_button:disabled,
.hf-buy form.cart button.single_add_to_cart_button.disabled,
.hf-buy form.cart button.single_add_to_cart_button:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none} /* v1.95: (0,4,2) — das all:unset der Basisregel (0,3,2) hatte die Deckkraft zurückgesetzt */
/* Germanized-Hinweise, die Woo unter den Button hängt (Lieferzeit, Einheit) */
.hf-buy .wc-gzd-additional-info{font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted);margin:0}
/* Woo-Standardmeldungen (added-to-cart) im Kontext ausblenden — Kasse kommt aus CartFlows */
.hf-buy a.added_to_cart{display:none}
.hf-buy .e-atc-qty-button-holder,
.hf-buy .woocommerce-variation-add-to-cart{flex-wrap:nowrap}
.hf-buy .quantity{flex:0 0 auto}
.hf-buy button.single_add_to_cart_button{flex:1 1 auto} /* Button füllt die Zeile neben der Menge (Mobile: Daumenbreite) */

/* --- Rezensionen: Product-Data-Tabs-Widget (.hf-reviews) ---
   hf-core 1.5.0 entfernt Beschreibung/Zusatzinfo aus den Woo-Tabs, es bleibt
   der Rezensionen-Tab. Ein Tab → Tab-Leiste weg, Titel als H2, jede
   Rezension als Karte (qcard-Look: weiß, Rand, Sterne Vermillion). */
.hf-reviews .wc-tabs-wrapper .wc-tabs,
.hf-reviews ul.tabs.wc-tabs{display:none}
.hf-reviews .woocommerce-tabs{margin:0}
.hf-reviews .woocommerce-Tabs-panel,
.hf-reviews .woocommerce-Tabs-panel--reviews{padding:0;margin:0;border:0;background:none}
.hf-reviews .woocommerce-Reviews-title{
    font-family:var(--hf-font-display);font-weight:700;font-size:var(--hf-h2-sm);line-height:1.15;
    color:var(--hf-ink);margin:0 0 var(--hf-s-24);text-wrap:balance;
}
.hf-reviews .woocommerce-Reviews-title span{font-weight:inherit}
.hf-reviews ol.commentlist{list-style:none;margin:0;padding:0;display:grid;gap:var(--hf-s-16)}
@media(min-width:768px){.hf-reviews ol.commentlist{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1025px){.hf-reviews ol.commentlist{grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--hf-s-24)}}
.hf-reviews ol.commentlist li,.hf-reviews .comment-text{min-width:0}
.hf-reviews .comment-text .description{overflow-wrap:anywhere} /* v2.26 */
.hf-reviews ol.commentlist li{margin:0;padding:0}
.hf-reviews .comment_container{
    display:flex;flex-direction:column;gap:var(--hf-s-12);height:100%;
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:var(--hf-s-24);
}
.hf-reviews .comment_container img.avatar{display:none} /* Gravatar = externer Request (DSGVO) — zusätzlich WP → Diskussion → Avatare aus */
.hf-reviews .comment-text{display:flex;flex-direction:column;gap:var(--hf-s-12);margin:0;padding:0;border:0;flex:1}
.hf-reviews .comment-text .star-rating{float:none;margin:0;font-size:1rem;color:var(--hf-vermillion)}
.hf-reviews .comment-text .star-rating::before,
.hf-reviews .comment-text .star-rating span::before{color:var(--hf-vermillion)}
.hf-reviews .comment-text .description p{font-family:var(--hf-font-display);font-weight:600;font-size:1.05rem;line-height:1.4;color:var(--hf-ink);margin:0}
.hf-reviews .comment-text .description p + p{margin-top:var(--hf-s-12)}
.hf-reviews .comment-text .meta{order:3;margin-top:auto;font-size:.85rem;color:var(--hf-ink-muted);font-style:normal}
.hf-reviews .comment-text .meta strong{color:var(--hf-ink);font-weight:700}
.hf-reviews .comment-text .meta .verified{font-size:.78rem;font-weight:700;color:var(--hf-emerald);font-style:normal}
/* v1.95: Reihenfolge in der Karte (Woo-Hooks: rating → review_meta [Meta 10, hf-Herkunft 20]
   → comment_text → after_comment_text [Screenshot]). Ziel: Sterne · Text · Screenshot ·
   Name/Siegel (dockt unten an) · Herkunft. */
.hf-reviews .comment-text .description{order:1}
.hf-reviews .comment-text .hf-review-img{order:2;align-self:flex-start;margin-top:0}
.hf-reviews .comment-text .hf-review-src{order:4;margin:0}
.hf-reviews .comment-text .meta{margin-bottom:0}
/* v1.99: Hinweis § 5b steht seit hf-core 1.17.0 im Markup vor dem Formular (#review_form) —
   der v1.95-Umbau (Panel als Flex, #reviews mit display:contents) ist raus: ohne Box war
   #reviews kein Sprungziel mehr (Sterne-Link, Pill „Bewertungen"). */
.hf-reviews #review_form > .hf-review-notice{margin:0 0 var(--hf-s-24)}
.hf-reviews .woocommerce-Reviews > .clear{display:none}
.hf-reviews .woocommerce-pagination{margin-top:var(--hf-s-24)}
/* Rezensions-Formular: Karte auf Creme, Felder wie Freebie-Input, Submit als Ghost-Button */
.hf-reviews #review_form_wrapper{margin-top:var(--hf-s-40)}
.hf-reviews #review_form .comment-respond{background:var(--hf-creme);border-radius:var(--hf-r-m);padding:var(--hf-s-24)}
.hf-reviews .comment-reply-title{display:block;font-family:var(--hf-font-display);font-weight:700;font-size:var(--hf-h3);color:var(--hf-ink);margin:0 0 var(--hf-s-16)}
.hf-reviews .comment-form{display:flex;flex-direction:column;gap:var(--hf-s-12)}
.hf-reviews .comment-form p{margin:0}
.hf-reviews .comment-form label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--hf-ink-muted);margin-bottom:6px}
.hf-reviews .comment-form input[type=text],
.hf-reviews .comment-form input[type=email],
.hf-reviews .comment-form textarea{
    all:unset;box-sizing:border-box;display:block;width:100%;
    font-family:var(--hf-font-body);font-size:1rem;line-height:1.4;color:var(--hf-ink);
    padding:14px 18px;border-radius:var(--hf-r-m);border:1.5px solid rgba(12,31,24,.7);background:var(--hf-white);
}
.hf-reviews .comment-form textarea{min-height:140px;resize:vertical}
.hf-reviews .comment-form :is(input,textarea):focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
.hf-reviews .comment-form-rating p.stars a{color:var(--hf-vermillion)}
.hf-reviews .comment-form-cookies-consent{display:flex;align-items:flex-start;gap:8px}
.hf-reviews .comment-form-cookies-consent label{text-transform:none;letter-spacing:0;font-size:.875rem;font-weight:400;color:var(--hf-ink-muted);margin:0}
.hf-reviews .comment-form .form-submit input[type=submit],
.hf-reviews .comment-form input#submit{
    all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;
    padding:13px 27px;border-radius:999px;border:2px solid var(--hf-emerald);color:var(--hf-emerald);background:transparent;
    transition:background .18s ease,color .18s ease,transform .18s ease;
}
.hf-reviews .comment-form input#submit:hover{background:var(--hf-emerald);color:var(--hf-creme);transform:translateY(-2px)}
.hf-reviews .woocommerce-noreviews,
.hf-reviews p.woocommerce-noreviews{font-size:1rem;color:var(--hf-ink-muted);margin:0}

/* --- Loop-Item Produkt (Shop, Related): Container .hf-pcard (Block 9) +
   Product-Price-Widget .hf-pcard__price im __body. Germanized-Hinweise in
   der Karte raus (stehen auf der Produktseite). --- */
.hf-pcard .hf-pcard__price .price,
.hf-pcard .hf-pcard__price p.price{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.05rem;line-height:1.3;color:var(--hf-ink);margin:0;
}
.hf-pcard .hf-pcard__price .price del{font-family:var(--hf-font-body);font-weight:500;font-size:.875rem;color:var(--hf-ink-muted)}
.hf-pcard .hf-pcard__price .price ins{text-decoration:none;background:none}
.hf-pcard .hf-pcard__price .wc-gzd-additional-info,
.hf-pcard .hf-pcard__price .price-unit{display:none}
/* v1.71: Body wächst, Preis + Link docken unten an. Ohne Preis dockt der Link allein. */
.hf-pcard > .hf-pcard__body,
.e-con.hf-pcard > .e-con.hf-pcard__body{flex:1 1 auto} /* (0,4,0) gegen .e-con.e-child flex-grow:0 */
.hf-pcard,.e-con.hf-pcard{height:100%}
.hf-pcard__body > .hf-pcard__price,
.hf-pcard__body > .elementor-widget.hf-pcard__price{margin-top:auto;padding-top:var(--hf-s-12)}
.hf-pcard__body > .hf-txtlink,
.hf-pcard__body > .elementor-widget.hf-txtlink{margin-top:auto;padding-top:var(--hf-s-12)}
.hf-pcard__body > .hf-pcard__price + .hf-txtlink,
.hf-pcard__body > .elementor-widget.hf-pcard__price + .elementor-widget.hf-txtlink{margin-top:0} /* Preis trägt das auto, Link folgt mit 12 */
.hf-pcard__body > .elementor-widget.hf-txtlink{width:auto;max-width:none;align-self:flex-start} /* v1.70: kein Width-Setting im Widget (Regel 15) */
/* Loop-Item als Container-Link: Kit-a:hover färbt sonst H3/Preis */
a.hf-pcard:hover h3,a.hf-pcard:hover p,a.hf-pcard:hover .price{color:inherit}
a.hf-pcard{color:var(--hf-ink)}
.hf-pcard .hf-pcard__img img{aspect-ratio:1/1;object-fit:contain;width:100%} /* v2.65: Fläche 1:1, Bild ganz sichtbar (contain) – breite Packshots (3er-Pakete) wurden mit cover seitlich beschnitten. Voraussetzung: Woo-Thumbnail unzugeschnitten */

/* --- v1.94 · Angebote (hf-core 1.16.0) ---
   Badge nur bei befristeten Angeboten, Text „−39 %" bzw. „bis −20 %".
   Produktseite: Woo-Sale-Flash im Produktbilder-Widget (.hf-gallery, Position oben).
   Loop-Item: Shortcode-Widget [hf_sale_badge], Klasse hf-pcard__badge, direkt im
   Container .hf-pcard — liegt absolut oben links auf dem Bild; ohne Angebot leer.
   Woo bringt .woocommerce span.onsale (0,2,1) als Kreis mit → Selektoren (0,3,1). */
.hf-gallery span.onsale.hf-sale-badge{font-size:.8rem;letter-spacing:.02em;text-transform:none}
.hf-pcard,.e-con.hf-pcard{position:relative}
.hf-pcard > .hf-pcard__badge,
.hf-pcard > .elementor-widget.hf-pcard__badge{
    position:absolute;top:var(--hf-s-12);left:var(--hf-s-12);z-index:2;
    width:auto;max-width:none;margin:0;line-height:0;pointer-events:none;
}
.hf-pcard__badge span.onsale.hf-sale-badge{
    position:static;display:inline-block;min-width:0;min-height:0;margin:0;
    background:var(--hf-vermillion);color:var(--hf-white);
    font-family:var(--hf-font-body);font-size:.8rem;font-weight:700;letter-spacing:.02em;line-height:1.3;text-transform:none;
    padding:5px 12px;border-radius:999px;
}
/* 30-Tage-Tiefstpreis: steht im Preis-HTML (Flex-Zeile) → eigene Zeile, Legal-Skala */
.hf-price .price .hf-price-low,
.hf-pcard .hf-pcard__price .price .hf-price-low,
.hf-pbox__price .hf-price-low{
    flex-basis:100%;display:block;margin:0;
    font-family:var(--hf-font-body);font-size:.875rem;line-height:1.45;font-weight:400;color:var(--hf-ink-muted);
}
.hf-price-low .woocommerce-Price-amount,
.hf-price-low .woocommerce-Price-currencySymbol{font-weight:inherit}
a.hf-pcard:hover .price .hf-price-low{color:var(--hf-ink-muted)}

/* --- FAQ-Sektion mit [hf_faq cat="auto"]: leer → ganze Sektion weg ---
   hf-core 1.5.0 gibt bei leerer Kategorie <div class="hf-faq hf-faq--none" hidden> aus. */
.hf-faq-sec:has(.hf-faq--none){display:none}
.hf-faq--none{display:none}

/* ============ 20 · Lead-Formular [hf_lead] (v1.74) ============
   Markup aus hf-core.php Block 10 (1.7.0). Mini-Karte für Beiträge, Seiten,
   Text-Editor- und Shortcode-Widget. Felder im Freebie-Look, Button primär.
   .hf-lead > (.hf-lead__title, .hf-lead__text, .hf-lead__msg)
            > form.hf-lead__form > .hf-lead__fields (input, input, button)
                                 > p.hf-lead__legal */
.hf-lead{position:relative;max-width:560px;margin:var(--hf-s-32) auto;padding:var(--hf-s-24);background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);box-shadow:var(--hf-shadow-soft);text-align:left}
.hf-post > .hf-lead,
.hf-post > .elementor-widget-container > .hf-lead{margin:var(--hf-s-40) auto} /* (0,2,0) gegen den Basis-Abstand in .hf-post */
.hf-lead .hf-lead__title{font-family:var(--hf-font-display);font-weight:700;font-size:1.15rem;line-height:1.3;color:var(--hf-ink);margin:0 0 6px}
.hf-lead .hf-lead__text{font-size:1rem;line-height:1.55;color:var(--hf-ink-muted);margin:0 0 var(--hf-s-16)}
.hf-lead__form{margin:0}
.hf-lead__fields{display:flex;flex-wrap:wrap;gap:var(--hf-s-12)}
.hf-lead__fields input{flex:1 1 200px;min-width:0;box-sizing:border-box;font:inherit;font-size:1rem;line-height:1.3;padding:14px 20px;border-radius:999px;border:1.5px solid rgba(12,31,24,.7);background:var(--hf-white);color:var(--hf-ink);margin:0}
.hf-lead__fields input::placeholder{color:rgba(12,31,24,.5)}
/* (0,2,1): Kit stylt jedes nackte button — hier bewusst der Primär-Button */
.hf-lead button.hf-btn{flex:1 1 100%;justify-content:center;margin:0;border:0;border-radius:999px;padding:15px 27px;background:var(--hf-vermillion);color:var(--hf-white);font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;box-shadow:0 8px 20px rgba(225,114,56,.32);cursor:pointer}
.hf-lead button.hf-btn:hover{filter:brightness(1.05);transform:translateY(-2px)}
.hf-lead .hf-lead__legal{margin:var(--hf-s-12) 0 0;font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted)} /* (0,2,0) gegen .hf-post p */
.hf-lead .hf-lead__legal a{color:inherit;font-weight:400;text-decoration:underline;text-underline-offset:3px} /* (0,2,1) gegen .hf-post a */
.hf-lead .hf-lead__msg{margin:0;font-size:1rem;line-height:1.55;font-weight:600;color:var(--hf-emerald)}
.hf-lead .hf-lead__msg--error{margin-bottom:var(--hf-s-16);padding-left:12px;border-left:3px solid var(--hf-vermillion);color:var(--hf-ink)} /* Vermillion nur als Linie — als Textfarbe zu wenig Kontrast */
.hf-lead__hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.hf-lead .hf-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.hf-lead--missing{font-size:.875rem;color:var(--hf-vermillion);border-style:dashed}
@media(prefers-reduced-motion:reduce){.hf-lead button.hf-btn:hover{transform:none}}

/* ============ 21 · Produkt-Box [hf_product] (v1.76) ============
   Markup aus hf-core.php Block 11 (1.8.0). Weiße Karte im Lesemaß:
   Mobile gestapelt (Bild oben), ab Tablet Bild links / Text rechts.
   aside.hf-pbox > a.hf-pbox__media > img
                 > .hf-pbox__body > __eyebrow, __title, __text, __price, __legal, __cta */
.hf-pbox{display:grid;gap:var(--hf-s-24);margin:var(--hf-s-48) 0;padding:var(--hf-s-24);background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-l);box-shadow:var(--hf-shadow-soft)}
.hf-post > .hf-pbox,
.hf-post > .elementor-widget-container > .hf-pbox{margin:var(--hf-s-48) 0} /* (0,2,0) gegen den Basis-Abstand in .hf-post */
@media(min-width:768px){.hf-pbox{grid-template-columns:minmax(0,2fr) minmax(0,3fr);align-items:start;gap:var(--hf-s-32);padding:var(--hf-s-32)}} /* v1.93: start statt center */
.hf-pbox__media{display:block;border-radius:var(--hf-r-m);overflow:hidden}
.hf-post .hf-pbox__media img,
.hf-pbox__media img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain;object-position:center top;border-radius:0;box-shadow:none;margin:0} /* Produktfotos auf Weiß — kein Zuschnitt · v1.93: Querformat oben statt mittig */
.hf-pbox__body{display:flex;flex-direction:column;align-items:flex-start;gap:var(--hf-s-12);min-width:0}
.hf-pbox .hf-pbox__eyebrow{margin:0;font-family:var(--hf-font-body);font-weight:700;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--hf-emerald)}
.hf-pbox .hf-pbox__title{margin:0;font-family:var(--hf-font-display);font-weight:800;font-size:clamp(1.3rem,1.1rem + .8vw,1.6rem);line-height:1.2;color:var(--hf-ink);text-wrap:balance}
.hf-pbox .hf-pbox__text p{margin:0;font-size:1rem;line-height:1.6;color:var(--hf-ink-muted)} /* (0,2,1) gegen .hf-post p */
.hf-pbox .hf-pbox__text p + p{margin-top:var(--hf-s-12)}
.hf-pbox .hf-pbox__price{margin:var(--hf-s-12) 0 0;font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1.2;color:var(--hf-ink)}
.hf-pbox .hf-pbox__price del{opacity:.55;font-weight:400;margin-right:6px}
.hf-pbox .hf-pbox__price ins{text-decoration:none}
.hf-pbox .hf-pbox__legal{margin:-6px 0 0;font-size:.875rem;line-height:1.45;color:var(--hf-ink-muted)}
.hf-pbox .hf-pbox__legal a{color:inherit;font-weight:400;text-decoration:underline;text-underline-offset:3px}
.hf-pbox__cta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hf-s-16) var(--hf-s-24);margin-top:var(--hf-s-12)}
/* (0,2,1) gegen .hf-post a / .hf-post a:not([class]) — Buttons und Txtlink im System-Look */
.hf-pbox a.hf-btn{color:var(--hf-white);text-decoration:none;font-weight:700}
.hf-pbox a.hf-btn:hover{color:var(--hf-white)}
.hf-pbox a.hf-txtlink{color:var(--hf-emerald);text-decoration:none;font-weight:700}
.hf-pbox a.hf-pbox__media{text-decoration:none}
.hf-pbox--missing{display:block;font-size:.875rem;color:var(--hf-vermillion);border-style:dashed;box-shadow:none}


/* v2.25 · Produkt-Box in der Split-Spalte (Produktlinien-Seiten S3) — gestapelt statt 2:3,
   Paketfotos sind Querformat. (0,2,0) schlägt .hf-pbox im Tablet-Query. */
.hf-split__media .hf-pbox{grid-template-columns:1fr;gap:var(--hf-s-16);margin:0}
.hf-split__media .hf-pbox__media img{aspect-ratio:4/3;object-position:center}


/* ============ 22 · Widerrufsbutton (v1.79) ============
   Pflicht-Button „Vertrag widerrufen" (§ 356a BGB, seit 19.06.2026): gut lesbar,
   hervorgehoben, während der Widerrufsfrist ständig erreichbar. Deshalb keine
   graue Mini-Zeile, aber auch kein Vermillion-CTA: Kontur-Pille in Textfarbe.
   Klasse `hf-revoke` am Button-Widget (Elementor-Button) oder am Heading-Widget
   mit <a>; Widget-Farben/Typografie im Elementor-UI leer lassen. */
.elementor-widget.hf-revoke .elementor-button,
.hf-revoke .elementor-heading-title > a,
a.hf-revoke{
    display:inline-flex;align-items:center;gap:8px;
    font-family:var(--hf-font-body);font-weight:400;font-size:1rem;line-height:1.2; /* v1.84: wie Footer-Links */
    padding:7px 16px;border-radius:999px;min-height:36px;box-sizing:border-box; /* Tap-Ziel ≥ 24 px (WCAG 2.5.8) */
    background:transparent;color:var(--hf-ink);border:1px solid rgba(12,31,24,.4);
    box-shadow:none;text-decoration:none;transition:background .18s ease,color .18s ease,border-color .18s ease;
}
.elementor-widget.hf-revoke .elementor-button:hover,
.hf-revoke .elementor-heading-title > a:hover,
a.hf-revoke:hover{background:var(--hf-ink);color:var(--hf-creme);border-color:var(--hf-ink)}
/* Dunkle Flächen (Footer Emerald/Ink) */
.hf-bg-emerald .elementor-widget.hf-revoke .elementor-button,
.hf-bg-ink .elementor-widget.hf-revoke .elementor-button,
.hf-bg-emerald .hf-revoke .elementor-heading-title > a,
.hf-bg-ink .hf-revoke .elementor-heading-title > a,
.hf-bg-emerald a.hf-revoke,
.hf-bg-ink a.hf-revoke,
.hf-footer .elementor-widget.hf-revoke .elementor-button,
.hf-footer a.hf-revoke{color:var(--hf-creme-85);border-color:rgba(253,249,243,.45)}
.hf-bg-emerald .elementor-widget.hf-revoke .elementor-button:hover,
.hf-bg-ink .elementor-widget.hf-revoke .elementor-button:hover,
.hf-bg-emerald .hf-revoke .elementor-heading-title > a:hover,
.hf-bg-ink .hf-revoke .elementor-heading-title > a:hover,
.hf-bg-emerald a.hf-revoke:hover,
.hf-bg-ink a.hf-revoke:hover,
.hf-footer .elementor-widget.hf-revoke .elementor-button:hover,
.hf-footer a.hf-revoke:hover{background:var(--hf-creme);color:var(--hf-emerald);border-color:var(--hf-creme)}
.elementor-widget.hf-revoke .elementor-button .elementor-button-text{font:inherit;color:inherit}
/* v1.85: Elementor setzt .elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a
   {font-size:inherit;line-height:inherit} mit (0,3,1) — Button erbte 17 px vom Heading. (0,4,1) dagegen. */
.elementor-widget.hf-revoke .elementor-heading-title[class] > a{font-size:1rem;line-height:1.2}
/* v1.86: hängende Pille — Schrift fluchtet mit den Links darüber, Rand/Padding hängen
   links raus (Padding 16 + Rand 1). Kein Widget-Margin mehr nötig. */
.elementor-widget.hf-revoke,a.hf-revoke{margin-inline-start:-17px}
@media(prefers-reduced-motion:reduce){.elementor-widget.hf-revoke .elementor-button,a.hf-revoke{transition:none}}

/* ============ 23 · Bewertungen (v1.87, hf-core 1.10.0) ============
   WooCommerce-Bewertungen ohne CusRev. Label „Verifizierter Kauf" (Woo: .woocommerce-review__verified),
   darunter Herkunft + Link auf /echtheit-von-bewertungen/, Kurzhinweis per [hf_review_notice]. */
.woocommerce-review__verified{font-style:normal;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--hf-emerald)}
.hf-review-src,
.woocommerce .hf-review-src{margin:2px 0 8px;font-size:.875rem;line-height:1.45;color:var(--hf-ink-muted)}
.hf-review-src a,
.hf-review-notice a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.hf-review-src a:hover,
.hf-review-notice a:hover{color:var(--hf-emerald)}
.hf-review-img{display:inline-block;margin-top:var(--hf-s-12);border-radius:var(--hf-r-s);overflow:hidden;box-shadow:var(--hf-shadow-soft);line-height:0}
.hf-review-img img{display:block;width:120px;height:auto;border-radius:0;margin:0}
.hf-review-img:hover{box-shadow:var(--hf-shadow)}
.hf-review-notice{margin:var(--hf-s-24) 0 0;max-width:70ch;font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted)}

/* ============ 19.1 · Shop gegen woocommerce.css (v1.96) ============
   woocommerce.css trifft im Template über .woocommerce div.product … mit (0,3,2)
   bis (0,4,3) — Root des Single-Product-Templates und jedes Loop-Item tragen
   die Klasse „product". Die Systemwerte aus Block 19 hier mit (0,4,x). */

/* Preis Produktseite (Container .hf-price → Product-Price-Widget) */
.hf-price .elementor-widget.elementor-widget-woocommerce-product-price p.price{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--hf-s-12);
    font-family:var(--hf-font-display);font-weight:700;font-size:clamp(1.6rem,4vw,2.1rem);line-height:1.1;
    color:var(--hf-ink);margin:0;
}
.hf-price .elementor-widget.elementor-widget-woocommerce-product-price p.price del{font-family:var(--hf-font-body);font-weight:500;font-size:1.05rem;color:var(--hf-ink-muted);opacity:1}
.hf-price .elementor-widget.elementor-widget-woocommerce-product-price p.price ins{text-decoration:none;font-weight:inherit;background:none}
/* Preis Karte (Loop-Item) */
.hf-pcard .hf-pcard__price.elementor-widget p.price{
    display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.05rem;line-height:1.3;color:var(--hf-ink);margin:0;
}
.hf-pcard .hf-pcard__price.elementor-widget p.price del{font-family:var(--hf-font-body);font-weight:500;font-size:.875rem;color:var(--hf-ink-muted);opacity:1}
.hf-pcard .hf-pcard__price.elementor-widget p.price ins{text-decoration:none;font-weight:inherit;background:none}
/* Preis gewählte Variante */
.hf-buy .single_variation_wrap .woocommerce-variation-price span.price{font-family:var(--hf-font-display);font-weight:700;font-size:clamp(1.4rem,3.5vw,1.8rem);line-height:1.1;color:var(--hf-ink);margin:0}
.hf-buy .single_variation_wrap .woocommerce-variation-price span.price del{font-family:var(--hf-font-body);font-weight:500;font-size:1rem;color:var(--hf-ink-muted);opacity:1}
.hf-buy .single_variation_wrap .woocommerce-variation-price span.price ins{text-decoration:none;font-weight:inherit;background:none}

/* Kaufzeile: Woo setzt form.cart margin-bottom 2em und div.quantity margin/float */
.hf-buy.elementor-widget .elementor-add-to-cart form.cart{margin:var(--hf-s-12) 0 0}
.hf-buy.elementor-widget .elementor-add-to-cart form.cart div.quantity{margin:0;float:none}
/* Einfache Produkte: Elementor rendert form.cart > .quantity + button ohne Holder → Zeile */
.hf-buy form.cart:not(.variations_form){flex-direction:row;flex-wrap:nowrap;align-items:center;gap:var(--hf-s-12)}
.hf-buy form.cart:not(.variations_form) > .quantity{flex:0 0 auto}
.hf-buy form.cart:not(.variations_form) > button.single_add_to_cart_button{flex:1 1 auto}
/* PayPal-Smart-Button unter der Kaufzeile (falls in PayPal Payments aktiv) */
.hf-buy .ppc-button-wrapper{margin-top:var(--hf-s-12)}
.hf-buy .ppc-button-wrapper:empty{display:none}

/* Bewertungen: WCML-Sprachfilter-Link über dem Formular (nur DE-Bewertungen) */
.hf-reviews #review_form > p:has(> #lang-comments-link){display:none}

/* --- Produktsicherheit [hf_product_safety] (hf-core 1.16.1) — Aufklapper im Lesemaß ---
   details.hf-safety > summary + .hf-safety__body (Germanized-Inhalt ohne H2) */
.hf-safety{margin-top:var(--hf-s-40);border-top:1px solid var(--hf-line);border-bottom:1px solid var(--hf-line)}
.hf-safety > summary{
    display:flex;justify-content:space-between;align-items:center;gap:var(--hf-s-16);
    padding:16px 4px;cursor:pointer;list-style:none;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;line-height:1.3;color:var(--hf-ink);
}
.hf-safety > summary::-webkit-details-marker{display:none}
.hf-safety > summary::after{
    content:"";flex:0 0 auto;width:20px;height:20px;background:var(--hf-emerald);
    -webkit-mask:var(--hf-svg-chevron) center/contain no-repeat;mask:var(--hf-svg-chevron) center/contain no-repeat;
    transition:transform .26s cubic-bezier(.4,0,.2,1);
}
.hf-safety[open] > summary::after{transform:rotate(180deg)}
.hf-safety > summary:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:-3px;border-radius:4px}
.hf-safety__body{padding:0 4px 20px;font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted)}
.hf-safety__body :is(h2,h3,h4,h5){font-family:var(--hf-font-body);font-size:.875rem;font-weight:700;letter-spacing:0;line-height:1.4;color:var(--hf-ink);margin:var(--hf-s-16) 0 4px}
.hf-safety__body > :first-child,
.hf-safety__body > :first-child > :first-child{margin-top:0}
.hf-safety__body :is(p,li,address,dd,dt){font-size:.875rem;line-height:1.5;margin:0;font-style:normal}
.hf-safety__body a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.hf-safety--empty{border:1px dashed var(--hf-vermillion);border-radius:var(--hf-r-s);padding:12px 16px;font-size:.875rem;color:var(--hf-ink)}
@media(prefers-reduced-motion:reduce){.hf-safety > summary::after{transition:none}}

/* --- v1.97 · Produkttitel: Produktnamen laufen über 50 Zeichen ---
   Klasse am Titel-Widget statt hf-h1-sm. Kit-h1 kommt mit (0,1,1) → !important wie hf-h1-sm. */
.hf-h1-product,.hf-h1-product .elementor-heading-title{font-size:clamp(2rem,5vw,2.6rem) !important;line-height:1.08;text-wrap:balance}

/* --- v1.97 · Galerie-Thumbs: eine Zeile, horizontal scrollbar (bis 19 Bilder je Produkt) ---
   woocommerce.css: .woocommerce div.product div.images .flex-control-thumbs li (0,4,3) → (0,5,3) */
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs{
    display:flex;flex-wrap:nowrap;gap:var(--hf-s-12);overflow-x:auto;overflow-y:hidden;
    scroll-snap-type:x proximity;scrollbar-width:thin;
    margin:var(--hf-s-16) 0 0;padding:4px 2px 8px;list-style:none;
}
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li{
    flex:0 0 72px;width:72px;margin:0;float:none;clear:none;scroll-snap-align:start;
}
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li img{
    display:block;width:72px;height:72px;object-fit:cover;margin:0;
    border-radius:var(--hf-r-s);border:2px solid transparent;opacity:.7;cursor:pointer;
    transition:opacity .18s ease,border-color .18s ease;
}
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li img:hover,
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li img.flex-active{opacity:1;border-color:var(--hf-emerald)}

/* --- v1.97 · Bewertungszeile unter dem Titel (Product-Rating-Widget .hf-rating) ---
   Woo: .woocommerce div.product .woocommerce-product-rating{margin-bottom:1.618em} (0,3,1) */
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating div.woocommerce-product-rating{display:flex;align-items:center;gap:var(--hf-s-12);margin:0;line-height:1}
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating .star-rating,
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating .star-rating::before,
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating .star-rating span::before{color:var(--hf-vermillion)}
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating .star-rating{float:none;margin:0;font-size:1rem}
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating a.woocommerce-review-link{font-size:1rem;font-weight:600;color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px}

/* --- v1.97 · Mengenfeld: fest 76 × 52, Label nur für Screenreader --- */
.hf-buy.elementor-widget form.cart div.quantity{display:inline-flex;width:auto;margin:0;padding:0;position:relative}
.hf-buy.elementor-widget form.cart div.quantity input.qty{
    all:unset;box-sizing:border-box;width:76px;height:52px;margin:0;padding:0 8px;text-align:center;
    font-family:var(--hf-font-body);font-size:1rem;font-weight:600;color:var(--hf-ink);
    border:1.5px solid rgba(12,31,24,.7);border-radius:999px;background:var(--hf-white);-moz-appearance:textfield;
}
.hf-buy.elementor-widget form.cart div.quantity input.qty:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
.hf-buy .quantity .screen-reader-text{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* --- v1.98 · Bewertungskarte: WCML + Germanized, gegen woocommerce.css (#reviews #comments, 2 IDs) ---
   Reihenfolge in .comment-text: Sterne · Text (+ Screenshot) · Name/Datum · Germanized-Status · Herkunft */
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li{margin:0;padding:0;border:0}
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li .comment-text{
    display:flex;flex-direction:column;gap:var(--hf-s-12);flex:1;margin:0;padding:0;border:0;border-radius:0;
}
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li .comment-text p{margin:0}
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li .comment-text p.meta{order:3;margin-top:auto;font-size:.85rem;line-height:1.45;color:var(--hf-ink-muted)}
/* WCML: Sprachflagge je Bewertung (inline float) aus — es gibt nur deutsche Bewertungen */
.hf-reviews .comment-text > div[style*="float"]:has(> img[src*="/flags/"]){display:none}
/* WCML-Wrapper um Text + Screenshot */
.hf-reviews .comment-text > div[lang]{order:1}
.hf-reviews .comment-text > div[lang] > .hf-review-img{margin-top:var(--hf-s-12)}
/* Germanized: „Verifizierter Kauf. Mehr Informationen" */
.hf-reviews .comment-text > p.wc-gzd-review-authenticity-status{order:4;font-size:.875rem;line-height:1.45;font-weight:600;color:var(--hf-emerald)}
.hf-reviews .comment-text > p.wc-gzd-review-authenticity-status:not(.is-verified){font-weight:400;color:var(--hf-ink-muted)}
.hf-reviews .comment-text > p.wc-gzd-review-authenticity-status a{font-weight:400;color:var(--hf-ink-muted);text-decoration:underline;text-underline-offset:3px}
.hf-reviews .comment-text > p.hf-review-src{order:5}

/* ============ 24 · Produktseite: Abschnitts-Navigation + Mobile-Kaufleiste (v1.99) ============
   Elementor-Struktur Navigation: Container oberste Ebene (Boxed) zwischen Hero und Beschreibung,
   Klasse hf-secnav-wrap → Shortcode-Widget [hf_section_nav]. Der Container ist das Sticky-Element
   (klebt bis zum Ende des Templates, JS blendet ihn hinter dem letzten Ziel aus: .is-past).
   --hf-header-h setzt das JS (Sticky-Header-Unterkante inkl. Admin-Bar).
   Kaufleiste: Shortcode-Widget [hf_buybar] irgendwo im Template — das Widget nimmt keinen Platz ein.
   v2.02: auf allen Breiten; ab Tablet mit Produktname. */
.hf-secnav-wrap,
.e-con.hf-secnav-wrap{
    position:sticky;top:var(--hf-header-h,0px);z-index:40;
    padding:10px var(--hf-pad-x);
    background:rgba(255,255,255,.96);border-bottom:1px solid var(--hf-line);
    transition:opacity .2s ease,visibility .2s ease;
}
.hf-secnav-wrap.is-past{opacity:0;visibility:hidden;pointer-events:none}
.hf-secnav-wrap:not(:has(.hf-secnav)){display:none} /* keine Pills, kein Redaktionshinweis → Container weg */
.hf-secnav-wrap .elementor-widget{width:100%;max-width:none;margin:0}
.hf-secnav{max-width:var(--hf-wrap);margin-inline:auto}
.hf-secnav__list{
    display:flex;flex-wrap:nowrap;gap:8px;margin:0;padding:2px;list-style:none;
    overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none;
}
.hf-secnav__list::-webkit-scrollbar{display:none}
@media(min-width:1025px){.hf-secnav__list{justify-content:center}}
.hf-secnav__list > li{flex:0 0 auto;margin:0;scroll-snap-align:center}
.hf-secnav a.hf-secnav__pill{
    display:inline-flex;align-items:center;padding:8px 16px;border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;line-height:1.2;white-space:nowrap;
    color:var(--hf-emerald);background:var(--hf-creme);border:1px solid var(--hf-line);text-decoration:none;
    transition:background .18s ease,color .18s ease,border-color .18s ease;
}
.hf-secnav a.hf-secnav__pill:hover{border-color:var(--hf-emerald)}
.hf-secnav a.hf-secnav__pill.is-active{background:var(--hf-emerald);color:var(--hf-creme);border-color:var(--hf-emerald)}
.hf-secnav a.hf-secnav__pill:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}
.hf-secnav--empty{max-width:var(--hf-wrap);margin:0 auto;border:1px dashed var(--hf-vermillion);border-radius:var(--hf-r-s);padding:12px 16px;font-size:.875rem;color:var(--hf-ink)}
/* Ziele ohne JS: Platz für Header + Leiste */
:is(#darum,#inhalt,#anwendung,#fuer-wen,#stimmen,#fragen){scroll-margin-top:calc(var(--hf-header-h,72px) + 72px)}

/* --- Mobile-Kaufleiste --- */
.elementor-widget-shortcode:has(.hf-buybar){position:absolute;width:0;height:0;margin:0;overflow:visible} /* kein Platz, kein Gap im Copy-Stack */
.hf-buybar{
    position:fixed;left:0;right:0;bottom:0;z-index:45;
    padding:10px var(--hf-pad-x) calc(10px + env(safe-area-inset-bottom,0px));
    background:var(--hf-white);border-top:1px solid var(--hf-line);box-shadow:0 -8px 24px rgba(12,31,24,.08);
    transform:translateY(110%);transition:transform .25s ease;
}
.hf-buybar.is-visible{transform:none}
.hf-buybar__inner{display:flex;align-items:center;justify-content:space-between;gap:var(--hf-s-12);max-width:var(--hf-wrap);margin-inline:auto}
.hf-buybar__price{font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1.1;color:var(--hf-ink);white-space:nowrap}
.hf-buybar button.hf-buybar__btn{ /* (0,2,1) gegen die Kit-Regel für nackte Buttons */
    all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.05rem;line-height:1;white-space:nowrap;
    padding:13px 22px;border-radius:999px;background:var(--hf-vermillion);color:var(--hf-white);
    box-shadow:0 8px 20px rgba(225,114,56,.32);
}
.hf-buybar button.hf-buybar__btn:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}
.hf-buybar__name{display:none}
@media(min-width:768px){
    .hf-buybar{padding-block:12px calc(12px + env(safe-area-inset-bottom,0px))}
    .hf-buybar__inner{gap:var(--hf-s-24)}
    .hf-buybar__name{display:block;flex:1 1 auto;min-width:0;font-family:var(--hf-font-display);font-weight:700;font-size:1.05rem;line-height:1.25;color:var(--hf-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
    .hf-buybar__price{flex:0 0 auto}
    .hf-buybar button.hf-buybar__btn{padding:14px 26px}
}
/* Modern Cart: Floating-Button über die Leiste schieben, solange sie zu sehen ist (v2.02: alle Breiten) */
#moderncart-floating-cart{transition:transform .25s ease;transform:translateY(calc(-1 * var(--hf-buybar-h,0px)))}
@media(prefers-reduced-motion:reduce){.hf-buybar,#moderncart-floating-cart,.hf-secnav-wrap{transition:none}}

/* ============ 24.1 · Produktseite, Live-Runde 3 (v2.00) ============ */
/* Bewertungen: Woo-Clearfix im Grid = leere erste Zelle. Woo: (2,2,2) → (2,3,2) */
.hf-reviews.elementor-widget #reviews #comments ol.commentlist::before,
.hf-reviews.elementor-widget #reviews #comments ol.commentlist::after{content:none;display:none}
/* Elementor-Data-Tabs: Panel mit Rahmen oben + 4em Padding (0,4,0) → (0,5,0) */
.hf-reviews.elementor-widget .woocommerce-tabs.wc-tabs-wrapper .woocommerce-Tabs-panel.woocommerce-Tabs-panel--reviews{border:0;border-radius:0;margin:0;padding:0;box-shadow:none;background:none} /* v2.01: (0,6,0) gegen Elementors .woocommerce div.product.elementor .woocommerce-tabs .panel (0,5,1) */
.hf-reviews.elementor-widget .woocommerce-tabs{border:0;margin:0;padding:0}

/* Karten-Hover: Kit setzt a:hover (0,2,1) grün, H3 und Preis erben das — Karte bleibt Ink,
   nur der Pfeil-Link zeigt den Hover */
a.hf-pcard:hover,
a.hf-pcard:hover :is(h3,.price,.elementor-heading-title){color:var(--hf-ink)}
a.hf-pcard:hover .hf-txtlink,
a.hf-pcard:hover .hf-txtlink .elementor-heading-title{color:var(--hf-emerald)}

/* Galerie Mobile: Hauptbild nicht bildschirmfüllend, Thumbs kleiner */
@media(max-width:767px){
    .hf-gallery .woocommerce-product-gallery__image img{width:auto;max-width:100%;max-height:72vw;margin-inline:auto;object-fit:contain}
    .hf-gallery .woocommerce-product-gallery__image a{display:flex;justify-content:center}
    .hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li{flex-basis:56px;width:56px}
    .hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs li img{width:56px;height:56px}
}

/* --- v2.01 · Hero der Produktseite: .hf-split--product (zusätzlich zu hf-split) ---
   Copy ist auf der Produktseite deutlich länger als die Galerie — mittig ausgerichtet
   schwebt die Galerie. Oben bündig, ab Desktop bleibt die Galerie beim Scrollen stehen. */
@media(min-width:768px){
    .hf-split--product,.e-con.hf-split--product{align-items:flex-start}
}
@media(min-width:1025px){
    /* v2.06: Textspalte etwas tiefer — Eyebrow steht dann auf Höhe des Bildinhalts, nicht der Kartenkante */
    .hf-split--product > .hf-split__copy,
    .e-con.hf-split--product > .e-con.hf-split__copy{padding-top:var(--hf-s-48)}
    .hf-split--product > .hf-split__media,
    .e-con.hf-split--product > .e-con.hf-split__media{position:sticky;top:calc(var(--hf-header-h,84px) + var(--hf-s-24));align-self:flex-start}
}
/* Thumb-Leiste: Scrollbalken weg — angeschnittene Thumbs zeigen, dass es weitergeht */
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs{scrollbar-width:none}
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs::-webkit-scrollbar{display:none}

/* ============ 16.1 · Galerie-Stil „Karussell" (v2.03, hf-core 1.17.3) ============
   Galerie-Block → Stile → „Karussell". Für Kartenbeispiele im Produkttext (Abschnitt „Inhalt"),
   3–8 Bilder. Reines CSS: horizontaler Streifen, Scroll-Snap, angeschnittenes nächstes Bild
   zeigt, dass es weitergeht. Klick-Vergrößerung = WordPress-Lightbox („Bei Klick vergrößern").
   Core setzt Galeriebreiten mit :not(#individual-image) (1,4,1) und is-cropped (1,5,2) —
   Selektoren hier mit wiederholter Klasse auf (1,6,x), wirkt auch im Block-Editor. */
.wp-block-gallery.wp-block-gallery.is-style-hf-carousel{
    display:flex;flex-wrap:nowrap;gap:var(--hf-s-12);margin-inline:0;width:100%; /* figure bringt sonst 40px Browser-Einzug mit */
    overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;
    padding:2px 2px 10px;scrollbar-width:none;
}
.wp-block-gallery.wp-block-gallery.is-style-hf-carousel::-webkit-scrollbar{display:none}
@media(hover:hover) and (pointer:fine){ /* Maus: dünner Balken als Hinweis + Bedienweg */
    .wp-block-gallery.wp-block-gallery.is-style-hf-carousel{scrollbar-width:thin;scrollbar-color:var(--hf-line) transparent}
    .wp-block-gallery.wp-block-gallery.is-style-hf-carousel::-webkit-scrollbar{display:block;height:6px}
    .wp-block-gallery.wp-block-gallery.is-style-hf-carousel::-webkit-scrollbar-thumb{background:var(--hf-line);border-radius:6px}
}
.wp-block-gallery.wp-block-gallery.wp-block-gallery.has-nested-images.is-style-hf-carousel figure.wp-block-image:not(#individual-image){
    flex:0 0 82%;width:82%;max-width:none;margin:0;scroll-snap-align:start;
    display:flex;flex-direction:column;align-items:stretch;
}
@media(min-width:768px){
    .wp-block-gallery.wp-block-gallery.wp-block-gallery.has-nested-images.is-style-hf-carousel figure.wp-block-image:not(#individual-image){flex-basis:38%;width:38%}
}
.wp-block-gallery.wp-block-gallery.wp-block-gallery.has-nested-images.is-style-hf-carousel figure.wp-block-image:not(#individual-image) img{
    display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:contain;flex:none;
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);box-shadow:none;margin:0;
}
.wp-block-gallery.wp-block-gallery.wp-block-gallery.has-nested-images.is-style-hf-carousel figure.wp-block-image:not(#individual-image) figcaption{
    position:static;background:none;color:var(--hf-ink-muted);padding:8px 2px 0;margin:0;max-height:none;overflow:visible;
    font-size:.875rem;line-height:1.45;text-align:left;text-shadow:none;
}
/* Unterschrift der ganzen Galerie hätte keinen Platz im Streifen (wäre ein eigenes „Bild") —
   im Karussell nicht verwenden, Unterschriften gehören an die Einzelbilder. */
.wp-block-gallery.wp-block-gallery.is-style-hf-carousel > figcaption.blocks-gallery-caption{display:none}
@media(prefers-reduced-motion:reduce){.wp-block-gallery.wp-block-gallery.is-style-hf-carousel{scroll-behavior:auto}}

/* v2.12 · Lightbox-Knopf (core/image „Bei Klick vergrößern“, auch im Karussell). Core: 20 px,
   grau 25 %, weißes SVG — auf weißen Karten unsichtbar; Hello/Kit-Button-Regeln blähen ihn auf.
   Position: core rechnet top/right inline (object-fit) — hier fest in die Kartenecke. */
body .wp-lightbox-container button.lightbox-trigger{
    position:absolute;top:12px !important;right:12px !important;left:auto;bottom:auto;
    width:36px;height:36px;min-width:0;min-height:0;padding:0;margin:0;
    border:1px solid var(--hf-line);border-radius:999px;
    background:var(--hf-white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230C1F18' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6'/%3E%3Cpath d='M15 15l5 5M10.5 8v5M8 10.5h5'/%3E%3C/svg%3E") center/18px no-repeat;
    box-shadow:var(--hf-shadow-soft);backdrop-filter:none;-webkit-backdrop-filter:none;
    color:transparent;font-size:0;line-height:0;text-indent:-999px;overflow:hidden;
    opacity:0;transition:opacity .18s ease,transform .18s ease;cursor:zoom-in;z-index:5;
}
body .wp-lightbox-container button.lightbox-trigger > *{display:none}
body .wp-lightbox-container button.lightbox-trigger:not(:hover):not(:active){background-color:var(--hf-white);border:1px solid var(--hf-line)} /* 0,4,2 > Core 0,4,1 */
body .wp-lightbox-container:hover button.lightbox-trigger,
body .wp-lightbox-container button.lightbox-trigger:focus-visible{opacity:1}
body .wp-lightbox-container button.lightbox-trigger:hover{background-color:var(--hf-white);border-color:var(--hf-emerald);transform:scale(1.05)}
body .wp-lightbox-container button.lightbox-trigger:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}
@media(hover:none){body .wp-lightbox-container button.lightbox-trigger{opacity:0}} /* Touch: Tippen aufs Bild öffnet */

/* --- v2.04 · Bewertungsformular: Absenden-Button gegen woocommerce.css (2,1,1) --- */
.hf-reviews.elementor-widget #respond input#submit{
    all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;
    padding:13px 27px;border-radius:999px;border:2px solid var(--hf-emerald);color:var(--hf-emerald);background:transparent;
    transition:background .18s ease,color .18s ease,transform .18s ease;
}
.hf-reviews.elementor-widget #respond input#submit:hover{background:var(--hf-emerald);color:var(--hf-creme);transform:translateY(-2px)}
.hf-reviews.elementor-widget #respond input#submit:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}

/* --- v2.05 · Bewertungen: Mehr anzeigen + Weiterlesen (hf-frontend-reviews.js) --- */
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li.is-hf-hidden{display:none}
/* 7 Zeilen à 1.05rem × 1.4 + Absatzabstand-Puffer, weich ausgeblendet */
.hf-reviews .comment-text .description.hf-clamp{max-height:calc(1.05rem * 1.4 * 7);overflow:hidden;
    -webkit-mask-image:linear-gradient(#000 65%,transparent);mask-image:linear-gradient(#000 65%,transparent)}
.hf-reviews .comment-text .description.hf-clamp.is-open{max-height:none;-webkit-mask-image:none;mask-image:none}
.hf-reviews button.hf-review-more{all:unset;cursor:pointer;order:1;align-self:flex-start;margin-top:var(--hf-s-8);
    font-family:var(--hf-font-display);font-weight:700;font-size:.95rem;color:var(--hf-emerald);
    text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
.hf-reviews button.hf-review-more:hover{color:var(--hf-ink)}
.hf-reviews button.hf-review-more:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px;border-radius:4px}
.hf-reviews .hf-reviews-more{display:flex;justify-content:center;margin-top:var(--hf-s-32)}
.hf-reviews .hf-reviews-more button{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;
    padding:13px 27px;border-radius:999px;border:2px solid var(--hf-emerald);color:var(--hf-emerald);background:transparent;
    transition:background .18s ease,color .18s ease,transform .18s ease}
.hf-reviews .hf-reviews-more button:hover{background:var(--hf-emerald);color:var(--hf-creme);transform:translateY(-2px)}
.hf-reviews .hf-reviews-more button:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:3px}
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li:focus{outline:none}
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li:focus-visible .comment-text{outline:3px solid var(--hf-vermillion);outline-offset:2px}

/* --- v2.06 · Bewertungsbilder: unter dem Text, klein, Lightbox --- */
.hf-reviews .hf-review-media{order:1;display:flex;flex-wrap:wrap;gap:var(--hf-s-8);margin-top:var(--hf-s-12)}
.hf-reviews button.hf-review-shot{all:unset;cursor:zoom-in;display:block;width:88px;border-radius:var(--hf-r-s,8px);overflow:hidden;
    border:1px solid var(--hf-line);transition:transform .18s ease}
.hf-reviews button.hf-review-shot:hover{transform:translateY(-2px)}
.hf-reviews button.hf-review-shot:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}
.hf-reviews button.hf-review-shot img{display:block;width:100%;height:auto;margin:0;border-radius:0;box-shadow:none}
.hf-reviews .comment-text .description + button.hf-review-more + .hf-review-media{margin-top:var(--hf-s-12)}
dialog.hf-lightbox{border:0;padding:0;background:transparent;max-width:min(92vw,900px);max-height:92vh;overflow:visible}
dialog.hf-lightbox::backdrop{background:rgba(12,31,24,.82)}
dialog.hf-lightbox img{display:block;max-width:min(92vw,900px);max-height:88vh;width:auto;height:auto;border-radius:var(--hf-r-m);background:var(--hf-white)}
dialog.hf-lightbox .hf-lightbox__close{all:unset;cursor:pointer;position:absolute;top:-14px;right:-14px;width:40px;height:40px;border-radius:999px;
    display:grid;place-items:center;background:var(--hf-white);color:var(--hf-ink);font-size:1.6rem;line-height:1;box-shadow:0 4px 14px rgba(0,0,0,.25)}
dialog.hf-lightbox .hf-lightbox__close:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}

/* --- v2.07 · Produktkarte: Kurzbeschreibung (Loop-Item-Widget mit Klasse hf-pcard__text) ---
   Heading-Widget mit Dynamic Tag erzeugt <p class="elementor-heading-title"></p><p>Text</p> —
   leere Absätze weg, der Text auf 3 Zeilen. Ganzer Text steht auf der Produktseite. */
.hf-pcard .hf-pcard__text p:empty{display:none}
.hf-pcard .hf-pcard__text,
.hf-pcard .hf-pcard__text p{font-family:var(--hf-font-body);font-weight:400;font-size:.9375rem;line-height:1.5;color:var(--hf-ink-muted);margin:0}
.hf-pcard .hf-pcard__text p:not(:empty){display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}
.hf-pcard .hf-pcard__text :is(ul,ol,img,figure,a){display:none} /* falls doch einmal eine alte Kurzbeschreibung durchrutscht */

/* ============ 25 · Kasse (v2.08) ============
   Seite /kasse/ = Hello-Seite mit WooCommerce-Checkout-Block, Germanized setzt Rechtstexte
   und einen eigenen Abschluss (Übersicht + Button, .wc-gzd-checkout-submit) in die Sidebar.
   Einspaltig, weil bei zwei Spalten die Rechtstexte links unter dem Formular landen, der
   Button rechts oben — einspaltig stehen Rechtstexte, Übersicht und Button direkt untereinander.
   Präfix body.woocommerce-checkout: wc-blocks-Regeln liegen bei (0,2,1)–(0,3,1). */

/* Rahmen: Hello gibt der Seite keine Breite */
body.woocommerce-checkout main#content.site-main{box-sizing:border-box;max-width:calc(var(--hf-read) + 2 * var(--hf-pad-x));margin-inline:auto;padding:var(--hf-pad-y-slim) var(--hf-pad-x) var(--hf-pad-y-sm)}
body.woocommerce-checkout .page-content > h1{font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h2-sm);line-height:1.1;color:var(--hf-ink);margin:0 0 var(--hf-s-32)}
body.woocommerce-checkout .wp-block-woocommerce-checkout{margin:0;max-width:none}

/* Einspaltig */
body.woocommerce-checkout .wc-block-components-sidebar-layout{display:flex;flex-direction:column;flex-wrap:nowrap;margin:0;gap:var(--hf-s-32)}
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar{width:100%;max-width:none;padding:0;margin:0;position:static;top:auto}

/* Abschnitte */
body.woocommerce-checkout .wc-block-components-checkout-step{margin:0 0 var(--hf-s-40);padding:0}
body.woocommerce-checkout .wc-block-components-checkout-step__heading{margin:0 0 var(--hf-s-16)}
body.woocommerce-checkout .wc-block-components-checkout-step__title{font-family:var(--hf-font-display);font-weight:700;font-size:var(--hf-h3);line-height:1.25;color:var(--hf-ink);margin:0}
body.woocommerce-checkout .wc-block-components-checkout-step__description{color:var(--hf-ink-muted);font-size:.95rem}

/* Felder (schwebende Labels von Woo bleiben, nur Optik) */
body.woocommerce-checkout .wc-block-components-form .wc-block-components-text-input input:is([type=text],[type=email],[type=tel],[type=password],[type=number]),
body.woocommerce-checkout .wc-block-components-text-input input:is([type=text],[type=email],[type=tel],[type=password],[type=number]),
body.woocommerce-checkout .wc-blocks-components-select .wc-blocks-components-select__select,
body.woocommerce-checkout .wc-block-components-textarea{
    background:var(--hf-white);border:1.5px solid var(--hf-line);border-radius:var(--hf-r-s);
    color:var(--hf-ink);font-family:var(--hf-font-body);box-shadow:none;
    transition:border-color .15s ease,box-shadow .15s ease;
}
body.woocommerce-checkout .wc-block-components-text-input input:focus,
body.woocommerce-checkout .wc-blocks-components-select .wc-blocks-components-select__select:focus,
body.woocommerce-checkout .wc-block-components-textarea:focus{border-color:var(--hf-emerald);box-shadow:0 0 0 3px rgba(5,97,70,.15);outline:none}
body.woocommerce-checkout .wc-block-components-text-input label,
body.woocommerce-checkout .wc-blocks-components-select__label{color:var(--hf-ink-muted);font-family:var(--hf-font-body)}
body.woocommerce-checkout .wc-block-components-text-input.has-error input,
body.woocommerce-checkout .wc-block-components-validation-error{border-color:#B3261E}
body.woocommerce-checkout .wc-block-components-validation-error > p{color:#B3261E;font-size:.85rem}
body.woocommerce-checkout .wc-block-components-address-form__address_2-toggle{color:var(--hf-emerald);font-weight:600;text-decoration:underline;text-underline-offset:3px}

/* Checkboxen */
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]{
    width:22px;height:22px;min-width:22px;border:1.5px solid rgba(12,31,24,.35);border-radius:6px;background:var(--hf-white);
}
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:checked{background:var(--hf-emerald);border-color:var(--hf-emerald)}
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__mark{fill:var(--hf-white);margin-left:3px;margin-top:-1px}
body.woocommerce-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}
body.woocommerce-checkout .wc-block-components-checkbox__label{color:var(--hf-ink);font-size:.95rem}

/* Versand- und Zahlungsoptionen */
body.woocommerce-checkout .wc-block-components-shipping-rates-control__no-shipping-address-message,
body.woocommerce-checkout .wc-block-components-checkout-step__content > p[role=status]{background:rgba(12,31,24,.04);border-radius:var(--hf-r-s);padding:var(--hf-s-16);color:var(--hf-ink-muted);font-size:.95rem;text-align:left;margin:0}
body.woocommerce-checkout .wc-block-components-radio-control__option,
body.woocommerce-checkout .wc-block-components-radio-control-accordion-option{border-color:var(--hf-line)}
body.woocommerce-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input:checked{border-color:var(--hf-emerald)}
body.woocommerce-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input:checked::before{background:var(--hf-emerald)}
body.woocommerce-checkout .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
body.woocommerce-checkout .wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted{box-shadow:inset 0 0 0 1.5px var(--hf-emerald);border-radius:var(--hf-r-s)}

/* Hinweise */
body.woocommerce-checkout .wc-block-components-notice-banner{border-radius:var(--hf-r-s);font-size:.95rem;line-height:1.5}
body.woocommerce-checkout .wc-block-components-notice-banner.is-error{background:#FDF0EE;border-color:#E6B4AC;color:var(--hf-ink)}
body.woocommerce-checkout .wc-block-components-notice-banner.is-error > svg{background:#B3261E}

/* Rechtstexte von Germanized: ruhiger, kleiner, mit Linie abgesetzt */
body.woocommerce-checkout .wc-gzd-checkboxes{border-top:1px solid var(--hf-line);padding-top:var(--hf-s-24);margin:0 0 var(--hf-s-8,8px)}
body.woocommerce-checkout .wc-gzd-checkboxes .wc-gzd-checkbox{font-size:.875rem;line-height:1.55;color:var(--hf-ink-muted);margin:0 0 var(--hf-s-12)}
body.woocommerce-checkout .wc-gzd-checkboxes a{color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px}

/* Bestellübersicht als Karte (Germanized setzt inline #eee + 16px — überschrieben) */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block{background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);overflow:hidden}
body.woocommerce-checkout.woocommerce-gzd-checkout .wc-gzd-checkout .wc-block-components-order-summary,
body.woocommerce-checkout.woocommerce-gzd-checkout .wc-gzd-checkout .wc-block-components-order-summary.is-large{background:transparent;padding:var(--hf-s-16) var(--hf-s-24)}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title{padding:var(--hf-s-16) var(--hf-s-24);margin:0;border-bottom:1px solid var(--hf-line)}
/* v2.70: Germanized nimmt der Kopfzeile auf schmalen Breiten Polster und Linie (.wc-gzd-checkout .wc-block-checkout.is-mobile|-medium|-small …, 0,5,0) */
body.woocommerce-checkout .wc-gzd-checkout .wc-block-checkout:is(.is-mobile,.is-medium,.is-small) .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title{
    padding:var(--hf-s-16) var(--hf-s-24);margin:0;border-bottom:1px solid var(--hf-line)}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-checkout-order-summary__title .wc-block-components-checkout-order-summary__title-text{font-family:var(--hf-font-display);font-weight:700;font-size:var(--hf-h3);line-height:1.25;color:var(--hf-ink);margin:0}
/* einheitlich 24 px links/rechts in der Karte. Der Wrapper der Artikelliste hat von Germanized
   kein Polster, deshalb sitzt es an der Liste selbst; leere Wrapper bleiben ohne Polster. */
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-order-summary,
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-order-summary.is-large{padding:var(--hf-s-16) var(--hf-s-24)}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-item{padding-inline:0}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-totals-coupon,
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-panel{padding-inline:0;margin-inline:0}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-panel__button{padding-left:0;margin-inline:0}
body.woocommerce-checkout .wp-block-woocommerce-checkout-order-summary-block .wc-block-components-panel__button-icon{right:0}
body.woocommerce-checkout .wc-block-components-totals-wrapper{border-color:var(--hf-line);padding-inline:var(--hf-s-24)}
body.woocommerce-checkout .wc-block-components-product-name{font-family:var(--hf-font-display);font-weight:700;font-size:1rem;color:var(--hf-ink);line-height:1.3}
body.woocommerce-checkout .wc-block-components-product-metadata__description{display:none} /* Kurzbeschreibung: gehört nicht in die Kasse */
body.woocommerce-checkout .wc-block-components-order-summary-item__image img{border-radius:8px}
body.woocommerce-checkout .wc-block-components-order-summary-item__quantity{background:var(--hf-ink);color:var(--hf-white);border:0}
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body.woocommerce-checkout .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-family:var(--hf-font-display);font-weight:800;font-size:1.35rem;color:var(--hf-ink)}
body.woocommerce-checkout .wc-block-components-totals-footer-item-tax{color:var(--hf-ink-muted);font-size:.85rem}
body.woocommerce-checkout .wc-block-components-panel__button{color:var(--hf-ink);font-weight:600}
/* Germanized-Abschluss: Übersicht + Button bilden einen Block */
body.woocommerce-checkout .wc-gzd-checkout-submit{margin-top:var(--hf-s-24)}
body.woocommerce-checkout .wc-gzd-checkout-submit .wp-block-woocommerce-checkout-order-summary-block{margin-bottom:var(--hf-s-16)}

/* Kaufbutton (Germanized-Text „Jetzt kaufen“) im System */
body.woocommerce-checkout .wc-block-components-checkout-place-order-button.wc-block-components-button{
    background:var(--hf-vermillion);color:var(--hf-white);border:0;border-radius:999px;
    min-height:60px;padding:16px 32px;width:100%;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1;letter-spacing:0;text-transform:none;
    box-shadow:0 8px 20px rgba(225,114,56,.32);transition:filter .18s ease,transform .18s ease;
}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button.wc-block-components-button:hover{filter:brightness(1.05);transform:translateY(-2px)}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button.wc-block-components-button:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}
body.woocommerce-checkout .wc-block-components-checkout-place-order-button:disabled{opacity:.6;transform:none;box-shadow:none}
body.woocommerce-checkout .wc-block-checkout__actions_row{margin:0}

/* Modern Cart: Floating-Button in der Kasse nicht nötig */
body.woocommerce-checkout #moderncart-floating-cart{display:none}

/* Ab Desktop zweispaltig: Formular links, Abschluss rechts mitlaufend. Germanized legt
   Bestellübersicht, Gesamtsumme und „Jetzt kaufen“ in die Sidebar, die Rechtstexte bleiben
   unter dem Formular. Header ist nicht sticky → Abstand nur zur Admin-Bar. */
@media (min-width:1025px){
    body.woocommerce-checkout main#content.site-main{max-width:calc(var(--hf-wrap) + 2 * var(--hf-pad-x))}
    body.woocommerce-checkout .wc-block-components-sidebar-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,420px);column-gap:var(--hf-s-64);row-gap:0;align-items:start}
    body.woocommerce-checkout .wc-block-components-sidebar-layout .wc-block-components-sidebar{position:sticky;top:var(--hf-s-24)}
    body.woocommerce-checkout.admin-bar .wc-block-components-sidebar-layout .wc-block-components-sidebar{top:calc(32px + var(--hf-s-24))}
    body.woocommerce-checkout .wc-gzd-checkout-submit{margin-top:0}
}

/* ============ 26 · Warenkorb (v2.10) ============
   Seite /warenkorb/ = Rückfallseite zum Modern-Cart-Drawer, WooCommerce-Cart-Block.
   H1 „Warenkorb“ als Überschrift-Block über den Cart-Block setzen (wie in der Kasse).
   Ab Desktop: Artikel links, Summenkarte rechts mitlaufend; darunter einspaltig. */
body.woocommerce-cart main#content.site-main{box-sizing:border-box;max-width:calc(var(--hf-wrap) + 2 * var(--hf-pad-x));margin-inline:auto;padding:var(--hf-pad-y-slim) var(--hf-pad-x) var(--hf-pad-y-sm)}
body.woocommerce-cart .page-content > h1{font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h2-sm);line-height:1.1;color:var(--hf-ink);margin:0 0 var(--hf-s-32)}
body.woocommerce-cart .wp-block-woocommerce-cart{margin:0;max-width:none}
body.woocommerce-cart .wc-block-components-sidebar-layout{display:flex;flex-direction:column;flex-wrap:nowrap;margin:0;gap:var(--hf-s-40)}
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-main,
body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar{width:100%;max-width:none;padding:0;margin:0}
@media (min-width:1025px){
    body.woocommerce-cart .wc-block-components-sidebar-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,380px);column-gap:var(--hf-s-64);row-gap:0;align-items:start}
    body.woocommerce-cart .wc-block-components-sidebar-layout .wc-block-components-sidebar{position:sticky;top:var(--hf-s-24)}
    body.woocommerce-cart.admin-bar .wc-block-components-sidebar-layout .wc-block-components-sidebar{top:calc(32px + var(--hf-s-24))}
}

/* Artikeltabelle */
body.woocommerce-cart table.wc-block-cart-items{margin:0;border-collapse:collapse;width:100%}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__header{border-bottom:1px solid var(--hf-line)}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__header th{font-family:var(--hf-font-body);font-weight:600;font-size:.8125rem;letter-spacing:.06em;text-transform:uppercase;color:var(--hf-ink-muted);padding:0 0 var(--hf-s-12)}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row{border-bottom:1px solid var(--hf-line)}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-items__row > td{padding-block:var(--hf-s-24);vertical-align:top;border:0}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__image{width:96px;padding-right:var(--hf-s-16)}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__image img{width:96px;height:96px;object-fit:cover;border-radius:var(--hf-r-s);background:var(--hf-white);display:block}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__product{padding-right:var(--hf-s-16)}
body.woocommerce-cart table.wc-block-cart-items a.wc-block-components-product-name{font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;line-height:1.3;color:var(--hf-ink);text-decoration:none;display:inline-block;margin:0 0 var(--hf-s-8,8px)}
body.woocommerce-cart table.wc-block-cart-items a.wc-block-components-product-name:hover{color:var(--hf-emerald)}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__prices{color:var(--hf-ink-muted);font-size:.9375rem;margin:0 0 4px}
body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__total{font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;color:var(--hf-ink);white-space:nowrap}
/* Kurzbeschreibung und Germanized-Warenkorbtext gehören nicht in den Warenkorb; Lieferzeit bleibt */
body.woocommerce-cart .wc-block-components-product-metadata__description,
body.woocommerce-cart .wc-block-components-product-details__gzd-item-desc,
body.woocommerce-cart .wc-block-components-product-details > span > span[aria-hidden="true"]{display:none}
body.woocommerce-cart .wc-block-components-product-details{margin:0;list-style:none}
body.woocommerce-cart .wc-block-components-product-details__gzd-delivery-time{font-size:.875rem;color:var(--hf-ink-muted)}
body.woocommerce-cart .wc-block-components-product-details__gzd-delivery-time .wc-block-components-product-details__name{display:none}

/* Menge + Entfernen */
body.woocommerce-cart .wc-block-cart-item__quantity{display:flex;align-items:center;gap:var(--hf-s-12);margin-top:var(--hf-s-12)}
body.woocommerce-cart .wc-block-components-quantity-selector{width:auto;height:40px;margin:0;border:1.5px solid var(--hf-line);border-radius:999px;background:var(--hf-white);overflow:hidden;display:inline-flex;align-items:stretch}
body.woocommerce-cart .wc-block-components-quantity-selector::after{display:none}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button{min-width:38px;padding:0;border:0;background:transparent;color:var(--hf-ink);font-size:1.1rem;line-height:1;box-shadow:none;cursor:pointer}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:hover:not(:disabled){color:var(--hf-emerald)}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__button:disabled{opacity:.3;cursor:default}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__input{width:36px;min-width:0;border:0;background:transparent;font-family:var(--hf-font-body);font-weight:600;font-size:1rem;color:var(--hf-ink);text-align:center;box-shadow:none;padding:0}
body.woocommerce-cart .wc-block-components-quantity-selector .wc-block-components-quantity-selector__input:focus{outline:none}
body.woocommerce-cart .wc-block-components-quantity-selector:focus-within{border-color:var(--hf-emerald);box-shadow:0 0 0 3px rgba(5,97,70,.15)}
body.woocommerce-cart button.wc-block-cart-item__remove-link{background:transparent;border:0;padding:6px;margin:0;color:var(--hf-ink-muted);border-radius:999px;line-height:0;cursor:pointer}
body.woocommerce-cart button.wc-block-cart-item__remove-link svg{fill:currentColor;width:22px;height:22px}
body.woocommerce-cart button.wc-block-cart-item__remove-link:hover{color:var(--hf-vermillion);background:rgba(225,114,56,.08)}
body.woocommerce-cart button.wc-block-cart-item__remove-link:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px}

/* Summenkarte */
body.woocommerce-cart .wc-block-cart__sidebar{background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:var(--hf-s-24) !important}
body.woocommerce-cart .wc-block-cart__totals-title{font-family:var(--hf-font-display);font-weight:700;font-size:var(--hf-h3);line-height:1.25;letter-spacing:0;text-transform:none;color:var(--hf-ink);text-align:left;padding:0;margin:0 0 var(--hf-s-12)}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-wrapper{padding-inline:0;border-color:var(--hf-line)}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-panel__button{color:var(--hf-ink);font-weight:600;font-size:.95rem;padding-left:0;margin:0}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-panel__button-icon{right:0}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-item{padding-inline:0}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-footer-item .wc-block-components-totals-item__label,
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-footer-item .wc-block-components-totals-item__value{font-family:var(--hf-font-display);font-weight:800;font-size:1.35rem;color:var(--hf-ink)}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-totals-footer-item .wc-block-components-totals-item__description p{color:var(--hf-ink-muted);font-size:.85rem;margin:2px 0 0}
body.woocommerce-cart .wc-block-cart__sidebar .wc-block-components-text-input input{background:var(--hf-white);border:1.5px solid var(--hf-line);border-radius:var(--hf-r-s);color:var(--hf-ink)}
body.woocommerce-cart .wc-block-cart__submit{margin:var(--hf-s-16) 0 0}
body.woocommerce-cart .wc-block-cart__submit-container a.wc-block-cart__submit-button.wc-block-components-button{
    display:flex;align-items:center;justify-content:center;width:100%;min-height:56px;padding:14px 28px;
    background:var(--hf-vermillion);color:var(--hf-white);border:0;border-radius:999px;text-decoration:none;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.15rem;line-height:1;letter-spacing:0;text-transform:none;
    box-shadow:0 8px 20px rgba(225,114,56,.32);transition:filter .18s ease,transform .18s ease;
}
body.woocommerce-cart .wc-block-cart__submit-container a.wc-block-cart__submit-button.wc-block-components-button .wc-block-components-button__text{color:inherit}
body.woocommerce-cart .wc-block-cart__submit-container a.wc-block-cart__submit-button.wc-block-components-button:hover{filter:brightness(1.05);transform:translateY(-2px);color:var(--hf-white)}
body.woocommerce-cart .wc-block-cart__submit-container a.wc-block-cart__submit-button.wc-block-components-button:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}
/* Mobile: Woo heftet den Button unten an — bleibt, nur im System */
body.woocommerce-cart .wc-block-cart__submit-container--sticky{background:var(--hf-creme);padding:var(--hf-s-12) var(--hf-pad-x);box-shadow:0 -6px 16px rgba(12,31,24,.08)}
body.woocommerce-cart .wc-block-cart__submit-container--sticky::before{display:none}

/* Cross-Sells („Passt dazu“): Überschrift im Editor auf Deutsch setzen, Karten im pcard-Look */
body.woocommerce-cart .wp-block-woocommerce-product-collection{margin:var(--hf-s-48) 0 0}
body.woocommerce-cart .wp-block-woocommerce-product-collection > h2.wp-block-heading{font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h3);line-height:1.25;color:var(--hf-ink);margin:0 0 var(--hf-s-24) !important}
body.woocommerce-cart .wc-block-product-template.wc-block-product-template__responsive{gap:var(--hf-s-24)}
body.woocommerce-cart .wc-block-product-template li.wc-block-product{background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);overflow:hidden;display:flex;flex-direction:column;text-align:left;padding:0 0 var(--hf-s-16)}
body.woocommerce-cart .wc-block-product-template li.wc-block-product > *{margin:0 var(--hf-s-16) var(--hf-s-8,8px) !important;text-align:left}
body.woocommerce-cart .wc-block-product-template li.wc-block-product > .wc-block-components-product-image{margin:0 0 var(--hf-s-16) !important}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-image img{border-radius:0;aspect-ratio:1/1;object-fit:cover}
body.woocommerce-cart .wc-block-product-template .wp-block-post-title{font-family:var(--hf-font-display);font-weight:700;font-size:1rem !important;line-height:1.3 !important}
body.woocommerce-cart .wc-block-product-template .wp-block-post-title a{color:var(--hf-ink);text-decoration:none}
body.woocommerce-cart .wc-block-product-template .wp-block-post-title a:hover{color:var(--hf-emerald)}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-price{text-align:left;font-size:.95rem;color:var(--hf-ink)}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-button{align-items:flex-start;margin-top:auto !important}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-button__button.wp-block-button__link{
    background:transparent;color:var(--hf-emerald);border:1.5px solid var(--hf-emerald);border-radius:999px;
    padding:8px 16px;min-height:0;font-family:var(--hf-font-body);font-weight:600;font-size:.875rem;line-height:1.2;text-decoration:none;box-shadow:none;
}
body.woocommerce-cart .wc-block-product-template .wc-block-components-product-button__button.wp-block-button__link:hover{background:var(--hf-emerald);color:var(--hf-white)}

/* Leerer Warenkorb */
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block{text-align:center}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title{font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h3);color:var(--hf-ink)}

/* Hinweise wie in der Kasse */
body.woocommerce-cart .wc-block-components-notice-banner{border-radius:var(--hf-r-s);font-size:.95rem;line-height:1.5}

/* Mobile: Bild kleiner, Gesamtpreis unter den Namen */
@media (max-width:767px){
    body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__image{width:72px}
    body.woocommerce-cart table.wc-block-cart-items .wc-block-cart-item__image img{width:72px;height:72px}
}

/* Modern Cart: Floating-Button auf der Warenkorbseite nicht nötig */
body.woocommerce-cart #moderncart-floating-cart{display:none}

/* ============ 27 · Alte Funnels (v2.14) ============
   A/B-Variante A = alter Look 1:1. Das Kit setzt den Body auf Creme (.elementor-kit-N, 0,1,0). */
html body.hf-legacy-step.hf-legacy-step{background:#FFFFFF !important} /* Kit/Seiteneinstellung können mit Inline-CSS kommen */

/* --- v2.17 · Bugs aus dem Call 09.10. --- */
/* Kaufen-Button: woocommerce.css färbt .button.alt bei :hover / .disabled / :disabled[disabled] lila
   (bis 0,6,1). Hier (0,6,2): Vermillion bleibt, deaktiviert nur blasser (Deckkraft aus der Basisregel). */
.hf-buy.hf-buy form.cart button.single_add_to_cart_button.single_add_to_cart_button:is(:hover,:focus,:active,.disabled,:disabled,[disabled]){
    background-color:var(--hf-vermillion);background-image:none;color:var(--hf-white);
}
/* Bewertungskarte: immer eine Spalte. Elementor/Woo setzten .comment-text auf Zeilen-Umbruch,
   dann stand „Weiterlesen“ neben dem Screenshot. */
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li .comment-text{flex-direction:column;flex-wrap:nowrap;align-items:stretch}
.hf-reviews.elementor-widget button.hf-review-more.hf-review-more{display:block;width:max-content;align-self:flex-start} /* v2.18: (0,4,1) > Basisregel mit all:unset (0,2,1) */
.hf-reviews.elementor-widget #reviews #comments ol.commentlist li .comment-text > :is(.hf-review-img,.hf-review-media){align-self:flex-start;margin-top:var(--hf-s-4,4px)}
/* Core-Lightbox („Bei Klick vergrößern“): ganzes Bild zeigen, nie beschneiden (Absicherung zu
   hf-core 1.24.0, das is-cropped an Karussell-Galerien entfernt). */
.wp-lightbox-overlay .lightbox-image-container img,
.wp-lightbox-overlay .wp-block-image img{object-fit:contain !important;width:100% !important;height:100% !important;min-width:0 !important;min-height:0 !important}
/* „ab“ vor dem Preis variabler Produkte in Loops (hf-core 1.24.0) */
.hf-price-from{font-weight:400;font-size:.85em;margin-right:.15em}

/* --- v2.19 · Variantenauswahl kompakt --- */
.hf-buy.hf-buy form.cart.variations_form table.variations.variations{margin:0} /* (0,6,2) > woocommerce.css (0,4,2) */
.hf-buy form.cart .reset_variations[style*="hidden"]{display:none} /* erst sichtbar, wenn eine Option gewählt ist */
.hf-buy form.cart .single_variation_wrap .single_variation:empty{display:none}

/* --- v2.20/v2.21 · Hover orange Buttons: Emerald, klar sichtbar, Text bleibt weiß --- */
.hf-btn.hf-btn--primary:hover,
.hf-buybar button.hf-buybar__btn:hover,
.hf-buy.hf-buy form.cart button.single_add_to_cart_button.single_add_to_cart_button:is(:hover,:focus-visible):not(.disabled):not(:disabled){
    filter:none;background-color:var(--hf-emerald);color:var(--hf-white);
    transform:translateY(-2px);box-shadow:0 12px 26px rgba(5,97,70,.28);
}

.hf-btn.hf-btn--primary,
.hf-buybar button.hf-buybar__btn,
.hf-buy.hf-buy form.cart button.single_add_to_cart_button.single_add_to_cart_button{transition:transform .18s ease,background-color .18s ease,box-shadow .18s ease}

/* --- v2.22 · Lead-Formular im Copy-Stack (Wenn-dann-Landing, Hero + Abschluss-Karte) --- */
.hf-copy > .elementor-widget-shortcode{align-self:stretch}   /* Widget spaltenbreit, sonst schrumpft die Karte auf ihren Inhalt */
.hf-copy .hf-lead{margin:var(--hf-s-12) 0 0}                  /* (0,2,0) schlägt .hf-lead margin 32 auto */
.hf-center .hf-lead{margin-inline:auto}                        /* zentrierte Karten (Coral-Abschluss) */
.hf-lead button.hf-btn.hf-btn{white-space:normal;text-wrap:balance;line-height:1.2} /* .hf-btn nowrap sprengte 390 px */

/* --- v2.23 · Lead-Formular in der Freebie-Karte ohne Karte (Look des globalen Freebie-Formulars) --- */
.hf-card-xl .hf-lead{background:none;border:0;border-radius:0;box-shadow:none;padding:0;margin:var(--hf-s-24) 0 0;max-width:600px}
.hf-card-xl .hf-center .hf-lead,.hf-card-xl.hf-center .hf-lead{margin-inline:auto}
.hf-card-xl .hf-lead .hf-lead__fields input{flex:1 1 160px}  /* Feld + kurzer Button passen in die halbe Karte (~470 px) */
.hf-card-xl .hf-lead button.hf-btn.hf-btn{flex:1 1 auto}       /* passt er neben das Feld: eine Zeile, sonst volle Breite darunter */
.hf-card-xl .hf-lead .hf-lead__legal{margin-top:var(--hf-s-16)}
.hf-card-xl .hf-lead .hf-lead__fields input{border-width:1px}   /* v2.24: wie globales Freebie-Formular */
.hf-bg-coral .hf-lead .hf-lead__legal{color:rgba(12,31,24,.8)}
/* Lead-Formular unter dem Bild in der Media-Spalte (Hero-Variante) */
.hf-split__media .hf-lead{margin:var(--hf-s-24) 0 0;max-width:none}

/* ============ 28 · KI-Kennzeichnung (v2.27, hf-core 1.29.0) ============
   span.hf-ai > img + span.hf-ai__note — Label-Skala (.78rem), Farbe wie Meta. */
.hf-ai{display:block;position:relative}
.hf-ai > img{display:block}
/* v2.50: Kürzel als Kreis im Bild, Tooltip mit vollem Text */
.hf-ai__note{position:absolute;right:12px;bottom:12px;z-index:2;display:grid;place-items:center;
    width:28px;height:28px;margin:0;padding:0;border-radius:50%;
    background:rgba(251,248,243,.9);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
    box-shadow:0 1px 4px rgba(12,31,24,.18);
    font-family:var(--hf-font-body);font-size:.625rem;font-weight:700;line-height:1;letter-spacing:.04em;
    text-transform:none;color:var(--hf-ink);cursor:help;outline:none}
.hf-ai__note::after{content:attr(data-label);position:absolute;right:0;bottom:calc(100% + 6px);
    padding:5px 10px;border-radius:999px;background:var(--hf-ink);color:var(--hf-creme);
    font-size:.6875rem;font-weight:500;letter-spacing:0;white-space:nowrap;
    opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .15s ease,transform .15s ease}
.hf-ai__note:hover::after,.hf-ai__note:focus::after,.hf-ai__note:focus-visible::after{opacity:1;transform:none}
.hf-ai__note:focus-visible{box-shadow:0 0 0 3px var(--hf-vermillion)}
.hf-pcard .hf-ai__note{right:8px;bottom:8px}
.hf-cover--round .hf-ai__note{right:50%;transform:translateX(50%);bottom:8px}
@media(max-width:767px){.hf-ai__note{right:8px;bottom:8px;width:24px;height:24px}}
@media(prefers-reduced-motion:reduce){.hf-ai__note::after{transition:none}}
.hf-ai-list{list-style:none;margin:var(--hf-s-24) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:var(--hf-s-16)}
.hf-ai-list li{margin:0}
html body ul.hf-ai-list{padding:0!important;margin-left:0!important;margin-right:0!important} /* v2.62: Lesetext-/Editor-Listen-Einzug überstimmen */
html body ul.hf-ai-list > li{padding:0!important;margin:0!important;list-style:none!important}
html body ul.hf-ai-list > li::before{content:none!important;display:none!important}
.hf-ai-list img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;border-radius:var(--hf-r-s)}
.hf-ai-list .hf-ai__note{display:none} /* in der Übersicht ist jedes Bild KI, Label doppelt */

/* ============ 29 · Lesetext: Buttons und Formular im Fließtext (v2.28) ============
   Button-Block: Die Pille ist der Link (.wp-block-button__link). Steht hf-btn am
   Wrapper (Zusätzliche CSS-Klasse), entstand eine zweite Pille drumherum. */
.hf-post .wp-block-button:is(.hf-btn,.hf-btn--primary,.hf-btn--ghost){display:inline-block;padding:0;background:none;border:0;border-radius:0;box-shadow:none;filter:none;transform:none;font:inherit}
.hf-post .wp-block-button:is(.hf-btn,.hf-btn--primary,.hf-btn--ghost):hover{background:none;filter:none;transform:none}
.hf-post .wp-block-buttons{display:flex;flex-wrap:wrap;align-items:center;gap:var(--hf-s-16);margin:var(--hf-s-24) 0}
/* Formular im Fließtext: so breit wie die Lesespalte, zentriert, Feld und Button nebeneinander
   (bricht unter ~460 px Kartenbreite von selbst untereinander). (0,3,0) schlägt .hf-copy .hf-lead */
.hf-copy .hf-post > .hf-lead,
.hf-copy .hf-post > .elementor-widget-container > .hf-lead{max-width:none;margin:var(--hf-s-40) 0;padding:var(--hf-s-32)}
.hf-post .hf-lead .hf-lead__fields input{flex:1 1 220px}
.hf-post .hf-lead button.hf-btn.hf-btn{flex:1 1 auto}
@media(max-width:600px){.hf-copy .hf-post > .hf-lead{padding:var(--hf-s-24)}}

/* v2.29 · Produkt-Box im Fließtext (Lesetext, Beiträge): Packshots sind Querformat. Im quadratischen
   Rahmen oben angeschlagen blieb unter dem Bild eine weiße Fläche. Jetzt Bild in eigener Höhe, mittig zur Textspalte. */
@media(min-width:768px){.hf-post .hf-pbox{align-items:center}}
.hf-post .hf-pbox__media img{aspect-ratio:4/3;object-fit:cover;object-position:center} /* v2.31: Packshots sind 600×600 mit viel Weiß, cover nimmt oben/unten je 12,5 % weg, das Produkt wird 1,5× größer */ /* v2.30: nicht auto — WP setzt sizes="auto" mit contain:size, das Bild hat dann keine eigene Höhe */

/* ============ 30 · CartFlows-Button „Nächster Schritt“ (v2.32, v2.33) ============
   Widget „Next Step Button“ (a.wcf-next-step-link) sieht aus wie hf-btn--primary, aber nur
   innerhalb von .hf-sec: Die alten Anzeigen-Funnels nutzen keine System-Sections und bleiben
   unberührt. (0,5,2) schlägt Widget-Stile von Elementor (0,4,0), Kit (0,2,0) und .hf-copy a. */
body .hf-sec .cartflows-elementor__next-step-button-wrap a.elementor-button.wcf-next-step-link{
    display:inline-flex;align-items:center;justify-content:center;gap:10px;
    background:var(--hf-vermillion);background-image:none;color:var(--hf-white);border:0;border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;letter-spacing:0;text-transform:none;
    padding:15px 27px;min-height:0;box-shadow:0 8px 20px rgba(225,114,56,.32);text-decoration:none;
    transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}
body .hf-sec .cartflows-elementor__next-step-button-wrap a.elementor-button.wcf-next-step-link:hover,
body .hf-sec .cartflows-elementor__next-step-button-wrap a.elementor-button.wcf-next-step-link:focus-visible{
    background:var(--hf-vermillion);color:var(--hf-white);text-decoration:none;filter:brightness(1.05);transform:translateY(-2px);box-shadow:0 12px 26px rgba(225,114,56,.38)}
body .hf-sec .cartflows-elementor__next-step-button-wrap a.elementor-button.wcf-next-step-link:active{transform:translateY(0)}
body .hf-sec .cartflows-elementor__next-step-button-wrap a.wcf-next-step-link :is(span,.cartflows-elementor__next-step-button-title){
    font:inherit;color:inherit;letter-spacing:inherit;text-transform:inherit;text-decoration:none;margin:0;padding:0}
body .hf-sec .cartflows-elementor__next-step-button-wrap{display:flex;justify-content:flex-start}
body .hf-sec .hf-center .cartflows-elementor__next-step-button-wrap{justify-content:center}
@media(prefers-reduced-motion:reduce){body .hf-sec .cartflows-elementor__next-step-button-wrap a.wcf-next-step-link:hover{transform:none}}

/* ============ 31 · CartFlows-Checkout im HappyFam-Look (v2.34) ============
   Checkout-Widget von CartFlows (Elementor) in einer .hf-sec. Alte Funnels ohne hf-sec bleiben
   unberührt. Präfix .hf-sec #wcf-embed-checkout-form (1,1,0): schlägt CartFlows (.wcf-embed-checkout-form …)
   und Elementor-Widget-Stile (höchstens 1 ID). #payment #place_order bekommt drei IDs.
   Aufbau: #wcf-embed-checkout-form > .woocommerce > form.checkout
     > .wcf-product-option-wrap (Deine Wahl) · #customer_details (Rechnungsdaten, Anmerkungen)
     > .wcf-order-wrap > #order_review (Tabelle, #payment, #place_order, Gutschein, Order Bumps) */
.hf-sec #wcf-embed-checkout-form{font-family:var(--hf-font-body);color:var(--hf-ink);font-size:1rem;line-height:1.5}
.hf-sec #wcf-embed-checkout-form :is(h3,#your_products_heading,#billing_fields_heading,#order_review_heading,#order_payment_heading){
    font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1.25;letter-spacing:-.005em;color:var(--hf-ink);
    margin:var(--hf-s-32) 0 var(--hf-s-16);padding:0;border:0;text-transform:none}
.hf-sec #wcf-embed-checkout-form a{color:var(--hf-emerald);text-decoration:underline;text-underline-offset:3px}

/* Felder */
.hf-sec #wcf-embed-checkout-form .form-row{margin:0 0 var(--hf-s-16);padding:0}
.hf-sec #wcf-embed-checkout-form .form-row label{display:block;font-size:.875rem;font-weight:600;line-height:1.4;color:var(--hf-ink);margin:0 0 6px;position:static;opacity:1;transform:none}
.hf-sec #wcf-embed-checkout-form .form-row label .required{color:var(--hf-vermillion);text-decoration:none}
.hf-sec #wcf-embed-checkout-form :is(input.input-text,textarea,select,.select2-container .select2-selection--single){
    width:100%;box-sizing:border-box;background:var(--hf-white);color:var(--hf-ink);
    font-family:var(--hf-font-body);font-size:1rem;line-height:1.4;min-height:50px;height:auto;
    padding:13px 16px;border:1.5px solid rgba(12,31,24,.25);border-radius:12px;box-shadow:none;outline:0;
    transition:border-color .15s ease,box-shadow .15s ease}
.hf-sec #wcf-embed-checkout-form textarea{min-height:96px}
.hf-sec #wcf-embed-checkout-form .select2-container .select2-selection--single .select2-selection__rendered{padding:0;line-height:1.4;color:var(--hf-ink)}
.hf-sec #wcf-embed-checkout-form .select2-container .select2-selection--single .select2-selection__arrow{top:50%;right:12px;transform:translateY(-50%);height:20px}
.hf-sec #wcf-embed-checkout-form :is(input.input-text,textarea,select):focus,
.hf-sec #wcf-embed-checkout-form .select2-container--focus .select2-selection--single{border-color:var(--hf-emerald);box-shadow:0 0 0 3px rgba(5,97,70,.15)}
.hf-sec #wcf-embed-checkout-form ::placeholder{color:rgba(12,31,24,.45);opacity:1}
.hf-sec #wcf-embed-checkout-form input[type=checkbox],.hf-sec #wcf-embed-checkout-form input[type=radio]{accent-color:var(--hf-emerald);width:18px;height:18px}
/* Feldbreiten: v2.40 (Raster unten) */

/* Deine Wahl (Produktauswahl) */
.hf-sec #wcf-embed-checkout-form .wcf-product-option-wrap{margin:0;padding:0}
.hf-sec #wcf-embed-checkout-form .wcf-qty-options{border:0;background:none;padding:0}
.hf-sec #wcf-embed-checkout-form .wcf-qty-hidden{display:none}
.hf-sec #wcf-embed-checkout-form .wcf-item{display:flex;align-items:center;gap:var(--hf-s-12);flex:1;min-width:0}
.hf-sec #wcf-embed-checkout-form .wcf-item-image{flex:0 0 56px;height:56px;overflow:hidden;border-radius:var(--hf-r-s)}
.hf-sec #wcf-embed-checkout-form .wcf-qty-row{display:flex;align-items:center;gap:var(--hf-s-16);background:var(--hf-white);border:1.5px solid var(--hf-emerald);border-radius:var(--hf-r-m);padding:var(--hf-s-16) var(--hf-s-24);position:relative;box-shadow:none}
.hf-sec #wcf-embed-checkout-form .wcf-highlight-head{position:absolute;top:-11px;right:16px;background:var(--hf-emerald);color:var(--hf-creme);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:4px 10px;border-radius:999px;line-height:1.3}
.hf-sec #wcf-embed-checkout-form .wcf-highlight-head:empty{display:none}
.hf-sec #wcf-embed-checkout-form .wcf-item-image img{width:56px;height:56px;object-fit:cover;border-radius:var(--hf-r-s)}
.hf-sec #wcf-embed-checkout-form .wcf-item-wrap{font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;color:var(--hf-ink)}
.hf-sec #wcf-embed-checkout-form .wcf-item-subtext{font-size:.875rem;color:var(--hf-ink-muted);margin-top:2px}
.hf-sec #wcf-embed-checkout-form .wcf-price{font-family:var(--hf-font-display);font-weight:700;color:var(--hf-ink);margin-left:auto}

/* Bestellübersicht */
.hf-sec #wcf-embed-checkout-form table.shop_table{width:100%;border:0;border-collapse:collapse;background:none;margin:0 0 var(--hf-s-24);font-size:.9375rem}
.hf-sec #wcf-embed-checkout-form table.shop_table :is(th,td){padding:12px 0;border:0;border-bottom:1px solid var(--hf-line);background:none;color:var(--hf-ink);text-align:left;vertical-align:middle}
.hf-sec #wcf-embed-checkout-form table.shop_table :is(td.product-total,tfoot td){text-align:right}
.hf-sec #wcf-embed-checkout-form table.shop_table thead th{font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hf-ink-muted)}
.hf-sec #wcf-embed-checkout-form table.shop_table tr.order-total :is(th,td){font-family:var(--hf-font-display);font-weight:700;font-size:1.125rem;border-bottom:0}
.hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-thumbnail img{width:44px;height:44px;object-fit:cover;border-radius:8px}
.hf-sec #wcf-embed-checkout-form table.shop_table :is(.includes_tax,.wc-gzd-cart-info){font-size:.8125rem;color:var(--hf-ink-muted)}

/* Zahlungsarten */
.hf-sec #wcf-embed-checkout-form #payment{background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:0;margin:0 0 var(--hf-s-24);overflow:hidden}
.hf-sec #wcf-embed-checkout-form #payment ul.payment_methods{margin:0;padding:0;border:0;list-style:none}
.hf-sec #wcf-embed-checkout-form #payment ul.payment_methods > li{margin:0;padding:14px 18px;border-bottom:1px solid var(--hf-line);background:none;line-height:1.4}
.hf-sec #wcf-embed-checkout-form #payment ul.payment_methods > li:last-child{border-bottom:0}
.hf-sec #wcf-embed-checkout-form #payment ul.payment_methods > li > label{font-weight:600;font-size:.9375rem;color:var(--hf-ink);display:inline}
.hf-sec #wcf-embed-checkout-form #payment .payment_box{background:var(--hf-creme);color:var(--hf-ink-muted);font-size:.875rem;line-height:1.5;border-radius:var(--hf-r-s);margin:12px 0 0;padding:12px 14px}
.hf-sec #wcf-embed-checkout-form #payment .payment_box::before{display:none}
.hf-sec #wcf-embed-checkout-form #payment .place-order{padding:var(--hf-s-16) 18px 18px;margin:0;border-top:1px solid var(--hf-line)}
.hf-sec #wcf-embed-checkout-form :is(.woocommerce-terms-and-conditions-wrapper,.wc-gzd-checkbox-placeholder,.legal,.woocommerce-privacy-policy-text) p{font-size:.8125rem;line-height:1.5;color:var(--hf-ink-muted)}

/* Rechtstexte unter den Zahlarten (Germanized): klein, normal, gedämpft */
.hf-sec #wcf-embed-checkout-form :is(.wc-gzd-checkbox-placeholder,.woocommerce-terms-and-conditions-wrapper,.wc-gzd-checkout) :is(label,p,span){font-weight:400;font-size:.8125rem;line-height:1.5;color:var(--hf-ink-muted)}

/* Kaufbutton (PayPal behält seinen eigenen Button) */
.hf-sec #wcf-embed-checkout-form #payment #place_order,
.hf-sec #wcf-embed-checkout-form #order_review #place_order{
    width:100%;float:none;background:var(--hf-vermillion);background-image:none;color:var(--hf-white);border:0;border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1.2;letter-spacing:0;text-transform:none;
    padding:17px 27px;box-shadow:0 8px 20px rgba(225,114,56,.32);cursor:pointer;transition:transform .18s ease,filter .18s ease}
.hf-sec #wcf-embed-checkout-form #payment #place_order:hover,
.hf-sec #wcf-embed-checkout-form #order_review #place_order:hover{background:var(--hf-vermillion);color:var(--hf-white);filter:brightness(1.05);transform:translateY(-2px)}

/* Gutschein */
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field{display:flex;gap:12px;align-items:stretch;margin:0 0 var(--hf-s-24);padding:0;border:0}
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field .wcf-coupon-col-1{flex:1}
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field .wcf-coupon-col-2{flex:0 0 auto;width:auto}
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field :is(span){display:block;height:100%}
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field button.wcf-submit-coupon{
    height:100%;min-height:50px;width:auto;background:transparent;color:var(--hf-emerald);border:2px solid var(--hf-emerald);border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;padding:0 22px;box-shadow:none;cursor:pointer}
.hf-sec #wcf-embed-checkout-form .wcf-custom-coupon-field button.wcf-submit-coupon:hover{background:var(--hf-emerald);color:var(--hf-creme)}

/* Order Bumps */
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-wrap{background:var(--hf-white);border:1.5px dashed rgba(225,114,56,.6);border-radius:var(--hf-r-m);margin:0 0 var(--hf-s-16);padding:0;overflow:hidden;box-shadow:none}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-field-wrap{background:rgba(225,114,56,.08);border:0;border-bottom:1px solid rgba(225,114,56,.25);padding:14px 18px;margin:0}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-field-wrap label{display:flex;align-items:center;gap:10px;font-family:var(--hf-font-display);font-weight:700;font-size:1rem;line-height:1.35;color:var(--hf-ink);margin:0;cursor:pointer}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-field-wrap input[type=checkbox]{accent-color:var(--hf-vermillion);width:20px;height:20px;flex:0 0 auto;margin:0}
.hf-sec #wcf-embed-checkout-form .wcf-pointing-arrow{fill:var(--hf-vermillion);flex:0 0 auto} /* v2.47: Blinken steuert CartFlows (Bump → Stil), kein Override */
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-content{display:block;padding:0}
.hf-sec #wcf-embed-checkout-form .wcf-content-container{display:flex;gap:var(--hf-s-16);align-items:flex-start;padding:var(--hf-s-16) 18px}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-right{flex:1;min-width:0}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-left{flex:0 0 120px;max-width:120px}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-image img{width:100%;height:auto;border-radius:var(--hf-r-s)}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-bump-highlight{font-family:var(--hf-font-display);font-weight:700;font-size:1rem;color:var(--hf-ink);margin:0 0 6px}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-desc :is(p,li){font-size:.9375rem;line-height:1.55;color:var(--hf-ink-muted);margin:0 0 8px}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-desc del{opacity:.6}


@media(max-width:599px){
    .hf-sec #wcf-embed-checkout-form .wcf-content-container{flex-direction:column}
    .hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-left{flex-basis:auto;max-width:160px}
}

/* Login-Hinweis, Meldungen */
.hf-sec #wcf-embed-checkout-form :is(.woocommerce-info,.woocommerce-message,.woocommerce-error){background:var(--hf-white);border:1px solid var(--hf-line);border-left:3px solid var(--hf-emerald);border-radius:var(--hf-r-s);color:var(--hf-ink);font-size:.9375rem;padding:12px 16px;margin:0 0 var(--hf-s-16)}
.hf-sec #wcf-embed-checkout-form .woocommerce-error{border-left-color:var(--hf-vermillion)}
.hf-sec #wcf-embed-checkout-form :is(.woocommerce-info,.woocommerce-message,.woocommerce-error)::before{display:none}
@media(prefers-reduced-motion:reduce){.hf-sec #wcf-embed-checkout-form #place_order:hover{transform:none}}

/* v2.35 · Zitat-Karten in Creme-Abschnitten: weiß statt creme, sonst verschwindet die Karte im Grund
   (Checkout-Kopf). In weißen Abschnitten bleibt sie creme. */
.hf-sec:not([class*="hf-bg-"]) .hf-qcard:not(.hf-qcard--press){background:var(--hf-white);border:1px solid var(--hf-line)}
/* v2.35 · Zentrierter Text direkt vor einem Raster oder Track (ohne hf-sec-head): Luft dazwischen */
.e-con.hf-copy:not(.hf-sec-head) + .e-con:is(.hf-grid-2,.hf-grid-3,.hf-track),
.hf-copy:not(.hf-sec-head) + :is(.hf-grid-2,.hf-grid-3,.hf-track){margin-top:var(--hf-s-40)}

/* v2.36 · Checkout-Nachträge (Dev 20.10.)
   Zahlarten: CartFlows färbt die Liste grau (ul/li), die Beschreibung lag creme auf grau. */
.hf-sec #wcf-embed-checkout-form #payment :is(ul.payment_methods,ul.payment_methods > li){background:transparent;background-color:transparent}
.hf-sec #wcf-embed-checkout-form #payment ul.payment_methods > li > label img{display:inline-block;vertical-align:middle;margin-left:8px;max-height:24px;width:auto}
.hf-sec #wcf-embed-checkout-form #payment .payment_box .form-row{margin:0}
.hf-sec #wcf-embed-checkout-form #payment .payment_box label{font-weight:400;font-size:.875rem;color:var(--hf-ink)}
/* Gutschein: Elementor-Widget-Stil (#order_review button, 1 ID + 5 Klassen) → hier 2 IDs */
.hf-sec #wcf-embed-checkout-form #order_review .wcf-custom-coupon-field{display:flex;gap:12px;align-items:stretch}
.hf-sec #wcf-embed-checkout-form #order_review .wcf-custom-coupon-field :is(.wcf-coupon-col-1,.wcf-coupon-col-2) > span{display:block;height:100%}
.hf-sec #wcf-embed-checkout-form #order_review .wcf-custom-coupon-field input.wcf-coupon-code-input{height:50px;min-height:50px;margin:0}
.hf-sec #wcf-embed-checkout-form #order_review .wcf-custom-coupon-field button.wcf-submit-coupon{
    height:50px;min-height:50px;width:auto;margin:0;padding:0 24px;
    background:transparent;background-image:none;color:var(--hf-emerald);border:2px solid var(--hf-emerald);border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1rem;line-height:1;letter-spacing:0;text-transform:none;box-shadow:none}
.hf-sec #wcf-embed-checkout-form #order_review .wcf-custom-coupon-field button.wcf-submit-coupon:hover{background:var(--hf-emerald);border-color:var(--hf-emerald);color:var(--hf-creme)}
/* v2.70 · Reihenfolge wie /kasse/ (Button-Lösung, Germanized): Bumps → Zahlungsart → Rechtstexte → Gutschein →
   „Deine Bestellung“ + Tabelle als Karte → Kaufen. Die Überschrift steht außerhalb von #order_review (Kind von .wcf-order-wrap),
   deshalb #order_review mit display:contents: alle Teile werden Flex-Kinder von .wcf-order-wrap und lassen sich sortieren.
   Woo/CartFlows tauschen per Ajax nur Tabelle, Zahlung und Bumps aus, die Reihenfolge bleibt. (Ersetzt v2.36.)
   Mobil (≤ 768 px, Modern Checkout) blendet CartFlows Überschrift und Tabelle aus → display block/table: die Übersicht muss
   für die Button-Lösung auch mobil über dem Button stehen. */
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap{display:flex;flex-direction:column;position:relative}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review{display:contents}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > *,
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > *{order:4}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > .wcf-bump-order-grid-wrap,
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > .wcf-bump-order-grid-wrap{order:1}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > :is(.wcf-payment-option-heading,#order_payment_heading){order:2}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > #payment{order:3}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > .wcf-custom-coupon-field{order:5}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > .wc-gzd-order-submit{order:8}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > .ppc-button-wrapper{order:9}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap .wcf-bump-order-grid-wrap:empty{display:none}
/* Karte „Deine Bestellung“: Überschrift oben, Tabelle darunter, ein Rahmen (wie die Bestellübersicht auf /kasse/) */
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review_heading{
    order:6;display:block;margin:8px 0 0;padding:var(--hf-s-16) var(--hf-s-24) 8px;
    background:var(--hf-white);border:1px solid var(--hf-line);border-bottom:0;border-radius:var(--hf-r-m) var(--hf-r-m) 0 0}
.hf-sec #wcf-embed-checkout-form .wcf-order-wrap > #order_review > table.shop_table{
    order:7;display:table;width:100%;margin:0 0 var(--hf-s-24);padding:0 var(--hf-s-24) 8px;
    background:var(--hf-white);border:1px solid var(--hf-line);border-top:0;border-radius:0 0 var(--hf-r-m) var(--hf-r-m);
    border-collapse:separate;border-spacing:0}

/* v2.37 · Bestellübersicht im Checkout
   CartFlows setzt td.product-name auf display:flex (0,5,3) → die Zelle verliert ihre Tabellen-Linie
   (gestrichelt, nur halbe Breite). Zelle zurück auf table-cell, Flex auf den Wrapper. */
.hf-sec #wcf-embed-checkout-form table.shop_table thead{display:none} /* „Produkt / Zwischensumme“: bei einer Zeile überflüssig */
.hf-sec #wcf-embed-checkout-form table.shop_table tbody tr.cart_item td{display:table-cell;border:0;border-top:1px solid var(--hf-line);border-bottom:1px solid var(--hf-line);border-style:solid none;padding:14px 0;width:auto}
.hf-sec #wcf-embed-checkout-form table.shop_table tbody tr.cart_item td.product-name{display:table-cell;width:auto}
.hf-sec #wcf-embed-checkout-form table.shop_table tbody tr.cart_item td.product-total{text-align:right;white-space:nowrap;padding-left:16px;font-weight:600}
.hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-name-wrapper{display:flex;align-items:center;gap:var(--hf-s-12);flex-wrap:nowrap}
.hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-thumbnail{flex:0 0 48px;width:48px;margin:0}
.hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-thumbnail img{width:48px;height:48px;object-fit:cover;border-radius:8px;display:block}
.hf-sec #wcf-embed-checkout-form table.shop_table .wcf-product-image{display:block;flex:0 1 auto;min-width:0;margin:0;padding:0}
.hf-sec #wcf-embed-checkout-form table.shop_table .wcf-product-name{font-weight:600;font-size:.9375rem;line-height:1.35;color:var(--hf-ink);padding:0;margin:0}
.hf-sec #wcf-embed-checkout-form table.shop_table .product-quantity{font-weight:400;font-size:.875rem;color:var(--hf-ink-muted);white-space:nowrap;margin:0}
.hf-sec #wcf-embed-checkout-form table.shop_table tfoot :is(th,td){padding:10px 0;font-size:.9375rem;font-weight:400;border-bottom:0}
.hf-sec #wcf-embed-checkout-form table.shop_table tfoot tr.cart-subtotal :is(th,td){padding-top:14px}
.hf-sec #wcf-embed-checkout-form table.shop_table tfoot tr.order-total :is(th,td){border-top:1px solid var(--hf-line);padding-top:14px;font-family:var(--hf-font-display);font-weight:700;font-size:1.125rem}
.hf-sec #wcf-embed-checkout-form table.shop_table tfoot tr.order-total .includes_tax{display:none} /* steht als eigene Zeile darunter */
.hf-sec #wcf-embed-checkout-form table.shop_table tfoot tr:is(.order-tax,.tax-total) :is(th,td){padding-top:0;font-size:.8125rem;color:var(--hf-ink-muted)}

/* v2.38 · CartFlows-Step trägt body.woocommerce-checkout → Block 25 (/kasse/) gab main eine Lesebreite
   und Seitenrand. Auf Steps steuern die hf-sec-Container Breite und Rand selbst. */
body.woocommerce-checkout.single-cartflows_step main#content.site-main{max-width:none;margin:0;padding:0}
/* CartFlows gibt den Spalten mobil 15px 18px Innenabstand (doppelter Rand) */
.hf-sec #wcf-embed-checkout-form .woocommerce :is(.col2-set,.wcf-col2-set) :is(.col-1,.col-2,.wcf-col-1,.wcf-col-2),
.hf-sec #wcf-embed-checkout-form .woocommerce .wcf-order-wrap{padding:0;border:0;background:none}
/* Deine Wahl: Text bekommt den Platz, Preis bleibt rechts */
.hf-sec #wcf-embed-checkout-form .wcf-qty-row{flex-wrap:nowrap}
.hf-sec #wcf-embed-checkout-form .wcf-item-selector{flex:0 0 auto}
.hf-sec #wcf-embed-checkout-form .wcf-item-all-text{flex:1 1 auto;min-width:0;width:auto}
.hf-sec #wcf-embed-checkout-form :is(.wcf-item-wrap,.wcf-item-subtext){width:auto;max-width:none;word-break:normal;overflow-wrap:normal;hyphens:auto}
.hf-sec #wcf-embed-checkout-form .wcf-price{flex:0 0 auto;white-space:nowrap}
@media(max-width:599px){
    .hf-sec #wcf-embed-checkout-form .wcf-qty-row{padding:var(--hf-s-16);gap:var(--hf-s-12)}
    .hf-sec #wcf-embed-checkout-form .wcf-item-image{flex-basis:48px;height:48px}
    .hf-sec #wcf-embed-checkout-form .wcf-item-image img{width:48px;height:48px}
}
/* Bestellübersicht: Lieferzeit (Germanized) unter dem Namen, Menge direkt hinter dem Namen */
.hf-sec #wcf-embed-checkout-form table.shop_table td.product-name .wc-gzd-cart-info{margin:4px 0 0 60px;font-size:.8125rem;line-height:1.4;color:var(--hf-ink-muted)}
.hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-name-wrapper{justify-content:flex-start}
.hf-sec #wcf-embed-checkout-form table.shop_table .product-quantity{margin-left:4px}

/* v2.39 · Checkout mobil */
.hf-sec #wcf-embed-checkout-form table.shop_table .wcf-product-image{flex:0 1 auto;width:auto;max-width:none}
.hf-sec #wcf-embed-checkout-form table.shop_table .wcf-product-name{width:auto;max-width:none}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-left{width:auto}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-left img.wcf-image{max-width:100%}
@media(max-width:599px){
    .hf-sec #wcf-embed-checkout-form .wcf-content-container{gap:var(--hf-s-12)}
    .hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-left{flex:0 0 auto;max-width:120px;width:120px;margin:0;padding:0;text-align:left}
    .hf-sec #wcf-embed-checkout-form .wcf-bump-order-offer-content-right{width:100%;padding:0}
    .hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-thumbnail{flex-basis:40px;width:40px}
    .hf-sec #wcf-embed-checkout-form table.shop_table .wc-gzd-cart-item-thumbnail img{width:40px;height:40px}
    .hf-sec #wcf-embed-checkout-form table.shop_table td.product-name .wc-gzd-cart-info{margin-left:52px}
    .hf-sec #wcf-embed-checkout-form table.shop_table .wcf-product-name{font-size:.875rem}
}

/* v2.40 · Feld-Raster der Rechnungs-/Lieferfelder
   CartFlows: Wrapper display:flex + margin 0 -7px, Felder mit 7px Seitenpadding. Block 31 setzt das
   Feld-Padding auf 0 → der negative Rand ragte heraus. Jetzt: kein Minusrand, Abstand per gap. */
.hf-sec #wcf-embed-checkout-form :is(.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper,.woocommerce-additional-fields__field-wrapper){
    display:flex;flex-wrap:wrap;column-gap:16px;row-gap:0;margin:0;padding:0;width:100%}
.hf-sec #wcf-embed-checkout-form :is(.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper,.woocommerce-additional-fields__field-wrapper) > .form-row{
    flex:1 1 100%;width:100%;max-width:100%;float:none;clear:none;margin-left:0;margin-right:0;padding:0}
@media(min-width:600px){
    .hf-sec #wcf-embed-checkout-form :is(.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper) > .form-row:is(.form-row-first,.form-row-last,.wcf-column-50){flex:1 1 calc(50% - 8px);width:auto;max-width:calc(50% - 8px)}
    .hf-sec #wcf-embed-checkout-form :is(.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper) > .form-row.wcf-column-33{flex:1 1 calc(33.333% - 11px);width:auto;max-width:calc(33.333% - 11px)}
    .hf-sec #wcf-embed-checkout-form :is(.woocommerce-billing-fields__field-wrapper,.woocommerce-shipping-fields__field-wrapper) > .form-row.wcf-column-66{flex:1 1 calc(66.666% - 5px);width:auto;max-width:calc(66.666% - 5px)}
}

/* v2.41 · PLZ ein Drittel, Stadt den Rest */
@media(min-width:600px){
    .hf-sec #wcf-embed-checkout-form :is(#billing_city_field,#shipping_city_field){flex:1 1 0;max-width:none}
}

/* v2.42 · Bump-Bilder größer (Packshots haben viel Weißraum) */
.hf-sec #wcf-embed-checkout-form .wcf-content-container .wcf-bump-order-offer-content-left{flex:0 0 200px;width:200px;max-width:200px;align-self:flex-start}
.hf-sec #wcf-embed-checkout-form .wcf-content-container .wcf-bump-order-offer-content-left img.wcf-image{display:block;width:100%;height:auto;max-width:none}
@media(max-width:599px){
    .hf-sec #wcf-embed-checkout-form .wcf-content-container .wcf-bump-order-offer-content-left{flex:0 0 auto;width:100%;max-width:260px}
}

/* ============ 32 · CartFlows-Danke-Seite: Bestelldetails (v2.43) ============
   Widget „Order Details“ (CartFlows) in einer .hf-sec. Präfix .hf-sec #wcf-thankyou-wrap (1,1,0).
   Aufbau: #wcf-thankyou-wrap > .woocommerce-order > p.woocommerce-notice (ausgeblendet, die H1 sagt es)
     > ul.woocommerce-order-overview (Nummer, Datum, Gesamt, Zahlart)
     > section.woocommerce-order-downloads (nur bei Produkten mit PDF)
     > section.woocommerce-order-details (Tabelle) > section.woocommerce-customer-details (Adressen) */
.hf-sec #wcf-thankyou-wrap{font-family:var(--hf-font-body);color:var(--hf-ink);font-size:1rem;line-height:1.5;max-width:none;margin:0;padding:0}
.hf-sec #wcf-thankyou-wrap .woocommerce-order{display:flex;flex-direction:column;gap:var(--hf-s-24);margin:0;padding:0;max-width:none}
.hf-sec #wcf-thankyou-wrap .woocommerce-notice{display:none}
.hf-sec #wcf-thankyou-wrap :is(h2,h3,.woocommerce-order-downloads__title,.woocommerce-order-details__title,.woocommerce-column__title){
    font-family:var(--hf-font-display);font-weight:700;font-size:1.25rem;line-height:1.25;color:var(--hf-ink);margin:0 0 var(--hf-s-16);padding:0;background:none;text-align:left;text-transform:none}
.hf-sec #wcf-thankyou-wrap a{color:var(--hf-emerald)}
/* Karten */
.hf-sec #wcf-thankyou-wrap :is(.woocommerce-order-downloads,.woocommerce-order-details,.woocommerce-customer-details){
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:var(--hf-s-24);margin:0;box-shadow:none}
/* Übersicht: vier Kennzahlen nebeneinander */
.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--hf-s-16);
    list-style:none;margin:0;padding:var(--hf-s-24);background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m)}
@media(min-width:600px){.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview{grid-template-columns:repeat(4,minmax(0,1fr))}}
.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview li{margin:0;padding:0;border:0;float:none;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hf-ink-muted);line-height:1.4}
.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview li strong{display:block;margin-top:4px;font-family:var(--hf-font-display);font-size:1.0625rem;font-weight:700;letter-spacing:0;text-transform:none;color:var(--hf-ink)}
/* Tabellen */
.hf-sec #wcf-thankyou-wrap table.shop_table{width:100%;border:0;border-collapse:collapse;background:none;margin:0;font-size:.9375rem}
.hf-sec #wcf-thankyou-wrap table.shop_table :is(th,td){padding:12px 0;border:0;border-bottom:1px solid var(--hf-line);background:none;color:var(--hf-ink);text-align:left;vertical-align:middle;font-weight:400}
.hf-sec #wcf-thankyou-wrap table.shop_table thead th{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hf-ink-muted);padding-top:0}
.hf-sec #wcf-thankyou-wrap table.shop_table :is(td.product-total,tfoot td){text-align:right}
.hf-sec #wcf-thankyou-wrap table.shop_table thead th:last-child{text-align:right}
.hf-sec #wcf-thankyou-wrap table.shop_table td.product-name{font-weight:600}
.hf-sec #wcf-thankyou-wrap table.shop_table td.product-name a{color:var(--hf-ink);text-decoration:none}
.hf-sec #wcf-thankyou-wrap table.shop_table .wc-gzd-cart-info{font-size:.8125rem;font-weight:400;color:var(--hf-ink-muted);margin:2px 0 0}
.hf-sec #wcf-thankyou-wrap table.shop_table .product-quantity{font-weight:400;color:var(--hf-ink-muted)}
.hf-sec #wcf-thankyou-wrap table.shop_table tfoot tr:last-child :is(th,td){border-bottom:0}
.hf-sec #wcf-thankyou-wrap table.shop_table tfoot th{font-weight:400}
.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview::before,.hf-sec #wcf-thankyou-wrap ul.woocommerce-order-overview::after{content:none;display:none} /* v2.44: Woo-Clearfix belegte die erste Rasterzelle */
/* Downloads: „∞ / Niemals“ ausblenden, Button als kleine Pille */
.hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads :is(.download-remaining,.download-expires){display:none}
.hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads td.download-product a{font-weight:600;color:var(--hf-ink);text-decoration:none}
.hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads td.download-file{text-align:right}
.hf-sec #wcf-thankyou-wrap a.woocommerce-MyAccount-downloads-file.button{
    display:inline-flex;align-items:center;gap:8px;background:transparent;color:var(--hf-emerald);border:2px solid var(--hf-emerald);border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:.875rem;line-height:1.2;padding:8px 16px;text-decoration:none;text-align:left;white-space:normal;box-shadow:none}
.hf-sec #wcf-thankyou-wrap a.woocommerce-MyAccount-downloads-file.button::before{content:"↓";font-weight:700}
.hf-sec #wcf-thankyou-wrap a.woocommerce-MyAccount-downloads-file.button:hover{background:var(--hf-emerald);color:var(--hf-creme)}
@media(max-width:599px){
    .hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads thead{display:none}
    .hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads tr{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-bottom:1px solid var(--hf-line)}
    .hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads td{display:block;border:0;padding:0;text-align:left}
    .hf-sec #wcf-thankyou-wrap .woocommerce-table--order-downloads td::before{display:none}
}
/* Adressen */
.hf-sec #wcf-thankyou-wrap .woocommerce-customer-details address{font-style:normal;border:0;padding:0;line-height:1.6}
.hf-sec #wcf-thankyou-wrap .woocommerce-customer-details :is(.col2-set,.woocommerce-columns){display:grid;gap:var(--hf-s-24);grid-template-columns:1fr}
@media(min-width:600px){.hf-sec #wcf-thankyou-wrap .woocommerce-customer-details :is(.col2-set,.woocommerce-columns){grid-template-columns:1fr 1fr}}
.hf-sec #wcf-thankyou-wrap .woocommerce-customer-details :is(.col-1,.col-2,.woocommerce-column){width:auto;float:none;padding:0;margin:0}

/* v2.45/v2.46 · Deine Wahl: Typo der Produktzeile.
   CartFlows-Skin: .wcf-yp-skin-classic .wcf-qty-options .wcf-highlight .wcf-item-wrap{font-size:14px;font-weight:500 !important} */
.hf-sec #wcf-embed-checkout-form .wcf-qty-options .wcf-qty-row .wcf-item-wrap{font-family:var(--hf-font-display) !important;font-weight:700 !important;font-style:normal;font-size:1.0625rem !important;line-height:1.3;color:var(--hf-ink);margin:0}
.hf-sec #wcf-embed-checkout-form .wcf-qty-options .wcf-qty-row .wcf-display-attributes{display:none !important} /* Variante („Kurs: Wut & Ärger Onlinekurs“) doppelt zum Namen */
.hf-sec #wcf-embed-checkout-form .wcf-qty-options .wcf-qty-row .wcf-item-subtext{font-family:var(--hf-font-body) !important;font-style:normal;font-weight:400 !important;font-size:.875rem !important;line-height:1.45;color:var(--hf-ink-muted);opacity:1;margin:4px 0 0}
.hf-sec #wcf-embed-checkout-form .wcf-qty-options .wcf-qty-row .wcf-price :is(.wcf-display-price,.amount){font-family:var(--hf-font-display);font-weight:700 !important;font-size:1.0625rem;color:var(--hf-ink)}
.hf-sec #wcf-embed-checkout-form .wcf-qty-options .wcf-qty-row input.wcf-single-sel{accent-color:var(--hf-emerald);width:18px;height:18px;margin:0}

/* v2.47 · Bump-Preis: CartFlows hängt ihn selbst an die Beschreibung (mit Rabatt: del.wcf-regular-price + span.wcf-discount-price, ohne: span.wcf-normal-price) */
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-desc :is(.wcf-discount-price,.wcf-normal-price){display:inline-block;margin-top:4px;font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;color:var(--hf-ink)}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-desc del.wcf-regular-price{margin-right:6px;font-family:var(--hf-font-display);font-weight:400;font-size:1rem;color:var(--hf-ink-muted);opacity:.7}
.hf-sec #wcf-embed-checkout-form .wcf-bump-order-desc :is(strong,b){color:var(--hf-ink)}

/* v2.48 · Mengenfeld im Bump (ein/aus = CartFlows-Einstellung), nur Optik */
.hf-sec #wcf-embed-checkout-form .wcf-ob-qty-selection-wrap{display:inline-flex;align-items:center;margin-top:12px;border:1.5px solid rgba(12,31,24,.25);border-radius:999px;overflow:hidden;background:var(--hf-white);padding:3px;gap:2px}
.hf-sec #wcf-embed-checkout-form .wcf-ob-qty-selection-wrap .wcf-ob-qty-selection-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:0;border-radius:50%;background:none;color:var(--hf-ink);font-size:1rem;line-height:1;cursor:pointer;transition:background .15s ease}
.hf-sec #wcf-embed-checkout-form .wcf-ob-qty-selection-wrap .wcf-ob-qty-selection-btn:hover{background:var(--hf-creme)}
.hf-sec #wcf-embed-checkout-form .wcf-ob-qty-selection-wrap input.wcf-order-bump-quantity-updater{width:36px;height:32px;min-height:0;padding:0;border:0;border-radius:0;text-align:center;font-size:.9375rem;background:none;box-shadow:none;-moz-appearance:textfield}
.hf-sec #wcf-embed-checkout-form .wcf-ob-qty-selection-wrap input.wcf-order-bump-quantity-updater::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}


/* --- v2.51 · Kaufzeile: Woo-Clearfix raus (Flex-Items + Gap = Luft links/rechts) --- */
/* Woo: .woocommerce div.product form.cart::before = (0,3,3) → (0,4,2) */
.hf-buy.elementor-widget .elementor-add-to-cart form.cart::before,
.hf-buy.elementor-widget .elementor-add-to-cart form.cart::after{content:none;display:none}

/* --- v2.51 · Preis-Hinweise kompakt: Preis volle Zeile, MwSt. · Versand nebeneinander, Lieferzeit darunter --- */
.e-con.hf-price{flex-direction:row;flex-wrap:wrap;align-items:baseline;column-gap:0;row-gap:2px}
.e-con.hf-price > .elementor-widget{margin:0}
.e-con.hf-price > .elementor-widget-woocommerce-product-price,
.e-con.hf-price > .elementor-widget:not(.hf-price__note){flex:0 0 100%}
.e-con.hf-price > .elementor-widget-woocommerce-product-price{margin-bottom:4px}
.e-con.hf-price > .hf-price__note{flex:0 0 auto}
.e-con.hf-price > .hf-price__note + .hf-price__note::before{content:"·";display:inline-block;margin:0 .45em;font-size:.875rem;line-height:1.5;color:var(--hf-ink-muted)}
.e-con.hf-price > .hf-price__note,
.e-con.hf-price > .hf-price__note .elementor-widget-container{display:flex;align-items:baseline}
.e-con.hf-price .wc-gzd-additional-info{line-height:1.4}


/* --- v2.53 · Sprach-Sichtbarkeit (WPML): Klasse am Container/Widget setzen.
   Die Klasse wird mit dem Layout in die Übersetzung übernommen, das Ausblenden hängt am lang-Attribut. --- */
html:not([lang^="de"]) .hf-de-only{display:none !important}
html[lang^="de"] .hf-en-only{display:none !important}


/* --- v2.54 · Primär-Button auf dunklem Grund: Hover Creme mit Emerald-Text (Emerald auf Emerald war unsichtbar) --- */
:is(.hf-bg-emerald,.hf-bg-ink) .hf-btn.hf-btn--primary:hover,
:is(.hf-bg-emerald,.hf-bg-ink) .hf-btn.hf-btn--primary:focus-visible{
    background-color:var(--hf-creme);color:var(--hf-emerald);box-shadow:0 12px 26px rgba(0,0,0,.22);
}
:is(.hf-bg-emerald,.hf-bg-ink) .hf-btn.hf-btn--primary:is(:hover,:focus-visible) .elementor-heading-title,
:is(.hf-bg-emerald,.hf-bg-ink) .hf-btn.hf-btn--primary:is(:hover,:focus-visible) a{color:var(--hf-emerald)}

/* --- v2.54 · Kasse: Luft über „Jetzt kaufen“ (Germanized padding 36px 0 + Woo margin-bottom 36px) --- */
body.woocommerce-checkout .wc-gzd-checkout .wc-gzd-checkout-submit .wc-block-checkout__actions{padding:var(--hf-s-16) 0 0;margin-bottom:0}

/* --- v2.54 · Modern Cart: Empfehlungen (Cross-Sells) + Kassen-Button im System --- */
#moderncart-slide-out .moderncart-slide-out-recommendations{padding:var(--hf-s-24) var(--hf-s-16);border-top:1px solid var(--hf-line,rgba(12,31,24,.12));background:var(--hf-creme)}
#moderncart-slide-out .moderncart-slide-out-recommendations-header{
    font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;line-height:1.3;
    text-transform:none;letter-spacing:0;color:var(--hf-ink);text-align:left;margin:0 0 var(--hf-s-16)}
#moderncart-slide-out .moderncart-slide-out-recommendations .splide__slide{
    background:var(--hf-white);border-radius:var(--hf-r-m);padding:var(--hf-s-12);margin-right:var(--hf-s-12);
    display:flex;flex-direction:column;gap:6px;box-shadow:0 1px 3px rgba(12,31,24,.08)}
#moderncart-slide-out .moderncart-cart-item-recommended-image img{width:100%;height:auto;aspect-ratio:1;object-fit:contain;border-radius:var(--hf-r-s)}
#moderncart-slide-out .moderncart-slide-out-recommendations .moderncart-cart-item-product-link a{
    font-family:var(--hf-font-display);font-weight:700;font-size:.875rem;line-height:1.3;color:var(--hf-ink);text-decoration:none;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal}
#moderncart-slide-out .moderncart-cart-item-product-price{font-size:.875rem;font-weight:700;color:var(--hf-ink);margin:0}
#moderncart-slide-out .moderncart-cart-item-product-price del{font-weight:400;color:var(--hf-ink-muted);margin-right:4px}
#moderncart-slide-out .moderncart-cart-recommended-item-actions{margin-top:auto;margin-bottom:0} /* v2.57: cart.css 30px unten raus */
#moderncart-slide-out a.moderncart-btn-upsell.moderncart-button{
    display:flex;justify-content:center;align-items:center;width:100%;box-sizing:border-box;
    padding:8px 12px;border-radius:999px;border:2px solid var(--hf-emerald);background:transparent;color:var(--hf-emerald);
    font-family:var(--hf-font-display);font-weight:700;font-size:.8125rem;line-height:1.2;text-transform:none;letter-spacing:0;
    transition:background-color .18s ease,color .18s ease}
#moderncart-slide-out a.moderncart-btn-upsell.moderncart-button:hover,
#moderncart-slide-out a.moderncart-btn-upsell.moderncart-button:focus-visible{background:var(--hf-emerald);color:var(--hf-creme)}
#moderncart-slide-out a.moderncart-btn-upsell span{text-transform:none}
/* Zur Kasse: Primär-Pille */
#moderncart-slide-out .moderncart-slide-out-footer .moderncart-cart-total .wc-proceed-to-checkout a.checkout-button{
    border-radius:999px;background:var(--hf-vermillion);color:var(--hf-white);
    font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;text-transform:none;letter-spacing:0;
    box-shadow:0 8px 20px rgba(225,114,56,.32);transition:background-color .18s ease,transform .18s ease}
#moderncart-slide-out .moderncart-slide-out-footer .moderncart-cart-total .wc-proceed-to-checkout a.checkout-button:hover{background:var(--hf-emerald);transform:translateY(-2px)}
#moderncart-slide-out .wc-proceed-to-checkout a.checkout-button .btn-text{color:inherit}
@media(prefers-reduced-motion:reduce){#moderncart-slide-out .moderncart-slide-out-footer .moderncart-cart-total .wc-proceed-to-checkout a.checkout-button:hover{transform:none}}


/* --- v2.55 · Modern Cart geöffnet: Seite abdunkeln, Panel mit Schatten --- */
#moderncart-slide-out-modal.moderncart-show::before{
    content:"";position:fixed;inset:0;z-index:-1;background:rgba(12,31,24,.45);pointer-events:none;
    animation:hf-mc-fade .25s ease both}
@keyframes hf-mc-fade{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){#moderncart-slide-out-modal.moderncart-show::before{animation:none}}
#moderncart-slide-out-modal .moderncart-panel{box-shadow:-12px 0 40px rgba(12,31,24,.22)}
#moderncart-slide-out .moderncart-slide-out-footer .moderncart-cart-total .wc-proceed-to-checkout a.checkout-button{
    justify-content:center;gap:8px;padding:14px 20px;line-height:1.2}
/* Empfehlungs-Buttons einzeilig */
#moderncart-slide-out .moderncart-slide-out-recommendations a.moderncart-btn-upsell.moderncart-button{
    white-space:normal;height:auto;min-height:34px;min-width:0;padding:6px 8px;font-size:.75rem;line-height:1.15;text-align:center}
#moderncart-slide-out .moderncart-slide-out-recommendations a.moderncart-btn-upsell span{white-space:normal}

/* ============ Ende hf-system.css v2.58 ============ */

/* ============ 32 · Alte Funnels: Buttons wie im alten Shop (v2.59) ============
   Gilt nur auf CartFlows-Steps aus dem alten Shop (Body-Klasse hf-legacy-step, hf-core 1.21.0).
   Im alten Shop kamen Farbe, Schrift und Hover vom Astra-Theme, die Widgets selbst haben nur den
   Normalzustand. Ohne Astra greift beim Hover der Elementor-Kit-Button (Orange, Emerald, Display-Schrift).
   !important, weil Widget-Styles (.elementor-element-xyz .elementor-button = 0,4,0) und Kit-Hover
   je Seite als Inline-CSS kommen. Neue Varianten (hf-sec) sind nicht betroffen.
   Montserrat muss geladen sein (Elementor › Benutzerdefinierte Schriftarten oder Google Fonts lokal),
   sonst greift die Fallback-Schrift. */
html body.hf-legacy-step .elementor-button,
html body.hf-legacy-step .elementor-button:is(:hover,:focus,:focus-visible,:active,:visited){
    background-color:#D4B25C !important;background-image:none !important;color:#FFFFFF !important;
    border-color:transparent !important;box-shadow:none !important;transform:none !important;
    font-family:"Montserrat",var(--hf-font-body),sans-serif !important;font-weight:700 !important;
    transition:background-color .2s ease}
html body.hf-legacy-step .elementor-button:is(:hover,:focus-visible){background-color:#C4A04A !important}
html body.hf-legacy-step .elementor-button:focus-visible{outline:2px solid #0C1F18;outline-offset:3px}
html body.hf-legacy-step .elementor-button :is(span,.elementor-button-text,.elementor-button-icon,.cartflows-elementor__next-step-button-title,.cartflows-elementor__next-step-button-sub-title){
    font-family:inherit !important;font-weight:inherit !important;color:inherit !important}
html body.hf-legacy-step .elementor-button svg{fill:currentColor}
@media(prefers-reduced-motion:reduce){html body.hf-legacy-step .elementor-button{transition:none}}

/* ============ 33 · Modern Cart: Slider-Navigation (v2.60) ============
   Splide-Punkte und -Pfeile sind <button>. Ohne eigene Regel greift der Kit-Button (Farbe, Padding,
   Hover Orange) und splide.min.css legt die Punkte absolut über den Kartenfuß. Modern Cart baut die
   Punkte-Liste bei leerem Warenkorb zweimal ein, die zweite wird ausgeblendet. ID-Präfix (1,x,x)
   schlägt Kit (.elementor-kit-6 button) und splide.min.css. */
#moderncart-slide-out-modal .splide__pagination{
    position:static;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;
    margin:var(--hf-s-16) 0 0;padding:0;list-style:none;pointer-events:auto;transform:none;inset:auto}
#moderncart-slide-out-modal .splide__pagination ~ .splide__pagination{display:none}
#moderncart-slide-out-modal .splide__pagination li{margin:0;padding:0;line-height:0;list-style:none}
#moderncart-slide-out-modal button.splide__pagination__page{
    display:block;width:8px;height:8px;min-width:0;min-height:0;margin:0;padding:0;
    border:0;border-radius:50%;background:rgba(12,31,24,.2);box-shadow:none;opacity:1;
    font-size:0;line-height:0;transform:none;cursor:pointer;transition:background-color .2s ease,transform .2s ease}
#moderncart-slide-out-modal button.splide__pagination__page:hover{background:rgba(12,31,24,.4)}
#moderncart-slide-out-modal button.splide__pagination__page.is-active{background:var(--hf-emerald);transform:scale(1.25)}
#moderncart-slide-out-modal button.splide__pagination__page:focus-visible{outline:2px solid var(--hf-emerald);outline-offset:3px}
#moderncart-slide-out-modal button.splide__arrow{
    width:36px;height:36px;min-height:0;padding:0;border:1px solid rgba(12,31,24,.12);border-radius:50%;
    background:var(--hf-white,#fff);box-shadow:0 2px 8px rgba(12,31,24,.1);opacity:1;
    display:flex;align-items:center;justify-content:center}
#moderncart-slide-out-modal button.splide__arrow:hover{background:var(--hf-creme);border-color:rgba(12,31,24,.2)}
#moderncart-slide-out-modal button.splide__arrow:disabled{opacity:.35}
#moderncart-slide-out-modal button.splide__arrow svg{width:14px;height:14px;fill:var(--hf-emerald)}
@media(prefers-reduced-motion:reduce){#moderncart-slide-out-modal button.splide__pagination__page{transition:none}}

/* ============ 34 · Modern Cart: Empfehlungen im leeren Warenkorb (v2.61) ============
   Eigene Klassen (moderncart-empty-cart-recommendation-slider-item), Block 33 greift dort nicht.
   Bild vorher quadratisch mit contain (Block „recommended-image img“), Querformat bekam Leerraum. */
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item{display:flex;flex-direction:column;text-align:left}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-recommended-image{margin:0;padding:0}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-recommended-image img{
    display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;background:var(--hf-white,#fff);border-radius:var(--hf-r-m);margin:0}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-product-link{margin:var(--hf-s-16) 0 4px;padding:0}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-product-link a{
    color:var(--hf-ink);font-weight:700;font-size:1.05rem;line-height:1.3;text-decoration:none}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-product-link a:hover{color:var(--hf-emerald)}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-product-description{margin:0 0 8px;padding:0;font-size:.9375rem;line-height:1.45;color:var(--hf-ink-muted)}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-item-product-price{margin:0 0 var(--hf-s-16);padding:0;font-weight:700;color:var(--hf-ink)}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider-item .moderncart-cart-recommended-item-actions{margin:0;padding:0}
#moderncart-slide-out-modal a.moderncart-btn-upsell,
#moderncart-slide-out-modal a.moderncart-btn-upsell:hover,
#moderncart-slide-out-modal a.moderncart-btn-upsell span{text-decoration:none}
#moderncart-slide-out-modal .moderncart-empty-cart-recommendation-slider .splide__pagination{margin-top:var(--hf-s-24)}

/* ============ 35 · Kasse: doppelte Lieferzeit (v2.63) ============
   Germanized gibt die Lieferzeit einmal als Absatz und zusätzlich als Artikel-Meta mit Roh-Label
   „gzd-delivery_time:“ aus (sichtbar in den Kassen der alten Funnels). Die Meta-Zeile nur dann weg,
   wenn der Absatz davor schon da ist. */
td.product-name > .delivery-time-info ~ dl.variation .variation-gzd-delivery_time,
.cart_item .delivery-time-info ~ dl.variation .variation-gzd-delivery_time{display:none !important}

/* ============ 36 · Sprach-Klassen (v2.64) ============
   Für Abschnitte, die es nur in einer Sprache geben soll (KlickTipp-Formulare sind nur deutsch).
   Klasse am Container setzen; WPML schreibt die Sprache ins lang-Attribut von <html>. */
html:not([lang^="de"]) .hf-de-only,
html[lang^="de"] .hf-en-only{display:none !important}

/* ============ 37 · Zahlungsarten-Seite (v2.66) ============
   /bezahlmoeglichkeiten/: Germanized gibt die aktiven Zahlungsarten als ul.payment_methods aus
   (li.payment_method_* > label mit Text + Logo-img, darunter div.payment_box > p). Liegt im
   hf-post-Container der Rechtsseiten. Jede Zahlungsart als Karte: Name links, Logo rechts,
   Beschreibung darunter. Leere Beschreibungen (Klarna) verschwinden. Welche Arten erscheinen,
   steuern die Zahlungs-Plugins (PayPal: MyBank/EPS dort abschalten), nicht dieses CSS. */
.hf-post ul.payment_methods{list-style:none;margin:0;padding:0;display:grid;gap:var(--hf-s-12)}
.hf-post ul.payment_methods > li{
    margin:0;padding:var(--hf-s-16) var(--hf-s-24);
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);
    display:flex;flex-direction:column;gap:6px;
}
.hf-post ul.payment_methods > li > label{
    display:flex;align-items:center;justify-content:space-between;gap:var(--hf-s-16);
    margin:0;font-weight:700;font-size:1.05rem;line-height:1.3;color:var(--hf-ink);cursor:default;
}
.hf-post ul.payment_methods > li > label img{
    flex:none;height:24px;width:auto;max-width:170px;object-fit:contain;
    margin:0;border-radius:0;box-shadow:none;
}
.hf-post ul.payment_methods .payment_box{margin:0;padding:0;background:none;border:0}
.hf-post ul.payment_methods .payment_box p{margin:0;font-size:.95rem;line-height:1.55;color:var(--hf-ink-muted)}
.hf-post ul.payment_methods .payment_box:not(:has(p:not(:empty))){display:none}

/* ============ 38 · /warenkorb/ leer (v2.67) ============
   Leerzustand des Woo-Cart-Blocks (.wp-block-woocommerce-empty-cart-block). Inhalt im Block-Editor:
   H2 „Dein Warenkorb ist leer.“ · Absatz · Buttons-Block mit „Zum Shop“. Der Kit-Button-Reset lässt
   den Core-Button sonst dunkel mit unlesbarem Text zurück. Icon kommt von Woo als mask-image auf ::before
   (mask-size 5em fest), deshalb Maske auf contain und Farbe über background-color. */
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block{
    display:flex;flex-direction:column;align-items:center;gap:var(--hf-s-16);
    padding:var(--hf-s-40) var(--hf-pad-x) var(--hf-s-64);text-align:center;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block > *{margin:0;max-width:560px}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wc-block-cart__empty-cart__title{
    font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h2-sm);line-height:1.1;color:var(--hf-ink);
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .with-empty-cart-icon::before{
    width:64px;height:64px;margin:0 auto var(--hf-s-12);
    mask-size:contain;-webkit-mask-size:contain;background-color:var(--hf-emerald); /* Woo setzt mask-size 5em, bei 64px Box sonst abgeschnitten */
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block p{font-size:1.0625rem;line-height:1.6;color:var(--hf-ink-muted);text-wrap:pretty}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-buttons{margin-top:var(--hf-s-12);justify-content:center}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-button .wp-block-button__link{
    all:unset;box-sizing:border-box;display:inline-flex;align-items:center;gap:10px;
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;
    padding:15px 27px;border-radius:999px;cursor:pointer;
    background:var(--hf-vermillion);color:var(--hf-white);box-shadow:0 8px 20px rgba(225,114,56,.32);
    transition:transform .18s ease,filter .18s ease;
}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-button .wp-block-button__link:hover{transform:translateY(-2px);filter:brightness(1.05)}
body.woocommerce-cart .wp-block-woocommerce-empty-cart-block .wp-block-button .wp-block-button__link:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}

/* ============ 39 · /danke/: Instant Thank You der globalen Kasse (v2.68, v2.74, v2.76) ============
   v2.74: alle Regeln unter #wcf-instant-thankyou (1,x,x). CartFlows instant-thankyou.css arbeitet mit 5 Klassen
   (.cartflows-instant-checkout .wcf-instant-thankyou … .wcf-ic-box: Polster 0 16px, Button 14px/5px Radius) und schlug (0,3,1).
   Markup: CartFlows 3.3 „Instant Layout“ (body.woocommerce-order-received #wcf-instant-thankyou .wcf-instant-thankyou).
   Links Status + Karten (.wcf-ic-box) + Downloads, rechts die Bestellübersicht (.wcf-ic-layout-right-column).
   Primär-/Sekundärfarbe und Schriftfamilie kommen aus CartFlows → Store Checkout → Design (nicht per CSS),
   hier: Flächen, Radien, Display-Schrift der Überschriften, Download-Pillen, Button. */
html body.woocommerce-order-received.hf-legacy-step.hf-legacy-step{background:var(--hf-creme) !important} /* Block 32 erzwingt Weiß für alte Funnels, die Danke-Seite gehört zum System */
body.woocommerce-order-received #wcf-instant-thankyou{background:var(--hf-creme);font-family:var(--hf-font-body);color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-layout-left-column{padding-top:var(--hf-s-40)}
/* Status: Icon in Emerald, Bestellnummer als Eyebrow, Danke als Display */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-status__left-icon{color:var(--hf-emerald)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-status__left-icon svg{width:56px;height:56px;stroke:currentColor}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-status p{margin:0 0 4px;font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--hf-emerald)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-status h2{margin:0;font-family:var(--hf-font-display);font-weight:800;font-size:var(--hf-h2-sm);line-height:1.05;letter-spacing:-.01em;color:var(--hf-ink)}
/* Karten */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-box{
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);
    padding:var(--hf-s-24);box-shadow:none;margin-top:var(--hf-s-16);
}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-box h2,
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-box .woocommerce-order-downloads__title{
    font-family:var(--hf-font-display);font-weight:800;font-size:1.25rem;line-height:1.2;color:var(--hf-ink);margin:0 0 var(--hf-s-12);padding:0;border:0;
}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-box p{margin:0;font-size:1rem;line-height:1.55;color:var(--hf-ink-muted)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-review-customer__row{padding:var(--hf-s-12) 0;border-bottom:1px solid var(--hf-line)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-review-customer__row:last-child{border-bottom:0;padding-bottom:0}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-review-customer__row:first-child{padding-top:0}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-review-customer__label label{font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hf-ink-muted)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-review-customer__content :is(p,address){font-style:normal;color:var(--hf-ink);font-size:1rem;line-height:1.55}
/* Downloads: Tabelle flach, „∞ / Nie“ raus, Links als Pillen */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads{background:var(--hf-white)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads{border:0;margin:0;font-size:.95rem}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads :is(th,td){border:0;border-bottom:1px solid var(--hf-line);padding:var(--hf-s-12) 0;background:none;vertical-align:middle}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads tr:last-child td{border-bottom:0}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads thead th{font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--hf-ink-muted)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads :is(.download-remaining,.download-expires){display:none}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads td.download-product{font-weight:600;color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads td.download-file{text-align:right}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads a.woocommerce-MyAccount-downloads-file.button{
    display:inline-flex;align-items:center;gap:8px;background:transparent;color:var(--hf-emerald);border:2px solid var(--hf-emerald);border-radius:999px;
    font-family:var(--hf-font-display);font-weight:700;font-size:.875rem;line-height:1.2;padding:8px 16px;text-decoration:none;text-align:left;white-space:normal;box-shadow:none;
}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads a.woocommerce-MyAccount-downloads-file.button::before{content:"↓";font-weight:700}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads a.woocommerce-MyAccount-downloads-file.button:hover{background:var(--hf-emerald);color:var(--hf-creme)}
/* Weiter einkaufen */
body.woocommerce-order-received #wcf-instant-thankyou a.wcf-ic-button.wcf-ic-button--ty{
    display:inline-flex;align-items:center;gap:10px;margin-top:var(--hf-s-24);
    font-family:var(--hf-font-display);font-weight:700;font-size:1.1875rem;line-height:1;padding:15px 27px;border-radius:999px;border:0;
    background:var(--hf-vermillion);color:var(--hf-white);box-shadow:0 8px 20px rgba(225,114,56,.32);text-decoration:none;
    transition:transform .18s ease,filter .18s ease;
}
body.woocommerce-order-received #wcf-instant-thankyou a.wcf-ic-button.wcf-ic-button--ty:hover{transform:translateY(-2px);filter:brightness(1.05);background:var(--hf-vermillion);color:var(--hf-white)}
body.woocommerce-order-received #wcf-instant-thankyou a.wcf-ic-button.wcf-ic-button--ty:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:3px}
/* Rechts: Bestellübersicht als weiße Karte */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-cartflows-review-order-wrapper{background:transparent}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-layout-right-column{background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-order-review-heading--ty{font-family:var(--hf-font-display);font-weight:800;font-size:1.5rem;line-height:1.1;color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-order-review-heading--ty svg{color:var(--hf-emerald)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-image--ty img{border-radius:var(--hf-r-s);border:1px solid var(--hf-line)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-order-item__info-qty{background:var(--hf-emerald);color:var(--hf-creme)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-order-item__info-name{font-weight:600;color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals{color:var(--hf-ink-muted);font-size:.95rem}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals.total{color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals.total .wcf-ic-cart-totals__label span{font-family:var(--hf-font-display);font-weight:800;font-size:1.25rem}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals.total .wcf-ic-cart-totals__value .amount{font-family:var(--hf-font-display);font-weight:800;font-size:1.5rem;color:var(--hf-ink)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals__currency-badge{border:1px solid var(--hf-line);border-radius:6px;color:var(--hf-ink-muted)}
/* v2.72 · Summenzeilen: Label links, Wert rechts mit Abstand; langer Versandtext klein und gedämpft, Zusatz (<small>) darunter */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals{gap:var(--hf-s-16);align-items:flex-start}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals__label{flex:0 0 auto}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals__value{flex:0 1 auto;min-width:0;text-align:right}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals--shipping .wcf-ic-cart-totals__value{font-size:.875rem;line-height:1.45;color:var(--hf-ink-muted)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-cart-totals__value small{display:block;margin-top:2px;font-size:.75rem;color:var(--hf-ink-muted)}
/* v2.72 · Downloads: CartFlows frontend.css färbt den Abschnitt grau (#f1f1f1) → transparent in der weißen Karte.
   Ohne Download-Zeilen (Bestellung erstattet/unbezahlt, keine Download-Rechte) bleibt nur der Tabellenkopf → Box aus.
   (0,5,3) gegen .cartflows-instant-checkout .wcf-instant-thankyou .wcf-ic-box (0,3,0) */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-order-downloads{background:transparent;padding:0;margin:0;border:0}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads.wcf-ic-box:not(:has(tbody tr)){display:none}
/* v2.76 · Kopf: CartFlows setzt den Logo-Rahmen auf 130×40 (Einstellung Logo-Breite). Das Bild (380×145) wurde bei 130 px Breite
   50 px hoch und ragte über die Kopflinie → Bild füllt die Rahmenhöhe, Breite ergibt sich (ca. 105 px). Gilt für Instant-Kasse und Danke. */
body.cartflows-instant-checkout .main-header--site-logo .custom-logo-link{display:block;height:100%}
body.cartflows-instant-checkout .main-header--site-logo img.custom-logo{display:block;height:100%;width:auto;max-width:100%}
/* v2.76 · Desktop: rechte Spalte läuft über die volle Höhe → Seitenpanel mit Linie links statt Karte (Ecken stießen an Kopf und Seitenende).
   Die eingeklappte Übersicht mobil (außerhalb von .wcf-ic-layout-container) behält die Karte. */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-layout-container > .wcf-ic-layout-right-column{border:0;border-left:1px solid var(--hf-line);border-radius:0}
/* v2.76 · CartFlows färbt body.cartflows-default #f5f5f5 → blitzte unter den Spalten durch (eingeloggt mit Admin-Leiste sichtbar) */
body.woocommerce-order-received.cartflows-instant-checkout{background:var(--hf-creme)}
/* Mobile: eingeklappte Übersicht oben */
body.woocommerce-order-received #wcf-instant-thankyou .wcf-order-review-toggle{background:var(--hf-white);border-bottom:1px solid var(--hf-line)}
body.woocommerce-order-received #wcf-instant-thankyou .wcf-order-review-toggle-text{font-weight:700;color:var(--hf-emerald)}
@media(max-width:599px){
    body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads thead{display:none}
    body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads td{display:block;padding:6px 0;text-align:left}
    body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads td.download-file{text-align:left;padding-bottom:var(--hf-s-12)}
    body.woocommerce-order-received #wcf-instant-thankyou .wcf-ic-ty-downloads .woocommerce-table--order-downloads td::before{content:none}
}
/* ============ 40 · CartFlows-Kassen: Versand-Umschalter + Lieferzeit (v2.69) ============
   a) CartFlows 3.3 rendert „Versand“ in den Summen als <button class="wcf-shipping-toggle">. Die Button-Farben
      des Checkout-Widgets (Elementor, pro Seite: .elementor-XXXX … #order_review button, 1,5,1 / Hover 1,6,1)
      treffen ihn mit → Coral-Fläche. Hier (1,5,5 / 1,6,5) zurück auf Text. Kaufbutton/Gutschein bleiben unberührt.
   b) Alte Funnels (hf-legacy-step, Block 31 gilt dort nicht): td.product-name ist Flex (Bild+Name · Menge · Lieferzeit),
      der Germanized-Absatz bringt 16 px margin-top mit → „× 1Lieferzeit“ versetzt und ohne Abstand. */
html body .wcf-embed-checkout-form .woocommerce #order_review table.shop_table tr.woocommerce-shipping-totals button.wcf-shipping-toggle,
html body .wcf-embed-checkout-form .woocommerce #order_review table.shop_table tr.woocommerce-shipping-totals button.wcf-shipping-toggle:is(:hover,:focus,:active){
    background:transparent;border:0;border-radius:0;box-shadow:none;
    padding:0;margin:0;min-height:0;width:auto;
    color:inherit;font:inherit;letter-spacing:inherit;text-transform:none;
}
html body .wcf-embed-checkout-form .woocommerce #order_review table.shop_table tr.woocommerce-shipping-totals button.wcf-shipping-toggle:focus-visible{outline:2px solid currentColor;outline-offset:3px}
html body.hf-legacy-step .wcf-embed-checkout-form table.shop_table td.product-name{column-gap:12px;row-gap:4px}
html body.hf-legacy-step .wcf-embed-checkout-form table.shop_table td.product-name > .delivery-time-info{margin:0;font-size:.875rem;line-height:1.4}
html body.hf-legacy-step .wcf-embed-checkout-form table.shop_table td.product-name > .product-quantity{font-size:.875rem;line-height:1.4;white-space:nowrap}

/* ============ 41 · /kasse/: Woo-Block-Kasse, Optionslisten wie die Funnel-Kassen (v2.73) ============
   Die globale Kasse ist die Woo-Block-Kasse (Seite 1658, body.woocommerce-checkout), nicht CartFlows.
   Block 26 (Kasse) bleibt Grundlage, hier nur Optionslisten, Abholstation (Shiptastic) und Checkbox.
   Vorbild: Block 31 (Funnel-Kasse, #payment als weiße Karte). Präfix mit .wc-block-checkout (0,3,1)+,
   schlägt die Highlight-Regeln von wc-blocks (0,2,0) und Block 26. */

/* Optionslisten (Versand + Zahlung) als weiße Karte */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control{
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);overflow:hidden;box-shadow:none;margin:0;
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control::after,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control-accordion-option::after,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control > .wc-block-components-radio-control__option::after{display:none}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control-accordion-option,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control > .wc-block-components-radio-control__option{
    margin:0;border:0;border-bottom:1px solid var(--hf-line);border-radius:0;box-shadow:none;background:transparent;
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control-accordion-option:last-child,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control > .wc-block-components-radio-control__option:last-child{border-bottom:0}
/* gewählte Option: keine Umrandung, die Karte bleibt ruhig (wie Funnel) */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control--highlight-checked .wc-block-components-radio-control-accordion-option--checked-option-highlighted,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control--highlight-checked label.wc-block-components-radio-control__option--checked-option-highlighted{box-shadow:none;border-radius:0}

/* Zeile */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__option{
    padding:18px var(--hf-s-24) 18px 64px;margin:0;min-height:0;
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__label,
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__label > span{
    font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;line-height:1.3;color:var(--hf-ink);
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__secondary-label{
    font-family:var(--hf-font-display);font-weight:700;font-size:.875rem;letter-spacing:.06em;text-transform:uppercase;color:var(--hf-emerald);
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__description{color:var(--hf-ink-muted);font-size:.875rem}

/* Radio: Ring ruhig, gewählt mit Punkt in Vermillion */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input{
    left:var(--hf-s-24);width:22px;height:22px;min-width:22px;min-height:22px;border:1.5px solid rgba(12,31,24,.35);background:var(--hf-white);box-shadow:none;
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input:checked{border-color:var(--hf-vermillion)}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input:checked::before{background:var(--hf-vermillion);width:10px;height:10px;min-width:10px;min-height:10px}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input:focus-visible{outline:3px solid var(--hf-emerald);outline-offset:2px}

/* Zahlungsarten: Logos direkt hinter dem Namen, Beschreibung als Creme-Feld */
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-radio-control__label{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;width:100%}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-label{display:inline-flex;align-items:center;gap:8px;font:inherit;color:inherit}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-icons{margin:0 0 0 12px;flex:0 0 auto;justify-content:flex-start;width:auto}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-label :is(img,svg){margin-left:12px}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-label :is(img,svg):first-child{margin-left:0}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-icons:empty{display:none}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-icon{margin:0 6px 0 0;height:26px;width:auto;border-radius:4px}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-radio-control-accordion-content{
    margin:0 var(--hf-s-24) var(--hf-s-24);padding:var(--hf-s-16) 20px;background:var(--hf-creme);border-radius:var(--hf-r-s);
    color:var(--hf-ink-muted);font-size:.95rem;line-height:1.5;
}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-radio-control-accordion-content:empty{display:none}

/* Versandoptionen: Versandart zuerst, darunter die Abholstation als eigene Karte */
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-block-components-shipping-rates-control{display:flex;flex-direction:column;gap:var(--hf-s-16)}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-block-components-shipping-rates-control > :empty{display:none}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-block-components-shipping-rates-control__package{order:-1;margin:0;padding:0;border:0}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-pickup-location-delivery{
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:var(--hf-s-24);margin:0;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-pickup-location-delivery h4{
    font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;line-height:1.3;color:var(--hf-ink);margin:0 0 var(--hf-s-16);padding:0;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .pickup-location-search-fields{display:flex;flex-wrap:wrap;gap:var(--hf-s-12);margin:0 0 var(--hf-s-12)}
body.woocommerce-checkout .wc-block-checkout #shipping-option .pickup-location-search-fields .wc-block-components-text-input{flex:1 1 200px;margin:0}
body.woocommerce-checkout .wc-block-checkout #shipping-option .pickup-location-search-fields .wc-block-components-text-input:last-child{flex:0 1 160px}
body.woocommerce-checkout .wc-block-checkout #shipping-option .pickup-location-search-results{margin:0}
/* Auswahlfeld Abholstation (WP-Combobox) wie die übrigen Felder */
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-combobox-control__suggestions-container{
    background:var(--hf-white);border:1.5px solid var(--hf-line);border-radius:var(--hf-r-s);box-shadow:none;min-height:50px;padding:0 12px;
    display:flex;flex-direction:column;justify-content:center;transition:border-color .15s ease,box-shadow .15s ease;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-combobox-control__suggestions-container:focus-within{border-color:var(--hf-emerald);box-shadow:0 0 0 3px rgba(5,97,70,.15)}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-combobox-control__input{
    font-family:var(--hf-font-body);font-size:1rem;color:var(--hf-ink);min-height:46px;padding:0;border:0;box-shadow:none;background:transparent;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-combobox-control__input::placeholder{color:rgba(12,31,24,.45)}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-base-control__label{
    font-family:var(--hf-font-body);font-size:.8125rem;font-weight:400;text-transform:none;color:var(--hf-ink-muted);margin:0 0 6px;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-form-token-field__suggestions-list{
    border:1px solid var(--hf-line);border-radius:var(--hf-r-s);box-shadow:0 12px 32px rgba(12,31,24,.14);background:var(--hf-white);max-height:280px;
}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-form-token-field__suggestion{padding:12px 16px;font-size:.9375rem;line-height:1.4;color:var(--hf-ink);border-bottom:1px solid var(--hf-line)}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-form-token-field__suggestion:last-child{border-bottom:0}
body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-components-combobox .components-form-token-field__suggestion.is-selected{background:var(--hf-creme);color:var(--hf-ink)}

/* Adresskarten (Liefer- und Rechnungsadresse, eingeklappt) wie die übrigen Karten */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card{
    background:var(--hf-white);border:1px solid var(--hf-line);border-radius:var(--hf-r-m);padding:var(--hf-s-16) var(--hf-s-24);
    gap:var(--hf-s-16);align-items:flex-start;font-size:.9375rem;line-height:1.5;color:var(--hf-ink);
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card address{margin:0;font-style:normal}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card__address-section--primary{font-family:var(--hf-font-display);font-weight:700;font-size:1.0625rem;line-height:1.3;margin:0 0 4px}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card__address-section--secondary{color:var(--hf-ink-muted)}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card__edit{
    color:var(--hf-emerald);font-weight:600;font-size:.9375rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer;white-space:nowrap;margin:0;
}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card__edit:hover{color:var(--hf-ink)}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-address-card__edit:focus-visible{outline:3px solid var(--hf-vermillion);outline-offset:2px;border-radius:4px}

/* Klarna: Logo hinter dem Namen wie bei den übrigen Zahlungsarten */
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-label--with-icon{flex-direction:row-reverse;justify-content:flex-end;gap:12px}
body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-payment-method-label--with-icon > :is(img,svg){margin:0;padding:0}

/* Checkboxen: Haken mittig im 22-px-Feld, Text auf Höhe des Kästchens */
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkbox label{display:flex;align-items:flex-start;gap:12px;position:relative;margin:0}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]{margin:0;flex:0 0 22px}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkbox .wc-block-components-checkbox__mark{position:absolute;left:4px;top:4px;width:14px;height:14px;margin:0;fill:var(--hf-white);pointer-events:none}
body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkbox .wc-block-components-checkbox__label{margin:0;padding-top:1px;line-height:1.4}
body.woocommerce-checkout .wc-block-checkout .wc-block-checkout__use-address-for-billing{margin-top:var(--hf-s-16)}

/* Handy: schmaleres Polster */
@media(max-width:599px){
    body.woocommerce-checkout .wc-block-checkout .wc-block-components-checkout-step .wc-block-components-radio-control__option{padding:16px var(--hf-s-16) 16px 56px}
    body.woocommerce-checkout .wc-block-checkout .wc-block-components-radio-control .wc-block-components-radio-control__input{left:var(--hf-s-16)}
    body.woocommerce-checkout .wc-block-checkout #payment-method .wc-block-components-radio-control-accordion-content{margin:0 var(--hf-s-16) var(--hf-s-16);padding:12px 14px}
    body.woocommerce-checkout .wc-block-checkout #shipping-option .wc-shiptastic-pickup-location-delivery{padding:var(--hf-s-16)}
    body.woocommerce-checkout .wc-block-checkout #shipping-option .pickup-location-search-fields .wc-block-components-text-input:last-child{flex:1 1 100%}
}

/* ============ 42 · Produktseite: Überbreite mobil + Sterne-Lücke (v2.77) ============
   1) Flex-Kinder haben min-width:auto → die Thumb-Leiste (nowrap, 8+ Bilder) machte Galerie-Spalte und Seite breiter
      als den Bildschirm (iPhone: Inhalt ragt rechts raus, weiße Fläche daneben). min-width:0 lässt die Leiste scrollen.
   2) woocommerce.css setzt .woocommerce-product-rating::before{content:" ";display:table} (Clearfix). In der Flex-Zeile
      von .hf-rating wird das ein leeres Element plus gap → Sterne rücken 12 px nach rechts. */
.e-con.hf-split--product > .e-con,
.e-con.hf-split--product .hf-gallery,
.hf-gallery.elementor-widget .woocommerce-product-gallery,
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery .flex-viewport,
.hf-gallery.elementor-widget div.images.woocommerce-product-gallery ol.flex-control-thumbs{min-width:0;max-width:100%}
body.single-product{overflow-x:clip} /* Sicherheitsnetz; clip statt hidden, damit position:sticky der Galerie weiter funktioniert */
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating div.woocommerce-product-rating::before,
.hf-rating.elementor-widget.elementor-widget-woocommerce-product-rating div.woocommerce-product-rating::after{content:none;display:none}

/* ============ Ende hf-system.css v2.77 ============ */