/* ==========================================================================
   Calonder Theme - Custom CSS
   Parent: Hummingbird 2.0.0 / Bootstrap 5.3.3
   Stand: 20.05.2026

   Color-Strategie:
   - Markenwerte (--calonder-gruen, --calonder-beige-*, etc.): werden vom
     Modul calonder_content via <style>:root{}</style> direkt in <head>
     injiziert — das Modul ist die einzige Quelle. Kein CSS-Fallback hier.
   - Section-Farben (--section-*): werden PRO Section als inline style auf
     dem <section>-Wrapper gesetzt (siehe _partials/home/_section-wrapper.tpl).
     CSS nutzt diese Variablen semantisch (z.B. für Titel, Buttons).
   - Keine hardcoded Farb-Klassen à la .calonder-section--beige-light.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Theme-Variablen (Layout, Typografie, neutrale Werte)
   -------------------------------------------------------------------------- */

:root {
  /* Layout */
  --calonder-max-width:         1860px;
  --calonder-content-max-width: 1100px; /* Content-Seiten: my-account, Kontakt, CMS etc. */

  /*
   * --calonder-page-gutter: seitlicher Innenabstand für EIGENE Layout-Wrapper.
   * Wird verwendet auf: .calonder-section__inner, .calonder-header__inner,
   *   .calonder-footer__inner, .calonder-zone__inner (alle mit __inner im Namen).
   *
   * NICHT für Bootstrap-.container verwenden — Bootstrap verwaltet den
   * seitlichen Abstand seiner Container intern via --bs-gutter-x
   * (padding = --bs-gutter-x * 0.5). Dort stattdessen --bs-gutter-x setzen.
   * Beispiel: .calonder-middle (hat Klasse "container") nutzt --bs-gutter-x: 3rem.
   */
  --calonder-page-gutter:  2.5rem; /* ≥900px */

  --calonder-header-height: 100px; /* Sticky-Header-Höhe — auch für scroll-padding-top */

  /* Schrift-Stacks */
  --calonder-font-body:    'DM Sans', system-ui, -apple-system, sans-serif;
  --calonder-font-heading: 'Rubik', system-ui, -apple-system, sans-serif;

  /* Neutrale Werte — kein Markenwert, kein Modul-Token */
  --calonder-ink:   #1a1a1a; /* Allgemeine Textfarbe, kein Markenwert */
  --calonder-paper: #ffffff;  /* Weiss, kein Markenwert */

  /* ── Fallback-Farben für calonder_content Modul-Tokens ─────────────────
     Das Modul injiziert diese Werte via <style>:root{}</style> im <head>
     und überschreibt sie (spätere Dokument-Reihenfolge gewinnt).
     Falls das Modul nicht lädt, gelten diese Werte als Sicherheitsnetz. */
  --calonder-beige:                    #F4F3EA;
  --calonder-beige-header-transparent: #F4F3EAD9;
  --calonder-beige-parts:              #B9B39E;
  --calonder-gruen:                    #1B522E;
  --calonder-gruen-hell:                #2A7A3F;
  --calonder-gruen-deep:               #0F3D1E;
  --calonder-blau:                     #00338E;
  --calonder-blau-hell:                 #0055CC;
  --calonder-grau:                     #464944;
  --calonder-leder:                    #7D5A38;
  --calonder-rot:                      #DC0000;
  --calonder-rot-hell:                  #FF0606;
  /* ──────────────────────────────────────────────────────────────────────── */

  /* Shortcuts auf Modul-Tokens */
  --calonder-header-bg: var(--calonder-beige-header-transparent);
  --calonder-footer-bg: var(--calonder-beige-parts);
}

/* --calonder-page-gutter responsiv — betrifft alle __inner-Wrapper, Header und Bootstrap-Container-Gutter */
@media (max-width: 899.98px) { :root { --calonder-page-gutter: 1.25rem; } }
@media (max-width: 575.98px) { :root { --calonder-page-gutter: 0.875rem; } }

html {
  scroll-padding-top: var(--calonder-header-height);
  overscroll-behavior-y: none; /* verhindert Rubber-Band am Seitenende (fixed ≠ sticky Drift) */
}

/* --------------------------------------------------------------------------
   1b. Typography

   - Body: DM Sans (Default)
   - Headings: Rubik, 700 bold, UPPERCASE
   - Produkt-Miniatur-Titel: Rubik, 600 semi-bold, 20px, kein Uppercase
   -------------------------------------------------------------------------- */

/* PS9: .ps-hidden-by-js wird via jQuery DOMReady ausgeblendet — bei AJAX-geladenen
   Step-Inhalten (z.B. Payment-Step) läuft DOMReady bereits, neue Elemente werden
   nicht erwischt. Lösung: layout.tpl setzt <html class="js-active"> synchron via
   Inline-Script → CSS greift sofort und für alle späteren AJAX-Inhalte.
   Ohne JS bleibt js-active weg → No-JS-Fallbacks (Wählen-Button, AGB-Text etc.)
   bleiben sichtbar. */
.js-active .ps-hidden-by-js { display: none !important; }

body {
  font-family: var(--calonder-font-body);
  font-weight: 400;
  /* Globaler Seitenhintergrund — Farbe aus Modul-Token "beigehell_creme",
     Fallback Hex falls Modul die Variable nicht liefert */
  background-color: var(--calonder-beige);
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  line-height: 1.2;
}

h1, .h1 { font-size: 42px; }
h2, .h2 { font-size: 30px; }
h3, .h3 { font-size: 24px; }
h4, .h4 { font-size: 22px; }
h5, .h5 { font-size: 18px; }
h6, .h6 { font-size: 16px; }

/* Margins: h1 kein margin-top (Seitentitel), h2+ mit Luft nach oben. */
h1, .h1 { margin-top: 0;       margin-bottom: 0.7rem;  }

.page-title-section { color: var(--calonder-gruen); }

/* Seitentitel (Kategorie, Warenkorb, Bestseller …) progressiv kleiner
   Basis (≥1650px) auf gleiche Grösse wie Stufe darunter gesenkt */
@media (min-width: 1650px) {
  .page-title-section { font-size: 2.25rem; }   /* ≈36px — ehem. 2.625rem */
}
@media (min-width: 1200px) and (max-width: 1649.98px) {
  .page-title-section { font-size: 2.25rem; }   /* ≈36px */
}
@media (min-width: 900px) and (max-width: 1199.98px) {
  .page-title-section { font-size: 1.875rem; }  /* 30px */
}
@media (min-width: 768px) and (max-width: 899.98px) {
  .page-title-section { font-size: 1.75rem; }   /* 28px */
}

/* Kundenkonto: Sidebar-Menütitel kleiner + Silbentrennung */
.account-menu--sidebar .account-menu__title {
  font-size: 1.25rem;
  hyphens: auto;
  overflow-wrap: break-word;
  margin-top: 0;
}
@media (max-width: 767.98px) {
  .account-menu--sidebar .account-menu__title { font-size: 1.125rem; }
}
@media (max-width: 575.98px) {
  .account-menu--sidebar .account-menu__title { font-size: 1rem; }
}
h2, .h2,
h3, .h3,
h4, .h4 { margin-top: 1.5rem; margin-bottom: 0.7rem; }
h5, .h5,
h6, .h6 { margin-top: 1.25rem;    margin-bottom: 0.5rem; }
p        { margin-bottom: 0.6rem; }

/* Gleiche Grössen mit höherer Spezifität für Sections —
   überschreibt Parent-Theme- und Modul-Widget-Heading-Regeln
   (z.B. ps_featuredproducts, ps_newproducts die oft eigene h2-Grössen setzen). */
.calonder-section h1, .calonder-section .h1 { font-size: 42px; }
.calonder-section h2, .calonder-section .h2 { font-size: 30px; }
.calonder-section h3, .calonder-section .h3 { font-size: 24px; }
.calonder-section h4, .calonder-section .h4 { font-size: 22px; }
.calonder-section h5, .calonder-section .h5 { font-size: 18px; }
.calonder-section h6, .calonder-section .h6 { font-size: 16px; }

/* Startseite: h2 so gross wie h1 (42px) — Sections-Titel sollen prominent sein. */
body.page-index .calonder-section h2,
body.page-index .calonder-section .h2 {
  font-size: 42px;
  margin-top: 0;
  margin-bottom: 1.25rem;
}
/* Startseite: Titel progressiv kleiner — beginnt ab 1500px */
@media (max-width: 1499.98px) {
  body.page-index .calonder-section h2,
  body.page-index .calonder-section .h2 { font-size: 38px; }
}
@media (max-width: 1199.98px) {
  body.page-index .calonder-section h2,
  body.page-index .calonder-section .h2 { font-size: 34px; }
}
@media (max-width: 1023.98px) {
  body.page-index .calonder-section h2,
  body.page-index .calonder-section .h2 { font-size: 30px; }
}
@media (max-width: 767.98px) {
  body.page-index .calonder-section h2,
  body.page-index .calonder-section .h2 { font-size: 26px; }
}
@media (max-width: 575.98px) {
  body.page-index .calonder-section h2,
  body.page-index .calonder-section .h2 { font-size: 22px; }
}

/* Globale responsive Typografie (alle Seiten, inkl. nicht-Startseite).
   Produkt-Miniatur-Titel (20px) und PDP-Produktname haben eigene Regeln
   mit höherer Spezifität — werden hier nicht überschrieben.
   Startseite-spezifische h2-Regeln (body.page-index) gewinnen durch höhere
   Spezifität ebenfalls über die allgemeinen .calonder-section-Regeln. */
@media (max-width: 1023.98px) {
  .calonder-section h1 { font-size: 2.125rem; }
  .calonder-section h2 { font-size: 1.75rem; }
}
@media (max-width: 767.98px) {
  h1, .h1 { font-size: 1.75rem; }
  h2, .h2 { font-size: 1.5rem; }
  h3, .h3 { font-size: 1.25rem; }
  .calonder-section h1 { font-size: 1.75rem; }
  .calonder-section h2 { font-size: 1.5rem; }
  .calonder-section h3 { font-size: 1.25rem; }
}
@media (max-width: 575.98px) {
  h1, .h1 { font-size: 1.5rem; }
  h2, .h2 { font-size: 1.25rem; }
  h3, .h3 { font-size: 1.125rem; }
  .calonder-section h1 { font-size: 1.5rem; }
  .calonder-section h2 { font-size: 1.375rem; }
  .calonder-section h3 { font-size: 1.1875rem; }
}

/* Produkt-Miniatur-Titel: Rubik, 600, 20px — nicht uppercase,
   damit Produktnamen lesbar bleiben.
   Spezifität höher als .calonder-section h2, damit Produkt-Titel
   innerhalb einer Section trotzdem 20px bleiben. */
.calonder-section .product-miniature h1,
.calonder-section .product-miniature h2,
.calonder-section .product-miniature h3,
.calonder-section .product-miniature h4,
.calonder-section .product-miniature .product-title,
.calonder-section .product-miniature .product-title a,
.product-miniature h1,
.product-miniature h2,
.product-miniature h3,
.product-miniature h4,
.product-miniature .product-title,
.product-miniature .product-title a {
  font-family: var(--calonder-font-heading);
  font-weight: 600;
  font-size: 20px;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.4;
}

/* --------------------------------------------------------------------------
   1c. Bootstrap CSS-Variablen-Overrides

   Bootstrap 5.3 setzt Text- und Heading-Farben über eigene CSS-Custom-Properties.
   Diese hier überschreiben, damit Bootstrap-interne Komponenten (Cards, Alerts,
   Formulare etc.) konsistent die Calonder-Farbwelt nutzen — ohne !important.

   --bs-body-color:    Fliesstext, Formulare, Tabellen
   --bs-heading-color: h1–h6 (Bootstrap setzt: color: var(--bs-heading-color, inherit))
   --bs-link-color:    Links in BS-Komponenten (Alert, Card, etc.)
   -------------------------------------------------------------------------- */

:root {
  --bs-body-color:    var(--calonder-ink);
  --bs-heading-color: var(--calonder-ink);
  --text-link-color:  var(--calonder-blau);
  --bs-link-color:    var(--text-link-color);
}

/* .btn: Hummingbird setzt transition:none — wir aktivieren sanfte Übergänge global. */
.btn {
  font-family: var(--calonder-font-heading);
  font-weight: 600;
  transition: background-color 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  border-radius: 0.375rem;
}

/* btn-primary: Calonder Blau — überschreibt Hummingbird/theme.css-Werte vollständig.
   --bs-btn-focus-shadow-rgb braucht nackte RGB-Zahlen (CSS-Variable nicht möglich).
   Wert = RGB von --calonder-blau (#00338E). Bei Farbänderung hier anpassen. */
.btn-primary {
  --bs-btn-color:                 var(--calonder-paper);
  --bs-btn-bg:                    var(--calonder-blau);
  --bs-btn-border-color:          var(--calonder-blau);
  --bs-btn-hover-color:           white;
  --bs-btn-hover-bg:              var(--calonder-blau-hell);
  --bs-btn-hover-border-color:    var(--calonder-blau-hell);
  --bs-btn-focus-shadow-rgb:      0, 51, 142;
  --bs-btn-active-color:          white;
  --bs-btn-active-bg:             var(--calonder-blau-hell);
  --bs-btn-active-border-color:   var(--calonder-blau-hell);
  --bs-btn-active-shadow:         inset 0 3px 5px rgba(0, 0, 0, 0.1);
  --bs-btn-disabled-color:        var(--calonder-paper);
  --bs-btn-disabled-bg:           var(--calonder-blau);
  --bs-btn-disabled-border-color: var(--calonder-blau);
  font-family: var(--calonder-font-heading);
  font-weight: 600;
}

/* btn-outline-primary: Calonder Blau — überschreibt theme.css-Werte (Bootstrap --bs-primary).
   Hover/Active: calonder-blau-hell für konsistenten Helligkeitseffekt.
   --bs-btn-focus-shadow-rgb = RGB von --calonder-blau (#00338E). */
.btn-outline-primary {
  --bs-btn-color:                 var(--calonder-blau);
  --bs-btn-border-color:          var(--calonder-blau);
  --bs-btn-hover-color:           white;
  --bs-btn-hover-bg:              var(--calonder-blau-hell);
  --bs-btn-hover-border-color:    var(--calonder-blau-hell);
  --bs-btn-focus-shadow-rgb:      0, 51, 142;
  --bs-btn-active-color:          white;
  --bs-btn-active-bg:             var(--calonder-blau-hell);
  --bs-btn-active-border-color:   var(--calonder-blau-hell);
  --bs-btn-disabled-color:        var(--calonder-blau);
  --bs-btn-disabled-border-color: var(--calonder-blau);
}

a {
  color: var(--text-link-color);
}
a:hover {
  color: var(--calonder-blau-hell);
}

/* <a class="btn ..."> soll Button-Farbe aus --bs-btn-color bekommen, nicht Link-Farbe.
   calonder-btn-* ausgenommen: deren Farbe liefert das Modul (0,1,0) oder
   .btn.calonder-btn-spezial-* (0,2,0). Die :not()-Regel bleibt bei (0,2,1)
   und greift nicht für calonder-btn-* → Modul-Regeln können ungestört wirken. */
a.btn:not([class*="calonder-btn-"]) {
  color: var(--bs-btn-color);
  text-decoration: none;
}
a.btn:not([class*="calonder-btn-"]):hover {
  color: var(--bs-btn-hover-color);
}

/* --------------------------------------------------------------------------
   1d. Spalten-Gap (Sidebar-Layouts)

   #left-column und #right-column bekommen mehr Innen-Abstand zum
   Hauptinhalt. Gilt global für alle Layouts (Kategorie, Produkt, Warenkorb).
   -------------------------------------------------------------------------- */

#left-column  { padding-right: 2.5rem; }
#right-column { padding-left:  2.5rem; padding-bottom: 2rem; }

/* <1650px: weniger Zwischen-Padding genügt */
@media (max-width: 1649.98px) {
  #left-column  { padding-right: 1.25rem; }
  #right-column { padding-left:  1.25rem; }
}

.calonder-wrapper { margin-top: 1.25rem; }
@media (max-width: 1499.98px) {
  body.page-index .calonder-wrapper { margin-top: 0; }
}

/* --------------------------------------------------------------------------
   1e. Card-System

   Generische Card-Klassen für konsistente Box-Darstellung.
   Klasse direkt auf das Element setzen (kein inneres Wrapper nötig).

   calonder-card-white  — voller weisser Hintergrund
   calonder-card-soft   — halbtransparentes Weiss (z.B. auf farbigem Bg)
   -------------------------------------------------------------------------- */

.calonder-card-white,
.calonder-card-soft {
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  border-radius: 0.5rem;
  overflow: hidden;
  padding: 1.25rem;
}

.calonder-card-white {
  background: var(--calonder-paper);
}

.calonder-card-soft {
  background: color-mix(in srgb, var(--calonder-paper) 85%, transparent);
}

/* Content-Seiten (full-width Layout, kein Sidebar): Breite auf lesbares Mass begrenzen.
   Bei Viewport <1100px greift max-width gar nicht → Mobile unverändert.
   Homepage + Cart/Order ausgeschlossen (kein calonder-card-white, siehe layout-full-width.tpl). */
.page--full-width.calonder-card-white {
  max-width: var(--calonder-content-max-width);
  margin-inline: auto;
  margin-block: 2rem;
  width: 100%;
}

/* --------------------------------------------------------------------------
   2. Bootstrap Container Override (1860px-Strategie)

   Bootstrap's Standard-max-width ab "xxl" (1400px Viewport) ist 1320px —
   für Calonders breites Layout zu eng. Wir setzen alle Container-Klassen
   ab 1400px auf --calonder-max-width (1860px).

   Was wir hier NICHT ändern: das seitliche Padding der Container.
   Bootstrap berechnet es intern als calc(--bs-gutter-x * 0.5) und das
   bleibt unangetastet — ausser dort wo wir es explizit mit einem eigenen
   --bs-gutter-x-Wert überschreiben (z.B. .calonder-middle: --bs-gutter-x: 3rem).
   -------------------------------------------------------------------------- */

@media (min-width: 1400px) {
  .container,
  .container-xxl,
  .container-xl,
  .container-lg,
  .container-md,
  .container-sm,
  .container--limited-xxl,
  .container--limited-xl,
  .container--limited-md {
    max-width: var(--calonder-max-width);
  }
}

/* ── Spalten-Layout ────────────────────────────────────────────────────────
   Desktop (≥1100px): 3 Spalten sichtbar — Template nutzt col-lg-3/col-lg-6/col-lg-3
   (25% / 50% / 25%) damit Sidebars breit genug bleiben.
   Hamburger-Zone (900–1099px): linke Spalte weg, Mitte 75% / Rechts 25%.
   Mobile (<900px): alle Spalten 100%.
   ───────────────────────────────────────────────────────────────────────── */

/* Linke Spalte nur verstecken wenn Hamburger aktiv (≤1100px) */
@media (max-width: 1100px) {
  #left-column {
    display: none;
  }
}

/* Tablet Querformat 900–1100px: Mitte 75% / Rechts 25%.
   .page--full-width-Seiten (Cart, my-account etc.) ausgenommen:
   dort gibt es keinen #right-column → #center-column soll 100% bleiben. */
@media (min-width: 900px) and (max-width: 1100px) {
  #center-column:not(.page--full-width) {
    flex: 0 0 auto;
    width: 75%;
  }
  #right-column {
    flex: 0 0 auto;
    width: 25%;
  }
}

/* 900–1059px: rechte Spalte auf 40% verbreitern — 25% ist bei kleinen Viewports zu schmal */
@media (min-width: 900px) and (max-width: 1059.98px) {
  #center-column:not(.page--full-width) {
    width: 60%;
  }
  #right-column {
    width: 40%;
  }
}

/* Tablet Hochkant + Mobile (<900px): beide 100%, rechte Spalte stapelt darunter */
@media (max-width: 899.98px) {
  #center-column,
  #right-column {
    flex: 0 0 auto;
    width: 100%;
  }
}

/* ≥1650px: Sidebars zurück auf 16.67% / Mitte 66.67% (klassisch col-lg-2/col-lg-8/col-lg-2) */
@media (min-width: 1650px) {
  #left-column,
  #right-column {
    flex: 0 0 auto;
    width: 16.6666666667%;
  }
  #center-column:not(.page--full-width) {
    flex: 0 0 auto;
    width: 66.6666666667%;
  }
}

/* ps_mainmenu: eigenen Mobile-Toggle und Mobile-Offcanvas (#mobileMenu) unterdrücken.
   Calonder nutzt ausschliesslich eigenen Hamburger-Drawer (#calonder-mobile-nav).
   Der Desktop-Nav von ps_mainmenu (.ps-mainmenu--desktop) bleibt aktiv (er rendert
   aus einer anderen Datenquelle als $calonder_content.menu). */
.ps-mainmenu__mobile-toggle,
.ps-mainmenu--mobile {
  display: none !important;
}

/* Calonder nutzt full-width Layout — Bootstrap's zentrierende max-width unter 1400px
   entfernen. Das seitliche Padding kommt vom Bootstrap-Gutter (--bs-gutter-x)
   und eigenen __inner-Wrappern mit --calonder-page-gutter. */
@media (max-width: 1399.98px) {
  .container,
  .container-xl,
  .container-lg,
  .container-md,
  .container-sm {
    max-width: 100%;
  }
}

/* --------------------------------------------------------------------------
   3. Section-System (Startseite + alle Section-Wrapper)

   Struktur:
     <section class="calonder-section calonder-section--boxed|--full"
              style="--section-bg:...; --section-text:...; ...">
       <div class="calonder-section__inner">...</div>
     </section>

   Farben kommen aus inline style (gesetzt durch _section-wrapper.tpl).
   CSS nutzt die --section-* Variablen semantisch für Titel und Buttons.
   -------------------------------------------------------------------------- */

.calonder-section {
  width: 100%;
}

.calonder-section__inner {
  margin-inline: auto;
  padding-block: 3rem;
  padding-inline: var(--calonder-page-gutter);
}

.calonder-section--boxed > .calonder-section__inner {
  max-width: var(--calonder-max-width);
}

.calonder-section--full > .calonder-section__inner {
  max-width: 100%;
}

/* Utility: Element auf max. 1860px einschränken + zentrieren, OHNE extra Padding
   (das kommt vom umgebenden __inner). Hauptnutzung: Titel in --full Sections,
   damit sie innerhalb der boxed-Zone linksbündig stehen, während Produkt-Grids
   daneben die volle Breite des __inner nutzen. */
.calonder-u-boxed {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  box-sizing: border-box;
}

/* In allen Calonder-Sections übernimmt calonder-section__inner die Rolle
   des Bootstrap-Containers (Gutter via --calonder-page-gutter). Eingebettete
   .container-Elemente von Widgets (ps_newproducts etc.) sollen daher:
   - kein zusätzliches padding-inline addieren (wäre doppeltes Gutter)
   - in Full-Width-Sections: nicht auf Bootstrap's Standard-max-width beschränkt */
.calonder-section .container {
  padding-inline: 0;
}
.calonder-section--full .container {
  max-width: 100%;
}

/* Alle Top-Level-Headings in Full-Width-Sections werden auf 1860 boxed,
   damit Widget-Titel (ps_newproducts etc.) automatisch mitziehen.
   Ausnahme: Produkt-Miniaturen (unten). */
.calonder-section--full > .calonder-section__inner h1,
.calonder-section--full > .calonder-section__inner h2,
.calonder-section--full > .calonder-section__inner h3 {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  box-sizing: border-box;
  display: block;
}

/* Ausnahme: Produkt-Miniatur-Titel sollen ihre Miniatur füllen,
   nicht auf 1860 beschränkt werden. */
.calonder-section--full .product-miniature h1,
.calonder-section--full .product-miniature h2,
.calonder-section--full .product-miniature h3,
.calonder-section--full .product-miniature__title,
.calonder-section--full .product-miniature .product-title {
  max-width: none;
  margin-inline: 0;
}

/* Titel in Sections nutzen die Title-Farbe aus dem Scheme */
.calonder-section h1,
.calonder-section h2,
.calonder-section h3,
.calonder-section h4,
.calonder-section h5,
.calonder-section h6 {
  color: var(--section-title, inherit);
}

/* Buttons in Sections: alle calonder-btn-* Klassen haben eigene Styles und
   werden hier explizit ausgenommen. Bare .btn ohne calonder-btn-* Klasse
   erhält keine Section-spezifische Farbe mehr (ab Modul v1.2.0). */
.calonder-section .btn:not(.calonder-pillars__btn):not([class*="calonder-btn-"]) {
  color: var(--section-btn-text);
  background-color: var(--section-btn-bg);
  border-color: var(--section-btn-bg);
  transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;
}

.calonder-section .btn:not(.calonder-pillars__btn):not([class*="calonder-btn-"]):hover,
.calonder-section .btn:not(.calonder-pillars__btn):not([class*="calonder-btn-"]):focus {
  color: var(--section-btn-hover-text);
  background-color: var(--section-btn-hover-bg);
  border-color: var(--section-btn-hover-bg);
}

/* --------------------------------------------------------------------------
   3b. Hero-Section (50/50 Split: Feature-Produkte | Slideshow)

   Höhe-Strategie: Hero hat eine FESTE Höhe pro Breakpoint, damit die
   Slideshow (height: 100%) zuverlässig funktioniert. Beide Spalten füllen
   die Höhe vollständig (align-items: stretch).
   Slideshow ist leicht nach unten versetzt (Design-Wunsch) via margin-top.
   -------------------------------------------------------------------------- */

/* Hero: kein Hintergrund auf der Section — nur linke Spalte grün.
   __inner: normales seitliches Padding, kein Block-Padding (Spalten bestimmen den Weissraum). */
/* .calonder-section--hero { */
  /* kein background */
/* } */

.calonder-section--hero > .calonder-section__inner {
  padding-inline: var(--calonder-page-gutter);
  padding-block: 1.5rem 4rem;
}

/* Grid: kein Gap (A), linke Spalte kürzer via margin-block (C) */
.calonder-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  align-items: start;
  position: relative;
}

/* SEO-H1: absolut positioniert in der oberen linken Ecke des Hero-Grids,
   lebt im margin-block-Bereich der linken Spalte (1.5rem) — kein Platzbedarf. */
.calonder-hero__seo-h1 {
  position: absolute;
  top: 0;
  left: 0;
  font-family: var(--calonder-font-heading);
  font-size: 0.8125rem !important;
  font-weight: 600;
  color: var(--calonder-gruen-deep) !important;
  opacity: 0.8;
  margin: 0;
  padding: 0 0 0 2rem;
  line-height: 1.7;
}

/* Ab <1500px kein Platz mehr im Margin-Bereich → in den normalen Flow, volle Breite */
@media (max-width: 1499.98px) {
  .calonder-hero__seo-h1 {
    position: static;
    grid-column: 1 / -1;
    padding-block: 0.25rem 0.75rem;
  }
}
@media (max-width: 899.98px) {
  .calonder-hero__seo-h1 { padding-block: 0.25rem 0.75rem; }
}
@media (max-width: 767.98px) {
  .calonder-hero__seo-h1 { text-align: center; padding-inline: 0.5rem; }
}

/* --------------------------------------------------------------------------
   3a. Globales Produktgrid-System
   Feste Spaltenanzahl je Breakpoint → Kacheln wachsen auf Desktop voll auf (wie Bootstrap col-3).
   Min. 260px pro Kachel: berechnet aus Viewport − Gutter − Gap.
     1 Kachel: < 576px (≥375px iPhone SE: ~347px) ✓
     2 Kacheln: 576–899px (bei 576px: ~266px) ✓
     3 Kacheln: 900–1199px (bei 900px: ~263px) ✓
     4 Kacheln: ≥ 1200px (bei 1200px: ~268px), Desktop streckt auf 328–448px+ ✓
   -------------------------------------------------------------------------- */
.calonder-section .products {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin: 0; /* Bootstrap .row negative margins neutralisieren */
}
@media (min-width: 576px) {
  .calonder-section .products { grid-template-columns: repeat(2, minmax(260px, 1fr)); }
}
@media (min-width: 900px) {
  .calonder-section .products { grid-template-columns: repeat(3, minmax(260px, 1fr)); }
}
@media (min-width: 1200px) {
  .calonder-section .products { grid-template-columns: repeat(4, minmax(260px, 1fr)); }
}
/* Bootstrap .col-* Padding + Breite der Wrapper-Elemente neutralisieren */
.calonder-section .products > * {
  padding: 0;
  min-width: 0;
  width: 100%;
  max-width: 100%;
}

/* --------------------------------------------------------------------------
   3b. Hero-Section
   -------------------------------------------------------------------------- */

.calonder-hero__products,
.calonder-hero__slideshow {
  min-width: 0;
  overflow: hidden;
}

/* Linke Spalte: grüner Verlauf (gruen → gruen-deep, leicht diagonal), kürzer als rechte Spalte (C),
   nur linke Ecken abgerundet (D) */
.calonder-hero__products {
  height: auto;
  background: linear-gradient(135deg, var(--calonder-gruen) 0%, var(--calonder-gruen-deep) 70%);
  color: var(--calonder-paper);
  padding: 2rem 2.75rem 2.5rem;
  margin-block: 1.5rem;
  border-radius: 1.25rem 0 0 1.25rem;
}

/* Rechte Spalte: definiert die Gesamthöhe, alle Ecken abgerundet, Border (B) */
.calonder-hero__slideshow {
  align-self: stretch;
  min-height: var(--calonder-hero-height, 480px);
  height: auto;
  border: 4px solid var(--calonder-gruen-deep);
  border-radius: 1.25rem;
  background-color: var(--calonder-beige);
  overflow: hidden;
  padding: 0;
}

/* ps_featuredproducts in der Hero-Zone anpassen:
   - der interne .container soll volle 50% nutzen (nicht weiter eingeengt werden)
   - Produkte immer 2 pro Reihe via CSS-Grid (umgeht Bootstrap's col-* und
     row-cols-* komplett — kein !important nötig)
   - bei > 2 Produkten brechen sie natürlich in die nächste Reihe um
   Bootstrap-Override: max-width + padding-inline auf 0 — Spacing kommt vom
   übergeordneten Hero-Grid (.calonder-hero), nicht vom Container selbst. */
.calonder-hero__products .container {
  max-width: 100%;
  padding-inline: 0;
  height: 100%;
}

.calonder-hero__products .products {
  display: grid;
  grid-template-columns: repeat(2, minmax(260px, 1fr));
  gap: 2rem;
  margin: 0;
}

.calonder-hero__products .product-miniature {
  width: 100%;
  max-width: 100%;
}

/* Gestapelt (<1440px): auto-fit, min. 260px pro Produkt — bricht automatisch um */
@media (max-width: 1439.98px) {
  .calonder-hero__products .products {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 1rem;
  }
}

/* Slideshow-Container: füllt die rechte Card vollständig */
.calonder-hero__slideshow .calonder-slideshow {
  width: 100%;
  height: 100%;
  border-radius: 0;
  background-color: rgba(0, 0, 0, 0.05);
}

.calonder-hero__slideshow-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.05);
  border-radius: 0.5rem;
  padding: 2rem;
}

/* Tablet */
@media (max-width: 991.98px) {
  .calonder-hero__slideshow {
    min-height: var(--calonder-hero-height-md, 380px);
  }
}

/* Gestapelt (<1440px): Slideshow unter Produkten */
@media (max-width: 1439.98px) {
  .calonder-hero {
    grid-template-columns: 1fr;
  }
  .calonder-hero__products {
    height: auto;
    border-radius: 0.75rem;
    margin-block: 0 1rem;
  }
  .calonder-hero__slideshow {
    height: auto;
    min-height: unset;
    align-self: auto;
    border-radius: 0.75rem;
  }
  /* Höhe auf dem inneren .calonder-slideshow setzen (kein border-box-Verlust durch 4px-Border)
     Stufen unten überschreiben bei kleineren Viewports. */
  .calonder-hero__slideshow .calonder-slideshow {
    height: 480px; /* ≥1024px gestapelt */
  }
}
@media (max-width: 1023.98px) {
  .calonder-hero__slideshow .calonder-slideshow { height: 440px; }
}
@media (max-width: 767.98px) {
  .calonder-hero__slideshow .calonder-slideshow { height: 380px; }
}
@media (max-width: 549.98px) {
  .calonder-hero__slideshow .calonder-slideshow { height: 280px; }
}

/* --------------------------------------------------------------------------
   3f. Sortiment (Section 4): Tiles-Grid (quadratisch) + Text-Buttons-Grid
   -------------------------------------------------------------------------- */

#sortiment > .calonder-section__inner {
  padding-block-end: 4.25rem;
}

#inspiration > .calonder-section__inner {
  padding-block: 4.25rem;
}

#ratings > .calonder-section__inner {
  padding-block-start: 6rem;
}

/* --------------------------------------------------------------------------
   3. Mobile — Hero + Section-IDs (Base-CSS kommt VOR dieser Stelle → korrekte Kaskade)
   Ratings, Sortiment-Heading, Pillars-Box: Mobile-Overrides stehen
   jeweils NACH ihrem Base-CSS (weiter unten in dieser Datei).
   -------------------------------------------------------------------------- */

@media (max-width: 899.98px) {

  /* ── Hero: kompakteres Padding auf kleinen Screens ── */
  .calonder-section--hero > .calonder-section__inner {
    padding-block: 0.75rem 1.75rem;
  }
  .calonder-hero__products {
    padding: 1.5rem 1.5rem 2rem;
  }

  /* ── Sortiment + Inspiration: Section-ID-Selektoren (Spez. 1,1,0 — stehen vor Base) ── */
  #sortiment > .calonder-section__inner {
    padding-block-end: 2.5rem;
  }
  #inspiration > .calonder-section__inner {
    padding-block: 2.5rem;
  }

}

/* Allgemeine Section-Padding-Reduktion auf Mobile */
@media (max-width: 767.98px) {
  .calonder-section__inner { padding-block: 2.25rem; }
}
@media (max-width: 575.98px) {
  .calonder-section__inner { padding-block: 1.75rem; }
}

/* #ratings padding: Base steht bei Zeile ~620, Override hier danach ✓ */
@media (max-width: 991.98px) {
  #ratings > .calonder-section__inner {
    padding-block-start: 3rem;
  }
}

.calonder-sortiment__heading {
  margin-bottom: 2rem;
}
@media (max-width: 767.98px) {
  .calonder-sortiment__heading { margin-bottom: 1.25rem; }
}

/* Sortiment: Kacheln mit Karte (Bild 4:3 oben, Label darunter) */
.calonder-sortiment__tiles {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1.125rem;
  margin-bottom: 2rem;
}

.calonder-sortiment__tile {
  display: flex;
  flex-direction: column;
  background: var(--calonder-paper);
  border-radius: 0.5rem;
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  padding: 0.625rem;
  text-decoration: none;
  color: var(--calonder-ink);
  transition: box-shadow 0.25s ease, border-color 0.25s ease;
}

.calonder-sortiment__tile:hover,
.calonder-sortiment__tile:focus-visible {
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
  border-color: color-mix(in srgb, var(--calonder-gruen) 75%, transparent);
}

/* Bildbereich: 4:3, eigene abgerundete Ecken, position:relative für Pfeil + Haarlinie */
.calonder-sortiment__tile-imgwrap {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: 0.25rem;
  overflow: hidden;
  background: #d8d4c8;
  flex-shrink: 0;
}

/* Haarlinie: verhindert Auslaufen heller Bilder */
.calonder-sortiment__tile-imgwrap::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.1);
  pointer-events: none;
}

.calonder-sortiment__tile-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
  display: block;
}

/* Pfeil: weisses Quadrat mit runden Ecken, unten rechts im Bild */
.calonder-sortiment__tile-arrow {
  position: absolute;
  bottom: 0.625rem;
  right: calc(0.625rem + 3px); /* Ruheposition 3px weiter links → Animation endet bündig */
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 0.25rem;
  background-color: rgba(255, 255, 255, 0.95);
  color: var(--calonder-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.25s ease;
  z-index: 1;
}

.calonder-sortiment__tile:hover .calonder-sortiment__tile-arrow,
.calonder-sortiment__tile:focus-visible .calonder-sortiment__tile-arrow {
  transform: translateX(3px);
}

/* Label: unterhalb des Bildes auf der Kartenfläche */
.calonder-sortiment__tile-label {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.625rem;
  padding: 0.75rem 0.3125rem 0.25rem;
}

.calonder-sortiment__tile-name {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.045em;
  line-height: 1.15;
  color: var(--calonder-ink);
}

.calonder-sortiment__tile-count {
  font-family: var(--calonder-font-body);
  font-size: 0.8125rem;
  color: color-mix(in srgb, var(--calonder-ink) 65%, transparent);
  white-space: nowrap;
  flex-shrink: 0;
  font-variant-numeric: tabular-nums;
}

/* Chips: eigene Fläche + Farben, unabhängig von Sektionsfarbe */
.calonder-sortiment__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
}

.calonder-sortiment__button {
  display: inline-flex;
  align-items: center;
  gap: 0.6875rem;
  padding: 0.875rem calc(0.9375rem + 3px) 0.875rem 0.9375rem; /* +3px rechts = Pfeil-Animationsspielraum */
  border-radius: 0.125rem;
  background: var(--calonder-beige);
  /* Rahmen adaptiert sich an Sektions-Textfarbe, Chip-Fläche und -Text sind fix */
  border: 2px solid color-mix(in srgb, var(--section-text, var(--calonder-gruen)) 35%, transparent);
  text-decoration: none;
  transition: background 0.16s ease, box-shadow 0.22s cubic-bezier(0.2, 0.7, 0.3, 1);
}

.calonder-sortiment__button:hover,
.calonder-sortiment__button:focus-visible {
  background: var(--calonder-paper);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
}

.calonder-sortiment__button-label {
  font-family: var(--calonder-font-heading);
  font-size: 0.90625rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  line-height: 1.2;
  color: var(--calonder-gruen);
  flex: 1 1 auto;
}

.calonder-sortiment__button-count {
  font-size: 0.8125rem;
  line-height: 1.2;
  color: var(--calonder-gruen);
  opacity: 0.85;
  white-space: nowrap;
  flex: 0 0 auto;
  font-variant-numeric: tabular-nums;
}

.calonder-sortiment__button-arrow {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--calonder-gruen);
  opacity: 0.7;
  transition: transform 0.2s ease, opacity 0.2s ease;
}

.calonder-sortiment__button:hover .calonder-sortiment__button-arrow,
.calonder-sortiment__button:focus-visible .calonder-sortiment__button-arrow {
  transform: translateX(3px);
  opacity: 1;
}

/* Sortiment: Responsive Breakpoints 5 → 4 → 3 → 2 → 1 */
@media (max-width: 1199.98px) {
  .calonder-sortiment__tiles {
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
  }
}

@media (max-width: 991.98px) {
  .calonder-sortiment__tiles {
    grid-template-columns: repeat(3, 1fr);
    gap: 0.875rem;
  }
  .calonder-sortiment__buttons { gap: 1rem; }
}

@media (max-width: 767.98px) {
  .calonder-sortiment__tiles {
    grid-template-columns: repeat(2, 1fr);
    gap: 0.75rem;
  }
}

@media (max-width: 575.98px) {
  .calonder-sortiment__tiles {
    grid-template-columns: 1fr;
    gap: 0.75rem;
  }
  .calonder-sortiment__buttons { gap: 1rem; }
}

/* --------------------------------------------------------------------------
   3g. Ratings (Section 9): 5-Karten-Grid — Main-Card + 4 Reviews
   -------------------------------------------------------------------------- */

.calonder-ratings__cards {
  display: grid;
  /* Main-Karte: immer 300–350px, Carousel bekommt den Rest */
  grid-template-columns: clamp(300px, 24%, 350px) 1fr;
  gap: 1.25rem;
  align-items: stretch;
}

/* ── Carousel: Chevrons + scrollbarer Viewport ── */
.calonder-ratings__carousel {
  display: flex;
  align-items: center;
  gap: 0.625rem;
}
.calonder-ratings__carousel-viewport {
  flex: 1;
  overflow-x: clip;
  overflow-y: visible;
  align-self: stretch;
  container-type: inline-size;
  position: relative;
}
.calonder-ratings__carousel-viewport::before,
.calonder-ratings__carousel-viewport::after {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  width: 2rem;
  z-index: 1;
  pointer-events: none;
}
.calonder-ratings__carousel-viewport::before {
  left: 0;
  background: linear-gradient(to right, var(--section-bg, var(--calonder-paper)), transparent);
}
.calonder-ratings__carousel-viewport::after {
  right: -1px; /* 1px über rechten Rand: overflow-x:clip schneidet ab, sub-pixel-Streifen entfällt */
  background: linear-gradient(to left, var(--section-bg, var(--calonder-paper)), transparent);
}
.calonder-ratings__carousel-track {
  display: flex;
  gap: 1.25rem;
  height: 100%;
  transition: transform 0.35s ease;
}
.calonder-ratings__card--review {
  flex: 0 0 calc((100cqi - 3 * 1.25rem) / 4);
  min-width: 250px; /* Karten nie unter 250px (clamps flex-basis von unten) */
}
.calonder-ratings__nav {
  flex-shrink: 0;
  width: 2.75rem;
  height: 2.75rem;
  padding: 0;
  background: var(--calonder-paper);
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 50%, transparent);
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--calonder-gruen);
  box-shadow: 0 1px 6px rgba(0, 0, 0, 0.1);
  transition: background-color 0.2s ease, color 0.2s ease, opacity 0.2s ease;
}
.calonder-ratings__nav:hover:not(:disabled) {
  background-color: var(--calonder-gruen);
  color: var(--calonder-paper);
}
.calonder-ratings__nav:disabled {
  opacity: 0.25;
  cursor: default;
}
.calonder-ratings__nav .material-icons {
  font-size: 1.6rem;
  line-height: 1;
}

.calonder-ratings__card {
  padding: 1.5rem;
  border-radius: 0.5rem;
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  overflow: hidden;
  background-color: color-mix(in srgb, var(--calonder-paper) 85%, transparent);
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}

/* Main-Karte: Score prominent; position:relative für stretched-link */
.calonder-ratings__card--main {
  background-color: var(--calonder-paper);
  border: 2px solid color-mix(in srgb, var(--calonder-gruen) 50%, transparent);
  position: relative;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 0.25rem;
  transition: background-color 0.25s ease;
  min-width: min(300px, 100%); /* doppelte Absicherung: Karte nie unter 300px */
}
.calonder-ratings__card--main:hover {
  background-color: color-mix(in srgb, var(--calonder-gruen) 6%, var(--calonder-paper));
}

.calonder-ratings__score {
  font-family: var(--calonder-font-heading);
  font-size: 4.5rem;
  font-weight: 700;
  line-height: 1;
  color: var(--calonder-gruen);
}

.calonder-ratings__stars {
  display: flex;
  gap: 0.25rem;
  align-items: center;
  line-height: 1;
}

.calonder-ratings__stars--main {
  gap: 0.35rem;
  padding-inline: 0.5rem; /* Mindest-Abstand zum Kartenrand */
}

.calonder-ratings__star {
  display: inline-block;
  flex-shrink: 0;
  width: 1.5rem;
  height: 1.5rem;
  background: linear-gradient(
    to right,
    #f59e0b var(--star-fill, 100%),
    #909090 var(--star-fill, 100%)
  );
  clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

.calonder-ratings__stars--main .calonder-ratings__star {
  width: 2rem;
  height: 2rem;
}

.calonder-ratings__source {
  font-size: 0.9375rem;
  color: var(--calonder-gruen-deep);
  padding-top: 0.3rem;
}
.calonder-ratings__source a {
  color: var(--calonder-gruen-deep);
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.calonder-ratings__source a:hover {
  color: var(--calonder-gruen-hell);
}

.calonder-ratings__author {
  font-family: var(--calonder-font-heading);
  font-weight: 600;
  font-size: 0.95rem;
  color: var(--calonder-ink);
}

.calonder-ratings__text {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.7;
  color: var(--calonder-ink);
  opacity: 0.85;
}

/* Ratings: Mobile-Stack (Base-CSS oben → korrekte Kaskade) */
@media (max-width: 991.98px) {
  .calonder-ratings__cards {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  /* min-width: 250px gilt bereits in Base-Regel; hier kein Override nötig. */
}
@media (max-width: 575.98px) {
  .calonder-ratings__card { padding: 1.25rem; }
}

/* --------------------------------------------------------------------------
   3h. SEO-Text (Section 11): max-width 1440px
   -------------------------------------------------------------------------- */

.calonder-seo-text {
  max-width: 1440px;
  margin-inline: auto;
}

/* Aufklapp-Modus: ca. 250px (≈ 600–800 Zeichen) sichtbar, Rest eingeklappt */
.calonder-seo-text--collapsible .calonder-seo-text__body {
  overflow: hidden;
  max-height: 250px;
  transition: max-height 0.45s ease;
}

/* Fade-Gradient am unteren Ende des eingeklappten Textes */
.calonder-seo-text__fade {
  height: 5rem;
  margin-top: -5rem;
  position: relative;
  pointer-events: none;
  background: linear-gradient(to bottom, transparent, var(--section-bg, var(--calonder-paper, #f8f6f0)));
  transition: opacity 0.3s ease;
}
.calonder-seo-text--open .calonder-seo-text__fade {
  opacity: 0;
}

/* Toggle-Button: zentriert, dezenter Pill-Style */
.calonder-seo-text__toggle {
  display: flex;
  align-items: center;
  gap: 0.2rem;
  margin: 0.75rem auto 0;
  padding: 0.3rem 0.875rem 0.3rem 1rem;
  background: transparent;
  border: 1.5px solid currentColor;
  border-radius: 2rem;
  cursor: pointer;
  font-family: var(--calonder-font-body);
  font-size: 0.8125rem;
  font-weight: 600;
  color: inherit;
  opacity: 0.55;
  transition: opacity 0.2s ease;
  letter-spacing: 0.01em;
}
.calonder-seo-text__toggle:hover,
.calonder-seo-text__toggle:focus-visible {
  opacity: 0.9;
}
.calonder-seo-text__toggle-icon {
  font-size: 1.125rem;
  line-height: 1;
  transition: transform 0.35s ease;
}
.calonder-seo-text--open .calonder-seo-text__toggle-icon {
  transform: rotate(180deg);
}
/* «Mehr»-Label ausblenden wenn offen */
.calonder-seo-text--open .calonder-seo-text__toggle-label {
  display: none;
}

/* --------------------------------------------------------------------------
   3d. Trust-Pillars (Section 10): 3 Spalten mit Icon + Titel + Text
   -------------------------------------------------------------------------- */

.calonder-pillars {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
  align-items: start;
}

.calonder-pillars__item {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.calonder-pillars__icon {
  font-size: 2.5rem;
  line-height: 1;
  width: auto;
  height: auto;
  color: inherit;
}

.calonder-pillars__box .calonder-pillars__title {
  margin: 0;
  font-family: 'Rubik', sans-serif;
  font-size: 2.625rem;
  font-weight: 700;
  text-transform: uppercase;
  line-height: 1.1;
}

.calonder-pillars__text {
  font-size: 1.0625rem;
  line-height: 1.6;
}

.calonder-pillars__text p:last-child,
.calonder-pillars__text ul:last-child,
.calonder-pillars__text ol:last-child {
  margin-bottom: 0;
}

.calonder-pillars__text ul,
.calonder-pillars__text ol {
  padding-left: 0.875rem;
}

.calonder-pillars__text ul {
  list-style: disc;
}

.calonder-pillars__text ol {
  list-style: decimal;
}

@media (max-width: 767.98px) {
  .calonder-pillars {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
}

/* Variante B: kompakte Liste (mode='list') */
.calonder-pillars--list {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2rem;
  list-style: none;
  margin: 0.75rem 0 0;
  padding: 0;
}

.calonder-pillars__list-item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.calonder-pillars__list-item .calonder-pillars__icon {
  font-size: 1.5rem;
}

.calonder-pillars__list-text {
  font-family: 'DM Sans', sans-serif;
  font-size: 1.125rem;
  font-weight: 600;
}

/* Variante A: drei farbige Boxen (mode='pillars', default)
   Jede Box immer min. 460px breit — Cascading via min-width media queries unten */
.calonder-pillars--boxes {
  display: grid;
  grid-template-columns: 1fr; /* Mobile-first: 1 Spalte */
  gap: 2.5rem;
  align-items: stretch;
}

.calonder-pillars__box {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  padding: 3.125rem;
  border-radius: 1rem;
  min-width: 0; /* verhindert Grid-Overflow durch langen Inhalt */
}

.calonder-pillars__box--gruen {
  background: var(--calonder-gruen);
  color: var(--calonder-paper);
}

.calonder-pillars__box--gruen .calonder-pillars__icon,
.calonder-pillars__box--gruen .calonder-pillars__title {
  color: var(--calonder-beige);
}

.calonder-pillars__box--beige {
  background: var(--calonder-beige-parts);
  color: var(--calonder-ink);
}

.calonder-pillars__box--beige .calonder-pillars__icon,
.calonder-pillars__box--beige .calonder-pillars__title {
  color: var(--calonder-ink);
}

.calonder-pillars__box--gruen .calonder-pillars__list-text,
.calonder-pillars__box--gruen .calonder-pillars__list-item .calonder-pillars__icon {
  color: var(--calonder-beige);
}

.calonder-pillars__box--gruen-deep {
  background: var(--calonder-gruen-deep);
  color: var(--calonder-paper);
}
.calonder-pillars__box--gruen-deep .calonder-pillars__icon,
.calonder-pillars__box--gruen-deep .calonder-pillars__title {
  color: var(--calonder-beige);
}
.calonder-pillars__box--gruen-deep .calonder-pillars__list-text,
.calonder-pillars__box--gruen-deep .calonder-pillars__list-item .calonder-pillars__icon {
  color: var(--calonder-beige);
}

/* Optionaler Button — pushes to bottom via margin-top: auto im Flex-Container */
.calonder-pillars__btn {
  margin-top: auto;
  align-self: flex-start;
}

/* Beige-Button (auf grünem Hintergrund) — wiederverwendbar, z.B. Pillars + PDP category-back */
.btn.calonder-btn-spezial-beige {
  background-color: color-mix(in srgb, var(--calonder-beige) 75%, var(--calonder-beige-parts));
  color:            var(--calonder-gruen);
  border-color:     color-mix(in srgb, var(--calonder-beige) 75%, var(--calonder-beige-parts));
}
.btn.calonder-btn-spezial-beige:hover,
.btn.calonder-btn-spezial-beige:focus-visible,
.btn.calonder-btn-spezial-beige:active {
  background-color: var(--calonder-beige);
  color:            var(--calonder-gruen-hell);
  border-color:     var(--calonder-beige);
}

/* ── Modul-Button-System v1.2.0 ─────────────────────────────────────────────
   Alle Farben (background, color, border-color, hover, active) kommen vom Modul.
   Das Modul injiziert <style id="calonder-button-styles"> NACH unserem CSS-Link
   → bei gleicher Spezifität (0,1,0) gewinnt das Modul durch spätere Position.

   a.btn:not([class*="calonder-btn-"]) (oben) sorgt dafür, dass Link-Spezifität
   die Modul-Regeln nicht übersteuert.

   Nachfolgende Regeln: reiner Fallback für den Fall, dass das Modul nicht lädt.
   ────── */
.calonder-btn-auf-grun  { background-color: color-mix(in srgb, var(--calonder-beige) 75%, var(--calonder-beige-parts)); color: var(--calonder-gruen); }
.calonder-btn-auf-beige { background-color: var(--calonder-gruen);  color: var(--calonder-beige); }
.calonder-btn-blau-aktion { background-color: var(--calonder-blau); color: var(--calonder-paper); }
.calonder-btn-sale      { background-color: var(--calonder-rot);    color: var(--calonder-paper); }

/* Pillars: min-width-basiertes Cascading (jede Box immer ≥460px)
   Breakpoints berechnet: 2 Cols brauchen Container ≥952px (@gap 2rem), 3 Cols ≥1460px (@gap 2.5rem).
   Mit Gutter 2×40px: 2 Cols ab viewport ≥1032px, 3 Cols ab viewport ≥1540px. */
@media (min-width: 1032px) {
  .calonder-pillars--boxes { grid-template-columns: repeat(2, 1fr); }
  .calonder-pillars__box:nth-child(3) { grid-column: 1 / -1; } /* 3. Box volle Breite wenn allein */
}
@media (min-width: 1540px) {
  .calonder-pillars--boxes { grid-template-columns: repeat(3, 1fr); }
  .calonder-pillars__box:nth-child(3) { grid-column: auto; } /* 3. Box wieder normal */
}

/* Progressiv kleineres Gap */
@media (max-width: 1199.98px) { .calonder-pillars--boxes { gap: 2rem; } }
@media (max-width: 991.98px)  { .calonder-pillars--boxes { gap: 1.5rem; } }
@media (max-width: 767.98px)  { .calonder-pillars--boxes { gap: 1.25rem; } }
@media (max-width: 575.98px)  { .calonder-pillars--boxes { gap: 1rem; } }

/* Trust-Pillars Titel: progressiv kleiner (analog zu h2-Skala) */
@media (max-width: 1199.98px) {
  .calonder-pillars__box .calonder-pillars__title { font-size: 2.25rem; }
}
@media (max-width: 1023.98px) {
  .calonder-pillars__box .calonder-pillars__title { font-size: 2rem; }
}
/* Box-Padding + Titel verkleinern auf kleinen Screens */
@media (max-width: 767.98px) {
  .calonder-pillars__box { padding: 2rem 1.75rem; }
  .calonder-pillars__box .calonder-pillars__title { font-size: 1.75rem; }
}
@media (max-width: 549.98px) {
  .calonder-pillars__box { padding: 1.5rem 1.25rem; }
}

/* --------------------------------------------------------------------------
   3e. Verkaufsladen (Section 8): Bild | Text-Block | Bild
   -------------------------------------------------------------------------- */

/* Haupt-Grid: 28% (Lager-Bild, zum Viewport-Rand) | 72% (Text + Werkstatt-Bild) */
.calonder-verkaufsladen {
  display: grid;
  grid-template-columns: 28% 72%;
  gap: 0;
  align-items: stretch;
  /* Nur linkes Padding + vertikales Padding aufheben, damit das linke Bild
     zum Viewport-Rand zieht. Rechtes --calonder-page-gutter bleibt erhalten. */
  margin-block: -3rem;
  margin-left: calc(-1 * var(--calonder-page-gutter));
}

/* Linkes Bild: Background-Image, volle Section-Höhe */
.calonder-verkaufsladen__image--left {
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center left;
  min-height: 400px;
}

/* Rechter Teil: Sub-Grid (48% Text | 7% Gap | 45% Bild) + eigenes Padding */
.calonder-verkaufsladen__right {
  display: grid;
  grid-template-columns: 48% 45%;
  gap: 7%;
  align-items: stretch;
  padding-block: 3rem;
  padding-left: 4rem;
}

@media (max-width: 1299.98px) {
  .calonder-verkaufsladen__right { padding-left: 2rem; }
}

/* Text-Block */
.calonder-verkaufsladen__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1rem;
}

.calonder-verkaufsladen .calonder-verkaufsladen__body .calonder-verkaufsladen__title {
  margin: 0;
  /* Überschreibt .calonder-section--full h2 { margin-inline: auto } (0,2,1) → braucht (0,3,0) */
}

.calonder-verkaufsladen__intro {
  font-size: 1.125rem;
  line-height: 1.6;
}

.calonder-verkaufsladen__intro p:last-child {
  margin-bottom: 0;
}

.calonder-verkaufsladen__button {
  align-self: flex-start;
  margin-top: 0.5rem;
}

/* Rechtes Bild als <img>, füllt seine Spalte */
.calonder-verkaufsladen__image--right {
  overflow: hidden;
  min-height: 400px;
}

.calonder-verkaufsladen__image--right img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Links im Verkaufsladen-Textblock: Textfarbe erben, unterstrichen, fett.
   .btn ausgeschlossen damit der CTA-Button unberührt bleibt. */
.calonder-verkaufsladen__body a:not(.btn) {
  color: inherit;
  text-decoration: underline;
  font-weight: bold;
  transition: color 0.2s ease;
}
.calonder-verkaufsladen__body a:not(.btn):hover {
  color: var(--calonder-paper);
  text-decoration: underline;
}

/* Verkaufsladen: Typografie-Reduktion ab 1500px, nie unter 1rem */
@media (max-width: 1499.98px) {
  .calonder-verkaufsladen__intro { font-size: 1.0625rem; }
}
@media (max-width: 1023.98px) {
  .calonder-verkaufsladen__intro { font-size: 1rem; }
}

/* Verkaufsladen: Mobile Stack
   Das komplexe Bild|Text|Bild-Grid kollabiert auf Mobile zu einem vertikalen Stack.
   Das linke Bild zieht auf Desktop via negativem margin-left zum Rand — das heben
   wir hier auf, damit es auf Mobile wieder bündig ist. */
@media (max-width: 991.98px) {
  .calonder-verkaufsladen {
    display: block;
    margin-left: 0;
    margin-block: 0;
  }

  .calonder-verkaufsladen__image--left {
    min-height: 220px;
  }

  .calonder-verkaufsladen__right {
    display: block;
    padding-block: 2rem;
    padding-left: 0;
  }

  .calonder-verkaufsladen__body {
    margin-bottom: 2rem;
  }

  .calonder-verkaufsladen__image--right {
    min-height: 260px;
  }
}

/* --------------------------------------------------------------------------
   3i. Inspiration (Section 6): Intro-Kachel + 3 WordPress-Umbauten-Kacheln

   Layout: 4 gleichbreite Spalten nebeneinander.
     Spalte 1: Intro-Kachel (Hintergrundfarbe beige_main_parts, CTA-Button unten)
     Spalten 2–4: 3 Post-Kacheln (Bild + Titel + Excerpt)
   -------------------------------------------------------------------------- */

.calonder-inspiration__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: stretch;
}
/* ab 576px: 2 Post-Spalten, Intro-Tile immer volle Breite darüber */
@media (min-width: 576px) {
  .calonder-inspiration__grid { grid-template-columns: repeat(2, 1fr); }
  .calonder-inspiration__intro-tile { grid-column: 1 / -1; }
}
/* ab 900px: 3 Post-Spalten */
@media (min-width: 900px) {
  .calonder-inspiration__grid { grid-template-columns: repeat(3, 1fr); }
}
/* ab 1300px: Intro links (min 350px, 1.4fr), Posts rechts (je 1fr) */
@media (min-width: 1300px) {
  .calonder-inspiration__grid {
    grid-template-columns: minmax(min(350px, 100%), 1.4fr) repeat(3, 1fr);
  }
  .calonder-inspiration__intro-tile { grid-column: auto; }
}

.calonder-inspiration__intro-tile {
  background: var(--calonder-beige-main-parts, #ddd5c3);
  border-radius: 0.5rem;
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  min-width: 0; /* verhindert dass grid-Spalte aufgesprengt wird */
}
@media (max-width: 549.98px) {
  .calonder-inspiration__intro-tile { padding: 1.5rem 1.25rem; }
}

.calonder-inspiration__heading {
  margin: 0;
}
body.page-index .calonder-section .calonder-inspiration__heading {
  margin-bottom: 0;
}

.calonder-inspiration__text {
  font-family: var(--calonder-font-body);
  font-size: 1rem;
  line-height: 1.6;
  margin: 0;
  flex-grow: 1;
}

.calonder-inspiration__text strong,
.calonder-inspiration__text b { font-weight: 700; }

.calonder-inspiration__text em,
.calonder-inspiration__text i { font-style: italic; }

.calonder-inspiration__text u { text-decoration: underline; }

.calonder-inspiration__text p { margin-bottom: 0.6em; }
.calonder-inspiration__text p:last-child { margin-bottom: 0; }

.calonder-inspiration__text ul,
.calonder-inspiration__text ol {
  padding-left: 1.4em;
  margin-bottom: 0.6em;
}

.calonder-inspiration__text a {
  color: inherit;
  text-decoration: underline;
}

.calonder-inspiration__post {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  text-decoration: none;
  color: var(--calonder-ink);
  min-width: 0; /* grid-Item: verhindert Overflow durch Textinhalt */
}

.calonder-inspiration__post:hover {
  color: var(--calonder-ink); /* verhindert a:hover-Blau aus der globalen Regel */
}

/* Bildbereich: Wrapper für Icon-Overlay */
.calonder-inspiration__post-imgwrap {
  position: relative;
  display: block;
  flex-shrink: 0;
}

.calonder-inspiration__post-image {
  width: 100%;
  display: block;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 0.5rem;
  background-color: rgba(0, 0, 0, 0.05);
}

/* Icon: External-Link, unten rechts über dem Bild */
.calonder-inspiration__post-icon {
  position: absolute;
  bottom: 0.625rem;
  right: calc(0.625rem + 3px);
  width: 1.75rem;
  height: 1.75rem;
  border-radius: 0.25rem;
  background-color: rgba(255, 255, 255, 0.95);
  color: var(--calonder-ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.25s ease;
  z-index: 1;
}

.calonder-inspiration__post-icon .material-icons {
  font-size: 1rem;
  line-height: 1;
}

.calonder-inspiration__post:hover .calonder-inspiration__post-icon,
.calonder-inspiration__post:focus-visible .calonder-inspiration__post-icon {
  transform: translateX(3px);
}

/* Spezifität 0,2,0 — überschreibt .calonder-section h3 (0,1,1) */
.calonder-inspiration__post .calonder-inspiration__post-title {
  margin: 0;
  font-family: var(--calonder-font-heading);
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  overflow-wrap: break-word;
  word-break: break-word;
  color: var(--calonder-gruen);
  transition: color 0.2s ease;
}

.calonder-inspiration__post:hover .calonder-inspiration__post-title {
  color: var(--calonder-gruen-deep);
}

@media (max-width: 899.98px) {
  .calonder-inspiration__post .calonder-inspiration__post-title { font-size: 1.125rem; }
}
@media (max-width: 575.98px) {
  .calonder-inspiration__post .calonder-inspiration__post-title { font-size: 1rem; }
}

.calonder-inspiration__post-excerpt {
  margin: 0;
  font-family: var(--calonder-font-body);
  font-size: 0.9375rem;
  line-height: 1.7;
  opacity: 0.85;
  overflow-wrap: break-word;
  color: var(--calonder-ink);
}

.calonder-inspiration__cta-btn {
  align-self: flex-start;
  margin-top: auto;
  white-space: normal;  /* Bootstrap .btn { white-space: nowrap } überschreiben */
  word-break: break-word;
}

/* --------------------------------------------------------------------------
   3f. External-Link-Icon (open_in_new) bei target="_blank"-Buttons
   Erscheint automatisch via CSS — kein JS nötig.
   Betrifft: Inspiration CTA, Verkaufsladen Button, Trust-Pillars Buttons.
   -------------------------------------------------------------------------- */
.calonder-inspiration__intro-tile .btn[target="_blank"]::after,
.calonder-verkaufsladen__button.btn[target="_blank"]::after,
.calonder-pillars__box .btn[target="_blank"]::after {
  font-family: 'Material Icons';
  content: '\e89e'; /* open_in_new */
  font-size: 0.875em;
  vertical-align: -0.125em;
  margin-left: 0.3em;
  display: inline-block;
  line-height: 1;
  font-weight: 400;
  font-style: normal;
  letter-spacing: normal;
  text-transform: none;
  -webkit-font-smoothing: antialiased;
}

/* --------------------------------------------------------------------------
   3g. Product Miniature Card
   -------------------------------------------------------------------------- */

/* Card: weisser Hintergrund, Schatten, abgerundete Ecken */
.product-miniature {
  display: flex;
  flex-direction: column;
  height: 100%;
}

.product-miniature__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  background: var(--calonder-paper);
  border-radius: 0.75rem;
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  box-shadow: none;
  transition: box-shadow 0.25s ease, border-color 0.25s ease;
  position: relative; /* Stretched-Link-Anker */
  /* kein overflow: hidden — Bild hat eigenen Radius + Padding */
}

.product-miniature__inner:hover {
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18);
  border-color: color-mix(in srgb, var(--calonder-gruen) 75%, transparent);
}

/* Bild: mit Padding rundherum, eigene abgerundete Ecken */
.product-miniature__top {
  position: relative;
  flex-shrink: 0;
  padding: 0.75rem 0.75rem 0;
  z-index: 2; /* über Stretched-Link-::after (z-index:1) */
}

.product-miniature__image-container {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 0.5rem;
  position: relative;
  isolation: isolate;
}

/* Feiner beiger Border rund um Bild + Quickview-Bar bei Hover.
   Pseudo-Element auf __top statt border/shadow auf __image-container:
   __top hat overflow:hidden (Hummingbird), das würde den Rand unten abschneiden.
   inset: 0.75rem (= __top padding) oben/seitlich, 0 unten = reicht bis Unterkante Quickview-Bar. */
.product-miniature__top::after {
  content: '';
  position: absolute;
  inset: 0.75rem 0.75rem 0;
  border: 1px solid transparent;
  border-radius: 0.5rem;
  pointer-events: none;
  transition: border-color 0.2s ease;
  z-index: 2;
}

/* Flags (SALE/NEU etc.) über dem Border-Pseudo-Element halten */
.product-miniature .product-flags {
  z-index: 3;
}
.product-miniature__top:hover::after {
  border-color: color-mix(in srgb, var(--calonder-gruen) 75%, transparent);
}

/* Touch-Quickview-Button überflüssig: Bild-Link öffnet Quickview direkt */
.product-miniature__quickview-touch {
  display: none !important;
}

.product-miniature__image-link {
  display: block;
  width: 100%;
  height: 100%;
}

.product-miniature__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.35s ease;
}

.product-miniature:hover .product-miniature__image {
  transform: scale(1.04);
}

/* Unterer Content-Bereich */
.product-miniature__bottom {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  padding: 1rem 1.25rem 1.25rem;
  gap: 0.5rem;
}

.product-miniature__infos {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  gap: 0.375rem;
}

/* Titel */
.product-miniature__title {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1.1875rem;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.3;
  color: var(--calonder-ink);
  text-decoration: none;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.product-miniature__title:hover {
  color: var(--calonder-blau);
}

/* Stretched-Link: Titel-::after deckt gesamten __inner ab → ganze Karte navigiert zur Detailseite.
   Interaktive Elemente mit z-index > 1 bleiben klickbar (Add-to-Cart, Mehr, Quickview). */
.product-miniature__title::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Kurzbeschreibung */
.product-miniature__description {
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;
  line-height: 1.7;
  color: #6c757d;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  margin-top: 0.125rem;
}

/* Preis */
.product-miniature__prices {
  margin-top: auto;
  padding-top: 0.5rem;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.product-miniature__price {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1.5rem;
  color: var(--calonder-ink);
  line-height: 1.2;
}

.product-miniature__regular-price {
  font-size: 1rem;
  color: var(--calonder-ink);
  text-decoration: line-through;
}

/* Wenn ein Streichpreis vorhanden ist: Aktualpreis in Rot */
.product-miniature__prices:has(.product-miniature__regular-price) .product-miniature__price {
  color: var(--calonder-rot);
}

/* Farbe Lagerbestand — Miniature (Produktkacheln) */
.product-miniature__availability {
  font-size: 1rem;
  font-weight: 600;
}
/* --calonder-avail-color: Custom Property für Puls-Animation (erbt nach ::before).
   currentColor in @keyframes wird von Browsern nicht zuverlässig aufgelöst →
   explizites var() wie im getesteten Demo-Code. */
.product-miniature__availability--in_stock  { color: var(--calonder-gruen-hell); --calonder-avail-color: var(--calonder-gruen-hell); }
.product-miniature__availability--available  { color: var(--calonder-gruen-hell); --calonder-avail-color: var(--calonder-gruen-hell); }
.product-miniature__availability--last_remaining_items { color: #c07a00; --calonder-avail-color: #c07a00; }
.product-miniature__availability--out_of_stock { color: var(--calonder-leder); --calonder-avail-color: var(--calonder-leder); }

/* Lagerstatus-Icon: Pulse-Animation (Slack/Discord-Stil).
   Produktdetailseite: ::before auf .product__availability-messages (nicht auf
   .product__availability-status, wo das Material-Icon sitzt → kein Doppel-Icon). */
.product-miniature__availability::before,
.product__availability-messages::before,
.product-line__item-availability-message::before {
  content: '';
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: var(--calonder-avail-color, var(--calonder-gruen-hell));
  animation: calonder-avail-pulse 1.8s ease-out infinite;
  margin-left: 2px;
  margin-right: 0.4em;
  vertical-align: middle;
  position: relative;
  top: -1px;
  flex-shrink: 0;
}
@keyframes calonder-avail-pulse {
  0%   { box-shadow: 0 0 0 0   color-mix(in srgb, var(--calonder-avail-color) 65%, transparent); }
  70%  { box-shadow: 0 0 0 5px color-mix(in srgb, var(--calonder-avail-color) 0%,  transparent); }
  100% { box-shadow: 0 0 0 0   color-mix(in srgb, var(--calonder-avail-color) 0%,  transparent); }
}

/* Buttons: Zeile, volle Breite aufgeteilt */
.product-miniature__actions {
  display: flex;
  gap: 0.5rem;
  margin-top: 0.75rem;
  position: relative;
  z-index: 2; /* über Stretched-Link-::after (z-index:1) */
}

.product-miniature__form {
  flex: 1;
  display: contents; /* Button nimmt den Platz des Form-Elements ein */
}

/* "In den Warenkorb" — blau */
.calonder-btn-spezial-cart {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem 0.75rem;
  background-color: var(--calonder-blau);
  color: var(--calonder-paper) !important;
  border: none;
  border-radius: 0.375rem;
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;
  font-weight: 600;
  white-space: nowrap;
  cursor: pointer;
  transition: background-color 0.2s ease;
}
.calonder-btn-spezial-cart:hover {
  background-color: var(--calonder-blau-hell);
  color: var(--calonder-paper) !important;
}

/* Mehr-Button */
.calonder-btn-spezial-mehr {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem 0.75rem;
  background-color: color-mix(in srgb, var(--calonder-leder) 40%, white);
  color: var(--calonder-ink) !important;
  border: none;
  border-radius: 0.375rem;
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.2s ease;
}
.calonder-btn-spezial-mehr:hover {
  background-color: color-mix(in srgb, var(--calonder-gruen-hell) 18%, white);
  color: var(--calonder-ink) !important;
}

/* --------------------------------------------------------------------------
   3c. Sale-Produkt-Grid (eigenes Grid, umgeht Bootstrap .row Gutter-Overflow)
   -------------------------------------------------------------------------- */

/* Spezifität (0,2,0) = gleich wie globale .calonder-section .products Regel,
   aber später im File → diese Regel gewinnt (auto-fit für beliebig viele Spalten) */
.calonder-section .calonder-sale__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(260px, 100%), 1fr));
  gap: 1.5rem;
  margin: 0;
}

/* Product-Miniaturen sollen die Grid-Zelle ausfüllen, nicht durch Bootstrap
   col-* gezwungen werden. */
.calonder-sale__grid .product-miniature {
  width: 100%;
  max-width: 100%;
  margin: 0;
  flex: unset;
}

.calonder-sale__cta {
  text-align: center;
  margin-top: 2rem;
}

/* ── Leeres module-products__buttons: kein Margin ── */
.module-products__buttons:not(:has(*)) {
  margin-block-start: 0;
}

/* ── Chevron-Icon in Modul-Buttons (neu, sale, categoryproducts) ──
   Kein display:inline-flex auf dem Button — Bootstrap's inline-block
   mit padding + line-height zentriert den Text bereits korrekt.
   Asymmetrisches padding-block: Inhalt optisch etwas tiefer.
   vertical-align positioniert das Icon relativ zur Text-Baseline. */
.module-products__buttons .btn,
.calonder-sale__cta .btn {
  padding-top:    0.44rem;
  padding-bottom: 0.31rem;
}
.module-products__buttons .btn .material-icons,
.calonder-sale__cta .btn .material-icons {
  font-size: 1.45em;
  vertical-align: -0.35em;
  margin-left: 0.1em;
  -webkit-text-stroke: 0.6px currentColor;
}

/* --------------------------------------------------------------------------
   4. Layout-Zonen (Interior-Seiten: oben/unten um Middle-Area)
   -------------------------------------------------------------------------- */

.calonder-zone {
  width: 100%;
}

.calonder-zone__inner {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
}

/* =====================================================================
   Bootstrap Alerts — Calonder Brand Colors
   Überschreibt die --bs-alert-* Variablen direkt auf jeder Alert-Klasse,
   ohne globale BS-Tokens zu berühren.
   BG:     10–12% Markenfarbe + Rest Weiss → sehr hell, dezent
   Border: 30%   Markenfarbe + Rest Weiss → mittlere Intensität
   Text:   dunklere Variante der Markenfarbe für gute Lesbarkeit
   color-mix() ist in allen modernen Browsern verfügbar (Chrome 111+, Safari 16+).
   ===================================================================== */

.alert-success {
  --bs-alert-color:        var(--calonder-gruen-deep);
  --bs-alert-bg:           color-mix(in srgb, var(--calonder-gruen) 12%, white);
  --bs-alert-border-color: color-mix(in srgb, var(--calonder-gruen) 30%, white);
  --bs-alert-link-color:   var(--calonder-gruen-deep);
}

.alert-danger {
  --bs-alert-color:        color-mix(in srgb, var(--calonder-rot) 75%, black);
  --bs-alert-bg:           color-mix(in srgb, var(--calonder-rot) 10%, white);
  --bs-alert-border-color: color-mix(in srgb, var(--calonder-rot) 30%, white);
  --bs-alert-link-color:   color-mix(in srgb, var(--calonder-rot) 75%, black);
}

.alert-primary,
.alert-info {
  --bs-alert-color:        var(--calonder-blau);
  --bs-alert-bg:           color-mix(in srgb, var(--calonder-blau) 10%, white);
  --bs-alert-border-color: color-mix(in srgb, var(--calonder-blau) 28%, white);
  --bs-alert-link-color:   var(--calonder-blau);
}

.alert-warning {
  /* Kein Calonder-Gelb definiert → Amber als semantisch passender Warnton */
  --bs-alert-color:        #5C3D00;
  --bs-alert-bg:           #FFF8E6;
  --bs-alert-border-color: #F0D080;
  --bs-alert-link-color:   #5C3D00;
}

.alert-secondary {
  --bs-alert-color:        var(--calonder-grau);
  --bs-alert-bg:           color-mix(in srgb, var(--calonder-beige-parts) 18%, white);
  --bs-alert-border-color: color-mix(in srgb, var(--calonder-beige-parts) 45%, white);
  --bs-alert-link-color:   var(--calonder-grau);
}

/* Zone hat standardmässig kein padding-block.
   PS rendert $notifications immer als Div (auch wenn keine echten Alerts
   vorhanden) — das leere Div hätte die Zone sonst unnötig aufgebläht.
   :has() gibt der Zone Padding nur wenn tatsächlich Inhalt vorhanden ist:
     - #notifications .alert → echte Flash-Meldung (Fehler, Erfolg etc.)
   (Breadcrumb ist neu im Header → calonder-header__bc-row, nicht mehr hier) */
.calonder-zone--top { padding-block: 0; }
.calonder-zone--top:has(#notifications .alert) { padding-block: 0rem 1rem; }

/* Notifications: Bootstrap .container innerhalb #notifications hat seitliches Padding —
   entfernen, da .calonder-zone__inner bereits den Seitenabstand liefert */
#notifications .container {
  padding-inline: 0;
}

/* Dedizierter Blur-Backdrop — Farbe, Blur und Schatten wenn aktiv.
   height-Transition entfernt → kein sichtbares Ausfahren von oben beim Scrollen.
   visibility:hidden im Ruhezustand → kein GPU-Layer, keine Render-Artefakte. */
.header-backdrop {
  pointer-events: none;
  display: block;
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  height: 0;
  background: var(--calonder-beige-header-transparent);
  z-index: 1028;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.2s ease;
}
.header-backdrop.bd-is-active {
  visibility: visible;
  opacity: 1;
  box-shadow: 0 4px 8px -4px rgba(0, 0, 0, 0.22);
}
.header-backdrop {
  backdrop-filter: blur(5px);
  -webkit-backdrop-filter: blur(5px);
}

/* Breadcrumb-Box im Header (bc-row) + Produkt-Listen-Toolbar: transparenter
   Hintergrund, feiner Border + runde Ecken als leichte visuelle Abgrenzung. */
.calonder-header__bc-row .breadcrumb__wrapper,
#js-product-list-top,
.products__pagination {
  margin-bottom: 0;
  background-color: rgba(255, 255, 255, 0.5);
  border: 1px solid rgba(0, 0, 0, 0.12);
  border-radius: 0.5rem;
  padding: 0.5rem 1rem;
}

/* Breadcrumb-Row — eigenständiges sticky Element UNTERHALB des Headers.
   Blur kommt vom gemeinsamen .header-backdrop darunter — keine Render-Naht.
   Mobile: immer kompakt. Desktop: oben = Karte, scrollend = Frosted-Glass-Leiste.
   Kein border-top: rutschte im Compact-Zustand sichtbar in den Header-Bereich. */

/* Mobile: gleiche Karte→Compact-Logik wie Desktop (bc-is-sticky per JS) */
@media (max-width: 991.98px) {
  .calonder-header__bc-row {
    position: sticky;
    top: var(--calonder-header-height);
    z-index: 1029;
    padding-top: 1rem;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
  }
  .calonder-header__bc-row .calonder-zone__inner { padding-block: 0.25rem; }
  .calonder-header__bc-row .breadcrumb__wrapper nav,
  .calonder-header__bc-row .breadcrumb__wrapper ol.breadcrumb { margin: 0; padding: 0; }
  .calonder-header__bc-row .breadcrumb__wrapper {
    transition: background-color 0.2s ease, border-color 0.2s ease, border-radius 0.15s ease;
  }
  .calonder-header__bc-row.bc-is-sticky {
    transform: translateY(-1rem);
    /* kein box-shadow — Schatten liegt auf .header-backdrop.bd-is-active */
  }
  .calonder-header__bc-row.bc-is-sticky .breadcrumb__wrapper {
    background-color: transparent;
    border-color: transparent;
    border-radius: 0;
  }
}

/* Desktop: sticky direkt unter Header.
   padding-top: 1rem = Atemraum über der Karte im Normal-Zustand.
   Kein eigener Hintergrund: .header-backdrop liefert alles wenn aktiv.
   Im Compact-Zustand per translateY(-1rem) hinter den Header geschoben (z-index 1029 < 1030).
   transform ist compositor-only → kein Layout-Reflow → kein Stutter.
   pointer-events:none auf dem Container: die Leiste selbst (transparenter Hintergrund)
   soll Links im Seiteninhalt darunter nicht blockieren → kein Cursor-Flackern. */
@media (min-width: 992px) {
  .calonder-header__bc-row {
    position: sticky;
    top: var(--calonder-header-height);
    z-index: 1029;
    padding-top: 1rem;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
    pointer-events: none;
  }
  .calonder-header__bc-row a,
  .calonder-header__bc-row button {
    pointer-events: auto;
  }
  .calonder-header__bc-row .calonder-zone__inner {
    padding-block: 0.25rem;
  }
  .calonder-header__bc-row .breadcrumb__wrapper nav,
  .calonder-header__bc-row .breadcrumb__wrapper ol.breadcrumb {
    margin: 0;
    padding: 0;
  }
  .calonder-header__bc-row .breadcrumb__wrapper {
    transition: background-color 0.2s ease, border-color 0.2s ease, border-radius 0.15s ease;
  }
}

/* Desktop: Compact — translateY schiebt padding-top hinter Header.
   Kein eigener Hintergrund: .header-backdrop liefert alles wenn aktiv. */
@media (min-width: 992px) {
  .calonder-header__bc-row.bc-is-sticky {
    transform: translateY(-1rem);
    /* kein box-shadow — Schatten liegt auf .header-backdrop.bd-is-active */
  }
  .calonder-header__bc-row.bc-is-sticky .breadcrumb__wrapper {
    background-color: transparent;
    border-color: transparent;
    border-radius: 0;
  }
}

/* Kompaktes Viewport (≤1100px): bc-row im Compact-Zustand ohne Versatz und ohne Padding.
   padding-top: 0 + transform: none (kein translateY nötig wenn kein Offset vorhanden).
   breadcrumb__wrapper: horizontales Padding entfernen → nutzt volle Breite. */
@media (max-width: 1100px) {
  .calonder-header__bc-row.bc-is-sticky {
    padding-top: 0;
    transform: none;
  }
  .calonder-header__bc-row.bc-is-sticky .breadcrumb__wrapper {
    padding-inline: 0;
  }
}

/* Kleines Mobile: Breadcrumb darf umbrechen statt abgeschnitten zu werden */
@media (max-width: 767.98px) {
  .calonder-header__bc-row .breadcrumb__wrapper ol.breadcrumb {
    flex-wrap: wrap;
    row-gap: 0.125rem;
  }
}

/* Breadcrumb: Link-Farbe */
.breadcrumb__wrapper .breadcrumb-item a {
  color: var(--calonder-leder);
  text-decoration: none;
  font-weight: 500;
}
.breadcrumb__wrapper .breadcrumb-item a:hover {
  color: var(--calonder-gruen);
}
.breadcrumb__wrapper .breadcrumb-item + .breadcrumb-item::before {
  content: "›";
  color: var(--calonder-leder);
  opacity: 0.5;
}
.breadcrumb__wrapper .breadcrumb-item:last-child > span {
  font-weight: 600;
  color: var(--calonder-gruen);
}

#js-product-list-top  { margin-bottom: 1.5rem; }
.products__selection   { margin-block-end: 0; }
/* Hummingbird: margin-block: 1.5rem — Abstand bleibt, kommt aber von aussen */
.products__pagination  { margin-block: 1.5rem 0; }

/* ---- Pagination: Button-Stil ---- */
.pagination__nav ul.pagination {
  gap: 0.25rem;
  margin: 0;
}

.pagination__nav .page-item .page-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.125rem;
  height: 2.125rem;
  padding: 0 0.5rem;
  border: 1px solid color-mix(in srgb, var(--calonder-blau) 40%, transparent);
  border-radius: 0.375rem;
  background: transparent;
  color: var(--calonder-blau);
  font-weight: 700;
  font-size: 0.9375rem;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}

.pagination__nav .page-item .page-link:hover:not(:disabled):not(.disabled) {
  background: color-mix(in srgb, var(--calonder-blau) 8%, transparent);
  border-color: var(--calonder-blau);
}

.pagination__nav .page-item.active .page-link {
  background: var(--calonder-blau);
  border-color: var(--calonder-blau);
  color: #fff;
}

.pagination__nav .page-item .page-link.previous,
.pagination__nav .page-item .page-link.next {
  font-weight: 400;
  gap: 0.25rem;
  padding-inline: 0.625rem;
}

.pagination__nav .page-item .page-link.disabled,
.pagination__nav .page-item .page-link:disabled {
  opacity: 0.38;
  cursor: not-allowed;
}

/* Spacer … — kein Border, kein Fill */
.pagination__nav .page-item.disabled span.page-link {
  border: none;
  background: none;
  color: var(--calonder-ink);
  opacity: 0.5;
  font-weight: 400;
  cursor: default;
  min-width: auto;
  padding-inline: 0.25rem;
}

.calonder-zone--bottom { padding-block: 2rem 2rem; } /* Zone unter Middle, nur gerendert wenn etwas im Hook displayWrapperBottom */


/* --------------------------------------------------------------------------
   5. Middle-Area (zentraler Bereich mit Sidebars)
   -------------------------------------------------------------------------- */

/*
 * .calonder-middle trägt die Bootstrap-Klasse "container". Bootstrap steuert
 * das seitliche Padding intern: padding-inline = --bs-gutter-x × 0.5.
 * Kinder-.row kompensieren mit negativem Margin (ebenfalls × 0.5), dadurch
 * ist der tatsächlich sichtbare Innenabstand = --bs-gutter-x ÷ 2.
 *
 * Damit der Seitenabstand mit --calonder-page-gutter übereinstimmt:
 *   --bs-gutter-x = --calonder-page-gutter × 2
 *   → sichtbar: --calonder-page-gutter (2.5rem) pro Seite
 *
 * Kein eigenes padding-inline nötig (würde sich mit Bootstrap addieren).
 */
.calonder-middle {
  --bs-gutter-x: calc(var(--calonder-page-gutter) * 2);
  padding-block-start: 0;
  padding-block-end: 2rem;
}

/* Produkt-Listing-Grid in der Middle-Area: Hummingbird hat fixe Spaltenzahlen
   pro Breakpoint (lg = 2 Spalten). Mit unserer breiteren Center-Spalte (col-lg-8
   ≈ 1240px) wollen wir mehr Spalten — auto-fill mit minmax passt sich
   automatisch an die tatsächliche Container-Breite an.
   320px-Mindest sorgt dafür, dass Karten nicht zu klein werden:
   in der 3-Spalten-Layout-Mitte ergeben sich 3 Boxen, in full-width-Layouts
   automatisch 5+. */
#js-product-list .products {
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
}

/* --------------------------------------------------------------------------
   5b. Trust-Advantages (kleinere Reassurance auf Kategorie- und Produkt-Seiten)

   Wird via _partials/trust-advantages.tpl in zwei Kontexten gerendert:
     - rechte Spalte (Kategorie-Seiten, Layout-both-columns / -right-column)
     - vor dem Footer auf Produktdetail-Seiten
   Auto-fit-Grid passt sich an: 1 Spalte in schmaler Sidebar, mehrspaltig auf
   breiter Produktseite.
   -------------------------------------------------------------------------- */

.calonder-trust-advantages {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.5rem;
  margin-block: 0;
  font-size: 0.9375rem;
}

.calonder-trust-advantages__item {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
  gap: 1rem;
}

.calonder-trust-advantages__content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.calonder-trust-advantages__icon {
  font-size: 2rem;
  line-height: 1.2;
  color: var(--calonder-gruen, currentColor);
  flex-shrink: 0;
}

.calonder-trust-advantages__title {
  margin: 0;
  font-family: var(--calonder-font-heading);
  font-size: 1.0625rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  line-height: 1.2;
}

.calonder-trust-advantages__text {
  font-family: var(--calonder-font-body);
  font-size: 0.9375rem;
  line-height: 1.7;
}

.calonder-trust-advantages__text > *:last-child {
  margin-bottom: 0;
}

/* Als calonder-card-soft (PDP + eigene Karte): immer einspaltig, egal wie breit */
.calonder-card-soft .calonder-trust-advantages,
.calonder-trust-advantages.calonder-card-soft {
  grid-template-columns: 1fr;
}

/* In schmaler rechter Spalte: Items vertikal stacken (Auto-Fit erzwingt das
   bereits via min-width 220 — Container in col-lg-3 ist meist <300px) */
#right-column .calonder-trust-advantages {
  grid-template-columns: 1fr;
  gap: 1.25rem;
  padding: 1.25rem;
  margin-block: 0 1.5rem;
}

/* --------------------------------------------------------------------------
   5c. Subcategory-Grid (Kategorie-Seiten)

   Überschreibt Hummingbirds Standard-Layout (kleine horizontale Pills/
   Mini-Thumbnails 3rem nebeneinander) mit einem vertikalen Karten-Grid:
   Bild oben (quadratisch, volle Box-Breite), Name unten.

   Breakpoints: 5 Spalten (≥lg), 3 (≥sm), 2 (xs)
   -------------------------------------------------------------------------- */

.subcategory__list--with-images {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1rem;
  overflow-x: visible;
  margin-bottom: 3rem;
}

@media (max-width: 991px) {
  .subcategory__list--with-images {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (max-width: 575px) {
  .subcategory__list--with-images {
    grid-template-columns: repeat(2, 1fr);
  }
}

.subcategory__link--with-image {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.75rem;        /* A) Abstand zwischen Bild und Name */
  padding: 0.7rem; /* äusserer Abstand rund um Bild und Name */
  border-radius: var(--bs-border-radius);
  text-decoration: none;
  color: var(--bs-body-color);
  transition: opacity 0.15s ease, border-color 0.25s ease, color 0.25s ease;
  background-color: white;
}

.subcategory__link--with-image:hover {
  opacity: 1;
  background-color: white;
  border-color: color-mix(in srgb, var(--calonder-gruen) 75%, transparent);
  color: var(--calonder-blau);
}

.subcategory__link--with-image .subcategory__thumbnail {
  width: 100%;
  height: auto;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: var(--bs-border-radius);
  display: block;
}

.subcategory__link--with-image .subcategory__name {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.25;
  word-break: break-word;
  margin-bottom: 0.5rem; /* etwas Luft unter Kat-Name */
}

/* --------------------------------------------------------------------------
   5d. Produkt-Sortierung (Kategorie-Seiten)

   .products__sort-dropdown-button erbt von .btn unsere Rubik 600-Regel.
   Für das Sortier-Dropdown ist DM Sans 500 in kompakterer Grösse passender.
   -------------------------------------------------------------------------- */

.products__sort-dropdown-button {
  font-family: var(--calonder-font-body);
  font-weight: 500;
  font-size: 0.875rem;
}

/* --------------------------------------------------------------------------
   6. Header

   Trustbar: nutzt --section-* (inline gesetzt in header.tpl aus
             $calonder_content.section_colors.trustbar).
   Main-Header: eigene --calonder-header-bg Variable (kein Scheme im Modul).
   -------------------------------------------------------------------------- */

/* Trustbar — nutzt Section-Scheme via inline CSS-Variablen */
.calonder-trustbar {
  width: 100%;
  font-size: 1rem;
  font-weight: 500;
  background-color: var(--section-bg, var(--calonder-beige-hell));
  color: var(--section-text, inherit);
}

.calonder-trustbar__inner {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  padding-inline: 2.5rem; /* im Scroll-Modus (<1600px) auf 0 überschrieben */
  height: 36px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: nowrap;
}

.calonder-trustbar__item {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
}

.calonder-trustbar__icon {
  font-size: 1.125rem;
  line-height: 1;
}

/* Trustbar: responsive auto-scroll — Breiten werden durch JS in px gesetzt */
@media (max-width: 1599.98px) {
  .calonder-trustbar__inner {
    overflow: hidden;
    justify-content: flex-start;
    padding-inline: 0;
    gap: 0;
  }
  .calonder-trustbar__item {
    flex-shrink: 0;
    justify-content: center;
    white-space: nowrap;
    padding-inline-start: 3.5rem;
    padding-inline-end: 1rem;
  }
}
@media (max-width: 575.98px) {
  .calonder-trustbar { font-size: 0.875rem; }
}

/* --------------------------------------------------------------------------
   Z-Index-Hierarchie (Calonder Theme)

   Bootstraps Konvention:  Sticky 1020 · Fixed 1030 · Modal-Backdrop 1040
                           Modal 1050 · Offcanvas 1060 · Tooltip 1070

   Bewusste Abweichung: calonder-header ist sticky, sitzt aber bei 1030
   (Bootstrap "Fixed"-Slot). Grund: sticky Page-Elemente wie checkout-grid__
   aside-wrapper und calonder-mini-cart erben Hummingbirds sticky z-index 1020
   und würden sonst den Header überlagern. Hummingbird selbst löst es identisch
   (header-top: z-index 1030). Solange keine echten .fixed-top/.fixed-bottom
   Elemente im Theme existieren, gibt es keinen Konflikt.

   Wert  · Element
   ────────────────────────────────────────────────────────
      10  · #right-column .calonder-mini-cart (sticky)
    1020  · Hummingbird sticky-Elemente (checkout-grid__aside-wrapper etc.)
    1029  · .calonder-header__bc-row (sticky Breadcrumb, direkt unter Header)
    1030  · .calonder-header ← sticky, bewusst auf Fixed-Ebene gesetzt
    1031  · .calonder-nav__sub (Dropdown, muss über Header liegen)
    1040  · Bootstrap Modal-Backdrop
    1050  · Bootstrap Modal
    1060  · Bootstrap Offcanvas
    1070  · Bootstrap Tooltip
   -------------------------------------------------------------------------- */

/* Main Header — position: sticky.
   Schatten permanent → sichtbar auf allen Seiten ohne bc-row (Startseite, Warenkorb etc.).
   Wenn bc-row compact ist (.bc-is-sticky), übernimmt sie den Schatten → Header shadow: none.
   background: Fallback; wenn Backdrop aktiv → Header transparent (kein Doppel-Opacity). */
.calonder-header {
  background: var(--calonder-beige-header-transparent);
  position: sticky;
  top: 0;
  z-index: 1030;
  box-shadow: 0 4px 8px -4px rgba(0, 0, 0, 0.22);
  transition: background-color 0.2s ease, box-shadow 0.25s ease;
}
/* Backdrop aktiv → Header transparent (Backdrop liefert den Hintergrund auf allen Viewports). */
html:has(.header-backdrop.bd-is-active) .calonder-header {
  background: transparent;
}
/* Backdrop aktiv → Schatten wandert auf Backdrop (unabhängig von Viewport-Grösse).
   Gilt für alle Seiten/Auflösungen: kein Doppelschatten, kein fehlender Schatten. */
html:has(.header-backdrop.bd-is-active) .calonder-header {
  box-shadow: none;
}

/* Grid: [Logo col: auto] [Right col: 1fr]
   Logo-Spalte überspannt beide Zeilen der rechten Spalte. */
/* 3-Spalten-Grid: Logo | Mitte | Rechts */
.calonder-header__inner {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
  height: var(--calonder-header-height);
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: stretch;
}

/* Spalte 1: Logo — vertikal zentriert */
.calonder-header__logo {
  display: flex;
  align-items: center;
  padding-right: 2.5rem;
}

/* SVG-Logo: explizite height an jedem Breakpoint — width:auto skaliert proportional.
   img-fluid entfernt (height:auto + width:auto = 0×0 bei SVG ohne absolute Dimensionen).
   max-width:100% verhindert Overflow auf sehr engen Containern. */
.calonder-header__logo img {
  height: 90px;
  width: auto;
  max-width: 100%;
  display: block;
}

/* Spalte 2: Mitte — Suche oben, Nav unten */
.calonder-header__middle {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  gap: 0.5rem;
  min-width: 0;
}

.calonder-header__middle-search {
  display: flex;
  align-items: center;
}

.calonder-header__middle-nav {
  display: flex;
  align-items: stretch;
}

/* Spalte 3: Rechts — User-Icons + Meta nebeneinander, vertikal zentriert */
/* Rechte Spalte: nur die mittlere Spalte (1fr) gibt Platz ab. */
.calonder-header__right {
  display: flex;
  align-items: center;
  gap: 2rem;
  padding-left: 2.5rem;
}
@media (max-width: 1349.98px) {
  .calonder-header__right { gap: 1rem; }
}

/* Meta-Bereich: Social + Homepage-Button nebeneinander.
   Ab 1400px wird auf Spalte gewechselt (statt flex-wrap, weil auto-Gridspalte
   sich sonst nie zusammenzieht). */
.calonder-header__meta {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
  flex-shrink: 0;
  margin-bottom: 0;
}

@media (max-width: 1700px) {
  .calonder-header__meta {
    flex-direction: column;
    align-items: flex-end;
    gap: 0.2rem;
  }
}

/* Header-Nav: stufenweise Komprimierung bis zum md-Breakpoint (768px).
   Doppelter Selektor nötig: Basis-Regeln für .calonder-nav__list/.calonder-nav__link
   stehen weiter unten im File → gleiche Spezifizität, spätere Regel würde gewinnen.
   .calonder-header__middle-nav davor erhöht Spezifizität und übersteuert sicher. */
@media (max-width: 1750px) {
  .calonder-header__middle-nav .calonder-nav__list { gap: 1.5rem; }
}

@media (max-width: 1600px) {
  .calonder-header__middle-nav .calonder-nav__list { gap: 1.1rem; }
  .calonder-header__middle-nav .calonder-nav__link { font-size: 0.95rem; }
}

@media (max-width: 1450px) {
  .calonder-header__middle-nav .calonder-nav__list { gap: 0.75rem; }
  .calonder-header__middle-nav .calonder-nav__link { font-size: 0.9rem; letter-spacing: 0.01em; }
  .calonder-header__logo img { height: 70px; width: auto; }
}

@media (max-width: 1350px) {
  .calonder-header__middle-nav .calonder-nav__list { gap: 0.75rem; }
  .calonder-header__middle-nav .calonder-nav__link { font-size: 0.85rem; letter-spacing: 0; }
  .calonder-header__logo img { height: 60px; width: auto; }
  /* Chevron: dünnere Border + kleinerer Abstand.
     align-self: center = explizite Flex-Zentrierung (verhindert Browser-Abweichung).
     translateY(+0.2em) im rotierten System = Verschiebung nach unten-rechts → Tip
     landet unterhalb Mitte auf Baseline (Gegenteil von -0.15em das nach oben schiesst). */
  .calonder-header__middle-nav .calonder-nav__item--has-children > .calonder-nav__link::after {
    border-right-width: 1.5px;
    border-bottom-width: 1.5px;
    margin-left: 0.45em;
    align-self: center;
    transform: rotate(45deg) translateY(0.2em);
  }
}

@media (max-width: 1200px) {
  .calonder-header__middle-nav .calonder-nav__list { gap: 0.5rem; }
  /* font-size bleibt bei 0.85rem (von ≤1350px) — kein weiteres Verkleinern */
  .calonder-header__logo { padding-right: 1.5rem; }
  .calonder-header__logo img { height: 52px; width: auto; }
  .calonder-header__right { padding-left: 1.5rem; }
}

@media (max-width: 1100px) {
  /* Nav ist ab hier hidden (min-width: 1100.02px) → nur Meta ausblenden */
  .calonder-header__meta { display: none; }
}

@media (max-width: 950px) {
  /* logo padding-right bleibt bei 1.5rem (von ≤1200px — keine Reduktion hier) */
  .calonder-header__right { padding-left: 1rem; }
}

/* A) Logo-Spalte bei sehr kleinen Screens kappen — Spalte (nicht Bild) begrenzen */
@media (max-width: 575.98px) {
  .calonder-header__logo { max-width: 40vw; overflow: hidden; }
}
@media (max-width: 379.98px) {
  .calonder-header__logo { padding-right: 0.25rem; }
  .calonder-header__right { padding-left: 0.25rem; }
}

/* ── Mobile Header (<768px) ─────────────────────────────────────────────── */
@media (max-width: 767.98px) {
  :root {
    --calonder-header-height: 64px;
  }

  /* Labels der Konto/Warenkorb-Buttons ausblenden — Icons bleiben */
  .calonder-header__icon-btn-label {
    display: none;
  }

  /* Nav + Suche verschwinden ab hier — Paddings fast auf null */
  .calonder-header__logo {
    padding-right: 0.25rem;
  }
  .calonder-header__right {
    gap: 0.5rem;
    padding-left: 0.25rem;
  }
  .calonder-header__logo img { height: 44px; width: auto; }
}

@media (max-width: 379.98px) {
  .calonder-header__logo img { height: 36px; width: auto; }
}

/* ── Hamburger-Button — gleicher Stil wie .calonder-header__icon-btn ─────── */
.calonder-header__hamburger {
  display: none; /* Desktop >1100px: unsichtbar */
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  padding: 0.35rem 0.5rem;
  border: none;
  border-radius: 0.4rem;
  background: transparent;
  color: var(--calonder-ink);
  cursor: pointer;
  flex-shrink: 0;
  transition: color 0.2s ease, background-color 0.2s ease;
}
.calonder-header__hamburger:hover,
.calonder-header__hamburger:focus-visible {
  color: var(--calonder-gruen);
  background-color: color-mix(in srgb, var(--calonder-gruen) 8%, transparent);
  outline: none;
}

/* ── Search Toggle (Mobile) — Button in .calonder-header__user, gleicher Stil wie .calonder-header__icon-btn ── */
/* button.calonder-search-mobile (Spez. 0,1,1) schlägt .calonder-header__icon-btn (0,1,0) → kein display:flex-Override */
button.calonder-search-mobile {
  display: none; /* >849px: unsichtbar */
  border: none;
  background: transparent;
  cursor: pointer;
  flex-shrink: 0;
}

@media (max-width: 849.98px) {
  .calonder-search-desktop {
    display: none;
  }
  button.calonder-search-mobile {
    display: flex;
    align-items: center;
  }
}


/* .calonder-header__middle-nav: Sichtbarkeit ausschliesslich via unserem CSS.
   Bootstrap-Utility-Klassen (d-none d-md-flex) wurden aus dem Template entfernt
   um JS-Konflikte zu vermeiden. */
.calonder-header__middle-nav {
  display: none;
}
@media (min-width: 1100.02px) {
  .calonder-header__middle-nav {
    display: flex;
    align-items: stretch;
  }
}

/* Ab ≤1100px: Hamburger zeigen, Suche vertikal zentrieren (kein Nav darunter mehr) */
@media (max-width: 1100px) {
  .calonder-header__hamburger {
    display: flex;
  }
  .calonder-header__middle {
    justify-content: center;
  }
}

/* ── Mobile Nav Offcanvas (#calonder-mobile-nav) ─────────────────────────── */
#calonder-mobile-nav {
  --bs-offcanvas-width: min(85vw, 360px);
  --bs-offcanvas-bg: var(--calonder-paper, #f4f3ea);
}

/* Offcanvas-Header: Logo + Schliessen-Button */
.calonder-mobile-nav__header-logo img {
  max-height: 42px;
  width: auto;
}

/* Sections im Drawer — trennende Linie */
.calonder-mobile-nav__section {
  padding: 0 0 1rem;
}

/* Kleine Überschrift für Kategorienbaum */
.calonder-mobile-nav__section-label {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 0.6875rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--calonder-ink);
  opacity: 0.5;
  margin-bottom: 0.625rem;
  padding: 0 0.25rem;
}

/* Hauptnavigation: vertikale Link-Liste */
.calonder-mobile-nav__list {
  padding: 0;
  margin: 0;
  list-style: none;
}
.calonder-mobile-nav__link {
  display: block;
  padding: 0.4375rem 0.25rem;
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--calonder-ink);
  text-decoration: none;
  border-bottom: 1px solid color-mix(in srgb, var(--calonder-ink) 8%, transparent);
  transition: color 0.2s ease;
}
.calonder-mobile-nav__link:last-child {
  border-bottom: none;
}
.calonder-mobile-nav__link:hover {
  color: var(--calonder-gruen);
}

/* Kategorienbaum im Drawer: maximale Höhe + Scroll */
.calonder-mobile-nav__cattree .ps-categorytree {
  max-height: 38vh;
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* Social + Zur Homepage: flex-wrap */
.calonder-mobile-nav__social {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

/* Suchfeld-Wrapper: füllt .calonder-header__middle-search aus.
   position: relative = Anker für das Dropdown. */
.calonder-header__search {
  position: relative;
  flex-grow: 1;
  min-width: 0;
  width: 100%;
}

/* Margin-Reset: Hummingbird setzt auf #_desktop_ps_searchbar eigene Abstände */
.calonder-header__search .calonder-search-wrapper,
.calonder-header__search #_desktop_ps_searchbar,
.calonder-header__search #ps_searchbar {
  width: 100%;
  margin: 0 !important;
  padding: 0 !important;
}

/* Suchformular: Field + Button nebeneinander, 8px Abstand */
.calonder-search__form {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 35px;
  width: 100%;
}

/* Visueller Input-Container: Lupe + Input + Clear, rundum abgerundet */
.calonder-search__field {
  display: flex;
  align-items: center;
  flex-grow: 1;
  height: 35px;
  border: 1px solid var(--bs-border-color, #dee2e6);
  border-radius: 0.375rem;
  background: #fff;
  padding-inline: 0.5rem;
  overflow: hidden;
}

/* Lupe-Icon links im Field */
.calonder-search__icon {
  font-size: 1.125rem;
  color: #6c757d;
  flex-shrink: 0;
  margin-right: 0.375rem;
  line-height: 1;
}

.calonder-search__input {
  flex-grow: 1;
  height: 100%;
  font-size: 0.9375rem; /* 15px */
  border: none;
  outline: none;
  background: transparent;
  padding: 0;
  box-shadow: none !important;
}

/* Clear-Button innerhalb des Fields — Hummingbird-Absolutpositionierung aufheben */
.calonder-search__clear,
.calonder-search__field .ps-searchbar__clear {
  position: static !important;
  transform: none !important;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  border: none;
  background: transparent;
  padding: 0;
  margin-left: 0.25rem;
  color: #6c757d;
  cursor: pointer;
}

/* Submit-Button: freistehend, rundum abgerundet, blau */
.calonder-search__submit {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 35px;
  border: 1px solid var(--calonder-blau);
  border-radius: 0.375rem;
  background: var(--calonder-blau);
  color: var(--calonder-paper);
  cursor: pointer;
  transition: background 0.2s ease, border-color 0.2s ease;
}
.calonder-search__submit:hover {
  background: var(--calonder-blau-hell);
  border-color: var(--calonder-blau-hell);
}
.calonder-search__submit svg {
  width: 22px;
  height: 22px;
}

/* Suchergebnisse-Dropdown: spannen den vollen .calonder-header__search aus.
   #ps_searchbar auf static → Dropdown "entkommt" dem PS-Container und
   bezieht sich auf .calonder-header__search (position: relative) als Anker. */
.calonder-search-wrapper .ps-searchbar,
.calonder-search-wrapper #ps_searchbar {
  position: static !important;
}
.calonder-search-wrapper .ps-searchbar__dropdown {
  position: absolute !important;
  top: 100% !important;
  left: 0 !important;
  right: 52px !important; /* 44px Button + 8px Gap → bündig mit Suchfeld-Kante */
  width: auto !important;
  max-width: none !important;
  min-width: 0 !important;
  margin-top: 4px !important;
}
.calonder-search-wrapper .ps-searchbar__results {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
  gap: 0.25rem;
  padding: 0.5rem;
}
.calonder-search-wrapper .ps-searchbar__result-link {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem 0.75rem;
}
.calonder-search-wrapper .ps-searchbar__result-image {
  width: 48px;
  height: 48px;
  object-fit: cover;
  flex-shrink: 0;
}

/* Veraltet (ersetzt durch .calonder-header__meta) — Kompatibilitäts-Alias */
.calonder-header__top-right {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
}

/* Social-Icons: abgerundete Quadrate */
/* BACKUP skewed:
.calonder-social { transform: skewX(-10deg); border-radius: 0; }
*/
.calonder-socials {
  display: flex;
  align-items: center;
  gap: 0.375rem;
}

.calonder-social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 1.5px solid var(--calonder-ink);
  color: var(--calonder-ink);
  border-radius: 0.375rem;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
  text-decoration: none;
  opacity: 0.75;
}
.calonder-social:hover {
  opacity: 1;
  color: var(--calonder-gruen);
  border-color: var(--calonder-gruen);
  background-color: rgba(0, 0, 0, 0.04);
}
.calonder-social svg {
  width: 15px;
  height: 15px;
  flex-shrink: 0;
}

/* "Zur Homepage"-Button: abgerundete Ecken, kein Skew */
/* BACKUP skewed:
.calonder-header__homepage-btn { transform: skewX(-10deg); border-radius: 0; }
.calonder-header__homepage-btn span { display: inline-block; }
*/
.calonder-header__homepage-btn {
  display: inline-flex;
  align-items: center;
  height: 30px;
  padding-inline: 1rem;
  border: 1.5px solid var(--calonder-gruen);
  border-radius: 0.375rem;
  color: var(--calonder-beige) !important;
  background-color: var(--calonder-gruen);
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  text-decoration: none;
  transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
  white-space: nowrap;
}
.calonder-header__homepage-btn:hover {
  color: var(--calonder-paper) !important;
  background-color: var(--calonder-gruen-hell);
  border-color: var(--calonder-gruen-hell);
}
.calonder-header__homepage-btn span {
  display: inline-block;
}

.calonder-header__user {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-shrink: 0;
  margin-bottom: 0;
}

/* Wrapper-Divs der Login/Cart-Buttons auf gleiche Höhe bringen */
.calonder-header__user .header-block {
  display: flex;
  align-items: center;
}

/* Login + Warenkorb: blauer Hintergrund, weisse Schrift, abgerundete Ecken */
.calonder-header__user .header-block__action-btn {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.75rem;
  background-color: var(--calonder-blau);
  color: var(--calonder-paper) !important;
  border-radius: 0.375rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-decoration: none;
  transition: background-color 0.2s ease;
}
.calonder-header__user .header-block__action-btn:hover {
  background-color: var(--calonder-blau-hell);
  color: var(--calonder-paper) !important;
}

/* Artikel-Anzahl: weisses Pill mit blauer Zahl, mit rechtem Abstand */
.calonder-header__user .header-block__badge {
  background: var(--calonder-paper) !important;
  color: var(--calonder-blau) !important;
  font-size: 0.8rem !important;
  font-weight: 700;
  padding: 0 0.25rem !important;
  border-radius: 0.25rem !important;
  margin-right: 8px;
  min-width: 1.25rem !important;
  height: 1.25rem !important;
}

.calonder-header__nav {
  flex-grow: 1;
  display: flex;
  align-items: stretch;
}

/* Main-Navigation: Top-Level-Items horizontal, erste Sub-Ebene als
   Hover-Dropdown vertikal darunter. Daten aus $calonder_content.menu.
   Stretch-Kette: row → nav → list → item → link, damit top:100% auf
   dem Item genau am unteren Header-Rand landet. */
.calonder-nav__list {
  display: flex;
  align-items: stretch;
  gap: 2rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.calonder-nav__item {
  position: relative;
  display: flex;
  align-items: stretch;
}

.calonder-nav__link {
  display: flex;
  align-items: center;
  padding: 0.5rem 0;
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1rem;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--calonder-gruen);
  text-decoration: none;
  transition: color 0.2s ease;
  white-space: nowrap;
}

.calonder-nav__link:hover,
.calonder-nav__link:focus {
  color: var(--calonder-gruen-deep);
}

.calonder-nav__item--has-children > .calonder-nav__link::after {
  content: '';
  display: inline-block;
  width: 0.4em;
  height: 0.4em;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: rotate(45deg) translateY(-0.15em);
  margin-left: 0.4em;
  flex-shrink: 0;
}

/* Dropdown: standardmässig unsichtbar, erscheint auf Hover/Focus.
   top: 100% des .calonder-nav__item (stretch bis Header-Boden) = Header-Kante.
   Kein border-top, kein border-radius oben → nahtlos am Header. */
.calonder-nav__sub {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 220px;
  margin: 0;
  padding: 0.5rem 0;
  list-style: none;
  background-color: white;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-top: none;
  border-radius: 0 0 0.5rem 0.5rem;
  box-shadow: 0 12px 20px -8px rgba(0, 0, 0, 0.22);
  opacity: 0;
  visibility: hidden;
  transform: translateY(0);
  transition: opacity 0.15s ease, visibility 0s linear 0.15s;
  z-index: 1031;
}

.calonder-nav__item--has-children:hover > .calonder-nav__sub,
.calonder-nav__item--has-children:focus-within > .calonder-nav__sub {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s;
}

.calonder-nav__sub-link {
  display: block;
  padding: 0.5rem 1rem;
  font-family: var(--calonder-font-body);
  font-size: 0.9375rem;
  color: var(--calonder-ink);
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.calonder-nav__sub-link:hover,
.calonder-nav__sub-link:focus {
  background-color: color-mix(in srgb, var(--calonder-gruen-hell) 18%, white);
  color: var(--calonder-gruen-hell);
  text-decoration: none;
}

.calonder-header__mobile-icons {
  display: flex;
  gap: 0.5rem;
  align-items: center;
}

/* Icon-über-Text-Buttons (Mein Konto, Warenkorb) */
.calonder-header__user--icon-style {
  display: flex;
  align-items: center;
  gap: 0.25rem;
}

.calonder-header__icon-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.3rem;
  padding: 0.35rem 0.5rem;
  border-radius: 0.4rem;
  color: var(--calonder-ink);
  text-decoration: none;
  transition: color 0.2s ease, background-color 0.2s ease;
}

.calonder-header__icon-btn:hover {
  color: var(--calonder-gruen);
  background-color: color-mix(in srgb, var(--calonder-gruen) 8%, transparent);
  text-decoration: none;
}

.calonder-header__icon-btn-icon {
  font-size: 1.75rem;
  line-height: 1;
}

.calonder-header__icon-btn-label {
  font-family: var(--calonder-font-body);
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  white-space: nowrap;
  line-height: 1;
}

.calonder-header__icon-btn-icon-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.calonder-header__icon-btn-badge {
  position: absolute;
  top: -0.3em;
  right: -0.6em;
  min-width: 1.2em;
  height: 1.2em;
  padding: 0 0.2em;
  font-size: 0.625rem;
  font-family: var(--calonder-font-body);
  font-weight: 700;
  line-height: 1.2em;
  text-align: center;
  background: var(--calonder-gruen);
  color: white;
  border-radius: 9999px;
  transition: background-color 0.2s ease;
}

.calonder-header__icon-btn:hover .calonder-header__icon-btn-badge {
  background: var(--calonder-gruen-hell);
}

/* --------------------------------------------------------------------------
   7. Footer
   -------------------------------------------------------------------------- */

.calonder-footer {
  width: 100%;
}

/* Footer-Kategoriebaum: Sidebar-Branch per CSS als Footer-Spalte gestalten.
   Das ps_categorytree-Template rendert immer den Sidebar-Branch (einzige Branch).
   Im Footer-Kontext transformieren wir das Element vollständig via CSS. */

/* ps_categorytree liegt jetzt in einem col-md-6 col-lg-3 Wrapper (footer.tpl).
   Kein eigenes Width-CSS mehr nötig — Breite kommt vom Bootstrap-Col-Wrapper. */
.calonder-footer__inner .ps-categorytree.left-block {
  margin-bottom: 0;
}

/* Sidebar-Karten-Styling entfernen */
.calonder-footer__inner .ps-categorytree {
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  overflow: visible !important;
  padding: 0 !important;
}

/* Titel wie footer-block__title */
.calonder-footer__inner .ps-categorytree .left-block__title {
  font-family: var(--calonder-font-heading);
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 0.75rem;
  padding: 0;
  border: none;
  background: none;
  color: var(--calonder-ink);
  position: relative;
}
.calonder-footer__inner .ps-categorytree .left-block__title-link {
  color: var(--calonder-ink) !important;
  text-decoration: none;
  font-weight: inherit;
  font-size: 1.125rem;
}
.calonder-footer__inner .ps-categorytree .left-block__title-link:hover,
.calonder-footer__inner .ps-categorytree .left-block__title-link:focus-visible {
  color: var(--calonder-gruen) !important;
  text-decoration: none;
}

/* Sub-Ebenen (depth ≥ 1) und Accordion-Buttons verstecken */
.calonder-footer__inner .ps-categorytree .accordion-collapse {
  display: none !important;
}
.calonder-footer__inner .ps-categorytree .accordion-button {
  display: none !important;
}
/* Footer-Kategoriebaum: Inhalt auf Desktop immer sichtbar (Bootstrap collapse override) */
@media (min-width: 768px) {
  .calonder-footer__inner .ps-categorytree .footer-block__content.collapse {
    display: block !important;
  }
}

/* Level-0 Items: Sidebar-Kacheln entfernen, Abstände minimieren */
.calonder-footer__inner .ps-categorytree .category-tree__item {
  background: none !important;
  margin-block: 0 !important;
}
.calonder-footer__inner .ps-categorytree .category-tree__item-header {
  display: block !important;
  background: none !important;
  border-left: none !important;
  padding-block: 0 !important;
  padding-left: 0 !important;
}

/* Links: neutral ink / grün-Hover — alle Zustände gleich (kein in-path, active) */
.calonder-footer__inner .ps-categorytree .category-tree__item-link,
.calonder-footer__inner .ps-categorytree .category-tree__item-link:visited,
.calonder-footer__inner .ps-categorytree .category-tree__item-link:active,
.calonder-footer__inner .ps-categorytree .category-tree__item-link[aria-current] {
  color: var(--calonder-ink) !important;
  font-family: var(--calonder-font-body) !important;
  font-size: 1rem !important;
  font-weight: 500 !important;
  text-decoration: none;
  display: block !important;
  width: fit-content !important;
  line-height: 1.7;
  padding-block: 0 !important;
  padding-inline: 0 !important;
}
.calonder-footer__inner .ps-categorytree .category-tree__item-link:hover,
.calonder-footer__inner .ps-categorytree .category-tree__item-link:focus-visible {
  color: var(--calonder-gruen) !important;
  text-decoration: none;
}

/* footer-block (Hummingbird) ist für dunkle Hintergründe designed (gray-300/white).
   Unser Footer hat hellen Beige-Hintergrund → alle Link- und Titelfarben überschreiben. */
.calonder-footer__inner .footer-block__title,
.calonder-footer__inner .footer-block__title a {
  color: var(--calonder-ink);
  font-family: var(--calonder-font-heading);
  font-size: 1.125rem;
  font-weight: 500;
  line-height: 1.2;
  margin-bottom: 0.75rem;
}
/* Abstand zwischen gestapelten Footer-Blöcken (Spalte 2 + 3) */
.calonder-footer__inner .footer-block + .footer-block {
  margin-top: 1.75rem;
}
.calonder-footer__inner .footer-block a {
  color: var(--calonder-ink);
}
.calonder-footer__inner .footer-block a:hover,
.calonder-footer__inner .footer-block a:focus-visible {
  color: var(--calonder-gruen);
  text-decoration: none;
}
.calonder-footer__inner .footer-block .btn.calonder-btn-spezial-gruen,
.calonder-footer__inner .footer-block .btn.calonder-btn-spezial-gruen:hover,
.calonder-footer__inner .footer-block .btn.calonder-btn-spezial-gruen:focus-visible,
.calonder-footer__inner .footer-block .btn.calonder-btn-spezial-gruen:active {
  color: var(--calonder-paper);
}
/* Footer-Linklisten: DM Sans 500, nur Textbreite, line-height wie Kategoriebaum */
.calonder-footer__inner .footer-block__list a,
.calonder-footer__inner .ps-contactinfo a {
  font-family: var(--calonder-font-body);
  font-weight: 500;
  display: block;
  width: fit-content;
  line-height: 1.7;
  padding-block: 0;
}
/* Social-Icons im Footer (Partial aus dem Header wiederverwendet).
   Grösser als im Header: 40px statt 30px Kachel, 20px statt 15px SVG. */
.calonder-footer__inner .calonder-socials {
  margin-top: 1.75rem;
  margin-bottom: 1.75rem;
  gap: 0.5rem;
}
.calonder-footer__inner .calonder-social {
  width: 40px;
  height: 40px;
}
.calonder-footer__inner .calonder-social svg {
  width: 20px;
  height: 20px;
}

/* ps_customeraccountlinks rendert seine calonder-card-soft immer — im Footer
   soll sie aber nicht als Karte erscheinen. Bewusst per CSS statt per
   Template-Verzweigung: renderWidget() des Moduls baut den Smarty-Cache-
   Schlüssel ohne Hook-Namen, Footer und rechte Spalte teilen sich also
   dasselbe Fragment. Eine {if}-Lösung im Template kippt mit aktivem Cache. */
.calonder-footer__inner .ps-customeraccountlinks .calonder-card-soft {
  background: none;
  border: 0;
  border-radius: 0;
  padding: 0;
  overflow: visible;
}

.calonder-footer__main {
  background: var(--calonder-footer-bg);
  color: var(--calonder-ink);
  padding-block: 3rem 2rem;
}

.calonder-footer__inner {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
}

/*
 * Bootstrap row hat margin-inline: calc(-0.5 * --bs-gutter-x) → blutet über
 * calonder-footer__inner's padding hinaus. Fix: --bs-gutter-x:0 entfernt
 * sowohl den negativen Row-Margin als auch den Col-Padding. column-gap
 * übernimmt den Spaltenabstand. Die Width-Overrides kompensieren mathematisch:
 * 4 × (25% - 1.125rem) + 3 × 1.5rem = 100% ✓
 * 2 × (50% - 0.75rem) + 1 × 1.5rem = 100% ✓
 */
.calonder-footer__columns {
  --bs-gutter-x: 0;
  gap: 2rem 1.5rem;
}
@media (max-width: 767.98px) {
  .calonder-footer__columns { row-gap: 0; }
}
@media (min-width: 768px) {
  .calonder-footer__columns > * { width: calc(50% - 0.75rem); }
}
@media (min-width: 992px) {
  .calonder-footer__columns > * { width: calc(25% - 1.125rem); }
}

.calonder-footer__before,
.calonder-footer__after {
  width: 100%;
}

.calonder-footer__phone,
.calonder-footer__email {
  font-weight: 500;
}

.calonder-footer__disclaimer {
  padding-block: 1rem;
  text-align: center;
  color: color-mix(in srgb, var(--calonder-ink) 75%, transparent);
  font-size: 0.725rem;
  line-height: 1.55;
}
.calonder-footer__disclaimer-inner {
  max-width: 860px;
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
}
.calonder-footer__disclaimer-inner p {
  margin-bottom: 0.35rem;
}
.calonder-footer__disclaimer-inner p:last-child {
  margin-bottom: 0;
}

.calonder-footer__copyright {
  background: var(--calonder-footer-bg);
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  padding-block: 0.75rem;
  font-size: 0.8125rem;
}

.calonder-footer__copyright-inner {
  max-width: var(--calonder-max-width);
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
}

.calonder-footer__copyright {
  color: var(--calonder-ink);
}
.calonder-footer a {
  color: var(--calonder-ink);
}
.calonder-footer a:hover {
  color: var(--calonder-gruen);
  text-decoration: none;
}

/* Hook-Render-Zone: kein Platz, kein sichtbarer Inhalt.
   position:fixed Kinder (Bootstrap-Modals) brechen per Spec aus overflow:hidden aus. */
.calonder-hook-zone {
  height: 0;
  overflow: hidden;
}

/* --------------------------------------------------------------------------
   8. Mini-Cart-Widget (Sidebar)
   --------------------------------------------------------------------------

   ps_shoppingcart rendert zwei Varianten pro Hook-Call:
     - #_desktop_ps_shoppingcart  → nur JS-Anker (.blockcart[data-refresh-url]), nie sichtbar
     - .calonder-mini-cart        → sichtbar nur in der rechten Spalte
   WARUM in displayNav2: ps_shoppingcart.js braucht .blockcart[data-refresh-url] im DOM
   auf JEDER Seite (Modal nach Add-to-Cart). displayNav2 → Header → jede Seite. display:none
   schadet jQuery nicht: .data() liest Attribute auch von versteckten Elementen.
   -------------------------------------------------------------------------- */

/* Header-Icon überall ausblenden — wir haben eigene Icon-Buttons */
#header #_desktop_ps_shoppingcart,
#right-column #_desktop_ps_shoppingcart {
  display: none;
}

/* Im Header: Mini-Cart-Widget ausblenden */
#header .calonder-mini-cart {
  display: none;
}

/* Mini-Cart Stacking-Kontext (Sticky via JS, nicht CSS) */
@media (min-width: 768px) {
  #right-column .calonder-mini-cart {
    z-index: 10;
  }
}

/* ---- Widget-Layout ---- */
.calonder-mini-cart {
  background: var(--calonder-paper);
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 50%, transparent);
  border-radius: 0.5rem;
  overflow: hidden;
  margin-block-end: 1.5rem;
  font-size: 0.875rem;
}

/* ---- Kopfzeile ---- */
.calonder-mini-cart__header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  background: color-mix(in srgb, var(--calonder-gruen) 16%, white);
  color: var(--calonder-gruen);
  padding: 1.25rem 1rem;
}

.calonder-mini-cart__header-icon {
  font-size: 1.25rem;
}

.calonder-mini-cart__header-title {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  flex: 1;
}

.calonder-mini-cart__header-count {
  font-size: 0.8125rem;
  opacity: 0.85;
  white-space: nowrap;
}

/* ---- Produktliste ---- */
.calonder-mini-cart__products {
  list-style: none;
  margin: 0;
  padding: 0;
}

.calonder-mini-cart__product {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  padding: 0.625rem 0.875rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.07);
}

.calonder-mini-cart__product-img-link {
  flex-shrink: 0;
}

.calonder-mini-cart__product-img {
  display: block;
  width: 50px;
  height: 50px;
  object-fit: contain;
  border-radius: 3px;
  background: var(--calonder-beige);
}

.calonder-mini-cart__product-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
}

.calonder-mini-cart__product-qty {
  font-size: 0.75rem;
  color: #666;
}

.calonder-mini-cart__product-name {
  font-weight: 500;
  color: var(--calonder-ink);
  text-decoration: none;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  display: block;
}

.calonder-mini-cart__product-name:hover {
  color: var(--calonder-gruen, #2a5438);
}

.calonder-mini-cart__product-price {
  font-weight: 600;
  color: var(--calonder-ink);
  font-size: 0.875rem;
}

.calonder-mini-cart__product-remove {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.08);
  color: #555;
  text-decoration: none;
  font-size: 0.875rem;
  line-height: 1;
  transition: background 0.15s;
}

.calonder-mini-cart__product-remove:hover {
  background: rgba(200, 0, 0, 0.15);
  color: #c00;
}

/* ---- Zusammenfassung ---- */
.calonder-mini-cart__summary {
  padding: 0.75rem 0.875rem;
  border-top: 1px solid rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.calonder-mini-cart__summary-row {
  display: flex;
  justify-content: space-between;
  color: var(--calonder-ink);
}

.calonder-mini-cart__summary-row--total {
  font-weight: 700;
  font-size: 1rem;
}

.calonder-mini-cart__empty {
  padding: 1rem 0.875rem;
  color: color-mix(in srgb, var(--calonder-ink) 50%, transparent);
  margin: 0;
  font-size: 0.875rem;
}

/* Farben + Hover via globaler .btn-primary-Regel (Sektion 1c) */
.calonder-mini-cart__cta {
  display: block;
  margin: 0.75rem;
  width: calc(100% - 1.5rem);
  text-align: center;
  padding: 0.625rem 1rem;
  font-size: 0.9375rem;
}

/* ── Blockcart-Modal (Add-to-Cart Bestätigungs-Popup) ─────────────────── */
.blockcart-modal__title {
  margin-top: 0;
  color: var(--calonder-gruen);
}

/* =====================================================================
   Produktdetail-Seite
   ===================================================================== */

.product__carousel {
  background-color: #fff;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 0.5rem;
  overflow: hidden;
  padding: 0.75rem;
}

.product__thumbnail {
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 0.375rem;
  overflow: hidden;
}

/* Aktiv: grüner Border ~80%, dezenter Schatten */
.product__thumbnail.active {
  border-color: color-mix(in srgb, var(--calonder-gruen) 80%, transparent);
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
  outline: none;
}

/* Fokus: gleicher Border + deutlich stärkerer Schatten */
.product__thumbnail.focus-ring:focus {
  border-color: color-mix(in srgb, var(--calonder-gruen) 80%, transparent);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.22), 0 1px 4px rgba(0, 0, 0, 0.12);
  outline: none;
}

/* Outline vom Bild selbst entfernen (active + focus-visible) */
.product__thumbnail .product__thumbnail-image.outline:focus-visible,
.product__thumbnail.active .product__thumbnail-image {
  outline: none;
}

.product__thumbnail-image {
  background-color: #fff;
  padding: 0.3rem;
  border-radius: 0;
  width: 100%;
}

/* Thumbnails: 4 Spalten */
.product__thumbnails-list {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

/* Thumbnails: kleinerer Gap bei 992–1649px (Sidebar-Layout, Mitte nur 50%) */
@media (min-width: 992px) and (max-width: 1649.98px) {
  .page-product .product__thumbnails-list {
    gap: 0.75rem;
  }
}

.product-images-modal__body {
  padding: 0.75rem;
}

/* =====================================================================
   Kategorie-Baum
   ─────────────────────────────────────────────────────────────────────
   Farbsystem: 6 Stil-Muster + 1 globales Interaktions-Muster.

   --m-stufe0-*          Muster STUFE 0    Stufe 0: Hauptkategorie-Kacheln
   --m-stufe1-*          Muster STUFE 1    Stufe 1: erste Subebene
   --m-stufe2-*          Muster STUFE 2    Stufe 2: zweite Subebene
   --m-stufe3-*          Muster STUFE 3    Stufe 3: dritte Subebene
   --m-stufe4-*          Muster STUFE 4    Stufe 4: vierte Subebene
   --m-stufe5plus-*      Muster STUFE 5+   Stufe 5+: tiefe Ebenen
   --m-illuminationHover-* Hover (global)  Einheitlich über alle Stufen

   Variable-Struktur:  --m-{muster}-{zustand}-{eigenschaft}

   Zustände:     normal            Ruhezustand
                 currentPath       Navigationspfad zur aktiven Seite
                 currentPath-hover Navigationspfad + Maus drüber
                 active            Aktive Kategorie (tiefster Pfad-Knoten)
                 (hover: global via --m-illuminationHover-*, kein stufe-spez. Zustand)

   Eigenschaften: menupunkt-bg   .item-header Hintergrundfarbe
                  text           Link-Textfarbe
                  indentguide    Guide-Linie / linker Rand  (alle Zustände ausser active)
                  dreieck        Dreieck-Farbe (Opazität eingebaut via color-mix)
                  active-marker  Aktiv-Markierung: alle Stufen = Pill-Farbe (Stufe 0 ct-in-path ohne active = border-left)

   Zuweisung: [data-depth="N"] setzt ALLE --ct-* Variablen explizit.
              Kein Verlass auf CSS-Cascade zwischen Tiefen.
   ===================================================================== */

/* Hummingbird .left-block: border-bottom, padding, margin aufheben */
.left-block:has(.ps-categorytree) {
  border-bottom: none;
  padding-bottom: 0;
  margin-bottom: 0;
}

/* ─── Stil-Muster: zentral definiert, per Tiefe zugewiesen ─────────────
   m = Muster. Nur Farb-Semantik, kein Layout.
   ─────────────────────────────────────────────────────────────────────── */
.ps-categorytree {

  /* === UNIFORM STATES (level-unabhängig) === */
  --active-bg:   var(--calonder-gruen);    /* Active: 100% solid, immer */
  --active-text: white;
  --active-marker: var(--calonder-beige);
  --active-dreieck: rgba(255,255,255,0.9);

  /* ── Muster STUFE 0 ───────────────────────────────────────── */
  --m-stufe0-normal-menupunkt-bg:            color-mix(in srgb, var(--calonder-gruen) 16%, white);
  --m-stufe0-normal-text:                    var(--calonder-gruen);
  --m-stufe0-normal-indentguide:             var(--calonder-ink); /* irrelevant */
  --m-stufe0-normal-dreieck:                 color-mix(in srgb, var(--calonder-gruen) 85%, transparent);

  --m-stufe0-currentPath-menupunkt-bg:       color-mix(in srgb, var(--calonder-gruen) 42%, white);
  --m-stufe0-currentPath-text:               var(--calonder-gruen-deep); /* spezial */
  --m-stufe0-currentPath-indentguide:        var(--calonder-gruen-deep); /* spzeial */
  --m-stufe0-currentPath-dreieck:            color-mix(in srgb, var(--calonder-gruen-deep) 85%, transparent); /* spezial */

  --m-stufe0-currentPath-hover-menupunkt-bg: color-mix(in srgb, var(--calonder-gruen) 58%, white);
  --m-stufe0-currentPath-hover-text:         var(--calonder-ink);
  --m-stufe0-currentPath-hover-indentguide:  var(--calonder-ink);
  --m-stufe0-currentPath-hover-dreieck:      color-mix(in srgb, var(--calonder-ink) 85%, transparent); /* spezial */

  /* Aktive Kategorie: */
  --m-stufe0-active-menupunkt-bg:            var(--active-bg);
  --m-stufe0-active-text:                    var(--active-text);
  --m-stufe0-active-marker:                  var(--active-marker);
  --m-stufe0-active-dreieck:                 var(--active-dreieck);

  /* ── Muster STUFE 1 ──────────────────────────────────────── */
  --m-stufe1-normal-menupunkt-bg:            color-mix(in srgb, var(--calonder-gruen) 6%, white);
  --m-stufe1-normal-text:                    color-mix(in srgb, var(--calonder-gruen) 85%, white); /* leicht gedimmt */
  --m-stufe1-normal-indentguide:             color-mix(in srgb, var(--calonder-ink) 20%, white);
  --m-stufe1-normal-dreieck:                 color-mix(in srgb, var(--calonder-gruen) 65%, white);

  --m-stufe1-currentPath-menupunkt-bg:       color-mix(in srgb, var(--calonder-gruen) 18%, white);
  --m-stufe1-currentPath-text:               color-mix(in srgb, var(--calonder-gruen-deep) 85%, white); /* spezial, leicht gedimmt */
  --m-stufe1-currentPath-indentguide:        color-mix(in srgb, var(--calonder-gruen-deep) 85%, white); /* leicht gedimmt */
  --m-stufe1-currentPath-dreieck:            color-mix(in srgb, var(--calonder-gruen-deep) 65%, white); /* spezial */

  --m-stufe1-currentPath-hover-menupunkt-bg: color-mix(in srgb, var(--calonder-gruen) 28%, white);
  --m-stufe1-currentPath-hover-text:         var(--calonder-gruen-deep); /* spezial */
  --m-stufe1-currentPath-hover-indentguide:  var(--calonder-gruen-deep); /* spezial */
  --m-stufe1-currentPath-hover-dreieck:      var(--calonder-gruen-deep); /* spezial */

  /* Aktive Kategorie: */
  --m-stufe1-active-menupunkt-bg:            var(--active-bg);
  --m-stufe1-active-text:                    var(--active-text);
  --m-stufe1-active-marker:                  var(--active-marker);
  --m-stufe1-active-dreieck:                 var(--active-dreieck);

  /* ── Muster STUFE 2 ────────────────────────────────────────── */
  --m-stufe2-normal-menupunkt-bg:              color-mix(in srgb, var(--calonder-gruen) 4%, white);
  --m-stufe2-normal-text:                      var(--calonder-ink); /* Stufe 2+ ink */
  --m-stufe2-normal-indentguide:               color-mix(in srgb, var(--calonder-ink) 18%, white);
  --m-stufe2-normal-dreieck:                   color-mix(in srgb, var(--calonder-ink) 55%, white);

  --m-stufe2-currentPath-menupunkt-bg:         color-mix(in srgb, var(--calonder-gruen) 12%, white);
  --m-stufe2-currentPath-text:                 var(--calonder-ink); /* Stufe 2+ ink */
  --m-stufe2-currentPath-indentguide:          color-mix(in srgb, var(--calonder-gruen) 90%, white);
  --m-stufe2-currentPath-dreieck:              color-mix(in srgb, var(--calonder-ink) 55%, white);

  --m-stufe2-currentPath-hover-menupunkt-bg:   color-mix(in srgb, var(--calonder-gruen) 20%, white);
  --m-stufe2-currentPath-hover-text:           var(--calonder-ink); /* Stufe 2+ ink */
  --m-stufe2-currentPath-hover-indentguide:    var(--calonder-gruen);
  --m-stufe2-currentPath-hover-dreieck:        color-mix(in srgb, var(--calonder-ink) 70%, white);

  /* Aktive Kategorie */
  --m-stufe2-active-menupunkt-bg:              var(--active-bg);
  --m-stufe2-active-text:                      var(--active-text);
  --m-stufe2-active-marker:                    var(--active-marker);
  --m-stufe2-active-dreieck:                   var(--active-dreieck);

  /* ── Muster STUFE 3 ─────────────────────────────────────────── */
  --m-stufe3-normal-menupunkt-bg:              color-mix(in srgb, var(--calonder-gruen) 2.5%, white);
  --m-stufe3-normal-text:                      var(--calonder-ink);
  --m-stufe3-normal-indentguide:               color-mix(in srgb, var(--calonder-ink) 16%, white);
  --m-stufe3-normal-dreieck:                   color-mix(in srgb, var(--calonder-ink) 50%, white);

  --m-stufe3-currentPath-menupunkt-bg:         color-mix(in srgb, var(--calonder-gruen) 8%, white);
  --m-stufe3-currentPath-text:                 var(--calonder-ink);
  --m-stufe3-currentPath-indentguide:          color-mix(in srgb, var(--calonder-gruen) 75%, white);
  --m-stufe3-currentPath-dreieck:              color-mix(in srgb, var(--calonder-ink) 50%, white);

  --m-stufe3-currentPath-hover-menupunkt-bg:   color-mix(in srgb, var(--calonder-gruen) 13%, white);
  --m-stufe3-currentPath-hover-text:           var(--calonder-ink);
  --m-stufe3-currentPath-hover-indentguide:    var(--calonder-gruen);
  --m-stufe3-currentPath-hover-dreieck:        color-mix(in srgb, var(--calonder-ink) 70%, white);

  /* Aktive Kategorie: */
  --m-stufe3-active-menupunkt-bg:              var(--active-bg);
  --m-stufe3-active-text:                      var(--active-text);
  --m-stufe3-active-marker:                    var(--active-marker);
  --m-stufe3-active-dreieck:                   var(--active-dreieck);

  /* ── Muster STUFE 4 ─────────────────────────────────────────── */
  --m-stufe4-normal-menupunkt-bg:              color-mix(in srgb, var(--calonder-gruen) 1.5%, white);
  --m-stufe4-normal-text:                      var(--calonder-ink);
  --m-stufe4-normal-indentguide:               color-mix(in srgb, var(--calonder-ink) 12%, white);
  --m-stufe4-normal-dreieck:                   color-mix(in srgb, var(--calonder-ink) 45%, white);

  --m-stufe4-currentPath-menupunkt-bg:         color-mix(in srgb, var(--calonder-gruen) 5%, white);
  --m-stufe4-currentPath-text:                 var(--calonder-ink);
  --m-stufe4-currentPath-indentguide:          color-mix(in srgb, var(--calonder-gruen) 65%, white);
  --m-stufe4-currentPath-dreieck:              color-mix(in srgb, var(--calonder-ink) 45%, white);

  --m-stufe4-currentPath-hover-menupunkt-bg:   color-mix(in srgb, var(--calonder-gruen) 9%, white);
  --m-stufe4-currentPath-hover-text:           var(--calonder-ink);
  --m-stufe4-currentPath-hover-indentguide:    var(--calonder-gruen);
  --m-stufe4-currentPath-hover-dreieck:        color-mix(in srgb, var(--calonder-ink) 70%, white);

  /* Aktive Kategorie: */
  --m-stufe4-active-menupunkt-bg:              var(--active-bg);
  --m-stufe4-active-text:                      var(--active-text);
  --m-stufe4-active-marker:                    var(--active-marker);
  --m-stufe4-active-dreieck:                   var(--active-dreieck);

  /* ── Muster STUFE 5+ ─────────────────────────────────────────── */
  --m-stufe5plus-normal-menupunkt-bg:              transparent;
  --m-stufe5plus-normal-text:                      var(--calonder-ink);
  --m-stufe5plus-normal-indentguide:               color-mix(in srgb, var(--calonder-ink) 12%, white);
  --m-stufe5plus-normal-dreieck:                   color-mix(in srgb, var(--calonder-ink) 45%, white);

  --m-stufe5plus-currentPath-menupunkt-bg:         color-mix(in srgb, var(--calonder-gruen) 3%, white);
  --m-stufe5plus-currentPath-text:                 var(--calonder-ink);
  --m-stufe5plus-currentPath-indentguide:          color-mix(in srgb, var(--calonder-gruen) 55%, white);
  --m-stufe5plus-currentPath-dreieck:              color-mix(in srgb, var(--calonder-ink) 45%, white);

  --m-stufe5plus-currentPath-hover-menupunkt-bg:   color-mix(in srgb, var(--calonder-gruen) 6%, white);
  --m-stufe5plus-currentPath-hover-text:           var(--calonder-ink);
  --m-stufe5plus-currentPath-hover-indentguide:    var(--calonder-gruen);
  --m-stufe5plus-currentPath-hover-dreieck:        color-mix(in srgb, var(--calonder-ink) 70%, white);

  /* Aktive Kategorie: */
  --m-stufe5plus-active-menupunkt-bg:              var(--active-bg);
  --m-stufe5plus-active-text:                      var(--active-text);
  --m-stufe5plus-active-marker:                    var(--active-marker);
  --m-stufe5plus-active-dreieck:                   var(--active-dreieck);

  /* ── IlluminationHover — einheitlich für alle Stufen ────────────
     Hover ist Interaktions-Signal, kein Struktur-Signal.
     Gilt über alle Tiefen gleich; keine stufe-spezifischen Varianten. */
  --m-illuminationHover-menupunkt-bg:  color-mix(in srgb, var(--calonder-gruen-hell) 18%, white);
  --m-illuminationHover-text:          var(--calonder-gruen-hell);
  --m-illuminationHover-indentguide:   color-mix(in srgb, var(--calonder-gruen-hell) 55%, white);
  --m-illuminationHover-dreieck:       var(--calonder-gruen-hell);

  /* ── Layout-Default: Abstand von --ct-indent bis Textbeginn ───────────
     Dreieck-Mitte liegt bei --ct-indent + 0.35rem (Dreieck-Button links bei
     --ct-indent - 0.15rem, 0.4rem breites Dreieck zentriert → Mitte + 0.35rem).
     --ct-text-offset alleine regelt den Raum zwischen Dreieck und Text.
     Dreieck-rechts-Kante bei --ct-indent + 0.55rem → Luft = offset - 0.55rem = 0.35rem. */
  --ct-text-offset: 0.9rem;   /* = 0.35rem Luft rechts vom Dreieck zum Text */

  /* ── Sidebar-Card ─────────────────────────────────────────────────── */
  background: var(--calonder-paper);
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  border-radius: 0.5rem;
  overflow: hidden;
  padding: 0;
  margin-bottom: 0;
}

/* ─── Tiefenzuweisung ─────────────────────────────────────────────────
   Jede Tiefe setzt ALLE --ct-* Variablen explizit aus einem Muster.
   Keine Abhängigkeit zur Cascade der Eltern-Tiefe.
   ─────────────────────────────────────────────────────────────────────── */

/* Stufe 0 → Muster GRÜN */
.category-tree__list[data-depth="0"] {
  --ct-indent:                         0.7rem;
  --ct-menupunkt-bg:                   var(--m-stufe0-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe0-normal-text);
  --ct-dreieck:                        var(--m-stufe0-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe0-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe0-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe0-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe0-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe0-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe0-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe0-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe0-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe0-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe0-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe0-active-text);
  --ct-active-marker:                  var(--m-stufe0-active-marker);
  --ct-active-dreieck:                 var(--m-stufe0-active-dreieck);
}

/* Stufe 1 → Muster STUFE 1 */
.category-tree__list[data-depth="1"] {
  padding-left: 0;
  --ct-indent:                         1.3rem;
  --ct-guide-x:                        1.05rem; /* = Stufe-0-Dreieck: 0.70+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe1-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe1-normal-text);
  --ct-dreieck:                        var(--m-stufe1-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe1-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe1-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe1-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe1-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe1-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe1-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe1-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe1-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe1-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe1-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe1-active-text);
  --ct-active-marker:                  var(--m-stufe1-active-marker);
  --ct-active-dreieck:                 var(--m-stufe1-active-dreieck);
}

/* Stufe 2 → Muster STUFE 2 */
.category-tree__list[data-depth="2"] {
  padding-left: 0;
  --ct-indent:                         1.9rem;
  --ct-guide-x:                        1.65rem; /* = Stufe-1-Dreieck: 1.30+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe2-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe2-normal-text);
  --ct-dreieck:                        var(--m-stufe2-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe2-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe2-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe2-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe2-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe2-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe2-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe2-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe2-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe2-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe2-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe2-active-text);
  --ct-active-marker:                  var(--m-stufe2-active-marker);
  --ct-active-dreieck:                 var(--m-stufe2-active-dreieck);
}

/* Stufe 3 → Muster STUFE 3 */
.category-tree__list[data-depth="3"] {
  padding-left: 0;
  --ct-indent:                         2.5rem;
  --ct-guide-x:                        2.25rem; /* = Stufe-2-Dreieck: 1.90+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe3-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe3-normal-text);
  --ct-dreieck:                        var(--m-stufe3-normal-dreieck);
  --ct-normal-indentguide:             var(--m-stufe3-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:              var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe3-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe3-currentPath-text);
  --ct-currentPath-indentguide:        var(--m-stufe3-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe3-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe3-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe3-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:  var(--m-stufe3-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe3-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe3-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe3-active-text);
  --ct-active-marker:                  var(--m-stufe3-active-marker);
  --ct-active-dreieck:                 var(--m-stufe3-active-dreieck);
}

/* Stufe 4 → Muster STUFE 4 */
.category-tree__list[data-depth="4"] {
  padding-left: 0;
  --ct-indent:                         3.1rem;
  --ct-guide-x:                        2.85rem; /* = Stufe-3-Dreieck: 2.50+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe4-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe4-normal-text);
  --ct-dreieck:                        var(--m-stufe4-normal-dreieck);
  --ct-normal-indentguide:             var(--m-stufe4-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:              var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe4-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe4-currentPath-text);
  --ct-currentPath-indentguide:        var(--m-stufe4-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe4-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe4-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe4-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:  var(--m-stufe4-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe4-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe4-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe4-active-text);
  --ct-active-marker:                  var(--m-stufe4-active-marker);
  --ct-active-dreieck:                 var(--m-stufe4-active-dreieck);
}

/* Stufe 5 → Muster STUFE 3+ */
.category-tree__list[data-depth="5"] {
  padding-left: 0;
  --ct-indent:                         3.7rem;
  --ct-guide-x:                        3.45rem; /* = Stufe-4-Dreieck: 3.10+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe5plus-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe5plus-normal-text);
  --ct-dreieck:                        var(--m-stufe5plus-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe5plus-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe5plus-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe5plus-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe5plus-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe5plus-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe5plus-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe5plus-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe5plus-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe5plus-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe5plus-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe5plus-active-text);
  --ct-active-marker:                  var(--m-stufe5plus-active-marker);
  --ct-active-dreieck:                 var(--m-stufe5plus-active-dreieck);
}

/* Stufe 6 → Muster STUFE 3+ */
.category-tree__list[data-depth="6"] {
  padding-left: 0;
  --ct-indent:                         4.3rem;
  --ct-guide-x:                        4.05rem; /* = Stufe-5-Dreieck: 3.70+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe5plus-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe5plus-normal-text);
  --ct-dreieck:                        var(--m-stufe5plus-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe5plus-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe5plus-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe5plus-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe5plus-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe5plus-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe5plus-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe5plus-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe5plus-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe5plus-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe5plus-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe5plus-active-text);
  --ct-active-marker:                  var(--m-stufe5plus-active-marker);
  --ct-active-dreieck:                 var(--m-stufe5plus-active-dreieck);
}

/* Stufen 7–10 → Muster STUFE 3+ (maximaler Einzug) */
.category-tree__list[data-depth="7"],
.category-tree__list[data-depth="8"],
.category-tree__list[data-depth="9"],
.category-tree__list[data-depth="10"] {
  padding-left: 0;
  --ct-indent:                         4.9rem;
  --ct-guide-x:                        4.65rem; /* = Stufe-6-Dreieck: 4.30+0.35 */
  --ct-menupunkt-bg:                   var(--m-stufe5plus-normal-menupunkt-bg);
  --ct-text:                           var(--m-stufe5plus-normal-text);
  --ct-dreieck:                        var(--m-stufe5plus-normal-dreieck);
  --ct-normal-indentguide:                  var(--m-stufe5plus-normal-indentguide);
  --ct-hover-menupunkt-bg:             var(--m-illuminationHover-menupunkt-bg);
  --ct-hover-text:                     var(--m-illuminationHover-text);
  --ct-hover-indentguide:                   var(--m-illuminationHover-indentguide);
  --ct-hover-dreieck:                  var(--m-illuminationHover-dreieck);
  --ct-currentPath-menupunkt-bg:       var(--m-stufe5plus-currentPath-menupunkt-bg);
  --ct-currentPath-text:               var(--m-stufe5plus-currentPath-text);
  --ct-currentPath-indentguide:             var(--m-stufe5plus-currentPath-indentguide);
  --ct-currentPath-dreieck:            var(--m-stufe5plus-currentPath-dreieck);
  --ct-currentPath-hover-menupunkt-bg: var(--m-stufe5plus-currentPath-hover-menupunkt-bg);
  --ct-currentPath-hover-text:         var(--m-stufe5plus-currentPath-hover-text);
  --ct-currentPath-hover-indentguide:       var(--m-stufe5plus-currentPath-hover-indentguide);
  --ct-currentPath-hover-dreieck:      var(--m-stufe5plus-currentPath-hover-dreieck);
  --ct-active-menupunkt-bg:            var(--m-stufe5plus-active-menupunkt-bg);
  --ct-active-text:                    var(--m-stufe5plus-active-text);
  --ct-active-marker:                  var(--m-stufe5plus-active-marker);
  --ct-active-dreieck:                 var(--m-stufe5plus-active-dreieck);
}

/* ─── Layout ──────────────────────────────────────────────────────────── */

/* Root-Kategorie-Titel */
.ps-categorytree .left-block__title {
  padding: 0.75rem 1rem 0.65rem;
  margin: 0;
}
.ps-categorytree .left-block__title-link {
  color: var(--calonder-leder);
  font-size: 1rem; /* 16px */
  font-weight: 700;
}

/* Hummingbird row-gap + Bootstrap accordion-body padding zurücksetzen */
.ps-categorytree .category-tree__list  { row-gap: 0; }
.ps-categorytree .accordion-body       { padding: 0; }
.ps-categorytree .category-tree__child { padding-bottom: 0.5rem; }

/* Links: Block-Element → volle Klickfläche; padding hier statt auf dem Header */
.ps-categorytree .category-tree__item-link {
  display: block;
  padding-block: 0.25rem;
  padding-left: calc(var(--ct-indent, 0.4rem) + var(--ct-text-offset, 0.9rem));
  padding-right: 0.75rem;
  color: var(--ct-text, currentColor);
  transition: color 0.15s ease;
  overflow-wrap: break-word;
  hyphens: auto;
}

/* Aktiver Eintrag: mehr padding-right damit der Pill-Marker (right: 0.7rem) den Text nicht überlappt */
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header > .category-tree__item-link {
  padding-right: 1.5rem;
}

/* Typografie nach Tiefe */
.category-tree__list[data-depth="0"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  font-family: var(--calonder-font-heading);
  font-size: 0.9375rem; font-weight: 600;
}
.category-tree__list[data-depth="1"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;  font-weight: 700;
  letter-spacing: -0.02em;
}
.category-tree__list[data-depth="1"] > .category-tree__item > .category-tree__item-header {
  line-height: 1.7;
}
.category-tree__list[data-depth="2"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;  font-weight: 500;
}
.category-tree__list[data-depth="3"] > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="4"] > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="5"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;  font-weight: 400;
}
.category-tree__list[data-depth="6"]  > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="7"]  > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="8"]  > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="9"]  > .category-tree__item > .category-tree__item-header .category-tree__item-link,
.category-tree__list[data-depth="10"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  font-family: var(--calonder-font-body);
  font-size: 0.875rem;  font-weight: 400;
}

/* item-header: Anker für absolut positioniertes Dreieck und Guide-Linie (::before).
   Kein eigenes padding — padding sitzt auf dem Link, damit der <a> die volle Klickfläche ist. */
.ps-categorytree .category-tree__item-header {
  position: relative;
  background-color: var(--ct-menupunkt-bg, transparent);
  border-bottom: none;
  border-radius: 0;
  line-height: 1.7;
  transition: background-color 0.15s ease;
}

/* Accordion-Button: absolut positioniert, grosse Klickfläche (1rem × 2rem) */
.ps-categorytree .category-tree__item-header .accordion-button {
  position: absolute;
  left: calc(var(--ct-indent, 0.7rem) - 0.15rem + 1px);
  top: 50%;
  transform: translateY(-50%);
  width: 1rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  margin: 0;
  background-color: transparent;
  border: none;
  box-shadow: none;
}

/* ─── Generische Zustandsregeln ──────────────────────────────────────────
   Alle Zustände laufen über --ct-* Variablen.
   Kein depth-spezifischer Override nötig — alles via Tiefenzuweisung.
   ─────────────────────────────────────────────────────────────────────── */

/* ── Guide-Linie + Aktiv-Pfeil (::before) ──────────────────────────────
   Vertikale Linie unter dem Dreieck der ÜBERGEORDNETEN Stufe (--ct-guide-x).
   --ct-guide-x = Eltern-ct-indent + 0.35rem (Dreieck-Mitte der Elternstufe),
   pro Stufe in [data-depth="N"] explizit gesetzt.
   Stufe 0: kein Guide normal; ct-in-path (nicht aktiv): border-left; ct-active: Pill (right:0.7rem).
   Abstand Dreieck→Text: --ct-text-offset auf .ps-categorytree (Standard 0.9rem).
   Normal: dezent sichtbar. Navigationspfad: Akzentfarbe. Aktiv: Pill-Marker.
   ─────────────────────────────────────────────────────────────────────── */

.ps-categorytree .category-tree__item-header::before {
  content: '';
  position: absolute;
  left: calc(var(--ct-guide-x, 1.05rem) - 1px);
  top: 0;
  bottom: 0;
  width: 2px;
  background-color: var(--ct-normal-indentguide, color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent));
  transition: background-color 0.15s ease;
}

/* Stufe 0 (grüne Kacheln): ::before nur für ct-active anzeigen.
   ct-in-path ohne ct-active: kein Pill → border-left (unten). */
.ps-categorytree .category-tree__list[data-depth="0"] > .category-tree__item:not(.ct-active) > .category-tree__item-header::before {
  display: none;
}

/* Stufe 0 ct-in-path (nicht aktiv): border-left als Pfad-Markierung */
.ps-categorytree .category-tree__list[data-depth="0"] > .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header {
  border-left: 3px solid var(--ct-currentPath-indentguide);
}
.ps-categorytree .category-tree__list[data-depth="0"] > .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header:hover {
  border-left-color: var(--ct-currentPath-hover-indentguide);
}

/* Navigationspfad: Guide-Linie in Akzentfarbe */
.ps-categorytree .category-tree__item.ct-in-path > .category-tree__item-header::before {
  background-color: var(--ct-currentPath-indentguide);
}
/* Navigationspfad Hover: Guide-Linie in hover-Farbe */
.ps-categorytree .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header:hover::before {
  background-color: var(--ct-currentPath-hover-indentguide);
}

/* Aktive Kategorie: ::before wird zur Pill am rechten Rand (alle Stufen).
   Farbe: --ct-active-marker → --m-stufeX-active-marker (je Tiefe).
   left: auto hebt die Basis-left-Eigenschaft auf damit right greift.
   Muss nach der ct-in-path-Regel stehen — gleiche Spezifität, letzte Regel gewinnt. */
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header::before {
  left: auto;
  right: 0.7rem;
  top: 0.65rem;
  bottom: 0.65rem;
  width: 4px;
  height: auto;
  transform: none;
  background-color: var(--ct-active-marker);
  border-radius: 2px;
  clip-path: none;
}

/* Stufe 2+: Pill etwas höher */
.ps-categorytree .category-tree__list[data-depth="2"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="3"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="4"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="5"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="6"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="7"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="8"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="9"] > .category-tree__item.ct-active > .category-tree__item-header::before,
.ps-categorytree .category-tree__list[data-depth="10"] > .category-tree__item.ct-active > .category-tree__item-header::before {
  top: 0.5rem;
  bottom: 0.5rem;
}

/* Hover */
.ps-categorytree .category-tree__item-header:hover {
  background-color: var(--ct-hover-menupunkt-bg);
}
.ps-categorytree .category-tree__item-header:hover .category-tree__item-link {
  color: var(--ct-hover-text);
  text-decoration: none;
}
.ps-categorytree .category-tree__item-header:hover::before {
  background-color: var(--ct-hover-indentguide);
}

/* Navigationspfad */
.ps-categorytree .category-tree__item.ct-in-path > .category-tree__item-header {
  background-color: var(--ct-currentPath-menupunkt-bg);
}
.ps-categorytree .category-tree__item.ct-in-path > .category-tree__item-header .category-tree__item-link {
  color: var(--ct-currentPath-text);
}

/* Navigationspfad: Hover (nur Pfad-Vorfahren, nicht die aktive Kategorie selbst) */
.ps-categorytree .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header:hover {
  background-color: var(--ct-currentPath-hover-menupunkt-bg);
}
.ps-categorytree .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header:hover .category-tree__item-link {
  color: var(--ct-currentPath-hover-text);
  text-decoration: none;
}

/* Aktive Kategorie */
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header {
  background-color: var(--ct-active-menupunkt-bg);
}
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header .category-tree__item-link {
  color: var(--ct-active-text);
  font-weight: 700;
}

/* Dreieck: Ruhezustand */
.ps-categorytree .accordion-button::after {
  content: '';
  display: block;
  width: 0.4rem;
  height: 0.5rem;
  margin: 0;
  background: var(--ct-dreieck, currentColor);
  background-image: none;
  border: none;
  clip-path: polygon(0 0, 100% 50%, 0 100%);
  transform: none;
  transition: transform 0.2s ease-in-out, background-color 0.15s ease;
}
.ps-categorytree .accordion-button:not(.collapsed) {
  font-weight: inherit;
  box-shadow: none;
  color: inherit;
}
.ps-categorytree .accordion-button:not(.collapsed)::after {
  background-color: var(--ct-dreieck, currentColor);
  transform: rotate(90deg);
}

/* Dreieck: Hover */
.ps-categorytree .category-tree__item-header:hover .accordion-button::after {
  background-color: var(--ct-hover-dreieck, var(--ct-dreieck));
}

/* Dreieck: Navigationspfad aufgeklappt */
.ps-categorytree .category-tree__item.ct-in-path > .category-tree__item-header .accordion-button:not(.collapsed)::after {
  background-color: var(--ct-currentPath-dreieck, var(--calonder-gruen));
}
/* Dreieck: Navigationspfad zugeklappt */
.ps-categorytree .category-tree__item.ct-in-path > .category-tree__item-header .accordion-button.collapsed::after {
  background-color: var(--ct-currentPath-dreieck, var(--calonder-gruen));
}

/* Dreieck: Navigationspfad Hover (nur Pfad-Vorfahren) */
.ps-categorytree .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header:hover .accordion-button::after {
  background-color: var(--ct-currentPath-hover-dreieck, var(--ct-hover-dreieck));
}

/* Dreieck: Aktive Kategorie aufgeklappt */
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header .accordion-button:not(.collapsed)::after {
  background-color: var(--ct-active-dreieck, var(--calonder-gruen));
}
/* Dreieck: Aktive Kategorie zugeklappt */
.ps-categorytree .category-tree__item.ct-active > .category-tree__item-header .accordion-button.collapsed::after {
  background-color: var(--ct-active-dreieck, var(--calonder-gruen));
}

/* Bootstrap-Resets */
.ps-categorytree .category-tree__item.accordion-item { border: none; }
.ps-categorytree .category-tree__item { margin-block: 0; }

/* ─── Stufe-0 Strukturregeln (nicht via Variablen abbildbar) ──────────── */

/* Abstand zwischen den grünen Kacheln */
.category-tree__list[data-depth="0"] > .category-tree__item {
  margin-block: 0.3rem;
}
/* Kachel-Link: grössere vertikale Höhe */
.category-tree__list[data-depth="0"] > .category-tree__item > .category-tree__item-header .category-tree__item-link {
  padding-block: 0.5rem;
}
/* Dreieck-Button Stufe 0 normal: 1px weiter links als globale Regel */
.category-tree__list[data-depth="0"] > .category-tree__item > .category-tree__item-header .accordion-button {
  left: calc(var(--ct-indent, 0.7rem) - 0.15rem);
}
/* Dreieck-Button Stufe 0 ct-in-path: border-left:3px verschiebt Padding-Box → -3px Kompensation */
.category-tree__list[data-depth="0"] > .category-tree__item.ct-in-path:not(.ct-active) > .category-tree__item-header .accordion-button {
  left: calc(var(--ct-indent, 0.7rem) - 0.15rem - 3px);
}

/* =====================================================================
   Checkout (Kasse)
   ===================================================================== */

/* Steps-Bar oben: Breite via calonder-zone__inner, nur margin-bottom extra. */
.calonder-checkout-steps-bar {
  margin-bottom: 1.5rem;
}

/* Hummingbird-Reset: .checkout-steps hat bg, border-block-end, margin und padding
   die innerhalb unserer Card-Verpackung stören. */
.calonder-checkout-steps-bar .checkout-steps {
  background-color: transparent;
  border-block-end: none;
  margin-block-end: 0;
  padding-block: 0;
  margin-top: 0.5rem;
}

/* Checkout-Links: eigene Klassen statt Bootstrap-Utilities (kein CSS-Layer-Konflikt) */
.calonder-link-edit {
  color: var(--calonder-blau);
}
.calonder-link-edit:hover,
.calonder-link-edit:focus {
  color: var(--calonder-blau-hell);
}
.calonder-link-delete,
.calonder-link-danger {
  color: var(--calonder-rot);
}
.calonder-link-delete:hover,
.calonder-link-delete:focus,
.calonder-link-danger:hover,
.calonder-link-danger:focus {
  color: var(--calonder-rot-hell);
}

/* Checkout-Grid (Formular + Aside): lesbar begrenzt auf 1200px */
.calonder-checkout-grid {
  max-width: 1200px;
  margin-inline: auto;
}

/* Checkout: columns-container Seitenabstand an .calonder-zone__inner angleichen.
   Bootstrap-Default --bs-gutter-x ist 1.5rem (0.75rem pro Seite) — zu schmal.
   Gleiche Logik wie .calonder-middle (--calonder-page-gutter pro Seite). */
.columns-container {
  --bs-gutter-x: calc(var(--calonder-page-gutter) * 2);
}

/* ≤991px: Col-/Row-Gutter im checkout-grid auf 0 setzen.
   Cards füllen die volle Container-Breite, der Container selbst liefert
   --calonder-page-gutter als Seitenabstand (kein doppeltes Padding). */
@media (max-width: 991.98px) {
  .calonder-checkout-grid {
    --bs-gutter-x: 0;
    margin-inline: 0;
  }
  .checkout-grid__content,
  .checkout-grid__aside {
    padding-inline: 0;
  }

  /* Rechtssichere Bestellübersicht aktiv + Payment-Step sichtbar:
     Aside auf Mobil ausblenden (Bestellübersicht im Haupt-Content reicht).
     Trigger: #order-summary-content existiert nur wenn show_final_summary=true;
     kombiniert mit js-current-step reagiert der Selektor dynamisch auf Step-Wechsel. */
  .calonder-checkout-grid:has(#checkout-payment-step.js-current-step #order-summary-content) .checkout-grid__aside {
    display: none;
  }
}

/* =====================================================================
   Checkout – Payment-Step
   ===================================================================== */

/* Zahlungsoptionen-Liste */
.payment-options__list {
  padding-bottom: 1.25rem;
  gap: 1rem;
}

/* Wallee-Logo: Breite begrenzen */
img.wallee-image {
  width: 100px;
}

/* Zahlungsart-Logo im Label: Abstand zum Text */
.payment-option__label > img {
  padding-right: 0.25rem;
}

/* ps_wirepayment + ps_cashondelivery liefern kein Logo → Material Icon als visueller Ersatz.
   :has() selektiert den Container via data-module-name am Radio-Input. */
.payment-options__list .payment-option:has([data-module-name="ps_wirepayment"]) .payment-option__label::before {
  font-family: 'Material Icons';
  content: '\e84f'; /* account_balance */
  font-size: 1.375em;
  line-height: 1;
  vertical-align: middle;
  margin-right: 0.25rem;
  display: inline-block;
}
.payment-options__list .payment-option:has([data-module-name="ps_cashondelivery"]) .payment-option__label::before {
  font-family: 'Material Icons';
  content: '\e57d'; /* money */
  font-size: 1.375em;
  line-height: 1;
  vertical-align: middle;
  margin-right: 0.25rem;
  display: inline-block;
}

/* form-check-input: dickere, dunklere Border */
.form-check-input {
  border-width: 2px;
  border-color: var(--calonder-ink);
}

/* Abstand zwischen Radio-Button und Label vergrössern.
   Bootstrap-Standard: padding-left:1.5em, margin-left:-1.5em → 0.5em Gap.
   Neu: padding-left:2em, margin-left:-2em → 1em Gap. */
.payment-options__list .payment-option__form-check.form-check {
  padding-left: 2em;
}
.payment-options__list .payment-option__form-check.form-check .form-check-input {
  margin-left: -2em;
}

/* B) Rechtssichere Bestellübersicht: Überschrift (.h2) etwas kleiner als
      globale h2 (30px), da sie Unterüberschrift im Step-Kontext ist. */
#order-summary-content .h2 {
  font-size: 1.375rem; /* ~22px */
  margin-top: 1.5rem;
}
@media (max-width: 767.98px) {
  #order-summary-content .h2 {
    font-size: 1.125rem; /* ~18px */
  }
}
@media (max-width: 575.98px) {
  #order-summary-content .h2 {
    font-size: 1rem; /* 16px */
  }
}

/* =====================================================================
   Warenkorb (Cart-Seite)
   ===================================================================== */

/* A) h2 "Bestellübersicht": kein margin-top (Bootstrap setzt sonst 0.5rem) */
.cart-grid__aside-wrapper.calonder-card-white h2 {
  margin-top: 0;
}

/* B) Aside sticky (nur lg+): JS übernimmt via makePersistentSticky.
      Hummingbirds theme.css setzt position:sticky auf .cart-grid__aside-wrapper —
      wir deaktivieren es per position:static, sonst entsteht nested-sticky. */
@media (min-width: 992px) {
  .cart-grid__aside-wrapper {
    position: static; /* Hummingbird-sticky deaktivieren — JS übernimmt */
  }
}

/* =====================================================================
   ps_customeraccountlinks — Kontext-Styling
   Im Footer: kein calonder-card-soft (Template übernimmt via $calonder_footer_widget).
   In der rechten Spalte: calonder-card-soft sichtbar, Linkfarben normal.
   ===================================================================== */

/* Rechte Spalte: Titel sichtbar machen (footer-block setzt ihn weiss für dunklen Footer) */
/* Rechte Spalte: alle Block-Titel einheitlich — Rubik 500, 18px, kein Uppercase */
#right-column #footer_customeraccount_title,
#right-column #footer_customeraccount_title a,
#right-column .calonder-linklist-block__title,
#right-column .calonder-block-title,
#right-column .calonder-trust-advantages__title {
  font-family: var(--calonder-font-heading);
  font-size: 1.0625rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: 0;
  color: var(--calonder-ink);
}

/* Rechte Spalte: col-lg-3 setzt width:25% auch ohne Row-Parent → überschreiben.
   footer-block setzt grau/weiss für dunklen Hintergrund → auf normale Farben zurücksetzen. */
#right-column .ps-customeraccountlinks {
  width: 100%;
  flex: none;
  margin-block-end: 1.5rem;
  font-size: 0.9375rem;
}

/* Rechte Spalte: accordion-Toggle bei ≤767px deaktivieren (kein Klapp-Verhalten).
   Footer-Version bleibt unberührt (.calonder-footer__inner). */
@media (max-width: 767.98px) {
  #right-column .ps-customeraccountlinks .footer-block__title {
    pointer-events: none;
    cursor: default;
  }
  #right-column .ps-customeraccountlinks .footer-block__title::after {
    display: none;
  }
  #right-column .ps-customeraccountlinks .footer-block__title button {
    display: none !important;
  }
  #right-column .ps-customeraccountlinks .accordion-collapse,
  #right-column .ps-customeraccountlinks .footer-block__content.collapse {
    display: block !important;
  }
}
#right-column .ps-customeraccountlinks.footer-block a {
  color: inherit;
}
#right-column .ps-customeraccountlinks.footer-block a:hover {
  color: var(--calonder-blau-hell);
}

/* Rechte Spalte: ps_linklist — calonder-card-soft mit Trennlinien */
.calonder-linklist-block {
  padding: 1.25rem;
  margin-block-end: 1.5rem;
}
.calonder-linklist-block__title {
  font-family: var(--calonder-font-heading);
  font-weight: 500;
  font-size: 1.0625rem;
  color: var(--calonder-ink);
  margin-bottom: 0.75rem;
}
#right-column .calonder-linklist-block__title {
  margin-bottom: 0.5rem;
}
.calonder-linklist-block__list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.calonder-linklist-block__item + .calonder-linklist-block__item {
  border-top: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
}
.calonder-linklist-block__link {
  display: block;
  padding: 0.45rem 0;
  color: var(--calonder-ink);
  text-decoration: none;
  font-size: 0.9375rem;
  transition: color 0.15s ease;
}
.calonder-linklist-block__link:hover {
  color: var(--calonder-blau);
}

#right-column .ps-emailsubscription {
  margin-block-end: 1.5rem;
}
#right-column .ps-emailsubscription input[type="email"] {
  font-size: 0.875rem;
}
#right-column .ps-emailsubscription input[type="submit"] {
  font-size: 0.9375rem;
}

/* =====================================================================
   Farbe Lagerbestand — Produktseite & Warenkorb
   @layer ps-modules: vor "utilities" deklariert → ps-modules !important
   schlägt Bootstrap utilities !important (bei !important gilt umgekehrte Layer-Reihenfolge)
   ===================================================================== */
.product__availability-status,
.product-line__item-availability-message {
  font-weight: 700;
}
.page-product .product__availability-status {
  gap: 0.3rem;
}
/* --calonder-avail-color für Puls-Animation auf Produktseite & Warenkorb */
.product__availability-status.text-success,
.product-line__item-availability-message.text-success {
  --calonder-avail-color: var(--calonder-gruen-hell);
}
.product__availability-status.text-warning,
.product__availability-status.text-danger,
.product-line__item-availability-message.text-warning,
.product-line__item-availability-message.text-danger {
  --calonder-avail-color: var(--calonder-leder);
}
@layer ps-modules {
  .product__availability-status.text-success,
  .product-line__item-availability-message.text-success {
    color: var(--calonder-gruen-hell) !important;
  }
  .product__availability-status.text-warning,
  .product__availability-status.text-danger,
  .product-line__item-availability-message.text-warning,
  .product-line__item-availability-message.text-danger {
    color: var(--calonder-leder) !important;
  }
}

/* =====================================================================
   Product Flags / Badges
   background-color hat Bootstrap !important in früher Layer →
   box-shadow inset umgeht den Konflikt komplett (kein background-color)
   color + border via @layer ps-modules
   TODO: box-shadow-Hack überdenken. Saubere Alternative wäre herausfinden
   in welchem @layer Bootstraps badge-background-Regel steckt und unsere
   Regel in einen noch früheren Layer zu setzen (für !important gilt:
   früher deklarierter Layer gewinnt). Layer-Reihenfolge in theme.css:
   vendors, bs-base, bs-components, bs-custom-components, ps-base,
   ps-components, ps-pages, ps-modules, utilities
   ===================================================================== */
.product-flags .badge {
  font-weight: 700;
}

/* on-sale: rot */
.product-flags .badge.on-sale {
  box-shadow: inset 0 0 0 200px var(--calonder-rot);
  border-color: var(--calonder-rot) !important;
}
@layer ps-modules {
  .product-flags .badge.on-sale {
    color: var(--calonder-paper) !important;
  }
}

/* discount: paper bg / rot border + text */
.product-flags .badge.discount {
  box-shadow: inset 0 0 0 200px var(--calonder-paper);
  border: 2px solid var(--calonder-rot) !important;
}
@layer ps-modules {
  .product-flags .badge.discount {
    color: var(--calonder-rot) !important;
  }
}

/* new: hellblau */
.product-flags .badge.new {
  box-shadow: inset 0 0 0 200px var(--calonder-blau-hell);
  border: 1px solid var(--calonder-blau-hell) !important;
  text-transform: uppercase;
}
@layer ps-modules {
  .product-flags .badge.new {
    color: var(--calonder-paper) !important;
  }
}

/* =====================================================================
   Quickview-Button: einheitliches Calonder-Design, kontextunabhängig.
   btn-tertiary + .product-miniature__quickview-button erben sonst
   --bs-body-bg / --bs-body-color, die je nach Kontext variieren.
   Wir setzen alle Farb-Tokens explizit → überall identisches Aussehen.
   Ruhe: Paper 75%/Ink — Hover: Paper 100%/Blau
   ===================================================================== */
.product-miniature__quickview-button {
  /* Layout: bündig mit dem Bild, am unteren Rand positioniert (kein translateY mehr) */
  top: auto !important;
  bottom: 0 !important;
  left: 0.75rem !important;
  right: 0.75rem !important;
  width: auto !important;
  margin: 0 !important;
  border-radius: 0 0 0.5rem 0.5rem !important;
  /* Opacity-Fade statt translateY — backdrop-filter + translate verursacht Rendering-Glitch */
  transform: none !important;
  opacity: 0;
  transition: opacity 0.4s ease !important;

  /* Farben: btn-tertiary Bootstrap-Tokens überschreiben */
  --bs-btn-bg:                color-mix(in srgb, var(--calonder-paper) 75%, transparent);
  --bs-btn-border-color:      transparent;
  --bs-btn-color:             var(--calonder-ink);
  --bs-btn-hover-bg:          color-mix(in srgb, var(--calonder-paper) 75%, transparent);
  --bs-btn-hover-border-color: transparent;
  --bs-btn-hover-color:       var(--calonder-blau);
  --bs-btn-active-bg:         color-mix(in srgb, var(--calonder-paper) 75%, transparent);
  --bs-btn-active-color:      var(--calonder-blau);

  /* Direkte Überschreibung für background-color: var(--bs-body-bg) im Hummingbird-Rule */
  background-color: color-mix(in srgb, var(--calonder-paper) 75%, transparent) !important;
  color: var(--calonder-ink) !important;
  border: none !important;
  backdrop-filter: blur(5px);
  /* Clip-path verhindert Blur-Ausbluten am rechten Rand (overflow:hidden reicht bei backdrop-filter nicht) */
  clip-path: inset(0 0 0 0 round 0 0 0.5rem 0.5rem);
}
/* Banner nur einblenden beim Hover über den Bildbereich (__top), nicht über die ganze Karte */
.product-miniature__top:hover .product-miniature__quickview-button,
.product-miniature__top:has(:focus-visible) .product-miniature__quickview-button {
  opacity: 1;
  transform: none !important;
}

.product-miniature__quickview-button:hover,
.product-miniature__quickview-button:focus-visible {
  background-color: color-mix(in srgb, var(--calonder-paper) 75%, transparent) !important;
  color: var(--calonder-blau) !important;
  border: none !important;
}

/* =====================================================================
   Wishlist-Button auf Produktkarten
   Struktur: .product-miniature > .product-miniature__image-container > .wishlist-button > button.wishlist-button-add
   Vue mountet die Button-Komponente INNERHALB von .wishlist-button (kein direkter Ersatz).
   → Descendant-Selektor via .product-miniature notwendig.

   Doppelstrategie gegen @layer ps-modules (nutzt var(--bs-body-bg) !important):
   1. --bs-body-bg auf dem Button-Kontext überschreiben → ps-modules-Regel löst zu
      unserem Grün auf, ohne !important-Layer-Konflikt zu riskieren.
   2. Eigene background-color/color !important als Backup.

   Image-Container: display:block + position:relative → Positionierungskontext.
   Button: position:absolute → herausgenommen aus normalem Flow, kein Stretch.
   ===================================================================== */

/* 1. BS-Variablen im Wishlist-Button-Kontext überschreiben */
.product-miniature .wishlist-button,
.product-miniature .wishlist-button-add {
  --bs-body-bg: var(--calonder-gruen);
  --bs-body-color: var(--calonder-beige);
  --bs-link-hover-color: var(--calonder-paper);
}
.product-miniature .wishlist-button-add:hover {
  --bs-body-bg: var(--calonder-gruen-hell);
}

/* 2. Explizite Deklarationen */
.product-miniature .wishlist-button-add {
  position: absolute !important;
  top: .5rem !important;
  right: .5rem !important;
  z-index: 11 !important;
  width: 2rem !important;
  height: 2rem !important;
  min-width: unset !important;
  max-width: 2rem !important;
  padding: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 50% !important;
  background-color: var(--calonder-gruen) !important;
  border: none !important;
  color: var(--calonder-beige) !important;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12) !important;
  transition: background-color 0.2s ease, color 0.2s ease !important;
}
.product-miniature .wishlist-button-add:hover {
  background-color: var(--calonder-gruen-hell) !important;
  color: var(--calonder-paper) !important;
  opacity: 1 !important;
}
.product-miniature .wishlist-button-add i {
  font-size: 1rem !important;
  line-height: 1 !important;
  color: inherit !important;
}

/* =====================================================================
   Quickview Modal — Calonder-Ergänzungen
   ===================================================================== */

/* Innenabstand am Ende des Quickview-Modal-Body */
.quickview__body.modal-body {
  padding-bottom: 2.5rem;
}

/* Produkttitel im Quickview */
.page-product--quickview .product__name {
  color: var(--calonder-gruen);
}

/* Long description im Quickview — visuell von short description abgesetzt */
.calonder-qv-description {
  font-size: 0.9375rem;
  line-height: 1.6;
  color: var(--calonder-ink);
  border-top: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  padding-top: 0.75rem;
  margin-top: 0.25rem;
}

/* Alle Details — prominenter Button unterhalb Add-to-Cart */
.calonder-qv-details-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.25rem;
  width: 100%;
  margin-top: 0.75rem;
  padding: 0.6rem 1rem;
  background-color: var(--calonder-gruen);
  border: none;
  border-radius: 0.375rem;
  color: var(--calonder-beige);
  font-family: var(--calonder-font-body);
  font-size: 0.9375rem;
  font-weight: 600;
  text-decoration: none;
  transition: background-color 0.2s ease, color 0.2s ease;
}
.calonder-qv-details-btn:hover {
  background-color: var(--calonder-gruen-hell);
  color: white;
  text-decoration: none;
}

/* =====================================================================
   Produkttitel + Preise (PDP & Quickview)
   ===================================================================== */

/* Produkttitel: Quickview (p) = kein Abstand; PDP (h1) = kleiner Abstand oben */
.page-product .product__name {
  margin-top: 0;
}
.page-product h1.product__name {
  margin-top: 0.5rem;
  color: var(--calonder-gruen);
  overflow-wrap: break-word;
  hyphens: auto;
}
/* 992–1649px: Produkttitel kleiner (Mitte ist nur 50% breit) */
@media (min-width: 992px) and (max-width: 1100px) {
  .page-product h1.product__name {
    font-size: 1.75rem;
  }
}
@media (min-width: 1100.02px) and (max-width: 1649.98px) {
  .page-product h1.product__name {
    font-size: 1.5rem;
  }
}

/* PDP + Quickview: Responsive iframes in Produktbeschreibungen (z.B. YouTube-Embeds).
   width-Attribut des iframe wird durch 100% !important überschrieben;
   aspect-ratio hält die Proportionen ohne feste Pixelhöhe. */
.product__description iframe,
.product__description-short iframe {
  width: 100% !important;
  height: auto;
  aspect-ratio: 16 / 9;
  display: block;
  max-width: 100%;
}

/* PDP + Quickview: Bilder in Produktbeschreibungen nie breiter als Container.
   width/height HTML-Attribute (vom Kunden im Editor gesetzt) werden durch !important überschrieben. */
.product__description img,
.product__description-short img,
.calonder-qv-description img {
  max-width: 100% !important;
  height: auto !important;
  display: block;
}

/* PDP: Beschreibungs-Karte — h5-Titel-Margin aufheben + Leder-Farbe */
.product__bottom-left .calonder-card-white .h5,
.product__bottom-left .calonder-card-white h2 {
  margin-top: 0;
  color: var(--calonder-leder);
}

/* PDP: Actions-Block (Varianten + Add-to-Cart) als calonder-card-soft */
.product-container .product__actions {
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  border-radius: 0.5rem;
  padding: 1.25rem;
  background: color-mix(in srgb, var(--calonder-paper) 85%, transparent);
  margin-top: 0.75rem;
}

/* =====================================================================
   Mengenfeld + Add-to-Cart (PDP & Quickview)
   ===================================================================== */

/* Quantity-Buttons: kleiner Gap → jedes Element mit eigenen runden Ecken */
.page-product .quantity-button__group.input-group {
  gap: 4px;
}
/* Bootstrap setzt innere Ecken im input-group auf 0 → hier alle 4 Ecken runden */
.page-product .quantity-button__group .btn {
  border-radius: var(--bs-border-radius) !important;
  background-color: white;
  color: var(--calonder-ink);
  border-color: color-mix(in srgb, var(--calonder-beige-parts) 60%, transparent);
  transition: color 0.2s ease, border-color 0.2s ease;
}
/* Hover: Linie verstärken + hellblau; opacity:1 hebt Hummingbirds opacity:.6 auf */
.page-product .quantity-button__group .btn:hover {
  background-color: white;
  color: var(--calonder-blau-hell);
  border-color: var(--calonder-blau-hell);
  opacity: 1;
}

/* Quantity-Input: fette Schrift, gleiche runde Ecken wie Buttons */
.page-product .quantity-button__group .form-control {
  border-radius: var(--bs-border-radius) !important;
  font-weight: 700;
}

/* .product__add-to-cart-button ist btn-primary — wird global via .btn-primary (Sektion 1c) gestylt */

/* Preisblock: Abstand zum Titel + Rubik-Font für die Hauptpreiszahl */
.page-product .product__prices {
  margin-top: 1rem;
}
.page-product .product__prices-block {
  gap: 0.3rem;
}
.page-product .product__price {
  font-family: var(--calonder-font-heading);
  font-weight: 700;
  font-size: 1.75rem;
  line-height: 1.2;
  color: var(--calonder-ink);
}
/* Streichpreis auf der PDP/Quickview — wenn vorhanden: Aktualpreis in Rot */
.page-product .product__prices:has(.product__regular-price) .product__price {
  color: var(--calonder-rot);
}
.page-product .product__regular-price {
  font-family: var(--calonder-font-heading);
  font-size: 1.125rem;
  color: var(--calonder-ink);
}

/* =====================================================================
   Produkt-Footer Full-Width (.calonder-product-footer)
   Rendert ausserhalb von #center-column (via layout-both-columns.tpl),
   dadurch natürlich volle Viewport-Breite.
   ===================================================================== */

/* margin-block-end aus Hummingbird (@media min-width:1200px) entfernen */
.calonder-product-footer .ps-categoryproducts,
.calonder-product-footer .ps-crossselling,
.calonder-product-footer .ps-viewedproduct {
  margin-block-end: 0;
}

/* Grüner Hintergrund für ps_categoryproducts + ps_crossselling */
.calonder-product-footer .ps-categoryproducts,
.calonder-product-footer .ps-crossselling {
  background-color: var(--calonder-gruen);
  color: var(--calonder-beige);
}
.calonder-product-footer .ps-categoryproducts .section-title,
.calonder-product-footer .ps-crossselling .section-title,
.calonder-product-footer .ps-viewedproduct .section-title {
  margin-top: 0;
  margin-bottom: 1.5rem;
}
.calonder-product-footer .ps-categoryproducts .section-title,
.calonder-product-footer .ps-crossselling .section-title {
  color: var(--calonder-beige);
}
.calonder-product-footer .ps-viewedproduct .section-title {
  color: var(--calonder-gruen);
}

/*
 * Sektion-Links beige färben, aber Produktbox-Titel nicht überschreiben.
 *
 * Problem: `.calonder-product-footer .ps-categoryproducts a` hätte Spezifität (0,2,1)
 * und würde `.product-miniature__title` (0,1,0) übertrumpfen — Produkttitel würden
 * beige statt ihrer eigenen Farbe bekommen.
 *
 * Lösung: :where() macht den Selektor spezifitätsneutral → effektive Spezifität (0,0,1).
 * Damit gewinnen alle Produktbox-eigenen Link-Regeln (≥ 0,1,0) automatisch.
 */
:where(.calonder-product-footer .ps-categoryproducts) a,
:where(.calonder-product-footer .ps-crossselling) a {
  color: var(--calonder-beige);
}
:where(.calonder-product-footer .ps-categoryproducts) a:hover,
:where(.calonder-product-footer .ps-crossselling) a:hover {
  color: white;
}

/* Zurück-zur-Kategorie Button */
.calonder-category-back {
  text-align: center;
}

/* Innerer Inhaltsbereich: max-width statt Bootstrap-container (1320px) */
.calonder-product-footer .module-products {
  max-width: 1760px;
  width: 100%;
  margin-inline: auto;
  padding-inline: var(--calonder-page-gutter);
  padding-block: 2.5rem;
  box-sizing: border-box;
}

/* Bootstrap .container innerhalb .module-products zurücksetzen */
.calonder-product-footer .module-products.container {
  max-width: 1760px;
}

/* Produkt-Grid (H): auto-fill mit min. 260px — identisch zu Homepage-Produktlisten.
   Bricht automatisch um wenn kein Platz; kein Fixed-Column-Count nötig. */
.calonder-product-footer .ps-categoryproducts .products,
.calonder-product-footer .ps-crossselling .products,
.calonder-product-footer .ps-viewedproduct .products {
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

/* Mengenbuttons im Warenkorb: gleicher Stil wie auf der PDP */
body#cart .quantity-button__group.input-group {
  gap: 4px;
}
body#cart .quantity-button__group .btn {
  border-radius: var(--bs-border-radius) !important;
  background-color: white;
  color: var(--calonder-ink);
  border-color: color-mix(in srgb, var(--calonder-beige-parts) 60%, transparent);
  transition: color 0.2s ease, border-color 0.2s ease;
}
body#cart .quantity-button__group .btn:hover {
  background-color: white;
  color: var(--calonder-blau-hell);
  border-color: var(--calonder-blau-hell);
  opacity: 1;
}
body#cart .quantity-button__group .form-control {
  border-radius: var(--bs-border-radius) !important;
  font-weight: 700;
}

/* "Entfernen"-Link im Warenkorb: rot + Papierkorb-Icon */
body#cart .js-remove-from-cart {
  color: var(--calonder-rot);
  display: inline-flex;
  align-items: center;
  gap: 0.2rem;
}
body#cart .js-remove-from-cart:hover,
body#cart .js-remove-from-cart:focus {
  color: var(--calonder-rot-hell);
}
body#cart .js-remove-from-cart::before {
  content: '\E872';
  font-family: 'Material Icons';
  font-size: 1rem;
  line-height: 1;
}

/* Produktbilder im Warenkorb + Checkout-Zusammenfassung: abgerundete Ecken + feiner Rahmen */
body#cart .product-line__image,
.cart-summary-product__image {
  border-radius: 0.5rem;
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 40%, transparent);
  overflow: hidden;
}

/* Warenkorb ≤991px: Bestellübersicht (aside) VOR den Produkten anzeigen.
   Bootstrap .row ist bereits flex → order reicht. */
@media (max-width: 991.98px) {
  .cart-grid__content { order: 2; }
  .cart-grid__aside   { order: 1; }
}

/* ps_crossselling auf der Warenkorb-Seite (C) */
body#cart .ps-crossselling .section-title {
  color: var(--calonder-gruen);
  margin-top: 3.5rem;
}
/* Produktboxen auf dem Warenkorb: min. 260px, max. 3 pro Zeile (auto-fill
   passt sich der Containerbreite an; bei col-lg-8 ≈ 66 % kommen nie mehr als 3). */
body#cart .ps-crossselling .products {
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
}

/* =====================================================================
   Rechte Spalte — gemeinsamer Block-Titel + Kontakt-Block
   ===================================================================== */

/* Einheitlicher Titel für Newsletter, Kontakt und weitere statische Blöcke */
.calonder-block-title {
  font-family: var(--calonder-font-heading);
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.2;
  text-transform: none;
  letter-spacing: 0;
  color: var(--calonder-ink);
  margin-top: 0;
  margin-bottom: 0.75rem;
}

/* Grüner Button (Kontakt aufnehmen etc.) — direkte Properties wie calonder-btn-spezial-beige */
.btn.calonder-btn-spezial-gruen {
  background-color: var(--calonder-gruen);
  color:            var(--calonder-paper);
  border-color:     var(--calonder-gruen);
}
.btn.calonder-btn-spezial-gruen:hover,
.btn.calonder-btn-spezial-gruen:focus-visible,
.btn.calonder-btn-spezial-gruen:active {
  background-color: var(--calonder-gruen-hell);
  color:            var(--calonder-paper);
  border-color:     var(--calonder-gruen-hell);
}

/* Kontaktformular: Buttons nach erfolgreichem Absenden */
.calonder-contact-success-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  margin-top: 1.5rem;
}

/* Kontakt-Block */
.calonder-right-contact {
}
.calonder-right-contact__info {
  font-size: 0.9375rem;
  color: var(--calonder-ink);
  line-height: 1.5;
}
.calonder-right-contact__info .material-icons {
  font-size: 1.1rem;
}
.calonder-right-contact__info .ps-contactinfo__phone {
  margin-bottom: 0.35rem;
}
.calonder-right-contact__info p {
  margin-bottom: 0.5rem;
}
.calonder-right-contact__info p:last-child {
  margin-bottom: 0;
}

/* =========================================================
   ps_emailalerts — Produkt-Detailseite
   ========================================================= */

/* A) Äusserer Hook-Container: feiner Rahmen + subtiler Hintergrund */
.page-product .product__additional-info.js-product-additional-info {
  background: color-mix(in srgb, var(--calonder-gruen) 6%, var(--calonder-paper));
  border: 1px solid color-mix(in srgb, var(--calonder-gruen) 22%, transparent);
  border-radius: var(--bs-border-radius-lg);
  padding: 1.25rem;
}
/* Hummingbird hat Hintergrund auf dem inneren __content-Div → zurücksetzen */
.page-product .product__additional-info.js-product-additional-info .ps-emailalerts__content {
  background: transparent;
  padding: 0;
  margin-block-end: 0;
  border-radius: 0;
}

/* B) Titel: kein margin-top, Farbe grün, kein uppercase */
.ps-emailalerts--product .h4 {
  margin-top: 0;
  color: var(--calonder-gruen);
  text-transform: none;
}

/* C) Subscribe-Button in Calonder-Grün */
.ps-emailalerts--product [data-ps-action="emailalerts-subscribe"] {
  background-color: var(--calonder-gruen);
  border-color: var(--calonder-gruen);
}
.ps-emailalerts--product [data-ps-action="emailalerts-subscribe"]:hover,
.ps-emailalerts--product [data-ps-action="emailalerts-subscribe"]:focus {
  background-color: var(--calonder-gruen-hell);
  border-color: var(--calonder-gruen-hell);
}

/* Checkout — Adress-Toggle-Links */
.calonder-address-toggle-link,
.calonder-same-address-link {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  color: var(--calonder-ink);
  font-size: 0.875rem;
  text-decoration: none;
  background: color-mix(in srgb, var(--calonder-ink) 7%, transparent);
  border-radius: 2rem;
  padding: 0.2rem 0.65rem 0.2rem 0.45rem;
  transition: background 0.15s, color 0.15s;
}
.calonder-address-toggle-link:hover,
.calonder-same-address-link:hover {
  background: color-mix(in srgb, var(--calonder-ink) 14%, transparent);
  color: var(--calonder-ink);
  text-decoration: none;
}
.calonder-address-toggle-link::before {
  content: '\e313'; /* keyboard_arrow_down */
  font-family: 'Material Icons';
  font-size: 1.1rem;
  line-height: 1;
}
.calonder-same-address-link::before {
  content: '\e316'; /* keyboard_arrow_up */
  font-family: 'Material Icons';
  font-size: 1.1rem;
  line-height: 1;
}
.calonder-invoice-address-header {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.25rem;
}
.calonder-checkout-actions {
  margin-top: 3rem;
}
#checkout-modal .modal-body h3 {
  margin-top: 0;
}

/* Checkout-Steps: Farben — success → calonder-gruen, current → calonder-gruen-deep */
.checkout-steps__step--success .checkout-steps__number,
.checkout-steps__step--current:before {
  background: var(--calonder-gruen);
}
.checkout-steps__step--success .checkout-steps__btn {
  color: var(--calonder-gruen);
}
.checkout-steps__step--success:after,
.checkout-steps__step--success:before {
  background: var(--calonder-gruen);
}
.checkout-steps__step--current .checkout-steps__number {
  background: var(--calonder-blau);
}
.checkout-steps__step--current .checkout-steps__btn {
  color: var(--calonder-blau);
}

/* Checkout-Steps: Zahl klickbar — Button-Hitbox exakt auf Zahlen-Kreis zentriert */
.checkout-steps__btn {
  position: relative;
}
.checkout-steps__btn::before {
  content: '';
  position: absolute;
  z-index: 2;
  top: -2.5rem;
  bottom: 0;
  left: 50%;
  width: 2rem;
  margin-left: -1rem;
  cursor: pointer;
}

/* Warenkorb: Rabatt-Badge — Bootstrap bg-primary via Variable überschreiben */
.product-line__item-discount.badge {
  --bs-primary-rgb: 220, 0, 0; /* --calonder-rot: #DC0000 */
  --bs-bg-opacity: 1;
  color: #fff !important;
}

/* PDP + Quickview: "Sparen Sie …" — Bootstrap text-primary-emphasis via Variable */
.product__discount-amount {
  --bs-primary-text-emphasis: var(--calonder-rot);
}

/* Warenkorb: Produkttitel */
.product-line__title {
  font-family: var(--calonder-font-heading);
  font-size: 1.0625rem; /* ~17px */
}

/* Warenkorb/Checkout: Gutschein entfernen Icon */
.cart-voucher__remove {
  color: var(--calonder-rot);
  transition: color 0.15s;
}
.cart-voucher__remove:hover {
  color: var(--calonder-rot-hell);
}

/* Warenkorb/Checkout: Gutschein "Anwenden"-Button */
.js-voucher-accordion .btn-primary {
  --bs-btn-bg:                    var(--calonder-gruen);
  --bs-btn-border-color:          var(--calonder-gruen);
  --bs-btn-hover-bg:              var(--calonder-gruen-hell);
  --bs-btn-hover-border-color:    var(--calonder-gruen-hell);
  --bs-btn-active-bg:             var(--calonder-gruen-hell);
  --bs-btn-active-border-color:   var(--calonder-gruen-hell);
  --bs-btn-focus-shadow-rgb:      27, 82, 46;
}

/* ── PDP Mobile: Kaufblock vor Bilder ──────────────────────────────────────
   Hummingbird: product__container wird erst ab ≥992px zu display:grid.
   Darunter ist es ein Block-Kontext → eigenes flex-column + order zum Tauschen. */
@media (max-width: 991.98px) {
  .page-product .product__container {
    display: flex;
    flex-direction: column;
  }
  .page-product .product__left  { order: 2; }
  .page-product .product__right { order: 1; }
}

/* ── PDP mittlere Auflösungen (992–1649px) ──────────────────────────────────
   product__bottom einspaltig: bei 50% Center-Breite ist 2-spaltig zu eng.
   product__container: Gap kleiner + Hummingbirds 55%-Breakpoint auf 1450px verschieben.
   (Hummingbird setzt 55%/2rem-Grid ab 1200px — wir halten bis 1449px bei 48%/1.25rem.) */
@media (min-width: 992px) and (max-width: 1649.98px) {
  .page-product .product__bottom {
    grid-template-columns: 1fr;
  }
  /* margin-block-end von Hummingbird (2rem/3rem) aufheben — Gap im Grid reicht */
  .page-product .product__bottom-left {
    margin-block-end: 0;
  }
  .page-product .product__container {
    gap: 1.25rem;
  }
}
@media (min-width: 1200px) and (max-width: 1449.98px) {
  .page-product .product__container {
    grid-template-columns: 48% minmax(0, 1fr);
  }
}

/* Telefon-Zusatzinfo (z.B. Öffnungszeiten hinter der Nummer) */
.shop-info__phone-extra {
  font-weight: 400;
  font-style: normal;
  color: inherit;
  opacity: 0.75;
}

/* Checkout: Buttons-Wrapper row-gap auf Mobile (Hummingbird: .5rem → 1rem) */
@media (max-width: 767.98px) {
  .step__content .buttons-wrapper {
    row-gap: 1rem;
  }
}

/* =====================================================================
   blockwishlist — CSS-Overrides
   D1/D6: Titel grün
   D2:    wishlist-add-to-new + wishlist-footer-links Linkfarbe
   D5:    wishlist-list-item-link → calonder-blau
   D8:    sort-by-row Button modernes Design
   D9:    material-icons create → calonder-gruen
   ===================================================================== */

/* D1/D6: Wunschlisten-Seiten-Titel */
.wishlist-products-container-header h1,
.wishlist-container-header h1 {
  color: var(--calonder-gruen);
}

/* D2: Links in wishlist-add-to-new und wishlist-footer-links */
.wishlist-add-to-new,
.wishlist-add-to-new.text-primary,
a.wishlist-add-to-new {
  color: var(--calonder-gruen) !important;
}
.wishlist-footer-links a {
  color: var(--calonder-gruen);
  text-decoration: none;
}
.wishlist-footer-links a:hover {
  color: var(--calonder-gruen-deep);
}

/* D5: Wunschlisten-Item-Links */
.wishlist-list-item-link {
  color: var(--calonder-blau);
}
.wishlist-list-item-link:hover {
  color: var(--calonder-blau-hell);
}

/* D8: Sort-by Button */
.sort-by-row .btn-unstyle.select-title,
.sort-by-row .select-title {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.5rem 0.875rem;
  border: 1px solid color-mix(in srgb, var(--calonder-beige-parts) 60%, transparent);
  border-radius: 0.375rem;
  background: var(--calonder-paper);
  color: var(--calonder-ink);
  font-family: var(--calonder-font-body);
  font-size: 0.9375rem;
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.sort-by-row .btn-unstyle.select-title:hover,
.sort-by-row .select-title:hover {
  border-color: var(--calonder-gruen);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--calonder-gruen) 15%, transparent);
}

/* ── Checkout: Persönliche Daten — Tab-Auswahl als Card-Buttons ─────────── */
#personal-information-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.875rem;
  margin-bottom: 1.75rem;
  border: none;
}
#personal-information-tabs .nav-item {
  display: contents;
}
#personal-information-tabs .nav-link {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.375rem;
  padding: 1.25rem 1rem;
  border: 2px solid color-mix(in srgb, var(--calonder-beige-parts) 60%, transparent);
  border-radius: 0.5rem;
  background: var(--calonder-paper);
  color: var(--calonder-ink);
  font-size: 1rem;
  font-weight: 600;
  text-decoration: none;
  transition: border-color 0.15s, background 0.15s, color 0.15s, box-shadow 0.15s;
}
#personal-information-tabs .nav-link:hover:not(.active) {
  border-color: color-mix(in srgb, var(--calonder-blau) 40%, transparent);
  background: color-mix(in srgb, var(--calonder-blau) 5%, var(--calonder-paper));
}
#personal-information-tabs .nav-link .material-icons {
  font-size: 2rem;
}
#personal-information-tabs .nav-link.active {
  border-color: var(--calonder-gruen);
  background: color-mix(in srgb, var(--calonder-gruen) 8%, var(--calonder-paper));
  color: var(--calonder-gruen);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--calonder-gruen) 15%, transparent);
}

/* D9: Bearbeitungs-Icon in wishlist-product-combinations */
.wishlist-product-combinations .material-icons {
  color: var(--calonder-gruen);
}

/* ── CMS-Seiten Container (ohne visuelle Card, aber mit Padding + Breite) ── */
.calonder-cms-container {
  padding: 1.25rem;          /* absorbiert Bootstrap-Row negative margins */
  margin-block: 2rem;
  max-width: 1400px;
  margin-inline: auto;
  width: 100%;
}

/* ── CMS-Seiten Sidebar ────────────────────────────────────────── */
.calonder-cms-sidebar {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.calonder-cms-sidebar__contact {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}
.calonder-cms-sidebar__contact-heading {
  margin: 0 0 0.25rem;
  font-weight: 700;
  font-size: 1rem;
  color: var(--calonder-ink);
}
.calonder-cms-sidebar__contact-row {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.9375rem;
}
.calonder-cms-sidebar__contact-row .material-icons {
  font-size: 1.125rem;
  color: var(--calonder-gruen);
  flex-shrink: 0;
}
.calonder-cms-sidebar__contact-btn {
  align-self: flex-start;
  margin-top: 0.375rem;
}


