
/* Cormorant Garamond — lokal ausgeliefert, keine Verbindung zu Google */
/* Quelle: Fontsource 5.3.0 (SIL Open Font License 1.1) */

/* 400 normal */
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-400-normal.woff2') format('woff2');
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-ext-400-normal.woff2') format('woff2');
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* 500 normal */
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:500;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-500-normal.woff2') format('woff2');
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:500;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-ext-500-normal.woff2') format('woff2');
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* 600 normal */
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-600-normal.woff2') format('woff2');
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:600;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-ext-600-normal.woff2') format('woff2');
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}

/* 400 kursiv */
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-400-italic.woff2') format('woff2');
unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400;font-display:swap;
src:url('/schriften/cormorant-garamond-latin-ext-400-italic.woff2') format('woff2');
unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
:root{
  /* Patronus-CI: Schwarz + Champagner-Gold — Côte d'Azur-Veredelung */
  --gold:#9B8965; --gold-hell:#B4A583; --gold-tief:#7C6D4E;
  --schwarz:#1c1b18; --schwarz-2:#26241f;
  /* Marken-/CTA-Ebene läuft über --rost-Alias = Gold, damit CI durchgängig greift */
  --rost:#9B8965; --rost-hell:#B4A583; --rost-tief:#7C6D4E;
  --anthrazit:#1c1b18; --anthrazit-2:#26241f;
  /* Cortenstahl nur noch material-/produktbezogen */
  --corten:#A0522D; --corten-hell:#b5673a; --corten-tief:#7A3D1F;
  /* Azur als Zweitakzent — sparsam, mediterran */
  --azur:#3f6f7a; --azur-hell:#5a8b96; --azur-blass:#e8f0f0;
  --weiss:#FFFFFF; --gruen:#4CAF50; --gruen-tief:#3d9140; --rot:#E53935;
  /* wärmerer, kalkweißer Villa-Grund statt reinem Weiß */
  --grund:#faf8f3; --creme:#f4f0e7; --sand:#ece5d7; --grau:#6f6a65; --linie:#e6ded0; --text:#3a3733;
  /* Gold als TEXTfarbe auf hellem Grund — WCAG 2.1 AA (>=4.5:1). --gold bleibt für dunkle
     Flächen, Rahmen, Icons und Flächenfüllungen; --gold-text ausschließlich für Text auf hell. */
  --gold-text:#6f6142;
  /* Gold als TEXTfarbe auf einem FOTO — heller getönt, weil der Bildgrund
     stellenweise aufhellt und ein Verlauf allein AA nicht sichert. */
  --gold-foto:#efe4cb;
  --f:'Helvetica Neue',Arial,sans-serif;
  --serif:'Cormorant Garamond','Cormorant',Georgia,'Times New Roman',serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--f);color:var(--text);background:var(--grund);line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
button{font-family:var(--f);cursor:pointer}
a{color:inherit;text-decoration:none}
.hide{display:none!important}

/* --- Barrierefreiheit: sichtbarer Fokus, Skip-Link, reduzierte Bewegung --- */
:focus{outline:none}
:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,[tabindex]:focus-visible{
  outline:3px solid var(--azur);outline-offset:2px;border-radius:3px}
.cardlink{color:inherit;text-decoration:none}
.card:hover .cardlink{text-decoration:underline}
.skiplink{position:absolute;left:-9999px;top:0;z-index:200;background:var(--schwarz);color:#fff;
  padding:.7rem 1.2rem;font-size:.9rem;border-radius:0 0 4px 0}
.skiplink:focus{left:0}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.card h3 a{color:inherit}

/* --- Bildauslieferung: echte <img>-Elemente statt CSS-Hintergruende.
   Verhindert Layoutspruenge (width/height am Element), erlaubt loading="lazy"
   und liefert per srcset nur die tatsaechlich benoetigte Aufloesung aus. --- */
.bild{display:block;width:100%;height:100%;object-fit:cover;object-position:center;background:var(--sand)}
.bild.contain{object-fit:contain;background:var(--grund)}
.gallery .main{position:relative;overflow:hidden;background:var(--sand)}
.gallery .main img.bild{position:absolute;inset:0}
.gallery .thumb{position:relative;overflow:hidden}
.card .img{position:relative;overflow:hidden}
.card .img img.bild{position:absolute;inset:0}
.hero-photo img.bild{position:absolute;inset:0}
.bt-img{position:relative;overflow:hidden}
.bt-img img.bild{position:absolute;inset:0}
.linklike{background:none;border:none;padding:0;font:inherit;color:var(--gold-text);
  text-decoration:underline;font-weight:600}
.seite{max-width:820px;margin:0 auto 4rem;padding:0 1.5rem;font-size:.98rem}
.seite h2{font-family:var(--serif);font-size:1.7rem;font-weight:500;color:var(--anthrazit);margin-bottom:.6rem}
.seite p{margin-bottom:.8rem}
.seite-todo{background:var(--azur-blass);border-left:4px solid var(--azur);padding:1rem 1.2rem;
  border-radius:0 5px 5px 0;font-size:.92rem;margin:1rem 0}

/* --- Rechtstexte: Impressum, Datenschutz, AGB, Widerrufsbelehrung ---
   Gleiche Anmutung wie die Ratgeberseiten (weisse Karte, Serifenueberschrift),
   aber als durchgehendes Schriftstueck: Rechtstexte werden gelesen und zitiert,
   nicht ueberflogen. Die Trennlinie vor jedem Abschnitt haelt sie gegliedert. */
.rt{background:#fff;border:1px solid var(--linie);border-radius:12px;
  padding:1.6rem 1.8rem;line-height:1.72}
.rt h2{font-family:var(--serif);font-size:1.55rem;font-weight:500;color:var(--anthrazit);
  margin-bottom:.55rem}
.rt h2+.rt-nr{margin-top:-.3rem}
/* Fassung 137: auf dem Telefon liefen „Datenschutzerklaerung“, „Allgemeine Geschaeftsbedingungen“,
   „Widerrufsbelehrung“ (H1) und ausgeschriebene Adressen ueber den Rand (bis 433 px bei 320–430 px). */
.cat-head h1{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
.rt a{overflow-wrap:anywhere}
.rt h2:not(:first-child){margin-top:1.7rem;padding-top:1.3rem;border-top:1px solid var(--linie)}
.rt h3{font-size:1rem;font-weight:700;color:var(--anthrazit);margin:1.1rem 0 .3rem}
.rt p{margin-bottom:.8rem}
.rt p:last-child{margin-bottom:0}
.rt ul{margin:.1rem 0 .9rem 1.15rem}
.rt li{margin-bottom:.4rem}
.rt a{color:var(--gold-text);text-decoration:underline}
.rt-adresse{font-style:normal}
/* Das Muster-Widerrufsformular ist ein Vordruck zum Ausfuellen und steht
   deshalb abgesetzt auf getoentem Grund. */
.rt-muster{background:var(--creme);border-radius:8px;padding:1.1rem 1.3rem;margin:.4rem 0 .8rem}
.rt-muster p{margin-bottom:.65rem}

/* --- Elektronische Widerrufsfunktion (§ 356a BGB) ---
   Echtes Formular, kein Skript: `.wf` gestaltet nur. Der Feldrahmen ist
   bewusst dunkler als die Trennlinie --linie — gemessen 3,74:1 gegen Weiss
   und damit ueber den 3:1, die WCAG 2.1 fuer Bedienelemente verlangt. Der
   Fokusrahmen kommt aus der allgemeinen Regel fuer :focus-visible. */
.wf{background:#fff;border:1px solid var(--linie);border-radius:12px;padding:1.6rem 1.8rem}
.wf-note{font-size:.86rem;color:var(--grau);margin-bottom:1.2rem}
.wf-feld{margin-bottom:1.15rem}
.wf label{display:block;font-weight:600;color:var(--anthrazit);margin-bottom:.3rem}
.wf input[type=text],.wf input[type=email],.wf textarea{display:block;width:100%;font:inherit;
  font-size:1rem;color:var(--text);background:#fff;border:1px solid #8a837a;border-radius:4px;
  padding:.7rem .8rem}
.wf textarea{min-height:7.5rem;resize:vertical}
.wf-hinweis{font-size:.84rem;color:var(--grau);margin-top:.35rem}
.wf-stern{color:var(--corten-tief)}
.wf-optional{font-weight:400;color:var(--grau);font-size:.88rem}
/* Honigtopf: fuer Menschen unsichtbar, fuer Vorleseprogramme abgemeldet und
   nicht anspringbar. Fuellt ein Programm das Feld, verwirft der Endpunkt den
   Eingang. Kein Captcha-Dienst — das waere ein fremder Host.
   Name, Kennung und Beschriftung des Feldes duerfen KEINE bekannte Bedeutung
   tragen (nicht „firma", „telefon", „strasse" ...): die Browser-Autovervoll-
   staendigung fuellt solche Felder auch unsichtbar aus und liesse damit echte
   Widerrufe an der Bot-Abwehr scheitern. Geprueft am 20.08.2026. */
.wf-honig{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
@media(max-width:700px){ .rt,.wf{padding:1.2rem 1.1rem} }
.sumrow .vat-link{color:var(--gold-text);text-decoration:underline}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}


/* ===== K4 · Mobile Navigation (Burger) ===================================
   Off-Canvas von rechts, gleiche Mechanik wie der Warenkorb-Schubkasten,
   aber eine Ebene darunter (70/80 gegen 90/100): Wer aus dem Menue heraus
   den Warenkorb oeffnet, muss ihn davor sehen. Reines Vanilla-JS, keine
   Abhaengigkeit; die Linkliste entsteht datengetrieben aus NAVIGATION. */
.navburger{display:none;align-items:center;justify-content:center;
  width:44px;height:44px;background:none;border:1px solid var(--linie);
  border-radius:5px;padding:0;flex-shrink:0}
.navburger .bal{display:block;width:20px;height:2px;background:var(--anthrazit);
  position:relative;transition:background .2s}
.navburger .bal::before,.navburger .bal::after{content:"";position:absolute;left:0;
  width:20px;height:2px;background:var(--anthrazit);transition:transform .2s,top .2s}
.navburger .bal::before{top:-6px}
.navburger .bal::after{top:6px}
.navburger[aria-expanded="true"]{background:var(--schwarz);border-color:var(--schwarz)}
.navburger[aria-expanded="true"] .bal{background:transparent}
.navburger[aria-expanded="true"] .bal::before{top:0;transform:rotate(45deg);background:var(--gold)}
.navburger[aria-expanded="true"] .bal::after{top:0;transform:rotate(-45deg);background:var(--gold)}
.navburger:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.nav-schleier{position:fixed;inset:0;background:rgba(28,27,24,.45);z-index:70;
  opacity:0;pointer-events:none;transition:opacity .25s}
.nav-schleier.open{opacity:1;pointer-events:auto}
.offcanvas{position:fixed;top:0;right:0;bottom:0;width:320px;max-width:86vw;
  background:var(--grund);z-index:80;transform:translateX(100%);
  transition:transform .28s ease;display:flex;flex-direction:column;
  box-shadow:-8px 0 30px rgba(0,0,0,.18);overflow-y:auto}
.offcanvas.open{transform:translateX(0)}
.offcanvas-h{display:flex;align-items:center;justify-content:space-between;
  padding:1.05rem 1.3rem;background:var(--schwarz);position:sticky;top:0}
.offcanvas-h .t{font-family:var(--serif);font-size:1.15rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--gold)}
.offcanvas-h button{background:none;border:none;color:var(--gold);font-size:1.7rem;
  line-height:1;padding:0 .25rem}
.offcanvas-h button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.offcanvas .haupt a{display:block;padding:.92rem 1.3rem;font-family:var(--serif);
  font-size:1.2rem;color:var(--anthrazit);border-bottom:1px solid var(--linie)}
.offcanvas .haupt a:hover,.offcanvas .haupt a:focus-visible{background:var(--creme);color:var(--gold-text)}
.offcanvas .haupt a.active{color:var(--gold-text);box-shadow:inset 3px 0 0 var(--gold);font-weight:600}
/* Fassung 89: Deko-Gruppen im Burger-Menü — aufklappbar, Marker-Links */
.nav-unter{display:flex;align-items:center}
.nav-unter a{flex:1}
.nav-unter-knopf{border:none;background:none;padding:.92rem 1.15rem;color:var(--grau);font-size:.9rem;cursor:pointer}
.nav-unter-liste a{display:block;padding:.55rem 1.3rem .55rem 2.2rem;font-size:.9rem;color:var(--anthrazit)}
.nav-unter-liste a:hover,.nav-unter-liste a:focus-visible{background:var(--creme);color:var(--gold-text)}
.offcanvas .dienst{padding:1.2rem 1.3rem 1.8rem}
.offcanvas .dienst h2{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grau);font-weight:700;margin-bottom:.55rem}
.offcanvas .dienst a{display:block;padding:.34rem 0;font-size:.92rem;color:var(--gold-text)}
body.nav-offen{overflow:hidden}

/* ===== K5 · Nach-oben-Schaltflaeche ======================================
   Ebene 60: ueber dem Inhalt und dem klebenden Kopf (50), aber unter dem
   Menue-Schleier (70), dem Warenkorb (90/100), der Meldung (120) und der
   Bildansicht (130). Sie darf nie ueber einem geoeffneten Overlay stehen. */
.nachoben{position:fixed;right:1.15rem;bottom:1.15rem;width:46px;height:46px;z-index:60;
  display:flex;align-items:center;justify-content:center;border-radius:50%;
  border:1px solid rgba(155,137,101,.5);background:rgba(28,27,24,.74);
  color:var(--gold);font-size:1.2rem;line-height:1;padding:0;
  opacity:0;pointer-events:none;transform:translateY(10px);
  transition:opacity .25s,transform .25s,background .2s,color .2s}
.nachoben.sichtbar{opacity:1;pointer-events:auto;transform:translateY(0)}
.nachoben:hover{background:var(--schwarz);color:var(--gold-hell)}
.nachoben:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(max-width:700px){ .nachoben{right:.8rem;bottom:.8rem;width:42px;height:42px} }

/* ===== K6 · FAQ und Kontakt ==============================================
   Die FAQ nutzt das vorhandene Akkordeon der Produktseiten (.acc-item);
   hier stehen nur die Abweichungen fuer die Seitendarstellung. */
.faq-block{margin-bottom:2.2rem}
.faq-block > h2{font-family:var(--serif);font-size:1.4rem;font-weight:500;
  color:var(--anthrazit);padding-bottom:.5rem;border-bottom:2px solid var(--gold);
  margin-bottom:.2rem}
.faq-block .acc-q{font-size:.98rem}
/* --- Meldungen der Formulare (Fassung 59) -------------------------------
   Bestaetigung und Fehler erscheinen im Seitenlayout, nicht mehr auf einer
   eigenen, schmucklosen PHP-Seite. Gleiche Anmutung wie die Rechtstextkarte:
   weisse Flaeche, Serifenueberschrift, farbige Kante links. */
.fm-meldung{border-radius:10px;padding:1.25rem 1.45rem;margin-bottom:1.1rem;line-height:1.68}
.fm-meldung h2{font-family:var(--serif);font-size:1.35rem;font-weight:500;margin-bottom:.55rem}
.fm-meldung p{margin-bottom:.55rem}
.fm-meldung p:last-child{margin-bottom:0}
.fm-meldung:focus{outline:2px solid var(--gold);outline-offset:3px}
.fm-erfolg{background:#fff;border:1px solid var(--linie);box-shadow:inset 4px 0 0 var(--gold)}
.fm-erfolg h2{color:var(--anthrazit)}
.fm-fehler{background:#fdf4f3;border:1px solid #e7bcb6;box-shadow:inset 4px 0 0 var(--rot)}
.fm-fehler h2{color:#8f2f28}
.wf button[disabled]{opacity:.6}
.kontakt-hinweis{font-size:.86rem;color:var(--grau);margin-top:1.1rem;line-height:1.6}
.rt .kontakt-termin{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.2rem}
.rt .kontakt-termin a{display:inline-flex;align-items:center;min-height:44px;padding:.45rem 1rem;border:1px solid var(--gold);border-radius:3px;white-space:nowrap;text-decoration:none;font-weight:600}
.kontakt-hinweis a{color:var(--gold-text);text-decoration:underline}

/* Individualmass-Anfrage (Fassung 97): Ausloeser auf der Heimdall-Seite und
   Bottom-Sheet. Mobile-first (Geraetebefund: 88 % der Klicks mobil): der
   Ausloeser volle Breite und mindestens 48 px hoch (Daumenzone), die
   Eingaben mindestens 16 px Schrift, damit iOS beim Fokus nicht zoomt.
   Das Sheet kommt von unten (90 % Hoehe), der Senden-Knopf bleibt per
   sticky am unteren Rand sichtbar. Desktop ab 768 px: dasselbe Sheet als
   zentrierter Dialog, hoechstens 480 px breit. z-index 260 — ueber dem
   Zoom-Overlay (200), das Sheet liegt immer zuoberst. */
.masse-ausloeser{display:block;width:100%;min-height:48px;margin:.9rem 0 .2rem;padding:.8rem 1rem;background:#fff;border:1px solid var(--gold);border-radius:6px;font-size:1rem;color:var(--anthrazit);text-align:left;cursor:pointer}
.masse-ausloeser b{color:var(--gold-text)}
.masse-ausloeser:hover{background:var(--creme)}
.masse-deck{position:fixed;inset:0;background:rgba(28,27,24,.55);z-index:260;display:flex;align-items:flex-end;justify-content:center}
.masse-sheet{background:#fff;width:100%;max-height:90vh;border-radius:14px 14px 0 0;display:flex;flex-direction:column;overflow:hidden}
.masse-griff{flex:0 0 auto;padding:.55rem 0 .25rem}
.masse-griff span{display:block;width:44px;height:4px;border-radius:2px;background:#d8d2c6;margin:0 auto}
.masse-kopf{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:.2rem 1.1rem .6rem;border-bottom:1px solid var(--linie)}
.masse-kopf h2{font-family:var(--serif);font-size:1.3rem;font-weight:500}
.masse-x{background:none;border:none;font-size:1.7rem;line-height:1;padding:.4rem .6rem;cursor:pointer;color:var(--grau)}
.masse-rumpf{flex:1 1 auto;overflow-y:auto;padding:1rem 1.1rem 0;-webkit-overflow-scrolling:touch}
.masse-rumpf .wf-feld input,.masse-rumpf .wf-feld textarea{font-size:16px}
.masse-zeile{display:flex;gap:.8rem}
.masse-zeile .wf-feld{flex:1 1 0}
.masse-var-opts{display:flex;gap:.8rem}
.masse-var{flex:1 1 0;display:flex;align-items:center;justify-content:center;gap:.5rem;min-height:48px;border:1px solid var(--linie);border-radius:6px;padding:.55rem .6rem;font-size:.95rem;cursor:pointer;text-align:center}
.masse-var input{accent-color:var(--gold);margin:0}
.masse-var.aktiv{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:var(--creme)}
.masse-fuss{position:sticky;bottom:0;background:#fff;padding:.8rem 0 1rem;border-top:1px solid var(--linie);margin-top:.6rem}
.masse-fuss .btn-gold{width:100%;min-height:48px}
.masse-rumpf .fm-meldung{margin-top:.4rem}
@media (min-width:768px){
  .masse-deck{align-items:center;padding:2rem}
  .masse-sheet{max-width:480px;max-height:85vh;border-radius:14px}
}

/* Versand-Bar */
.shipbar{background:var(--anthrazit);color:#fff;font-size:.8rem}
.shipbar .wrap{max-width:1240px;margin:0 auto;padding:.5rem 1.5rem;display:flex;gap:2rem;justify-content:center;flex-wrap:wrap}
.shipbar span{display:flex;align-items:center;gap:.4rem;opacity:.94}
.shipbar .ic{color:var(--rost-hell)}

/* Header */
header{border-bottom:1px solid var(--linie);position:sticky;top:0;background:#fff;z-index:50}
.nav{max-width:1240px;margin:0 auto;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}
.logo{font-weight:700;font-size:1.3rem;letter-spacing:.14em;color:var(--anthrazit);cursor:pointer;text-transform:uppercase}
.logo b{color:var(--gold);font-weight:700}
.logo .sub{display:block;font-size:.52rem;letter-spacing:.34em;color:var(--grau);font-weight:400;margin-top:1px}
.nav-menu{display:flex;gap:1.6rem;font-size:.92rem}
.nav-menu a{padding:.3rem 0;border-bottom:2px solid transparent;transition:border-color .2s}
.nav-menu a:hover,.nav-menu a.active{border-color:var(--rost);color:var(--gold-text)}
/* Fassung 89: Aufklappmenü „Deko“ — Hover/Fokus, reines CSS (:focus-within) */
.nav-drop{position:relative;display:inline-block}
/* Fassung 91: der Ausloeser-<a> war display:inline — vertikales Padding und
   die 2-px-Unterstreichungskante zaehlen bei Inline-Boxen nicht in die
   Zeilenbox, „Deko" sass ~2 px hoeher und die Unterstreichung ~9 px ueber
   den Nachbarn (Befund FL 12.09.2026, Desktop). Als Block bildet er dieselbe
   Box wie die Nachbar-Links; deren Regeln (.nav-menu a) galten schon immer. */
.nav-drop > a{display:block}
/* Fassung 93: Ratgeber-Beitraege — Textspalte und Uebersichtskarten */
.rg-text{background:#fff;border:1px solid var(--linie);border-radius:12px;padding:1.4rem 1.5rem;font-size:.97rem;color:#4a4640;line-height:1.7}
.rg-text h2{font-family:var(--serif);font-size:1.45rem;color:var(--anthrazit);margin:1.3rem 0 .5rem}
.rg-text h2:first-child{margin-top:0}
.rg-text p{margin:.65rem 0}
.rg-text ul{margin:.6rem 0;padding-left:1.2rem}
.rg-text li{margin:.3rem 0}
.rg-text>h3{font-family:var(--serif);font-size:1.15rem;color:var(--anthrazit);margin:1.1rem 0 .35rem;line-height:1.35}
.rg-text a{color:var(--gold-text);text-decoration:underline}
.rg-karten{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem;margin-bottom:1.5rem}
.rg-karte{display:flex;flex-direction:column;background:#fff;border:1px solid var(--linie);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit}
.rg-karte .bildfeld{aspect-ratio:16/10;overflow:hidden;background:var(--creme)}
.rg-karte .bildfeld img{width:100%;height:100%;object-fit:cover;display:block}
.rg-karte h3{font-family:var(--serif);font-size:1.25rem;color:var(--anthrazit);margin:0 0 .35rem}
/* Fassung 103: Patina-Abschnitt (Stufen untereinander, ab 720 px zwei Spalten; Farbfeld oder Foto im selben 3:2-Rahmen) und Bildfigur im Beitragstext */
.rg-patina{margin:1.3rem 0 0}
.rg-patina-hinweis{font-size:.8rem;color:var(--grau);margin:0 0 .6rem}
.rg-patina-stufen{display:grid;grid-template-columns:1fr;gap:1rem}
.rg-patina-stufe{background:var(--creme);border-radius:10px;overflow:hidden}
.rg-patina-bild{aspect-ratio:3/2;background:var(--sand)}
.rg-patina-bild picture,.rg-patina-bild .rg-patina-feld,.rg-patina-bild img{display:block;width:100%;height:100%}
.rg-patina-stufe h3{font-family:var(--serif);font-size:1.25rem;color:var(--anthrazit);margin:.8rem 1rem 0}
.rg-patina-vermerk{display:block;font-size:.78rem;color:var(--gold-tief);margin:.15rem 1rem 0}
.rg-patina-stufe p{margin:.4rem 1rem 1rem;font-size:.92rem}
.rg-patina-schluss{margin-top:1rem;font-weight:600}
.rg-figur{margin:1rem 0}
.rg-figur img.bild{height:auto;border-radius:10px}
.rg-figur figcaption{font-size:.8rem;color:var(--grau);margin-top:.35rem}
@media(min-width:720px){ .rg-patina-stufen{grid-template-columns:1fr 1fr} }
/* Fassung 136: Patina-Tagebuch — Eintraege als Ratgeber-Textkarten, Bilder 4:3 untereinander (ab 720 px zwei Spalten), Sprungleiste wischbar mit 44 px Tippflaeche; keine neue Schrift, keine neue Farbe */
.rg-tb-eintraege{display:grid;gap:1rem;margin-top:1rem}
.rg-tb-eintrag{scroll-margin-top:5.5rem}
.rg-tb-tag{font-size:.8rem;color:var(--gold-tief);margin:0 0 .2rem}
.rg-text .rg-tb-tag{margin:0 0 .2rem}
.rg-tb-bilder{display:grid;grid-template-columns:1fr;gap:.8rem;margin:.8rem 0}
.rg-tb-figur{margin:0}
.rg-tb-bild{display:block;width:100%;padding:0;border:0;background:var(--sand);border-radius:10px;overflow:hidden;cursor:zoom-in;aspect-ratio:4/3}
.rg-tb-bild picture,.rg-tb-bild img{display:block;width:100%;height:100%;object-fit:cover}
.rg-tb-figur figcaption{font-size:.8rem;color:var(--grau);margin-top:.35rem}
.rg-tb-vergleich{margin-top:1rem}
.rg-tb-vergleich .rg-tb-bilder{margin:0}
.rg-tb-sprung{display:flex;gap:.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;margin:1rem 0 0;padding:.1rem 0 .3rem}
.rg-tb-chip{flex:0 0 auto;scroll-snap-align:start;display:inline-flex;align-items:center;min-height:44px;min-width:44px;padding:0 1rem;border:1px solid var(--linie);border-radius:22px;background:#fff;color:var(--anthrazit);font-size:.9rem;text-decoration:none;white-space:nowrap}
.rg-tb-wetter{font-size:.85rem;color:var(--grau)}
.rg-tb-methode{background:#fff;border:1px solid var(--linie);border-radius:12px;padding:0 1.5rem;margin-top:1rem;font-size:.95rem;color:#4a4640;line-height:1.7}
.rg-tb-methode summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-family:var(--serif);font-size:1.25rem;color:var(--anthrazit)}
/* Fassung 138: als Aufklappfeld erkennbar — das Zeichen des Shop-Akkordeons (.acc-q .pm), rechts; offen um 45° gedreht */
.rg-tb-methode summary{list-style:none;justify-content:space-between;gap:1rem;margin:0 -1.5rem;padding:.35rem 1.5rem;border-radius:12px}
.rg-tb-methode summary::-webkit-details-marker{display:none}
.rg-tb-methode summary::after{content:'+';flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:1px solid var(--gold-hell);border-radius:50%;color:var(--gold-text);font-family:var(--f);font-size:1.3rem;line-height:1;transition:transform .2s,background .2s}
.rg-tb-methode summary:hover{background:var(--creme)}
.rg-tb-methode summary:hover::after,.rg-tb-methode summary:focus-visible::after{background:#fff}
.rg-tb-methode[open] summary{border-radius:12px 12px 0 0;border-bottom:1px solid var(--linie);margin-bottom:.4rem}
.rg-tb-methode[open] summary::after{transform:rotate(45deg)}
/* Fassung 138: .hinweis (weiter hinten im Stil) setzte margin-top 0 — der Kasten klebte am Aufklappfeld */
.hinweis.rg-tb-einordnung{margin:1rem 0 0}
.rg-tb-methode-text{padding-bottom:1rem}
.rg-tb-methode-text p{margin:.65rem 0}
.rg-tb-methode a,.rg-tb-weiter a{color:var(--gold-text);text-decoration:underline}
.rg-tb-einordnung{margin:1rem 0 0}
.rg-tb-weiter{background:#fff;border:1px solid var(--linie);border-radius:12px;padding:1.1rem 1.5rem;margin-top:1rem;font-size:.95rem}
.rg-tb-weiter ul{margin:0;padding-left:1.2rem;line-height:1.7}
.rg-tb-weiter li{margin:.3rem 0}
.rg-tb-h{font-family:var(--serif);font-size:1.25rem;color:var(--anthrazit);margin-bottom:.4rem}
.rg-tb-produkte{margin-top:1.2rem}
.rg-tb-produkte .grid-2{margin:0}
@media(min-width:720px){ .rg-tb-bilder{grid-template-columns:1fr 1fr} }
.nav-drop-menu{display:none;position:absolute;left:0;top:100%;z-index:60;min-width:190px;background:#fff;border:1px solid var(--linie);border-radius:0 0 6px 6px;box-shadow:0 12px 28px rgba(0,0,0,.12);padding:.4rem 0}
.nav-drop-menu a{display:block;padding:.45rem 1.1rem;border-bottom:none;white-space:nowrap}
.nav-drop-menu a:hover,.nav-drop-menu a:focus-visible{background:var(--creme)}
.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{display:block}
.cartbtn{display:flex;align-items:center;gap:.45rem;font-weight:600;color:var(--anthrazit);background:none;border:none;font-size:.95rem;position:relative}
/* Fassung 124: Tippflaeche 44 x 44 auf jeder Breite (bis zur 123 nur unter 360 px) */
.cartbtn{min-width:44px;min-height:44px;justify-content:center;flex-shrink:0}
.cart-count{background:var(--rost);color:#fff;font-size:.7rem;min-width:18px;height:18px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}

/* ===== Fassung 112 · Suche =================================================
   Mobile first: der Tipp auf die Lupe oeffnet ein Vollbild-Overlay, in dem
   das Feld sofort den Fokus hat — die Tastatur kommt ohne zweiten Tipp.
   Ab 1024 px wird daraus ein Aufklappfeld unter der Leiste; die Mechanik
   bleibt dieselbe, nur die Kiste sitzt woanders. Ebenen: Schleier 88,
   Deck 89 — ueber dem Burger-Menue (70/80), unter dem Warenkorb (90/100).
   Der Abstand zum haftenden Kopf steht in --suche-top und wird beim
   Oeffnen gemessen (sucheAusrichten), wie bei der Deko-Filterleiste. */
.suche-knopf{display:flex;align-items:center;justify-content:center;
  width:44px;height:44px;background:none;border:1px solid var(--linie);
  border-radius:5px;padding:0;flex-shrink:0;color:var(--anthrazit);font-size:1.05rem;cursor:pointer}
.suche-knopf:hover{border-color:var(--gold)}
.suche-knopf:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.suche-schleier{position:fixed;inset:0;background:rgba(28,27,24,.45);z-index:88;
  opacity:0;pointer-events:none;transition:opacity .2s}
.suche-schleier.open{opacity:1;pointer-events:auto}
.suche-deck{position:fixed;inset:0;z-index:89;background:var(--grund);
  display:flex;flex-direction:column}
.suche-deck[hidden]{display:none}
.suche-kopf{display:flex;align-items:center;gap:.6rem;padding:.8rem 1rem;
  border-bottom:1px solid var(--linie);background:#fff;flex-shrink:0}
.suche-feld{flex:1;min-width:0;height:44px;padding:0 .8rem;font-size:1rem;
  font-family:inherit;color:var(--anthrazit);background:#fff;
  border:1px solid var(--linie);border-radius:6px}
.suche-feld:focus{outline:2px solid var(--gold);outline-offset:1px}
.suche-feld::-webkit-search-cancel-button{cursor:pointer}
.suche-x{width:44px;height:44px;flex-shrink:0;background:none;border:none;
  color:var(--anthrazit);font-size:1.7rem;line-height:1;cursor:pointer}
.suche-x:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.suche-liste{flex:1;overflow-y:auto;padding:.4rem 0 1.2rem;-webkit-overflow-scrolling:touch}
.suche-gruppe{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--grau);padding:.9rem 1rem .35rem;margin:0}
.suche-treffer{display:flex;align-items:center;gap:.8rem;padding:.55rem 1rem;
  min-height:44px;text-decoration:none;color:inherit}
.suche-treffer:hover,.suche-treffer:focus-visible{background:var(--creme);outline:none}
.suche-treffer:focus-visible{box-shadow:inset 3px 0 0 var(--gold)}
.suche-bild{width:64px;height:64px;flex-shrink:0;border-radius:6px;overflow:hidden;
  background:var(--sand)}
/* Artikel ohne Foto (die Kategorieseiten zeigen dort eine CSS-Silhouette):
   statt eines leeren Kastens derselbe Rostverlauf wie in gartenPlaceholder —
   die Zeile bleibt eine Zeile und kippt nicht aus dem Raster. */
.suche-bild:empty{background:linear-gradient(160deg,#8a4a2a,#5e3018)}
.suche-bild picture,.suche-bild img{display:block;width:100%;height:100%;object-fit:cover}
.suche-text{min-width:0}
.suche-titel{display:block;font-weight:600;font-size:.95rem;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suche-unter{display:block;font-size:.8rem;color:var(--grau);margin-top:.15rem}
.suche-preis{color:var(--gold-text);font-weight:600}
.suche-alle{display:block;padding:.85rem 1rem;min-height:44px;font-size:.92rem;
  font-weight:600;color:var(--gold-text);text-decoration:underline}
.suche-alle:hover,.suche-alle:focus-visible{background:var(--creme);outline:none}
.suche-hinweis{padding:.9rem 1rem;font-size:.92rem;color:var(--grau);margin:0}
.suche-chips{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 1rem 1rem}
.suche-chip{display:inline-flex;align-items:center;min-height:36px;padding:.35rem .8rem;
  font-size:.85rem;border:1px solid var(--linie);border-radius:18px;
  color:var(--gold-text);text-decoration:none;background:#fff}
.suche-chip:hover,.suche-chip:focus-visible{border-color:var(--gold);background:var(--creme);outline:none}
/* Ergebnisseite (/kategorie?q=…) — dieselben Zeilen, nur im Seitenrahmen.
   Eigene Klasse, weil .suche-liste im Deck scrollt und den Rest der Hoehe
   nimmt; hier soll die Liste einfach mitwachsen. */
.suche-seite-kopf .suche-zurueck{color:var(--gold-text);text-decoration:underline}
.suche-seite-liste{max-width:720px;margin:0 0 2rem;background:#fff;
  border:1px solid var(--linie);border-radius:10px;overflow:hidden}
.suche-seite-liste .suche-gruppe{border-top:1px solid var(--linie);padding-top:.8rem}
.suche-seite-liste .suche-gruppe:first-child{border-top:none}
@media(min-width:1024px){
  .suche-schleier{background:rgba(28,27,24,.18)}
  .suche-deck{inset:auto;top:var(--suche-top,64px);right:1.5rem;
    width:min(520px,calc(100vw - 3rem));max-height:min(70vh,560px);
    border:1px solid var(--linie);border-radius:0 0 10px 10px;
    box-shadow:0 18px 40px rgba(0,0,0,.16)}
  .suche-kopf{border-radius:0}
}

/* Breadcrumb */
.crumb{max-width:1240px;margin:0 auto;padding:1rem 1.5rem .2rem;font-size:.82rem;color:var(--grau)}
.crumb a{cursor:pointer}
.crumb a:hover{color:var(--gold-text)}
.crumb .sep{margin:0 .35rem}

/* Badges */
.badge{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:600;padding:.28rem .6rem;border-radius:3px;letter-spacing:.02em;vertical-align:middle}
.badge-de{background:var(--rost);color:#fff}
.badge-save{background:var(--gruen);color:#fff}
.badge-corten{background:var(--anthrazit);color:var(--rost-hell)}
.badge-disc{border:1.5px solid var(--rost);color:var(--gold-text);background:transparent;font-size:.68rem;padding:.12rem .4rem}
.tag-ground{display:inline-block;font-size:.78rem;font-weight:600;padding:.35rem .8rem;border-radius:4px}
.tag-wiese{background:#e8efe4;color:#4b6b3a}
.tag-terrasse{background:#eae6df;color:#6b5230}
.tag-universal{background:#f0ebe0;color:#7c6d4e}

/* Produkt-Layout */
.wrap{max-width:1240px;margin:0 auto;padding:0 1.5rem}
.product{display:grid;grid-template-columns:1.1fr 1fr;gap:3rem;align-items:start;padding:1rem 0 3rem}
/* Fassung 88: Grid-Items melden mit min-width:auto die Mindestbreite ihres
   Inhalts ans Raster — die „Passt dazu"-Reihe (4 Karten à 156 px) machte die
   Spalte .buy auf dem Telefon ~660 px breit, die ganze Seite lief rechts
   hinaus (Befund FL 12.09.2026, iPhone). Mit min-width:0 scrollt der
   overflow-x-Scroller INNERHALB der Spalte; trifft .gallery und .buy. */
.product > *{min-width:0}
.gallery .main{aspect-ratio:4/5;border-radius:6px;overflow:hidden;background:linear-gradient(160deg,#8a4a2a,#5e3018);display:flex;align-items:center;justify-content:center;position:relative}
.gallery .main .panel{width:52%;height:82%;background:repeating-linear-gradient(112deg,rgba(0,0,0,.06) 0 3px,transparent 3px 11px),linear-gradient(160deg,#b5673a,#8f4d2b 42%,#6d3a20);box-shadow:0 24px 45px rgba(0,0,0,.35),inset 0 0 55px rgba(0,0,0,.28);border-radius:2px;position:relative}
.gallery .main .panel.multi{width:74%;display:flex;gap:4%;background:none;box-shadow:none}
.gallery .main .panel.multi i{flex:1;background:linear-gradient(160deg,#b5673a,#8f4d2b 42%,#6d3a20);box-shadow:0 18px 30px rgba(0,0,0,.3);border-radius:2px}
.gallery .main .panel::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 32% 22%,rgba(0,0,0,.22),transparent 42%);mix-blend-mode:overlay}
.gallery .main.small .panel{width:38%;height:52%}
.gallery .cap{position:absolute;bottom:12px;left:12px;background:rgba(44,44,44,.85);color:#fff;font-size:.72rem;padding:.3rem .6rem;border-radius:3px}
.gallery .thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:.55rem;margin-top:.7rem}
.gallery .thumb{aspect-ratio:1;border-radius:4px;border:2px solid var(--linie);background:linear-gradient(160deg,#a05a34,#6d3a20);cursor:pointer}
.gallery .thumb.scene{background:linear-gradient(to bottom,#cfe0d8 55%,#7fa07a 55%)}
.gallery .thumb.ph{background:var(--sand);display:flex;align-items:center;justify-content:center;color:var(--grau);font-size:.62rem;text-align:center}
.gallery .thumb.active{border-color:var(--rost)}

.buy h1{font-family:var(--serif);font-size:2.3rem;font-weight:500;color:var(--anthrazit);line-height:1.15;margin-bottom:.6rem}
.buy .badges-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.9rem}
.rating{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.86rem;color:var(--grau)}
.rating .stars{color:#f5a623;letter-spacing:1px}
.rating.empty .stars{color:var(--linie)}
.review-seal{display:inline-block;margin-top:.6rem;font-size:.8rem;color:var(--gold-text);text-decoration:none;border:1px solid var(--linie);padding:.3rem .6rem;border-radius:6px}
.review-seal-slot:empty{display:none}
/* Fassung 111: Bewertungen — mobile-first (375 px). Die Kuerzung auf drei Karten
   ist eine Klasse an der Liste (bw-gekuerzt), kein Nachladen; die Zahl 3 steht
   hier und in BW_ERST_SICHTBAR und wird von harness_111 gegeneinander geprueft. */
.bw-sprung{display:inline-flex;align-items:center;gap:.5rem;color:var(--grau);text-decoration:none;min-height:44px}
.bw-sterne{display:inline-flex;align-items:center;gap:1px;line-height:0}
.bw-stern{display:block}
.bw-kopf{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}
.bw-schnitt{display:flex;align-items:baseline;gap:.35rem}
.bw-schnitt b{font-family:var(--serif);font-size:2.4rem;font-weight:500;color:var(--anthrazit);line-height:1}
.bw-schnitt span{font-size:.85rem;color:var(--grau)}
.bw-zahl{font-size:.85rem;color:var(--grau);margin-top:.25rem}
.bw-balken{list-style:none;margin:0 0 1.2rem;padding:0;display:flex;flex-direction:column;gap:.3rem}
.bw-balken li{display:flex;align-items:center;gap:.45rem;font-size:.8rem;color:var(--grau)}
.bw-b-l{width:.9em;text-align:right}
.bw-b-s{flex:1;height:8px;background:var(--sand);border-radius:4px;overflow:hidden}
.bw-b-s i{display:block;height:100%;background:var(--gold);border-radius:4px}
.bw-b-n{width:2.2em;text-align:right;font-variant-numeric:tabular-nums}
.bw-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.1rem}
.bw-liste.bw-gekuerzt .bw-karte:nth-child(n+4){display:none}
.bw-karte{border-top:1px solid var(--linie);padding-top:.9rem}
.bw-titel{font-weight:600;color:var(--anthrazit);margin:.35rem 0 .15rem}
.bw-text{font-size:.92rem;color:#555;margin:.2rem 0;white-space:pre-line}
.bw-text.bw-kurz{display:-webkit-box;-webkit-line-clamp:6;-webkit-box-orient:vertical;overflow:hidden}
.bw-mehr{background:none;border:none;color:var(--gold-text);font-size:.88rem;font-weight:600;padding:.7rem 0;min-height:44px;text-align:left}
.bw-alle{display:block;width:100%;margin-top:1.2rem;min-height:44px;padding:.7rem 1rem;background:none;border:1px solid var(--linie);border-radius:6px;color:var(--gold-text);font-size:.9rem;font-weight:600}
.bw-fotos{display:flex;gap:.6rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;margin:.7rem 0 .2rem;padding-bottom:.3rem;scrollbar-width:thin}
.bw-fotos img{flex:0 0 46vw;max-width:180px;height:140px;object-fit:cover;border-radius:6px;scroll-snap-align:start;background:var(--creme)}
.bw-fuss{font-size:.8rem;color:var(--grau);margin-top:.5rem}
.bw-ok{color:var(--gold-text)}
/* Google-Bewertungen zum Shop (Fassung 143): eine Zeile unter dem Kaufen-Knopf, im Warenkorb ueber
   „Zur Kasse“ und auf der Startseite. Einzeilig, Tippflaeche mindestens 44 px, Schrift wie der
   Kurztext; Sterne wie Judge.me (Gold, Inline-SVG). Kein Google-Logo, keine Google-Farben. */
.gb-zeile{margin:.1rem 0 .5rem}
.gb-knopf{display:flex;align-items:center;gap:.45rem;max-width:100%;min-height:44px;padding:.3rem 0;background:none;border:none;font:inherit;font-size:.95rem;line-height:1.3;color:#555;text-align:left;cursor:pointer}
.gb-knopf .bw-sterne{flex-shrink:0}
.gb-t{min-width:0}
.gb-t b{color:var(--anthrazit)}
.gb-pfeil{flex-shrink:0;color:var(--gold-text);font-size:1.25rem;line-height:1}
.gb-knopf:hover .gb-t{text-decoration:underline;text-underline-offset:2px}
.gb-knopf:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.drawer-foot .gb-zeile{margin:.3rem 0 0}
/* Schmal (gemessen 04.10.2026, Arial = Helvetica-Masse): in Fliesstextgroesse braucht die Zeile 368 px, die Kaufspalte hat
   bei 375 px 327 px, der Warenkorb rund 303 px. Darum hier die Groesse des Vertrauensblocks (.85rem) und kleinere Sterne,
   im Warenkorb die seiner Zeilen (.8rem). Passt es trotzdem nicht (320 px), bricht der Text um statt abgeschnitten zu werden. */
@media(max-width:420px){.gb-knopf{font-size:.85rem;gap:.3rem}.gb-knopf .bw-stern{width:13px;height:13px}}
.drawer-foot .gb-knopf{font-size:.8rem;gap:.3rem}.drawer-foot .gb-knopf .bw-stern{width:12px;height:12px}
.gb-start{background:#fff;border-bottom:1px solid var(--linie)}
.gb-start .wrap{max-width:720px;padding:1.4rem 1.5rem 1.1rem;text-align:center}
.gb-start .gb-knopf{margin:0 auto}
.gb-zitat{margin:.4rem 0 0}
.gb-zitat p{font-family:var(--serif);font-size:1.3rem;line-height:1.45;color:var(--anthrazit)}
.gb-zitat figcaption{font-size:.85rem;color:var(--grau);margin-top:.35rem}
.gb-hinweis{font-size:.78rem;color:var(--grau);line-height:1.5;margin-top:.8rem}
.gb-link{display:inline-flex;align-items:center;min-height:44px;color:var(--gold-text);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.gb-schnitt{display:flex;align-items:center;gap:.5rem;font-size:.95rem;color:#555;margin-bottom:.6rem}
.gb-schnitt b{color:var(--anthrazit)}
.gb-liste{list-style:none;margin:0;padding:0}
.gb-karte{border-top:1px solid var(--linie);padding:.9rem 0}
.gb-name{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.gb-name b{color:var(--anthrazit)}
.gb-karte p{font-size:.95rem;color:#555;margin-top:.35rem}
.gb-fuss{padding:0 0 1.2rem}
/* Das Akkordeon deckelt seinen Inhalt bei 900 px — mit zwoelf Karten (rund
   1200 px) waere der Abschnitt abgeschnitten gewesen, ohne dass man es sieht:
   overflow ist hidden. Der Block steht im Stilblock VOR `.acc-item.open
   .acc-a`, deshalb reicht gleiche Spezifitaet nicht — die Regel nennt
   ausdruecklich DREI Klassen und gewinnt damit unabhaengig von der
   Reihenfolge. Im Browser nachgemessen am 19. September 2026. */
.acc-item.bw-item.open .acc-a{max-height:none}
@media(min-width:900px){
  .bw-liste{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem 1.6rem}
  .bw-fotos img{flex:0 0 150px}
}

.price-block{padding:1.1rem 0;border-top:1px solid var(--linie);border-bottom:1px solid var(--linie);margin-bottom:1.2rem}
.price-row{display:flex;align-items:baseline;gap:.7rem;flex-wrap:wrap}
.price-now{font-size:2.2rem;font-weight:700;color:var(--anthrazit)}
.price-per{font-size:.9rem;color:var(--grau);font-weight:400}
.price-old{font-size:1.15rem;color:var(--grau);text-decoration:line-through}
.price-vat{font-size:.82rem;color:var(--grau);margin-top:.35rem}
.price-save-line{color:var(--gruen-tief);font-weight:600;font-size:.9rem;margin-top:.4rem}

.short-desc{font-size:.95rem;color:#555;margin-bottom:1.2rem}
.short-desc b{color:var(--anthrazit)}

/* Staffel */
.staffel{border:1px solid var(--linie);border-radius:6px;overflow:hidden;margin-bottom:1.3rem}
.staffel-h{background:var(--creme);padding:.6rem 1rem;font-size:.82rem;font-weight:600;color:var(--anthrazit);letter-spacing:.03em}
.staffel table{width:100%;border-collapse:collapse;font-size:.88rem}
.staffel td{padding:.55rem 1rem;border-top:1px solid var(--linie)}
.staffel td:nth-child(2){text-align:right;font-weight:600;color:var(--anthrazit)}
.staffel td:nth-child(3){text-align:right;width:70px}
.staffel tr.active{background:#f7efe9}
.staffel tr.active td:first-child{box-shadow:inset 3px 0 0 var(--rost)}

/* Menge + CTA */
.qty-row{display:flex;gap:.8rem;margin-bottom:.7rem}
.qty{display:flex;align-items:center;border:1px solid var(--linie);border-radius:4px;overflow:hidden}
.qty button{width:44px;height:54px;border:none;background:var(--creme);font-size:1.3rem;color:var(--gold-text)}
.qty button:hover{background:var(--sand)}
.qty input{width:50px;height:54px;border:none;text-align:center;font-size:1.05rem;font-weight:600;-moz-appearance:textfield}
.qty input::-webkit-outer-spin-button,.qty input::-webkit-inner-spin-button{-webkit-appearance:none}
.btn-cart{flex:1;background:var(--rost);color:#fff;border:none;border-radius:4px;font-size:1.05rem;font-weight:600;transition:background .2s}
.btn-cart:hover{background:var(--rost-tief)}
.btn-cart:active{transform:translateY(1px)}
.line-total{font-size:.9rem;color:var(--grau);margin-bottom:1.3rem}
.line-total b{color:var(--anthrazit);font-size:1.05rem}

.delivery{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--gruen-tief);font-weight:600;margin-bottom:1.3rem}
.delivery .dot{width:9px;height:9px;border-radius:50%;background:var(--gruen);box-shadow:0 0 0 0 rgba(76,175,80,.5);animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(76,175,80,.5)}70%{box-shadow:0 0 0 8px rgba(76,175,80,0)}100%{box-shadow:0 0 0 0 rgba(76,175,80,0)}}
.delivery .lz{color:var(--grau);font-weight:400}
/* Fassung 108: Bestellschluss-Zeile unter der Lieferzeit (bricht in die zweite Zeile, unter den Text) und die Lager-Zeile der Produktkarte */
.delivery{flex-wrap:wrap}.delivery .bestellschluss{flex-basis:100%;margin-left:calc(9px + .5rem);font-weight:400;color:var(--grau);font-size:.85rem}
.card-lager{color:var(--gruen-tief);margin-bottom:.35rem}
.lz-wahl{display:inline-grid}div.lz-wahl{display:grid}.lz-wahl>.lz-fall{grid-area:1/1;min-width:0}.lz-wahl>.lz-aus{visibility:hidden}

.trustlist{list-style:none;border:1px solid var(--linie);border-radius:6px;overflow:hidden}
.trustlist li{display:flex;align-items:center;gap:.7rem;padding:.7rem 1rem;font-size:.86rem;border-bottom:1px solid var(--linie)}
.trustlist li:last-child{border-bottom:none}
.trustlist .ic{color:var(--rost);width:20px;text-align:center;flex-shrink:0}
.trustlist b{color:var(--anthrazit)}
/* Vertrauensblock unter dem Warenkorb-Knopf (Fassung 81): vier Zeilen aus EINER
   Funktion (vertrauensblock), Trennlinie oben, eine Stufe unter Fliesstext,
   Farben aus den Tokens, Symbole als Inline-SVG in currentColor. Die Breite
   folgt der .buy-Spalte — auf dem Telefon (K3, ab 900 px einspaltig) also die
   volle Breite. */
.vertrauensblock{border-top:1px solid var(--linie);padding-top:.9rem;margin:0 0 1.3rem}
.vertrauensblock ul{list-style:none;margin:0;padding:0}
.vertrauensblock li{display:flex;align-items:flex-start;gap:.65rem;padding:.3rem 0;font-size:.86rem;line-height:1.55;color:var(--grau)}
.vertrauensblock b{color:var(--anthrazit);font-weight:600}
.vertrauensblock a{color:var(--gold-text);text-decoration:underline;text-underline-offset:2px}
.vertrauensblock .vb-ic{flex-shrink:0;width:18px;height:18px;margin-top:.2rem;color:var(--rost)}
.vertrauensblock .vb-ic svg{display:block;width:18px;height:18px}
/* "Passt dazu"-Reihe (Fassung 92): 3-4 fest gepflegte Ergaenzungen aus
   PASST_ZU_JE_ARTIKEL (Literal aus werkzeuge/passt_zu_92.py), EINE
   Renderfunktion (passtDazu), als eigener Abschnitt UNTER der
   Produktbeschreibung — oberhalb der Falz aendert sich nichts (Z-C).
   Karten wie die Kategorie-Kacheln: Hauptbild, Ausfuehrungs-Badge, Name,
   "ab"-Preis B, Warenkorb-Knopf. Desktop EINE Reihe mit 3-4 Karten
   (gleiche Breiten aus dem Raster); unter 200 px je Karte rollt die Reihe
   horizontal INNERHALB des Abschnitts — kein Seitenueberlauf (Z-G).
   Tokens, keine Fremdressource. */
.passt-dazu{border-top:1px solid var(--linie);padding-top:1.3rem;margin:2rem 0 1.5rem}
.passt-dazu .pd-h{font-family:var(--serif);font-weight:500;font-size:1.5rem;color:var(--anthrazit);margin-bottom:.9rem}
.passt-dazu .pd-reihe{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(200px,1fr);gap:1rem;overflow-x:auto;padding-bottom:.3rem}
.passt-dazu .pd-karte{border:1px solid var(--linie);border-radius:6px;background:#fff;padding:.8rem;display:flex;flex-direction:column;gap:.45rem;min-width:0}
.passt-dazu .pd-bild{aspect-ratio:4/3;display:flex;align-items:center;justify-content:center;overflow:hidden;border-radius:4px;background:var(--creme)}
.passt-dazu .pd-bild picture{width:100%;height:100%;display:block}
.passt-dazu .pd-bild img{width:100%;height:100%;object-fit:cover}
.passt-dazu .pd-bild img.contain{object-fit:contain}
.passt-dazu .pd-link{display:flex;flex-direction:column;gap:.45rem;color:inherit;text-decoration:none}
.passt-dazu .pd-link:hover .pd-name,.passt-dazu .pd-link:focus .pd-name{text-decoration:underline}
.passt-dazu .pd-tag .badge{font-size:.62rem}
.passt-dazu .pd-name{font-size:.9rem;line-height:1.35;font-weight:600;color:var(--anthrazit)}
.passt-dazu .pd-preis{margin-top:auto;font-weight:700;font-size:1rem;color:var(--anthrazit)}
/* Fassung 104: Bildblock „Befestigung & Montage" — mobil eine querscrollbare Leiste (scroll-snap, Kachel 72 vw, feste Höhe, object-fit: cover), ab 768 px vier Spalten */
.montage{border-top:1px solid var(--linie);padding-top:1.3rem;margin:2rem 0 1.5rem}
.montage-h{font-family:var(--serif);font-weight:500;font-size:1.5rem;color:var(--anthrazit);margin:0 0 .9rem}
.montage-reihe{display:flex;gap:.8rem;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:.4rem;scrollbar-width:thin}
.montage-kachel{flex:0 0 72vw;max-width:340px;margin:0;scroll-snap-align:start}
.montage-bild{display:block;width:100%;height:260px;padding:0;border:none;border-radius:6px;overflow:hidden;background:var(--creme);cursor:zoom-in}
.montage-bild:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.montage-bild img{display:block;width:100%;height:100%;object-fit:cover}
.montage-text{font-size:.9rem;color:var(--grau);margin:.8rem 0 0;max-width:70ch}
@media(min-width:768px){
  /* Fassung 130: sechs Kacheln -> drei Spalten, zwei volle Reihen */
  .montage-reihe{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;overflow:visible;scroll-snap-type:none}
  .montage-kachel{flex:none;max-width:none}
  .montage-bild{height:300px}
}
.passt-dazu .pd-add{padding:.55rem .7rem;font-size:.86rem;border:1px solid var(--rost);background:none;color:var(--rost);border-radius:4px;cursor:pointer}
.passt-dazu .pd-add:hover{background:var(--rost);color:#fff}
.passt-dazu .pd-im-korb{font-size:.82rem;color:var(--gruen-tief)}
/* Staffelzeile (Fassung 85): EIN Satz aus STAFFEL unter dem Preisblock */
.staffel-zeile{font-size:.85rem;color:var(--grau);margin:.35rem 0 0}
/* Fassung 89: EINE Hinweiszeile „Auch als Set mit Beleuchtung“ unter dem
   Preis der sechs Hauptartikel — Vorstufe von „Passt dazu“, keine Karte. */
.set-hinweis{font-size:.86rem;color:var(--grau);margin:.45rem 0 0}
.set-hinweis a{color:var(--gold-text);text-decoration:underline}
/* Warenkorb-Checkliste (Fassung 85): zwischen Zeilenliste und Zwischensumme */
.checkliste{border-top:1px solid var(--linie);margin-top:.8rem;padding-top:.8rem}
.checkliste .ck-h{font-weight:600;color:var(--anthrazit);font-size:.92rem;margin-bottom:.5rem}
/* Fassung 95: EINE Zeilenbauform (ck-pos) fuer Checkliste UND den
   Zubehoer-Kasten der Produktseite (zub-liste) — die ck-Regeln haengen
   deshalb nicht mehr am .checkliste-Vorspann; dazu das Vorschaubild
   (ck-bild, 56 px, nie beschnitten). */
.ck-pos{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem;padding:.35rem 0}
.ck-name{font-size:.85rem;font-weight:600;color:var(--anthrazit)}
a.ck-name{display:block;text-decoration:none}
a.ck-name:hover,a.ck-name:focus{text-decoration:underline}
.ck-grund{font-size:.8rem;color:var(--grau)}
.ck-preis{font-size:.8rem;color:var(--grau);margin-top:.15rem}
.ck-add{flex-shrink:0;padding:.4rem .55rem;font-size:.8rem;border:1px solid var(--rost);background:none;color:var(--rost);border-radius:4px;cursor:pointer}
.ck-add:hover{background:var(--rost);color:#fff}
.ck-bild{width:56px;flex-shrink:0;border-radius:4px;overflow:hidden;background:var(--creme)}
.ck-bild picture{display:block}
.ck-bild img{width:56px;height:56px;object-fit:contain;display:block}
.ck-mitte{flex:1;min-width:0}
.zub-liste{margin:.2rem 0}
.zub-liste .ck-pos{border-bottom:1px solid var(--linie);padding:.55rem 0}
.zub-liste .ck-pos:last-child{border-bottom:none}
/* Fassung 133: Zubehoer-Zeile unter dem Kaufbutton (Freya 75/95) — eine kompakte Zeile, kein Modal */
.zub-zeile{margin:.9rem 0 0;padding:.3rem .8rem;border:1px solid var(--linie);border-radius:8px;background:var(--creme)}
.zub-zeile .ck-pos{padding:.4rem 0}
/* Versandbalken (Fassung 92): immer sichtbar, sobald der Warenkorb gefuellt
   ist — Weisung FL zur Uebergabe 92: auch bei reiner Paketware */
.frei-balken{margin:.5rem 0}
.frei-balken .fb-text{font-size:.82rem;color:var(--grau)}
.frei-balken .fb-text b{color:var(--anthrazit)}
.frei-balken.frei .fb-text{color:var(--gruen-tief)}
/* Fassung 139: Versandzeile unter dem Preis als eigene Zeile, Badge „versandkostenfrei",
   Preisbegründung mit Maßskizze, Sprungziel Rückgabe unter dem festen Kopf */
.price-vat .vat-versand{display:block;margin-top:.15rem;color:var(--anthrazit)}
.price-vat .vat-versand .vat-link{color:inherit;text-decoration:underline}
.badge-frei{background:#e6efe8;color:var(--gruen-tief)}
.ck-preis .badge-frei{font-size:.62rem;margin-left:.3rem}
.preisbegruendung{max-width:760px;margin:2rem auto 0;padding:1.3rem 1.2rem;border:1px solid var(--linie);border-radius:6px;background:var(--creme)}
.preisbegruendung h2{font-size:1.15rem;line-height:1.3;margin:0 0 .8rem}
.preisbegruendung p{margin:0 0 .7rem;line-height:1.6}
.pb-skizze{margin:1rem 0 0;text-align:center}
.pb-skizze svg{display:block;width:100%;max-width:100%;height:auto;margin:0 auto}
.pb-skizze figcaption{font-size:.8rem;color:var(--grau);margin-top:.3rem}
#rueckgabe{scroll-margin-top:96px}
@media (max-width:480px){.preisbegruendung{padding:1rem .75rem}}
/* Fassung 114: die Schiene steht in beiden Zustaenden, und die Textzeile
   darueber reserviert ZWEI Zeilen.

   Warum zwei und nicht eine: am Geraet gemessen (21.09.2026, iframe-Probe in
   320/330/340/350/360/375/390 px) bricht die Zeile unterhalb von 340 px um —
   und zwar je nach Wortlaut verschieden. Bei 320 px stehen „Noch 731 €…" und
   „Versandkostenfrei ✓…" zweizeilig, „Noch 14 €…" einzeilig; die Fusszeile
   sprang dort um 10,5 px, sobald der Fehlbetrag von drei auf zwei Stellen
   fiel. Eine Umbruchgrenze abzupassen waere ein Ratespiel: sie verschiebt
   sich mit jeder groesser eingestellten Schrift und mit jedem geaenderten
   Wortlaut. Zwei reservierte Zeilen halten in jedem Fall.

   `line-height` steht deshalb ausdruecklich hier: nur dann ist 3.2em genau
   zwei Zeilen. Geerbt waere derselbe Wert — aber nicht zugesichert.

   Die Fuellung ist das Rost des Hauses (#9B8965), die Schiene der ruhige Ton
   der Linien (--linie). */
.frei-balken .fb-text{line-height:1.6;min-height:3.2em}
.frei-balken .fb-bar{height:6px;background:var(--linie);border-radius:3px;margin-top:.35rem;overflow:hidden}
.frei-balken .fb-fuell{height:100%;background:var(--rost);border-radius:3px}

/* Widgets */
.widget{border:1px solid var(--linie);border-radius:6px;margin:1.5rem 0;overflow:hidden}
.widget-h{background:var(--creme);padding:.8rem 1rem;font-weight:600;color:var(--anthrazit);font-size:.98rem}
.widget-b{padding:1.1rem}
.ground-cards{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.ground-card{border:1px solid var(--linie);border-radius:5px;padding:1rem;text-align:center}
.ground-card .t{font-weight:600;margin:.4rem 0 .2rem;color:var(--anthrazit)}
.ground-card .p{font-size:.85rem;color:var(--grau);margin-bottom:.7rem}
.ground-card .price{font-weight:600;color:var(--gold-text);margin-bottom:.7rem}
.ground-card button{width:100%;background:transparent;border:1.5px solid var(--rost);color:var(--gold-text);border-radius:4px;padding:.55rem;font-size:.85rem;font-weight:600;transition:.2s}
.ground-card button:hover{background:var(--rost);color:#fff}

.upsell-cards{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.upsell-card{border:1px solid var(--linie);border-radius:5px;padding:1rem}
.upsell-card .t{font-weight:600;color:var(--anthrazit);margin-bottom:.3rem}
.upsell-card .c{font-size:.85rem;color:#555;margin-bottom:.5rem}
.upsell-card .pr{font-size:1.1rem;font-weight:700;color:var(--anthrazit);margin-bottom:.7rem}
.upsell-card button{width:100%;background:var(--anthrazit);color:#fff;border:none;border-radius:4px;padding:.6rem;font-size:.85rem;font-weight:600}
.upsell-card button:hover{background:var(--anthrazit-2)}

.calc-row{display:flex;gap:.7rem;align-items:flex-end;flex-wrap:wrap}
.calc-row label{font-size:.85rem;display:block;margin-bottom:.3rem;color:#555}
.calc-row input{width:120px;padding:.6rem;border:1px solid var(--linie);border-radius:4px;font-size:1rem}
.calc-row button{background:var(--rost);color:var(--schwarz);border:none;border-radius:4px;padding:.65rem 1.2rem;font-weight:600}
.calc-out{margin-top:1rem;padding:.9rem;background:var(--creme);border-radius:5px;font-size:.9rem;display:none}
.calc-out.show{display:block}
.calc-out b{color:var(--gold-text)}
.calc-out a{color:var(--gold-text);text-decoration:underline;cursor:pointer;font-weight:600}

/* Detail-Sektionen */
.details{padding:0 0 3rem;max-width:820px}
.acc-item{border-bottom:1px solid var(--linie)}
.acc-q{width:100%;text-align:left;background:none;border:none;padding:1.15rem 0;font-size:1.05rem;font-weight:600;color:var(--anthrazit);display:flex;justify-content:space-between;align-items:center}
.acc-q .pm{color:var(--gold-text);font-size:1.4rem;transition:transform .2s;margin-left:1rem}
.acc-a{max-height:0;overflow:hidden;transition:max-height .35s ease}
.acc-inner{padding:0 0 1.3rem;font-size:.94rem;color:#555}
.acc-inner p{margin-bottom:.7rem}
.acc-inner b{color:var(--anthrazit)}
.acc-item.open .acc-a{max-height:900px}
.acc-item.open .pm{transform:rotate(45deg)}
.spectable{width:100%;border-collapse:collapse;font-size:.9rem}
.spectable td{padding:.5rem 0;border-bottom:1px solid var(--linie)}
.spectable td:first-child{color:var(--grau);width:45%}
.spectable td:last-child{font-weight:600;color:var(--anthrazit)}

/* Stückliste */
.bom{border:1px solid var(--linie);border-radius:6px;overflow:hidden;margin:1.3rem 0}
.bom-h{background:var(--creme);padding:.7rem 1rem;font-weight:600;color:var(--anthrazit)}
.bom table{width:100%;border-collapse:collapse;font-size:.9rem}
.bom td{padding:.6rem 1rem;border-top:1px solid var(--linie)}
.bom td:last-child{text-align:right;font-weight:600;color:var(--anthrazit);white-space:nowrap}
.bom tr.sum td{background:var(--creme);font-weight:700;font-size:1rem}
.bom tr.sum td:first-child{color:var(--anthrazit)}
.bom .old{text-decoration:line-through;color:var(--grau);font-weight:400;font-size:.85rem;margin-right:.5rem}
/* Fassung 145: Blechdicke unter dem Mass. Der Hauptteil bricht nie um; nur der Zusatz „(2 mm auf Anfrage)“
   darf in eine zweite Zeile. Im Set-Kasten mit dem Einzug der Tabellenzeilen. */
.blechdicke{margin-top:.35rem}
.bd-teil{white-space:nowrap}
.bom .blechdicke{margin:0;padding:0 1rem .6rem;font-size:.85rem;color:#555}
/* Fassung 146: die Ausführungszeile unter dem Kopf des Set-Kastens buendig mit Tabelle und Blechdicke */
.bom > .bom-h + div{padding-left:1rem}

/* Kategorieseite */
/* Kopfbild der Kategorieseite. Feste Hoehe ueber aspect-ratio, damit beim
   Laden nichts springt; das Bild selbst wird beschnitten statt verzerrt. */
.kat-bild{margin:0 0 2rem;border-radius:3px;overflow:hidden;background:var(--sand)}
.kat-bild picture{display:block}
/* 16:9 statt 16:7, dazu ein Bildfokus aus den Daten (`pos`): beim quadratischen
   Motivbild schnitt der flache Rahmen sonst die Füße der Wände ab. */
.kat-bild img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:16/9;
  object-position:var(--kbpos,center)}
.kat-bild figcaption{padding:.7rem .9rem;font-size:.86rem;color:var(--grau);background:#fff;
  border-top:1px solid var(--linie)}
@media(max-width:700px){ .kat-bild img{aspect-ratio:4/3} }
.cat-head{padding:2rem 0 1rem}
.cat-head h1{font-family:var(--serif);font-size:2.9rem;font-weight:500;color:var(--anthrazit);margin-bottom:.5rem}
.cat-head p{color:#555;max-width:44rem}
.cat-section-title{font-size:.72rem;font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-text);margin:2.4rem 0 1.2rem}
/* Fassung 89: Gruppenleiste der Deko-Kategorieseite. Sticky UNTER dem
   (selbst haftenden) Seitenkopf — top traegt die Mobil-Kopfhoehe als
   Vorgabe, dekoFilterAusrichten() misst nach dem Rendern nach. Auf
   schmalen Geraeten rollt die LEISTE seitwaerts (overflow-x), nie die
   Seite (88 % der Klicks vom Smartphone — zuerst auf 375 px geprueft). */
.deko-filter{position:sticky;top:74px;z-index:40;display:flex;gap:.5rem;overflow-x:auto;background:var(--grund);padding:.65rem 0;margin:1.2rem 0 .2rem;-webkit-overflow-scrolling:touch}
.df-knopf{flex:0 0 auto;border:1px solid var(--linie);background:#fff;color:var(--anthrazit);font-size:.82rem;padding:.35rem .85rem;border-radius:999px;cursor:pointer;transition:background .15s,color .15s}
.df-knopf:hover{border-color:var(--rost);color:var(--gold-text)}
.df-knopf.active{background:var(--rost);border-color:var(--rost);color:#fff}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;padding-bottom:1rem}
.grid-2{grid-template-columns:repeat(2,1fr);max-width:820px;margin:0 auto}
.home-feature .card{cursor:pointer}
.card{border:1px solid var(--linie);border-radius:8px;overflow:hidden;cursor:pointer;transition:box-shadow .2s,transform .1s;background:#fff}
.card:hover{box-shadow:0 12px 30px rgba(0,0,0,.1);transform:translateY(-2px)}
/* Wie in etablierten Onlineshops: hochformatiger Rahmen, das Produkt vollstaendig
   sichtbar auf ruhigem Grund statt formatfuellend beschnitten. */
.card .img{aspect-ratio:3/4;background:#fff;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
/* Produktkarten: ganzes Produkt sichtbar. Der Rahmen ist weiß wie die Karte,
   damit die eingepassten Ränder nicht als Streifen auffallen. */
.card .img img.bild{object-fit:contain;background:#fff}
/* Der Teaser-Streifen bleibt formatfüllend: dort stehen Quer- und Hochformate
   nebeneinander, eingepasst blieben bis zu 40 % der Kachel leer. */
.card .img .mini{width:34%;height:64%;background:linear-gradient(160deg,#b5673a,#8f4d2b 42%,#6d3a20);box-shadow:0 10px 20px rgba(0,0,0,.3);border-radius:2px}
.card .img .mini.m2{width:52%;display:flex;gap:6%;background:none;box-shadow:none}
.card .img .mini.m2 i{flex:1;background:linear-gradient(160deg,#b5673a,#6d3a20);box-shadow:0 8px 14px rgba(0,0,0,.3);border-radius:2px}
.card .img .cbadge{position:absolute;top:.6rem;left:.6rem}
.card .body{padding:1rem}
.card .tag{margin-bottom:.5rem}
.card h3{font-family:var(--serif);font-size:1.35rem;font-weight:500;color:var(--anthrazit);margin-bottom:.4rem;line-height:1.2}
.card .cprice{display:flex;align-items:baseline;gap:.5rem}
.card .cprice .now{font-size:1.25rem;font-weight:700;color:var(--anthrazit)}
.card .cprice .old{font-size:.85rem;color:var(--grau);text-decoration:line-through}
.card .cvat{font-size:.75rem;color:var(--grau);margin-top:.2rem}
.card-cta{width:100%;margin-top:.9rem;background:var(--rost);color:#fff;border:none;border-radius:4px;padding:.7rem;font-size:.92rem;font-weight:600;cursor:pointer;transition:background .2s}
.card-cta:hover{background:var(--rost-tief)}
.card-cta:active{transform:translateY(1px)}
/* Bundle-Karten: Komponenten-Thumbnails */
.bundle-thumbs{display:flex;gap:.5rem;margin:.6rem 0 .8rem;flex-wrap:wrap}
.bt{position:relative;display:inline-flex;flex-direction:column;align-items:center;gap:.2rem}
.bt-img{width:42px;height:42px;border-radius:5px;border:1px solid var(--linie);background-size:cover;background-position:center;background-color:#faf8f3;display:block}
.bt-chip{display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:var(--gold-text);background:var(--creme)}
.bt-qty{font-size:.72rem;font-weight:700;color:var(--anthrazit)}

/* Warenkorb-Drawer */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:90;opacity:0;pointer-events:none;transition:opacity .25s}
.overlay.open{opacity:1;pointer-events:auto}
.drawer{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:92vw;background:#fff;z-index:100;transform:translateX(100%);transition:transform .28s ease;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.15)}
.drawer.open{transform:translateX(0)}
.drawer-h{padding:1.2rem 1.3rem;border-bottom:1px solid var(--linie);display:flex;justify-content:space-between;align-items:center}
.drawer-h h2{font-size:1.15rem;color:var(--anthrazit)}
.drawer-h button{background:none;border:none;font-size:1.5rem;color:var(--grau)}
.drawer-body{flex:1;overflow-y:auto;padding:1rem 1.3rem}
.drawer-empty{text-align:center;color:var(--grau);padding:3rem 1rem}
.citem{display:flex;gap:.9rem;padding:1rem 0;border-bottom:1px solid var(--linie)}
/* --- K1: echtes Vorschaubild statt Farbflaeche ---------------------------
   Bis Fassung 57 war .thumb eine leere <div> mit Farbverlauf. Bei Zubehoer
   (heller Sandton) las sich das als fehlendes Bild — genau das gemeldete
   Fehlerbild. Jetzt steckt ein <picture> darin; die Farbflaeche bleibt nur
   noch Grund fuer Artikel ohne hinterlegtes Bild. `contain`, weil die
   Aufnahmen unterschiedliche Seitenverhaeltnisse haben und ein Zuschnitt
   im 60-px-Rahmen vom Erdspiess nichts uebrig liesse. */
.citem .thumb{width:60px;height:75px;border-radius:4px;background:var(--sand);
  flex-shrink:0;position:relative;overflow:hidden;border:1px solid var(--linie)}
.citem .thumb img.bild{position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;background:var(--grund)}
.citem .thumb.leer{background:linear-gradient(160deg,#a05a34,#6d3a20)}
.citem .info{flex:1;min-width:0}
.citem .info h4{font-size:.9rem;color:var(--anthrazit);margin-bottom:.2rem;line-height:1.3}
.citem .info .meta{font-size:.78rem;color:var(--grau)}
.citem .disc-note{font-size:.76rem;color:var(--gruen-tief);font-weight:600;margin-top:.3rem}
.citem .cqty{display:flex;align-items:center;gap:.4rem;margin-top:.5rem}
.citem .cqty button{width:26px;height:26px;border:1px solid var(--linie);background:#fff;border-radius:3px;color:var(--gold-text);font-size:1rem;line-height:1}
.citem .cqty span{min-width:24px;text-align:center;font-weight:600;font-size:.9rem}
.citem .cqty .rm{margin-left:.5rem;color:var(--grau);border:none;background:none;font-size:.76rem;text-decoration:underline;width:auto}
.citem .cprice{text-align:right;white-space:nowrap}
.citem .cprice .amt{font-weight:700;color:var(--anthrazit)}
.citem .cprice .was{font-size:.75rem;color:var(--grau);text-decoration:line-through}
.drawer-foot{border-top:1px solid var(--linie);padding:1.2rem 1.3rem}
.sumrow{display:flex;justify-content:space-between;font-size:.9rem;margin-bottom:.5rem;color:#555}
.sumrow.total{font-size:1.15rem;font-weight:700;color:var(--anthrazit);margin:.6rem 0}
.sumrow .vat-info{color:var(--grau);font-size:.8rem}
.btn-checkout{width:100%;background:var(--rost);color:#fff;border:none;border-radius:4px;padding:1rem;font-size:1.05rem;font-weight:600;margin-top:.6rem}
.btn-checkout:hover{background:var(--rost-tief)}
/* Fassung 144 (Uebergabe Chat 05.10.2026, B): die Lade scrollt selbst, Kopf und Fuss stehen fest. Der Fuss traegt
   nur Zwischensumme und „Zur Kasse“ — so bleibt auf 360 x 640 (sichtbar 512 px) die erste Artikelzeile ganz im
   Bild, und im Querformat (280 px) ist „Zur Kasse“ erreichbar. Diese Regeln stehen HINTER den Grundregeln der
   Lade und ueberschreiben sie bei gleicher Spezifitaet. */
.drawer{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.drawer-h{position:sticky;top:0;z-index:2;background:#fff;flex-shrink:0}
.drawer-body{flex:1 0 auto;overflow-y:visible}
.drawer-foot{position:sticky;bottom:0;z-index:2;background:#fff;flex-shrink:0;padding:.75rem 1.3rem calc(.85rem + env(safe-area-inset-bottom))}
.drawer-foot .sumrow.total{margin:0 0 .1rem;align-items:baseline}
.drawer-foot .inkl{font-size:.75rem;font-weight:400;color:var(--grau)}
.korb-infos{padding:1rem 0 .2rem}
.korb-infos .gb-zeile{margin:16px 0}
.korb-infos + .checkliste{margin-top:16px}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--anthrazit);color:#fff;padding:.8rem 1.4rem;border-radius:6px;font-size:.9rem;z-index:120;opacity:0;pointer-events:none;transition:.25s}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Footer */
footer{background:var(--anthrazit);color:#bdbdbd;font-size:.86rem;margin-top:2rem}
.foot{max-width:1240px;margin:0 auto;padding:2.5rem 1.5rem 1.5rem;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:2rem}
.foot h4{color:#fff;font-size:.95rem;margin-bottom:.8rem}
.foot a{display:block;padding:.25rem 0;cursor:pointer}
.foot a:hover{color:var(--rost-hell)}
/* Cookie-Einstellungen (Fassung 74): eine Schaltflaeche im Stil der Links
   daneben — sie fuehrt nirgendwohin, sie oeffnet Shopifys Einstellungen. */
.foot-cookies{display:block;padding:.25rem 0;background:none;border:0;color:inherit;
  font:inherit;text-align:left;cursor:pointer}
.foot-cookies:hover{color:var(--rost-hell)}
.foot-logo{font-weight:700;font-size:1.25rem;color:#fff;margin-bottom:.5rem}
.foot-logo b{color:var(--rost-hell)}
.foot p{line-height:1.6;max-width:22rem}
.pay{display:flex;gap:.4rem;margin-top:.9rem;flex-wrap:wrap}
.pay span{background:rgba(255,255,255,.12);padding:.2rem .5rem;border-radius:3px;font-size:.7rem}
.foot-bottom{border-top:1px solid rgba(255,255,255,.14);padding:1rem 1.5rem;text-align:center;font-size:.76rem;color:#888}
/* Widerrufsbutton erste Stufe (§ 356a BGB). Er muss gut lesbar und darf nicht
   schwaecher gesetzt sein als die uebrigen Footer-Links: groesser (.9 statt
   .86 rem), reines Weiss statt #bdbdbd und ein Rahmen, der ihn als Schaltflaeche
   ausweist. */
.foot-widerruf{display:inline-block;margin-top:.55rem;padding:.45rem .9rem;font-size:.9rem;
  font-weight:700;color:#fff;border:1px solid rgba(255,255,255,.55);border-radius:4px}
.foot-widerruf:hover{color:#fff;background:rgba(255,255,255,.12);border-color:#fff}
/* Fassung 137: Profile in sozialen Netzwerken. Tippflaeche 44 x 44 wie .cartbtn
   (Fassung 124), 8 px Abstand, eine Zeile in der ersten Footer-Spalte. Die
   Spezifitaet (.foot .footer-social a) schlaegt .foot a — sonst truege jeder Link
   display:block und padding .25rem 0. Der Rand links setzt die 24-px-Glyphe
   buendig unter den Text der Spalte: (44 - 24) / 2 = 10 px. */
.foot .footer-social{display:flex;flex-wrap:wrap;gap:8px;margin:.8rem 0 0 -10px}
.foot .footer-social:empty{display:none}
.foot .footer-social a{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;
  width:44px;height:44px;padding:0;border-radius:4px;color:#bdbdbd}
.foot .footer-social a:hover,.foot .footer-social a:focus-visible{color:var(--rost-hell)}
.foot .footer-social svg{display:block;width:24px;height:24px;fill:currentColor}
/* Das Sprite traegt nur die Symbole. `hidden` wirkt auf ein <svg> NICHT (das Attribut
   gilt nur fuer HTML-Elemente) — ohne diese Regel stuende es 300 x 150 px im Footer. Kein
   display:none, damit <use> die Symbole ueberall aufloest. */
.foot-sprite{position:absolute;width:0;height:0;overflow:hidden}

/* ===== STARTSEITE ===== */
.hero{background:var(--schwarz);color:#fff;position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
   radial-gradient(ellipse at 78% 30%,rgba(155,137,101,.22),transparent 52%),
   radial-gradient(ellipse at 20% 90%,rgba(63,111,122,.16),transparent 55%);pointer-events:none}
.hero-inner{max-width:1240px;margin:0 auto;padding:0 1.5rem;display:grid;grid-template-columns:1fr 1fr;gap:2rem;align-items:center;min-height:600px;position:relative;z-index:1}
.hero-copy{padding:4rem 0}
.hero-eyebrow{display:inline-block;color:var(--gold);font-size:.72rem;font-weight:600;letter-spacing:.32em;text-transform:uppercase;margin-bottom:1.6rem;padding-bottom:.6rem;border-bottom:1px solid rgba(155,137,101,.45)}
.hero h1{font-family:var(--serif);font-size:4rem;line-height:1.02;font-weight:500;margin-bottom:1.4rem;letter-spacing:0}
.hero h1 em{font-style:italic;color:var(--gold)}
.hero-sub{font-size:1.18rem;color:#cbc6bc;margin-bottom:2.2rem;max-width:31rem;line-height:1.7}
.hero-usp{list-style:none;margin-bottom:2.3rem}
.hero-usp li{display:flex;align-items:flex-start;gap:.7rem;padding:.35rem 0;font-size:1rem;color:#e4e0d6}
.hero-usp .tick{color:var(--gold);font-weight:700;flex-shrink:0}
.hero-actions{display:flex;align-items:center;gap:1.6rem;flex-wrap:wrap}
.hero-price{display:flex;flex-direction:column}
.hero-price .amt{font-size:2rem;font-weight:700;line-height:1;color:#fff}
.hero-price .note{font-size:.76rem;color:#9a958b;margin-top:.2rem}
.btn-gold{background:var(--gold);color:var(--schwarz);border:none;border-radius:3px;padding:1.05rem 2.3rem;font-size:1.05rem;font-weight:700;letter-spacing:.02em;transition:background .2s,transform .1s}
.btn-gold:hover{background:var(--gold-hell)}
.btn-gold:active{transform:translateY(1px)}
/* zentrale Heimdall-Wand als Foto */
.hero-stage{position:relative;height:600px;display:flex;align-items:center;justify-content:center}
.hero-photo{position:relative;width:400px;max-width:100%;aspect-ratio:1140/1360;border-radius:3px;overflow:hidden;
   box-shadow:0 40px 90px rgba(0,0,0,.5)}
.hero-float-badge{position:absolute;top:1.1rem;left:1.1rem;background:var(--gold);color:var(--schwarz);font-size:.72rem;font-weight:700;padding:.4rem .7rem;border-radius:3px;box-shadow:0 8px 20px rgba(0,0,0,.4);z-index:2}
/* Saisonbuehne der Startseite (Fassung 122, Uebergabe Chat „Saisonbuehne" Fassung 3).
   Derselbe Baustein wie die Heimdall-Buehne (.hero, dieselbe Abfolge: Kicker,
   Ueberschrift, gerahmtes Bild mit Siegel, Preiszeile, Knopf, Text), nur mit
   anderen Inhalten. Alle Regeln haengen an .hero-saison / .saison-* — die
   Heimdall-Buehne (Phase garten) bleibt Regel fuer Regel wie in der 120.
   Desktop ab 641 px: 5/7, Bildpaar mit Versatz, Lichtschein aus der Tabelle
   SAISON (--schein); bis 640 px: ein Bild, Schein --schein-mobil. */
.hero.hero-saison::before{background:var(--schein,none)}
.hero-saison .hero-eyebrow{display:block;border-bottom:0;padding-bottom:0}
.hero-saison .hero-eyebrow::after{content:"";display:block;width:170px;height:1px;background:rgba(155,137,101,.45);margin-top:.6rem}
.hero-saison .hero-sub{max-width:38ch}
.hero-saison .hero-actions a.btn-gold{display:inline-flex;align-items:center;justify-content:center;min-height:44px;text-decoration:none;white-space:nowrap}
.saison-fig{position:relative;margin:0;aspect-ratio:4/5;border-radius:3px;overflow:hidden;background:var(--schwarz-2)}
.hero-saison .hero-photo{width:auto;max-width:none;aspect-ratio:4/5}
.saison-fig picture,.saison-fig img.bild{display:block;width:100%;height:100%;object-fit:cover}
.saison-fig figcaption{position:absolute;left:0;right:0;bottom:0;padding:1.8rem .9rem .7rem;font-family:var(--serif);font-size:1.1rem;line-height:1.2;color:#fff;
  background:linear-gradient(0deg,rgba(28,27,24,.72),rgba(28,27,24,0));pointer-events:none}
.saison-fig-link{position:absolute;inset:0;z-index:1}
.saison-fig-link:focus-visible{outline:2px solid var(--gold);outline-offset:-3px}
@media(min-width:641px){
  .hero-saison .hero-inner{max-width:1280px;grid-template-columns:5fr 7fr;gap:48px;padding:64px 72px;min-height:0;align-items:center}
  .hero-saison .hero-copy{padding:0}
  .hero.hero-saison h1{font-size:58px;line-height:1.05;margin-bottom:1.6rem}
  .hero-saison .hero-actions{margin-bottom:1.6rem}
  .hero-saison .hero-sub{margin-bottom:0}
  .hero-saison .hero-stage{height:auto;display:block}
  .saison-paar{display:flex;gap:18px;align-items:flex-end;justify-content:flex-end;padding-bottom:64px}
  .saison-paar.allein{padding-bottom:0}
  .saison-paar .saison-fig{flex:1 1 0;max-width:340px;box-shadow:0 30px 60px rgba(0,0,0,.45)}
  .saison-paar.allein .saison-fig{max-width:420px}
  .saison-paar .saison-fig-b{transform:translateY(64px)}
}
@media(max-width:640px){
  .hero.hero-saison::before{background:var(--schein-mobil,none)}
  .hero-saison .saison-paar{order:3;width:100%}
  .hero-saison .saison-fig-b{display:none}
  .hero-saison .hero-photo{width:100%;box-shadow:0 22px 44px rgba(0,0,0,.45)}
  .hero-saison .hero-photo img.bild{object-position:55% 55%}
}
/* Kachelblock direkt unter der Saisonbuehne. Das Kachelbild ist immer das
   Feed-Hauptbild eines Artikels (feedBildReihe), 1:1 in fester Groesse — CLS 0. */
.saison-kacheln{background:var(--schwarz);color:#fff;padding:8px 0 56px}
.saison-kacheln .wrap{max-width:1280px;margin:0 auto;padding:0 72px}
.saison-kacheln h2{position:relative;font-family:var(--serif);font-weight:500;font-size:2.2rem;line-height:1.15;margin:0 0 1.4rem;padding-top:1.4rem;color:#fff}
.saison-kacheln h2::before{content:"";position:absolute;top:0;left:0;width:170px;height:1px;background:rgba(155,137,101,.45)}
.saison-kacheln h2 em{font-style:italic;color:var(--gold)}
.saison-raster{display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
.saison-kachel{display:block;border:1px solid rgba(155,137,101,.25);border-radius:3px;overflow:hidden;color:#fff;text-decoration:none}
.saison-kachel:hover{border-color:var(--gold)}
.saison-kachel .kb{aspect-ratio:1/1;overflow:hidden;background:var(--schwarz-2)}
.saison-kachel .kb picture,.saison-kachel .kb img.bild{display:block;width:100%;height:100%;object-fit:cover}
.saison-kachel .kt{display:flex;justify-content:space-between;align-items:center;gap:.5rem;padding:.75rem .9rem;font-family:var(--serif);font-size:1.25rem;line-height:1.2}
.saison-kachel .kt span{color:var(--gold)}
@media(max-width:640px){
  .saison-kacheln{padding:4px 0 40px}
  .saison-kacheln .wrap{padding:0 1.5rem}
  .saison-kacheln h2{font-size:1.7rem}
  .saison-raster{grid-template-columns:1fr 1fr;gap:12px}
  .saison-kachel .kt{font-size:1.05rem;padding:.6rem .7rem}
}

/* Trust-Strip Startseite */
.gartenszene{padding:1.6rem 0}
.gartenszene .wrap{max-width:1240px;margin:0 auto;padding:0 1.5rem}
.gartenszene-media{position:relative;min-height:440px;border-radius:16px;overflow:hidden;display:flex;align-items:flex-end;background-color:var(--sand);background-image:var(--gartenszene-img, linear-gradient(135deg,#e9e2d4,#d9cbb3 55%,#cbb894));background-size:cover;background-position:center}
/* Das Bannerbild liegt formatfuellend im Rahmen. Der Ausschnitt steht als
   Datenfeld am Banner und kommt ueber `--gspos` herein — der Bildfokus liegt
   rechts (Feuerstelle), der Textblock links. */
.gartenszene-media>picture{position:absolute;inset:0}
.gartenszene-media img.bild{object-position:var(--gspos,70% 52%)}
/* Zwei Verlaufslagen ueber dem Bild: von unten wie bisher, zusaetzlich von
   links. Der weisse Text steht damit auf jeder Breite auf dunklem Grund. */
.gartenszene-scrim{position:absolute;inset:0;background:linear-gradient(0deg,rgba(28,27,24,.74),rgba(28,27,24,.15) 55%,transparent),linear-gradient(90deg,rgba(28,27,24,.72),rgba(28,27,24,.42) 42%,rgba(28,27,24,0) 86%)}
.gartenszene-copy{position:relative;padding:2rem 2.2rem;color:#fff;max-width:660px;text-shadow:0 1px 3px rgba(0,0,0,.55)}
.gartenszene-copy h2{font-family:var(--serif);font-size:2.4rem;line-height:1.12;margin:.2rem 0 .5rem;color:#fff}
.gartenszene-copy p{color:#fff;font-size:1rem;margin-bottom:1rem}
.gartenszene-copy .hero-eyebrow{color:var(--gold-foto)}
.gartenszene-tags{display:flex;gap:.6rem;flex-wrap:wrap}
.gartenszene-tags button{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.45);color:#fff;padding:.5rem .95rem;border-radius:30px;font-size:.85rem;cursor:pointer}
.gartenszene-tags button:hover{background:var(--gold);border-color:var(--gold)}
/* Schmale Breiten: der Rahmen wird hochformatig, das Panorama also stark
   beschnitten. Der Ausschnitt wandert nach rechts, damit die Feuerstelle im
   Bild bleibt. Weil der Text hier fast die ganze Hoehe einnimmt — auf einem
   320-px-Telefon ueberfuellt er den Rahmen sogar, dann sitzt die Vorzeile ganz
   oben —, traegt der Verlauf von unten weiter hinauf und laeuft oben gar nicht
   mehr aus. Die Rahmenhoehe bleibt bei 440 px: ein flacherer Rahmen schiebt
   Vorzeile und Ueberschrift noch weiter in den hellen Bildteil. */
@media(max-width:700px){
  .gartenszene .wrap{padding:0 1rem}
  .gartenszene-media img.bild{object-position:var(--gspos-schmal,66% 50%)}
  .gartenszene-scrim{background:linear-gradient(0deg,rgba(28,27,24,.90),rgba(28,27,24,.54) 58%,rgba(28,27,24,.48)),linear-gradient(90deg,rgba(28,27,24,.62),rgba(28,27,24,.14) 60%,rgba(28,27,24,0))}
  .gartenszene-copy{padding:1.5rem 1.3rem}
  .gartenszene-copy h2{font-size:1.8rem}
}
.home-trust{background:var(--creme);border-top:1px solid var(--linie);border-bottom:1px solid var(--linie)}
.home-trust .wrap{max-width:1240px;margin:0 auto;padding:1.5rem;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.home-trust .t{display:flex;align-items:center;gap:.7rem;font-size:.9rem;color:#444}
.home-trust .t .ic{width:42px;height:42px;border-radius:50%;background:#fff;border:1px solid var(--gold);display:flex;align-items:center;justify-content:center;color:var(--gold);flex-shrink:0}
.home-trust .t b{color:var(--anthrazit);display:block;font-size:.92rem}
.home-trust .t span{font-size:.78rem;color:var(--grau)}

/* Home-Sektionen */
.home-sec{max-width:1240px;margin:0 auto;padding:5rem 1.5rem}
.home-sec-head{text-align:center;margin-bottom:2.8rem}
.home-sec-head .eyebrow{color:var(--gold-text);font-size:.72rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase}
.home-sec-head h2{font-family:var(--serif);font-size:2.9rem;font-weight:500;color:var(--anthrazit);margin-top:.4rem;letter-spacing:0}
.home-sec-head p{color:#555;max-width:40rem;margin:.7rem auto 0}
/* USP-Reihe */
.home-usps{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5rem}
.home-usp-card{text-align:center;padding:2.6rem 1.4rem;border:1px solid var(--linie);border-radius:2px;background:#fff;transition:box-shadow .3s,transform .3s}
.home-usp-card:hover{box-shadow:0 18px 40px rgba(28,27,24,.09);transform:translateY(-3px)}
.home-usp-card .ic{width:62px;height:62px;border-radius:50%;background:transparent;border:1px solid var(--gold);color:var(--gold);display:flex;align-items:center;justify-content:center;font-size:1.4rem;margin:0 auto 1.2rem}
.home-usp-card h3{font-family:var(--serif);font-size:1.45rem;font-weight:500;color:var(--anthrazit);margin-bottom:.5rem}
.home-usp-card p{font-size:.88rem;color:#555;line-height:1.6}
/* Split-Block Material */
.home-split{display:grid;grid-template-columns:1fr 1fr;gap:3.5rem;align-items:center;background:linear-gradient(135deg,var(--creme),var(--azur-blass));border-radius:3px;padding:3.5rem;margin-top:1rem;border:1px solid var(--linie)}
.home-split .visual .scene{position:absolute;inset:0;background:linear-gradient(to bottom,#bcdce4 0%,#d4e8ec 46%,#8faa80 52%,#7a9a6e 100%)}
.home-split .visual .w{position:absolute;left:10%;right:10%;top:12%;bottom:26%;border-radius:2px;background:repeating-linear-gradient(112deg,rgba(0,0,0,.07) 0 3px,transparent 3px 11px),linear-gradient(158deg,#b5673a,#8f4d2b 44%,#6d3a20);box-shadow:0 16px 30px rgba(0,0,0,.3)}
.home-split h2{font-family:var(--serif);font-size:2.6rem;font-weight:500;color:var(--anthrazit);margin-bottom:1rem;line-height:1.1}
.home-split p{color:#4a4a4a;margin-bottom:1rem}
.home-split .link{color:var(--azur);font-weight:600;cursor:pointer;border-bottom:1px solid var(--azur);padding-bottom:1px;transition:color .2s}
.home-split .link:hover{color:var(--azur-hell)}
/* Set-Teaser */
.home-cta-band{background:var(--schwarz);color:#fff;text-align:center;padding:3.5rem 1.5rem;margin-top:1rem}
.home-cta-band h2{font-family:var(--serif);font-size:2.6rem;font-weight:500;margin-bottom:.6rem}
.home-cta-band h2 em{font-style:italic;color:var(--gold)}
.home-cta-band p{color:#c9c4ba;margin-bottom:1.6rem;max-width:36rem;margin-left:auto;margin-right:auto}

@media(max-width:900px){
  .hero-inner{grid-template-columns:1fr;min-height:auto;gap:0}
  .hero-copy{padding:3rem 0 1rem}
  .hero h1{font-size:2.2rem}
  .hero-stage{height:440px;order:2}
  .hero-photo{width:280px}
  .home-trust .wrap{grid-template-columns:1fr 1fr;gap:1rem}
  .home-usps{grid-template-columns:1fr 1fr}
  .home-split{grid-template-columns:1fr;padding:2rem}
  .home-split .visual{order:-1}
  .grid{grid-template-columns:repeat(2,1fr)}
  /* --- K3: Produktseite einspaltig ---------------------------------------
     Ohne diese Zeile behielt .product auch auf dem Telefon zwei Rasterspalten.
     Die rechte Spalte (Preis, Ausfuehrung, Mengenwahl, Schaltflaechen) hat
     eine grosse Mindestbreite, die linke dagegen keine — das Hauptbild wurde
     deshalb auf wenige Pixel zusammengedrueckt und war praktisch unsichtbar,
     waehrend die quadratischen Miniaturen darunter stehen blieben. Genau das
     gemeldete Fehlerbild: „nur das kleine Thumbnail mit Galerie-Punkten". */
  .product{grid-template-columns:1fr;gap:1.6rem}
  .gallery{width:100%;max-width:560px;margin:0 auto}
  .gallery .main{width:100%}
  .gallery .thumbs{max-width:560px}
  /* K4: die Umschaltung auf das Burger-Menue steht seit Fassung 125 in der
     eigenen Media-Query bis 1240 px direkt unter diesem Block. */
  .foot{grid-template-columns:1fr 1fr}
}
/* --- Fassung 125: Burger-Menue bis 1240 px (K4) ----------------------------
   Mit Desktop-Menue braucht die Kopfzeile 1179 px (Logo, sieben Menuepunkte,
   Lupe, Warenkorb). Bis zur 124 stand K4 in der Query bis 900 px, zwischen 910
   und 1170 px lief die Seite seitwaerts ueber. Die Grenze laesst Luft fuer den
   Scrollbalken (die Media-Query zaehlt ihn mit) und fuer die breitere Helvetica
   Neue am Mac. Ohne JavaScript hebt der <noscript>-Block im Kopf beides wieder auf. */
@media(max-width:1240px){
  .nav-menu{display:none}
  .navburger{display:flex}
}
/* --- Fassung 95: erster Screen der Startseite auf dem Telefon (<=640 px) ---
   Befund FL (iPhone, 375 px): der erste Screen zeigte nur Text, kein Produkt.
   Die Reihenfolge wird REIN PER CSS umgestellt, der gerenderte DOM bleibt
   byteidentisch zur 94 (Z-B): display:contents loest hero-copy und
   hero-stage als Boxen auf, ihre Kinder ordnen sich im hero-inner neu —
   Eyebrow, Ueberschrift, Ambientebild (volle Breite), Preiszeile mit
   Kaufknopf, dann Absatz und Haekchenliste. Wortlaut unveraendert
   (Entscheidung FL 1): Preiszeile und Knopf sind die VORHANDENE
   hero-actions, nur unter das Bild geordnet. */
@media(max-width:640px){
  .hero-inner{display:flex;flex-direction:column;padding:2.6rem 1.5rem 2.2rem}
  .hero-copy,.hero-stage{display:contents}
  .hero-eyebrow{order:1}
  .hero h1{order:2;margin-bottom:1rem}
  .hero-photo{order:3;width:100%}
  .hero-actions{order:4;margin:1.15rem 0 1.6rem}
  .hero-sub{order:5;margin-bottom:1.5rem}
  .hero-usp{order:6;margin-bottom:.4rem}
}
/* --- Kopfzeile auf schmalen Geraeten -------------------------------------
   Die Burger-Schaltflaeche ist der dritte Bewohner einer Zeile, die vorher
   zwei hatte. Bei 375 px ergaben Logo (188) + Warenkorb (132) + Burger (44)
   samt Abstaenden 460 px — die ganze Seite liess sich seitwaerts schieben.
   Deshalb engere Abstaende, und das Wort „Warenkorb" wandert in die
   unsichtbare Vorlesefassung: der zugaengliche Name der Schaltflaeche bleibt
   damit „Warenkorb 0 Artikel", auf dem Schirm steht nur noch das Zeichen. */
@media(max-width:560px){
  .nav{gap:.65rem;padding:.9rem 1rem}
  .cart-wort{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
    overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
  .cartbtn{gap:.3rem}
}
@media(max-width:380px){
  .logo{font-size:1.05rem;letter-spacing:.1em}
  .logo .sub{letter-spacing:.24em}
}
@media (max-width:359px){
  /* Fassung 120 (Uebergabe Chat, Befund live bei 320 px: scrollWidth 347). Die Kopfzeile
     brauchte ~339 px, die zweite Fussspalte endete bei 347. Knoepfe bleiben 44 x 44
     (.cartbtn seit Fassung 124 im Grundstil). */
  .nav{gap:4px;padding-left:12px;padding-right:12px}
  .logo{font-size:.84rem;letter-spacing:.1em}
  .logo .sub{letter-spacing:.07em}
  .foot{grid-template-columns:1fr}
  /* Fassung 137: lange Einzelwoerter in Rechtstext-Ueberschriften („Verbraucherstreitbeilegung“)
     liefen bei 320-330 px ueber den Rand (scrollWidth 331). */
  .rt h2,.rt h3{hyphens:auto;-webkit-hyphens:auto;overflow-wrap:break-word}
}
@media(max-width:900px) and (orientation:landscape) and (max-height:560px){
  /* Telefon im Querformat: viel Breite, wenig Hoehe. Ein Hauptbild im
     Verhaeltnis 4:5 waere hier hoeher als das Fenster — der Kaufbereich
     rutschte komplett unter die Falz. */
  .gallery{max-width:340px}
}
@media(max-width:560px){
  /* Zwei Spalten bleiben auch auf dem Telefon — mit dem hochformatigen Rahmen
     wuerde eine einspaltige Liste sonst sehr lang. Entspricht dem, was Nutzer
     aus etablierten Shops kennen. */
  .grid{grid-template-columns:repeat(2,1fr);gap:.9rem}
  .grid .card .body{padding:.7rem .75rem}
  .grid-2{grid-template-columns:1fr;max-width:420px}
  .ground-cards,.upsell-cards{grid-template-columns:1fr}
  .shipbar .wrap{gap:.9rem;font-size:.72rem}
  .buy h1{font-size:1.4rem}
  .home-usps{grid-template-columns:1fr}
  .home-trust .wrap{grid-template-columns:1fr}
  .hero h1{font-size:1.9rem}
}
/* Varianten-Auswahl (Ausführung A/B) */
.var-select{margin:0 0 1.1rem}
.var-h{font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--grau);margin-bottom:.45rem}
.var-opts{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.var-opt{border:1px solid var(--linie);background:#fff;border-radius:6px;padding:.65rem .5rem;cursor:pointer;text-align:center;font-family:inherit}
.var-opt .var-name{display:block;font-weight:600;color:var(--anthrazit);font-size:.86rem}
.var-opt .var-price{display:block;color:var(--grau);font-size:.82rem;margin-top:.15rem}
.var-opt.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);background:var(--creme)}
.var-opt.active .var-price{color:var(--anthrazit);font-weight:600}
/* Fassung 101: eine Ausfuehrung ohne Wahl — Textzeile an der Stelle des Schalters (gleicher Abstand, keine Luecke) und der Anfrage-Hinweis */
.var-zeile{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin:0 0 1.1rem;padding:.65rem .8rem;border:1px solid var(--linie);border-radius:6px;background:#fff}
.var-zeile .var-h{margin:0}
.var-zeile .var-wert{font-weight:600;color:var(--anthrazit);font-size:.92rem;text-align:right}
.corten-anfrage{font-size:.86rem;color:var(--grau);line-height:1.6;margin:-.5rem 0 1.1rem}
.corten-anfrage-link{display:inline-block;background:none;border:0;padding:.55rem 0;min-height:44px;font:inherit;font-size:.9rem;font-weight:600;color:var(--gold-text);text-decoration:underline;cursor:pointer}
.anfrage-produkt{font-size:.95rem;color:var(--anthrazit);margin-bottom:.6rem;line-height:1.5}
.anfrage-kennung{font-size:.82rem;color:var(--grau)}
/* --- Vorschaubilder im Startseiten-Teaser (Punkt 2) --- */
.teaser-bilder{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem;max-width:940px;margin:1.7rem auto 0}
.teaser-bilder .tb{position:relative;display:block;aspect-ratio:4/5;border-radius:6px;overflow:hidden;background:var(--sand)}
.teaser-bilder .tb img.bild{position:absolute;inset:0;transition:transform .35s ease}
.teaser-bilder .tb:hover img.bild,.teaser-bilder .tb:focus-visible img.bild{transform:scale(1.04)}
.teaser-bilder .tb-t{position:absolute;left:0;right:0;bottom:0;padding:.9rem .65rem .5rem;font-size:.78rem;
  font-weight:600;color:#fff;background:linear-gradient(to top,rgba(28,26,24,.86),rgba(28,26,24,0))}
@media(max-width:700px){ .teaser-bilder{grid-template-columns:repeat(2,1fr);gap:.7rem} }

/* --- Bildansicht / Zoom (Punkt 3) --- */
.gallery .main.zoombar{cursor:zoom-in}
.gallery .zoomhint{position:absolute;top:10px;right:10px;background:rgba(44,44,44,.78);color:#fff;
  font-size:.7rem;letter-spacing:.04em;padding:.28rem .5rem;border-radius:3px;pointer-events:none}
.lightbox{position:fixed;inset:0;z-index:130;background:rgba(22,20,18,.95);display:none;
  align-items:center;justify-content:center;padding:3rem 1.2rem 3.6rem}
.lightbox.open{display:flex}
.lightbox figure{margin:0;width:100%;max-width:1180px;display:flex;flex-direction:column;align-items:center;gap:.8rem}
.lb-buehne{width:100%;max-height:78vh;overflow:auto;display:flex;align-items:center;justify-content:center;cursor:zoom-in}
/* width/height am <img> sind Layout-Hinweise und wuerden den Rahmen aufziehen —
   im Zoom entscheidet allein die Passung ins Fenster. */
.lb-buehne img{display:block;width:auto;height:auto;max-width:100%;max-height:78vh;
  object-fit:contain;background:var(--grund);border-radius:4px}
.lb-buehne.gross{display:block;cursor:zoom-out}
.lb-buehne.gross img{max-width:none;max-height:none;height:auto;border-radius:0;
  width:max(100%, min(200%, var(--natur, 200%)))}
.lightbox figcaption{color:#f0eae2;font-size:.86rem;line-height:1.5;text-align:center;max-width:70ch}
.lb-close{position:absolute;top:.7rem;right:1rem;background:none;border:0;color:#fff;font-size:2.1rem;
  line-height:1;cursor:pointer;padding:.2rem .5rem}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.45);border:0;color:#fff;
  font-size:1.9rem;line-height:1;padding:.45rem .75rem;border-radius:4px;cursor:pointer}
.lb-nav.prev{left:.5rem} .lb-nav.next{right:.5rem} .lb-nav.hide{display:none}
.lb-zaehler{position:absolute;bottom:1.1rem;left:50%;transform:translateX(-50%);color:#cec5b9;font-size:.8rem;letter-spacing:.06em}
@media(max-width:700px){
  .lightbox{padding:3rem .6rem 3.2rem}
  .lb-buehne,.lb-buehne img{max-height:66vh}
  .lb-buehne.gross img{width:170%}
  .lightbox figcaption{font-size:.8rem}
}
/* --- Pflicht- und Sicherheitshinweise (Punkte 9 und 10) --- */
.hinweis{background:var(--creme);border-left:3px solid var(--rost);border-radius:0 5px 5px 0;
  padding:.75rem .95rem;margin:0 0 1.1rem;font-size:.84rem;line-height:1.6;color:#555}
.hinweis b{color:var(--anthrazit)}
.hinweis.warn{background:#fdf2ea;border-left-color:#a8471a}
.hinweis + .hinweis{margin-top:-.5rem}
/* --- Fassung 141: Kaufbereich mobil zuerst ---------------------------------------------------
   Aufklappfeld unter dem Knopf (Staffelpreise je Stück): Zeichen des Shop-Akkordeons rechts,
   offen um 45° gedreht; Tippflaeche 44 px. */
.kauf-feld{border:1px solid var(--linie);border-radius:6px;margin:0 0 1.1rem;background:#fff}
.kauf-feld summary{list-style:none;cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.4rem .95rem;font-size:.9rem;font-weight:600;color:var(--anthrazit)}
.kauf-feld summary::-webkit-details-marker{display:none}
.kauf-feld summary::after{content:'+';flex:0 0 auto;color:var(--gold-text);font-size:1.35rem;line-height:1;transition:transform .2s}
.kauf-feld[open] summary{border-bottom:1px solid var(--linie)}
.kauf-feld[open] summary::after{transform:rotate(45deg)}
.kauf-feld .staffel{border:0;border-radius:0;margin:0}
.kauf-feld .staffel-h{display:none}
.buy .qty-row + .line-total{margin-bottom:1rem}
.toast.oben{top:20px;bottom:auto}
/* Nachtrag 02.10.2026: Zeile unter der Ausfuehrung, Absatz Untergrund, Hinweis unter dem Knopf */
.ausf-zusage{font-size:.86rem;color:var(--grau);margin:-.45rem 0 1rem;line-height:1.5}
.var-zeile + .ausf-zusage{margin-top:-.2rem}
.buy .corten-anfrage{margin:0 0 1rem}
.buy .line-total + .set-hinweis, .buy .zubehoer-zeile + .set-hinweis{margin-top:0}
.buy .set-hinweis{margin-bottom:1rem}
.buy .delivery + .staffel-zeile{margin:-.6rem 0 1rem}
.beschreibung-untergrund{color:#555}
.kaufleiste{display:none}
@media(max-width:900px){
  .kaufleiste{position:fixed;left:0;right:0;bottom:0;z-index:70;display:flex;align-items:center;gap:.8rem;
    background:#fff;border-top:1px solid var(--linie);box-shadow:0 -4px 16px rgba(0,0,0,.08);
    padding:.55rem 16px calc(.55rem + env(safe-area-inset-bottom));transform:translateY(110%);visibility:hidden;transition:transform .2s,visibility .2s}
  .kaufleiste.sichtbar{transform:none;visibility:visible}
  .kaufleiste .kl-preis{font-size:1.1rem;font-weight:700;color:var(--anthrazit);white-space:nowrap;line-height:1.2}
  .kaufleiste .kl-preis small{display:block;font-size:.72rem;font-weight:400;color:var(--grau)}
  .kaufleiste .btn-cart{flex:1;min-height:48px}
  body.mit-kaufleiste{padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  body.mit-kaufleiste .nachoben{bottom:calc(80px + env(safe-area-inset-bottom))}
  body.mit-kaufleiste .toast:not(.oben){bottom:calc(84px + env(safe-area-inset-bottom))}
}
@media (prefers-reduced-motion: reduce){ .kaufleiste{transition:none} }
@media(max-width:700px){
  /* Kopfleiste einzeilig: der Versandfrei-Satz steht ohnehin am Preis jeder Produktseite. */
  .shipbar .wrap{flex-wrap:nowrap;justify-content:center;gap:.8rem;padding:.38rem 16px;white-space:nowrap;overflow:hidden}
  .shipbar .wrap > span:nth-child(3){display:none}
  .crumb{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:.55rem;padding-bottom:.1rem}
  .gallery .main{aspect-ratio:1/1}
  .product{gap:1rem}
}
@media(max-width:420px){
  /* bis 420 px passen drei Punkte nicht in eine Zeile (gemessen 389 px auf 375) — „Made in Germany“ steht als Abzeichen am Produkt */
  .shipbar .wrap > span:nth-child(2){display:none}
}
