/** Shopify CDN: Minification failed

Line 1197:4 Expected percentage but found "entry"
Line 1197:10 Expected "," but found "0%"
Line 7413:0 Unexpected "}"

**/
/* ═══ IN EINER CSS-EBENE (@layer s304) ═══════════════════════════════════
   22.09.2026. Diese Datei liegt vollstaendig in der Ebene `s304`.

   ⭐⭐ WARUM — live getestet, mit Positivkontrolle:
     Regel in der ersten Ebene, Waehler `.probe`            (0,1,0)
     gegen spaetere Regel `html body div#id p#id.class`     (1,2,4)
     → DIE EBENE GEWINNT. Ohne Ebene verliert dieselbe Regel.
   Damit ist der Spezifitaetskrieg vorbei: diese Seite hat 39 CSS-Ebenen,
   meine Datei ist Nummer 16, und 23 kommen danach. Ueber die Ebene gewinne
   ich trotzdem — ohne lange Waehlerketten, ohne Klassen zaehlen.

   ⛔ WAS DIE EBENE NICHT SCHLAEGT: ein `!important` direkt am Element
   (`style="…"`, von fremdem JS gesetzt). Getestet, es bleibt unschlagbar.
   Diese ~6 Faelle erledigt `s304-haus.js`.

   ⛔ JEDE ANGABE HIER BRAUCHT `!important` — und zwar aus einem genauen
   Grund: alles andere im Theme ist UNGESCHICHTET, und fuer normale Angaben
   gewinnt Ungeschichtetes. Nur bei `!important` dreht sich die Reihenfolge
   um. Das ist kein Rueckfall in das alte Muster: es sind nicht mehr 2.835
   Einzelgefechte, sondern EINE Aussage — diese Ebene gewinnt.
   ═══════════════════════════════════════════════════════════════════════ */
@layer s304 {
/* ═══ S304-HAUS · die Möbel, auf JEDER Seite ═══════════════════════════════
   22.09.2026. Dritte Datei der Familie: `s304-pdp.css` (Produktseite),
   `s304-kat.css` (Kategorie), und hier das, was überall gleich ist —
   Fußzeile mit Impressum, Schubladen (Warenkorb + Menü), Kopfleiste.

   ⛔ WARUM ES DIESE DATEI GIBT — Enzos Ansage, wörtlich:
   „wir wollen alles, alles so ein bisschen, also unten Futter und so, das
   soll alles so ein bisschen so sein." Und: „kriegen wir das nicht einfach
   raus, alles andere rauszunehmen und einfach mal unseren Kram zu machen?"

   Er hat recht, und der Grund ist messbar: die Arbeitskopie 189042917757
   wurde am 22.09. vom AKTUELLEN Live-Theme dupliziert, nicht vom ältesten.
   Sie erbt damit `304-custom.css` mit 378.605 Zeichen und 2.835 `!important`.
   Gegen diese Schicht anzuschreiben erzeugt Block 45, 46, 47. Stattdessen:
   EINE Haus-Schicht, die alle Flächen gleich behandelt, und die alte Schicht
   wird Stück für Stück stillgelegt statt überboten.

   ⭐ ALLE WERTE HIER SIND LIVE GEMESSEN, nicht gewählt:
     footer.site-footer-wrapper   387×233  schwarz  r0   T4478
       .s304-legal                355×57   Impressum · AGBs · Widerrufsrecht
                                           · Datenschutz · Retoure
       .s304-social               355×22
     .drawer__inner               387×812  weiss    r0
     .ic-top-ticker               355×32   schwarz  r22  (schon im Kastenstil)
   ═════════════════════════════════════════════════════════════════════════ */

:root{
  --s304-rand:16px !important;
  --s304-r:22px !important;
  --s304-ink:#15130F !important;
  --s304-leise:#8A837C !important;
  --s304-linie:#ECE7E0 !important;
  --s304-wurf: 0 16px 36px -14px rgba(24,24,26,.44), 0 3px 8px -2px rgba(24,24,26,.13) !important;
}

/* ── 1 · Das Band, auf JEDER Seite gleich ────────────────────────────────
   Stand bisher nur auf der PDP und der Kategorie im Kastenstil. Enzos
   Punkt war genau das: es soll ÜBERALL so sein. */
html body .ic-top-ticker{
  margin:0 var(--s304-rand) !important;
  border-radius:var(--s304-r) !important;
  background:#000 !important;
  overflow:hidden !important;
}

/* ── 2 · Die Fußzeile: ein Kasten, kein randloser Balken ─────────────────
   Gemessen: sie ist heute 387 breit und randlos schwarz. Im Kastenstil
   wird sie eingerückt und rund — dieselbe Sprache wie Band und Karten. */
html body footer.site-footer-wrapper{
  margin:0 var(--s304-rand) 20px !important;
  border-radius:var(--s304-r) !important;
  overflow:hidden !important;
  background:#000 !important;
}
html body footer.site-footer-wrapper .site-footer{
  padding-left:18px !important;
  padding-right:18px !important;
}

/* Die Rechtslinks — Impressum und Nachbarn. Sie sind das Kleingedruckte,
   also leise, aber mit ehrlichem Tippziel (44 px, nicht 14 px Text). */
html body .s304-legal a{
  font-size:11.5px !important;
  font-weight:500 !important;
  letter-spacing:.02em !important;
  color:rgba(255,255,255,.72) !important;
  text-decoration:none !important;
  padding:6px 2px !important;
  display:inline-block !important;
  min-height:0 !important;
}
html body .s304-legal a:hover,
html body .s304-legal a:focus-visible{
  color:#FFFFFF !important;
  text-decoration:underline !important;
}
html body .s304-social a{
  padding:9px !important;
  display:inline-flex !important;
  align-items:center !important;
}

/* ── 3 · Die Schubladen: Warenkorb und Menü ──────────────────────────────
   Beide teilen `.drawer__inner`. Sie kommen von rechts bzw. links herein,
   darum bekommen nur die INNEREN Ecken einen Radius — eine Schublade, die
   an allen vier Ecken rund ist, sieht aus, als schwebe sie im Nichts. */
html body .drawer--cart .drawer__inner,
html body cart-drawer .drawer__inner{
  border-radius: var(--s304-r)   /* 23.09.: war `… 0 0 …`, also nur links gerundet. Seit das Blatt oben und unten schwebt, muss es ringsum rund sein — sonst stossen zwei runde und zwei spitze Ecken aneinander. */ !important;
  overflow:hidden !important;
}
html body .drawer--navigation .drawer__inner,
html body .drawer--menu .drawer__inner{
  border-radius:0 var(--s304-r) var(--s304-r) 0 !important;
  overflow:hidden !important;
}

/* Die Zeilen im Korb als eigene Kästchen, wie die Produktkacheln. */
html body .drawer .cart__item{
  border-radius:14px !important;
  padding:10px !important;
  background:#FFFFFF !important;
  box-shadow:0 6px 16px -10px rgba(24,24,26,.34) !important;
  border:0 !important;
}

/* ── 4 · Tippziele, überall ──────────────────────────────────────────────
   ⭐ Das ist kein Schönheitspunkt: ein 14-px-Link im Fuß ist auf dem Handy
   nicht sicher zu treffen. 44 px ist die Untergrenze, nicht der Wunsch. */
html body .header__mobile__hamburger,
html body .header__cart,
html body .header__account{
  min-width:44px !important;
  min-height:44px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

/* === S304-RUNDE1-HAUS-2209 · die letzte eckige Farbflaeche ===============
   Die Sonde meldete auf JEDER Seite:
     section.supporting-menu  387×97  bg rgb(0,0,0)  r0
   Das ist der zweite Fussblock unter der Fusszeile — randlos schwarz, waehrend
   die Fusszeile darueber schon eingerueckt und rund ist. Zwei schwarze Floeze
   direkt uebereinander, eins rund, eins eckig: genau der Bruch, den Enzo
   „zwei Sachen ueberschrieben" nennt.
   ⭐ Sie gehoeren zusammen: der obere Block behaelt runde Ecken oben, dieser
   bekommt sie unten, dazwischen bleibt die Kante gerade. So lesen sie als
   EIN Kasten statt als zwei.
   ========================================================================= */
html body footer.site-footer-wrapper{
  margin-bottom:0 !important;
  border-radius:var(--s304-r) var(--s304-r) 0 0 !important;
}
html body section.supporting-menu{
  margin:0 var(--s304-rand) 20px !important;
  border-radius:0 0 var(--s304-r) var(--s304-r) !important;
  overflow:hidden !important;
}

/* === S304-RUNDE2-HAUS-2209 · Tippziele im Fuss ===========================
   Die Sonde: `a.s304-legal__link 67×29`, fuenfmal, plus die Copyright-Zeile
   mit 16 px. Meine erste Fassung gab 6 px Polster — 11,5 + 12 = 29, also
   immer noch unter der 36er-Grenze.
   ⭐ Nicht nach Gefuehl nachbessern: 36 - 14 (Zeilenhoehe bei 11,5 px) = 22,
   also 11 px oben und unten. Ich nehme 12, damit auch die laengere Zeile
   „Retoure & Miles-Gutschrift" bei Umbruch nicht drunterfaellt.
   ========================================================================= */
html body .s304-legal a,
html body .s304-legal__link{
  padding:12px 4px !important;
  min-height:38px !important;
  display:inline-flex !important;
  align-items:center !important;
}
html body footer.site-footer-wrapper a,
html body section.supporting-menu a{
  min-height:36px !important;
  display:inline-flex !important;
  align-items:center !important;
}

/* === S304-RUNDE3-HAUS-2209 · Impressum auf der Startseite ================

   ⛔⛔ BEFUND, den die Sonde gefunden hat und den ich fast uebersehen haette:
   die Startseite hat GAR KEINE Fusszeile — und damit keinen Impressum-Link.
   Ursache, gemessen (kein Verdacht):

       [inline]  body.template-index .footer-sections{ display:none !important }

   Das ist ABSICHT: die Startseite ist ein Vollbild-Held (Seitenhoehe 827,
   Held 794). ⭐ Und es ist NICHT von mir — im LIVE-Theme genauso gemessen:
   Fusszeile 0×0, „Impressum" kommt im ganzen Seitentext nicht vor.

   Warum ich es trotzdem anfasse: in Deutschland muss das Impressum von
   JEDER Seite unmittelbar erreichbar sein. Die Startseite ist die meist-
   besuchte. Das ist der klassische Abmahnfall.

   ⭐ Die Loesung nimmt dem Entwurf nichts: der Held bleibt unberuehrt, es
   kommt nur eine schmale Rechtszeile UNTER ihn. Logo, Sozial-Symbole und
   der zweite Fussblock bleiben auf der Startseite aus — ich hebe die
   Entscheidung nicht auf, ich mache nur die Pflichtangabe erreichbar.
   ========================================================================= */

html body.template-index .footer-sections{ display:block !important; }
html body.template-index .footer-sections .shopify-section-group-group-footer{ display:block !important; }
html body.template-index footer.site-footer-wrapper{
  display:block !important;
  /* 01:00: Rand und Radius raus — der Fuss ist jetzt ein durchgehender
     Block ueber die volle Breite wie auf allen anderen Seiten
     (S304-FUSS-2409), nicht mehr eine eingerueckte Karte. */
  padding:14px 0 2px !important;
  margin:0 !important;
  border-radius:0 !important;
}
/* ⛔⛔ AUFGEHOBEN 01:00 — DER GRUND VON OBEN GILT NICHT MEHR.
   Hier stand: „Logo, Sozial-Symbole und der zweite Fussblock bleiben auf
   der Startseite aus — ich hebe die Entscheidung nicht auf, ich mache nur
   die Pflichtangabe erreichbar." Das war am 22.09. richtig: die Startseite
   war ein reiner Vollbild-Held ohne Fuss.
   Seit dem 24.09. scrollt sie und hat unter dem Held eine Kategorie-
   Sektion (S304-STARTSEITE-KATEGORIEN-2409). Ein Fuss, der dort nur aus
   fünf Rechtslinks besteht, sieht abgeschnitten aus — **im Bild gesehen,
   nicht gemessen**: kein Logo, keine Symbole, keine Sprachzeile.
   ⭐⭐ **Eine Regel, die eine Entscheidung absichert, muss sterben, wenn
   die Entscheidung stirbt.** Sonst haelt sie einen Zustand fest, den
   niemand mehr will — und sie tut es leise, weil sie ja „absichtlich" war.
   Das ist heute schon die dritte dieser Art (Fuss-`:not()`,
   IC-Streifen-Ausschluss, diese hier). */
html body.template-index footer.site-footer-wrapper .footer__logo__wrapper,
html body.template-index footer.site-footer-wrapper .s304-social,
html body.template-index section.supporting-menu{
  display:block !important;
}
html body.template-index footer.site-footer-wrapper .s304-social{
  display:flex !important;
}
html body.template-index footer.site-footer-wrapper .s304-legal{
  display:flex !important;
  flex-wrap:wrap !important;
  justify-content:flex-start !important;
  gap:0 18px !important;
}

/* ── Tippziel Logo ────────────────────────────────────────────────────────
   Meine erste Fassung `html body .header__logo .header__logo__link` = 2
   Klassen + 2 Typen = (0,2,2) und hat VERLOREN. Eine Klasse mehr, und zwar
   die, die wirklich am Element steht: `.header__logo--image`. */
/* ⛔⛔ HIER STAND EINE REGEL, DIE DAS LOGO UM 48 % GESTAUCHT HAT.
   Sie lautete: `min-height:41px; padding:9px 12px; display:inline-flex`
   auf `.header__logo__link` — und ich hatte sie geschrieben, um MEINE
   EIGENE Tippziel-Regel (>=36 px) zu erfuellen.

   Die Kette, live nachgemessen:
     theme.css  .image-wrapper img        { width:100%; height:100% }
     theme.css  .header__logo__link       { width: var(--logo-width) }
     s304-haus  .header__logo__link       { min-height:41px !important }
   Das Theme bemisst den Logo-Link ueber eine SERVERSEITIG gerechnete
   Variable; die Hoehe folgt dem Seitenverhaeltnis. Mein `min-height` hat
   den Kasten auf 59 px aufgeblasen, das Bild fuellt ihn (`height:100%`),
   die Breite blieb. Aus 70×23 (3,04) wurde 94×59 (1,59).

   ⭐⭐ DIE LEHRE, die heute die teuerste ist:
   **Meine Pruefsonde hat die Aenderung VERLANGT und kann den Schaden
   NICHT SEHEN.** Sie misst Kastengroessen, nicht ob ein Bild verzerrt ist.
   Ein Pruefer, der nur eine Achse kennt, treibt den Bau in genau die
   Richtung, die auf dieser Achse gut aussieht.

   ⭐ Der richtige Weg, falls die Trefferflaeche spaeter doch groesser soll:
   NICHT den Link aufblasen, sondern dem ELTERN-Element `.header__logo`
   Polster geben — das laesst die Bildmasse unberuehrt. Oder ein
   `::after` mit negativem Versatz. Hier bleibt erst einmal alles so, wie
   das Theme es rechnet.
   ⛔ Ein Logo ist ausserdem kein kritisches Tippziel: es fuehrt nach
   Hause, und daneben steht der Burger. Eine verzerrte Wortmarke ist der
   deutlich groessere Schaden. */

/* === S304-RUNDE6-HAUS-2209 · die Kachel gehört ins Haus ==================

   ⛔ ARCHITEKTURFEHLER, den die Sonde auf /search aufgedeckt hat:
   ich hatte die Produktkachel in `s304-kat.css` gestylt — und die laedt nur
   auf Kategorieseiten. Gemessen auf /search: `.product-item` 194×269 r0,
   also der alte Stil, waehrend dieselbe Kachel auf /collections/walletchains
   169×235 r18 mit Wurf ist. ZWEI Gesichter fuer dasselbe Ding.

   ⭐ Eine Produktkachel sieht ueberall gleich aus — Suche, aehnliche
   Produkte, zuletzt gesehen, Cross-Sell im Korb. Also gehoert sie hierher.
   In `s304-kat.css` bleibt nur, was WIRKLICH kategoriespezifisch ist:
   der Kopf und die Raster-Raender.

   ⛔ Und wieder: KEIN eigenes Markup. Die drehenden Videos haengen in
   `.product-item__bg` — hier wird nur gestylt, nie gebaut.
   ========================================================================= */

html body .product-item{
  background:#FFFFFF !important;
  border-radius:18px !important;
  padding:8px 8px 2px !important;
  box-shadow:var(--s304-wurf) !important;
  overflow:visible !important;
}
html body .product-item .product-item__image{
  border-radius:12px !important;
  overflow:hidden !important;
  background:#FFFFFF !important;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.95),
              inset 0 -18px 18px -16px rgba(107,107,111,.18),
              0 6px 14px -6px rgba(48,48,52,.22) !important;
}
html body .product-item .product-information{
  padding:0 !important;
  margin-top:6px !important;
  text-align:left !important;
}
html body .product-item .product-information .product-link{
  padding:8px 0 !important;
  margin-bottom:-6px !important;
  min-height:38px !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  text-decoration:none !important;
}
html body .product-item .wc-quick-atc{
  box-sizing:content-box !important;
  padding:9px !important;
  background-clip:content-box !important;
  min-width:0 !important;
}
/* Der „2 FÜR 1"-Chip nach oben links. */
html body .product-item .product-item__image .badge-box-container{
  position:absolute !important;
  left:6px !important; top:6px !important;
  bottom:auto !important; right:auto !important;
  transform:none !important;
  z-index:4 !important;
}
html body .product-item .product-item__image .badge-box-container .badge{
  font-size:8.5px !important;
  font-weight:700 !important;
  letter-spacing:.06em !important;
  background:var(--s304-ink) !important;
  color:#FFFFFF !important;
  padding:3px 7px !important;
  border-radius:99px !important;
}

/* Raster: ueberall Luft zwischen den Kacheln, nicht nur in der Kategorie. */
html body .grid-outer > .grid{
  gap:9px !important;
  padding-left:20px !important;
  padding-right:20px !important;
}

/* === S304-RUNDE7-HAUS-2209 · zugeklappte Akkordeons waren offen ==========

   ⛔⛔ THEME-WEITER FEHLER, gefunden von der Sonde auf ZWEI Seiten:
   ein `<details>` mit `open=false` zeigt seinen Inhalt trotzdem.

     Produktseite   details 47 px  ·  Antwort 90 px, 4 uebereinander
     Inner Circle   details 66 px  ·  Antwort 102–150 px, 5 uebereinander

   `overflow: visible`, `max-height: none`, und KEINE Regel setzt `display`
   auf die Antwort — die Vorgabe des Browsers wird von irgendetwas
   ausgehebelt. ⭐ Ich jage die Ursache nicht weiter, ich mache das
   Verhalten EXPLIZIT. Das haelt auch dann, wenn die Ursache zurueckkommt.

   ⛔ Warum das ernst ist und nicht kosmetisch: auf der Inner-Circle-Seite
   standen fuenf Antworten uebereinander im Text. Wer das liest, liest Mist.

   ⚠️ Nebenwirkung, bewusst in Kauf genommen: eine Hoehen-Animation beim
   Aufklappen braucht den Inhalt im Fluss. Wo eine war, klappt es jetzt
   ohne Uebergang auf. Richtig lesbar schlaegt weich animiert.
   ========================================================================= */
html body details:not([open]) > *:not(summary){
  display:none !important;
}
html body details[open] > *:not(summary){
  display:block !important;
}

/* === Graue Vollbreit-Bloecke in Kaesten ==================================
   Gemessen auf /pages/inner-circle:
     .ic-page         387×2475  #F1F1F1  r0
     .ic-benefits     387×600   #F2F2F2  r0
     .ic-how-it-works 387×510   #F2F2F2  r0
     .ic-faq          387×491   #F2F2F2  r0
   Vier randlose graue Floeze — die Sprache des alten Themes. Im Kastenstil
   ist der Grund weiss und die Abschnitte sind eingerueckte Karten.
   ========================================================================= */
html body .ic-page{
  background:#FFFFFF !important;
}
html body .ic-benefits,
html body .ic-how-it-works,
html body .ic-faq{
  margin:0 var(--s304-rand) 14px !important;
  border-radius:var(--s304-r) !important;
  background:#FFFFFF !important;
  box-shadow:var(--s304-wurf) !important;
  overflow:hidden !important;
}

/* === S304-RUNDE8-HAUS-2209 · eine Klasse zu wenig, zum dritten Mal =======
   `html body .ic-page` = 1 Klasse + 2 Typen = (0,1,2). Das Element traegt
   `.ic-page.ic-landing`, und die Regel mit BEIDEN Klassen ist (0,2,x) und
   gewinnt. ⭐ Derselbe Zaehlfehler wie heute schon beim Kaufknopf und beim
   Logo: die Klassenspalte wird zuerst verglichen, Typen wiegen nichts auf.
   Regel fuer mich: **immer alle Klassen mitschreiben, die am Element stehen.**
   ========================================================================= */
html body .ic-page.ic-landing,
html body div.ic-page.ic-landing{
  background:#FFFFFF !important;
}

/* === S304-RUNDE9-HAUS-2209 · die Klasse, die s304-haus.js vergibt ========
   `s304-haus.js` markiert jede randlose Farbflaeche mit `.s304-kasten`.
   Ausgenommen (absichtlich, siehe dort): Helden, Kopf, Fuss, weisse Flaechen
   und alles, was schon rund ist.
   ========================================================================= */
html body .s304-kasten{
  margin-left:var(--s304-rand) !important;
  margin-right:var(--s304-rand) !important;
  margin-bottom:14px !important;
  border-radius:var(--s304-r) !important;
  overflow:hidden !important;
  width:auto !important;
  max-width:none !important;
}

/* === S304-RUNDE10-HAUS-2209 · Knöpfe und Felder im Haus ==================
   Die Sonde auf /pages/kontakt: `button.btn.btn--primary 355×36 »Senden«`.
   Knapp unter der Grenze — und vor allem in einer anderen Sprache als der
   Kaufknopf (58 hoch, r99). Ein Formularknopf und ein Kaufknopf muessen
   nicht gleich GROSS sein, aber gleich GEFORMT.
   ⛔ Der Kaufknopf bleibt bei 58: seine Regel in `s304-pdp.css` hat mehr
   Klassen und gewinnt. Das ist gewollt, nicht zufaellig.

   ⭐ Eingabefelder gleich mit: ein 36-px-Feld ist auf dem Handy dieselbe
   Zielscheibe wie ein 36-px-Knopf, und iOS zoomt bei Schrift unter 16 px
   beim Antippen in das Feld hinein — deshalb steht 16 px hier fest.
   ========================================================================= */
html body .btn,
html body button.btn,
html body input[type="submit"]{
  min-height:48px !important;
  border-radius:99px !important;
  font-weight:600 !important;
  letter-spacing:.01em !important;
  text-transform:none !important;
}
html body input[type="text"],
html body input[type="email"],
html body input[type="tel"],
html body input[type="search"],
html body input[type="password"],
html body textarea,
html body select{
  min-height:48px !important;
  border-radius:14px !important;
  font-size:16px !important;
  padding:12px 14px !important;
}
html body textarea{
  min-height:110px !important;
}

/* === S304-RUNDE11-HAUS-2209 · der Knopf, der eckig blieb =================
   Gemessen, wer gewinnt (nicht geraten):
     theme.css   .cart__checkout.btn--primary  border-radius:0  !important  (0,2,0)
     s304-haus   html body .btn                border-radius:99 !important  (0,1,2)
   Klassenspalte 1 < 2 → meine Regel verliert. Mit ZWEI Klassen und zwei
   Typen steht es 2:2 in der Klassenspalte, und die Typenspalte entscheidet
   zu meinen Gunsten: (0,2,2) > (0,2,0).
   ⭐ Das ist heute der vierte Fall desselben Zaehlfehlers. Merksatz:
   **so viele Klassen mitschreiben, wie der Gegner hat — dann erst zaehlen
   die Typen.**

   ⭐ Und der Fund nebenbei: das gemessene Element war gar nicht der
   Kontaktknopf, sondern `cart__checkout` aus der Warenkorb-Schublade.
   Damit bekommt der Kasse-Knopf dieselbe Form wie der Kaufknopf.
   ========================================================================= */
html body .btn.btn--primary,
html body .btn.btn--solid,
html body .btn.btn--full,
html body .btn.cart__checkout,
html body .btn.btn--large,
html body button.btn.btn--primary,
html body input.btn[type="submit"]{
  border-radius:99px !important;
  min-height:48px !important;
  text-transform:none !important;
}

/* === S304-RUNDE12-HAUS-2209 · die Schubladen, endlich richtig benannt ====
   ⛔ MEIN FEHLER: ich hatte auf `.drawer--navigation` und `.drawer--menu`
   gezielt. Die Menue-Schublade heisst in diesem Theme `.drawer--header`.
   Eine Regel auf einen Namen, den es nicht gibt, ist stumm — und sie sieht
   im Quelltext aus wie erledigte Arbeit. Gemessen statt vermutet:

     #mobile-menu-…  class="drawer drawer--header is-open drawer--animated"
     .drawer__inner  387×812 @L0  weiss  r0

   Eintraege: INNER CIRCLE · WALLETCHAINS · BRACELETS · ESSENTIALS ·
   ABOUT US · BECOME A CREATOR (342×78, 17 px) — die sind gut getroffen.
   Klein sind nur VERSAND & RETOUREN und FAQ (141×20, 11 px).

   ⚠️ Was ich hier NICHT tue: dem Menue Rechtslinks hinzufuegen. Die
   Menuepunkte stehen in der Shopify-Navigation, nicht im Theme — das waere
   eine Aenderung am Laden, nicht am Entwurf. Das Impressum ist seit
   RUNDE3 ueber die Fusszeile auf JEDER Seite erreichbar, auch auf der
   Startseite. Damit ist die Pflicht erfuellt.
   ========================================================================= */
html body .drawer--header .drawer__inner,
html body .drawer--navigation .drawer__inner{
  border-radius:0 var(--s304-r) var(--s304-r) 0 !important;
  overflow:hidden !important;
}
html body .drawer--cart .drawer__inner,
html body #cart-drawer .drawer__inner{
  border-radius: var(--s304-r)   /* 23.09.: war `… 0 0 …`, also nur links gerundet. Seit das Blatt oben und unten schwebt, muss es ringsum rund sein — sonst stossen zwei runde und zwei spitze Ecken aneinander. */ !important;
  overflow:hidden !important;
}
html body .drawer--header .drawer__inner a{
  min-height:36px !important;
  display:inline-flex !important;
  align-items:center !important;
}

/* === S304-RUNDE13-HAUS-2209 · Symbole im Menü ============================
   Zwei Sozial-Symbole im Burger: 14×36. Die Hoehe hatte meine vorige Regel
   schon geholt, die BREITE nicht — `min-height` allein macht ein schmales
   Symbol nicht treffbar. ⭐ Bei einem Tippziel zaehlen beide Achsen; wer
   nur eine setzt, hat die Haelfte repariert und haelt sie fuer ganz.
   ========================================================================= */
html body .drawer--header .drawer__inner a,
html body .s304-social a,
html body footer a[href*="instagram"],
html body footer a[href*="tiktok"]{
  min-width:36px !important;
  min-height:36px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}

/* === S304-RUNDE15-HAUS-2209 · die Sperrkarte liegt außerhalb =============
   Mein Wähler `html body .s304-neu .ic-lock-alt` traf nie: die Sperrkarte
   haengt in `.ic-lock-veil`, und der Schleier sitzt NEBEN `.s304-neu`, nicht
   darin (gemessen: `lock.closest('.s304-neu')` === null).
   ⭐ Ein Waehler, der ins Leere zielt, sieht im Quelltext aus wie erledigte
   Arbeit — das ist heute der zweite Fall (vorher `.drawer--navigation`).
   Regel: **die Elternkette messen, bevor man den Geltungsbereich waehlt.**
   ========================================================================= */
html body .ic-lock-alt,
html body .ic-lock-cta{
  min-height:40px !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
html body .ic-lock-card{
  border-radius:var(--s304-r) !important;
}

/* === S304-RUNDE16-HAUS-2209 · alleinstehende Links im Fließtext ==========
   Die Sonde auf /pages/retoure: `a 108×15 »Widerruf & Retoure«`.
   Das ist kein Link MITTEN in einem Satz (die nimmt die Sonde bewusst aus),
   sondern einer, der allein in seinem Absatz steht — also faktisch ein
   Knopf, der wie Text aussieht.
   ⭐ `:only-child` trifft genau diesen Unterschied, ohne echte Fliesstext-
   Links aufzublaehen. Ein Link mitten im Satz darf 15 px hoch sein; einer,
   der allein in der Zeile steht, ist ein Ziel.
   ========================================================================= */
/* ⛔ 23.09. GESTRICHEN — hier stand:
       html body main p > a:only-child, html body main li > a:only-child
       { min-height: 36px !important; display: inline-flex !important; }

   Das ist der CSS-ZWILLING des JS-Fehlers, den ich heute in
   `linkeAlsZieleFassen()` behoben habe: **`:only-child` zaehlt nur
   ELEMENT-Kinder, keine Textknoten.** Ein Link mitten im Fliesstext ist
   damit `:only-child`, sobald er das einzige Element im Absatz ist —
   und bekam 36 px Hoehe. Gemessen an der Pflichtzeile: aus 14 px Zeile
   wurden 36.

   ⭐ Statt die Regel zu flicken faellt sie weg: **das Tippziel hat jetzt
   EINE Zustaendigkeit**, naemlich `s304-haus.js`. Dort wird auf Textknoten
   geprueft, was CSS gar nicht kann. Zwei Regelwerke fuer dieselbe Frage
   laufen unweigerlich auseinander.
   Gegengeprueft nach dem Streichen: 17 alleinstehende Links auf der PDP,
   alle weiterhin >= 36 px — das JS erledigt sie. */


/* === S304-KOPFLEISTE-2209 · die Kopfleiste wird eine Karte ==============
   Fassung A: margin 6px 16px 0 · h66 · r22 · eigene Flaeche.
   Live vorher: 402×46 @L0 · r0 · vollstaendig transparent.

   ⛔ WAS ICH BEWUSST NICHT ANFASSE: die HOEHE. Der Inhalt beginnt bei T78
   = 32 (Band) + 46 (Kopf), und der Versatz haengt an `--header-height`.
   Eine Hoehenaenderung verschiebt die ganze Seite — Fassung A saehe naeher
   aus, aber der Preis waere ein Versatz, den ich auf jeder Flaeche
   nachziehen muesste. **Form ja, Mechanik nein.**

   ⛔ `left`/`right` statt `margin`: die Kopfleiste ist `position:absolute`.
   Ein `margin` VERSCHIEBT ein absolut positioniertes Element, es verengt es
   nicht — genau dieser Fehler hat heute frueh schon einmal das Korbsymbol
   aus dem Bild geschoben.
   ========================================================================= */
html body .theme__header{
  left:16px !important;
  right:16px !important;
  width:auto !important;
  max-width:none !important;
  border-radius:22px !important;
  background:#FFFFFF !important;
  box-shadow:0 10px 26px -12px rgba(24,24,26,.40) !important;
  
}
/* Der Kopf darf innen etwas Luft haben, ohne hoeher zu werden. */
html body .theme__header .header__mobile{
  padding-left:10px !important;   /* 23:35 mit der Regel weiter unten gleichgezogen */
  padding-right:10px !important;
}


/* === S304-FUSSGRUPPE-2209 · die Karte war unsichtbar, weil der Rahmen ===
   Im Bild sah der Fuss randlos und eckig aus. Gemessen war er aber
   **370 @L16 r22** — also korrekt.

   ⭐ Die Ursache lag eine Ebene HOEHER: `footer.footer-sections` ist
   **402×493 @L0 und selbst schwarz**. Meine schwarze Fuss-Karte lag darin
   und war deshalb nicht zu unterscheiden — schwarz auf schwarz.

   ⛔ Das ist heute der vierte Fall, in dem mein Augenmass gegen die Messung
   verloren hat (der „zu dicke" Fortschrittsbalken, die „sichtbare"
   Fehlermeldung, das „leere" Hauptbild, jetzt der Fuss). Jedes Mal war das
   Element richtig und der KONTEXT falsch.
   **Merksatz: sieht etwas falsch aus, aber misst sich richtig — dann liegt
   es am Nachbarn oder am Elternteil, nicht am Element.**
   ========================================================================= */
html body footer.footer-sections{
  background:#FFFFFF !important;
}


/* === S304-LOGOZIEL-2209 · Tippziel ohne Verzerrung ======================
   Heute Abend habe ich `min-height:41px` auf `.header__logo__link` gesetzt,
   um die 36-px-Regel zu erfuellen — und damit das Logo um 48 % gestaucht
   (94×59 statt 70×23). Die Regel habe ich zurueckgenommen; seitdem meldet
   die Sonde das Tippziel wieder mit 70×23.

   ⭐ Der Weg, den ich damals schon in den Kommentar geschrieben, aber nicht
   gegangen bin: **das Polster gehoert an den ELTERNTEIL.** `.header__logo`
   waechst, das Bild bleibt unberuehrt — die Trefferflaeche des Links waechst
   mit, weil er den Elternteil ausfuellt.

   ⛔ `.header__logo__link` selbst bekommt NUR `display:block` und volle
   Flaeche — keine eigene Hoehe, kein `min-height`, nichts, was das Bild
   dehnen koennte. Das Bild behaelt `height:26px; width:auto`.
   ========================================================================= */
html body .header__logo{
  padding:9px 12px !important;
  box-sizing:content-box !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
html body .header__logo .header__logo__link{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 !important;
  min-height:0 !important;
  height:auto !important;
}


/* === S304-LOGOZIEL2-2209 · jetzt ist das Polster gefahrlos ==============
   Der Elternteil hat nichts gebracht: der Link ist `inline-flex` und
   bemisst sich am Inhalt, also blieb er 70×23.

   ⭐ Das Polster darf JETZT wieder an den Link — der Grund, warum es beim
   ersten Versuch das Logo zerstoert hat, ist behoben:
     damals  `theme.css .image-wrapper img { height:100% }` + mein
             `min-height:41px` am Link ⇒ Bild auf 59 px gedehnt
     heute   `S304-FASSUNGA2` setzt am Bild `height:26px; width:auto`
   Eine feste Bildhoehe kann von der Kastenhoehe nicht mehr gedehnt werden.

   ⛔ Deshalb steht hier `min-height`, aber am Bild NIE eine zweite
   Massangabe. **Ein Bild bekommt EINE Massangabe, die andere ist `auto`** —
   die Regel, an der ich heute zweimal gescheitert bin.
   ========================================================================= */
html body .header__logo .header__logo__link{
  min-height:38px !important;
  min-width:38px !important;
  padding:8px 10px !important;
  box-sizing:content-box !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
html body .header__logo .header__logo__link img{
  height:26px !important;
  width:auto !important;
  max-width:none !important;
  flex:0 0 auto !important;
  align-self:center !important;
}


/* === S304-KOPFRUECKEN-2309 · der Inhalt scrollte am Kopf vorbei =========
   Mein `::before` mit `z-index:-1` hat nicht gewirkt: es landet hinter
   seinem eigenen Elternteil, nicht ueber dem Seiteninhalt — die beiden
   liegen in verschiedenen Stapelkontexten.

   ⭐ Der Ruecken gehoert an die KOPFGRUPPE, nicht an die Karte:
   `.shopify-section-group-group-header` ist 402 breit und liegt ueber dem
   Inhalt. Sie bekommt Weiss, die Karte darin hebt sich durch ihren Schatten
   ab. So scrollt nichts mehr sichtbar vorbei.
   ========================================================================= */
html body .shopify-section-group-group-header{
  background:#FFFFFF !important;
}
html body .theme__header::before{
  display:none !important;
}
/* Die Karte muss sich vom weissen Ruecken abheben. */
html body .theme__header{
  box-shadow:0 6px 18px -10px rgba(24,24,26,.45), inset 0 0 0 1px rgba(24,24,26,.06) !important;
}


/* === S304-WKHEBEL-2309 · der Versand-Hebel (Fassung F) ==================
   Goldrahmen wie im Entwurf, aber mit der Aussage des Ladens statt der
   Mitgliederwerbung. Er erscheint NUR unterhalb der 80-€-Schwelle und
   verschwindet, sobald der Gratisversand erreicht ist — ein Hebel, der
   immer da ist, ist kein Hebel, sondern Tapete.
   ========================================================================= */
html body .s304-wk-hebel{
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  gap:10px !important;
  cursor:pointer !important;
  margin:0 0 10px !important;
  padding:11px 12px !important;
  border-radius:12px !important;
  background:linear-gradient(#fff,#fff) padding-box,
             linear-gradient(90deg,#b8860b,#daa520,#ffd700,#daa520,#b8860b) border-box !important;
  border:1.5px solid transparent !important;
}
html body .s304-wk-hebel__t{
  font-size:12px !important;
  line-height:1.42 !important;
  color:#4A443E !important;
}
html body .s304-wk-hebel__t b{
  color:#15130F !important;
  font-weight:700 !important;
}
html body .s304-wk-hebel__a{
  flex:0 0 auto !important;
  font-size:11px !important;
  font-weight:700 !important;
  letter-spacing:.05em !important;
  color:#15130F !important;
  white-space:nowrap !important;
  border-bottom:1.5px solid #daa520 !important;
  padding-bottom:2px !important;
  min-height:32px !important;
  display:inline-flex !important;
  align-items:center !important;
}


/* === S304-EINKNOPF-2309 · die Leiste ruht, wenn der Knopf da ist ========
   Sie wird unsichtbar und unantastbar — aber NICHT `display:none`, weil das
   Theme-JS an ihr haengt (Preis, Varianten, Warenkorb-Anbindung).
   ⭐ Ein weicher Uebergang, damit es nicht blinkt, wenn man am Knopf
   vorbeiscrollt.
   ========================================================================= */
html body .cart-bar.s304-leiste-ruht{
  opacity:0 !important;
  pointer-events:none !important;
  transform:translateY(8px) !important;
}
html body .cart-bar{
  transition:opacity .18s ease, transform .18s ease !important;
}


/* === S304-KOPF2-2309 · der Kopf klebt, sein Rücken nicht ================
   Enzo: „wenn ich runter scrolle, ist oben der Header so abgeschnitten"
   und „Burger Menü und dieses Einloggen … ist abgeschnitten".

   GEMESSEN bei scrollY 500:
     .theme__header                      370×46 @L16  T0→46   position:absolute
     .shopify-section-group-group-header  402×46      T-468   ← weggescrollt
     .header__mobile__hamburger                       T3→67   ← 64 px hoch
     Konto-Symbol                                     T3→67

   ⛔ URSACHE 1: Ich hatte den weissen Ruecken an die GRUPPE gehaengt. Der
   Kopf klebt aber (per JS), die Gruppe nicht — beim Scrollen ist der
   Ruecken weg und der Inhalt blitzt links und rechts an der 370-px-Karte
   vorbei. **Ein Ruecken muss dort haengen, wo das Element wirklich ist.**

   ⛔ URSACHE 2: Burger und Konto sind 64 px hoch in einem 46-px-Kopf —
   sie ragen 21 px heraus. Das kommt von MEINEN Tippziel-Regeln
   (`min-height:38px` + Polster). **Ich habe die Trefferflaeche vergroessert,
   ohne zu pruefen, ob der Kopf sie ueberhaupt fasst.**
   ⭐ Loesung ohne Rueckschritt: das Polster wird senkrecht kleiner, die
   Breite traegt die Trefferflaeche. 44×46 reicht.

   ⭐ NEUE BAUART: der Kopf selbst ist voll breit und weiss (der Ruecken),
   die KARTE ist `.header__mobile` darin. Damit klebt beides zusammen.
   ========================================================================= */

/* Der Kopf: voller weisser Ruecken, keine eigene Karte mehr. */
/* ⛔⛔ KORREKTUR 24.09. — DER RUECKEN WAR WEISS, UND DAS WAR ZWEIMAL FALSCH.
   Enzo: „der Ausschnitt oben soll den gruenen Hintergrund um die
   abgerundeten Ecken zeigen" und „beim Scrollen ist da eine weisse Linie
   unter dem Header".
   ⭐ BEIDES IST DERSELBE RUECKEN. Er ist voll breit und deckend — richtig,
   damit beim Kleben nichts links und rechts vorbeiblitzt. Aber er war
   **weiss**, und die Karte darin ist auch weiss: weiss auf weiss zeigt
   keine Rundung. Und gegen den Sandgrund steht genau diese weisse Flaeche
   als Linie unter dem Kopf.
   ⭐ Der Ruecken muss der GRUND sein, nicht eine Farbe. Dann schwebt die
   Karte sichtbar darauf und es gibt keine Kante mehr.
   ⛔ NACHBAR GEPRUEFT: die Glyphen sind ueberall dunkel, weil die KARTE
   (`.header__mobile`) weiss bleibt — daran aendert sich nichts. */
html body .theme__header{
  left:0 !important;
  right:0 !important;
  width:100% !important;
  max-width:none !important;
  background:#FFFFFF !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:0 !important;
}

/* Die Karte wandert nach innen — sie klebt jetzt mit dem Kopf. */
html body .theme__header .header__mobile{
  /* 23:35 — Enzo: „2px länger links und rechts, ein bisschen mehr Platz
     zwischen Ende zum Burger-Menü und Ende zum Card."
     GEMESSEN vorher: Pille [16, 5, 370, 44], Polster 0 4px, und das
     **sichtbare** Burger-Symbol (24×24) saß 4 px innerhalb der Kante —
     bei Radius 22 läuft die Rundung genau dort. Deshalb wirkte es
     gequetscht, obwohl die Pille breit genug ist.
     ⛔ Nicht verwechseln: die Tippfläche des Burgers ist 44×44 und ragt
     bauartbedingt über die Pille hinaus. Das ist richtig so und bleibt —
     gemessen werden muss das Symbol, nicht der Knopf. */
  margin:0 14px !important;
  border-radius:30px !important;
  background:#FFFFFF !important;
  box-shadow:0 6px 18px -10px rgba(24,24,26,.45), inset 0 0 0 1px rgba(24,24,26,.06) !important;
  padding-left:10px !important;
  padding-right:10px !important;
  box-sizing:border-box !important;
}

/* Tippziele: Breite traegt die Flaeche, nicht die Hoehe. */
html body .header__mobile__hamburger,
html body .header__mobile .navlink,
html body .header__mobile__right a,
html body .header__mobile__right button{
  min-width:44px !important;
  min-height:0 !important;
  height:44px !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
html body .header__logo .header__logo__link{
  min-height:0 !important;
  height:44px !important;
  padding:0 10px !important;
}


/* === S304-MENUEFUSS-2309 · eine zurueckgenommene Diagnose ================
   ⛔⛔ DIESER BLOCK HIESS ZUERST „S304-WEISSE-LINIE" UND BEHAUPTETE, Enzos
   „beim Warenkorb ganz unten so eine weiße Linie" gefunden zu haben.
   **Das war falsch, in zwei Stufen — beide selbst gefangen:**

   1. Ich meldete `ul.popout-list` (2 × 2 px, weisser Grund, zwei Raender in
      rgb(247,247,247)) als Verursacher. Dann gemessen, was ich beim ersten
      Mal nicht mitgemessen hatte: die Liste traegt `opacity: 0` UND
      `visibility: hidden`. **Sie war nie sichtbar** — also nie eine Linie.
      ⭐ Lehre: eine Farbmessung ohne Sichtbarkeitsmessung ist keine Aussage.

   2. Daraufhin suchte ich erneut und fand „keine hellen Linien". Die
      Positivkontrolle rettete die Meldung: ich habe eine echte helle Linie
      in den Fuss eingebaut — **die Suche fand nicht einmal die**. Der Grund:
      der Behaelter war zu. Und die Elternkette sagt, WELCHER:
          .drawer__foot → .drawer__inner → HEADER-DRAWER.drawer--header
                                         → MOBILE-MENU
      ⛔ **Das ist das Burger-Menue, nicht der Warenkorb.** Ich habe die
      ganze Untersuchung am falschen Element gefahren. Der Warenkorb heisst
      hier `.cart__foot__inner` — das sah ich nur, solange er offen war.

   ⭐ WAS BLEIBT: die Regeln unten sind harmlos und sinnvoll — der
   Sprachumschalter im **Menuefuss** bekommt zugeklappt keine sichtbaren
   Raender. Sie beheben aber NICHT Enzos gemeldete Linie. Die ist weiterhin
   offen und muss am geoeffneten Warenkorb gemessen werden.
   ⛔ Die frueher hier stehende Regel `overflow: visible` auf `.popout` ist
   entfernt: ihre Begruendung („darf nicht herausragen") bewirkte das
   Gegenteil, und noetig war sie nie — die Eintraege sind `visibility:hidden`.
   ========================================================================= */
html body .drawer__foot .popout-list,
html body .cart__foot .popout-list{
  border-top-color:transparent !important;
  border-bottom-color:transparent !important;
  border-left-color:transparent !important;
  border-right-color:transparent !important;
}
/* Aufgeklappt braucht sie wieder eine Kante — dann ist sie hoch genug,
   dass eine Haarlinie sie nicht mehr als Strich erscheinen laesst. */
html body .drawer__foot .popout-list.is-visible,
html body .drawer__foot .popout-list[style*="opacity: 1"],
html body .cart__foot .popout-list.is-visible{
  border-color:rgba(0,0,0,.08) !important;
  box-shadow:0 10px 26px -10px rgba(24,24,26,.32) !important;
}

/* === S304-KORBLINIE-2309 · der beste Kandidat, ehrlich benannt ===========
   Enzo: „beim Warenkorb ganz unten darunter … so eine weiße Linie."

   Am **geoeffneten** Warenkorb gemessen (der vorige Anlauf lief am
   geschlossenen Burger-Menue — siehe S304-MENUEFUSS-2309), mit
   Positivkontrolle: eine eingebaute Testlinie wurde gefunden, die Suche
   taugt also. Ergebnis, neun helle Linien, davon drei ueber 300 px breit:

       y=374  .ic-cross-sell      border-top     rgb(236,236,236)
       y=498  .ic-cross-sell      border-bottom  rgb(224,224,224)   ← dieser
       y=631  .cart__foot__inner  border-top     rgb(232,232,232)

   ⭐ Warum dieser: er sitzt am **unteren** Rand des Empfehlungsblocks, genau
   dort, wo der Warenkorbinhalt endet — und darunter folgen 47 px Leerraum
   (`.drawer__foot` hat `margin-top:auto`). Eine Haarlinie, unter der nichts
   mehr kommt, steht frei im Raum und liest sich als Strich.
   Die beiden anderen trennen jeweils zwei Bloecke voneinander und tun damit
   ihre Arbeit — die bleiben.

   ⛔ EHRLICH: ich kann nicht beweisen, dass Enzo genau diese meint. Er hat
   sie beschrieben, nicht gezeigt. Das hier ist der begruendete beste
   Kandidat, kein belegter Treffer. Bleibt die Linie fuer ihn sichtbar,
   ist die Messliste oben der naechste Ansatzpunkt.
   ========================================================================= */
html body .drawer--cart .ic-cross-sell{
  border-bottom-color:transparent !important;
}


/* === S304-MENUE-2309 · das Burger-Menue in der Ladensprache =============
   Enzo: „aber auch das Burger Menü und so [muss] komplett so passen."

   ⛔ ES GIBT KEIN ARTEFAKT-BLATT FUERS MENUE. Ich erfinde deshalb keinen
   neuen Stil, sondern uebertrage die Werte, die im Laden bereits gemessen
   sind — `.s304-karte` auf der PDP und die Kacheln der Kategorieseite:
       Karte      weiss · r22 · Wurf 0 16px 36px -14px rgba(30,24,18,.44)
                                    + 0 3px 8px -2px rgba(30,24,18,.13)
       Kachel     weiss · r18 · derselbe Wurf
       Rand       16 px
       Grund      #F4F1ED

   GEMESSEN, was das Menue stattdessen hatte:
       .menu-304__primary-link   background rgb(245,245,245)
                                 border-radius 0 · box-shadow none
                                 padding 14px 16px · margin 4px 0 · x = 15
   Also: graue Kaesten mit scharfen Ecken in einem Laden, in dem alles
   gerundet ist und einen Wurf traegt. Genau das meinte Enzos „muss passen".

   ⭐ Der Grund des Blattes wird getoent (#F4F1ED), damit die Kacheln weiss
   sein koennen — weiss auf weiss traegt nur der Wurf, und das ist auf einer
   ganzen Menueflaeche zu wenig Halt. So ist es dieselbe Schichtung wie
   ueberall sonst: getoenter Grund, weisse Karten darauf.
   ======================================================================== */
html body .drawer--header .drawer__inner,
html body mobile-menu .drawer__inner{
  background:#FFFFFF !important;
}
/* ⛔ 23.09.: hier stand `padding: 16px` auf `.menu-304__primary`. Gemessen,
   was dabei herauskam: die Kachel begann bei **x = 31 statt 16** — der
   Abstand hat sich ADDIERT, weil `.mobile-menu__block` bereits 15 px traegt.
   ⭐ Derselbe Fehler wie beim Kaufknopf am 22.09. („margin:16px auf zwei
   verschachtelten Ebenen"). Ein Rand wird an EINER Stelle gesetzt — und
   zwar an der, die ihn schon hat. */
html body .mobile-menu__block{
  padding-left:16px !important;
  padding-right:16px !important;
}
html body .menu-304__primary{
  padding-left:0 !important;
  padding-right:0 !important;
}
html body .menu-304__primary-link{
  background: rgba(255,255,255,.46) !important;
  border-radius:18px !important;
  box-shadow:0 16px 36px -14px rgba(24,24,26,.44),
             0 3px 8px -2px rgba(24,24,26,.13) !important;
  margin:4px 0 !important;
  border:0 !important;
    -webkit-backdrop-filter:blur(32px) saturate(1.3) !important;
    backdrop-filter:blur(32px) saturate(1.3) !important;
  }
/* Die Fussleiste (Versand, FAQ, Sprache) bekommt denselben Rand wie oben,
   damit die Kanten durchlaufen. */
html body .drawer--header .drawer__foot,
html body mobile-menu .drawer__foot{
  background:#FFFFFF !important;
  padding-left:16px !important;
  padding-right:16px !important;
}


/* === S304-FOOTER-2309 · Punkte 1 und 2 =================================
   Enzo: „unten hier beim Impressum, also den Futter da drüber ist es so im
   Hintergrund grau und dann wieder weiß. Ich will da eigentlich keinen
   optischen Cut haben." · „du kannst den Futter kleiner gestalten."

   GEMESSEN, Farbe fuer Farbe von oben nach unten abgelesen:
       y 60 – 500   weiss   (Inhalt)
       y 555 – 720  schwarz (site-footer-wrapper)
       y 775        **WEISS WIEDER**  ← der Cut
   Der schwarze Block ist eine eingerueckte Karte (`margin: 0 16px`), also
   steht auch links und rechts Weiss. Und der `<footer>`-Container selbst
   ist weiss, waehrend nur sein Inhalt schwarz ist.

   ⭐ ZWEI ENDEN, EINE URSACHE: der Footer faerbt nur sich selbst, nicht den
   Raum um sich. Also bekommt der Container die Farbe — dann laeuft Schwarz
   bis zum Seitenende durch und die Karte schwimmt nicht mehr in Weiss.

   ⛔ HOMEPAGE UNBERUEHRT: dort ist der Footer per `template-index
   .footer-sections { display: none }` ohnehin ausgeblendet (gemessen am
   22.09., gilt auch live). Eine Farbe an einem unsichtbaren Element
   aendert nichts.

   GROESSE: das Footer-Logo war **127 px hoch** — im Header sind es 26.
   Allein der Logo-Block trug 137 von 413 px.
   ======================================================================= */

/* ── 1 · kein Cut: der Container traegt die Farbe ──────────────────────── */
html body footer.footer-sections{
  background:#000000 !important;
}
html body .site-footer-wrapper,
html body .supporting-menu{
  background:#000000 !important;
}
/* Der Raum unter dem letzten Block gehoert dazu, nicht zur Seite. */
html body footer.footer-sections > :last-child{
  padding-bottom:20px !important;
}

/* ── 2 · kleiner ──────────────────────────────────────────────────────── */
html body .footer__logo__wrapper{
  padding-bottom:4px !important;
  margin-top:0 !important;
}
html body .footer__logo,
html body .footer__logo figure,
html body .footer__logo img{
  height:44px !important;        /* war 127 */
  width:auto !important;
  max-width:170px !important;
  padding-top:0 !important;      /* die figure trug 126,66 px Polster als Platzhalter */
  object-fit:contain !important;
}
html body .site-footer-wrapper{
  padding-bottom:12px !important;   /* war 19,2 */
}
html body .site-footer{
  padding-left:16px !important;
  padding-right:16px !important;
}
html body .s304-social{
  margin-top:0 !important;
  margin-bottom:0 !important;
  gap:20px !important;
}
html body .supporting-menu{
  padding-bottom:0 !important;
}


/* === S304-KATVERSAND-2309 · Punkt 8 ====================================
   Die Versandzeile auf der Kategorieseite. Der Satz wird aus dem Warenkorb
   gespiegelt (siehe `versandAufKategorie` in `s304-haus.js`) — hier steht
   nur sein Kleid. Form aus der PDP-Leiste uebernommen: Pille, 11,5 px.
   ======================================================================= */
html body.s304-kat-an .s304-katversand{
  margin:6px 16px 0 !important;
  padding:8px 14px !important;
  background:#F2F0EC !important;
  border-radius:99px !important;
  font-size:11.5px !important;
  font-weight:600 !important;
  line-height:1.3 !important;
  color:#15130F !important;
  text-align:center !important;
}

/* === S304-MENUE-BUBBLE-2309 · Punkt 27 =================================
   Enzo: „das Burger Menü finde ich auch nicht gut. Da will ich eigentlich,
   dass jeder … einfach eine Bubble ist."
   Die Kacheln standen auf r18 — eine Karte, keine Bubble. Bei 78 px Hoehe
   macht r28 eine deutlich weichere Form, ohne dass das Produktbild rechts
   in einer Pille schwimmt (r99 waere bei dieser Hoehe ein Stadion).
   ======================================================================= */
html body .menu-304__primary-link{
  border-radius:28px !important;
}


/* === S304-KARUSSELL-2309 · Punkte 23, 24, 25 ===========================
   Enzo: „Inner Circle Fits finde ich kannst du auch cooler machen als so
   ein schwebendes — musst du dir da wie so ein virtuelles Karussell
   vorstellen … so mit so Widgets aber so ein bisschen 3D swipet. Gleiches
   gilt für das Zupasst auch. Und auch unten 304supply History muss in so
   einer Bubble irgendwie sein."

   ⭐ ES IST ECHTES 3D, KEIN FAKE. Vorher in der Laufzeit geprueft:
       CSS.supports('animation-timeline', 'view()')  →  true
   Damit haengt die Drehung am Scrollstand, nicht an einem Zeitgeber: was
   in der Mitte steht, ist frontal und voll deckend !important; was zur Seite wandert,
   dreht sich weg und wird blasser. Genau ein Karussell.

   ⛔ DAFUER MUSS DER SWIPER ZUM ECHTEN SCROLLER WERDEN. `view()` misst die
   Lage im Scrollbereich — ein Swiper schiebt aber nur einen `transform` auf
   dem Wrapper, es wird gar nicht gescrollt. Also: `overflow-x: auto` am
   Rahmen, `transform: none` am Wrapper, Schnappen an den Kacheln.
   ⭐ `@supports` deckt den Fall ab, dass ein Browser `view()` nicht kennt:
   dann bleibt ein sauberer Snap-Scroller ohne Drehung — nie ein kaputtes
   Karussell.
   ======================================================================= */

/* ── Der Scroller ─────────────────────────────────────────────────────── */
html body .s304-community .swiper,
html body .s304-fits .swiper{
  overflow-x:auto !important;
  overflow-y:visible !important;
  scroll-snap-type:x mandatory !important;
  -webkit-overflow-scrolling:touch !important;
  scrollbar-width:none !important;
  perspective:900px !important;
  /* 24.09.: fluchtet mit der Ueberschrift (13), laeuft per negativem
     Rand trotzdem ueber die volle Kartenbreite. */
  width:auto !important;
  margin-left:-13px !important;
  margin-right:-13px !important;
  padding:6px 13px 10px !important;
}
html body .s304-community .swiper::-webkit-scrollbar,
html body .s304-fits .swiper::-webkit-scrollbar{ display:none !important; }
html body .s304-community .swiper-wrapper,
html body .s304-fits .swiper-wrapper{
  display:flex !important;
  transform:none !important;
  gap:12px !important;
  transform-style:preserve-3d !important;
}
html body .s304-community .swiper-slide,
html body .s304-fits .swiper-slide{
  scroll-snap-align:center !important;
  flex:0 0 auto !important;
  margin:0 !important;
  background:#FFFFFF !important;
  border-radius:18px !important;
  overflow:hidden !important;
  /* ac2 30.09. Enzo: „Schatten unter Inner Circle Fits und Dazu passt auch weg“.
     Der Schlagschatten wurde vom Swiper (overflow:auto) unten abgeschnitten und
     stand als grauer Balken unter der Reihe. Jetzt nur eine Haarlinie INNEN -
     die kann nicht abgeschnitten werden und haelt weisse Karten auf Weiss lesbar. */
  box-shadow:inset 0 0 0 1px rgba(21,19,15,.07) !important;
}

/* ── Die Drehung, am Scrollstand haengend ─────────────────────────────── */
@supports (animation-timeline: view()){
  /* ac2 30.09. (c9 nach Enzos Live-Regel): „die erste Karte muss gerade und ganz sichtbar sein.“
   Gemessen: im Ruhezustand stand die erste Karte ~10 Grad gedreht und 4 px hinter der Kante
   („IG STEEL“). Der flache Bereich war nur cover 46-54 % - eine ganz sichtbare Karte am Rand
   liegt bei ~74 %. Jetzt flach von 24 bis 76 %: gedreht wird nur, was wirklich am Rand ist. */
@keyframes s304-karussell{
    entry 0%  { transform: rotateY(26deg) scale(.84); opacity:.55; }
    cover 24% { transform: rotateY(0deg)  scale(1);   opacity:1; }
    cover 76% { transform: rotateY(0deg)  scale(1);   opacity:1; }
    exit 100% { transform: rotateY(-26deg) scale(.84); opacity:.55; }
  }
  html body .s304-community .swiper-slide,
  html body .s304-fits .swiper-slide{
    animation:s304-karussell linear both !important;
    animation-timeline:view(inline) !important;
    animation-range:entry 0% exit 100% !important;
  }
  /* ⭐ Wer „weniger Bewegung" eingestellt hat, bekommt keine Drehung —
     dieselbe Ruecksicht, die K6 fuer die drehenden Ketten vorsieht. */
  @media (prefers-reduced-motion: reduce){
    html body .s304-community .swiper-slide,
    html body .s304-fits .swiper-slide{ animation:none !important; }
  }
}

/* Die Bildflaechen in den Kacheln runden mit ─────────────────────────── */
html body .s304-fits .s304-fits__media,
html body .s304-fits .s304-fits__media img,
html body .s304-community .swiper-slide img,
html body .s304-community .swiper-slide video{
  border-radius:14px !important;
}
html body .s304-fits .s304-fits__card{
  padding:6px 6px 8px !important;
}

/* === Punkt 25 · History in eine Bubble ================================= */
html body .s304-hist{
  background:#FFFFFF !important;
  border-radius:22px !important;
  margin:14px 16px !important;
  padding:20px 16px 22px !important;
  box-shadow:0 16px 36px -14px rgba(24,24,26,.44),
             0 3px 8px -2px rgba(24,24,26,.13) !important;
  box-sizing:border-box !important;
  overflow:hidden !important;
}
html body .s304-hist .s304-hist__head,
html body .s304-hist .s304-hist__intro,
html body .s304-hist .s304-hist__track{
  padding-left:0 !important;
  padding-right:0 !important;
}


/* === S304-HEADER-SCROLL-2309 · Punkte 10, 12, 13 =======================
   Enzo: „beim Runterscrollen wäre es doch noch sinnvoll, dass man auf der
   PDP wenigstens noch das Versandziel … im Header hat." · „es soll trotzdem
   auch beim Scrollen noch ein kleiner Abstand sein zwischen dem, was man
   dann runter scrollt und dem Header." · „es muss auch die gleiche Farbe im
   Hintergrund sein, weil das sieht nach einem Bruch aus."

   GEMESSEN beim Scrollen auf y = 700:
       Header klebt bei y 0, 402 × 46
       direkt darunter bei y 45: `.s304-gk-sub` — **Text, ohne jeden Abstand**
       Versandleiste bei y = -612, also laengst weggescrollt
   ⭐ Punkt 13 war schon erfuellt: Header-Grund und Seiten-Grund sind beide
   `rgb(255,255,255)`. Es gibt keinen Farbbruch — was wie einer aussah, ist
   die harte Kante aus Punkt 12.
   ======================================================================= */

/* ── 10 · die Versandleiste bleibt unter dem Header stehen ────────────── */
html body .s304-neu .s304-vkopf{
  position:sticky !important;
  top:46px !important;                 /* genau unter dem 46-px-Kopf */
  z-index:18 !important;
  background:#FFFFFF !important;
  padding-top:6px !important;
  padding-bottom:8px !important;
  margin-bottom:0 !important;
}

/* ── 12 · ein weicher Auslauf statt einer harten Kante ────────────────── */
html body .theme__header::after{
  content:"" !important;
  position:absolute !important;
  left:0 !important; right:0;
  top:100% !important;
  height:14px !important;
  pointer-events:none !important;
  /* 24.09.: derselbe Grund wie der Ruecken — ein weisser Auslauf auf Sand IST die weisse Linie. */
  background:linear-gradient(to bottom, #FFFFFF 0%, #FFFFFF 45%, #FFFFFF 100%) !important;
  z-index:2 !important;
}
/* ⛔ Der Auslauf braucht einen Bezugsrahmen, sonst haengt er am Fenster. */
html body .theme__header{
  
}


/* === S304-STICKY-FALLE-2309 · Punkt 10, Nachtrag =======================
   Die Versandleiste bekam `position: sticky; top: 46px` — und klebte
   trotzdem nicht (gemessen bei Scrollstand 900: y = -776, also laengst weg).

   ⭐ URSACHE, die Elternkette hochgelaufen:
       .main-content   overflow-x: hidden · overflow-y: auto
       .container      overflow-x: hidden · overflow-y: auto
   **`overflow-x: hidden` macht ein Element zum Scroll-Container** — auch
   wenn nur die Waagerechte gemeint war. `sticky` bezieht sich dann auf
   diesen Container statt auf das Fenster, und da der nicht scrollt,
   passiert nichts. Das ist die haeufigste Sticky-Falle ueberhaupt.

   ⭐ `overflow-x: clip` schneidet waagerechten Ueberlauf genauso ab,
   erzeugt aber KEINEN Scroll-Container. Damit funktioniert sticky wieder,
   ohne dass etwas seitlich herausragen kann.
   ⛔ `overflow-y` bleibt unangetastet — daran haengt das Seitenscrollen.
   ======================================================================= */
html body .main-content,
html body .container{
  overflow-x:clip !important;
}


/* === S304-KOPFVERSAND-2309 · Punkt 10 ==================================
   Die Zeile im klebenden Kopf. Sie erscheint erst, wenn die grosse Leiste
   aus dem Bild ist — solange beide zu sehen waeren, stuende dasselbe
   zweimal untereinander.
   ⭐ Das entscheidet CSS allein: die Zeile ist standardmaessig zu und
   klappt auf, sobald der Kopf seinen „geschrumpft"-Zustand hat. Hat das
   Theme keinen solchen Zustand, greift die Fassung darunter ueber
   `.s304-gescrollt`, die `s304-haus.js` setzt.
   ======================================================================= */
html body .theme__header .s304-kopfversand{
  display:none !important;
  width:100% !important;
  text-align:center !important;
  font-size:10.5px !important;
  font-weight:700 !important;
  letter-spacing:.02em !important;
  color:#15130F !important;
  background:#F2F0EC !important;
  padding:4px 16px 5px !important;
  box-sizing:border-box !important;
  line-height:1.3 !important;
}
html.s304-gescrollt body .theme__header .s304-kopfversand,
html body .theme__header.is-sticky .s304-kopfversand,
html body .theme__header.header--sticky .s304-kopfversand{
  display:block !important;
}


/* === S304-KORB-2309 · Punkt 26 =========================================
   Enzo: „der Warenkorb ist natürlich auch noch nicht gut."

   GEMESSEN am geoeffneten Schubfach — vieles stimmt schon: Artikel als
   weisse Karten mit Wurf, Versandbalken, Gratiszeile, Zwischensumme.
   ⛔ Eine Meldung habe ich zuerst falsch gelesen: `.cart__errors__inner`
   („Sorry, sieht so aus, als hätten wir nicht genug von diesem Produkt.")
   mass beim ersten Blick 55 px in Rosa. Nachgemessen, als das Schubfach
   fertig geoeffnet war: **Hoehe 0, nicht sichtbar** — sie war nur waehrend
   der Oeffnungsbewegung im Bild. Kein Fehler, und ich haette ihn beinahe
   gemeldet.

   Was wirklich abweicht:
   1. **„Zugang: Standard"** steht unter jedem Artikel. Das ist die
      IC-Variantenbezeichnung — ein Rest der Inner-Circle-Preise, die
      Enzo ausdruecklich draussen haben wollte. Dem Kunden sagt sie nichts
      und sie kostet in jeder Zeile zwei Zeilen Hoehe.
      ⛔ Nur die Anzeige faellt weg, die Variante selbst bleibt — daran
      haengen Preislogik und Miles-Gutschrift.
   2. Die Artikelkarten tragen **r14**, waehrend der Laden sonst r18
      (Kacheln) und r22 (Karten) hat.
   ======================================================================= */
/* ⛔ 23.09. KORRIGIERT. Hier standen geratene Waehler: `.cart__item__property`,
   `dl`, `[class*="property"]`, `[class*="variant"]`. **Keiner davon existiert.**
   Meine Pruefung meldete trotzdem „erledigt" — weil sie fragte, ob ALLE
   gefundenen Elemente unsichtbar sind, und bei null Treffern ist das
   tautologisch wahr. Die Zeile stand weiter da.
   ⭐ Der echte Traeger heisst `.cart__item__selected-options` — im DOM
   nachgesehen statt geraten, wie schon bei `.rev-slider-card__text`. */
html body .drawer--cart .cart__item__selected-options{
  display:none !important;
}
html body .drawer--cart .cart__item,
html body .drawer--cart .drawer__message,
html body .drawer--cart .cart-block--title > *{
  border-radius:18px !important;
}


/* === S304-ABSCHNITTSLUECKEN-2309 =======================================
   Gemessen zwischen dem Bewertungsblock und „INNER CIRCLE FITS": **96 px**
   leer. Nach dem Kuerzen der Bewertungen (870 → 590) faellt der Abstand
   staerker auf als vorher — er war immer da, nur zwischen zwei langen
   Blöcken unauffaellig.
   ⭐ 28 px davon sind `padding-top` der Community-Sektion, der Rest kommt
   aus den Sektionsabstaenden des Themes.
   ======================================================================= */
/* ⛔ KORREKTUR 24.09. — DIE UEBERSCHRIFT KLEBTE AN DER KANTE.
   Gemessen bei 402 px: die Karte steht bei x 16, ihre Ueberschrift bei
   **x 19** — drei Pixel Luft. Die Kacheln darunter waren dagegen 16 px
   eingerueckt, die Nachbarkarte hat 13 px Polster. Ueberschrift und
   Inhalt fluchteten also nicht, und die Zeile sah abgeschnitten aus.
   Das ist Enzos „die Ueberschrift ist abgeschnitten".
   ⭐ Beide Karten bekommen dasselbe Polster wie ihre Nachbarn (13 px);
   der Scroller holt es sich mit negativem Rand zurueck, damit die Kacheln
   weiterhin bis an die Kartenkante laufen koennen. */
html body .s304-community,
html body .s304-fits{
  padding-left:13px !important;
  padding-right:13px !important;
}
html body .s304-community{
  padding-top:12px !important;
  padding-bottom:8px !important;
}
html body .s304-fits{
  padding-top:12px !important;
  padding-bottom:10px !important;
}
html body .s304-neu .s304-rev{
  margin-bottom:0 !important;
}


/* === S304-REFERENZ-2309 · Menue und Warenkorb nach Babelab / Scuffers ===
   Enzo: „guck mal bei Babelab und bei Scuffers und so wie da die Sachen
   gemacht sind." · „das Burger Menü … da will ich eigentlich, dass jeder …
   einfach eine Bubble ist."

   ⭐ BEIDE SHOPS AM HANDY GEOEFFNET UND AUSGEMESSEN, nicht nacherzaehlt:

   SCUFFERS — das Schubfach ist **kein Vollbild**:
       .sc-drawer   382 × 640 bei x 10 / y 10 · border-radius 22
       .sc-overlay  blur(14px) · rgba(147,147,147,.16)
       Hauptlinks   24,5 px / 500 / letter-spacing **-0,8 px**
       Kategorien   Segmented Control, aktiv schwarz, r6, Polster 8/24
   BABELAB:
       Hauptlinks   20 px / 600 / letter-spacing **+1 px**, nackter Text

   ⭐ WAS BEIDE GEMEINSAM HABEN — und was mein Menue anders machte:
   die Navigation **tritt zurueck**. Kein schwerer Wurf, keine dicken
   Karten !important; bei Scuffers bleibt der Laden dahinter als Unschaerfe sichtbar.
   Mein Menue hatte sechs 53-px-Karten mit vollem Wurf — optisch schwerer
   als die Produktkacheln, an denen das Geld haengt.

   ⭐ DIE SYNTHESE, die Enzos Wort UND die Referenz trifft:
     · **Das Blatt selbst wird die Bubble** — 10 px Rand ringsum, r22,
       schwebend statt klebend. Genau Scuffers.
     · **Das Overlay bekommt Glas** (blur 14px) statt nur 40 % Schwarz.
     · **Jeder Menuepunkt wird eine Pille** (r99) — Enzos „Bubble" —, aber
       leicht: heller Grund, feine Kante, kein tiefer Wurf.
   ⛔ Der Wurf bleibt den Produktkacheln vorbehalten. Wenn die Navigation
   denselben Wurf traegt wie die Ware, konkurriert sie mit ihr.
   ======================================================================= */

/* ── 1 · Das Schubfach schwebt (Menue UND Warenkorb) ──────────────────── */
html body .drawer--header .drawer__inner,
html body mobile-menu .drawer__inner,
html body .drawer--cart .drawer__inner{
  top:10px !important;
  bottom:10px !important;
  height:auto !important;
  max-height:none !important;
  border-radius:22px !important;
  box-shadow:0 26px 60px -20px rgba(16,16,18,.55),
             0 6px 16px -6px rgba(16,16,18,.22) !important;
  overflow:hidden !important;
}
/* ⛔ 23.09. ZURUECKGENOMMEN: hier standen `left: 10px` / `right: 10px` mit
   `width: calc(100% - 20px)`, um Scuffers' seitlichen Rand nachzubauen.
   GEMESSEN, warum das nicht geht: das Theme parkt das Blatt ausserhalb
   (`left: 100%`) und schiebt es per `transform: translateX(...)` herein.
   Mit meinem `left` stand es bei x = 392 statt 10 — und mit `margin` statt
   `left` bei 402. Beide Male war es schlicht nicht mehr da.
   ⭐ Den seitlichen Rand gaebe es nur, wenn ich die Oeffnungslogik des
   Themes umschreibe. Fuer 10 px Abstand ist das der falsche Preis: die
   Schiebe-Animation ist der Weg in JEDES Schubfach, Menue wie Warenkorb.
   ⭐ WAS BLEIBT und den Eindruck ohnehin traegt: das Blatt schwebt oben und
   unten (top/bottom 10), ist ringsum r22, und dahinter liegt Glas statt
   nur Schwarz. Das ist der Scuffers-Effekt ohne sein Risiko. */
/* Der Inhalt muss im gerundeten Blatt weiter scrollen koennen. */
html body .drawer__inner > .drawer__content,
html body .drawer__inner > .drawer__body,
html body .drawer__content__scroll{
  border-radius:inherit !important;
}

/* ── 2 · Glas statt nur Schwarz ───────────────────────────────────────── */
html body .underlay.drawer__underlay{
  background:rgba(28,24,20,.28) !important;
  -webkit-backdrop-filter:blur(14px) !important;
  backdrop-filter:blur(14px) !important;
}

/* ── 3 · Jeder Menuepunkt eine Bubble ─────────────────────────────────── */
html body .menu-304__primary-link{
  border-radius:99px !important;
  background: rgba(255,255,255,.46) !important;
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset,
             0 6px 16px -10px rgba(24,24,26,.34) !important;
  border:1px solid rgba(21,19,15,.06) !important;
  font-size:19px !important;
  font-weight:600 !important;
  letter-spacing:-.2px !important;   /* ⭐ zwischen Scuffers (-0,8) und Babelab (+1) */
  padding:13px 20px !important;
  margin:5px 0 !important;
  box-sizing:border-box !important;
    -webkit-backdrop-filter:blur(32px) saturate(1.3) !important;
    backdrop-filter:blur(32px) saturate(1.3) !important;
  }
/* Das Produktbild rechts in der Pille rundet mit. */
html body .menu-304__primary-link img,
html body .menu-304__primary-link svg{
  border-radius:99px !important;
}

/* ── 4 · Der Menuefuss traegt denselben Grund wie das Blatt ───────────── */
html body .drawer--header .drawer__foot,
html body mobile-menu .drawer__foot{
  background:transparent !important;
  border-top:1px solid rgba(21,19,15,.07) !important;
}


/* === S304-BUBBLE-FLACH-2309 ============================================
   Gemessen nach dem Umbau: die Bubbles sind **80 px** hoch, weil das
   Produktbild rechts die Hoehe diktiert. Damit sind es Kapseln, keine
   Pillen — und sie nehmen mehr Raum ein als bei den Referenzen.
   Scuffers' Produktpillen im Menue liegen bei rund 56 px.
   ⭐ Also bekommt das Bild eine feste Groesse, statt die Zeile zu bestimmen.
   ======================================================================= */
html body .menu-304__primary-link{
  min-height:0 !important;
  align-items:center !important;
}
html body .menu-304__primary-link img{
  width:38px !important;
  height:38px !important;
  object-fit:contain !important;
  flex:0 0 auto !important;
}
html body .menu-304__primary-link svg{
  width:26px !important;
  height:26px !important;
  flex:0 0 auto !important;
}
/* Der Fuss darf nicht unter dem Blattrand verschwinden. */
html body .drawer--header .drawer__foot,
html body mobile-menu .drawer__foot{
  padding-bottom:14px !important;
}


/* === S304-BUBBLE-HOEHE-2309 ============================================
   Gemessen: 68 · 68 · 68 · 68 · 68 · **80** — der letzte Punkt („BECOME A
   CREATOR") traegt ein anderes Symbol und zog die Zeile auf.
   ⛔ Enzos wiederkehrende Anforderung ist Gleichheit („niemals
   unterschiedliche Weisstoene" war derselbe Gedanke fuer Farbe). Eine
   Bubble, die aus der Reihe faellt, liest sich als Fehler.
   ⭐ Also eine feste Hoehe statt einer, die vom Inhalt diktiert wird —
   58 px, nah an Scuffers' 56.
   ======================================================================= */
html body .menu-304__primary-link{
  height:58px !important;
  min-height:58px !important;
  max-height:58px !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:space-between !important;
  overflow:hidden !important;
}
html body .menu-304__primary-link img{
  width:34px !important;
  height:34px !important;
}
html body .menu-304__primary-link svg{
  width:24px !important;
  height:24px !important;
}


/* === S304-LOGO-MITTE-2309 · Punkt 18 ===================================
   Enzo, zum zweiten Mal: „das Logo ist nicht zentriert in der Höhe."
   ⛔ MEIN ERSTER ANLAUF MACHTE ES SCHLIMMER (von 2/16 auf 0/18) — ich habe
   Flexbox auf die Eltern gelegt, ohne den Grund zu kennen.
   GEMESSEN, die Kette hoch: das `<img>` selbst traegt
   **`position: absolute; top: 0`** und klebt damit an der Oberkante seiner
   46-px-Figure. Kein `align-items` an einem Elternteil erreicht ein absolut
   positioniertes Kind — deshalb blieb meine Regel wirkungslos und das Bild
   rutschte sogar noch hoeher.
   ⭐ Ein absolut positioniertes Element zentriert man an ihm selbst.
   ======================================================================= */
html body .header__mobile .header__logo img{
  top:50% !important;
  bottom:auto !important;
  transform:translateY(-50%) !important;
}
html body .header__mobile .header__logo,
html body .header__mobile .header__logo__link,
html body .header__mobile .header__logo figure{
  height:44px !important;
  /* ── Nachtrag 23.09., nachgemessen ────────────────────────────────────
     Das `height:44px` allein hat nie gewirkt. GEMESSEN war der Traeger
     **64 px** hoch, und die Rechnung geht exakt auf:
         theme.css  .header__logo { min-height: 46px }   ← hebt height:44 an
         s304       .header__logo { padding: 9px 12px; box-sizing:content-box }
         46 + 9 + 9 = 64
     `min-height` korrigiert `height` nach oben — eine feste Hoehe ist damit
     wirkungslos, solange die Mindesthoehe groesser ist. Und `content-box`
     legt das Polster OBEN DRAUF statt hinein.
     ⭐ Folge fuer die Optik: der 64-px-Traeger ist 10 px hoeher als die
     44-px-Pille, also sass das Logo auf JEDER Seite 10 px zu tief —
     Startseite UND Kategorie, beide bei 402 px gegengemessen (Logo-Mitte 67
     gegen Pillen-Mitte 57). Es fiel nur nie auf, weil man einen Versatz
     ohne Bezugskante nicht sieht.
     ⛔ Und genau deshalb hat mein Anlauf von vorhin nichts gebracht: ich habe
     das BILD in seinem Traeger zentriert — korrekt, aber der Traeger selbst
     sass falsch. Das Kind war nie das Problem.
     ⭐ LEHRE: eine Hoehe, die nicht ankommt, ist fast immer `min-height`
     oder `box-sizing` — nicht zu wenig Spezifitaet. Erst rechnen, ob die
     Zahlen aufgehen, dann eine Regel schreiben. */
  min-height:0 !important;
  box-sizing:border-box !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
}

/* === S304-LOGO-FARBE-2309 · der zweite Grund fuer den leeren Kopf =======
   Der Kopf der Startseite war auch nach der Farbkorrektur noch ohne Logo.
   ⭐ Es lag NICHT am CSS: die Bilddatei selbst ist weiss. Per Canvas
   ausgezaehlt, beide Seiten mit derselben Methode:
       Kategorie   …f61638567713.png     Mittelton [  0,  0,  0]
       Startseite  …f61638567713_1.png   Mittelton [255,255,255]
   Ein Zeichen Unterschied im Dateinamen. Das Theme haelt zwei Logo-Assets
   — ein normales und ein helles fuer den transparenten Overlay-Kopf — und
   nimmt auf der Startseite das helle. Auf meinem weissen Glas-Kasten ist
   das unsichtbar.
   ⭐ WARUM FILTER UND NICHT DAS THEME-SETTING: `settings_data.json` ist die
   Wurzel, aber ein gemeinsam bearbeiteter Kopf mit grossem Blast-Radius.
   `brightness(0)` erzeugt exakt [0,0,0] — also denselben Wert, den die
   Kategorie gemessen hat — und trifft ueber den Dateinamen NUR das helle
   Asset, auf welcher Seite es auch auftaucht.
   ======================================================================= */
@layer s304 {
  html body .theme__header img[src*="f61638567713_1"]{
    filter:brightness(0) !important;
  }
}

/* === S304-WC-KOPF-2309 · Punkt 12 ======================================
   Enzo: „das Walletchain-Dings — man sieht ja gar nicht die Walletchain."
   Bei den Bracelets dagegen: „finde ich perfekt."
   ⭐ Der Unterschied liegt im Motiv, nicht im Verlauf: die Bracelets sind
   hell und breit, die Walletchains sind **dunkle, duenne Ketten** — unter
   demselben Verlauf (0,88 → 0,42) verschwinden sie.
   ⭐ Also nur fuer die Walletchains: der Verlauf laeuft frueher aus und
   endet heller. Links bleibt er kraeftig genug fuer die weisse Schrift.
   ======================================================================= */
html body.s304-kat-an .s304-kopfbild--walletchains .wc-trust-header{
  background-image:
    linear-gradient(100deg, rgba(6,6,6,.90) 0%, rgba(10,10,10,.58) 34%, rgba(12,12,12,.14) 72%, rgba(12,12,12,.06) 100%),
    url("/cdn/shop/t/97/assets/s304-kopf-wc.jpg") !important;
  background-position:center 42% !important;
}

/* === S304-KATFUSS-2309 · Punkt 9 =======================================
   Enzo: „der Hintergrund von der Kategorieseite ist unten immer noch so
   mit so einem grauen Schatten, und dann sieht das unten richtig harsch aus."
   ⭐ Die Kachelwuerfe sammeln sich am Rasterende zu einem grauen Saum, und
   direkt darunter beginnt der schwarze Footer — zwei harte Kanten
   uebereinander. Ein Auslauf faengt das ab.
   ======================================================================= */
html body.s304-kat-an .collection__products{
  padding-bottom:18px !important;
}
html body.s304-kat-an .collection__products::after{
  content:"" !important;
  display:block !important;
  height:26px !important;
  margin-top:-4px !important;
  background:linear-gradient(to bottom, rgba(255,255,255,0) 0%, #FFFFFF 78%) !important;
  pointer-events:none !important;
}

/* === S304-HISTORY-BUBBLES-2309 · Punkt 30 ==============================
   Enzo: „bei der 304supply History muss jedes — also Konzeptentwicklung,
   Inner Circle — als Bubble sein, ist auch nicht richtig formatiert."
   ======================================================================= */
html body .s304-hist .s304-hist__track > *,
html body .s304-hist [class*="step"],
html body .s304-hist [class*="punkt"],
html body .s304-hist li{
  background:#FFFFFF !important;
  border-radius:20px !important;
  padding:12px 14px !important;
  margin:0 0 9px !important;
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset,
             0 8px 20px -12px rgba(24,24,26,.34) !important;
  border:1px solid rgba(21,19,15,.06) !important;
  list-style:none !important;
}
html body .s304-hist .s304-hist__track{
  padding:0 !important;
}


/* === S304-AUSWAHLBLATT-2309 · Punkt 21 =================================
   Enzo: „wenn ich auf Alle 8 ansehen drücke, kommt wieder das vom alten Theme."
   GEMESSEN: `.s304-sel` oeffnet mit 193 px Hoehe und **`border-radius: 0`** —
   ein eckiges Blatt in einem Laden, in dem alles gerundet ist. Genau das
   liest sich als „altes Theme".
   ======================================================================= */
html body .s304-neu .s304-sel{
  border-radius:20px !important;
  background:#FFFFFF !important;
  padding:10px !important;
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset,
             0 18px 40px -16px rgba(24,24,26,.46),
             0 3px 10px -3px rgba(24,24,26,.16) !important;
  border:1px solid rgba(21,19,15,.06) !important;
  overflow:hidden !important;
}
html body .s304-neu .s304-sel__o{
  border-radius:14px !important;
  border-top:0 !important;
  margin-bottom:4px !important;
  padding:8px 10px !important;
  background:rgba(21,19,15,.028) !important;
}
html body .s304-neu .s304-sel__o img{
  border-radius:11px !important;
}
html body .s304-neu .s304-sel__liste{
  background:transparent !important;
}

/* === S304-PLASTIK-2309 · Punkte 17 und 26 ==============================
   Enzo, zweimal: „kann man nicht das Burger Menü sogar auch so plastisch
   machen, so ein bisschen vor so einem transparenten Hintergrund … so
   ähnlich wie bei Scuffers, mit so einer Monoplastizität." · „kannst du
   bitte alles einfach so ein bisschen plastischer machen, wie der
   Warenkorb von Scuffers."

   ⭐ WAS SCUFFERS' PLASTIZITAET AUSMACHT, aus der Messung: es ist NICHT der
   Schatten — es sind **drei Lagen auf derselben Flaeche**:
       1. eine helle Lichtkante oben  (inset 0 1px 0 rgba(255,255,255,.9))
       2. ein weicher, weit gestreuter Wurf nach unten
       3. eine feine dunkle Kontur (1 px, sehr niedrige Deckkraft)
   Zusammen wirkt die Flaeche erhaben statt aufgeklebt. „Mono" heisst dabei:
   **ueberall derselbe Satz**, nicht je Element ein anderer — genau Enzos
   wiederkehrende Forderung nach Gleichheit.

   ⛔ Die Produktkacheln bekommen einen STAERKEREN Wurf als der Rest. Sie
   tragen die Ware; wenn Navigation und Ware gleich schwer wirken,
   konkurrieren sie (das war der Fehler des ersten Menues).
   ======================================================================= */
html body .s304-neu .s304-karte,
html body .s304-neu .s304-huelle,
html body .s304-neu .s304-fragen,
html body .drawer--cart .cart__item,
html body .drawer--header .menu-304__primary-link,
html body mobile-menu .menu-304__primary-link,
html body .s304-hist,
html body .s304-hist .s304-hist__track > *{
  box-shadow:0 1px 0 rgba(255,255,255,.92) inset,
             0 18px 40px -16px rgba(24,24,26,.44),
             0 3px 10px -3px rgba(24,24,26,.15) !important;
  border:1px solid rgba(21,19,15,.055) !important;
}
/* Die Ware bleibt die schwerste Flaeche im Bild. */
html body.s304-kat-an .product-item{
  box-shadow:0 1px 0 rgba(255,255,255,.95) inset,
             0 22px 48px -16px rgba(24,24,26,.50),
             0 4px 12px -4px rgba(24,24,26,.18) !important;
}


/* === S304-ECHTES-GLAS-2309 · Enzos Transparenz-Punkt ====================
   Enzo: „Das ist noch nicht transparent, so wie ich das haben wollte."
   Und vorher: „kann man das Burger Menü nicht plastisch machen, so ein
   bisschen VOR SO EINEM TRANSPARENTEN HINTERGRUND … wie bei Scuffers."

   ⛔ ICH HATTE ES HALB GEBAUT, und das ist der Grund, warum er keinen
   Unterschied sieht. Noch einmal in meiner eigenen Messung nachgelesen:
       .sc-overlay   rgba(147,147,147,.16)  blur(14px)   ← der Hintergrund
       .sc-drawer    background: rgba(0,0,0,0)           ← **das Blatt
                                                            selbst ist
                                                            TRANSPARENT**
   Ich habe nur den Hintergrund verschwommen und das Blatt auf **deckendes**
   #FFFFFF gesetzt. Damit sieht man vom Laden dahinter genau nichts — der
   ganze Effekt, um den es Enzo ging, fehlte.

   ⭐ Jetzt traegt das Blatt selbst das Glas: halbdurchsichtiges Weiss mit
   `backdrop-filter`. Man sieht den Laden dahinter als Unschaerfe, und die
   Bubbles darauf werden dadurch erst plastisch — sie schweben ueber etwas,
   statt auf einer Wand zu kleben.
   ⭐ `saturate(1.15)` hebt die Farben dahinter leicht an !important; ohne das wirkt
   Glas ueber Weiss schnell schmutzig.
   ⛔ Die Schrift braucht Halt: deshalb 0,72 statt 0,4 — darunter wird
   „WALLETCHAINS" in Schwarz auf einem hellen Produktfoto unlesbar.
   ======================================================================= */
html body .drawer--header .drawer__inner,
html body mobile-menu .drawer__inner,
html body .drawer--cart .drawer__inner{
  background:rgba(252,251,249,.72) !important;
  -webkit-backdrop-filter:blur(40px) saturate(1.15) !important;
  backdrop-filter:blur(40px) saturate(1.15) !important;
}
/* Der Grund dahinter darf nicht zu dunkel sein, sonst ist das Glas grau. */
html body .underlay.drawer__underlay{
  background:rgba(24,20,16,.20) !important;
  -webkit-backdrop-filter:blur(10px) !important;
  backdrop-filter:blur(10px) !important;
}
/* Die Bubbles auf dem Glas: etwas deckender, damit sie sich abheben. */
html body .menu-304__primary-link{
  background: rgba(255,255,255,.46) !important;
  -webkit-backdrop-filter:blur(32px) !important;
  backdrop-filter:blur(32px) !important;
}
/* Kopf- und Fussleiste des Blattes ebenfalls durchsichtig, sonst stehen
   zwei deckende Baender auf einem Glasblatt. */
html body .drawer--header .drawer__head,
html body .drawer--header .drawer__foot,
html body mobile-menu .drawer__head,
html body mobile-menu .drawer__foot,
html body .drawer--cart .drawer__head,
html body .drawer--cart .drawer__foot{
  background:transparent !important;
}


/* === S304-GLAS-KONTRAST-2309 ===========================================
   Nach dem Umbau ist das Blatt gemessen durchsichtig:
       rgba(252,251,249,.72) + blur(40px) saturate(1.15)
   ⛔ ABER: **Glas ueber einer weissen Seite sieht weiss aus.** Bei Scuffers
   faellt der Effekt auf, weil dort Produktfotos dahinterliegen — unsere PDP
   ist weiss, also gibt es nichts durchscheinen zu lassen.
   ⭐ Sichtbar wird Glas nur durch Kontrast. Also wird der Grund dahinter
   deutlicher (0,20 → 0,42) und leicht warm — dann steht das helle Blatt
   erkennbar VOR etwas, statt mit der Seite zu verschmelzen.
   ⭐ Scuffers' eigener Wert ist mit rgba(147,147,147,.16) heller, aber dort
   traegt das Foto den Kontrast. Wer die Zahl kopiert statt die Wirkung,
   bekommt hier nichts.
   ======================================================================= */
html body .underlay.drawer__underlay{
  background:rgba(26,21,17,.42) !important;
  -webkit-backdrop-filter:blur(12px) saturate(1.1) !important;
  backdrop-filter:blur(12px) saturate(1.1) !important;
}
/* Das Blatt darf etwas mehr durchlassen, wenn dahinter mehr Kontrast steht. */
html body .drawer--header .drawer__inner,
html body mobile-menu .drawer__inner,
html body .drawer--cart .drawer__inner{
  background:rgba(253,252,250,.66) !important;
}


/* === S304-MENUELOGOS-2309 · „die Logos sind teilweise verpixelt" =======
   ⭐ GEMESSEN, Bild fuer Bild, gegen das noetige Mass (Anzeige × dpr 3):
       INNER CIRCLE   account.png            40 × 40   noetig 102  → **0,39**
       WALLETCHAINS   Design_ohne_Titel_2    80 × 91   noetig 102  → **0,78**
       BRACELETS      Design_ohne_Titel_5   678 × 402  noetig 102  →  6,65 ✓
       ESSENTIALS     Design_ohne_Titel_7   500 × 500  noetig 102  →  4,90 ✓
       ABOUT US       304supply_shopify     120 × 40   noetig 102  →  1,18 ✓
   Enzo hat also genau die beiden gesehen, die es wirklich sind.

   ⛔ EIN ZU KLEINES BILD WIRD NICHT SCHARF, egal was CSS tut. Zwei Wege:
   1. **INNER CIRCLE** ist gar kein Foto, sondern ein Konto-Symbol. Als SVG
      gezeichnet ist es bei jeder Groesse scharf — dieselbe Form wie im
      Kopf, damit es dasselbe Symbol bleibt.
   2. **WALLETCHAINS** ist ein Produktfoto mit 80 px. Bei 26 px Anzeige
      braucht es 78 — das hat es. Also wird das Mass an das Bild angepasst
      statt umgekehrt. Die anderen drei folgen, damit die Reihe gleich
      bleibt (Enzos wiederkehrende Forderung).
   ======================================================================= */
html body .menu-304__primary-link img{
  width:26px !important;
  height:26px !important;
  object-fit:contain !important;
  image-rendering:auto !important;
}
/* ⭐ 26.09. abends — DAS BILD BLEIBT JETZT STEHEN.
   Enzo: *„bei Inner Circle ist gar nichts."* — und er hat recht, aber die
   Ursache war nicht das Bild, sondern DIESE Regel: sie blendete das `<img>`
   aus und ersetzte es durch ein Personen-Symbol als CSS-Maske. Gemessen war
   das `<img>` im DOM vorhanden, die Bild-URL lieferte HTTP 200 — und trotzdem
   `naturalWidth 0` und `width 0`, weil `display:none`.
   ⛔ Das kostet mich heute die dritte Stunde derselben Sorte: ein Element ist
   DA, die Quelle stimmt, und trotzdem sieht man nichts, weil eine alte Regel
   es versteckt. **Bei „ist gar nichts da" zuerst pruefen, ob es versteckt
   wird — nicht, ob es fehlt.**
   ⇒ Inner Circle bekommt jetzt denselben Produktfreisteller wie die anderen
   (der 304-Basketball, dunkelgruen und damit auf dem hellen Kreis sichtbar;
   das Feuerzeug war silbern und ging darin unter).
   Die Maske darunter bleibt als Rueckfallebene stehen, falls das Bild fehlt. */
/* ⛔ Auch diese Haelfte musste weg: der Inner-Circle-Link traegt BEIDE
   Merkmale — `[href*="inner-circle"]` UND die Klasse `--gold`. Gemessen:
   `menu-304__primary-link menu-304__primary-link--gold menu-link-styled`.
   Ich hatte erst nur die href-Haelfte entfernt und wieder `width 0` gemessen.
   Eine Sammelregel ist erst entschaerft, wenn ALLE ihre Selektoren geprueft
   sind — nicht, wenn der erste passt. */
html body .menu-304__primary-link[href*="inner-circle"]::after,
html body .menu-304__primary-link--gold::after{
  content:"" !important;
  width:26px !important;
  height:26px !important;
  flex:0 0 auto !important;
  background:#C9A96E !important;
  -webkit-mask:url("data:image/svg+xml !important;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Ccircle cx='10' cy='7' r='3.2'/%3E%3Cpath d='M3.8 17c0-3.2 2.8-5.2 6.2-5.2s6.2 2 6.2 5.2'/%3E%3C/svg%3E") no-repeat center/contain;
  mask:url("data:image/svg+xml !important;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.5'%3E%3Ccircle cx='10' cy='7' r='3.2'/%3E%3Cpath d='M3.8 17c0-3.2 2.8-5.2 6.2-5.2s6.2 2 6.2 5.2'/%3E%3C/svg%3E") no-repeat center/contain;
}


/* === S304-FOOTER-UMBAU-2309 · Punkt 13 =================================
   Enzo: „das Ding ist, der Footer ist sozusagen hardcoded aus dem Theme.
   Aber den musst du jetzt auch noch umbauen."

   GEMESSEN, was er jetzt ist: schwarze Flaeche, Logo 66×44, Social-Reihe,
   und **nackte Textlinks** (Impressum, AGBs, Widerrufsrecht, Datenschutz,
   Retoure) in 11,5 px.
   ⛔ Damit ist er der einzige Bereich im ganzen Laden, der die Bubble-
   Sprache NICHT spricht — Menue, Kacheln, Karten, History: ueberall Pillen
   und Karten, hier Fliesstext.

   ⭐ Also dieselbe Sprache, nur invertiert: auf Schwarz wird aus der weissen
   Bubble eine helle Kontur mit leichtem Schleier. Gleiche Form, gleicher
   Radius, gleiche Tippgroesse — nur die Farbrichtung dreht sich.
   ⭐ Die Tippziele werden dabei echte Ziele: vorher 41 px hohe Textlinks
   ohne Flaeche, jetzt Pillen mit sichtbarer Kante.
   ======================================================================= */
html body .s304-legal__list{
  display:flex !important;
  flex-wrap:wrap !important;
  justify-content:center !important;
  gap:8px !important;
  padding:0 !important;
  margin:0 !important;
  list-style:none !important;
}
html body .s304-legal__item{
  height:auto !important;
  width:auto !important;
  flex:0 0 auto !important;
  border:0 !important;
}
/* ⛔ Die Trennstriche zwischen den Eintraegen fallen weg — zwischen zwei
   Pillen ist ein Strich ein Fremdkoerper. */
html body .s304-legal__item::before,
html body .s304-legal__item::after{
  display:none !important;
}
html body .s304-legal__link{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:36px !important;
  padding:8px 14px !important;
  border-radius:99px !important;
  background:rgba(255,255,255,.07) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  color:rgba(255,255,255,.92) !important;
  font-size:11.5px !important;
  font-weight:600 !important;
  letter-spacing:.02em !important;
  text-decoration:none !important;
  white-space:nowrap !important;
}
/* Die Social-Symbole bekommen dieselbe Form. */
html body .s304-social__link{
  width:40px !important;
  height:40px !important;
  border-radius:99px !important;
  background:rgba(255,255,255,.07) !important;
  border:1px solid rgba(255,255,255,.16) !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
}
/* Die Sprachwahl ebenso — sie stand als einziges Element in einem Kasten. */
html body .supporting-menu .popout__toggle,
html body .supporting-menu button{
  border-radius:99px !important;
  border:1px solid rgba(255,255,255,.16) !important;
  background:rgba(255,255,255,.07) !important;
  min-height:36px !important;
  padding:6px 14px !important;
  color:rgba(255,255,255,.92) !important;
}
html body .site-footer-wrapper{
  border-radius:22px 22px 0 0 !important;
}


/* === S304-KORB-UMBAU-2309 · Punkt 31 ===================================
   Enzo: „Auch der Warenkorb sieht schrecklich aus."
   Selbst durchgeklickt und gemessen — zwei konkrete Ursachen:

   1. **Die Empfehlungskacheln sind der einzige eckige Bereich im Laden.**
      `.ic-cross-sell__card`  border-radius **0**, kein Grund, kein Wurf —
      danebenliegend zwei Artikelkarten mit r18 und vollem Wurf. Der Bruch
      faellt sofort auf.
   2. **69 px Leerraum** zwischen dem Empfehlungsblock und der goldenen
      Box. Nach dem Kuerzen der Artikelkarten steht die Luft frei im Raum.
   ======================================================================= */
html body .drawer--cart .ic-cross-sell__card{
  background:#FFFFFF !important;
  border-radius:14px !important;
  padding:6px 6px 8px !important;
  box-shadow:0 1px 0 rgba(255,255,255,.9) inset,
             0 8px 20px -12px rgba(24,24,26,.34) !important;
  border:1px solid rgba(21,19,15,.06) !important;
  box-sizing:border-box !important;
}
html body .drawer--cart .ic-cross-sell__img-link,
html body .drawer--cart .ic-cross-sell__card img{
  border-radius:11px !important;
  overflow:hidden !important;
  display:block !important;
}
/* Der Plusknopf in der Empfehlung bekommt dieselbe Form wie auf der
   Kategorieseite — unten rechts, rund, hell. */
html body .drawer--cart .ic-cross-sell__card [class*="add"],
html body .drawer--cart .ic-cross-sell__card button{
  border-radius:99px !important;
  background:rgba(255,255,255,.92) !important;
  box-shadow:0 2px 8px -2px rgba(24,24,26,.35) !important;
  width:28px !important;
  height:28px !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:0 !important;
}
/* Der Leerraum darunter */
html body .drawer--cart .ic-cross-sell{
  margin-bottom:0 !important;
  padding-bottom:2px !important;
}
html body .drawer--cart .drawer__foot{
  margin-top:10px !important;
}


/* === S304-RECHTSSEITEN-2309 ============================================
   Die Policy-Seiten (Impressum, AGB, Datenschutz, Widerruf, Versand) waren
   der letzte Bereich ohne die Ladensprache: der Text stand nackt auf der
   Seite, `border-radius: 0`, kein Polster, `line-height: normal`.

   ⭐ INHALTLICH GEPRUEFT, bevor ich am Aussehen drehe — das Impressum
   traegt alle Angaben nach § 5 TMG:
       Firma (Lorenz & Rotsch GbR) · Anschrift mit PLZ · E-Mail ·
       Vertretungsberechtigte · USt-IdNr. nach § 27a UStG · ODR-Plattform
   313 Zeichen sind knapp, aber vollstaendig. Hier war nichts zu ergaenzen.

   ⭐ `line-height: normal` ist fuer Fliesstext zu eng — bei 16 px sind das
   rund 1,2. Rechtstexte werden am laengsten gelesen; 1,65 ist der Wert,
   bei dem ein Absatz nicht mehr klebt.
   ======================================================================= */
html body .shopify-policy__container,
html body .shopify-policy__body,
html body .template-page main .rte{
  background:#FFFFFF !important;
  border-radius:22px !important;
  padding:20px 18px 24px !important;
  margin:14px 16px 24px !important;
  box-shadow:0 1px 0 rgba(255,255,255,.92) inset,
             0 18px 40px -16px rgba(24,24,26,.44),
             0 3px 10px -3px rgba(24,24,26,.15) !important;
  border:1px solid rgba(21,19,15,.055) !important;
  box-sizing:border-box !important;
  width:auto !important;
  max-width:none !important;
}
/* ⛔ Nicht doppelt verschachteln: wenn Container UND Body eine Karte
   waeren, staende eine Karte in einer Karte. */
html body .shopify-policy__container .shopify-policy__body{
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  padding:0 !important;
  margin:0 !important;
  border-radius:0 !important;
}
html body .shopify-policy__body p,
html body .shopify-policy__body li,
html body .template-page main .rte p{
  font-size:14.5px !important;
  line-height:1.65 !important;
  color:#3A352F !important;
  margin:0 0 12px !important;
}
html body .shopify-policy__body h1,
html body .shopify-policy__body h2,
html body .shopify-policy__title h1{
  font-size:19px !important;
  font-weight:800 !important;
  letter-spacing:.01em !important;
  margin:0 0 10px !important;
}
html body .shopify-policy__body a{
  color:#15130F !important;
  text-decoration:underline !important;
  text-underline-offset:2px !important;
  word-break:break-word !important;
}
html body .shopify-policy__title{
  margin:0 16px !important;
  padding-top:6px !important;
}


/* === S304-RECHTSSEITEN-ABSTAND-2309 ====================================
   Gemessen: zwischen Kopfleiste und Karte stehen **59 px** leer — derselbe
   Fall wie auf der Kategorieseite (dort 46, behoben auf 16). Die Luft kommt
   aus dem Standardabstand des Themes zwischen Kopf und Inhalt.
   ⛔ NUR auf Policy-Seiten, damit die Startseite unberuehrt bleibt.
   ⭐ Und die Schriftgroesse war KEIN Fehler: gemessen 14,5 px mit
   line-height 23,9 — mein Eindruck aus dem Screenshot taeuschte, weil das
   Bild hochskaliert ist. Nicht geaendert.
   ======================================================================= */
/* ⛔ 23.09.: hier standen `body.template-policy` und `body[class*="policy"]`.
   **Beide treffen nicht** — gemessen ist die Body-Klasse auf der AGB-Seite
       "template- grid-compact aos-initialized …"
   also `template-` mit LEEREM Suffix. Ein geratener Klassenname wieder,
   dieselbe Falle wie bei `.cart__item__property`.
   ⭐ `:has()` fragt nach dem, was wirklich da ist: einer Policy-Karte.
   Live geprueft, dass der Browser es kann (dieselbe Pruefung wie fuer
   `view()` beim Karussell). */
html body:has(.shopify-policy__container) .main-content{
  margin-top:-34px !important;
  padding-top:0 !important;
}
html body:has(.shopify-policy__container) .shopify-policy__container{
  margin-top:10px !important;
}

}
/* ═══ Ende der Ebene s304 ═══ */

/* === S304-HOMEPAGE-REGRESS-2309 =======================================
   ⛔⛔ ICH HABE DIE STARTSEITE KAPUTT GEMACHT — die eine Flaeche, die Enzo
   mehrfach ausdruecklich ausgenommen hat.

   GEMESSEN: der Kopf war leer. Kein Logo, kein Burger, kein Konto — nur die
   weisse Pille. Die Elemente waren aber ALLE da und sichtbar:
       Logo 78×26 · Burger 44×44 · Konto 44×44 · Korb 44×44, alle bei y = 5
   ⭐ Die Ursache war **meine eigene Regel**:
       html body .theme__header { overflow: hidden !important }
   Der Kopf ist 46 px hoch (`304-custom.css`), seine Kinder sind 64 px hoch
   und beginnen bei y = 5 — 5 + 64 = 69 > 46. Mit `overflow: hidden` wird
   alles darunter **abgeschnitten**. Auf den anderen Seiten fiel es nicht
   auf, weil dort andere Regeln die Kindhoehe begrenzen.

   ⛔ ZWEITER SCHADEN, derselbe Block: ich habe `position: relative` gesetzt,
   um einen `::after`-Auslauf zu verankern. Das Theme setzt auf der
   Startseite aber `position: absolute` — der Kopf liegt dort als Overlay
   UEBER dem Inhalt. Mein `relative` holte ihn in den Fluss und verschob
   alles darunter.
   ⭐ Und noetig war es nie: **`absolute` ist selbst ein Bezugsrahmen**, ein
   `::after` verankert sich daran genauso.

   ⭐ LEHRE: eine Regel auf `.theme__header` ohne Seitenschutz trifft JEDE
   Seite — auch die, die man gerade nicht ansieht. Was nur die PDP oder die
   Kategorie braucht, bekommt `.s304-neu` bzw. `.s304-kat-an` davor.
   ====================================================================== */

/* === S304-KOPF-STARTSEITE-2309 · Enzos Punkt 2 ==========================
   Enzo: „Eigentlich muss einfach nur, wie es auch bei der Kategorieseite
   aussieht, der Header, auch auf der Homepage."

   ⭐ GEMESSEN, beide Seiten nebeneinander bei 402 px — es ist EINE Variable:
       Kategorie   --COLOR-HEADER-LINK: #212121   Icons rgb(33,33,33)
       Startseite  --COLOR-HEADER-LINK: #ffffff   Icons rgb(255,255,255)
   Alles andere war schon deckungsgleich: die Pille misst auf BEIDEN Seiten
   370×44 bei x = 16, Radius 22, derselbe Schatten. Ich hatte sie vorher als
   „402×64 bei x0" gemeldet — das war eine Fehlmessung: ich hatte
   `.header__mobile__left/-logo/-right` ausgelesen, nicht `.header__mobile`.

   WARUM WEISS: das Theme legt den Kopf auf der Startseite als Overlay über
   den dunklen Hero und schaltet dafür auf helle Schrift. Mein weisser
   Glas-Kasten nimmt dem Overlay den dunklen Rücken — dann steht Weiss auf
   Weiss und der Kopf sieht leer aus. Genau das hat Enzo gesehen.

   ⭐ DIE RICHTIGE EBENE: nicht zwanzig Farbregeln, sondern die eine Variable,
   aus der das Theme `--link`, `--text` und `--icons` selbst ableitet. Sie
   wird auf `.theme__header` gesetzt, damit jedes Kind sie erbt — Logo,
   Burger, Konto, Korb, Zähler.

   NACHBARN geprüft: der Kasten ist auf JEDER Seite weiss (S304-KOPF2-2309
   setzt `background:#FFFFFF !important` ohne Seitenschutz), also sind dunkle
   Glyphen überall richtig. Deshalb kein `template-index`-Sonderfall.
   ======================================================================== */
@layer s304 {
  html body .theme__header,
  html body .theme__header .header__mobile,
  html body .theme__header .header__desktop{
    --COLOR-HEADER-LINK:#212121 !important;
    --COLOR-HEADER-LINK-HOVER:#000000 !important;
    --link:#212121 !important;
    --text:#212121 !important;
    --icons:currentColor !important;
    color:#212121 !important;
  }
  /* Der Zaehler am Korb: dunkler Punkt, helle Ziffer — wie auf der Kategorie. */
  html body .theme__header .header__mobile__right [class*="count"]{
    color:#FFFFFF !important;
  }
}


/* === S304-KOPFLEISTE-MASSE-2309 · Enzo, 23.09. abends ==================
   „Vor allen Dingen diese Sache, dass wenn ich scrolle, dass der Header und
   darunter dann was gescrollt wird, also alles auf der PDP, nicht die
   gleichen Masse haben wie der Header und dann sieht das so richtig
   haesslich aus."  Dazu: „dieses bis gratis Versand hat viel zu viel
   Abstand."

   ⭐ GEMESSEN bei 402 px, gescrollt — und der Abstand war nicht das
   Hauptproblem, die MASSE waren es:
       Pille (Kopfkarte)      370 breit, x = 16, endet bei y = 47
       Versandleiste          **402 breit, x = 0**
       Kopf                   46 hoch, die Leiste endet bei y = 73
       → die Leiste ragt **27 px unter den Kopf hinaus**
   Zwei verschiedene Breiten uebereinander und ein Kind, das aus seinem
   Traeger haengt — genau das liest sich als „haesslich".

   ⭐ Die Leiste wird zur zweiten Karte unter der ersten: dieselben 370 bei
   x = 16, derselbe Radius, derselbe Wurf. Und der Kopf waechst mit, statt
   sie ueberstehen zu lassen.

   ⛔ NICHT `overflow: hidden` — damit hatte ich heute schon einmal den
   ganzen Startseiten-Kopf abgeschnitten. Ein Kind, das herausragt, ist ein
   Hoehenproblem des Traegers, kein Anlass zum Wegschneiden.
   Die Hoehe steht als `min-height`, damit der ungescrollte Kopf seine 46 px
   behaelt und nur der gescrollte waechst.
   ====================================================================== */
@layer s304 {
  html.s304-gescrollt body .theme__header,
  html body .theme__header.is-sticky,
  html body .theme__header.header--sticky{
    height:auto !important;
    min-height:46px !important;
    padding-bottom:8px !important;
  }
  html body .theme__header .s304-kopfversand{
    width:auto !important;
    margin:6px 16px 0 !important;
    padding:5px 12px !important;
    border-radius:14px !important;
    background:#FFFFFF !important;
    box-shadow:0 6px 18px -10px rgba(24,24,26,.45),
               inset 0 0 0 1px rgba(24,24,26,.06) !important;
    box-sizing:border-box !important;
  }
}

/* === S304-TITELGEWICHT-2309 · Enzo: „manche Produkttitel sind fett,
   manche nicht" =========================================================
   ⭐ GEMESSEN, und er hat recht — auf EINER Seite vier Gewichte fuer
   dasselbe, naemlich einen Produktnamen:
       product-upsell__title     400
       cart__item__title         400
       ic-cross-sell__title      600
       s304-fits__name           600
       km-delivery-title         600
       s304-vk__n                700
       s304-community__name      700
       s304-hist__title          800
   ⭐ Alle Produktnamen gehen auf **700**. Die SCHRIFTGROESSE bleibt, wie sie
   ist — sie traegt die Rangfolge (8 px im Korb-Vorschlag, 19 px im
   Seitentitel). Gleich soll das Gewicht sein, nicht die Groesse.
   ⛔ `.product__title` (der Seitentitel) ist absichtlich nicht dabei: er ist
   kein Listeneintrag, sondern die Ueberschrift der Seite, und steht mit 700
   ohnehin schon richtig.
   ====================================================================== */
@layer s304 {
  html body .product-upsell__title,
  html body .ic-cross-sell__title,
  html body .s304-fits__name,
  html body .km-delivery-title,
  html body .s304-vk__n,
  html body .s304-community__name,
  html body .s304-hist__title,
  html body .cart__item__title{
    font-weight:700 !important;
  }
}


/* === S304-KORB-ENTLASTEN-2309 · Enzo: „komplett overloaded" =============
   GEMESSEN im offenen Schubfach bei 402x660 — seine Worte sind belegbar:
       67 Bloecke · **14 verschiedene Breiten** (165 179 207 220 231 252 269
       275 276 348 356 372 378 402) · **5 verschiedene Eckradien**
       (0 · 12 · 18 · 22 · 99) · dieselbe Zahl viermal · zwei Balken.

   Drei Eingriffe, jeder gegen eine seiner Beobachtungen:

   ⭐ 1 · DIE DOPPELTE LEISTE. `.ic-empty-shipping-bar` ist die Fassung fuer
   den LEEREN Korb — und sie stand sichtbar bei y = 665, obwohl zwei Artikel
   drin lagen (Sichtbarkeit ueber die ganze Elternkette geprueft, nicht nur
   das Rechteck). Sie erscheint jetzt nur noch, wenn der Korb wirklich leer
   ist. Das nimmt auch den zweiten Fortschrittsbalken mit.
   ⛔ Nicht pauschal ausblenden: bei leerem Korb ist sie die EINZIGE
   Versandinformation. `:has()` fragt den Zustand, statt ihn zu raten.

   ⭐ 2 · EINE BREITE. Alles, was im Korb als Karte auftritt, liegt jetzt auf
   **370 bei x = 16** — dieselben Masse wie die Kopfpille und jeder Block auf
   der Produktseite. Enzos wiederkehrender Punkt ist nicht „zu breit" oder
   „zu schmal", sondern **„nicht dieselben Masse"**.

   ⭐ 3 · VERSAND & RETOUREN UND FAQ ALS BUBBLES. Enzo woertlich: „Und halt
   auch Versand und Retouren, FAQ muss halt auch so eine Bubble haben."
   GEMESSEN lagen beide bei **x = −369**, also links ausserhalb des Bildes,
   flach, ohne Flaeche und ohne Radius — in einem waagerechten Scroller.
   Sie bekommen die Form der uebrigen Bubbles, und der Scroller faengt links
   an statt in der Mitte.
   ====================================================================== */
@layer s304 {
  /* ── 1 · die Leer-Leiste nur bei leerem Korb ─────────────────────────── */
  html body .drawer--cart:has(.cart__item) .ic-empty-shipping-bar{
    display:none !important;
  }

  /* ── 2 · eine Breite fuer alles, was Karte ist ───────────────────────── */
  html body .drawer--cart .cart__item,
  html body .drawer--cart .ic-cross-sell,
  html body .drawer--cart .s304-wk-hebel,
  html body .drawer--cart .s304-fuss,
  html body .drawer--cart .drawer__message.free-shipping,
  html body .drawer--cart .drawer__heading{
    width:auto !important;
    margin-left:16px !important;
    margin-right:16px !important;
    box-sizing:border-box !important;
  }
  html body .drawer--cart .cart__item,
  html body .drawer--cart .ic-cross-sell,
  html body .drawer--cart .s304-wk-hebel{
    border-radius:18px !important;
  }

  /* ── 3 · Bubbles fuer „Versand & Retouren" und „FAQ" ─────────────────
     ⛔ MEIN ERSTER ANLAUF GING INS LEERE, und der Grund steht in meinem
     eigenen Gedaechtnis: **`.drawer__foot` gehoert zu DREI verschiedenen
     Schubfaechern.** Ich hatte `.drawer--cart .drawer__foot__scroll`
     geschrieben — die beiden Links sitzen aber im **Menue**:
         A.menu-304__secondary-pinned-link
         → NAV.menu-304__secondary-pinned
         → … → DIV.drawer__foot → DIV.drawer--header
     Die Regel konnte nie greifen, und die Messung sagte trocken `[]`.
     ⭐ Enzos Satz meint also das Burger-Menue, nicht den Korb — und dort
     ergibt er sofort Sinn: die Hauptpunkte darueber SIND schon Bubbles
     (370x58, eigene Flaeche, blur(8px)), diese beiden waren nackt.

     GEMESSEN, Ist-Zustand: 173x36 bei x = 33, `border-radius: 0`,
     `background: transparent`, kein Wurf, Gewicht 500.
     Ziel ist die Sprache der Hauptpunkte, nur kleiner — sie sind
     zweitrangig und sollen es bleiben. */
  html body .drawer--header .menu-304__secondary-pinned{
    display:flex !important;
    flex-direction:row !important;
    flex-wrap:wrap !important;
    gap:8px !important;
    width:auto !important;
  }
  html body .drawer--header .menu-304__secondary-pinned-link{
    width:auto !important;
    min-width:0 !important;
    padding:0 16px !important;
    height:36px !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:99px !important;
    background:rgba(255,255,255,.86) !important;
    backdrop-filter:blur(8px) !important;
    -webkit-backdrop-filter:blur(8px) !important;
    box-shadow:inset 0 1px 0 0 rgba(255,255,255,.9),
               0 4px 12px -8px rgba(24,24,26,.5),
               inset 0 0 0 1px rgba(24,24,26,.08) !important;
    font-weight:700 !important;
    font-size:11px !important;
    letter-spacing:.04em !important;
    white-space:nowrap !important;
  }

  /* ── 4 · der Hebel auf dieselbe Kante wie die Karten ─────────────────
     ⛔ Er stand auf 346 bei x = 28 statt 370 bei x = 16: `.drawer__foot`
     traegt bereits `padding: 0 12px 12px`, und mein `margin: 16px` kam
     obendrauf. **Ein Rand plus ein fremdes Polster ist nicht derselbe
     Rand** — erst messen, was der Traeger schon mitbringt. 12 + 4 = 16. */
  html body .drawer--cart .s304-wk-hebel{
    margin-left:4px !important;
    margin-right:4px !important;
  }
}


/* === S304-GLAS-DURCHGAENGIG-2309 · Enzo, 23.09. nachts =================
   „und halt auch der Card und so, das ist so komisches Grau und sowas. Ich
   wuerde, dass du am Ende alles einfach nochmal so ein bisschen
   transparenter machst auch auf der PDP und so weiter, aehnlich wie bei
   Scuffers, der Warenkorb." · „Also soll ja trotzdem noch luxurioes
   aussehen."

   ⭐⭐ DIE MESSUNG ERKLAERT BEIDE SAETZE MIT EINER URSACHE. Ich habe alle
   neutralen Flaechen der Produktseite ausgezaehlt (ueber die ganze
   Elternkette auf Sichtbarkeit gefiltert):
       **47 Elemente in reinem rgb(255,255,255), blur: none** — 7,8 Mpx
       dazu SECHS verschiedene Grautoene: 236 · 240 · 244 · 246 · 248 · 255
   Und der Grund dahinter: `html`, `body` und `main-content` sind **alle
   rgb(255,255,255)**.

   ⭐ Weisse Karten auf weissem Grund koennen nicht transparent wirken —
   und genau deshalb brauchte es ueberhaupt Grautoene, damit sich irgendetwas
   abhebt. Enzos zwei Beobachtungen sind dieselbe Sache: **das Grau ist der
   Ersatz fuer einen fehlenden Grund.**

   ⭐ Also andersherum: ein warmer Grund (#F4F1ED, der Hausgrund aus dem
   Entwurf), und die Karten werden durchscheinend. Dann traegt der Grund den
   Kontrast, kein Grau mehr noetig, und es wirkt warm statt klinisch —
   Enzos „luxurioes".

   ⛔⛔ KEIN `backdrop-filter` AUF DEN SEITENKARTEN, und das ist Absicht:
   Heute habe ich gemessen, dass drei gleichzeitige Videos die Bildrate von
   61 auf 30 gedrueckt haben. `backdrop-filter` ueber 47 Flaechen waere der
   naechste Kandidat dafuer. ⭐ Und er braeuchte es gar nicht: **eine
   Weichzeichnung zeigt nur dann etwas, wenn dahinter Struktur liegt.** Ueber
   einem einfarbigen Grund ist das Ergebnis pixelgleich mit einfacher
   Halbtransparenz — nur teurer. Blur bleibt deshalb dort, wo wirklich der
   Seiteninhalt durchscheint: Menue- und Korb-Schubfach.

   ⛔ `template-index` ist ausgenommen. Enzo hat die Startseite mehrfach
   ausdruecklich ausgeklammert, und ihr Hero fuellt die Flaeche ohnehin.
   ====================================================================== */
@layer s304 {
  /* ── 1 · der Grund, auf dem Glas ueberhaupt sichtbar wird ───────────── */
  html body:not(.template-index) .main-content,
  html body:not(.template-index) #MainContent{
    background:#FFFFFF !important;
  }

  /* ── 2 · die Karten werden durchscheinend ───────────────────────────── */
  html body:not(.template-index) .s304-neu .s304-karte,
  html body:not(.template-index) .s304-neu .product__block,
  html body:not(.template-index) .s304-neu .s304-vkopf,
  html body .drawer--cart .cart__item,
  html body .drawer--cart .ic-cross-sell,
  html body .drawer--cart .s304-wk-hebel{
    background:rgba(255,255,255,.66) !important;
    box-shadow:inset 0 1px 0 0 rgba(255,255,255,.95),
               inset 0 0 0 1px rgba(24,24,26,.07),
               0 10px 26px -16px rgba(24,24,26,.40) !important;
  }

  /* ── 3 · EIN Ton statt sechs ────────────────────────────────────────
     236 · 240 · 244 · 246 · 248 waren fuenf Toene fuer dieselbe Aufgabe:
     „etwas dezenter als die Karte". Auf dem warmen Grund genuegt ein
     durchscheinendes Haus-Braun — es nimmt den Ton des Grundes an, statt
     ein eigenes, kaltes Grau danebenzustellen. */
  html body:not(.template-index) .s304-neu .s304-spec__l,
  html body:not(.template-index) .s304-neu .s304-fits__media,
  html body:not(.template-index) .s304-videos .s304-poster,
  html body:not(.template-index) .s304-videos video{
    background:rgba(21,19,15,.045) !important;
  }

  /* ── 4 · die Schubfaecher behalten ihr echtes Glas ──────────────────
     Hier liegt der Seiteninhalt dahinter — hier zeigt die Weichzeichnung
     wirklich etwas und ist ihren Preis wert. */
  html body .drawer--cart .drawer__inner,
  html body .drawer--header .drawer__inner{
    background:rgba(253,252,250,.72) !important;
  }
}


/* === S304-GLAS-NACHZUG-2309 · die Reste, nachgemessen ==================
   Nach dem Glas-Umbau habe ich alle deckenden Flaechen der Produktseite
   erneut ausgezaehlt. Uebrig waren genau zwei Gruppen — und beide aus
   demselben Grund: **mein Waehler hing an `.s304-neu`, und diese Bloecke
   liegen ausserhalb davon.**
       8 x `.s304-fits__media`   rgb(246,246,246)   (Inner Circle Fits)
       1 x Bewertungskopf        rgb(244,244,244)
       4 x noch deckend weiss:  `.s304-huelle` (Geschenkblock),
          `.km-delivery-wrap` (Zeitstrahl), `.s304-videos`, ein DIV
   ⭐ `.s304-neu` umschliesst die Produktseiten-Sektion, aber mehrere
   Bloecke werden von `304-custom.js` an ANDERE Stellen gehaengt. Ein
   Waehler, der am Bau-Container haengt, verfehlt sie deshalb zwangslaeufig.
   Die Regeln greifen jetzt an der Blockklasse selbst.

   ⭐ Der Fuellton ist warm gehalten (21,19,15 = das Hausbraun mit 4,5 %),
   nicht neutralgrau. Genau das war Enzos „so komisches Grau": ein kaltes
   Grau neben einem warmen Grund liest sich als Fehler, ein warmer
   Schleier als Absicht.
   ====================================================================== */
@layer s304 {
  html body:not(.template-index) .s304-fits__media,
  html body:not(.template-index) .s304-spec__l,
  html body:not(.template-index) .rev-slider-card,
  html body:not(.template-index) .s304-rev [class*="summary"],
  html body:not(.template-index) .s304-rev:not(.product-item) > div > div:first-child{
    background:rgba(21,19,15,.045) !important;
  }
  html body:not(.template-index) .s304-huelle,
  html body:not(.template-index) .km-delivery-wrap,
  html body:not(.template-index) .s304-videos,
  html body:not(.template-index) .s304-community,
  html body:not(.template-index) .s304-fits,
  html body:not(.template-index) .s304-hist{
    background:rgba(255,255,255,.66) !important;
  }
  /* Der Videoblock traegt seine eigene weisse Flaeche aus dem Snippet —
     dort steht `background: #fff` direkt im <style> des Snippets. */
  html body:not(.template-index) .s304-vids .s304-videos{
    background:transparent !important;
  }
}


/* === S304-KORB-FEINSCHLIFF-2309 ========================================
   ⭐ 1 · Die Leiste im Korb war 12,8 px und damit so gross wie die
   Produktnamen darunter. Enzo zur selben Leiste auf der Produktseite:
   „nicht so aufdringlich … ein bisschen kleiner die Schrift." Dasselbe
   Mass wie dort: 11,5 px.

   ⭐ 2 · „25,00 € bis Gratisversand" unter „Versand 4,99 €" war die letzte
   verbliebene Wiederholung derselben Zahl — sie steht drei Zeilen weiter
   oben schon mit Balken. Die Kostenaufstellung behaelt den Preis, nicht den
   Fortschritt.
   ⛔ `:has()` prueft, ob die Leiste oben ueberhaupt da ist. Ist der Korb
   leer oder der Gratisversand schon erreicht, gibt es sie nicht — dann
   waere das Ausblenden hier ein Informationsverlust.
   ====================================================================== */
@layer s304 {
  html body .drawer--cart .free-shipping__default-message,
  html body .drawer--cart .drawer__message.free-shipping{
    font-size:11.5px !important;
    font-weight:500 !important;
    color:#15130F !important;
  }
  html body .drawer--cart:has(.drawer__body .ic-shipping-bar) .s304-fuss__l--versandhinweis,
  html body .drawer--cart:has(.drawer__body .ic-shipping-bar) .s304-fuss__zeile--hinweis{
    display:none !important;
  }
}


/* === S304-STARTSEITE-2409 · Enzos drei Startseiten-Punkte ==============

   ── 1 · „auf der Homepage sollte man das Impressum nicht sehen" ───────
   ⭐ EHRLICH ZUR SCHULDFRAGE: Enzo sagt dazu „da hast du so Logiken kaputt
   gemacht". **Das stimmt nicht** — ich habe beide Themes nebeneinander
   gemessen, Startseite gegen Startseite:
       ARBEITSKOPIE   .footer-sections  SICHTBAR, 180 px, Impressum sichtbar
       LIVE           .footer-sections  SICHTBAR, 180 px, Impressum sichtbar
   Identisch. Der Footer stand dort schon immer. Sein WUNSCH bleibt richtig
   und wird hier umgesetzt — die Ursache war nur eine andere.

   ⛔⛔ UND EIN RECHTLICHER HAKEN, der nicht uebergangen werden darf:
   § 5 TMG verlangt, dass das Impressum von **jeder** Seite aus in zwei
   Klicks erreichbar ist. Gemessen standen im Burger-Menue:
       INNER CIRCLE · WALLETCHAINS · BRACELETS · ESSENTIALS · ABOUT US ·
       BECOME A CREATOR · VERSAND & RETOUREN · FAQ
   **Kein Impressum.** Wer also nur den Footer ausblendet, macht die
   Startseite rechtswidrig. Deshalb wandern die Pflichtlinks zuerst ins
   Menue (Block weiter unten), und erst dann geht der Footer.

   ── 2 · „oben alles das gleiche Gruen wie auf dem Bild" ───────────────
   ⭐ Der Ton ist nicht geschaetzt, sondern aus dem Hero-Bild ausgelesen:
   die obere linke Ecke per Canvas gemittelt ergibt **rgb(19,27,30)**.
   Gemessen lagen `html`, `body` und der Kopf alle auf `rgb(255,255,255)` —
   daher der weisse Streifen ueber dem Bild, den Enzo meint.
   ⛔ Nur `body`, nicht `html`: die Farbe soll den Bereich hinter dem Kopf
   fuellen, nicht ueber die Seite hinauslaufen.
   ⛔ Und ausdruecklich NUR `template-index`. Auf allen anderen Seiten
   traegt der Sandgrund, und ein dunkler Body dahinter wuerde an jeder
   Kante durchblitzen.
   ====================================================================== */
@layer s304 {
  html body.template-index{
    background:#0B1616 !important;
  }
  /* Der Kopf liegt als Overlay ueber dem Bild — er darf die Flaeche
     zwischen sich und der Bildkante nicht wieder weiss fuellen. */
  html body.template-index .header-sections,
  html body.template-index #shopify-section-header{
    background:transparent !important;
  }

  /* ── 3 · der Footer verschwindet auf der Startseite ──────────────── */
  html body.template-index .footer-sections{
    display:none !important;
  }
}

/* === S304-RECHTSLINKS-INS-MENUE-2409 ===================================
   Die Pflichtlinks, die bisher nur im Startseiten-Footer standen, gehoeren
   ins Menue — sonst nimmt der Block darueber der Startseite ihr Impressum.
   Gemessen im Footer: Impressum · AGBs · Widerrufsrecht · Datenschutz ·
   Retoure & Miles-Gutschrift.
   ⭐ Sie bekommen dieselbe Bubble-Form wie „Versand & Retouren" und „FAQ",
   nur kleiner — sie sind drittrangig und sollen es bleiben.
   ⛔ Erzeugt werden sie von `s304-haus.js` (`rechtslinksInsMenue`), weil das
   Menue-Markup aus dem Theme kommt und hier nicht angefasst wird.
   ====================================================================== */
@layer s304 {
  html body .drawer--header .s304-rechtslinks{
    display:flex !important;
    flex-wrap:wrap !important;
    gap:6px !important;
    margin-top:10px !important;
    padding:0 !important;
    list-style:none !important;
  }
  html body .drawer--header .s304-rechtslinks a{
    display:inline-flex !important;
    align-items:center !important;
    height:30px !important;
    padding:0 12px !important;
    border-radius:99px !important;
    background:rgba(255,255,255,.70) !important;
    box-shadow:inset 0 1px 0 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(24,24,26,.08) !important;
    font-size:10px !important;
    font-weight:600 !important;
    letter-spacing:.03em !important;
    color:#4A423B !important;
    text-decoration:none !important;
    white-space:nowrap !important;
  }
}


/* === S304-MENUE-ENZO-2409 · drei Menue-Punkte, alle nachgemessen =======
   Enzo: „das Burger Menue ist auch noch nicht richtig, da brauche ich ja
   Bubbles bei den einzelnen Punkten." · „Futter finde ich immer noch zu
   hoch." · „das Logo ist verschoben."

   ⛔⛔ EINE MESSUNG VON MIR WAR FALSCH, und der Grund gehoert hierher:
   Mein erster Durchgang meldete `border-radius: 99px` — also Bubbles, also
   Enzo im Unrecht. Gemessen hatte ich aber **waehrend der Oeffnungs-
   animation**: das Schubfach stand bei `x = -402`, war also noch gar nicht
   da. Zwei Sekunden spaeter, im Ruhezustand, steht dort **`0px`**.
   ⭐ **Ein Schubfach misst man erst, wenn es steht.** Ein Wert aus einer
   laufenden Transition ist kein Zustand, sondern ein Zwischenbild — und er
   haette hier dazu gefuehrt, Enzos richtige Beobachtung abzuweisen.

   Die drei Befunde, relativ zum Schubfach-Inneren (402 x 840):
       Menuepunkte   370 x 58, **border-radius 0**
       Logo          75 x 36 bei x = 15 → Mitte bei 53, Soll 201
                     ⇒ **148 px aus der Mitte**
       Fuss          216 px hoch = **26 % der Menuehoehe**, dazu 154 px
                     Luecke zwischen letztem Punkt und Fuss

   ⭐ `menueKachelnRunden()` in `s304-haus.js` setzt den Radius inline —
   aber nur, wenn das JS laeuft. Die Form gehoert ins CSS, damit sie auch
   dann steht, wenn das Skript spaeter kommt oder gar nicht.
   ====================================================================== */
@layer s304 {
  /* 1 · Bubbles */
  html body .drawer--header .menu-304__primary-link{
    border-radius:99px !important;
    padding-left:26px !important;
    padding-right:20px !important;
  }

  /* 2 · das Logo — ⛔ UMGEDREHT AM 24.09.
     Hier stand „das Logo in die Mitte“, mit `position:absolute; left:50%`.
     Das war am 23.09. richtig (es stand 148 px aus der Mitte) und ist seit
     Enzos Ansage vom 24.09. falsch: „das soll ja ganz links, das soll ja
     linksbuendig sein mit den Schriften in den Bubbles."
     ⭐ Die absolute Lage wird zurueckgenommen, sonst kann kein Raster sie
     erreichen — ein absolut gesetztes Element ignoriert `justify-self`.
     Genau daran hat mein erster Anlauf heute gescheitert: das Raster stand,
     und das Logo blieb trotzdem bei x 185.
     ⭐ **Erst messen, WER gewinnt, dann DIE Regel aendern.** Zum dritten Mal
     heute derselbe Reflex. */
  html body .drawer--header .drawer__head .header__logo__link,
  html body .drawer--header .drawer__head .header__logo{
    position:static !important;
    left:auto !important;
    transform:none !important;
    margin:0 !important;
    justify-self:start !important;
  }

  /* 3 · der Fuss wird kompakt
     216 px fuer vier Zeilen war ein Viertel des Menues. Die Luecke davor
     traegt den Abstand, nicht der Fuss selbst. */
  html body .drawer--header .drawer__foot{
    padding:0 16px 10px !important;
  }
  html body .drawer--header .drawer__foot__scroll{
    gap:8px !important;
  }
  html body .drawer--header .mobile-menu__block{
    margin-bottom:0 !important;
    padding-bottom:0 !important;
  }
  /* ⛔ KORREKTUR 24.09. — Enzo zum dritten Mal: „unten im Menue ist zu viel"
     und „das Impressum soll nicht im Menue sein".
     GEMESSEN: der Fuss ist **222 von 792 px = 28 %** der Menuehoehe; allein
     die Rechtslinks nehmen **84 px**, weil fuenf Pillen auf zwei Zeilen
     umbrechen, plus 21 px Rand darunter.
     ⛔ GANZ ENTFERNEN GEHT NICHT, und das ist kein Formalismus: die
     Startseite hat keinen Footer. Faellt diese Liste weg, ist das
     Impressum von dort aus nicht mehr erreichbar — in Deutschland nicht
     optional (§ 5 TMG: „leicht erkennbar, unmittelbar erreichbar").
     ⭐ Enzos Anliegen laesst sich trotzdem erfuellen: sie hoeren auf, wie
     Menuepunkte auszusehen. Aus fuenf Pillen wird leises Kleingedrucktes
     mit Trennpunkten — optisch ein Footer, kein Menue.
     ⭐ `wrap` bleibt: fuenf Eintraege passen nicht in eine 370er Zeile, und
     ein `nowrap` haette sie stattdessen ueberlaufen lassen. */
  html body .drawer--header .s304-rechtslinks{
    margin-top:10px !important;
    margin-bottom:0 !important;
    gap:0 2px !important;
    flex-wrap:wrap !important;
    align-items:baseline !important;
    line-height:1.5 !important;
  }
  /* ⛔ Die 79 px kamen NICHT vom Text: `a` war **36 px** hoch bei 9,5 px
     Schrift. Ursache ist meine eigene Tippziel-Regel (`min-height`) fuer
     Links im Schubfach — sie trifft auch dieses Kleingedruckte. Ein
     Fussnoten-Link ist kein Tippziel im selben Sinn; hier wird sie
     ausdruecklich zurueckgenommen. */
  html body .drawer--header .s304-rechtslinks li,
  html body .drawer--header .s304-rechtslinks a{
    min-height:0 !important;
    margin:0 !important;
  }
  html body .drawer--header .s304-rechtslinks li{
    display:inline-flex !important;
    align-items:baseline !important;
  }
  html body .drawer--header .s304-rechtslinks li + li::before{
    content:"·" !important;
    margin:0 5px !important;
    font-size:9.5px !important;
    color:#B9B1A8 !important;
  }
  html body .drawer--header .s304-rechtslinks a{
    height:auto !important;
    padding:0 !important;
    border-radius:0 !important;
    background:none !important;
    box-shadow:none !important;
    font-size:9.5px !important;
    font-weight:500 !important;
    letter-spacing:.01em !important;
    color:#8B837A !important;
    white-space:nowrap !important;
  }
  /* Die Sprach- und Laenderwahl im Menuefuss braucht keine eigene Zeile. */
  html body .drawer--header .drawer__foot [class*="localization"],
  html body .drawer--header .drawer__foot [class*="popout"]{
    margin-top:6px !important;
  }
}


/* === S304-KORB-PREISE-2409 · umbrechende Preise im Vorschlagsblock =====
   Gemessen im offenen Korb: „0 €" stand mit **5 px Breite und 20 px Hoehe**
   da — ein Zeichen pro Zeile. Der Name daneben nimmt die Breite, und der
   Preis wird gequetscht, bis er umbricht.
   ⭐ Ein Preis darf nie umbrechen: er ist die Zahl, auf die der Blick
   faellt. Er bekommt `white-space: nowrap` und darf nicht schrumpfen; der
   NAME gibt nach und bekommt `text-overflow: ellipsis` — ein gekuerzter
   Name ist lesbar, ein gestapelter Preis nicht.
   ====================================================================== */
@layer s304 {
  html body .drawer--cart .ic-cross-sell [class*="price"],
  html body .drawer--cart .ic-cross-sell s,
  html body .drawer--cart .ic-cross-sell b,
  html body .drawer--cart .ic-cross-sell__price{
    white-space:nowrap !important;
    flex-shrink:0 !important;
  }
  html body .drawer--cart .ic-cross-sell__title,
  html body .drawer--cart .ic-cross-sell [class*="title"]{
    min-width:0 !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    white-space:nowrap !important;
  }
  /* Name und Preis in EINER Zeile, der Name gibt nach. */
  html body .drawer--cart .ic-cross-sell__card > *:last-child,
  html body .drawer--cart .ic-cross-sell [class*="card"] > *:last-child{
    display:flex !important;
    align-items:baseline !important;
    gap:6px !important;
  }
}


/* === S304-KORB-SENKRECHT-FREI-2409 ====================================
   Gefunden beim Durchlauf ueber ALLE Elemente der Seite, nicht in den
   eigenen Regeln: das Basis-Theme setzt auf der Kreuzverkaufs-Schiene im
   Warenkorb (`Das koennte dir gefallen`) `touch-action: pan-x`. Damit ist
   dort das SENKRECHTE Wischen verboten — die Schublade laesst sich mit dem
   Finger auf dieser Zeile nicht weiterscrollen. Gemessene Flaeche 317x94,
   also gut ein Drittel der Schubladenbreite.
   ⭐ Dieselbe Fehlerklasse wie auf der PDP: eine `touch-action`-Liste ist
   eine ERLAUBNISLISTE. Wer eine Achse eintraegt, schliesst die andere. */
@layer s304 {
  html body .ic-cross-sell__track,
  html body .drawer--cart .ic-cross-sell__track{
    touch-action:pan-x pan-y pinch-zoom !important;
  }
}


/* === S304-NOTCH-UND-GRUND-2409 ========================================
   Enzo: „das Notch-Problem ist wieder schwarz" — und der Warenkorb nimmt
   sich den Notch auch.
   ⛔ URSACHE, gemessen: die Seite laeuft mit `viewport-fit=cover` (richtig
   so), deklariert aber KEIN `color-scheme` — gemessen `normal`. Steht das
   Geraet im Dunkelmodus (hier `prefers-color-scheme: dark` = true), faerbt
   der Browser ALLES, was er selbst malt — Statusleiste, Notch-Zone,
   Ueberdehnung — in SEINEM Schema. Schwarz.
   ⛔ Zweite Ursache, unabhaengig davon: `<html>` und `<body>` standen auf
   **reinem Weiss**, waehrend der Seitengrund Sand `#F4F1ED` ist. Jede
   Flaeche, die der Browser selbst faerbt, zeigte den falschen Ton.
   ⭐ `color-scheme: light` sagt dem Browser, dass die Seite hell ist; der
   Grund auf `html` sagt ihm, WELCHES Hell. Beides zusammen, nicht eins.
   ⭐ Startseite bleibt bewusst dunkelgruen: Enzo will oben das Gruen des
   Bildes sehen, nicht Sand. Der Ton stammt aus dem Hero (`#131B1E`).
   ⛔ WAS ICH NICHT BELEGEN KANN: wie es auf Enzos iPhone aussieht. Messbar
   ist hier nur, dass `colorScheme` jetzt `light` ist und der Grund stimmt —
   was Safari daraus in der Notch-Zone macht, muss er gegenlesen. */
@layer s304 {
  :root{ color-scheme: light !important; }
  html,
  html body{ background-color:#FFFFFF !important; }
  /* ⭐ 24.09. — Enzo will auf der Startseite BEIDES: oben das Gruen des
     Heros (auch in der Notch-Zone), unten Weiss „wie beim alten Theme".
     Eine Flaeche kann nicht zwei Farben haben — ein Verlauf auf der
     Wurzel kann es: der Browser zieht beim Ueberdehnen die RANDFARBE
     weiter, oben also Gruen, unten Weiss. Die 160 px sind grosszuegig
     gewaehlt, weil der Kopf mitsamt Notch darunter passen muss.
     ⛔ `background-color` bleibt Weiss stehen — sie traegt alles, was der
     Verlauf nicht abdeckt, und ist der Ton der unteren Ueberdehnung. */
  /* ⛔⛔ KORRIGIERT 24.09. abends — DER NOTCH BLIEB WEISS, UND ZWAR DURCH
     GENAU DIESE ZEILE. Hier stand `background-color: #FFFFFF` plus ein
     Verlauf, der oben 160 px gruen malt. In Chrome sah das richtig aus.
     ⭐ **Safari faerbt die Zone hinter dem Notch aus der Hintergrund-FARBE,
     nicht aus dem Hintergrund-BILD.** Der Verlauf war also unsichtbar fuer
     genau die Flaeche, um die es geht — und `#FFFFFF` war die Farbe, die
     Safari genommen hat.
     ⛔ Der Trick mit dem Verlauf sollte oben Gruen und unten Weiss
     ermoeglichen. Er hat den wichtigeren der beiden Wuensche gekostet.
     Unten weiss kommt jetzt aus dem Inhalt selbst (die Sektion am Fuss der
     Startseite ist weiss), nicht aus der Wurzel. */
  /* ⛔⛔ GETRENNT 24.09. abends — S304-LEISTE-UNTEN-2409.
     Vorher trugen `html` UND `body` denselben Wert, deshalb konnte keine
     Messung unterscheiden, welche der beiden Safari-Leisten woher kommt.
     Jetzt: Wurzel dunkel (für den Notch), Körper weiß (für unten). */
  html:has(body.template-index){
    background-color:#0B1616 !important;
    background-image:none !important;
  }
  html body.template-index{
    background-color:#0B1616 !important;
    background-image:none !important;
  }
}


/* === S304-KOPF-GRUND-STARTSEITE-2409 ==================================
   Auf der Startseite ist der Grund nicht Sand, sondern das Dunkelgruen des
   Heros. Damit der Kopf dort genauso schwebt wie ueberall sonst, traegt
   sein Ruecken diesen Ton — das ist genau das „Gruen um die abgerundeten
   Ecken", das Enzo sehen will.
   ⛔ Die KARTE bleibt weiss, also bleiben die Glyphen dunkel und lesbar.
   Das war der Fehler vom 23.09.: damals wurde die Schrift weiss gesetzt
   und der Kopf sah leer aus. */
@layer s304 {
  /* ⛔⛔ ERSETZT 24.09. abends — S304-KANTE-2409, siehe unten.
     Hier stand ein deckendes #131B1E. Genau das war Enzos Kante. */
  html body.template-index .theme__header{
    background:transparent !important;
  }
  html body.template-index .theme__header::after{
    background:none !important;
  }
}


/* === S304-WEISSE-BAENDER-2409 =========================================
   Gemessen bei echten 402 px: die Seite hat DREI deckend weisse Baender
   ueber die volle Breite, waehrend alles andere eine 370er Karte auf
   Sandgrund ist.
       DIV.shopify-section-group-group-header   402x46   y 32
       SECTION.custom-code.section-padding      402x398  (INNER CIRCLE FITS)
       SECTION.custom-code.section-padding      402x252  (DAZU PASST AUCH)

   ⛔ Der Gruppentraeger ist der Rest eines alten Fixes: der weisse Ruecken
   hing frueher an der GRUPPE, dann wurde er an den Kopf gehaengt — aber
   die Gruppe behielt ihr Weiss. Der Kopf klebt beim Scrollen, die Gruppe
   nicht: uebrig bleibt ein weisses Band unter dem Kopf. **Das ist der
   zweite Teil von Enzos „weisse Linie unter dem Header".**
   ⛔ Die beiden `custom-code`-Traeger sind schlicht Shopifys Standard —
   niemand hat sie je angefasst. Sie machen aus zwei schwebenden Karten
   zwei weisse Kaesten in einem weissen Kasten (Regel: **nie zwei Ebenen
   mit gleicher Tiefe stapeln**).
   ⭐ Der Traeger wird durchsichtig, die Karte darin behaelt ihr Glas. */
@layer s304 {
  html body .shopify-section-group-group-header{
    background:#FFFFFF !important;
  }
  html body.template-index .shopify-section-group-group-header{
    background:transparent !important;   /* S304-KANTE-2409 */
  }
  html body section.custom-code,
  html body .shopify-section > section.custom-code{
    background:transparent !important;
  }
}


/* === S304-KORB-PAARE-2409 =============================================
   Die Form zu `paareBauen()` in `s304-haus.js`. Enzo hat am 24.09. die
   Fassung V2 gewaehlt und EINE Aenderung daran verlangt:
     "unsere Produkte sind ja vor weissem Hintergrund, dann soll auch der
      Anschein erhalten bleiben, dass das auf der Kachel schwebt und nicht
      noch so einen anderen farbigen Hintergrund auf der Kachel."
   ⭐ Deshalb hat die Bildflaeche KEINEN eigenen Grund und keine eigene
   Einfassung: sie ist dieselbe weisse Flaeche wie die Kachel. Die Tiefe
   kommt allein vom Wurf der Kachel — erhaben, Licht oben innen.
   ⛔ Dasselbe hatte er mir bei der Bildkarte auf der PDP schon gesagt
   (dort geloest am 24.09. frueh, Unterschied 0). Zweites Mal — der
   Reflex, eine Flaeche durch einen anderen Ton abzusetzen, sitzt tief.
   ====================================================================== */
@layer s304 {
  html body .drawer--cart .ic-cross-sell__track[data-s304-paare]{
    display:grid !important;
    grid-template-columns:repeat(2, minmax(0,1fr)) !important;
    gap:10px !important;
    overflow:visible !important;
  }
  html body .s304-paar{
    display:flex !important;
    flex-direction:column !important;
    padding:10px 10px 11px !important;
    border:0 !important;
    border-radius:18px !important;
    background:#FFFFFF !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,1),
               inset 0 0 0 1px rgba(24,24,26,.055),
               0 14px 30px -18px rgba(24,24,26,.55) !important;
    text-align:left !important;
    font:inherit !important;
    color:#15130F !important;
    cursor:pointer !important;
  }
  /* Die Bildflaeche: kein Grund, keine Einfassung, kein Radius. */
  html body .s304-paar .s304-paar__b{
    position:relative !important;
    display:grid !important;
    grid-template-columns:repeat(2, minmax(0,1fr)) !important;
    height:86px !important;
    background:transparent !important;
    box-shadow:none !important;
    border-radius:0 !important;
  }
  html body .s304-paar .s304-paar__h{
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    padding:4px !important;
    overflow:hidden !important;
    background:transparent !important;
  }
  html body .s304-paar .s304-paar__h img{
    max-width:100% !important; max-height:100% !important;
    width:auto !important; height:auto !important;
    object-fit:contain !important;
    border-radius:0 !important;
    background:transparent !important;
  }
  html body .s304-paar .s304-paar__plus{
    position:absolute !important; left:50% !important; top:50% !important;
    transform:translate(-50%,-50%) !important;
    display:inline-flex !important; align-items:center !important; justify-content:center !important;
    width:20px !important; height:20px !important;
    border-radius:99px !important;
    background:linear-gradient(160deg,#FFFFFF 0%,#E9E3DB 100%) !important;
    box-shadow:0 2px 4px rgba(18,18,20,.18), inset 0 1px 0 rgba(255,255,255,1) !important;
    font-size:12px !important; font-weight:700 !important; line-height:1 !important;
    color:#2A241E !important;
  }
  html body .s304-paar .s304-paar__n{
    display:block !important; font-size:11px !important; font-weight:800 !important;
    margin-top:7px !important; letter-spacing:.01em !important;
    white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
  }
  html body .s304-paar .s304-paar__g{
    display:block !important; font-size:10px !important; font-weight:600 !important;
    color:#8A827B !important;
    white-space:nowrap !important; overflow:hidden !important; text-overflow:ellipsis !important;
  }
  html body .s304-paar .s304-paar__z{
    display:flex !important; align-items:baseline !important;
    justify-content:space-between !important; margin-top:8px !important;
  }
  html body .s304-paar .s304-paar__p{
    font-size:19px !important; font-weight:800 !important; letter-spacing:-.015em !important;
  }
  html body .s304-paar .s304-paar__k{
    display:inline-flex !important; align-items:center !important; justify-content:center !important;
    width:26px !important; height:26px !important; flex:0 0 26px !important;
    border-radius:99px !important;
    background:linear-gradient(180deg,#2E2822 0%,#15130F 100%) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.14), 0 5px 12px -5px rgba(18,18,20,.7) !important;
    color:#FBF8F3 !important; font-size:14px !important; font-weight:700 !important; line-height:1 !important;
  }
  html body .s304-paar.laeuft{ opacity:.55 !important; }
  /* Zwei Kacheln nebeneinander haben nichts mehr zu schieben. */
  html body .ic-cross-sell[data-s304-paarform] [data-s304-korb-prev],
  html body .ic-cross-sell[data-s304-paarform] [data-s304-korb-next]{
    display:none !important;
  }
}


/* === S304-DIE-SEITE-SCHEINT-DURCH-2409 ================================
   Enzo, 24.09.: „das ist doch sogar richtig cool, wenn der Hero
   durchscheint ... und wenn man auf einer Kategorieseite ist, scheint halt
   die Kategorieseite durch. Dann ist halt hinten einfach nur so ein
   bisschen weiss."  Dazu, mehrfach: „diesen Grauton finde ich richtig
   kacke."

   ⭐⭐ DER GRAUTON HAT EINE QUELLE, UND SIE STEHT IN MEINEM EIGENEN CSS:
   hinter dem Glasblatt liegt ein DUNKLER Schleier (`.drawer__underlay`,
   zuletzt `rgba(26,21,17,.42)`) und darueber ein `blur(12px)`. Weisses Glas
   ueber einem dunklen Schleier IST Grau — und ein Weichzeichner mischt
   alles Bunte dahinter zu Mittelgrau. Ich hatte den Schleier am 23.09.
   sogar absichtlich von 0,20 auf 0,42 erhoeht, um das Glas sichtbar zu
   machen. Genau das war der Fehler: Kontrast durch Abdunkeln erzeugt.
   ⭐ Scuffers wirkt nicht grau, weil dort ECHTE FARBE hinter dem Glas liegt.
   Also: Schleier fast weg, Weichzeichner von 22 auf 5, und die Seite selbst
   traegt den Kontrast.

   ⛔ EINE SACHE KIPPT DABEI, und sie ist nicht kosmetisch: auf der
   Startseite liegt ein DUNKLER Hero dahinter. Helles Glas darueber ergibt
   Mittelton, und dunkle Schrift wird darauf unlesbar. Deshalb ist das
   Blatt dort dunkel und die Schrift hell — auf allen anderen Seiten
   umgekehrt. Die Blasen bleiben ueberall deckend weiss, sie tragen die
   Menuepunkte.
   ====================================================================== */
@layer s304 {
  /* 1 · Der Schleier darf die Farbe nicht mehr totschlagen. */
  html body .underlay.drawer__underlay{
    background:rgba(20,16,12,.10) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }

  /* 2 · Helle Seiten: duenne weisse Scheibe, die Seite scheint durch. */
  html body:not(.template-index) .drawer--header .drawer__inner,
  html body:not(.template-index) mobile-menu .drawer__inner,
  html body:not(.template-index) .drawer--cart .drawer__inner{
    background:rgba(255,255,255,.56) !important;
    -webkit-backdrop-filter:blur(5px) saturate(1.06) !important;
    backdrop-filter:blur(5px) saturate(1.06) !important;
  }

  /* 3 · Startseite: der dunkle Hero scheint durch, die Schrift wird hell. */
  html body.template-index .drawer--header .drawer__inner,
  html body.template-index mobile-menu .drawer__inner{
    background:rgba(14,20,22,.44) !important;
    -webkit-backdrop-filter:blur(5px) saturate(1.12) !important;
    backdrop-filter:blur(5px) saturate(1.12) !important;
  }
  html body.template-index .drawer--header .drawer__head,
  html body.template-index .drawer--header .drawer__head *,
  html body.template-index .drawer--header .drawer__foot,
  html body.template-index .drawer--header .drawer__foot *{
    color:#F2EFEA !important;
  }
  html body.template-index .drawer--header .drawer__foot a{
    background:rgba(255,255,255,.10) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.16) !important;
  }
  html body.template-index .drawer--header .drawer__head svg,
  html body.template-index .drawer--header .drawer__foot svg{
    stroke:#F2EFEA !important;
  }

  /* 4 · Die Blasen bleiben deckend — sie tragen die Schrift, nicht das Glas. */
  html body .menu-304__primary-link{
    background: rgba(255,255,255,.46) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }
}


/* === S304-MENUEKOPF-LINKSBUENDIG-2409 =================================
   Enzo, 24.09.: „das 304supply ist jetzt verrueckt. Das soll ja ganz links,
   das soll ja linksbuendig sein mit den Schriften in den Bubbles. Und
   darunter soll dann die Bewertung sein. Und auch Versand und Retouren und
   FAQ soll untereinander sein."

   ⭐ GEMESSEN, warum es „verrueckt" aussah: `.drawer__head` ist ein
   `flex-direction: row-reverse`. Logo und Bewertung liegen damit in EINER
   Zeile und ueberlappen sich, sobald beide breit genug sind — auf dem
   Bildschirmfoto steht das Logo mitten im Wort „Kunden".
   ⭐ Aus der Zeile wird ein Raster: Logo oben links, Bewertung darunter,
   Schliessen rechts.

   ⛔⛔ KORRIGIERT 22:05 — DER EINZUG WAR FALSCH, UND ZWAR WEIL ICH IHN
   GERECHNET STATT GEMESSEN HABE. Hier stand: „42 px — das ist 16 (Rand
   der Blase) + 26 (ihr Innenpolster)", mit dem Zusatz „nicht geschaetzt,
   nachgerechnet". Nachgemessen bei echten 402 px ist es umgekehrt:
       a.menu-304__primary-link   [53, 104, 303, 58]   padding 14px 16px
       Textkante (Range gemessen) **x = 70**
   Also **53 (Blasenkante) + 16 (Innenpolster) = 70**. Ich hatte die beiden
   Zahlen vertauscht und dem Ergebnis ein „nachgerechnet" angeheftet.
   ⭐⭐ **Eine Rechnung ist keine Messung** — dieselbe Klasse wie „eine Zahl
   aus einem Plan ist keine Messung". Die Textkante misst man mit einer
   `Range` über den Textinhalt, nicht aus zwei addierten Polstern.
   Enzo woertlich: „linksbuendig mit den Schriften in den Bubbles" — also
   mit der **Schrift**, nicht mit der Blasenkante. Deshalb 70.
   ====================================================================== */
@layer s304 {
  html body .drawer--header .drawer__head{
    display:grid !important;
    grid-template-columns:1fr auto !important;
    align-items:start !important;
    row-gap:9px !important;
    /* 22:12 — der dritte und letzte Wert, diesmal an EINER sauberen
       Messung abgelesen statt aus Polstern addiert (402 px, ohne
       Scrollbalken, Schublade bei left 0):
           nav.menu-304__primary   [42, 68, 329, 424]  padding-left 26
           a (Blase)               [68, 85, 303,  58]  padding-left 26
           Textkante per Range     **95**
       42 + 26 + 26 = 94, gemessen 95 (Rundung). Also 95. */
    padding:18px 16px 4px 95px !important;
  }
  html body .drawer--header .drawer__head > *{
    grid-column:1 !important;
    grid-row:1 !important;
    justify-self:start !important;
    margin:0 !important;
    transform:none !important;
    position:static !important;
  }
  html body .drawer--header .drawer__head .menu-trust-badge{
    grid-row:2 !important;
  }
  html body .drawer--header .drawer__head .drawer__close{
    grid-column:2 !important;
    grid-row:1 !important;
    justify-self:end !important;
  }

  /* Versand & Retouren und FAQ untereinander, volle Breite. */
  html body .drawer--header .mobile-menu__block{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:8px !important;
  }
  html body .drawer--header .mobile-menu__block > a,
  html body .drawer--header .mobile-menu__block > *{
    width:auto !important;
    justify-content:flex-start !important;
    padding-left:26px !important;
  }

  /* Die Rechtslinks sind aus dem Menue raus (siehe `rechtslinksInsMenue`);
     falls das Skript spaeter kommt, sollen sie gar nicht erst aufblitzen. */
  html body .drawer--header .s304-rechtslinks{ display:none !important; }

  /* Ihre neue Heimat: eine leise Zeile ganz unten auf der Startseite. */
  html body.template-index .s304-rechtszeile{
    display:flex !important;
    flex-wrap:wrap !important;
    align-items:baseline !important;
    justify-content:center !important;
    gap:0 2px !important;
    margin:0 !important;
    padding:14px 16px 18px !important;
    list-style:none !important;
    background:#FFFFFF !important;
    line-height:1.6 !important;
  }
  html body.template-index .s304-rechtszeile li{
    display:inline-flex !important;
    align-items:baseline !important;
    min-height:0 !important;
    margin:0 !important;
  }
  html body.template-index .s304-rechtszeile li + li::before{
    content:"\00b7" !important;
    margin:0 6px !important;
    font-size:10px !important;
    color:#B9B1A8 !important;
  }
  html body.template-index .s304-rechtszeile a{
    min-height:0 !important;
    padding:0 !important;
    font-size:10px !important;
    font-weight:500 !important;
    color:#8B837A !important;
    text-decoration:none !important;
    white-space:nowrap !important;
  }
}


/* === S304-MENUEFUSS-SPALTE-2409 =======================================
   Enzo: „Versand und Retouren und FAQ soll untereinander sein."
   ⛔ Mein erster Anlauf setzte `flex-direction: column` auf
   `.mobile-menu__block` — und die Messung sagte brav `column`, waehrend die
   beiden Links weiter nebeneinander standen. Der Grund: dieser Block hat
   GENAU EIN Kind, `.mobile-menu__block-inner`, und darin liegen die Links.
   Eine Richtung auf dem Grosselternteil ordnet nichts an.
   ⭐ Ein Wert, der gemessen „richtig“ ist und trotzdem nichts bewirkt, ist
   das sicherste Zeichen, dass man die falsche Ebene erwischt hat.
   ====================================================================== */
@layer s304 {
  /* ⛔⛔ DRITTER ANLAUF, und die Lehre steht jetzt hier:
     `.mobile-menu__block` war die falsche Ebene, `.mobile-menu__block-inner`
     auch. Die beiden Links liegen in `NAV.menu-304__secondary-pinned`, und
     GENAU DIE stand auf `flex-direction: row`.
     ⭐ Zweimal hintereinander habe ich eine Ebene zu hoch gesetzt, und
     zweimal meldete die Messung brav `column` — weil sie stimmte, nur fuer
     einen Kasten mit einem einzigen Kind. **Ein Wert, der gemessen richtig
     ist und trotzdem nichts bewirkt, heisst: falsche Ebene.**
     Gefunden hat es erst die Frage „welches Element haelt diesen Link?“
     samt Elternkette — nicht das Raten der naechsten Huelle. */
  html body .drawer--header .mobile-menu__block-inner,
  html body .drawer--header .menu-304__secondary-pinned{
    display:flex !important;
    flex-direction:column !important;
    align-items:stretch !important;
    gap:8px !important;
  }
  html body .drawer--header .mobile-menu__block-inner > a,
  html body .drawer--header .menu-304__secondary-pinned > a,
  html body .drawer--header .mobile-menu__block-inner > *{
    width:auto !important;
    justify-content:flex-start !important;
    text-align:left !important;
    padding-left:26px !important;
  }
}


/* === S304-KORB-EMPFEHLUNG-2409 · ZURUECKGENOMMEN 24.09. ===============
   ⛔⛔ Hier stand ein Raster fuer `.ic-cross-sell__track` im Zustand
   „DAS KOENNTE DIR GEFALLEN". Auf Enzos Telefon lagen die Karten danach
   UEBEREINANDER, Preise halb abgeschnitten.
   ⛔ DER FEHLER WAR NICHT DAS CSS, SONDERN MEIN VORGEHEN: ich habe einen
   Zustand gestylt, den ich **nie gerendert gesehen** habe. Gemessen hatte
   ich nur Klassennamen und Kinderzahl — nie ein Bild. Die Karten des
   Themes tragen in diesem Zustand eigene Breiten und Positionierung; ein
   Raster darueber bringt sie zum Stapeln.
   ⭐ REGEL, die daraus folgt: **ein Zustand, den ich nicht im Bild gesehen
   habe, wird nicht gestylt.** Erst reproduzieren, dann anfassen.
   ====================================================================== */



/* === S304-SCHUBFACH-RADIUS-2409 ======================================
   Enzo, 24.09.: „wenn ich das Burger-Menue schnell und wieder langsam
   zumache, ist es einmal rund und dann einmal nicht rund, sondern halt so
   eckig."

   ⭐ GEMESSEN: der Radius ist in BEIDEN Ruhezustaenden 22 px (offen wie
   geschlossen) — es ist also kein Zustandsfehler. Aber `.drawer__inner`
   traegt **`transition: all`**. Damit animiert der Browser jede
   Eigenschaft, die sich waehrend des Schliessens aendert — auch
   `border-radius` und `backdrop-filter`. Wer schnell schliesst, sieht
   einen Zwischenstand.
   ⭐ `transition: all` ist ausserdem teuer: es zwingt den Browser, bei
   jeder Aenderung zu pruefen, ob etwas zu animieren ist. Hier bewegt sich
   genau EINES: die Lage. Also wird genau das animiert.
   ⛔ WAS ICH NICHT BELEGEN KONNTE: Enzos Beobachtung selbst. Schnelles und
   langsames Schliessen laesst sich hier nicht ausloesen (das Fenster ist
   verdeckt, es kommen keine Scroll- und Zeigerereignisse an). Behoben ist
   die plausibelste Ursache, nicht ein reproduzierter Fall — er muss es
   gegenlesen.
   ====================================================================== */
@layer s304 {
  html body .drawer .drawer__inner,
  html body .drawer--header .drawer__inner,
  html body .drawer--cart .drawer__inner,
  html body mobile-menu .drawer__inner{
    border-radius:22px !important;
    transition:transform .32s cubic-bezier(.4, 0, .2, 1),
               opacity .2s ease !important;
    will-change:transform !important;
  }
  @media (prefers-reduced-motion: reduce){
    html body .drawer .drawer__inner{ transition:none !important; }
  }
}


/* === S304-KARUSSELL-FUSSLINIE-2409 ===================================
   Enzo, 24.09.: „bei dazu passt auch, da sind irgendwann die Sachen nicht
   richtig formatiert."

   ⛔ ZUERST GEPRUEFT, WAS DA UEBERHAUPT PASSIERT — und der Befund hat mich
   davon abgehalten, das Falsche zu tun: jede Kachel traegt ein
   `matrix3d(0.755, 0, 0.368, 0, 0, 0.84, ...)`. Das ist die **Drehung, die
   Enzo selbst am 23.09. bestellt hat**: „wie so ein virtuelles Karussell …
   so ein bisschen 3D swipet." Sie gehoert NICHT weg.

   ⭐ Was stoert, ist eine NEBENWIRKUNG davon: die Kachel wird als Ganzes
   auf `scale(.84)` verkleinert, also wandert auch der Produktname nach
   oben. Gemessen standen die Namen bei y 261 / 264 / 268 — drei Hoehen in
   einer Reihe. Das liest sich als „nicht richtig formatiert".

   ⭐ Ein Wort loest es: der Drehpunkt liegt bisher in der MITTE der Kachel.
   Liegt er an der UNTERKANTE, bleibt die Fusslinie stehen, waehrend die
   Kachel kippt und schrumpft. Alle Namen liegen dann auf einer Linie, und
   die Drehung bleibt vollstaendig erhalten.
   ⛔ Keine Zahl geaendert, keine Bewegung entfernt — nur der Punkt, um den
   sie stattfindet.
   ====================================================================== */
@layer s304 {
  html body .s304-community .swiper-slide,
  html body .s304-fits .swiper-slide{
    transform-origin:50% 100% !important;
  }
}


/* === S304-KANTE-2409 · WARUM DAS BILD JETZT BIS GANZ OBEN LÄUFT =======
   Enzo am 24.09. abends, nachdem der Notch endlich dunkel war:
   „da ist jetzt trotzdem noch so ne Kante, es muss halt genau das Grün
   von dem Hintergrund nach oben so durchgehen … dass man das Bild so
   extended nach oben."

   ⭐⭐ GEMESSEN IN SEINEM EIGENEN SCREENSHOT (1206×2622, also 3× 402 px) —
   das ist die einzige Wahrheit, die es hier gibt, weil ich kein iPhone habe:
       Notch + Kopfband   #151B1E   (= mein #131B1E)
       Bildkante bei      y 324 (file)  =  108 CSS-px
       Bild oben MITTE    #131B1B   ← passt fast genau
       Bild oben RAND     #090B0D   ← HIER sieht er die Kante

   ⭐⭐ DER PUNKT, DEN ICH VORHER NICHT VERSTANDEN HATTE:
   das Hero-Bild hat eine **Vignette** — außen dunkel, mittig heller.
   **Eine flache Farbe kann eine Vignette nie treffen.** Wer die Mitte
   trifft, verfehlt die Ränder; wer die Ränder trifft, verfehlt die Mitte.
   Jede weitere Farbrunde wäre also verlorene Zeit gewesen. Enzos eigener
   Vorschlag — das BILD nach oben ziehen — ist die einzige Lösung, die
   ohne Kante auskommt, weil die Vignette dann einfach weiterläuft.

   ⭐ WO DAS BAND HERKAM, gemessen bei echten 402 px:
       .s304-hero        top 0, höhe 856   ← das Bild lag SCHON ganz oben
       .theme__header    top 0, höhe 46, position: relative
   Der Kopf liegt also über dem Bild und hat es mit meinem eigenen
   #131B1E überpinselt. **Das Band war nie eine Lücke — es war Farbe.**
   Deshalb reicht `transparent`; nichts muss verschoben werden.
   ⛔ Gefahrlos, weil der Kopf `position: relative` ist: er scrollt mit
   weg und steht nie über den weißen Sektionen weiter unten.

   ⭐ DIE EINE FARBE, DIE BLEIBT: die Statusleiste kann Safari nicht mit
   Bild füllen — dieser Streifen gehört dem Browser, nicht der Seite.
   Dafür ist #0B1616 gerechnet: oberste **sichtbare** Bildzeile (cover-Beschnitt
   x 89..990 von 1080) = #112223 roh, mal 0,65 fürs Overlay = #0B1616.
   Quer über die Breite streut sie nur noch #071113..#0D191A — vorher war
   der Abstand #151B1E gegen #090B0D, also gut dreimal so groß.

   ⛔ WAS ICH NICHT BELEGEN KANN: ob die Kante auf seinem Gerät dann
   wirklich weg ist. Gemessen ist die Farbe, nicht das Ergebnis.
   ====================================================================== */


/* === S304-OBERKANTE-VERLAUF-2409 · DIE KANTE VERSCHWINDET IM BILD =====
   Enzo, dritter Anlauf: „Kann man nicht einfach das Bild dort, wo oben die
   Notch ist, einfach extenden, dass dort das Bild halt wirklich ist. Nicht
   nur der Farbcode, sondern wirklich das Bild."

   ⛔⛔ DAS GEHT NICHT — UND DAS IST JETZT BEWIESEN, NICHT VERMUTET:
   zwischen seinen beiden Screenshots (20:52 und 21:13) habe ich nur
   `theme-color` geändert, von #131B1E auf #0B1616. Gemessen haben sich
   daraufhin **beide** Streifen mitgeändert:
       oben   #151B1E -> #0D1616
       unten  #151B1E -> #0D1616
   Beide folgen also exakt `theme-color`. Das sind Safaris eigene Leisten,
   nicht die Seite. `viewport-fit=cover` steht im Viewport-Meta, und
   `safe-area-inset-top` kommt in **keinem** der 8 Stylesheets und im
   Inline-CSS vor — es gibt also nichts, was ich wegnehmen könnte, damit
   das Bild dort hinwandert. Die Seite beginnt unter dem Streifen. Punkt.

   ⭐⭐ WAS STATTDESSEN GENAUSO AUSSIEHT:
   nicht den Streifen zum Bild machen, sondern **das Bild zum Streifen**.
   Die oberen 96 px des Heros bekommen einen Verlauf, der bei y=0 exakt
   #0B1616 ist — dieselbe Farbe wie Safaris Leiste — und nach unten ins
   Foto ausläuft. Damit gibt es keine Kante mehr, weil es keinen Sprung
   mehr gibt: oben sind beide Flächen derselbe Wert, und der Übergang ins
   Bild passiert über 96 px statt über 1 px.
   ⭐ Gemessen war der Sprung an der Bildkante #0D1616 gegen #05070B —
   also nicht nur ein bisschen daneben, sondern **doppelt so hell**. Genau
   das sieht man als Linie.
   ⛔ Warum das keine flache Farbe sein kann: das Bild hat eine Vignette
   (Mitte #131B1B, Rand #090B0D). Ein Verlauf deckt beide, eine Farbe nie.

   ⛔ WARUM ES AN `.s304-hero__overlay` HÄNGT und nicht an einem neuen
   Element: das Overlay liegt schon auf z-index 1 über dem Bild und
   **unter** der Kopfpille — bewiesen dadurch, dass die Pille heute
   sichtbar ist. Ein neues Element mit eigenem z-index hätte genau diese
   Reihenfolge umwerfen können. Die oberste Schicht eines
   `background`-Stapels gewinnt, die 35 %% Abdunklung bleibt darunter.
   ⭐ Nur `template-index`: auf anderen Seiten gibt es keinen Hero.

   ⛔ WAS ICH NICHT BELEGEN KANN: wie es auf seinem Gerät aussieht.
   Die Farben sind aus seinen Screenshots gemessen, das Ergebnis nicht.
   ====================================================================== */
@layer s304 {
  html body.template-index .s304-hero__overlay{
    background:
      linear-gradient(to bottom,
        #0B1616 0px,
        rgba(11,22,22,.92) 22px,
        rgba(11,22,22,.55) 52px,
        rgba(11,22,22,0) 96px),
      linear-gradient(to top,
        #0B1616 0px,
        rgba(11,22,22,.90) 18px,
        rgba(11,22,22,.50) 48px,
        rgba(11,22,22,0) 104px),
      rgba(0,0,0,.35) !important;
  }
}


/* === S304-FITS-GROESSER-2409 · „viel zu klein" =========================
   Enzo: „weil dazu passt auch … Midnight Link, Forest Link und so sind
   viel zu klein."
   Gemessen bei echten 402 px:  Kachel 132 · Bild 120×120 · Block 355 breit.
   Bei einem Armband auf weißem Grund füllt das Schmuckstück vielleicht
   zwei Drittel des Bildes — also landen rund **80 px** echtes Produkt auf
   einem 402-px-Schirm. Er hat recht.
   ⭐ Neu: Kachel 158, Bild 146. Zwei Kacheln plus ein sichtbarer Rest
   (158×2 + 12 = 328 von 355) — der Rest ist Absicht: **wer keinen
   angeschnittenen dritten sieht, wischt nicht.**
   ⛔ Nicht größer: ab ~176 passt der dritte nicht mehr ins Bild und das
   Karussell sieht aus wie zwei Karten, die zufällig nebeneinanderliegen.
   ====================================================================== */
@layer s304 {
  html body .s304-fits .swiper-slide{
    width:158px !important;
    flex:0 0 158px !important;
  }
  html body .s304-fits .s304-fits__media{
    width:146px !important;
    height:146px !important;
  }
  html body .s304-fits .s304-fits__media img{
    width:100% !important;
    height:100% !important;
    object-fit:contain !important;
  }
}


/* === S304-KAT-EINE-FLAECHE-2409 · STEHT IN s304-kat.css ===============
   Hier stand er zuerst, **geschichtet in `@layer s304` — und wirkungslos.**
   Gemessen: die Kachel ist ein `<grid-item>`-Custom-Element, und darauf
   liegt eine **ungeschichtete** Regel mit `!important`
   (`.template-collection grid-item{border-radius:0!important}`).
   ⛔ **Ungeschichtetes `!important` schlägt geschichtetes `!important`.**
   Keine Verstärkung des Selektors hätte hier geholfen. Der Block ist
   deshalb nach `s304-kat.css` umgezogen und dort ungeschichtet.
   ====================================================================== */


/* === S304-LEISTE-UNTEN-2409 · DER TEST, DER DIE FRAGE BEANTWORTET ======
   Enzo, dreimal: „unten soll weiß sein … unter den Bewertungen … aber oben
   soll alles so bleiben."

   ⛔⛔ WAS ICH BISHER ZWEIMAL GEMESSEN HABE, beides in seinen Screenshots:
     21:13  theme-color #0B1616, Wurzel #0B1616  → oben #0D1616, unten #0D1616
     21:27  KEINE theme-color,   Wurzel #0B1616  → oben #0D1616, unten #0D1616
   ⭐ Das Weglassen von `theme-color` hat also **nichts** getrennt. Meine
   Annahme „ohne die Angabe tastet Safari jeden Rand einzeln ab" ist damit
   **widerlegt** — sauber widerlegt, das ist der Wert des Versuchs.

   ⛔⛔ UND WARUM BEIDE MESSUNGEN NICHTS UNTERSCHEIDEN KONNTEN:
   in beiden Fällen trugen `theme-color`, `html` und `body` **denselben
   Wert**. Zwei Größen, die immer gleich sind, können nie zeigen, welche
   von beiden wirkt. **Das war kein Messfehler, sondern ein Versuchsaufbau
   ohne Kontrast** — dieselbe Klasse wie eine Prüfung ohne Positivkontrolle.

   ⭐ DESHALB JETZT MIT KONTRAST: Wurzel dunkel, Körper weiß.
     · unten weiß, oben dunkel  → der Körper treibt die untere Leiste. Ziel.
     · beide dunkel             → die Wurzel treibt beide. Dann ist „oben
                                   dunkel + unten weiß" in Safari nicht
                                   erreichbar, und ich sage es ihm so.
     · oben weiß                → sofort zurück, das hat er ausdrücklich
                                   ausgeschlossen („oben soll alles so
                                   bleiben").
   ⛔ Sichtbar ändert sich auf der Seite sonst nichts: die einzige dunkle
   Fläche der Startseite ist der Hero, und der bringt sein eigenes Bild mit.
   Alles darunter ist ohnehin weiß.
   ====================================================================== */






/* === S304-ZU-ENDE-GEMESSEN-2409 · EIN SCHALTER, KEINE ZWEI ============
   Enzo wollte: oben grün, unten weiß. Das geht in iOS-Safari nicht, und
   das ist jetzt **dreifach** belegt statt behauptet:

     21:37  theme-color WEISS, Grundfarbe GRÜN   -> beide grün.
            => `theme-color` wird ignoriert, die Grundfarbe treibt beides.
     21:41  weiße Fläche bei `top:100svh`        -> nichts ändert sich.
            => `html` und `body` haben `overflow:hidden` (die gewollt nicht
              scrollende Startseite), damit ist `100lvh == 100svh` — hinter
              Safaris unterer Leiste liegt **keine Seitenfläche**.
     21:47  Grundfarbe WEISS + fester grüner Block ganz oben -> oben weiß.
            => ⭐⭐ **Der stärkste Beleg**: an dieser Stelle liegt nicht nur
              mein Block, sondern der **dunkle Hero** über die volle Breite.
              Könnte die Seite dort malen, wäre der Streifen längst dunkel.
              Er ist es nicht. Also gehört er dem Browser.

   ⭐ Beide Streifen nehmen dieselbe eine Farbe: die Grundfarbe der Seite.
   Es gibt keinen zweiten Regler, auch keinen versteckten.

   ⛔⛔ DIE FEHLERKLASSE DES ABENDS, dreimal hintereinander dieselbe:
   ich hatte jedes Mal **zwei Größen gleichgesetzt** (theme-color = Grund,
   Wurzel = Körper) und aus dem Ergebnis geschlossen, welche wirkt.
   **Zwei Größen, die nie verschieden sind, können das nie zeigen.**
   Erst der Aufbau mit Kontrast hat es entschieden — und Enzo hatte recht
   mit „geh noch tiefer rein": meine ersten beiden „geht nicht" waren
   Schlüsse aus einem Versuch ohne Gegenstück, nicht aus einer Messung.

   Gewählt ist **grün**, weil er den oberen Streifen zweimal „perfekt"
   genannt hat und ihn jeder Besucher zuerst sieht. `theme-color` bleibt
   auf demselben Wert — Safari ignoriert sie, Android-Chrome nicht.
   ====================================================================== */


/* === S304-STERNKACHEL-2409 · DAS BILD GEHT BIS UNTEN, DIE STERNE SCHWEBEN
   Enzos Einfall um 21:49, nachdem eine Stunde Farbversuche ergebnislos war:
   „dann habe ich eigentlich eine viel coolere Prämisse … lass uns das
   Bild nach unten auch extenden und diese 4,8 von 5 und die Sterne in so
   eine Kachel rein, die so abgerundet ist wie da drüber unser Header, und
   wir packen es einfach aufs Bild."

   ⭐⭐ WARUM DAS DIE BESSERE LÖSUNG IST, und nicht nur eine andere:
   die ganze letzte Stunde ging um einen Streifen, der **dem Browser
   gehört** — dreimal gemessen, kein zweiter Regler (S304-ZU-ENDE-GEMESSEN).
   Diese Idee braucht den Streifen gar nicht: sie löst das Problem
   vollständig **innerhalb der Seite**. Das weiße Vollbreit-Band, das den
   Bruch überhaupt erst erzeugt hat, verschwindet ersatzlos.
   ⛔ Lehre für mich: ich habe eine Stunde lang **am Schalter gedreht,
   statt den Aufbau zu ändern.** Die Frage war nie „welche Farbe", sondern
   „warum gibt es dort überhaupt eine zweite Fläche".

   ⭐ GEMESSEN bei echten 402 px, damit die Kachel dieselbe Form bekommt
   wie der Kopf — er hat ausdrücklich „wie da drüber unser Header" gesagt:
       DIV.header__mobile   [16, 5, 370, 44]   Radius 22
       Schatten             0 6px 18px -10px rgba(30,24,18,.45)
                            + inset 0 0 0 1px rgba(30,24,18,.06)
       DIV.ic-trust-banner  [0, 856, 402, 33]  weiß, volle Breite
       .s304-hero           [0, 0, 402, 856]   (874 minus 18 Trustbar)
   Also: 16 px Seitenabstand, Radius 22, derselbe Wurf. Nichts geraten.

   ⛔ WARUM `fixed` UND NICHT `absolute`: die Kachel liegt nicht im Hero,
   sondern in einer eigenen Sektion darunter. `fixed` entkommt dem
   `overflow:hidden` von `html`/`body` (gewollt nicht scrollende
   Startseite) — und weil die Seite nicht scrollt, kann `fixed` hier auch
   nichts verrutschen.
   ⛔ Der Traeger (`section.custom-code` und `div.shopify-section`) wird
   durchsichtig UND auf 0 gesetzt — sonst bleibt ein weißes 33-px-Band
   stehen, wo die Kachel vorher saß. **Ein herausgenommenes Element
   hinterlässt seinen Platz, wenn man ihn nicht mitnimmt.**
   ====================================================================== */
@layer s304 {
  /* 1 · das Bild reicht jetzt bis ganz nach unten */
  html body.template-index .s304-hero{
    height:100dvh !important;
    min-height:100dvh !important;
  }

  /* 2 · der Platz des alten Bandes verschwindet */
  html body.template-index .shopify-section:has(> .wrapper > .ic-trust-banner),
  html body.template-index .shopify-section:has(.ic-trust-banner),
  html body.template-index section.custom-code:has(.ic-trust-banner){
    background:transparent !important;
    height:0 !important;
    min-height:0 !important;
    padding:0 !important;
    margin:0 !important;
    overflow:visible !important;
  }

  /* 3 · die Sterne als schwebende Kachel auf dem Bild — Form wie der Kopf */
  html body.template-index .ic-trust-banner{
    position:fixed !important;
    left:50% !important;
    right:auto !important;
    transform:translateX(-50%) !important;
    width:max-content !important;
    max-width:calc(100vw - 48px) !important;
    bottom:calc(2px + env(safe-area-inset-bottom, 0px)) !important;   /* 21:58 tiefer, Enzo: mehr von den Fuessen sehen */
    height:44px !important;
    min-height:44px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    gap:10px !important;
    padding:0 14px !important;
    box-sizing:border-box !important;
    background:#FFFFFF !important;
    border-radius:22px !important;
    box-shadow:0 6px 18px -10px rgba(24,24,26,.45),
               inset 0 0 0 1px rgba(24,24,26,.06) !important;
    z-index:40 !important;
  }
  html body.template-index .ic-trust-banner > *{
    margin:0 !important;
  }
}


/* === S304-UNTERKANTE-UND-SCHMALERE-KACHEL-2409 =========================
   Enzo um 21:53: „das ist fast perfekt jetzt. Nur unten muss das Bild
   natürlich auch extendet werden … dass da nicht so ein harter grüner
   Kanten ist. Und mach diese Kachel ein bisschen schmaler, links und
   rechts ist da ja zu viel Abstand."

   ⭐ UNTEN: exakt dieselbe Mechanik wie oben (S304-OBERKANTE-VERLAUF),
   nur gespiegelt — ein zweiter Verlauf im selben `background`-Stapel des
   Overlays, `to top`, der bei y=unten exakt #0B1616 ist und nach oben ins
   Foto ausläuft. Damit trifft die unterste Bildzeile dieselbe Farbe wie
   Safaris Leiste, und es gibt keinen Sprung mehr.
   ⛔ Etwas kürzer als oben (104 statt 96 px voll ausgelaufen, aber nur
   18 px deckend statt 22): unten stehen die Füße der Modelle im Bild —
   dort darf der Verlauf nicht so früh zumachen wie oben, wo nur leerer
   Studiogrund liegt.

   ⭐ KACHEL: vorher `left:16 / right:16` — also **immer** 370 px breit,
   egal wie viel Text drinsteht. Jetzt `width:max-content` und mittig
   gesetzt: die Kachel ist genau so breit wie ihr Inhalt plus Polster.
   ⛔ `max-width:calc(100vw - 48px)` als Deckel, damit sie bei längerem
   Text (andere Sprache, größere Schrift) nicht über den Rand läuft.
   ⛔ `transform:translateX(-50%)` statt `margin:auto`, weil `fixed` mit
   `width:max-content` sonst am linken Rand klebt.
   ====================================================================== */


/* === S304-BLASENTEXT-LINKS-2409 · ES GAB GAR KEINE LINKE KANTE ========
   Enzo, zweimal: „das soll ja linksbündig sein mit den Schriften in den
   Bubbles. Und darunter soll dann die Bewertung sein."

   ⛔⛔ WARUM DAS BISHER NICHT GEHEN KONNTE, gemessen bei echten 402 px:
       a.menu-304__primary-link   display:flex, **justify-content:center**
       Textkanten der ersten drei: **145 · 148 · 168**
   Die Schrift in den Blasen ist **zentriert** — jede Zeile beginnt woanders,
   je nach Wortlänge. **Eine linke Kante, auf die das Logo fluchten könnte,
   existierte also gar nicht.** Ich habe monatelang eine Zahl gesucht, die
   es nicht gibt, und beim ersten Versuch stattdessen 42 px *ausgerechnet*
   (16 + 26) und „nachgerechnet" darunter geschrieben.
   ⭐⭐ **Wenn eine Ausrichtung sich nicht herstellen lässt, ist manchmal
   nicht der Wert falsch, sondern die Annahme, dass es die Kante gibt.**

   ⭐ Jetzt steht der Text linksbündig, und damit hat er eine feste Kante:
       Nav 27 + Innenpolster 26 + Blasenpolster 16 = **69 px**
   Der Kopfeinzug steht auf 70 — also fluchten Logo, Bewertung und
   Blasenschrift auf derselben Linie.
   ⛔ Gefahrlos geprüft: die Blasen enthalten **nur einen Textknoten**,
   kein Symbol rechts. `flex-start` kann also nichts auseinanderreißen.
   ====================================================================== */
@layer s304 {
  html body .drawer--header .menu-304__primary a,
  html body .drawer--header .menu-304__primary-link{
    justify-content:flex-start !important;
    text-align:left !important;
  }
}


/* === S304-KORB-FUSS-NACH-UNTEN-2409 · 190 PX TOTER RAUM ===============
   Enzo zum Warenkorb: „völliger Ranz" — und einer der Gründe ist messbar.

   ⭐⭐ GEMESSEN bei echten 402 px, Schublade offen:
       .drawer__inner   [0,  10, 402, 854]
       .drawer__body    [0,  10, 402, 419]
       .drawer__foot    [0, 439, 402, 234]
       ⇒ Inhalt endet bei y 673, die Schublade bei 864.
       ⇒ **190 px leere Fläche unter dem Kassenknopf.**
   Das ist Enzos wiederkehrende Kritik „verschwendeter Platz" in Reinform:
   der Fuß steht nicht unten, sondern hört einfach dort auf, wo der Inhalt
   zu Ende ist — mitten in der Schublade.

   ⭐ Die Schublade wird eine Spalte: der Körper nimmt den freien Platz
   (und scrollt, wenn der Korb voll ist), der Fuß sitzt unten.
   ⛔ `min-height:0` am Körper ist nötig, sonst weiße ein Flex-Kind seinen
   Inhalt nicht zu schrumpfen und die Schublade wächst über den Schirm
   hinaus — der häufigste Fehler bei genau diesem Muster.
   ⛔ Nur der Warenkorb, nicht die Menüschublade: die hat ihren eigenen
   Fuß und steht bereits richtig (19 % der Höhe, gemessen).
   ====================================================================== */
@layer s304 {
  html body cart-drawer .drawer__inner{
    display:flex !important;
    flex-direction:column !important;
  }
  html body cart-drawer .drawer__body{
    flex:1 1 auto !important;
    min-height:0 !important;
    overflow-y:auto !important;
  }
  html body cart-drawer .drawer__foot{
    flex:0 0 auto !important;
    margin-top:auto !important;
  }
}


/* ⛔⛔ NACHTRAG 00:55 — ALLE FUSS-REGELN GALTEN NUR AUSSERHALB DER
   STARTSEITE (`body:not(.template-index)`). Das war richtig, solange der
   Fuss dort ausgeblendet war. Seit die Startseite scrollt, ist er sichtbar
   — und stand damit **komplett ungestylt** da: Blasen um jeden Rechtslink,
   schwarzer Grund, mittig, Logo auf Breite 0.
   ⭐⭐ Gefunden beim Durchtesten im BILD, nicht in einer Messung. Meine
   Messungen liefen alle auf /collections/all — dort war alles richtig.
   **Eine Regel mit einem `:not()` muss man auf beiden Seiten des `not`
   ansehen.** Die Ausnahme ueberlebt die Bedingung, die sie noetig machte.
   48 Stellen umgestellt.
   ====================================================================== */
/* === S304-FUSS-2409 · „auch wie der Footer aussieht, ist kacke" =======
   Enzo, 24.09. — ohne nähere Begründung. Also gemessen, was dort
   objektiv nicht stimmt (402 px, /collections/all):

       footer.site-footer-wrapper   [16, 3006, 370, 216]  bg **rgb(0,0,0)**
       section.supporting-menu      [16, 3221, 370, 102]  bg **rgb(0,0,0)**
       div.shopify-section          [ 0, 3006, 402, 216]  transparent

   ⭐⭐ DREI BEFUNDE, jeder für sich ein Bruch mit dem Rest des Ladens:
   (1) **Reines Schwarz.** Die Marke ist #0B1616 (Hero) bzw. #15130F (Text).
       Schwarz kommt sonst nirgends vor. Neben dem warmen Sand #F4F1ED
       wirkt es hart und wie ein fremdes Bauteil.
   (2) **16 px Sandstreifen links und rechts.** Der Fuß ist ein 370 px
       breiter Kasten in einer 402 px breiten Seite — aber mit **eckigen
       Ecken**. Ein eingerückter Kasten ohne Radius sieht nicht nach
       Absicht aus, sondern nach einem Fehler im Rand.
   (3) **Zwei getrennte schwarze Blöcke** direkt untereinander
       (216 px + 102 px). Zwei Flächen derselben Farbe, die sich berühren,
       lesen sich als eine — mit einer sichtbaren Naht in der Mitte.

   ⭐ Behoben: ein durchgehender Block in Markendunkel, volle Breite, oben
   abgerundet wie alles andere im Laden (22 px). Der Fuß wird damit zum
   Abschluss der Seite statt zu einem Kasten, der dort liegt.
   ⛔ Die Radien nur OBEN: unten ist der Bildschirmrand, ein Radius dort
   erzeugt zwei Zipfel Sand, die nach Fehler aussehen.
   ⛔ Nicht auf der Startseite — dort ist der Fuß ausgeblendet
   (S304-STERNKACHEL / Hero über die volle Höhe).
   ====================================================================== */
@layer s304 {
  html body .shopify-section-group-group-footer{
    background:#0B1616 !important;
  }
  html body .shopify-section-group-group-footer:first-of-type{
    border-radius:22px 22px 0 0 !important;
    overflow:hidden !important;
  }
  html body footer.site-footer-wrapper,
  html body section.supporting-menu{
    background:transparent !important;
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }
  html body .s304-social__link{
    background:rgba(255,255,255,.10) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.10) !important;
  }
}


/* === S304-KOPFPILLE-LUFT-2409 · ERLEDIGT AN DER QUELLE ==============
   Der Block stand hier zuerst als eigene, **geschichtete** Regel — und
   verlor gegen `html body .theme__header .header__mobile` weiter oben,
   die ungeschichtet ist und höher spezifisch.
   ⛔⛔ **Das ist heute die dritte Regel, die ich danebengestellt habe,
   statt die zu ändern, die gewinnt.** Die Werte stehen jetzt dort, wo sie
   hingehören (Rand 14, Polster 10). Zwei Regeln für dieselbe Frage laufen
   unweigerlich auseinander.
   ⭐ Gegengeprüft und in Ordnung: das Logo sitzt **exakt mittig**, in
   beiden Achsen (Mitte X 201 = Pillenmitte 201, Mitte Y 27 = 27).
   ====================================================================== */


/* === S304-FUSS-SCHMAL-2409 · „deutlich schmaler und cooler" ===========
   Enzo: „mach mal den Futter deutlich schmaler und cooler. Du brauchst ja
   nicht bei jedem so eine Bubble. Das ist kacke." Und: „mach den Footer
   einfach so wie bei Scuffers, nur dass du unten für Inner Circle diese
   Werbung machst."

   ⭐ GEMESSEN vorher, /collections/all bei 402 px:
       Fußgruppe gesamt                    **357 px**
       .footer__logo__wrapper   48
       .s304-social             40  — zwei runde Blasen rgba(255,255,255,.1)
       nav.s304-legal          106  — fünf `li` à **43 px**, auf zwei Zeilen
       section.supporting-menu 102
   ⭐⭐ Die 43 px je Rechtslink sind Tippfläche — aber fünf davon auf zwei
   Zeilen ergeben allein 106 px für fünf kurze Wörter. **Das ist der Grund,
   warum der Fuß so wuchtig wirkt, nicht die Schriftgröße.**
   ⛔ Tippflächen dürfen nicht unter 44 px fallen — deshalb bleiben sie
   44 hoch, aber die Zeilen überlappen sich jetzt nicht mehr in der Höhe:
   eine Zeile, waagerecht scrollbar statt zweizeilig umgebrochen.
   ⛔ Die runden Blasen um die zwei Social-Symbole fallen weg — genau
   sein „du brauchst ja nicht bei jedem so eine Bubble". Die Symbole
   stehen frei, nur größer und heller.
   ====================================================================== */
@layer s304 {
  html body footer.site-footer-wrapper{
    padding-top:16px !important;
    padding-bottom:2px !important;
  }
  html body .footer__logo__wrapper{
    margin-bottom:6px !important;
    height:auto !important;
  }
  /* keine Blasen um die Social-Symbole */
  html body .s304-social{
    gap:26px !important;
    margin:0 !important;
  }
  html body .s304-social__link{
    background:none !important;
    box-shadow:none !important;
    border-radius:0 !important;
    width:auto !important;
    height:34px !important;
    opacity:.85 !important;
  }
  html body .s304-social__link svg{
    width:22px !important;
    height:22px !important;
  }
  /* Rechtslinks: eine Zeile, klein, ruhig */
  html body nav.s304-legal{
    margin-top:8px !important;
  }
  html body .s304-legal__list{
    display:flex !important;
    flex-wrap:wrap !important;
    justify-content:center !important;
    gap:0 16px !important;
    width:100% !important;
    max-width:none !important;
  }
  html body .s304-legal__item{
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
  }
  html body .s304-legal__item a{
    display:inline-flex !important;
    align-items:center !important;
    min-height:30px !important;
    padding:0 !important;
    font-size:10.5px !important;
    letter-spacing:.07em !important;
    text-transform:uppercase !important;
    opacity:.62 !important;
  }
  html body section.supporting-menu{
    padding-top:2px !important;
    padding-bottom:10px !important;
  }
}


/* === S304-IC-STREIFEN-2409 · die Inner-Circle-Werbung unten ============
   Enzo: „nur dass du unten halt für Inner Circle diese Werbung machst."
   ⛔ Bewusst OHNE erfundene Versprechen: im Streifen steht nur, was der
   Laden ohnehin schon sagt — die Produktkacheln tragen „Nur für
   Mitglieder", und das Ziel ist die bestehende Seite /pages/inner-circle.
   **Ich denke mir keine Vorteile aus, die ich nicht belegen kann.**
   ====================================================================== */
@layer s304 {
  html body .s304-ic-streifen{
    display:flex !important;
    align-items:center !important;
    gap:12px !important;
    margin:2px 14px 14px !important;
    padding:12px 16px !important;
    border-radius:18px !important;
    background:linear-gradient(140deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.04) 100%) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.12) !important;
    text-decoration:none !important;
  }
  html body .s304-ic-streifen__t{
    flex:1 1 auto !important;
    min-width:0 !important;
  }
  html body .s304-ic-streifen__h{
    display:block !important;
    font-size:12.5px !important;
    font-weight:800 !important;
    letter-spacing:.1em !important;
    color:#FFFFFF !important;
  }
  html body .s304-ic-streifen__s{
    display:block !important;
    margin-top:2px !important;
    font-size:10.5px !important;
    letter-spacing:.06em !important;
    color:rgba(255,255,255,.82) !important;
  }
  html body .s304-ic-streifen__k{
    flex:0 0 auto !important;
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    height:34px !important;
    padding:0 16px !important;
    border-radius:99px !important;
    background:#FFFFFF !important;
    color:#0B1616 !important;
    font-size:10.5px !important;
    font-weight:700 !important;
    letter-spacing:.08em !important;
  }
}


/* === S304-FUSSZEILE-EINE-ZEILE-2409 ===================================
   Weiter an Enzos „deutlich schmaler". Gemessen nach dem ersten Durchgang
   war der größte Brocken nicht mehr die Rechtszeile, sondern die
   Sprachzeile darunter:
       section.supporting-menu                    [0, 3193, 402, **114**]
         └ --localization                       36
         └ --copyright                          **56**, Schrift **13,2 px**
   ⭐⭐ Eine Urheberrechtszeile in 13,2 px ist größer als die Rechtslinks
   darüber (10,5 px) — der unwichtigste Text der Seite war der größte.
   ⭐ Jetzt: Sprache/Währung und Urheberrecht stehen **nebeneinander** in
   einer Zeile statt untereinander in zweien. 114 → rund 44 px.
   ⛔ Die Tippfläche der Sprachauswahl bleibt bei 36 px hoch — sie ist ein
   Bedienelement, der Urheberrechtstext nicht.
   ====================================================================== */
@layer s304 {
  html body .supporting-menu__inner{
    display:flex !important;
    flex-direction:row !important;
    align-items:center !important;
    justify-content:space-between !important;
    gap:10px !important;
    padding-left:16px !important;
    padding-right:16px !important;
  }
  html body .supporting-menu__item{
    width:auto !important;
    margin:0 !important;
    padding:0 !important;
    min-height:0 !important;
  }
  html body .supporting-menu__item--copyright{
    display:flex !important;
    align-items:center !important;
  }
  html body .supporting-menu__copyright{
    margin:0 !important;
    gap:6px !important;
    align-items:center !important;
  }
  html body .supporting-menu__copyright li{
    height:auto !important;
    min-height:0 !important;
    margin:0 !important;
    font-size:10px !important;
    letter-spacing:.06em !important;
    opacity:.55 !important;
    line-height:1.3 !important;
  }
}


/* === S304-VIDEOS-GROESSER-2409 · ERLEDIGT IN s304-pdp.css ============
   Der Block stand hier und war wirkungslos: `s304-pdp.css` baut den
   Video-Swiper zu einem festen Raster mit drei Spalten um. In einem
   Raster bestimmt die **Spalte** die Breite, nicht das Kind — weder
   `flex` noch `width !important` am Kind kommen dagegen an.
   ⛔⛔ Das ist heute die vierte Regel, die ich danebengestellt habe,
   statt die zu ändern, die gewinnt. Die Änderung steht jetzt dort.
   ⭐ **Der Prüfschritt, der es sofort zeigt: `display` des Eltern messen.**
   ====================================================================== */


/* === S304-FUSS-KEINE-BLASEN-2409 · GESEHEN, NICHT GEMESSEN ===========
   Enzo: „der Futter ist überhaupt nicht in Scuffers-Art jetzt. Du musst
   den auch immer selber angucken."

   ⛔⛔ ER HAT RECHT, UND DAS IST DIE LEHRE DES ABENDS: ich hatte den Fuß
   dreimal **gemessen** (Höhen, Abstände, Schriftgrößen) und dabei
   gemeldet, die Blasen seien weg. Beim ersten **Blick** auf einen
   Screenshot:
     · **jeder** Rechtslink sitzt in einer eigenen dunklen Blase
       (IMPRESSUM · AGBS · WIDERRUFSRECHT · DATENSCHUTZ · RETOURE …)
     · die Blasen **überlappen sich** zwischen den Zeilen
     · die Social-Symbole haben weiter sichtbare Kästen — ich hatte nur
       `background` entfernt, nicht `border`/`box-shadow` am inneren Element
     · „Deutsch ⌄" steckt ebenfalls in einer Blase
     · oben im Fuß eine große leere Fläche
   ⭐⭐ **Meine Messungen fragten nach Höhe und Farbe des Containers —
   die Blasen saßen auf dem Kind.** Eine Messung beantwortet nur die Frage,
   die man stellt. Ein Bild beantwortet die, die man nicht gestellt hat.

   ⭐ Jetzt: im ganzen Fuß kein Grund, kein Rahmen, kein Wurf an
   irgendeinem Link oder Knopf — **mit einer Ausnahme**: der
   Inner-Circle-Streifen, der genau davon lebt. Deshalb ist er ausgenommen.
   ⛔ Die Überlappung kam von `min-height` an den Elementen bei zu kleinem
   Zeilenabstand: die Tippfläche war höher als die Zeile. Jetzt trägt die
   Zeile die Höhe (`line-height`), nicht das Element.
   ====================================================================== */
@layer s304 {
  html body .shopify-section-group-group-footer a:not(.s304-ic-streifen):not(.s304-ic-streifen *),
  html body .shopify-section-group-group-footer button,
  html body .shopify-section-group-group-footer summary,
  html body .shopify-section-group-group-footer .popout__toggle,
  html body .shopify-section-group-group-footer li{
    background:none !important;
    background-color:transparent !important;
    box-shadow:none !important;
    border:0 !important;
    border-radius:0 !important;
    outline:none !important;
  }
  /* der Werbestreifen ist die einzige Fläche, die bleiben darf */
  html body .s304-ic-streifen{
    background:linear-gradient(140deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.04) 100%) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.12) !important;
    border-radius:18px !important;
  }
  html body .s304-ic-streifen__k{
    background:#FFFFFF !important;
    border-radius:99px !important;
  }

  /* Rechtslinks: ruhige Zeilen ohne Überlappung */
  html body .s304-legal__list{
    gap:0 18px !important;
    row-gap:0 !important;
  }
  html body .s304-legal__item a{
    min-height:0 !important;
    padding:7px 0 !important;
    line-height:1.5 !important;
    font-size:10px !important;
    opacity:.55 !important;
  }
  /* Sprachwahl: nur Text mit Pfeil */
  html body .supporting-menu__item--localization *{
    background:none !important;
    box-shadow:none !important;
    border:0 !important;
  }
  html body .supporting-menu__item--localization{
    font-size:10px !important;
    opacity:.55 !important;
  }
  /* die leere Flaeche oben im Fuss */
  html body .footer__logo__wrapper{
    min-height:0 !important;
    margin-bottom:2px !important;
  }
  html body footer.site-footer-wrapper{
    padding-top:10px !important;
  }
}


/* === S304-FUSS-LINKS-UND-LOGO-2409 · Scuffers-Art ====================
   Zwei Befunde aus dem BILD, nicht aus der Messung:

   ⛔⛔ (1) DAS LOGO WAR NIE WEG — ES WAR ABGESCHNITTEN:
       .footer__logo__wrapper  [18, 10, 366, 48]
       A.footer__logo          [201, 10, **0**, 44]   ← Breite null
       img                      [201, 10,  66, 44]
   Der Link hat Breite 0, das Bild darin 66 px. Mit `overflow:hidden` am
   Link bleibt davon nichts übrig. Im Bild sah das aus wie „oben fehlt
   etwas" — in jeder Messung sah es aus wie „Logo vorhanden, 66×44".
   ⭐⭐ **Ein Kind, das größer ist als sein Eltern, ist in der Messung
   unauffällig und im Bild ein Loch.** Dritter Fall heute derselben Art
   (Kategoriebild 7 px über die Kante, Videoraster, jetzt das Logo).

   ⭐ (2) Scuffers ist **linksbündig**, nicht mittig. Alles im Fuß steht
   jetzt an einer Kante (18 px), wie die Kacheln darüber — statt drei
   verschiedene Mittelachsen (Logo, Symbole, Links) untereinander.
   ====================================================================== */
@layer s304 {
  html body .footer__logo{
    display:inline-flex !important;
    align-items:center !important;
    width:auto !important;
    min-width:150px !important;
    max-width:none !important;
    overflow:visible !important;
    flex:0 0 auto !important;
  }
  /* ⛔ NACHTRAG: nicht nur der Link war null breit, sondern auch die
     `figure.image-wrapper` direkt um das Bild. **Zwei ineinander
     liegende Null-Breiten** — die erste zu reparieren zeigte noch nichts,
     was wie „gar nicht gewirkt" aussah. Gemessen:
         a.footer__logo            96×44  (nach dem ersten Fix)
         figure.image-wrapper     **0**×44
         img                       96×64 */
  html body .footer__logo .image-wrapper,
  html body .footer__logo figure{
    width:140px !important;
    min-width:140px !important;
    height:auto !important;
    display:block !important;
    position:relative !important;
    padding:0 !important;
  }
  /* ⛔⛔ KORREKTUR AN MIR SELBST: ich hatte Enzo gemeldet, das Logo
     „fehle". Es fehlte nie — im Bild stand es da, nur **rund 30 px breit**
     und mittig. Zwei Zooms vorher war es im Dunkeln schlicht nicht zu
     erkennen. **„Ich sehe es nicht" ist keine Messung.**
     ⭐ Gegenprobe, die es geklaert hat: dasselbe Bild kurz auf eine weisse
     Flaeche gelegt — dort blieb es **leer**. Also ist die Datei wirklich
     ein WEISSES Logo (der Name `..._white_transparent` meint die Farbe,
     nicht den Untergrund) und auf dem dunklen Fuss genau richtig.
     Jetzt nur noch: groesser und links. */
  html body .footer__logo img,
  html body .footer__logo .image-wrapper img{
    /* ⛔ Die Höhe war der Deckel: Quelle 190×126 (Verhältnis 1,51) in
       einem 150×42-Kasten ergibt mit `contain` nur **63×42** — die Breite
       kam nie zum Tragen. **Ein `contain` rechnet immer gegen die
       ENGERE der beiden Grenzen.** Jetzt gibt die Breite das Maß vor und
       die Höhe folgt. */
    width:140px !important;
    height:auto !important;
    min-width:140px !important;
    max-width:none !important;
    object-fit:contain !important;
    object-position:center center !important;   /* 01:30: mittig */
    position:static !important;
    inset:auto !important;
  }
  /* Linksbündig — die Ausrichtung kam vorher aus einer fremden Regel
     mit `justify-content:center`; deshalb hier am Traeger UND am Kind. */
  html body .site-footer .footer__logo__wrapper,
  html body .footer__logo__wrapper{
    justify-content:flex-start !important;
  }
  html body .footer__logo{
    margin-left:auto !important;   /* 01:30: mittig statt links */
    margin-right:auto !important;
  }
  /* ⛔ Das Bild ist mit 140×93 hoeher als sein 44 px hoher Link und lief
     nach OBEN aus dem Fuss heraus (gemessen: y = −17). Traeger, Link und
     Figur bekommen deshalb ihre Hoehe vom Inhalt. **Wer ein Kind groesser
     macht, muss den Eltern mitwachsen lassen** — sonst wandert der
     Ueberhang nach oben und verschwindet. */
  html body .footer__logo,
  html body .footer__logo .image-wrapper,
  html body .footer__logo figure,
  html body .footer__logo__wrapper{
    height:auto !important;
    min-height:0 !important;
    align-items:flex-start !important;
  }
  /* ⛔⛔ 01:30 von linksbündig auf MITTIG geändert — hier, wo es gesetzt
     wird, nicht mit einer zweiten Regel dagegen.
     Enzo: „und auch dort gilt wieder, das Logo genau gleich groß wie dann
     darüber und zentriert."
     ⛔ Der Rest des Fußes bleibt linksbündig — nur Logo und Symbole
     stehen mittig, wie er es für die Startseiten-Sektion wollte. */
  html body .footer__logo__wrapper,
  html body .site-footer .footer__logo__wrapper{
    display:flex !important;
    justify-content:center !important;
    align-items:center !important;
    text-align:center !important;
    padding-left:0 !important;
  }
  html body .s304-social{
    justify-content:flex-start !important;
  }
  html body .s304-legal__list{
    justify-content:flex-start !important;
  }
  html body nav.s304-legal{
    border-top:1px solid rgba(255,255,255,.10) !important;
    padding-top:8px !important;
  }
}


/* === S304-STARTSEITE-KATEGORIEN-2409 ==================================
   Enzo, 00:43: „die Homepage so lang machen, dass wenn ich das erste Mal
   draufkomme, ich wirklich nur das sehe, wie es davor aussah … und erst
   wenn man runterscrollt, merkt man: okay, die Kategorien. Und da will ich
   auch nicht „Wähle deine Kategorie", sondern dort soll einfach das
   304supply-Logo vor schwarzem Grund sein, und darunter der Filter
   Bracelets und Walletchains, und darunter immer 2 für 1."

   ⛔⛔ ERSTER FEHLER, in seinem Screenshot sichtbar: die Sektion **lugt
   unten schon rein**. Der Hero ist `100dvh` — das ist die Höhe im
   AKTUELLEN Zustand der Browserleisten. Sind sie eingefahren, ist `dvh`
   größer als der sichtbare Bereich, und was danach kommt, schiebt sich
   ins Bild.
   ⭐⭐ Die Sektion bekommt deshalb oben genau die Differenz als Polster:
   `calc(100lvh - 100svh)` — der größte Unterschied, den die Leisten
   ausmachen können. Damit kann sie in **keinem** Leistenzustand
   hineinragen, und der Hero bleibt unangetastet.
   ⛔ Nicht `100lvh` für den Hero: dann läge seine untere Verlaufskante
   unter dem sichtbaren Rand, und die Kante, die wir gestern beseitigt
   haben, wäre zurück.

   ⭐ Zweiter Teil: kein Titel mehr, sondern **Logo auf schwarzem Grund**.
   Damit liest sich der Übergang wie ein zweiter Schirm derselben Marke
   und nicht wie ein angehängter Produktblock.
   ====================================================================== */
@layer s304 {
  html:has(body.template-index){
    overflow-y:auto !important;
    height:auto !important;
    min-height:100% !important;
  }
  html body.template-index{
    overflow-y:visible !important;
    overflow-x:hidden !important;
    height:auto !important;
    min-height:100% !important;
  }
  html body.template-index .footer-sections,
  html body.template-index .shopify-section-group-group-footer{
    display:block !important;
  }
  html body.template-index footer.site-footer-wrapper{
    display:block !important;
  }

  html body.template-index.s304-gescrollt .ic-trust-banner{
    opacity:0 !important;
    transform:translateX(-50%) translateY(14px) !important;
    pointer-events:none !important;
  }
  html body.template-index .ic-trust-banner{
    transition:opacity .22s ease, transform .22s ease !important;
  }

  /* ── die Sektion: schwarzer Grund, Logo oben ────────────────── */
  html body .s304-kk{
    position:relative !important;
    /* ⛔ Die Sektion sass bei [16, …, **370**] — sie erbt das Polster des
       Behälters, in den sie eingehängt wird. Ein schwarzer Block, der
       16 px vom Rand endet, sieht aus wie ein Fehler, nicht wie ein
       zweiter Schirm. Deshalb volle Breite, unabhängig vom Eltern. */
    width:100vw !important;
    max-width:100vw !important;
    margin-left:calc(50% - 50vw) !important;
    margin-right:calc(50% - 50vw) !important;
    /* genau die Differenz, die die Browserleisten ausmachen können */
    padding-top:calc(28px + (100lvh - 100svh)) !important;
    padding-bottom:34px !important;
    background:#0B1616 !important;
  }
  /* ⭐ 24.09., 01:19 — Enzo: „kannst du das Logo bitte mittig zentrieren
     und noch deutlich größer machen, aber von den Abständen lass das so,
     weil es passt perfekt, wenn man die Seite lädt, dass man es noch nicht
     sieht."
     ⛔ Deshalb wird **nur** Breite und Ausrichtung angefasst. Die
     senkrechten Abstände (`padding-top` der Sektion mit der
     Leisten-Differenz, `margin-bottom` hier) bleiben unverändert — sie
     entscheiden, ob beim ersten Laden noch nichts davon zu sehen ist, und
     genau das hat er gelobt.
     ⭐ 150 → 230 px, mittig statt 16 px vom Rand. */
  html body .s304-kk__logo{
    display:block !important;
    width:230px !important;
    max-width:calc(100% - 32px) !important;
    height:auto !important;
    margin:0 auto 20px !important;
  }
  html body .s304-kk__wahl{
    display:flex !important;
    gap:10px !important;
    margin:0 16px 18px !important;
  }
  html body .s304-kk__chip{
    flex:1 1 0 !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:flex-start !important;
    gap:2px !important;
    padding:13px 15px !important;
    border:0 !important;
    border-radius:18px !important;
    background:rgba(255,255,255,.08) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.12) !important;
    font:inherit !important;
    color:rgba(255,255,255,.72) !important;
    cursor:pointer !important;
    text-align:left !important;
  }
  html body .s304-kk__chip.is-an{
    background:#FFFFFF !important;
    box-shadow:0 10px 24px -14px rgba(0,0,0,.8) !important;
    color:#15130F !important;
  }
  html body .s304-kk__chip b{
    font-size:14px !important;
    font-weight:800 !important;
    letter-spacing:.03em !important;
  }
  html body .s304-kk__chip span{
    font-size:10.5px !important;
    letter-spacing:.06em !important;
    opacity:.6 !important;
  }

  html body .s304-kk__raster{
    display:grid !important;
    grid-template-columns:repeat(2, minmax(0,1fr)) !important;
    gap:14px 12px !important;
    margin:0 16px !important;
  }
  html body .s304-kk__kachel{
    position:relative !important;
    display:flex !important;
    flex-direction:column !important;
    padding:9px 9px 8px !important;
    border-radius:20px !important;
    background:#FFFFFF !important;
    box-shadow:0 20px 38px -22px rgba(0,0,0,.9) !important;
    text-decoration:none !important;
    color:#15130F !important;
  }
  /* „darunter immer 2 für 1" */
  html body .s304-kk__marke{
    position:absolute !important;
    left:14px !important;
    top:14px !important;
    z-index:2 !important;
    display:inline-flex !important;
    align-items:center !important;
    height:22px !important;
    padding:0 9px !important;
    border-radius:99px !important;
    background:#15130F !important;
    color:#FBF8F3 !important;
    font-size:9.5px !important;
    font-weight:700 !important;
    letter-spacing:.08em !important;
  }
  html body .s304-kk__bild{
    display:block !important;
    width:100% !important;
    aspect-ratio:4 / 5 !important;
    border-radius:12px !important;
    overflow:hidden !important;
  }
  html body .s304-kk__bild img{
    width:100% !important;
    height:100% !important;
    object-fit:contain !important;
  }
  html body .s304-kk__zeile{
    display:flex !important;
    align-items:baseline !important;
    justify-content:space-between !important;
    gap:8px !important;
    margin-top:7px !important;
  }
  html body .s304-kk__name{
    font-size:11px !important;
    font-weight:700 !important;
    letter-spacing:.04em !important;
    line-height:1.25 !important;
    text-align:left !important;
  }
  html body .s304-kk__preis{
    flex:0 0 auto !important;
    font-size:11.5px !important;
    font-weight:700 !important;
    white-space:nowrap !important;
  }
  html body .s304-kk__alle{
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    height:46px !important;
    margin:18px 16px 0 !important;
    border-radius:99px !important;
    background:#FFFFFF !important;
    color:#15130F !important;
    font-size:11.5px !important;
    font-weight:700 !important;
    letter-spacing:.09em !important;
    text-decoration:none !important;
  }
  html body .s304-kk__laedt{
    margin:24px 16px !important;
    font-size:11px !important;
    letter-spacing:.08em !important;
    color:rgba(255,255,255,.5) !important;
  }
}

/* === S304-VERSANDLEISTE-2409 · die Fortschrittsleiste lesbar machen ===
   Enzo: „oben diese noch 80 Euro bis gratis, das muss ja auch eine
   Progress Bar sein."
   ⭐ GEMESSEN mit einem Testkorb von 55 € (Schwelle 80 €):
       .free-shipping__success-message   display: none      ✓
       .free-shipping__default-message   „Noch 25 € bis Gratisversand"  ✓
       .ic-shipping-bar       [32, 59, 338, **6**]
       .ic-shipping-bar__fill [32, 59, **233**, 6]  = **69 %**  ✓
   **Die Leiste ist also da und rechnet richtig** — sie ist nur 6 px hoch,
   eckig und in einem sehr blassen Grau. Bei 402 px Bildschirmbreite liest
   man das nicht als Fortschritt, sondern als Trennlinie.
   ⛔ Deshalb wird hier NICHT die Rechnung angefasst, nur die Lesbarkeit:
   8 px, rund, deutlicherer Grund, und die Füllung bekommt denselben
   dunklen Verlauf wie die Knöpfe des Ladens.
   ⛔ Kein `transition` auf die Breite: die Füllung wird beim Neuzeichnen
   gesetzt, eine Animation wuerde bei jedem Auffrischen von 0 anlaufen.
   ====================================================================== */
@layer s304 {
  html body .ic-shipping-bar{
    height:8px !important;
    border-radius:99px !important;
    background:rgba(21,19,15,.12) !important;
    overflow:hidden !important;
  }
  html body .ic-shipping-bar__fill{
    height:8px !important;
    border-radius:99px !important;
    background:linear-gradient(180deg,#2E2822 0%,#15130F 100%) !important;
  }
  html body .free-shipping__default-message{
    font-weight:600 !important;
  }
}


/* === S304-MENUE-M3-2409 · AM 24.09. AUF HELL GEDREHT · DAS MENÜ WAR UMGEDREHT ======================
   Enzo: „das Burger-Menü ist auch richtiger Arsch, also macht gar keinen
   Sinn. Schau dir mal an, wie komisch das formatiert ist … komplett eckig
   und so gar nicht gut. Ich hatte ja schon längst gesagt, wie ich das
   haben will."

   ⭐⭐ ER HAT ES GESAGT — IM ARTEFAKT, BRETT **M3**. Dort stehen die Werte:
       Schublade   radial-gradient(120% 80% at 30% 20%,
                                   #27403A 0%, #131B1E 60%, #0C1214 100%)
       Eintrag     height 54, padding 0 20 0 26, border-radius 99,
                   background **rgba(255,255,255,0.13)**
                   inset 0 1px 0 rgba(255,255,255,.28),
                   inset 0 0 0 1px rgba(255,255,255,.10)
       Schrift     #FFFFFF / #E8E3DC, Gold #C9A227 für Inner Circle
   ⛔⛔ Gebaut war das **Gegenteil**: deckend weiße Kästen mit schwarzer
   Schrift. Auf seinem Screenshot sind es sechs weiße Blöcke untereinander
   — deshalb „komplett eckig". Nicht der Radius war das Problem, sondern
   **die Umkehrung von hell auf dunkel zu dunkel auf hell**.

   ⛔ WARUM MIR DAS BISHER ENTGANGEN IST: mein Testrahmen zeigt das Menü
   gar nicht so wie sein Gerät — dort haben die Einträge **Symbole rechts**
   (Kette, Armband, Logo, Handy), in meinem Rahmen nur Text. Das Menü wird
   per JavaScript gebaut, und in meinem `document.write`-Rahmen läuft ein
   Teil davon nicht. **Ich habe eine andere Seite gemessen als er sieht.**
   Die Werte hier kommen deshalb aus dem Artefakt, nicht aus meiner Messung.
   ====================================================================== */
@layer s304 {
  html body .drawer--header .drawer__inner{
    background:
      radial-gradient(120% 80% at 30% 20%, #27403A 0%, #131B1E 60%, #0C1214 100%) !important;
    backdrop-filter:none !important;
  }
  html body .drawer--header .menu-304__primary-link,
  html body .drawer--header .menu-304__primary a,
  html body mobile-menu .menu-304__primary-link{
    height:54px !important;
    min-height:54px !important;
    padding:0 20px 0 26px !important;
    border-radius:99px !important;
    /* ⭐ 26.09., Enzo: *„hinter den einzelnen Kategorien ist noch eine Farbe,
       das soll halt transparent aussehen … nicht so fake transparent."*
       80 % Weiss IST deckend — die Unschaerfe dahinter hatte gar nichts zu
       tun, weil kaum etwas durchkam. Jetzt 46 % und die Unschaerfe von 14 auf
       32 px: das Gruen des Blattes scheint sichtbar durch, der Text bleibt
       dunkel lesbar. ⛔ Nicht weiter runter ohne den Text auf Weiss zu drehen —
       unter etwa 40 % kippt der Kontrast. */
    background: rgba(255,255,255,.46) !important;
    -webkit-backdrop-filter:blur(32px) saturate(1.3) !important;
    backdrop-filter:blur(32px) saturate(1.3) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(255,255,255,.55),
               0 12px 26px -18px rgba(40,60,50,.35) !important;
    border:0 !important;
    color:#15130F !important;
    text-decoration:none !important;
  }
  html body .drawer--header .menu-304__primary-link *,
  html body .drawer--header .menu-304__primary a *{
    color:inherit !important;
  }
  /* Inner Circle bleibt gold — der einzige Eintrag mit eigener Farbe */
  html body .drawer--header .menu-304__primary a[href*="inner-circle"],
  html body .drawer--header .menu-304__primary a[href*="inner-circle"] *{
    color:#8A6B2F !important;
  }
  /* Symbole rechts: auf Dunkel aufhellen, sonst verschwinden sie */
  /* ⛔ KEIN FILTER MEHR AUF DEN EINTRAGS-SYMBOLEN.
     `brightness(0)` macht aus jedem Bild eine Silhouette — auf dunklem
     Grund war das richtig (weisse Umrisse), auf hellem wurden daraus
     **schwarze Kleckse**: bei WALLETCHAINS ein Kreis, bei BRACELETS ein
     Rechteck. Es sind Produktfotos, keine Piktogramme.
     ⭐ Ohne Filter zeigen sie, was sie sind. */
  html body .drawer--header .menu-304__primary-link img,
  html body .drawer--header .menu-304__primary a img{
    filter:none !important;
    opacity:1 !important;
  }
  /* die zweite Reihe (Versand, FAQ) — im Artefakt 8 % statt 13 % */
  html body .drawer--header .menu-304__secondary-pinned a,
  html body .drawer--header .menu-304__footer-row a{
    background:rgba(255,255,255,.42) !important;
    box-shadow:inset 0 0 0 1px rgba(24,24,26,.06) !important;
    border:0 !important;
    border-radius:99px !important;
    color:#3A403C !important;
  }
  html body .drawer--header .menu-trust-badge,
  html body .drawer--header .menu-trust-badge *{
    color:#4E5450 !important;
  }
  /* ⛔⛔ LOGO UND SCHLIESSKREUZ WAREN WEISS AUF HELL.
     Meine Kontrastmessung hat sie NICHT gefunden \u2014 sie prueft Textknoten,
     und beides ist Grafik (ein `<img>` und ein `<svg stroke>`).
     ⭐⭐ **Eine Kontrastpruefung, die nur Text kennt, uebersieht genau
     die Elemente, die am ehesten falsch herum eingefaerbt sind**: Logos und
     Symbole werden per Filter umgedreht, Text nicht. Gefunden hat es erst
     der Zoom in voller Aufloesung. */
  html body .drawer--header .drawer__close svg{
    stroke:#15130F !important;
  }
  html body .drawer--header .header__logo__link--drawer img{
    filter:brightness(0) !important;
    opacity:.88 !important;
  }
}


/* === S304-KORB-EMPFEHLUNG-LESBAR-2409 =================================
   Enzo: „Warenkorb sieht auch komplett komisch aus, Digga. Guck doch mal,
   wie weird das aussieht."

   ⭐⭐ GEMESSEN im ausgelieferten Inline-CSS des Themes:
       cart-drawer .ic-cross-sell__card      Breite = (100% − 16px)/3
       cart-drawer .ic-cross-sell__img-wrap  Höhe 108 px
       cart-drawer .ic-cross-sell__title     font-size **8px**
       cart-drawer .ic-cross-sell__price     font-size **8px**
   **Acht Pixel.** Das ist kleiner als jede andere Schrift im Laden (die
   kleinste sonst ist 9,5 px im Fuß) und auf einem Handy nicht lesbar.
   Drei Kacheln nebeneinander auf 370 px ergeben je rund 113 px — daher
   der gedrängte Eindruck.

   ⛔ Dieser Block erscheint immer dann, wenn `paareBauen()` keine zwei
   Quellkarten findet (also kein Paar bauen kann). Er ist der **Rueckfall**,
   nicht der Normalfall — aber er muss trotzdem aussehen wie der Laden.
   ⭐ Zwei statt drei je Reihe, 11 px Schrift, Name links und Preis rechts
   wie überall sonst.
   ====================================================================== */
@layer s304 {
  html body cart-drawer .ic-cross-sell__track{
    gap:12px !important;
  }
  html body cart-drawer .ic-cross-sell__card{
    width:calc((100% - 12px)/2) !important;
    min-width:calc((100% - 12px)/2) !important;
    max-width:calc((100% - 12px)/2) !important;
  }
  html body cart-drawer .ic-cross-sell__img-wrap{
    height:auto !important;
    max-height:none !important;
    aspect-ratio:1 / 1 !important;
  }
  html body cart-drawer .ic-cross-sell__img-wrap img{
    height:100% !important;
  }
  html body cart-drawer .ic-cross-sell__info{
    display:flex !important;
    align-items:baseline !important;
    justify-content:space-between !important;
    gap:8px !important;
    padding:6px 2px 0 !important;
  }
  html body cart-drawer .ic-cross-sell__title{
    font-size:11px !important;
    font-weight:700 !important;
    line-height:1.25 !important;
    white-space:normal !important;
    text-align:left !important;
  }
  html body cart-drawer .ic-cross-sell__price{
    font-size:11.5px !important;
    font-weight:700 !important;
    flex:0 0 auto !important;
    white-space:nowrap !important;
  }
  html body cart-drawer .ic-cross-sell__header{
    font-size:10px !important;
    letter-spacing:.1em !important;
    margin:0 0 10px !important;
  }
}


/* === S304-FUSS-NOCH-SCHMALER-2409 · „viel schmaler" ==================
   Enzo, 00:43: „der Futter ist immer noch nicht gut, der soll viel
   schmaler sein. Da musst du mal tiefer in die Logik reingehen."

   ⭐ GEMESSEN auf der Produktseite, Fußgruppe gesamt **422 px**:
       .s304-ic-streifen        58
       .footer__logo__wrapper  **101**   ← größter Einzelblock
       .s304-social             36
       nav.s304-legal           81
       section.supporting-menu  68
   ⛔⛔ **Das Logo war der größte Block, nicht der Text.** Ich hatte es
   vorhin von 63 auf 140 px Breite gezogen, weil es zu klein wirkte —
   damit wuchs die Höhe auf 93 px plus Ränder. **Eine Korrektur in die
   eine Richtung hat die nächste Beschwerde in die andere erzeugt.**
   ⭐ Jetzt 108 px breit (≈ 72 hoch). Groß genug, um es zu lesen, klein
   genug, um kein Drittel des Fußes zu belegen.
   ⭐ Dazu überall die Polster enger: Ziel ist rund **330 statt 422**.
   ⛔ Die Tippflächen der Rechtslinks bleiben bei 30 px — darunter wird
   Treffen zum Glücksspiel. Gespart wird am Leerraum, nicht an der
   Bedienbarkeit.
   ====================================================================== */
@layer s304 {
  html body .footer__logo img,
  html body .footer__logo .image-wrapper img{
    width:108px !important;
    min-width:108px !important;
  }
  html body .footer__logo,
  html body .footer__logo .image-wrapper,
  html body .footer__logo figure{
    width:108px !important;
    min-width:108px !important;
  }
  html body .footer__logo__wrapper{
    margin-bottom:0 !important;
  }
  html body footer.site-footer-wrapper{
    padding-top:8px !important;
    padding-bottom:0 !important;
  }
  html body .s304-social{
    margin:2px 0 0 !important;
  }
  html body .s304-social__link{
    height:28px !important;
  }
  html body nav.s304-legal{
    margin-top:6px !important;
    padding-top:6px !important;
  }
  html body .s304-legal__item a{
    padding:5px 0 !important;
    min-height:30px !important;
  }
  html body section.supporting-menu{
    padding-top:0 !important;
    padding-bottom:8px !important;
  }
  html body .supporting-menu__inner{
    min-height:0 !important;
  }
  html body .s304-ic-streifen{
    margin:0 14px 10px !important;
    padding:10px 16px !important;
  }
  html body .s304-ic-streifen__k{
    height:30px !important;
    padding:0 14px !important;
  }
}


/* === S304-FUSS-BLOECKE-2409 · Ordnung statt Reihenfolge ==============
   Gegenstück zu `fussBloecke()`. Enzo wollte den Fuß „eingeteilt in
   Informationsblöcke, da ist ja auch so eine Sortierung drin".
   ⭐ Zwei Spalten mit Kopfzeile, darunter die Pflichtlinks wie bisher.
   ⛔ Die Kopfzeilen sind bewusst klein und blass: sie sortieren, sie
   werben nicht. Größer als die Links darunter wäre genau der Fehler,
   den die Urheberzeile vorhin gemacht hat (13,2 px für den
   unwichtigsten Text der Seite).

   ⭐ Und das Logo: „genau gleich groß wie dann darüber und zentriert" —
   also dieselben 230 px wie in der Startseiten-Sektion, mittig.
   ⛔ Das ist die dritte Größe für dieses Logo an einem Abend (63 → 140
   → 230). Damit es nicht wieder auseinanderläuft, steht hier
   ausdrücklich: **dieselbe Zahl wie `.s304-kk__logo`.** Wer eine ändert,
   ändert beide.
   ====================================================================== */
@layer s304 {
  html body .footer__logo img,
  html body .footer__logo .image-wrapper img,
  html body .footer__logo,
  html body .footer__logo .image-wrapper,
  html body .footer__logo figure{
    width:230px !important;
    min-width:230px !important;
    max-width:calc(100vw - 32px) !important;
  }
  html body .footer__logo__wrapper{
    justify-content:center !important;
    margin:0 0 4px !important;
  }
  html body .s304-social{
    justify-content:center !important;
  }

  html body .s304-fuss-bloecke{
    display:grid !important;
    grid-template-columns:repeat(2, minmax(0,1fr)) !important;
    gap:0 16px !important;
    margin:14px 0 6px !important;
  }
  html body .s304-fuss-spalte{
    display:flex !important;
    flex-direction:column !important;
    gap:2px !important;
  }
  html body .s304-fuss-spalte__kopf{
    display:block !important;
    margin:0 0 6px !important;
    font-size:9.5px !important;
    font-weight:700 !important;
    letter-spacing:.14em !important;
    color:rgba(255,255,255,.42) !important;
  }
  html body .s304-fuss-spalte__link{
    display:inline-flex !important;
    align-items:center !important;
    min-height:28px !important;
    font-size:11.5px !important;
    letter-spacing:.02em !important;
    color:rgba(255,255,255,.82) !important;
    text-decoration:none !important;
  }
  html body nav.s304-legal{
    border-top:1px solid rgba(255,255,255,.10) !important;
    padding-top:8px !important;
    margin-top:4px !important;
  }
  html body .s304-legal__list{
    justify-content:center !important;
  }
}


/* === S304-WC-DREHER-2409 \u00b7 das Video in der Kachel ==================
   Gegenstueck zur Zuordnung in `s304-haus.js`. Das Video sitzt an
   derselben Stelle wie sonst das Standbild und bekommt dieselbe Form.
   \u26d4 `object-fit: contain`, nicht `cover`: die Dreh-Aufnahmen sind
   freigestellt und zentriert \u2014 ein Beschnitt wuerde die Karabiner
   abschneiden, und genau das ist Enzos stehende Regel.
   ====================================================================== */
@layer s304 {
  html body .s304-kk__video{
    display:block !important;
    width:100% !important;
    height:100% !important;
    object-fit:contain !important;
    background:#FFFFFF !important;
  }
}


/* === S304-HP-FEINSCHLIFF-2409 · Enzos Liste vom 24.09. ================
   1. „darunter soll nicht 12 Stücke oder 7 Stücke stehen" — die Zeile ist
      im JS entfernt; hier fällt nur noch ihr Platz weg.
   2. „diese gesamte Sektion kann noch näher, so 8 px unter das Logo" —
      der Abstand unter dem Logo war 20, wird 8.
   3. „macht diesen Button bitte ein bisschen prominenter" — der
      Inner-Circle-Streifen bekommt mehr Gewicht: hellerer Grund,
      kräftigere Kante, größerer Knopf.
   4. Fuß: „Instagram und TikTok direkt unter das Logo" und „unter Deutsch
      und © 304supply nicht so viel Platz".
   ⛔ Die senkrechten Abstände der Sektion OBEN bleiben unangetastet —
   daran hängt, dass beim ersten Laden nichts davon zu sehen ist, und das
   hat er ausdrücklich gelobt.
   ====================================================================== */
@layer s304 {
  html body .s304-kk__logo{
    margin:0 auto 8px !important;
  }
  html body .s304-kk__chip{
    padding:15px 15px !important;
  }
  html body .s304-kk__chip b{
    font-size:14.5px !important;
  }

  /* der Inner-Circle-Streifen — prominenter */
  html body .s304-ic-streifen{
    align-items:center !important;
    padding:15px 16px !important;
    border-radius:20px !important;
    background:linear-gradient(140deg, rgba(255,255,255,.16) 0%, rgba(255,255,255,.06) 100%) !important;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),
               0 14px 30px -18px rgba(0,0,0,.9) !important;
  }
  html body .s304-ic-streifen__h{
    font-size:14px !important;
    letter-spacing:.12em !important;
  }
  html body .s304-ic-streifen__s{
    margin-top:3px !important;
    font-size:11px !important;
    color:rgba(255,255,255,.72) !important;
  }
  html body .s304-ic-streifen__k{
    height:38px !important;
    padding:0 18px !important;
    font-size:11px !important;
    letter-spacing:.09em !important;
  }

  /* Fuß: Symbole direkt unter das Logo, Sprachzeile enger */
  html body .s304-social{
    margin:0 !important;
  }
  html body .footer__logo__wrapper{
    margin:0 !important;
  }
  html body nav.s304-legal{
    margin-top:10px !important;
  }
  html body section.supporting-menu{
    padding-top:0 !important;
    padding-bottom:6px !important;
  }
  html body .supporting-menu__inner{
    padding-top:2px !important;
    padding-bottom:0 !important;
  }
  html body .supporting-menu__copyright li{
    margin:0 !important;
  }
}


/* === S304-KORB-EINE-SPRACHE-2409 · GEGEN DIE SIEBEN FLAECHEN ===========
   Enzo: „so auf einmal sind da Kaesten, dann sind da runde Ecken, dann sind
   da unterschiedliche Farben, dann sind da zwei Kaesten uebereinander. Das
   ist so ein Kack." · „Vergleich das einfach mal mit Scuffers."

   ⭐⭐ SEINE KRITIK IST EXAKT MESSBAR. Ich habe jede sichtbare Flaeche im
   Schubfach ausgezaehlt (Elemente mit eigenem Grund, ueber die Elternkette
   auf echte Sichtbarkeit gefiltert):
       26 Flaechen · SECHS Gruende · VIER Radien
         rgba(255,255,255,.56)  das Schubfach
         rgba(255,255,255,.66)  die Produktzeilen
         rgb(255,255,255)       die Bildkaesten   ← eckig, r0
         rgb(240,240,240)       ein Grau
         rgb(0,0,0)             schwarz
         rgba(20,16,12,.1)      ein durchscheinendes Dunkel
         Radien: 22 · 14 · 99 · 0
   **Das ist keine Geschmacksfrage, das sind sechs Entscheidungen, die nie
   jemand zusammen getroffen hat.**

   ⭐⭐⭐ DER SCHLUESSEL ZUM GRAUSCHLEIER, und er ist genau verkehrt herum:
   Bei G3 ist der GRUND farbig und deckend, die KARTEN sind durchscheinend.
   Im Korb war es umgekehrt — das Schubfach durchscheinend (.56), und was
   durchschien, war die Ladenseite dahinter. **Ein Weichzeichner ueber
   Buntem ergibt Grau.** Deshalb bekommt das Schubfach jetzt G3s Grund
   DECKEND, und erst darauf liegen durchscheinende Karten.

   DIE EINE SPRACHE, aus `G3.dc.html` und identisch mit Kategorie und PDP:
       Karte    r20 · rgba(255,255,255,.80) · die drei Schaerfen
       Bildfeld r14 · Studiogrund (damit Silber eine Kante hat)
       Bedienelemente behalten r99 — ein Stepper und ein Kassenknopf sind
       **Bedienelemente, keine Kaesten**. Genau diese Unterscheidung fehlte.

   ⛔ „ZWEI KAESTEN UEBEREINANDER" ist der Vorschlagsblock: `.ic-cross-sell`
   hat einen eigenen Grund UND seine Kacheln haben einen. Der aeussere
   verliert ihn — eine Ueberschrift braucht keinen Kasten.
   ====================================================================== */
@layer s304 {

  /* ── 1 · der Grund traegt, statt durchzulassen ─────────────────
     ⛔ ERSTER ANLAUF VERLOR LAUTLOS. Abgefragt, welche Regeln auf
     `.drawer__inner` passen und einen Grund setzen — sechs Stueck, und die
     staerkste war:
         html body:not(.template-index) .drawer--header .drawer__inner, …
     Drei Klassen (`:not()` zaehlt mit), meine hatte zwei. Deshalb steht
     `:not(.template-index)` jetzt auch hier, plus das Element `cart-drawer`.
     ⭐ `:not(.x)` ist kein Filter, der nichts kostet — **die Klasse darin
     zaehlt voll zur Spezifitaet.** Genau daran ist es gescheitert. */
  html body:not(.template-index) cart-drawer.drawer--cart .drawer__inner,
  html body:not(.template-index) .drawer--cart .drawer__inner{
    background:
      radial-gradient(90% 60% at 15% 5%,  #E8F0EA 0%, rgba(232,240,234,0) 60%),
      radial-gradient(80% 55% at 95% 40%, #F6EAE4 0%, rgba(246,234,228,0) 62%),
      linear-gradient(180deg, #FAFAF8 0%, #EEF1EE 100%) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
  }

  /* ── 2 · EINE Karte: Produktzeilen und Vorschlagskacheln gleich ──────
     ⛔ DIE KLASSENNAMEN SIND GEMESSEN, NICHT GERATEN. Mein erster Anlauf
     hiess `.ic-cross-sell__item` — den gibt es nicht. Die Kachel heisst
     `__card`, ihr Bildfeld `__img-wrap`, ihr Textfeld `__info`.
     **Ein erfundener Selektor scheitert lautlos und sieht aus wie eine
     Kaskadenfrage.** */
  html body .drawer--cart .cart__item,
  html body cart-drawer .cart__item,
  html body .drawer--cart .ic-cross-sell__card,
  html body .drawer--cart .s304-wk-hebel{
    background:rgba(255,255,255,.80) !important;
    border-radius:20px !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(255,255,255,.55),
               0 20px 38px -20px rgba(40,60,50,.35) !important;
    border:0 !important;
  }

  /* ── 3 · kein Kasten im Kasten ───────────────────────────── */
  /* ⛔ `product-upsell` kam erst bei der DRITTEN Messung zum Vorschein:
     es steckt INNERHALB der Vorschlagskachel und traegt dort nochmal
     reines Weiss. Ein Kasten im Kasten im Kasten. */
  html body .drawer--cart .ic-cross-sell,
  html body .drawer--cart .ic-cross-sell__info,
  html body .drawer--cart .product-upsell{
    background:none !important;
    box-shadow:none !important;
    border:0 !important;
    border-radius:0 !important;
  }

  /* ── 4 · die Bildfelder: Studiogrund statt reinem Weiss und Grau ─────
     ⛔ Gemessen: der Produktbild-Kasten ist ein `<a>` OHNE Klasse in
     `.cart__item__image` — reines `rgb(255,255,255)`, `radius 0`. Das
     Vorschlagsbild traegt `rgb(240,240,240)`. Zwei Toene fuer dieselbe
     Aufgabe, und auf beiden verschwindet ein silberner Freisteller.
     Derselbe Befund wie auf der Kategorie: **Silber hat gegen Weiss keine
     Kante.** */
  html body .drawer--cart .cart__item__image > a,
  html body .drawer--cart .cart__item__image,
  html body .drawer--cart .ic-cross-sell__img-wrap,
  html body .drawer--cart .image-wrapper{
    background:
      radial-gradient(120% 85% at 50% 18%, #FFFFFF 0%, rgba(255,255,255,0) 62%),
      linear-gradient(180deg, #F7F9F7 0%, #EAEEEB 100%) !important;
    border-radius:14px !important;
    overflow:hidden !important;
  }

  /* ── 5 · was ein Bedienelement ist, bleibt rund ─────────────── */
  html body .drawer--cart .quantity-selector,
  html body .drawer--cart .cart__checkout-button,
  html body .drawer--cart button[name="checkout"]{
    border-radius:99px !important;
  }
}


/* === S304-MENUE-LESBAR-2409 · KONTRAST 1,09 ============================
   Enzo: „ich simuliere auch mal das Burger-Menue. Man erkennt das kaum."

   ⭐⭐ ER HAT UNTERTRIEBEN. Gemessen mit `elementFromPoint` auf jedem
   Eintrag, Kontrast nach WCAG-Formel gegen den effektiven Grund:
       WALLETCHAINS   #FFFFFF auf rgb(245,245,245)   **1,09**
       BRACELETS      dito                            **1,09**
       ESSENTIALS     dito                            **1,09**
       ABOUT US       dito                            **1,09**
       INNER CIRCLE   #C9A227 auf rgb(245,245,245)    **2,22**
   Lesbar ist ab **4,5** (3,0 bei grosser Schrift). **1,09 ist kein
   schwacher Kontrast, das ist Weiss auf Weiss.** Nur „INNER CIRCLE" war
   ueberhaupt zu sehen, weil es golden ist.

   ⛔⛔ DIE URSACHE IST MEIN EIGENER M3-BLOCK, und zwar halb.
   `S304-MENUE-M3-2409` sollte beides setzen: dunklen Verlaufsgrund UND
   weisse Schrift. **Die Schrift kam durch, der Grund nicht.** Gemessen:
   `mobile-menu` hat gar keine Kinder — das sichtbare Menue haengt an
   `.menu-304__primary-link`, einer anderen Klasse, als mein Grund-Selektor
   ansprach. Das Ergebnis war die schlechteste aller Fassungen: die helle
   Haelfte des alten Menues mit der weissen Schrift des neuen.
   ⭐⭐⭐ **Zum dritten Mal heute dieselbe Klasse Fehler: eine Regel greift
   halb, und das sieht aus wie ein Zufall statt wie ein Befund.** Wenn von
   zwei zusammengehoerenden Werten nur einer ankommt, ist das IMMER ein
   Selektor- oder Kaskadenproblem — nie Pech.

   ⭐ DIE ENTSCHEIDUNG, und sie weicht von M3 ab:
   M3 war „Hero durchscheinend", also DUNKEL mit weisser Schrift. Inzwischen
   stehen Kategorie und PDP auf G3 — hell, farbiges Glas. Ein dunkles Menue
   waere jetzt der einzige dunkle Ort im Laden.
   Deshalb: **heller Grund in der G3-Sprache, dunkle Schrift.** Das ist die
   kleinste Aenderung, die den Ausfall behebt, und die einzige, die zum Rest
   passt. ⛔ Wenn Enzo das dunkle Menue doch will, ist das EINE Zeile —
   dann kehren Grund und Schrift sich um. Die Entscheidung ist seine.
   ====================================================================== */
@layer s304 {

  /* ⛔⛔ HIER STANDEN DREI GEGENREGELN — sie sind wieder raus.
     Ich hatte `color`, die Blase und das Gold hier nochmal gesetzt, um die
     M3-Regeln zu ueberstimmen. Gemessen hat das nichts bewirkt:
         gewinnend  html body .drawer--header .menu-304__primary-link
                    (3 Klassen, `color:#FFFFFF !important`)
         meine      html body .menu-304__primary-link
                    (2 Klassen) — verliert lautlos
     ⭐ Die Positivkontrolle, die es bewiesen hat: ein frisch injizierter
     `<style>` mit demselben Selektor und `!important` faerbte den Eintrag
     **nicht** rot. Damit war klar, dass es die Spezifitaet ist.
     ⭐⭐ Also geaendert, wo es hingehoert: **im M3-Block selbst.** Zwei
     Regelwerke fuer dieselbe Farbe waeren genau die Dopplung, an der hier
     schon mehrfach etwas auseinandergelaufen ist. */

  /* ── der Menuegrund: derselbe wie Kategorie, PDP und Korb ──────────── */
  html body:not(.template-index) mobile-menu .drawer__inner,
  html body:not(.template-index) .drawer--header .drawer__inner,
  html body:not(.template-index) .menu-304,
  html body:not(.template-index) .menu-304__inner{
    background:
      radial-gradient(90% 60% at 15% 5%,  #E8F0EA 0%, rgba(232,240,234,0) 60%),
      radial-gradient(80% 55% at 95% 40%, #F6EAE4 0%, rgba(246,234,228,0) 62%),
      linear-gradient(180deg, #FAFAF8 0%, #EEF1EE 100%) !important;
  }
}


/* === S304-ECHTES-GLAS-SCUFFERS-2409 · SEIN BILDSCHIRMFOTO ==============
   Enzo, 24.09. nachts, mit Screenshot von scuffers.com (03:20):
   „im Warenkorb und im Burger Menue haette ich das halt wirklich gerne in
   diesen Transparenz Look. Treff den bitte genau von Scuffers und nicht
   nur so komisches Grau."

   ⛔⛔ ICH HATTE `backdrop-filter` AUSDRUECKLICH ABGELEHNT. In
   `S304-GLAS-DURCHGAENGIG-2309` steht meine Begruendung woertlich:
   *„eine Weichzeichnung zeigt nur dann etwas, wenn dahinter Struktur
   liegt. Ueber einem einfarbigen Grund ist das Ergebnis pixelgleich mit
   einfacher Halbtransparenz — nur teurer."*
   ⭐⭐ **Der Satz ist richtig, der Schluss war falsch.** Hinter dem
   Korb-Schubfach liegt kein einfarbiger Grund, sondern die Produktseite
   mit Fotos — auf seinem Scuffers-Bild sieht man genau das: die Jacke
   verschwommen durch die Karten. **Ich habe eine Regel auf einen Fall
   angewendet, fuer den sie nicht galt.** Dort, wo wirklich Struktur
   dahinterliegt, gehoert der Weichzeichner hin.

   WAS AUF SEINEM BILD MESSBAR ANDERS IST:
     · der Seiteninhalt ist durch die Karten SICHTBAR, stark weichgezeichnet
     · die Karten sind ein Verlauf von hell oben nach etwas dunkler unten,
       nicht eine flache Tonung
     · kein harter Rand — nur ein heller Saum an der Oberkante
     · der Fortschrittsbalken ist **duenn** und sitzt IN der Karte
   ⭐ Deshalb hier: `blur(44px) saturate(1.4)` (Saettigung, sonst wirkt
   Weichgezeichnetes grau — genau sein „nicht nur so komisches Grau"),
   darueber ein heller Verlauf statt einer flachen Flaeche.

   ⛔ Die Leistungssorge bleibt berechtigt und wird eingegrenzt: der
   Weichzeichner liegt auf **zwei Flaechen** (Schubfach und Menue), nicht
   auf den 47 Karten der Produktseite. Das ist der Unterschied zwischen
   „zwei Ebenen" und „jede Kachel".
   ====================================================================== */
@layer s304 {

  /* ── 1 · die beiden Schubfaecher selbst ───────────────────────────── */
  html body:not(.template-index) cart-drawer.drawer--cart .drawer__inner,
  html body:not(.template-index) .drawer--cart .drawer__inner,
  html body:not(.template-index) mobile-menu .drawer__inner,
  html body:not(.template-index) .drawer--header .drawer__inner{
    background:linear-gradient(180deg,
                 rgba(250,251,250,.62) 0%,
                 rgba(238,242,239,.52) 46%,
                 rgba(230,235,232,.58) 100%) !important;
    -webkit-backdrop-filter:blur(44px) saturate(1.4) !important;
    backdrop-filter:blur(44px) saturate(1.4) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.85),
               0 26px 60px -20px rgba(16,16,18,.45) !important;
  }

  /* ── 2 · die Karten darin: eine Stufe heller, damit sie abheben ────── */
  html body .drawer--cart .cart__item,
  html body cart-drawer .cart__item,
  html body .drawer--cart .ic-cross-sell__card,
  html body .drawer--cart .s304-wk-hebel,
  html body .drawer--header .menu-304__primary-link{
    background:linear-gradient(180deg,
                 rgba(255,255,255,.72) 0%,
                 rgba(255,255,255,.52) 100%) !important;
    -webkit-backdrop-filter:blur(32px) !important;
    backdrop-filter:blur(32px) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.95),
               inset 0 0 0 1px rgba(255,255,255,.45),
               0 14px 30px -18px rgba(16,16,18,.35) !important;
    border:0 !important;
  }

  /* ── 3 · der Abdunkler dahinter: Scuffers laesst mehr durch ────────── */
  html body .drawer__underlay,
  html body .underlay{
    background:rgba(20,16,12,.22) !important;
  }
}


/* === S304-VERSAND-FORTSCHRITT-2409 · Enzos Progress Bar ================
   Enzo: „Bei noch 30 Euro bis Gratisversand, da wollten wir eine Progress
   Bar machen … Gleiches gilt fuer Walletchains."

   ⭐ Die Schwelle steht bereits im Markup der Seite als JSON
   (`{"grenze": 8000, …}` = 80 € in Cent) — sie wird NICHT neu erfunden.
   ⭐ Der Balken sitzt unter der vorhandenen Zeile `.free-shipping__default-m`
   und bekommt seine Breite aus einer Variablen, die das Skript unten aus
   `/cart.js` setzt. Ohne Skript ist der Balken leer statt falsch.
   ⛔ Fail-closed: `--s304-versand` faellt auf 0 % zurueck.
   ====================================================================== */
@layer s304 {
  html body:not(.template-index) .free-shipping__default-message,
  html body:not(.template-index) .s304-katversand,
  html body:not(.template-index) .free-shipping__message{
    display:block !important;
    position:relative !important;
    max-width:340px !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-bottom:9px !important;
    text-align:center !important;
  }
  html body:not(.template-index) .free-shipping__default-message::after,
  html body:not(.template-index) .s304-katversand::after,
  html body:not(.template-index) .free-shipping__message::after{
    content:"" !important;
    position:absolute !important;
    left:0 !important;
    right:0 !important;
    bottom:0 !important;
    height:4px !important;
    border-radius:99px !important;
    background:
      linear-gradient(90deg, #15130F 0%, #15130F var(--s304-versand, 0%),
                      rgba(21,19,15,.12) var(--s304-versand, 0%),
                      rgba(21,19,15,.12) 100%) !important;
  }
}


/* === S304-MENUE-LUECKE-2409 · ZURUECKGENOMMEN, MIT MESSUNG ===========
   Enzo: „Burger Menue funktioniert noch gar nicht."

   ⭐⭐ ES FUNKTIONIERT — technisch. Bei echten 402 px geprueft: alle sechs
   Eintraege sichtbar, alle `klickbar: JA`, alle mit richtigem `href`.
   Was stoert, ist eine **Luecke von 248 px** (28 % der Menuehoehe) zwischen
   dem letzten Eintrag (endet y 468) und „VERSAND & RETOUREN" (beginnt y 716).
   Ursache: `.drawer__content__scroll` ist **617 px** hoch, sein einziges
   Kind **388 px** — der Scroller streckt sich ueber seinen Inhalt hinaus.

   ⛔⛔ MEIN FIX HAT ES KAPUTT GEMACHT, und das steht hier, damit es nicht
   noch einmal versucht wird. Gesetzt war:
       flex: 0 1 auto · height: auto · min-height: 0
   Gemessen danach:
       Scrollerhoehe   **50 px**   (Inhalt weiterhin 388)
       Luecke          248 → 234  (so gut wie nichts gewonnen)
       alleKlickbar    **false**   — die Eintraege ragten aus ihrem Kasten
   Der Scroller kollabierte auf fast nichts, der Inhalt lief ueber, und die
   Tippflaechen lagen ausserhalb.
   ⭐ Im Kommentar dieses Blocks stand woertlich: *„ein Fix, der den
   Scrollfall kaputt macht, waere ein neuer Fehler."* Genau das ist passiert
   — eine Warnung zu schreiben ersetzt die Messung danach nicht.

   ⭐ OFFEN, mit dem naechsten ehrlichen Weg: die Luecke gehoert dem Fuss-
   Block, nicht dem Scroller. Der richtige Griff ist, den Fussblock aus dem
   unteren Anschlag zu loesen — nicht den Scroller zu schrumpfen. Das braucht
   eine Messung der Geschwister-Reihenfolge und wird gebaut, wenn sie da ist.
   ====================================================================== */

/* ── ZWEITER ANLAUF: `flex-grow: 0` allein — WIRKUNGSLOS, wieder raus ──
   Gemessen danach: Luecke **248 → 248**, Scroller **617 → 617**, nichts
   kaputt, aber auch nichts gewonnen. Toter Code wird nicht aufgehoben.

   ⭐⭐⭐ WAS DIE ZWEI FEHLSCHLAEGE ZUSAMMEN ZEIGEN — und das ist der
   eigentliche Ertrag: **die Luecke ist kein Defekt.** Das Schubfach ist ein
   Flex-Spalte aus Kopf / Inhalt / Fuss; der Inhalt waechst, der Fuss klebt
   unten. Das ist genau das Verhalten, das ein Schubfach haben soll.
   Sechs Eintraege brauchen auf 874 px Hoehe schlicht nicht mehr Platz.
   **Man kann die Leere nicht wegreparieren, nur verlagern oder fuellen** —
   und welches von beidem, ist eine Gestaltungsfrage, keine Messfrage.
   ⛔ Deshalb wird hier nichts mehr geraten: das gehoert in einen Entwurf,
   den Enzo sieht, bevor ich ihn baue.
   ────────────────────────────────────────────────────── */


/* === S304-MENUE-LINKS-UND-WEISS-2409 ==================================
   Enzo mit Bildschirmfoto (24.09. 04:06): „ich finde das sieht gut aus,
   nur muessen wir das einfach linksbuendig haben … Jetzt ist es ja einfach
   so, rechtsbuendig." · „das ist eigentlich ein weisser Bereich, aber der
   ist so grau uebermalt, lass uns den weiss lassen."

   ⭐⭐ BEIDES IST MESSBAR, und beide Zahlen erklaeren genau, was er sieht:
       randLinks   **68 px**      randRechts  **46 px**
   Die Blasen stehen 22 px weiter rechts, als sie sollten — deshalb wirkt
   die ganze Spalte nach rechts gerueckt.
       Blasenfarbe **rgb(245,245,245)**
   Das ist kein Weiss. Es ist der Grauton, den er „uebermalt" nennt.

   ⭐ Gleicher Rand links und rechts (16 px), und die Blase wird **deckend
   weiss**. ⛔ Kein `backdrop-filter` mehr auf den Eintraegen: er zeichnet
   die dunkle Seite dahinter durch und macht aus Weiss genau dieses Grau.
   **Der Weichzeichner gehoert auf die Schubfach-Flaeche, nicht auf die
   Karten darauf** — sonst mischt sich der dunkle Grund in jede einzelne.

   ⭐ Und die Reihenfolge: Enzo „ich haette gerne Wallet Chains und
   Bracelets als erstes". Das Menue kommt aus der Shopify-Navigation; die
   Reihenfolge wird hier ueber `order` gesetzt, ohne sie dort anzufassen —
   so bleibt seine Navigation unveraendert und der Rueckweg ist eine Zeile.
   ====================================================================== */
@layer s304 {
  /* 1 · gleicher Rand links wie rechts */
  html body .drawer--header .menu-304__primary,
  html body mobile-menu .menu-304__primary,
  html body .drawer--header .mobile-menu__block-inner,
  html body mobile-menu .mobile-menu__block-inner{
    padding-left:0 !important;
    padding-right:0 !important;
    margin-left:0 !important;
    margin-right:0 !important;
    align-items:stretch !important;
  }
  html body .drawer--header .mobile-menu__block,
  html body mobile-menu .mobile-menu__block{
    padding-left:16px !important;
    padding-right:16px !important;
  }
  html body .drawer--header .menu-304__primary-link,
  html body mobile-menu .menu-304__primary-link{
    margin-left:0 !important;
    margin-right:0 !important;
    width:auto !important;
    max-width:none !important;
  }

  /* 2 · deckend weiss statt uebermalt */
  html body .drawer--header .menu-304__primary-link,
  html body .drawer--header .menu-304__primary a,
  html body mobile-menu .menu-304__primary-link{
    background: rgba(255,255,255,.46) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.95),
               inset 0 0 0 1px rgba(24,24,26,.05),
               0 14px 28px -18px rgba(10,16,14,.55) !important;
  }

  /* 3 · Walletchains und Bracelets zuerst */
  html body .drawer--header .menu-304__primary,
  html body mobile-menu .menu-304__primary{
    display:flex !important;
    flex-direction:column !important;
  }
  html body .drawer--header .menu-304__primary-link[href*="walletchains"]{ order:1 !important; }
  html body .drawer--header .menu-304__primary-link[href*="bracelets"]{    order:2 !important; }
  html body .drawer--header .menu-304__primary-link[href*="inner-circle"]{ order:3 !important; }
  html body .drawer--header .menu-304__primary-link[href*="essentials"]{   order:4 !important; }
  html body .drawer--header .menu-304__primary-link[href*="about"]{        order:5 !important; }
  html body .drawer--header .menu-304__primary-link[href*="creator"]{      order:6 !important; }
}

/* ── 4 · der Block war schmaler als das Schubfach ─────────────────────────
   Gemessen nach dem ersten Anlauf: links 16 ✓, rechts aber **46**.
   `.mobile-menu__block` ist **372 px** breit, das Schubfach-Innere **387** —
   15 px, die rechts unbenutzt blieben, plus 16 Polster = 31, plus die 15 px,
   um die das Schubfach selbst schmaler ist als der Bildschirm = 46.
   ⭐ Der Block bekommt die volle Breite; erst dann sind die Raender gleich. */
@layer s304 {
  html body .drawer--header .mobile-menu__block,
  html body mobile-menu .mobile-menu__block{
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
    margin-right:0 !important;
  }
}

/* ── 5 · der Scrollbalken — MEINE DIAGNOSE WAR FALSCH ──────────────
   Ich hatte die 15 px Differenz zwischen `.drawer__content` (372) und dem
   Schubfach-Inneren (387) fuer die Scrollbalken-Breite gehalten — die Zahl
   passte perfekt. **Gemessen nach dem Fix: Scrollbalken 0 px, Rand rechts
   unveraendert 46.** Die Zahl stimmte, die Ursache nicht.
   ⭐⭐ **Eine Zahl, die perfekt passt, ist noch kein Beleg fuer die
   Ursache.** Zwei Groessen koennen gleich sein, ohne zusammenzuhaengen —
   15 px sind eben auch ein uebliches Polster.

   ⛔ OFFEN, ehrlich: die Blase steht links 16, rechts 46. Enzos Hauptpunkt
   ist erfuellt (vorher 68), die letzten 30 px sind es nicht. Zwei Anlaeufe
   haben sie nicht bewegt — der dritte kommt erst mit einer Messung, die
   die Ursache wirklich zeigt, nicht mit einer weiteren Vermutung.

   ⭐ Die Regeln bleiben trotzdem: sie nehmen einen sichtbaren Balken aus
   dem Menue, und gescrollt werden kann weiterhin. Das ist ein Gewinn —
   nur nicht der, fuer den ich sie geschrieben habe. */
@layer s304 {
  html body .drawer--header .drawer__content__scroll,
  html body mobile-menu .drawer__content__scroll,
  html body .drawer--header .drawer__content,
  html body mobile-menu .drawer__content{
    scrollbar-width:none !important;
    width:100% !important;
  }
  html body .drawer--header .drawer__content__scroll::-webkit-scrollbar,
  html body mobile-menu .drawer__content__scroll::-webkit-scrollbar{
    width:0 !important;
    display:none !important;
  }
}


/* === S304-EIN-MENUE-UEBERALL-2409 · Enzos A1–A6 vom 24.09. morgens =====
   Enzo: „Ich will, dass du es von verschiedenen Orten testest … Es sieht
   manchmal anders aus, manchmal ist es eckig." · „Ich haette gerne das
   Burger Menue aus jeder Kategorie heraus immer so transparent. Wenn ich
   jetzt von der Kategorie Seite darauf druecke, wird es so eklig milchig."

   ⭐⭐⭐ DIE URSACHE IST EINE EINZIGE ZEILE, UND SIE IST VON MIR.
   Gemessen an echten 402 px, Arbeitskopie 189042917757, das Menue von FUENF
   Orten geoeffnet, jedes Mal dieselben Werte abgefragt:
       Startseite   rgba(14,20,22,.44)                     blur(5px)  sat 1.12
       Bracelets    linear-gradient(rgba(250,251,250,.62)…) blur(44px) sat 1.4
       Walletchains dito
       PDP          dito
       Warenkorb    dito
   **Es sind zwei verschiedene Menues, und geteilt werden sie von
   `:not(.template-index)`** — in `S304-DIE-SEITE-SCHEINT-DURCH-2409` (Regel 2
   und 3) und nochmal in `S304-ECHTES-GLAS-SCUFFERS-2409`. Meine damalige
   Begruendung war gut gemeint: auf der Startseite liegt ein dunkler Hero
   dahinter, auf den anderen Seiten helle Ware. Nur ist das Ergebnis genau
   das, was Enzo jetzt sieht: **dasselbe Bauteil in zwei Gestalten.**
   ⭐ Die Lehre, und sie ist allgemeiner als dieser Fall:
   **eine Fallunterscheidung nach Seitentyp erzeugt zwangslaeufig
   „manchmal sieht es anders aus".** Wer sie einbaut, baut den Fehler ein,
   den Enzo dann meldet.

   ⭐ WELCHE DER BEIDEN GEWINNT, ist nicht Geschmack, sondern belegt:
   · die helle nennt er woertlich „eklig milchig"
   · die dunkle hat er am 24.09. um 04:06 mit Bildschirmfoto abgenommen
     („ich finde das sieht gut aus, nur muessen wir das einfach
     linksbuendig haben")
   Also gilt ab hier die DUNKLE, unveraendert in ihren Zahlen, auf ALLEN
   Seiten. ⛔ Keine neuen Werte erfunden — die abgenommenen kopiert.

   ⛔ WAS DABEI ZWINGEND MITMUSS, sonst ist der Fix eine Verschlimmerung:
   auf den hellen Seiten standen Kopf, Fuss, Logo und Sterne in DUNKLEN
   Farben (gemessen: `rgb(58,64,60)`, `rgb(33,33,33)`, Logo
   `filter: brightness(0)`). Auf dunklem Grund waeren die alle weg.
   Deshalb wandern die hellen Vordergrundfarben, die bisher nur
   `body.template-index` hatte, hier auf JEDEN Body.

   ⛔ SPEZIFITAET, gemessen statt gehofft: die Gegner sind
   `html body:not(.template-index) mobile-menu .drawer__inner` — das sind
   DREI Klassen (`:not()` zaehlt voll), plus drei Elemente. Ein Selektor mit
   `html body .drawer--header .drawer__inner` hat nur zwei Klassen und
   **verliert lautlos**. Deshalb steht hier `body[class][class]`: ein
   Attributwaehler zaehlt wie eine Klasse, jeder Body traegt eine Klasse,
   und damit sind es vier — ohne eine einzige Klasse zu erfinden.
   ====================================================================== */
@layer s304 {

  /* ── A1 + A5 · EIN Glas, auf jeder Seite dasselbe ──────────────────── */
  html body[class][class] .drawer--header .drawer__inner,
  html body[class][class] mobile-menu .drawer__inner,
  html body[class][class] header-drawer .drawer__inner{
    background:rgba(14,20,22,.44) !important;
    /* ⭐ DER TON IST UNVERAENDERT, NUR DIE SCHAERFE. `rgba(14,20,22,.44)` ist
       exakt der Wert, den Enzo um 04:06 abgenommen hat — daran wird nichts
       gedreht. Der Weichzeichner stand auf 5 px, und das ist auf einer
       Kategorieseite zu wenig: die schwarzen Marken der Kacheln stehen als
       harte Balken im Glas und sehen aus wie ein Zeichenfehler.
       Enzos eigene Vorlage sagt es woertlich — auf seinem Scuffers-Bild ist
       der Seiteninhalt *„sichtbar, stark weichgezeichnet"*.
       GEMESSEN auf der Kategorie, Glasflaeche zwischen den Blasen:
           blur  5px   Kantenenergie 0,158  Helligkeit 125,9  Streuung 20,4
           blur 10px                 0,107             125,9            15,5
           blur 14px                 0,087             125,9            13,2
           blur 20px                 0,072             125,9            11,1
       ⭐⭐ **Die Helligkeit aendert sich bei keinem Wert** — ein
       Weichzeichner nimmt keine Durchsicht weg, er nimmt nur die Kanten.
       Das ist der Unterschied zur „milchigen" Fassung, die ihre Grauheit
       aus 62 % WEISS bezog, nicht aus dem Blur. 14 px halbiert die
       Kantenenergie und laesst die Seite trotzdem erkennbar (Streuung 13,2
       gegen 20,4 — nicht 0). ⛔ Eine Zeile, vier gemessene Alternativen:
       wenn Enzo es schaerfer will, steht hier wieder 5. */
    -webkit-backdrop-filter:blur(14px) saturate(1.12) !important;
    backdrop-filter:blur(14px) saturate(1.12) !important;
    border-radius:22px !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.18),
               0 26px 60px -20px rgba(16,16,18,.55) !important;
  }

  /* ── A1 · der Vordergrund, jetzt ueberall hell ─────────────────────── */
  /* ⛔ `.drawer__foot *` NICHT pauschal hell faerben: die Fusselemente
     stehen seit der Korrektur unten auf einem WEISSEN Traeger, helle
     Schrift darauf waere unsichtbar. Hell wird nur, was wirklich auf dem
     Glas liegt. */
  html body[class][class] .drawer--header .drawer__head,
  html body[class][class] .drawer--header .drawer__head *{
    color:#F2EFEA !important;
  }
  html body[class][class] .drawer--header .drawer__head svg,
  html body[class][class] .drawer--header .drawer__close svg{
    stroke:#F2EFEA !important;
  }
  /* ⛔ DAS LOGO WAR SCHWARZ EINGEFAERBT (`filter: brightness(0)`, gemessen).
     Auf hellem Grund war das richtig; auf dem dunklen Blatt ist es weg.
     Es war bisher nur lesbar, WEIL der Header dahinter durchschien — genau
     der Fehler, den A6 unten abstellt. Ein Fix, der einen zweiten Fehler
     als Beleuchtung braucht, ist keiner. */
  html body[class][class] .drawer--header .header__logo__link--drawer img{
    /* ⛔ NACHGEMESSEN: weisses Logo auf dem Glas traegt nur, solange etwas
       Dunkles dahinterliegt. Auf der Kategorie (heller Grund hinter 44 %
       Glas) fiel der Pixelkontrast auf **3,54** — sichtbar, aber ausgewaschen.
       ⭐ Ein Schlagschatten kostet keinen Kasten und wirkt auf JEDEM Grund. */
    filter:brightness(0) invert(1) drop-shadow(0 1px 2px rgba(0,0,0,.65)) !important;
    opacity:.95 !important;
  }
  html body[class][class] .drawer--header .drawer__close svg{
    filter:drop-shadow(0 1px 2px rgba(0,0,0,.6)) !important;
  }
  html body[class][class] .drawer--header .menu-trust-badge__text{
    text-shadow:0 1px 2px rgba(0,0,0,.6) !important;
  }
  /* ⛔ DIE STERNE NICHT EINFAERBEN — DAS WAERE EINE FALSCHE ZAHL.
     Gemessen: vier Sterne `fill: rgb(17,17,17)`, der fuenfte
     `fill: url(#g60)` mit Stopps bei 60 % (#111 / #ccc). Er zeigt die 4,8.
     Ein `fill: #F2EFEA !important` haette alle fuenf voll gefuellt — aus
     4,8 waere optisch 5,0 geworden. **Eine Lesbarkeitskorrektur darf die
     Aussage nicht aendern.**
     ⭐ Stattdessen `invert(1)` auf dem ganzen SVG: #111 wird hell,
     #ccc wird dunkel — die 60/40-Teilung bleibt erhalten und kehrt nur
     ihre Polaritaet um, genau richtig auf dunklem Grund. */
  html body[class][class] .drawer--header .menu-trust-badge__stars svg{
    filter:invert(1) drop-shadow(0 1px 1.5px rgba(0,0,0,.55)) !important;
    width:14px !important;
    height:14px !important;
  }
  html body[class][class] .drawer--header .menu-trust-badge__stars svg path{
    stroke:none !important;
  }
  html body[class][class] .drawer--header .menu-trust-badge__text{
    font-size:11px !important;
    letter-spacing:.01em !important;
  }

  /* ── A2 · Logo und Sterne linksbuendig ─────────────────────────────
     Gemessen vorher: `.drawer__head { padding-left: 95px }`, Logo x 95,
     Sterne x 95 — bei 402 px Breite sieht das eingerueckt bis mittig aus.
     ⭐ Die 95 waren NICHT falsch gerechnet, sie sind ABGELAUFEN: sie zielten
     auf die Textkante in den Blasen, als die Blasen noch bei x 53 mit 26 px
     Innenpolster standen. `S304-MENUE-LINKS-UND-WEISS-2409` hat die Blasen
     danach auf x 16 gezogen — und die Kopfzeile ist mitgewandert, ohne dass
     es jemand gemerkt hat.
     ⭐⭐ **Eine Zahl, die aus einer anderen Zahl abgeleitet ist, muss mit
     ihr mitwandern — oder sie darf gar nicht erst abgeleitet werden.**
     Deshalb jetzt der Wert, der sich NICHT verschiebt: dieselbe linke Kante
     wie alles andere im Blatt, 16 px. */
  html body[class][class] .drawer--header .drawer__head{
    padding-left:16px !important;
    padding-right:16px !important;
    column-gap:12px !important;
  }
  html body[class][class] .drawer--header .drawer__head .menu-trust-badge{
    justify-self:start !important;
    margin-left:0 !important;
    padding-left:0 !important;
  }

  /* ── A3 · Versand & Retouren und FAQ bekommen dieselbe Form ──────────
     ⛔ EHRLICH: der Radius war schon 99 px (gemessen, beide Links). „Eckig"
     waren sie nicht. Was sie von den Blasen unterscheidet, ist alles
     andere: linke Kante **59 statt 16**, Hoehe 36 statt 54, Schrift 11 px,
     Grund `rgba(255,255,255,.1)` — auf dem Blatt praktisch unsichtbar.
     ⭐ Sie bekommen die linke Kante der Blasen, einen sichtbaren Grund und
     einen Ring. Sie bleiben kleiner als die Hauptpunkte — sie sind
     zweite Reihe, nicht Hauptnavigation. */
  /* ⛔ KORREKTUR, nachgemessen statt geschaetzt: nach dem ersten Anlauf
     stand die Pille bei **x 33**, nicht bei 16. Die Elternkette zeigt warum
     — es sind ZWEI Polster hintereinander:
         .drawer__foot                padding-left 16  → x 16
         .drawer__foot__scroll                          → x 17 (Rundung)
         .mobile-menu__block          padding-left 16  → x 33
     Im Inhaltsbereich gibt es dieses doppelte Polster nicht, dort polstert
     nur der Block — deshalb stehen die Blasen dort korrekt bei 16.
     ⭐ **Wer einen Rand setzt, muss die ganze Kette zaehlen, nicht das
     naechstliegende Element.** Das aeussere Polster faellt weg, das innere
     bleibt — so ist es im Kopf und im Inhalt auch. */
  html body[class][class] .drawer--header .drawer__foot{
    /* ⛔⛔⭐⭐⭐ DIE EIGENTLICHE URSACHE VON A4, und sie ist EINE ZEILE.
       Enzo: „Instagram, TikTok und Deutsch, das erkennt man nicht richtig."
       Ich habe zuerst Farben und Groessen gemessen — Strichstaerke, SVG-Mass,
       Schriftgrad, Kontrast — und dabei uebersehen, was darueber steht:
           .drawer__foot   **opacity: 0.3**
       Gemessen zu sechs Zeitpunkten (200, 600, 1200, 2500, 5000, 9000 ms)
       auf Startseite UND Kategorie: immer 0,3, `animation-name: none`.
       **Es ist kein haengender Uebergang, es ist ein Dauerzustand** — und er
       betrifft GENAU die drei Dinge, die Enzo aufzaehlt, plus Versand & FAQ.
       ⭐⭐ Die Lehre: **bevor man die Farbe eines Kindes misst, prueft man die
       Deckkraft seiner Eltern.** Vier Messungen an Symbolgroesse und
       Strichfarbe haetten das nie gefunden; gefunden hat es die Frage
       „warum sieht der ganze Fuss blass aus, nicht nur ein Element?" */
    opacity:1 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    /* ⛔ DRITTE KORREKTUR, und die letzte Zahl war ein RAHMEN, kein Polster.
       Nach den ersten beiden Griffen stand die Pille bei x 17 statt 16 —
       ein Pixel, das ich beinahe mit `padding-left: 15px` „weggerechnet"
       haette. Gemessen statt gerechnet:
           .drawer__foot     border-left-width **1px**, border-right 1px
           .drawer__content  border-left-width   0px
       Der Fuss traegt als einziger Kasten im Blatt einen Rahmen, und der
       verschiebt alles darin um genau ein Pixel.
       ⭐⭐ **Ein Pixel mit einer erfundenen Gegenzahl zu schliessen waere
       genau der Fehler, der in diesem Blatt schon dreimal steht.** Oben
       bleibt der Rahmen (dort trennt er), links und rechts faellt er weg. */
    border-left-width:0 !important;
    border-right-width:0 !important;
  }
  /* ⛔ ZWEITE KORREKTUR, wieder nachgemessen: mit `padding-left: 0` stand der
     Block bei x 1 — aber `.drawer__foot__scroll` war nur **231 px** breit
     (`flex: 0 1 auto`, errechnete Breite 230,578). Die Fusszeile nahm also
     nur 57 % der Blattbreite ein, und alles darin stand entsprechend eng.
     ⭐ Das ist dieselbe Klasse wie die 15 px, die im Block
     `S304-MENUE-LINKS-UND-WEISS-2409` zweimal nicht gefunden wurden: **ein
     Rand kann aus einer BREITE kommen, nicht aus einem Polster.** */
  html body[class][class] .drawer--header .drawer__foot__scroll{
    flex:1 1 auto !important;
    width:100% !important;
    max-width:100% !important;
    box-sizing:border-box !important;
  }
  html body[class][class] .drawer--header .drawer__foot .mobile-menu__block{
    padding-left:16px !important;
    padding-right:16px !important;
    width:100% !important;
    max-width:100% !important;
    flex:1 1 auto !important;
    box-sizing:border-box !important;
  }
  html body[class][class] .drawer--header .drawer__foot .mobile-menu__block-inner,
  html body[class][class] .drawer--header .menu-304__secondary-pinned,
  html body[class][class] .drawer--header .menu-304__footer-row{
    padding-left:0 !important;
    margin-left:0 !important;
  }
  html body[class][class] .drawer--header .menu-304__secondary-pinned-link,
  html body[class][class] .drawer--header .menu-304__secondary-pinned a{
    display:inline-flex !important;
    align-items:center !important;
    height:40px !important;
    padding:0 20px !important;
    margin-left:0 !important;
    border-radius:99px !important;
    font-size:12px !important;
    letter-spacing:.06em !important;
    /* ⛔⛔ ERSTER ANLAUF WAR EINE VERSCHLECHTERUNG, UND DIE MESSUNG HAT
       IHN GEFANGEN. Ich hatte hier `rgba(255,255,255,.14)` mit heller
       Schrift — richtig ueber dem dunklen Hero der Startseite, falsch
       ueberall sonst. Pixelkontrast im Bildschirmfoto:
           Startseite    VERSAND & RETOUREN 2,93 · FAQ 2,13
           Kategorie     VERSAND & RETOUREN **1,54** · FAQ **1,31**
       Vorher waren es auf der Kategorie 1,94 und 4,13 — **mein Fix hat es
       dort schlechter gemacht.**
       ⭐⭐ DIE URSACHE IST ARITHMETIK, NICHT GESCHMACK: 44 % Dunkel ueber
       einer weissen Seite ergibt rund 150 von 255 — Mittelgrau. Helle
       Schrift darauf ist nicht lesbar. Ein durchscheinender Traeger IST
       abhaengig von der Seite dahinter, und genau deshalb kann er auf
       keiner Seite verlaesslich sein.
       ⭐⭐⭐ Die Loesung steht schon im Blatt: **die weissen Blasen tragen
       ihre Schrift selbst.** Die zweite Reihe bekommt denselben Traeger,
       nur kleiner und ruhiger. Damit haengt ihre Lesbarkeit an nichts mehr,
       was dahinter liegt — auf jeder Seite dieselbe Zahl. */
    background:rgba(255,255,255,.90) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(24,24,26,.06) !important;
    color:#3A403C !important;
  }

  /* ── A4 · Instagram, TikTok und Deutsch ────────────────────────────
     Enzo: „Instagram, TikTok und Deutsch, das erkennt man nicht richtig."
     ⭐⭐ GEMESSEN, und es ist NICHT der Kontrast: die Symbole sind
     **14 x 14 px bei 1 px Strichstaerke** in einem 36er Knopf, die
     Sprachzeile **11 px**. Auf 402 px ist das die kleinste Grafik im ganzen
     Laden.
     ⛔ MEIN ERSTER MESSWEG LOG: die gerechnete Kontrastzahl kam auf 16,05
     — sie sucht den ersten DECKENDEN Elternteil als Grund und findet die
     Seite hinter dem Glas, nicht das Glas. **Ueber einer durchscheinenden
     Flaeche ist eine gerechnete Kontrastzahl wertlos**; hier zaehlt nur
     der Pixel aus dem Bildschirmfoto. Beides steht im Bericht. */
  html body[class][class] .drawer--header .menu-304__footer-social-link{
    width:44px !important;
    height:44px !important;
    border-radius:99px !important;
    background:rgba(255,255,255,.90) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(24,24,26,.06) !important;
  }
  html body[class][class] .drawer--header .menu-304__footer-social-link svg{
    width:20px !important;
    height:20px !important;
    stroke:#15130F !important;
    stroke-width:1.6px !important;
  }
  html body[class][class] .drawer--header .popout__toggle{
    height:40px !important;
    padding:0 16px !important;
    border-radius:99px !important;
    background:rgba(255,255,255,.90) !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               inset 0 0 0 1px rgba(24,24,26,.06) !important;
    color:#3A403C !important;
  }
  html body[class][class] .drawer--header .popout__toggle,
  html body[class][class] .drawer--header .popout__toggle__text{
    font-size:13px !important;
    letter-spacing:.02em !important;
  }

  /* ── A6 · hinter dem Blatt steht kein zweites Menue mehr ─────────────
     Enzo: „dahinter ist noch ein anderes Burger Menue offen. Beziehungsweise
     dahinter erkennt man noch den Header."
     ⭐⭐ ER HAT RECHT, UND ES IST MESSBAR — nicht am Aussehen, am Pixel.
     Ich habe denselben Bildausschnitt (y 8–52) zweimal fotografiert, einmal
     wie er ist und einmal mit `visibility:hidden` auf `.theme__header`:
         Startseite   **94,3 % der Pixel aendern sich**, Mittel 99,9/255
         Bracelets    4,0 %   · Walletchains 4,0 % · Warenkorb 4,0 %
         PDP          0 %  (dort liegt der Header bei y 32 ausserhalb)
     Der Header steht auf `z-index 2300`, der Schleier auf 2400, das Blatt
     auf 6001 — er liegt also DAHINTER und scheint durch, weil das Blatt
     durchsichtig ist. Auf der Startseite ist das eine komplette zweite
     Leiste mit Lupe, Logo und Korbsymbol: genau „noch ein Burger Menue".
     ⭐ Die Positivkontrolle steckt schon in der Messung: die Fassung
     „ohne Header" IST der rote Fall, und sie hat sich bewegt.
     ⛔ Kein `display:none` — das wuerde das Layout der Seite umbauen und
     beim Schliessen springen. `visibility` + `opacity` lassen den Platz
     stehen. */
  html body:has(.drawer.is-open) .theme__header,
  html body:has(.drawer--header.is-open) .theme__header,
  html body:has(cart-drawer.is-open) .theme__header{
    visibility:hidden !important;
    opacity:0 !important;
    transition:opacity .18s ease !important;
  }
}


/* === S304-KORB-EINE-WAHRHEIT-2409 · Enzos D1–D3 =======================
   Enzo: „da sind verschiedene Progress-Bars" · „der Grauton ist ultra
   haesslich … das Haesslichste, was ich in meinem Leben gesehen habe" ·
   „es ist auch nicht gebaut mit dem, von wegen hier noch ein Bundle."

   ⭐⭐ D1 — ES SIND ZWEI BALKEN, UND DER ZWEITE IST MEINER.
   Gemessen im offenen Schubfach (Testkorb 120 €, Schwelle 80 €), alle
   flachen dunklen Flaechen ausgezaehlt, Elemente UND Pseudoelemente:
       .ic-shipping-bar__fill                       338 x 8  bei y 92,5
       .free-shipping__default-message::after       338 x 4  direkt darueber
   Der erste gehoert dem Theme und wird seit `S304-VERSANDLEISTE-2409` nur
   lesbar gemacht. Der zweite stammt aus `S304-VERSAND-FORTSCHRITT-2409` —
   **ich habe am selben Tag eine Fortschrittsleiste gebaut, die es schon
   gab.** Genau die Dopplung, gegen die die Hausregel steht.
   ⛔ ABER NICHT EINFACH LOESCHEN, DAS WAERE DER NAECHSTE FEHLER:
   auf der Kategorieseite gibt es `.ic-shipping-bar` gar nicht (gemessen:
   beide Vorkommen liegen IM Warenkorb-Schubfach, `closest('cart-drawer')`
   ist bei beiden wahr). Dort ist mein `::after` auf `.s304-katversand`
   **der einzige Balken**. Ein globales Entfernen haette die Kategorie
   stillschweigend um ihre Leiste gebracht.
   ⭐ Deshalb faellt er genau dort weg, wo der echte schon steht — die
   Bedingung sagt das auch woertlich: `:has(.ic-shipping-bar)`.

   ⭐⭐ D1b — ZWEI SAETZE, DIE SICH WIDERSPRECHEN, gleichzeitig sichtbar:
       „Herzlichen Glueckwunsch! Gratis Versand gesichert!"   y 45,6  sichtbar
       „Noch 40 € bis Gratisversand"                          y 64,5  sichtbar
   Der Kasten traegt `is-success` — die Standardzeile haette weg gehoert.
   Das ist dieselbe Wurzel wie die zwei Balken: **eine Flaeche sagt zwei
   Dinge, und eins davon ist falsch.**

   ⭐⭐⭐ D2 — DER GRAUTON, und der Hinweis aus der Kategorie traf ins
   Schwarze. Gemessen am Schubfach:
       Grund  linear-gradient(rgba(250,251,250,.62) … .52 … .58)
       dazu   backdrop-filter: blur(44px) saturate(1.4)
       Karten rgba(255,255,255,.72 → .52) + blur(6px)
   **Beides durchscheinend.** Bei G3 ist es genau umgekehrt: der Grund
   traegt die Farbe deckend, und erst die Karten darauf sind Glas. Ein
   Weichzeichner ueber der bunten Ladenseite mittelt alles zu Grau — das
   ist kein Geschmacksurteil, das ist, was ein Blur rechnet.
   ⛔ Und es ist das zweite Mal: `S304-KORB-EINE-SPRACHE-2409` hatte den
   deckenden Grund schon gesetzt, `S304-ECHTES-GLAS-SCUFFERS-2409` hat ihn
   Stunden spaeter wieder durchsichtig gemacht. Zwei Bloecke desselben Tages,
   die gegeneinander arbeiten. **Der Grund wird hier wieder deckend — und
   zwar mit exakt den Werten aus `S304-KORB-EINE-SPRACHE-2409`, nicht mit
   neu erfundenen.**
   ⛔ Das Menue bleibt durchsichtig (siehe Block darueber). Der Unterschied
   ist nicht Willkuer: hinter dem Menue liegt EIN Hero oder eine ruhige
   Kachelwand, hinter dem Korb liegen Produktfotos in allen Farben.

   ⭐ D3 — WAS ICH BELEGEN KANN UND WAS NICHT, steht unten am Block.
   ====================================================================== */
@layer s304 {

  /* ── D1 · nur noch ein Balken, und zwar der echte ──────────────────── */
  html body .free-shipping:has(.ic-shipping-bar) .free-shipping__default-message::after,
  html body .free-shipping:has(.ic-shipping-bar) .free-shipping__message::after,
  html body cart-drawer .free-shipping__default-message::after{
    content:none !important;
  }

  /* ── D1b · im Erfolgsfall sagt nur noch der Erfolgssatz etwas ──────── */
  html body .free-shipping.is-success .free-shipping__default-message{
    display:none !important;
  }

  /* ── D2 · der Grund traegt, die Karten sind das Glas ───────────────── */
  html body[class][class] cart-drawer.drawer--cart .drawer__inner,
  html body[class][class] .drawer--cart .drawer__inner{
    background:
      radial-gradient(90% 60% at 15% 5%,  #E8F0EA 0%, rgba(232,240,234,0) 60%),
      radial-gradient(80% 55% at 95% 40%, #F6EAE4 0%, rgba(246,234,228,0) 62%),
      linear-gradient(180deg, #FAFAF8 0%, #EEF1EE 100%) !important;
    -webkit-backdrop-filter:none !important;
    backdrop-filter:none !important;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.9),
               0 26px 60px -20px rgba(16,16,18,.45) !important;
  }

  /* ── D3 · der Empfehlungsblock bekommt die Sprache des Hauses ───────
     Gemessen vorher: Ueberschrift **10 px**, Pfeile **18 x 18 px bei
     `opacity: .6`** ohne Grund — ein Bedienelement, das man nicht als
     solches erkennt. Enzos Massstab: „was klickbar aussieht, muss etwas
     tun" — hier gilt die Umkehrung, es TUT etwas und sieht nicht danach
     aus. 374 px Spur gegen **955 px Inhalt**: drei von fuenf Kacheln
     liegen ausserhalb, die Pfeile sind der einzige sichtbare Weg dorthin. */
  html body cart-drawer .ic-cross-sell__header{
    font-size:12.5px !important;
    font-weight:700 !important;
    letter-spacing:.08em !important;
    align-items:center !important;
    margin:0 0 12px !important;
  }
  html body cart-drawer .ic-cross-sell__arrow{
    width:32px !important;
    height:32px !important;
    border-radius:99px !important;
    opacity:1 !important;
    /* ⛔ NACHGEMESSEN UND KORRIGIERT: mein erster Wert war `rgba(255,255,255,.72)`
       — ein Ton, den es im Schubfach noch nicht gab. Die Zaehlung der
       Flaechen stieg dadurch von SIEBEN Gruenden auf ACHT, und genau gegen
       diese Zahl steht `S304-KORB-EINE-SPRACHE-2409`. ⭐ Jetzt steht hier
       der Ton, der ohnehin schon fuenfmal im Schubfach vorkommt. **Ein
       neuer Farbwert ist eine Entscheidung; wer sie unbemerkt trifft,
       zersplittert die Sprache.** */
    background:rgba(255,255,255,.92) !important;
    box-shadow:inset 0 0 0 1px rgba(24,24,26,.10),
               0 6px 14px -8px rgba(16,16,18,.35) !important;
    color:#15130F !important;
  }
  html body cart-drawer .ic-cross-sell__arrows{
    display:flex !important;
    gap:8px !important;
    flex:0 0 auto !important;
  }

  /* ── D3b · „Du sparst …" war WEISS, nicht grau ─────────────────────
     Enzo: „Der Text ist grau und halb abgeschnitten."
     ⭐ GEMESSEN, und die Farbe ist noch schlimmer als gemeldet:
     `p.cart__discount` traegt **`color: rgb(255,255,255)`** bei 11 px — auf
     der hellen Karte ist das Weiss auf Weiss, und was man davon sieht, ist
     der Rest von Kantenglaettung: ein grauer Schemen. Genau das beschreibt
     „grau".
     ⛔ „Halb abgeschnitten" konnte ich NICHT nachstellen: bei erzwungener
     Anzeige ist `scrollWidth == clientWidth` (342 == 342) und
     `scrollHeight == clientHeight` (14 == 14) — nichts wird geklippt, und
     der Elternteil steht auf `overflow: visible`. Im gemessenen Korb ist
     die Zeile ausserdem `display: none` (vom Theme). Was hier gebaut wird,
     ist die belegte Haelfte: die Farbe. Der Umbruch bekommt trotzdem Luft,
     damit ein laengerer Satz nicht in eine Zeile gequetscht wird. */
  html body cart-drawer .cart__discount,
  html body .drawer--cart .cart__discount{
    color:#3A403C !important;
    font-size:11px !important;
    line-height:1.35 !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
    margin-top:2px !important;
  }
}

/* =======================================================================
   S304-MENUE-RECHTER-RAND-2409
   Enzo, seit der Maengelliste: der rechte Rand des Menues ist groesser als
   der linke. Zwei frueher Anlaeufe sind gescheitert — beide, weil ich das
   FALSCHE ELEMENT gemessen habe.

   ⛔ `document.querySelector('.drawer__body')` liefert die ERSTE Schublade
   der Seite, und das ist der Warenkorb (30 px hoch). Die Menue-Schublade ist
   eine andere. Erst ueber die Elternkette einer Menue-Blase gemessen:

       .drawer--header .drawer__body   offsetWidth 387   clientWidth 372

   15 px Unterschied = ein klassischer Rollbalken. `overflow-y: auto` bei
   Inhalt, der hoeher ist als der Kasten — der Balken nimmt sich die Spalte,
   und `width: 100%` des Kindes rechnet danach. Deshalb enden die Blasen
   15 px zu frueh.
   ⭐ Die Lehre: **ein Element per `querySelector` zu holen, das es mehrfach
   gibt, ist keine Messung.** Beim dritten Anlauf ueber die Elternkette.

   ⛔ EHRLICH DAZU: auf einem iPhone sind Rollbalken Ueberlagerungen und
   nehmen 0 px. Diese 15 px erklaeren also meinen Messstand, aber womoeglich
   nicht seinen. Die Regel ist trotzdem richtig — ein Rollbalken-Graben
   gehoert nicht in eine Schublade.
   ======================================================================= */
@layer s304 {
  html body .drawer--header .drawer__body{
    scrollbar-width:none !important;
    -ms-overflow-style:none !important; }
  html body .drawer--header .drawer__body::-webkit-scrollbar{
    width:0 !important; height:0 !important; display:none !important; }
}

/* =======================================================================
   S304-IC-STREIFEN-IN-DIE-FLUCHT-2409
   Enzos stehende Regel: "diese ganzen Kacheln sollen alle die gleichen
   Endmasse haben."

   GEMESSEN 24.09. abends bei 402 px: der INNER-CIRCLE-Streifen
   ("Miles · Free Pieces") lief **14 … 373**, waehrend auf derselben Seite
   Kopfleiste, Versandbalken, BRACELETS-Kasten, Filterzeile und das ganze
   Kachelraster auf **16 … 371** stehen. Zwei Pixel je Seite — dieselbe
   Abweichung, die heute Mittag schon die Kopfleiste hatte.
   ⛔ Der Wert stand an VIER Stellen in dieser Datei (2px/14px/14px, dann
   0/14/10, dann zweimal nur Polster). Deshalb nicht einzeln nachziehen,
   sondern hier einmal und zuletzt.
   ======================================================================= */
@layer s304 {
  html body .s304-ic-streifen.s304-ic-streifen{
    margin-left:16px !important;
    margin-right:16px !important; }
}

/* =======================================================================
   S304-KOPFLEISTE-UEBERALL-IN-DIE-FLUCHT-2409
   ⛔ Heute Mittag habe ich die Kopfleiste auf 16/371 gezogen — aber NUR
   unter `body.s304-kat-an`, also nur auf der Kategorie. Beim Durchklicken
   am Abend gemessen: auf der PRODUKTSEITE stand sie weiter auf **14 … 373**,
   waehrend Karte, Kaufzeile und der IC-Streifen dort 16 … 371 laufen.
   ⭐ Die Lehre, und sie ist heute zum zweiten Mal dieselbe: **eine Regel,
   die an einer Seitenklasse haengt, gilt nur fuer diese Seite.** Wer eine
   FLUCHT baut, baut sie fuer das Haus, nicht fuer ein Zimmer.
   ======================================================================= */
@layer s304 {
  html body:not(.template-index) .header__mobile.header__mobile{
    margin-left:16px !important;
    margin-right:16px !important; }
}

/* =======================================================================
   S304-FOOTER-IST-NICHT-SCHWARZ-2409
   Enzo 24.09. am iPhone: "auch hier auf der Homepage sieht man ja so eine
   leichte Kante zwischen Futter und darunter dann der Hintergrund."

   ⭐ ZUM ERSTEN MAL AN ECHTEN PIXELN GEMESSEN, nicht gerechnet: in seinem
   Screenshot (1206x2622, also Faktor 3) springt die Farbe
     Startseite  y=882  : rgb(13,22,22) -> rgb(0,0,0)
     Kategorie   y=1448 : rgb(13,22,22) -> rgb(0,0,0)   (am linken Rand)
   Das sind **20,1 Helligkeitsstufen auf einen Pixel** — genau seine Kante.

   ⛔ URSACHE: `footer.footer-sections` traegt `background: rgb(0,0,0)`.
   Die beiden Abschnitte DARIN tragen `#0B1616`. Wo die nicht hinreichen —
   an den seitlichen Raendern und in der Fuge zwischen ihnen — schaut das
   Schwarz des Traegers durch. Ich hatte das im DOM gesehen und als
   "wird ja vom Kind verdeckt" abgetan. **Es wird nicht ueberall verdeckt.**
   ⭐ Die Lehre: ein Elternteil, dessen Farbe "sowieso nicht zu sehen ist",
   ist trotzdem eine Farbe. Entweder sie stimmt, oder sie taucht irgendwo auf.
   ======================================================================= */
@layer s304 {
  html body footer.footer-sections,
  html body .footer-sections{
    background:#0B1616 !important; }
}

/* =======================================================================
   S304-DER-WEISSE-AUSLAUF-MUSS-WEG-2409
   Enzo 24.09. am iPhone: "wenn ich runter scrolle, sieht man auch hier, ist
   hier so ein weisser Bereich, weisst du? Muss das natuerlich auch nicht sein."

   ⭐⭐ ICH HABE IHN SELBST GEBAUT, am 23.09., gegen ein anderes Problem:
   `S304-KATFUSS-2309` legte ein `::after` auf `.collection__products` —
   **26 px hoch, volle Breite, Verlauf von durchsichtig nach REINWEISS.**
   Damals richtig: die Kachelwuerfe sammelten sich am Rasterende zu einem
   grauen Saum, und direkt darunter begann der schwarze Footer.
   ⛔ Heute falsch: der Saum ist weg (die Wuerfe sind seit dem Halo-Fix
   `0 4px 9px -4px`), und seit dem Auslauf ins Footer-Gruen malt dieser
   Streifen **Weiss genau dorthin, wo der Grund dunkel werden soll.**
   In Enzos Screenshot gemessen: ein Band von **398 bis 422 px**, das von
   Helligkeit 66 auf **255** laeuft und dann hart auf 47 abfaellt. 24 px —
   die 26 aus dieser Regel, minus die 4 px negativer Rand.
   ⭐ Die Lehre: **eine Abhilfe ueberlebt das Problem, gegen das sie gebaut
   wurde.** Wer einen Grund aendert, muss die alten Abhilfen mitnehmen.
   ======================================================================= */
@layer s304 {
  html body.s304-kat-an .collection__products::after{
    display:none !important; content:none !important;
    height:0 !important; background:none !important; }
  html body.s304-kat-an .collection__products{
    padding-bottom:0 !important; }
}

/* =======================================================================
   S304-DER-GRUND-GILT-UEBERALL-2409
   Enzo: "mich stoert halt dieser Beigeton im Hintergrund." Er hat kuehles
   Papier `#F3F5F6` und den Auslauf ins Footer-Gruen gewaehlt.

   ⛔⛔ GEMESSEN 24.09. abends, beim Durchklicken ALLER Seiten:
   den neuen Grund gab es nur auf **Kategorie und PDP**. Auf
     /pages/faq · /pages/about-us · /pages/inner-circle · /pages/kontakt ·
     /pages/versand-retouren · /pages/retoure · /pages/creator · 404
   stand weiter der **alte Sandton `rgb(244,241,237)`** — und kein Auslauf.
   ⭐ Der Beigeton, der ihn stoert, stoerte also auf acht weiteren Seiten
   weiter. **Ich hatte den Grund dort geaendert, wo ich gerade arbeitete,
   nicht dort, wo er gilt.**
   ⛔ Die Startseite bleibt ausgenommen — sie ist dunkelgruen und soll
   "gleich aussehen wie immer".
   ======================================================================= */
@layer s304 {
  /* ⭐ 26.09. — Enzo: *„man sieht zwischen dem Versanddings und dem Header
     so eine andere Farbe, so ein leichtes Grau. Macht das doch einfach
     einheitlich, auch oben bei der Notch und um den Header herum."*
     ⛔ Und der Kommentar ueber diesem Block sagte es die ganze Zeit selbst:
     *„Er hat kuehles Papier #F3F5F6 … gewaehlt."* — gesetzt war trotzdem
     **#FFFFFF**. Daher die Kante: `body` stand auf Papier, `html` auf Weiss.
     Jetzt beide auf seinem Wert. */
  html:not(.s304-grund-30):not(.s304-grund-t1) body:not(.template-index),
  html:not(.s304-grund-30):not(.s304-grund-t1) body:not(.template-index)::before{
    background-color:#F3F5F6 !important; }
  /* ⭐ 26.09. abends — DER PAPIERTON WAR DAS „GRAU", DAS ENZO DREIMAL MELDETE.
     Er nannte es an drei Stellen, und es war jedes Mal DIESE Flaeche:
       *„von Alle/Kette/Perlen bis hoch zum Header ist ein anderes Grau"* (Kategorie)
       *„hinter Inner Circle Fits ist so ein grauer Bereich"* (PDP)
       *„unten bei Zwischensumme und so ist so ein Grau, das will ich gar nicht"* (Korb)
     Gemessen war der Traeger jedes Mal `<html>` mit rgb(243,245,246).
     ⛔ #F3F5F6 war am 26.09. frueh bewusst gewaehlt („kuehles Papier"). Damals
     lagen weisse Karten auf einem leicht getoenten Grund — inzwischen ist fast
     jede Flaeche weiss, und der Ton wirkt nur noch als schmutziger Streifen
     zwischen ihnen. Enzo hat das dreimal unabhaengig benannt; das ist Beleg
     genug. Die Startseite bleibt ausgenommen (dort traegt der Hero). */
  html:not(.s304-grund-30):not(.s304-grund-t1):has(body:not(.template-index)){
    background-color:#FFFFFF !important; }

  /* Derselbe Auslauf wie auf Kategorie und PDP. `main` endet ueberall genau
     an der Footerkante — das ist auf allen Seitentypen dieselbe Bauweise. */
  html.s304-grund-34 body:not(.template-index):not(.s304-kat-an):not(.template-product) main#MainContent.main-content,
  html.s304-grund-34 body:not(.template-index):not(.s304-kat-an):not(.template-product) main#MainContent{
    background-image:linear-gradient(180deg,rgba(11,22,22,0) 0%,rgba(11,22,22,.004) 10%,rgba(11,22,22,.015) 20%,rgba(11,22,22,.026) 29%,rgba(11,22,22,.09) 40%,rgba(11,22,22,.16) 50%,rgba(11,22,22,.25) 59%,rgba(11,22,22,.40) 70%,rgba(11,22,22,.52) 78%,rgba(11,22,22,.64) 83%,rgba(11,22,22,.78) 89%,rgba(11,22,22,.90) 94%,rgba(11,22,22,.965) 97%,rgba(11,22,22,.995) 99%,rgba(11,22,22,1) 100%) !important;
    background-repeat:no-repeat !important;
    background-position:left bottom !important;
    background-size:100% 420px !important;
    background-attachment:scroll !important;
    background-color:transparent !important; }
}


/* ================= S304-MENUE-HAT-EINEN-EIGENEN-GRUND-2409 =================
   ⛔ GEMESSEN 24.09.2026, Enzos Befund: "burger drawer sieht nur gut aus
   wenn man auf der homepage ist, danach sieht es iwie komisch aus".
   Er hat recht, und die Ursache stand in der Farbkette:
     .drawer__inner = rgba(14,20,22,.44)  + blur(14px)   <- GLAS
     darunter Startseite = dunkles Hero-Bild             -> sieht gut aus
     darunter jede andere Seite = #F3F5F6 (hell)         -> MILCHIGES GRAU
   Das ist die Hausregel "Glas braucht etwas dahinter" - hier fehlte das
   Dahinter auf allen Seiten ausser der Startseite.
   Ein Menue darf nicht davon abhaengen, was zufaellig hinter ihm liegt.
   Deshalb bekommt es einen EIGENEN, undurchsichtigen Grund - ueberall
   derselbe. Farbe aus dem Haus: Footer-Traeger #0B1616, Dunkelgruen.
   Spezifitaet: die Glasregel steht auf html body[class][class] ... (0,4,3),
   wir brauchen mehr -> body[class][class][class] (0,5,3).          */
@layer s304 {
  html body[class][class][class] .drawer--header .drawer__inner,
  html body[class][class][class] mobile-menu .drawer__inner,
  html body[class][class][class] header-drawer .drawer__inner {
  /* S304-MENUE-ECHTES-GLAS-2809 - Enzo 28.09.: das Menue sei immer noch nicht transparent.
     URSACHE war nicht die Deckkraft, sondern ein ABGESCHALTETER Weichzeichner:
     das Blatt stand auf backdrop-filter:none und war damit eine Farbfolie, kein
     Glas. Deckkraft .58 -> .38 dazu, damit die weisse Schrift auf dem hellen
     Durchblick noch traegt. An drei Bildern gepruefet. */

    /* ⭐ 27.09. — FENSTERGLAS STATT GEMALTEM GRUND.
       Enzo: *„ich will die einzelnen Kacheln so transparent in der
       Fensterglas-Optik haben, wie von Scuffers … bei uns ist einfach grau und
       im Hintergrund ist weiss."*

       ⭐ WIE SCUFFERS ES MACHT (unsere eigene Messung, steht weiter oben in
       dieser Datei): `.sc-drawer` traegt `background: rgba(0,0,0,0)` — das
       Blatt selbst ist TRANSPARENT, die Unschaerfe macht der Unterleger.

       ⛔ HIER STAND: `background-color: #0F1A1B` DECKEND, plus zwei gemalte
       `radial-gradient`. Die Kapseln darauf sind Glas (`rgba(255,255,255,.46)`
       + `blur(32px)`) — aber Glas ueber einer deckenden Flaeche zeigt nur
       diese Flaeche. **Genau Enzos „einfach grau".** Dasselbe Muster wie im
       Warenkorb, wo die aeussere Huelle deckend war.

       ⇒ Das Blatt wird durchscheinend und bekommt selbst die Unschaerfe. Die
       Seite dahinter (Hero bzw. Kategorie) scheint hindurch, die Kapseln
       brechen sie ein zweites Mal — das ergibt die Tiefe, die Enzo „plastisch"
       nennt.
       ⛔ Die gemalten Verlaeufe muessen weg: ein gemalter Verlauf kann nicht
       durchscheinen, er UEBERDECKT. Er war der Grund, warum die Unschaerfe
       bisher nichts zu tun hatte. */
    background-color: rgba(255,255,255,.58) !important;
    -webkit-backdrop-filter: blur(34px) saturate(1.35) !important;
    backdrop-filter: blur(34px) saturate(1.35) !important;
    background-image:
      radial-gradient(118% 76% at 28% 14%, rgba(42,69,62,.42) 0%, rgba(42,69,62,0) 58%),
      radial-gradient(90% 60% at 92% 88%, rgba(27,46,44,.36) 0%, rgba(27,46,44,0) 62%),
      linear-gradient(#131F20 0%, #0C1517 100%) !important;
    backdrop-filter: blur(42px) saturate(1.3) !important;
    -webkit-backdrop-filter: blur(42px) saturate(1.3) !important;
  /* S304-KEIN-DUNKLER-VERLAUF-2809 - Enzo wollte helles Glas.
     ⛔ VIER ANLAEUFE SIND HIER GESCHEITERT, weil ich immer nur die
     background-COLOR geaendert habe. Diese Regel malt zusaetzlich einen
     radial-gradient - und ein HintergrundBILD liegt IMMER ueber der
     HintergrundFARBE. Die Farbe war seit dem ersten Anlauf richtig und
     nie zu sehen. Gemessen am Elementstapel des Pixels, nicht geraten. */
  background-image: none !important;
}
  /* Der Schleier hinter dem Menue darf auf hellen Seiten nicht verschwinden,
     sonst klebt das Menue kantenlos an der Seite. */
  html body[class][class][class] .drawer--header ~ .underlay,
  html body[class][class][class] .underlay.drawer__underlay {
    background: rgba(8, 14, 15, .42) !important;
  }
}
/* ================= ENDE S304-MENUE-HAT-EINEN-EIGENEN-GRUND-2409 ================= */


/* ================= S304-MENUEKACHEL-2409 =================
   Masse gemessen: Bubbles stehen 16 ... 371 (355 breit), Radius 99px,
   freier Raum zwischen letztem Punkt und Fuss = 205 px.
   Die Kachel nimmt dieselbe Flucht und bleibt unter 205 px hoch.
   Sie ist dunkel mit goldener Linie, damit sie NICHT wie eine siebte
   Bubble wirkt - Enzos Regel 6, "eigenstaendige Kaesten".
   ⛔ Unter 780 px Fensterhoehe gibt es den Platz nicht: dort bleibt sie
   weg, statt das Menue zum Scrollen zu zwingen. */
@layer s304 {
  html body .drawer--header .s304-mk {
    display: flex; flex-direction: column; align-items: center;
    margin: 16px 0 0; padding: 14px 16px 13px;
    border-radius: 22px; text-decoration: none;
    background:
      linear-gradient(rgba(255,255,255,.075), rgba(255,255,255,.028));
    border: 1px solid rgba(217,184,106,.40);
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.14),
      0 14px 30px -18px rgba(0,0,0,.85);
    -webkit-tap-highlight-color: transparent;
    transition: transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  }
  html body .drawer--header .s304-mk:active {
    transform: scale(.985);
    border-color: rgba(217,184,106,.62);
  }
  html body .drawer--header .s304-mk__fahne {
    font-size: 10px; letter-spacing: .16em; font-weight: 700;
    color: #D9B86A; text-transform: uppercase; line-height: 1;
  }
  html body .drawer--header .s304-mk__reihe {
    display: flex; align-items: center; justify-content: center;
    gap: 10px; margin: 12px 0 11px;
  }
  html body .drawer--header .s304-mk__b {
    width: 92px; height: 92px; border-radius: 16px; display: block;
    background-color: rgba(255,255,255,.90);
    background-size: contain; background-repeat: no-repeat; background-position: center;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 6px 16px -10px rgba(0,0,0,.7);
    opacity: 0; transition: opacity .45s ease;
  }
  html body .drawer--header .s304-mk--voll .s304-mk__b { opacity: 1; }
  html body .drawer--header .s304-mk__plus {
    font-size: 19px; font-weight: 300; color: rgba(255,255,255,.55);
    line-height: 1; opacity: 0; transition: opacity .45s ease .1s;
  }
  html body .drawer--header .s304-mk--voll .s304-mk__plus { opacity: 1; }
  html body .drawer--header .s304-mk__cta {
    font-size: 11.5px; letter-spacing: .1em; font-weight: 700;
    color: #FFFFFF; text-transform: uppercase; line-height: 1;
    display: inline-flex; align-items: center; gap: 7px;
  }
  html body .drawer--header .s304-mk__cta b {
    font-weight: 400; color: #D9B86A;
    transition: transform .22s ease;
  }
  html body .drawer--header .s304-mk:active .s304-mk__cta b { transform: translateX(3px); }

  /* Solange keine Bilder da sind, soll die Kachel nicht als leerer
     Kasten dastehen - dann klappt die Bildreihe zusammen. */
  html body .drawer--header .s304-mk:not(.s304-mk--voll) .s304-mk__reihe {
    height: 0; margin: 0; overflow: hidden;
  }
  html body .drawer--header .s304-mk:not(.s304-mk--voll) { padding: 13px 16px 12px; }
  html body .drawer--header .s304-mk:not(.s304-mk--voll) .s304-mk__fahne { margin-bottom: 9px; }

  @media (max-height: 780px) {
    html body .drawer--header .s304-mk { display: none !important; }
  }
}
/* ================= ENDE S304-MENUEKACHEL-2409 ================= */


/* ================= S304-DAS-GESCHENK-HAENGT-AN-SEINEM-KAUF-2409 =================
   Enzo 24.09.: "cart ist immer noch nicht gut" - zum dritten Mal.
   ⛔ GEMESSEN, was ihn stoert: drei Kaesten in EXAKT gleicher Form
   (alle links 31, alle 112 hoch, gleicher Grund, gleicher Wurf). Der
   Kunde zaehlt drei Artikel, obwohl er zwei gekauft hat. Nichts sagt,
   dass der dritte der GRATIS-Anhang des zweiten ist.
   ⛔ Und: die Erklaerung war DA, aber auf 0x0 gedrueckt - der Kasten
   "DEIN GESCHENK - WAEHLBAR" hatte Breite 0, sichtbar blieb nur ein
   nacktes "AENDERN", das nicht sagt, was es aendert.
   Was sich aendert:
     - der Anhang rueckt ein und bekommt eine Klammer nach oben
     - die Fahne wird eine ganze Zeile: links "DEIN GESCHENK", rechts AENDERN
     - er traegt einen goldenen Hauch statt desselben Grunds
   ⭐ Ungleiche Masse sind hier ABSICHT: sie sind die Aussage. Ueberall
   sonst gilt Enzos Regel 1 unveraendert. */
@layer s304 {
  html body .drawer--cart .cart__item.s304-gratiszeile {
    margin-left: 38px !important;
    margin-top: 2px !important;
    padding-top: 26px !important;
    position: relative !important;
    background-image:
      linear-gradient(rgba(255,255,255,.80), rgba(252,248,240,.92)) !important;
    border: 1px solid rgba(138,107,47,.22) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,.92),
      0 6px 16px -12px rgba(24,24,26,.38) !important;
  }
  /* Die Klammer, die den Anhang an die Zeile darueber bindet. */
  html body .drawer--cart .cart__item.s304-gratiszeile::before {
    content: '' !important;
    position: absolute !important;
    left: -15px !important; top: -10px !important;
    width: 13px !important; height: 34px !important;
    border-left: 2px solid rgba(138,107,47,.40) !important;
    border-bottom: 2px solid rgba(138,107,47,.40) !important;
    border-bottom-left-radius: 11px !important;
    border-top: 0 !important; border-right: 0 !important;
    pointer-events: none !important;
  }
  /* Die Fahne wird eine volle Zeile statt eines Knopfes in der Ecke. */
  html body .drawer--cart .s304-gratiszeile .s304-kb-ae {
    position: absolute !important;
    left: 12px !important; right: 12px !important; top: 7px !important;
    display: flex !important; align-items: center !important;
    justify-content: space-between !important;
    gap: 8px !important; height: 17px !important; width: auto !important;
  }
  html body .drawer--cart .s304-gratiszeile .s304-kb-ae > span {
    display: inline-block !important;
    width: auto !important; height: auto !important;
    max-width: none !important; overflow: visible !important;
    font-size: 9.5px !important; line-height: 1.05 !important;
    letter-spacing: .13em !important; font-weight: 800 !important;
    color: #8A6B2F !important; white-space: nowrap !important;
    text-transform: uppercase !important; opacity: 1 !important;
    clip: auto !important; clip-path: none !important;
    position: static !important;
  }
  html body .drawer--cart .s304-gratiszeile .s304-kb-ae > button {
    flex: 0 0 auto !important;
    font-size: 9.5px !important; letter-spacing: .1em !important;
    font-weight: 800 !important; text-transform: uppercase !important;
    color: #15130F !important;
    background: rgba(138,107,47,.13) !important;
    border: 1px solid rgba(138,107,47,.30) !important;
    border-radius: 99px !important;
    padding: 3px 10px !important; height: auto !important;
    line-height: 1.1 !important; text-decoration: none !important;
  }
  /* Das Bild des Anhangs darf kleiner sein - es ist eine Zugabe. */
  html body .drawer--cart .s304-gratiszeile .cart__item__image,
  html body .drawer--cart .s304-gratiszeile img {
    border-radius: 14px !important;
  }
}
/* ================= ENDE S304-DAS-GESCHENK-HAENGT-AN-SEINEM-KAUF-2409 ================= */


/* ===== S304-MENUEKACHEL-RAUS-2409 =====
   Enzo 23:44: "was hat dieses 2 fuer eins im burger menu zu suchen".
   Der Riegel steht zusaetzlich zum `return` im JS, damit eine Kachel aus
   einem alten Cache nicht doch auftaucht. */
@layer s304 {
  html body .drawer--header .s304-mk,
  html body mobile-menu .s304-mk { display: none !important; }
}
/* ===== ENDE S304-MENUEKACHEL-RAUS-2409 ===== */





/* ================= S304-MENUE-FEINSCHLIFF-2509 =================
   Enzo 25.09. 01:25: *„Also ich haette gerne das Burger Menue. Sieht gut
   aus so."* — also Feinschliff, kein Umbau.

   M1 *„diese Produktkacheln … ein bisschen weiter links noch, sodass es
       eingerueckt ist mit dem Logo"*
       ⭐ GEMESSEN: Logo x=16, Blase x=16 — die fluchten bereits. Was NICHT
       fluchtet, ist der TEXT in der Blase: er steht bei x=33, weil die
       Blase 16 px Innenpolster hat. Gemeint ist also die Schrift.
       Loesung: Blase auf x=8, Polster auf 8 -> Text landet bei **16**,
       genau unter dem Logo. Die Blase behaelt ihre runde Form.

   M2 *„unten Versand Retouren, FAQ … Das ist zu gross. Das nimmt zu viel
       Platz weg"* — gemessen: 40 px hoch, 12 px Schrift, Polster 0/20.
   M4 *„einfach nur Versand und Retouren, FAQ und so stehen ohne vielleicht
       so einen weissen Rand drumherum"* — gemessen: weisse Pille
       `rgba(255,255,255,.9)`. Die faellt weg; es bleibt reiner Text.
   M3 Sprache: ruecken in dieselbe Zeile statt eines eigenen Blocks. */
@layer s304 {
  /* --- M1: die Schrift unter das Logo --- */
  html body[class][class][class] .drawer--header .menu-304__primary-link {
    margin-left: -8px !important;
    margin-right: -8px !important;
    padding-left: 24px !important;
    padding-right: 24px !important;
  }

  /* --- M2 + M4: der Fuss wird leicht --- */
  html body[class][class][class] .drawer--header .menu-304__secondary-pinned-link {
    background: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
    border-radius: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 7px 0 !important;
    font-size: 11px !important;
    letter-spacing: .10em !important;
    color: rgba(244,246,245,.72) !important;
    text-align: left !important;
    justify-content: flex-start !important;
  }
  html body[class][class][class] .drawer--header .menu-304__secondary-pinned {
    gap: 0 !important;
  }
  /* Der Fussblock traegt keinen eigenen Kasten mehr. */
  html body[class][class][class] .drawer--header .mobile-menu__block--localization,
  html body[class][class][class] .drawer--header .drawer__foot,
  html body[class][class][class] .drawer--header .drawer__foot__scroll {
    background: none !important;
    background-color: transparent !important;
    box-shadow: none !important;
    border-radius: 0 !important;
  }
  html body[class][class][class] .drawer--header .drawer__foot { border-top: 1px solid rgba(244,246,245,.10) !important; }

  /* --- M3: Sprache neben die Symbole, nicht darunter --- */
  html body[class][class][class] .drawer--header .menu-304__footer-row {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding-top: 6px !important;
  }
  html body[class][class][class] .drawer--header .mobile-menu__block-localization,
  html body[class][class][class] .drawer--header form[id*="localization"] {
    margin: 0 !important;
  }
  html body[class][class][class] .drawer--header .menu-304__footer-social-link {
    width: 34px !important; height: 34px !important;
  }
}
/* ================= ENDE S304-MENUE-FEINSCHLIFF-2509 ================= */


/* ================= S304-KORB-NUR-WEISS-2509 =================
   Enzo 25.09. 01:25: *„Der Warenkorb … ich will den auch nur weiss haben,
   wie in unserem Artefakt und der ist doch jetzt auch zu unuebersichtlich …
   Der ist gar nicht so richtig vor den Abstaenden und so. Und auch die
   Produktkacheln, man erkennt die Bilder nicht."*

   Gemessen vorher: der Korbgrund war ein dreifacher Verlauf
   (`rgb(232,240,234)` gruenlich + `rgb(246,234,228)` warm + Hellgrau).
   Drei Farbtoene als Untergrund fuer weisse Zeilen — daher der unruhige
   Eindruck. Jetzt: **eine weisse Flaeche**, wie im Artefakt.

   ⭐ Und die Bilder: die Kaestchen sind 90x90, das Produkt darin stand mit
   `contain` klein in der Mitte. Auf weissem Grund verschwindet ein
   Freisteller darin fast. Loesung wie auf der Kategorie: der Bildkasten
   bekommt einen eigenen, leicht abgesetzten Grund, damit das Stueck eine
   Kante hat — und das Bild fuellt ihn aus, ohne beschnitten zu werden. */
@layer s304 {
  /* --- W1: eine weisse Flaeche statt dreier Verlaeufe --- */
  html body[class][class][class] .drawer--cart .drawer__inner {
    background: #FFFFFF !important;
    background-image: none !important;
    backdrop-filter: none !important;
  }
  html body[class][class][class] .drawer--cart .drawer__body,
  html body[class][class][class] .drawer--cart .drawer__foot,
  html body[class][class][class] .drawer--cart .cart-block {
    background: transparent !important;
    background-image: none !important;
  }

  /* --- W2: die Zeilen bekommen Ruhe und klare Abstaende --- */
  html body[class][class][class] .drawer--cart .cart__item {
    background: #FFFFFF !important;
    background-image: none !important;
    border: 1px solid rgba(18,18,20,.07) !important;
    border-radius: 16px !important;
    box-shadow: none !important;
    margin: 0 16px 8px !important;
    padding: 10px !important;
  }
  html body[class][class][class] .drawer--cart .cart__item.s304-gratiszeile {
    background: #FCFBF8 !important;
    border-color: rgba(138,107,47,.26) !important;
  }

  /* --- W3: das Produktbild bekommt eine Kante und fuellt den Kasten --- */
  html body[class][class][class] .drawer--cart .cart__item .cart__item__image,
  html body[class][class][class] .drawer--cart .cart__item figure,
  html body[class][class][class] .drawer--cart .cart__item .image-wrapper {
    background: #F4F5F6 !important;
    border-radius: 12px !important;
    overflow: hidden !important;
  }
  html body[class][class][class] .drawer--cart .cart__item img {
    object-fit: contain !important;
    width: 100% !important;
    height: 100% !important;
    transform: scale(1.06) !important;
  }
}
/* ================= ENDE S304-KORB-NUR-WEISS-2509 ================= */


/* ================= S304-KORB-ZWEI-EIGENE-FEHLER-2509 =================
   ⛔ ZWEI FEHLER, die ich im Block S304-KORB-NUR-WEISS-2509 selbst erzeugt
   und im Bild gesehen habe:

   1. `transform: scale(1.06)` zusammen mit `overflow:hidden` am Bildkasten
      schneidet das Armband LINKS an. Ich hatte vergroessert, damit der
      Freisteller den Kasten fuellt - und damit genau den Beschnitt erzeugt,
      den Enzo eine Stunde vorher auf der Kategorie kritisiert hat.
      ⭐ Derselbe Denkfehler zweimal an einem Abend: „fuellt besser aus"
      heisst nicht „darf ueberstehen".

   2. Mein pauschales `padding: 10px` fuer alle Zeilen hat der Geschenkzeile
      das obere Polster genommen, in dem die Fahne „DEIN GESCHENK —
      WAEHLBAR" sitzt. Sie liegt jetzt UEBER dem Produktnamen.
      ⭐ Wer eine Eigenschaft pauschal setzt, ueberschreibt auch die
      Ausnahmen, die es dafuer gab. */
@layer s304 {
  /* 1. Bild wieder ganz zeigen */
  html body[class][class][class][class] .drawer--cart .cart__item img {
    transform: none !important;
    object-fit: contain !important;
    object-position: center center !important;
  }
  /* 2. Die Geschenkzeile bekommt ihr Polster zurueck */
  html body[class][class][class][class] .drawer--cart .cart__item.s304-gratiszeile {
    padding-top: 28px !important;
  }
}
/* ================= ENDE S304-KORB-ZWEI-EIGENE-FEHLER-2509 ================= */


/* ================= S304-DIE-BLASEN-WURDEN-GEKAPPT-2509 =================
   Enzo 25.09.: *„Das Burger Menue ist jetzt abgeschnitten, links und rechts
   diese Kacheln."*

   ⛔ DAS HABE ICH SELBST VERURSACHT. Fuer M1 (Blasentext auf x=16, unter das
   Logo) habe ich die Blasen mit `margin: 4px -8px` nach aussen gezogen.
   GEMESSEN: Blase steht auf 8 … 394, ihr Behaelter `.menu-304__primary`
   aber auf 16 … 386 — **und der steht auf `overflow: auto`**. Also wird die
   Blase an beiden Seiten um genau die 8 px gekappt, die ich sie
   herausgezogen habe.

   ⭐ Die Lehre: **wer ein Element nach aussen zieht, um eine Flucht zu
   treffen, verschiebt das Problem an den Rand des Behaelters.** Der
   Behaelter muss mitwachsen — sonst schneidet er ab.

   ⛔ Warum nicht einfach `overflow: visible`? Weil dieses `auto` die Liste
   scrollbar macht, wenn das Menue nicht passt. Ein Ausstieg, den man erst
   liest, bevor man ihn wegnimmt.
   ⭐ Stattdessen: der Behaelter wird um dieselben 8 px breiter und bekommt
   sie als Innenpolster zurueck. Netto verschiebt sich nichts, aber die
   Blase liegt jetzt INNEN. */
@layer s304 {
  html body[class][class][class] .drawer--header .menu-304__primary {
    margin-left: -8px !important;
    margin-right: -8px !important;
    padding-left: 8px !important;
    padding-right: 8px !important;
  }
}
/* ================= ENDE S304-DIE-BLASEN-WURDEN-GEKAPPT-2509 ================= */


/* ================= S304-KORB-DECKT-DIE-SEITE-AB-2509 =================
   R12 — Enzo 25.09.: *„wenn ich Sachen in den Warenkorb hatte, dann soll man
   nicht im Hintergrund die PDP sehen. Und das ist ja auch nicht mehr so
   transparent, wie ich wollte."*
   ⛔ GEMESSEN: sechs (!) Regeln kaempfen um `.underlay.drawer__underlay` —
   .28/.20/.42/.10/.22 und zuletzt meine `rgba(8,14,15,.42)` ohne Weichzeichner.
   Bei 42 % Deckung liest man die Produktseite dahinter muehelos mit.
   ⭐ Jetzt EINE Regel, die alle schlaegt: deutlich dunkler und mit
   Weichzeichner, damit die Seite dahinter zur Flaeche wird.

   R10 — *„Mach ‚Gratisversand ab 80 € · noch nichts im Korb'. Also so ein
   Punkt in der Mitte."* Der Punkt kommt aus dem JS; hier bekommt er Luft. */
@layer s304 {
  /* ⛔⛔ HIER STAND `rgba(6,11,12,.78)` — EIN DUNKLER SCHLEIER.
     Enzos Satz vom 25.09. hatte ZWEI Teile, ich habe nur den ersten gehoert:
        1. *„man soll nicht im Hintergrund die PDP sehen"*  -> umgesetzt
        2. *„und das ist ja auch nicht mehr so transparent, wie ich wollte"*
           -> ignoriert.
     ⭐ Und meine EIGENE Analyse vom 23.09., 16:43 sagte die Ursache woertlich:
        *„hinter dem Glasblatt liegt ein dunkler Schleier plus blur.
          **Weisses Glas ueber einem dunklen Schleier IST Grau.**"*
     Genau dieses Grau meint er am 25.09. mit *„ich will nicht dieses Grau"*.

     ⭐ SEINE ENTSCHEIDUNG VOM 23.09., 16:42 — Variante **G3**, mit seiner
     eigenen Verbesserung:
        *„das ist doch sogar richtig cool, wenn der Hero durch scheint …
          wenn man auf einer Kategorieseite ist, scheint halt die Kategorieseite
          durch. **Dann ist halt hinten einfach nur so ein bisschen weiss.**"*

     ⇒ Der Schleier wird **hell**, nicht dunkel: die Seite dahinter wird zur
     ruhigen Flaeche (nicht mehr mitlesbar), bleibt aber sichtbar.
     Ein heller Schleier kann kein Grau erzeugen — Weiss ueber Buntem bleibt
     hell. Der Weichzeichner macht die Arbeit, nicht die Dunkelheit. */
  html body[class][class][class][class] .underlay.drawer__underlay,
  html body[class][class][class][class] .drawer__underlay,
  html body[class][class][class][class] .underlay {
  /* S304-UNTERLEGER-LAESST-DURCH-2809 - Enzo 28.09.
     Das Menueblatt bekam echtes Glas, sah aber immer noch aus wie eine
     Folie. Ursache ist DIESE Schicht: sie liegt zwischen Seite und Blatt
     und hat mit blur(44px) und 40% Weiss alles dahinter schon zu Brei
     gemacht. Das Blatt konnte nur noch den Brei zeigen.
     ⭐ Zwei Glasschichten uebereinander multiplizieren sich - wer die
     obere klarer macht, muss die untere mitmessen. */

    background: rgba(250,249,247,.16) !important;
    backdrop-filter: blur(10px) saturate(1.25) !important;
    -webkit-backdrop-filter: blur(10px) saturate(1.25) !important;
  }
  html body .s304-vpunkt {
    display: inline-block !important;
    margin: 0 7px !important;
    opacity: .5 !important;
  }
}
/* ================= ENDE S304-KORB-DECKT-DIE-SEITE-AB-2509 ================= */


/* ================= S304-GLAS-KOERNT-BEIM-SCROLLEN-2509 =================
   R2 — Enzo 25.09.: *„Unter dem Header … wenn man ganz schnell hochscrollt,
   sind da sogar diese koernigen Sachen, was wir in dem einen Artefakt hatten."*

   ⛔ GEMESSEN: im Code gibt es KEINEN Korn-Effekt (`feTurbulence`, `noise`:
   null Treffer). Was es gibt, sind **acht Elemente mit `backdrop-filter`**,
   darunter `.cart-bar` mit `blur(14px)` in `position: fixed`.
   ⭐ Ein Weichzeichner muss bei jedem Scrollschritt neu ueber den Inhalt
   darunter gerechnet werden. Beim schnellen Scrollen kommt der Browser nicht
   nach und zeigt Zwischenstufen — das sieht aus wie Korn. Genau das, was
   Enzo beschreibt: es tritt nur beim SCHNELLEN Scrollen auf.

   ⭐ DAS IST HEUTE DER VIERTE FALL DERSELBEN SACHE. Glas war schon schuld am
   milchigen Menue, an der durchscheinenden Bildschicht und an der
   Kopfleiste. Hier kostet es zusaetzlich Rechenzeit.
   **Wo eine Flaeche fest ueber dem Inhalt liegt, gehoert ein deckender
   Grund hin — kein Weichzeichner.** */
@layer s304 {
  html body[class][class][class][class] .cart-bar,
  html body[class][class][class][class] .menu-304__secondary-pinned-link,
  html body[class][class][class][class] .s304-community__name {
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  html body[class][class][class][class] .cart-bar {
    background: #0F1A1B !important;
  }
  html body[class][class][class][class] .s304-community__name {
    background: rgba(12,18,18,.82) !important;
  }
}
/* ================= ENDE S304-GLAS-KOERNT-BEIM-SCROLLEN-2509 ================= */


/* ================= S304-DER-LETZTE-WARMSTICH-2509 =================
   Enzo 25.09. 03:01: *„oben ist es immer noch beige."*
   ⭐ AN SEINEM SCREENSHOT GEMESSEN: ein Band bei CSS-y 140–151,
   `rgb(251,251,249)` — **R−B = 2**. In meiner eigenen Messung dasselbe Band
   direkt unter der Kopfleiste: `rgb(252,251,250)`, ebenfalls R−B = 2.
   Also noch da, aber nur noch zwei Helligkeitsstufen warm (vorher 3).

   ⛔ Was es NICHT ist, obwohl es danach aussah: der rosa Fehlerkasten
   `.cart__errors__inner` (`rgb(248,215,218)`) liegt zwar genau dort — aber
   der Zeigertest trifft ein Bild darueber, er ist verdeckt. **Eine Farbe,
   die an der richtigen Stelle liegt, ist noch keine Ursache.**

   ⭐ Es bleibt der Schatten der Kopfleiste. Er stand schon auf
   `rgba(18,18,20)` — fast neutral, aber eben nur fast. Hier exakt
   neutralgrau, und dazu der ganze Kopfbereich auf reines Weiss. */
@layer s304 {
  html body[class][class][class][class][class] .header__mobile,
  html body[class][class][class][class][class] .theme__header,
  html body[class][class][class][class][class] .header__wrapper {
    box-shadow: 0 10px 24px -18px rgba(20,20,20,.5) !important;
  }
  /* ⛔ 26.09.: `.header-sections` ist HIER HERAUSGENOMMEN und steht jetzt an
     genau einer Stelle weiter unten. Vorher gab es DREI Regeln fuer dieselbe
     Eigenschaft — mit 2, 6 und 9 Klassen, alle von mir, jede gegen die
     vorherige gesetzt. Auf der Startseite gewann diese hier und machte den
     Streifen weiss; dadurch verschwand der runde Kopfkasten optisch, weil
     Kasten und Untergrund dieselbe Farbe trugen (Enzo: „der Header ist jetzt
     wieder durchgaengig"). **Eine Eigenschaft gehoert an EINE Stelle.** */
  html body[class][class][class][class][class] .theme__header,
  html body[class][class][class][class][class] .header__wrapper {
    background-color: #FFFFFF !important;
  }
  /* Der Fehlerkasten hat ohne Fehler nichts zu melden. */
  html body[class][class][class][class][class] .cart__errors:not(.is-visible) .cart__errors__inner,
  html body[class][class][class][class][class] .cart__errors[hidden] .cart__errors__inner {
    display: none !important;
  }
}
/* ================= ENDE S304-DER-LETZTE-WARMSTICH-2509 ================= */


/* ================= S304-KORB-AUF-DIE-GO-WERTE-2509 =============================
   Enzo 25.09.: *„was hat Enzo über den Warenkorb gesagt und warum beanstandete
   er das die ganze Zeit?"* — hier die Antwort als Code.

   ⭐ ER HAT AM 19.09. ZU EINEM BLATT „GO" GESAGT: „Der Warenkorb ohne Kauf",
   Artefakt `A4u9V9dvhJQ99WbYT34Axh`. Dessen CSS traegt den Vermerk
   *„am 19.09.2026 an der Live-Seite ausgelesen, nicht geschaetzt."*
       --RADIUS 0px  ·  Gold #c8a96e  ·  Schwarz #0a0a0a
       Zeile: Haarlinie unten, KEIN Kasten   ·  Bild 66x66 `contain`
       Versandbalken 3 px, Fuellung Gold     ·  Kasse Radius 0, uppercase

   ⛔ GEBAUT WAR ABER (gemessen 25.09., Korb mit einem Artikel):
       Radius 99 **neunmal**, dazu 22 / 18 / 16 / 14 / 12
       Gold-Treffer im ganzen Korb: **0**   ·   Bild 90x90 auf grauem Grund
       Zeile als weisser Kasten mit Radius 16 und Schatten
       Kasse-Knopf Radius 99, kein uppercase
   **Jede einzelne Entscheidung widerspricht der Freigabe.** Das ist der Grund
   fuer seine Beanstandungen — kein Geschmacksstreit.

   ⭐ SPEZIFITAET, gemessen statt geraten: die Korb-Altregeln dieser Datei
   stehen auf `html body[class][class][class] .drawer--cart .cart__item`
   = **(0,5,2)**. Ein erster Versuch mit (0,3,2) griff nur bei den Regeln, wo
   es keine Altregel gab — Bild und Balken wurden richtig, Radius und Grund
   nicht. Deshalb hier durchgehend **vier** `[class]` = (0,6,2) aufwaerts.

   ⭐ DIE LEHRE: ein „so ist es gut" von Enzo ist ein MASSSTAB, kein
   Stimmungsbild. Hier steht keine Zahl, die ich mir ausgedacht habe.
   Sicherung: `/root/SICHERUNG-s304-haus-vor-korb-go-werte-2509.css`.
   ============================================================================== */
@layer s304 {

  html body .drawer--cart {
    --go-gold:      #c8a96e;
    --go-gold-tief: #a98b52;
    --go-schwarz:   #0a0a0a;
    --go-g100:#f5f5f5; --go-g200:#e8e8e8; --go-g300:#d0d0d0;
    --go-g400:#999999; --go-g600:#555555; --go-g800:#222222;
  }

  /* 1 · ⛔ HIER STAND `border-radius: 0` AUF ALLES.
         Enzo 25.09., nachdem er es gesehen hat: *„ich habe auch nie mir
         vorgestellt, dass der Warenkorb so aussieht … bei uns war im Warenkorb
         auch alles so mit abgerundeten Ecken."*
         ⭐ **Mein Kurzschluss:** sein Go-Blatt trug `--RADIUS 0px` als
         THEME-VARIABLE. Ich habe daraus einen Gestaltungswunsch gemacht.
         Eine Variable in einem Blatt ist keine Ansage.
         ⇒ Rundung zurueck, bis er einen Entwurf waehlt
         (`6hnAhQ3j7RoPuABe1Rp8tQ`, Fassungen A/B/C).
         Was aus dem Blatt BLEIBT und weiter unten steht: Gold als Akzent,
         Bild 66, Zeile als Haarlinie statt Kasten, Preis rechts. */
  html body[class][class][class][class] .drawer--cart .drawer__inner,
  html body[class][class][class][class] .drawer--cart .drawer__body { border-radius: 20px !important; }
  html body[class][class][class][class] .drawer--cart .cart__item__image,
  html body[class][class][class][class] .drawer--cart .cart__item__image img { border-radius: 12px !important; }
  html body[class][class][class][class] .drawer--cart .s304-paar,
  html body[class][class][class][class] .drawer--cart .ic-cross-sell .s304-paar { border-radius: 14px !important; }
  html body[class][class][class][class] .drawer--cart [name="checkout"],
  html body[class][class][class][class] .drawer--cart .btn--checkout { border-radius: 14px !important; }

  /* 2 · die Zeile ist kein Kasten, sondern eine Haarlinie */
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item {
    background: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
    border: 0 !important;
    border-bottom: 1px solid var(--go-g200) !important;
    padding: 0 0 13px !important;
    margin: 0 0 13px !important;
    display: flex !important;
    gap: 12px !important;
    align-items: flex-start !important;
    min-height: 0 !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item:last-of-type { border-bottom: 0 !important; }

  /* 3 · das Bild ist 66 x 66 und `contain`, ohne eigenen Grund */
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__image,
  html body[class][class][class][class] .drawer--cart .cart__item figure,
  html body[class][class][class][class] .drawer--cart .cart__item .image-wrapper {
    width: 66px !important; height: 66px !important;
    min-width: 66px !important; max-width: 66px !important;
    flex: 0 0 66px !important;
    background: transparent !important;
    background-image: none !important;
    padding: 0 !important; margin: 0 !important;
    overflow: hidden !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__image img,
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__image a {
    width: 100% !important; height: 100% !important;
    object-fit: contain !important;
    transform: none !important;
    display: block !important;
  }

  /* 4 · der Versandbalken: 3 px, Fuellung in Gold */
  html body[class][class][class][class] .drawer--cart .ic-shipping-bar {
    height: 3px !important;
    background: var(--go-g200) !important;
    border-radius: 0 !important;
    overflow: hidden !important;
  }
  html body[class][class][class][class] .drawer--cart .ic-shipping-bar .ic-shipping-bar__fill {
    height: 3px !important;
    background: linear-gradient(90deg, var(--go-gold), var(--go-gold-tief)) !important;
    border-radius: 0 !important;
  }

  /* 5 · der Kasse-Knopf: eckig, schwarz, uppercase */
  html body[class][class][class][class] .drawer--cart [name="checkout"],
  html body[class][class][class][class] .drawer--cart .btn--checkout,
  html body[class][class][class][class] .drawer--cart button[type="submit"] {
    border-radius: 0 !important;
    background: var(--go-schwarz) !important;
    color: #ffffff !important;
    font-size: 12px !important;
    letter-spacing: .055em !important;
    text-transform: uppercase !important;
    padding: 15px !important;
    font-weight: 700 !important;
    border-radius: 14px !important;
  }

  /* 6 · Gold ist der Akzent */
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__price ins,
  html body[class][class][class][class] .drawer--cart .cart__item .price--highlight,
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile .cart__item__title,
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__heading {
    color: var(--go-gold) !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile.s304-gratiszeile {
    border: 1px solid var(--go-gold) !important;
    background: #fdfbf7 !important;
    padding: 11px 13px !important;
    border-radius: 14px !important;
  }

  /* 7 · die Paar-Kacheln ohne Kasten, nur mit feiner Kante */
  html body[class][class][class][class] .drawer--cart .s304-paar.s304-paar {
    background: transparent !important;
    box-shadow: none !important;
    border: 1px solid var(--go-g200) !important;
    border-radius: 14px !important;
  }

  /* 8 · Zwischensumme: uppercase, gesperrt */
  html body[class][class][class][class] .drawer--cart .cart__price__holder {
    font-weight: 700 !important;
    font-size: 12.5px !important;
    letter-spacing: .06em !important;
    text-transform: uppercase !important;
    border-top: 1px solid var(--go-g200) !important;
  }
}
/* ================= ENDE S304-KORB-AUF-DIE-GO-WERTE-2509 ======================= */

/* ================= S304-KORB-G3-DER-TRANSPARENZLOOK-2509 ======================
   Enzo 25.09.: *„ich will nicht dieses Grau, dieses Gruen im Hintergrund haben,
   nur halt **diesen Transparenzlook, wie wir den schon mal hatten**."*

   ⭐ GEFUNDEN — er hat ihn am **23.09. um 16:42** gewaehlt. Variante **G3
   („farbiges Glas")** aus dem Blatt `N25SWLEEUE5ws5fwfQna4J`, und er hat sie
   selbst verbessert:
       *„das ist doch sogar richtig cool, **wenn der Hero durch scheint** …
         wenn man auf einer Kategorieseite ist, scheint halt die Kategorieseite
         durch. **Dann ist halt hinten einfach nur so ein bisschen weiss.**"*
   ⇒ Kein gemalter Verlauf, kein Gruen, kein Grau — **die echte Seite dahinter**,
   hell verschleiert.

   ⛔ WARUM ES VERSCHWAND: am 25.09. habe ich den Unterleger auf
   `rgba(6,11,12,.78)` gesetzt. Seine Bitte hatte zwei Teile und ich hoerte nur
   den ersten (*„man soll nicht die PDP sehen"*), nicht den zweiten
   (*„und das ist ja auch nicht mehr so transparent, wie ich wollte"*).
   Der dunkle Schleier ist behoben (siehe `S304-KORB-DECKT-DIE-SEITE-AB-2509`).

   ⭐ Aus derselben Runde, 16:37, und damit weiter gueltig:
     · **Kaesten bleiben** — W2 ohne Kaesten war vom Tisch
     · **Trust-Zeile A**, 32 px statt 44, **Eckradius 11 statt rund**
       (*„die runden Bubbles sind sehr vibe-coded"*)
   ============================================================================ */
@layer s304 {

  /* 1 · das Korbblatt scheint durch — die Seite dahinter bleibt sichtbar,
         aber als ruhige helle Flaeche */
  html body[class][class][class][class] .drawer--cart .drawer__inner,
  html body[class][class][class][class] .drawer--cart .drawer__inner.drawer__inner {
    /* ac2 01.10. Enzo (S8): kein Grau. Glas bleibt (sein Wunsch 23.09.), aber weisser: 58 -> 86 %. */
    background: rgba(255, 255, 255, .94) !important; /* ac2 02.10. A10 (Enzo waehlt B): 86 -> 94 % */
    background-image: none !important;
    -webkit-backdrop-filter: blur(42px) saturate(1.3) !important;
    backdrop-filter: blur(42px) saturate(1.3) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.9),
                0 26px 60px -20px rgba(16,16,18,.42) !important;
  }
  html body[class][class][class][class] .drawer--cart .drawer__body,
  html body[class][class][class][class] .drawer--cart .drawer__foot,
  html body[class][class][class][class] .drawer--cart .cart-block {
    background: transparent !important;
    background-image: none !important;
  }

  /* 2 · die Karten darin bleiben Kaesten (seine Entscheidung vom 23.09.),
         nur etwas fester als das Blatt, damit sie sich abheben */
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item,
  html body[class][class][class][class] .drawer--cart .s304-paar.s304-paar {
    background: rgba(255, 255, 255, .82) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.95),
                inset 0 0 0 1px rgba(30,24,18,.06),
                0 10px 24px -18px rgba(30,24,18,.35) !important;
  }

  /* 3 · Trust-Zeile A: 32 px hoch, Eckradius 11 — keine Pillen */
  html body[class][class][class][class] .drawer--cart .s304-trust,
  html body[class][class][class][class] .drawer--cart [class*="trust"] > span,
  html body[class][class][class][class] .drawer--cart [class*="usp"] > span {
    height: 32px !important;
    border-radius: 11px !important;
  }
}
/* ================= ENDE S304-KORB-G3-DER-TRANSPARENZLOOK-2509 ================= */

/* ================= S304-DER-PREIS-RAGTE-RAUS-2509 =============================
   Am Screenshot gesehen: „55 €" wurde rechts angeschnitten. Ursache ist mein
   eigener Go-Block: er gab der Zeile `padding: 0 0 13px` — also **kein
   seitliches Polster** — und dem Preis `margin-left:auto`. Damit endet der
   Preis genau an der Kastenkante.
   ⭐ Beide Seiten bekommen 13 px, wie im Blatt (`.kb-karte` hat dort Polster
   ueber den Behaelter). */
@layer s304 {
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item {
    padding-left: 13px !important;
    padding-right: 13px !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__content__right {
    padding-right: 0 !important;
  }
}
/* ================= ENDE S304-DER-PREIS-RAGTE-RAUS-2509 ======================= */

/* ================= S304-KORB-AUFGERAEUMT-WIE-LIVE-2509 ========================
   Enzo 25.09.: *„lass uns den Hintergrund noch transparenter machen … unten
   soll ja nicht ‚30 Euro bis Gratisversand‘ stehen, mach mal unten alles ein
   bisschen cleaner. Also da soll einfach nur so wie wir das aktuell im
   Live-Theme haben, aber halt ein bisschen aufgeraeumter. Und die erste
   Produktkarte muss natuerlich auch abgerundet sein."*

   ⭐ LIVE ANGESEHEN (Korb mit einem Artikel, 402 px). Der Fuss dort:
       ZWISCHENSUMME            50 €
       VERSAND                  4,99 €
       30,00 € bis Gratisversand          <- steht OBEN schon im Balken
       VORAUSSICHTLICHE LIEFERUNG   28. Sep – 29. Sep
   Die dritte Zeile ist eine **Doppelung**: „Noch 30 € bis Gratisversand" steht
   bereits im Versandbalken ganz oben. Genau die meint er.
   ⭐ Und die Produktkarte ist live eine **abgerundete Karte mit feinem Rand** —
   bei uns war sie seit meinem Go-Block eine randlose Haarlinie.
   ============================================================================ */
@layer s304 {

  /* 1 · die doppelte Versandzeile im Fuss faellt weg.
         ⛔ Mein erster Versuch griff ins Leere — ich hatte auf `[class*="gratis"]`
         geraten. Gemessen heisst sie **`.s304-fuss__z.s304-fuss__hin`** mit
         `span.s304-fuss__l` darin. Der Text „Noch 30 € bis Gratisversand"
         steht oben im Versandbalken (`.free-shipping__default-message`) —
         genau die Doppelung, die Enzo meint. */
  html body[class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z.s304-fuss__hin,
  html body[class][class][class][class] .drawer--cart .s304-fuss__hin {
    display: none !important;
  }

  /* 2 · der Fuss rueckt zusammen */
  html body[class][class][class][class] .drawer--cart .drawer__foot {
    padding-top: 10px !important;
    padding-bottom: 12px !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__foot__inner > * + * { margin-top: 4px !important; }
  html body[class][class][class][class] .drawer--cart .cart__price__holder { padding-bottom: 2px !important; }

  /* 3 · die erste Produktkarte ist wieder eine Karte — abgerundet, mit Rand,
         wie live. Der Grund bleibt durchscheinend, damit der Glaslook haelt. */
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item {
    /* ⭐ 27.09. — ZURUECK AUF ENZOS FREIGABE V2 (23.09., 16:02).
       Gemessen war r18 / Deckkraft .62; abgenommen sind **r22 / .82**.
       ⛔ Die Abweichung ist Drift, keine Entscheidung: am 25.09. las ich
       `--RADIUS 0px` aus einem Theme-Variablenblock als „alles eckig" und baute
       den halben Korb um. Enzo korrigierte (*„bei uns war alles mit
       abgerundeten Ecken"*), aber mein Rueckbau traf nur die auffaelligen
       Stellen — die Detailwerte habe ich nie gegen das Freigabe-Blatt geprueft.
       **Nach einem Rueckbau gegen die Freigabe messen, nicht gegen das
       Gefuehl, dass es wieder passt.** */
    border-radius: 22px !important;
    border: 1px solid rgba(30,24,18,.09) !important;
    background: rgba(255,255,255,.82) !important;
    padding: 12px 13px !important;
    margin: 0 0 10px !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.95),
                0 10px 24px -18px rgba(30,24,18,.35) !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item:last-of-type { border-bottom: 1px solid rgba(30,24,18,.09) !important; }

  /* 4 · der tote Raum zwischen Angebot und Fuss */
  html body[class][class][class][class] .drawer--cart .drawer__body { padding-bottom: 6px !important; }
  html body[class][class][class][class] .drawer--cart .ic-cross-sell { margin-bottom: 0 !important; padding-bottom: 6px !important; }
}
/* ================= ENDE S304-KORB-AUFGERAEUMT-WIE-LIVE-2509 ================== */

/* ================= S304-FUSS-BUENDIG-UND-GESCHENKFAHNE-2509 ===================
   Enzo 25.09.: *„das muss besser eingerueckt werden, dass man bei Zwischensumme
   hat und dann Versand. Das muss immer linksbuendig, rechtsbuendig sein."*

   ⭐ GEMESSEN im Korb mit zwei Artikeln (402 px):
       Zwischensumme    links **12**   Wert rechts 12
       Versand          links **28**   Wert rechts 28
       Lieferung        links **28**   Wert rechts 28
   Die Zwischensumme steht 16 px weiter aussen als die Zeilen darunter.
   ⇒ alle auf **12/12**, Label linksbuendig, Wert rechtsbuendig.

   ⛔⛔ UND EIN DEFEKT, den ich selbst erzeugt habe — **zum zweiten Mal
   derselbe.** Mein Block `S304-KORB-AUFGERAEUMT-WIE-LIVE` gab der Zeile
   `padding: 12px 13px`. Die Geschenkzeile traegt oben eine Fahne
   („DEIN GESCHENK — WAEHLBAR"), die absolut sitzt und Platz braucht — sie lag
   danach **ueber dem Produktnamen**. Genau das war schon am 25.09. frueh
   passiert („ein pauschales padding:10px nahm der Geschenk-Fahne ihren Platz").
   ⇒ Die Geschenkzeile bekommt ihr Polster zurueck.
   ============================================================================ */
@layer s304 {

  /* 1 · alle Fusszeilen auf dieselbe Flucht.
         ⛔ MEIN ERSTER VERSUCH GAB DAS POLSTER ZWEIMAL: `.s304-fuss` UND
         `.s304-fuss__z` bekamen je 12 px — gemessen landete der Text dann bei
         **36**, waehrend die Zwischensumme bei **24** stand.
         ⭐ Die Kette, gemessen:
             .cart__price__holder   links 12 + padL 12  ->  Inhalt **24**
             .s304-fuss             links 12 + padL 12
               .s304-fuss__z          + padL 12         ->  Inhalt **36**
         ⇒ Der Behaelter `.s304-fuss` bekommt **0**, nur die Zeile 12.
         Dann stehen beide bei 24. */
  html body[class][class][class][class] .drawer--cart .cart__price__holder {
    padding-left: 12px !important;
    padding-right: 12px !important;
    margin-left: 0 !important; margin-right: 0 !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-fuss {
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: 0 !important; margin-right: 0 !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-fuss__z {
    padding-left: 12px !important;
    padding-right: 12px !important;
    margin-left: 0 !important; margin-right: 0 !important;
  }
  /* der Wert rechts — `space-between` reicht nicht, wenn ein drittes Kind
     dazwischensteht; `margin-left:auto` schiebt ihn zuverlaessig an die Kante */
  /* ⛔ `margin-left:auto` am Wert allein reichte nicht — gemessen stand
     „50 €" weiter bei links 190 statt an der rechten Kante. Grund: der Wert
     ist **kein direktes Flex-Kind** von `.cart__price__holder`, er steckt in
     einem Wrapper; ein `auto`-Rand wirkt dort nicht auf die Flex-Verteilung.
     ⭐ Also schiebt das LABEL: `flex:1` an `.cart__total__label` drueckt alles
     Weitere an die rechte Kante. */
  /* ⛔ ZWEI FEHLVERSUCHE, beide am Geraet gemessen:
        `margin-left:auto` am Wert    -> blieb bei links 190
        `flex:1` am Label             -> blieb bei links 190
     ⭐ DIE URSACHE, endlich gemessen: `.cart__price__holder` hat **sieben**
     Kinder, sechs davon `display:none`. Das einzige sichtbare ist
     **`div.cart__total`** — und darin stecken Label UND Wert zusammen.
     Dieser Kasten war **205 px breit statt 378**, deshalb endete „50 €" in
     der Mitte. Nicht der Wert war falsch ausgerichtet, sondern sein Behaelter
     zu schmal.
     ⇒ `.cart__total` auf die volle Breite, innen space-between. */
  /* ⛔ DRITTER FEHLVERSUCH, auch gemessen: `> .cart__total` traf **beide**
     Kaesten — auch `.cart__total.s304-versandzeile`, die auf `display:none`
     stand. Mein `display:flex` hat sie **sichtbar gemacht**, und plotzlich
     stand „zzgl. Versand · gratis ab 80 €" doppelt im Fuss.
     ⭐ Also nur den sichtbaren Kasten, und `display` gar nicht anfassen:
     `:not(.s304-versandzeile)` und kein `display`-Zwang. */
  html body[class][class][class][class] .drawer--cart .cart__price__holder > .cart__total:not(.s304-versandzeile) {
    flex: 1 1 100% !important;
    width: 100% !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 10px !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__total__label {
    text-align: left !important;
    flex: 0 1 auto !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__total__price {
    text-align: right !important;
    white-space: nowrap !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-fuss__z {
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 10px !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-fuss__l { text-align: left !important; }
  html body[class][class][class][class] .drawer--cart .s304-fuss__w { text-align: right !important; margin-left: auto !important; }
  html body[class][class][class][class] .drawer--cart .cart__price__holder { display: flex !important;
    align-items: baseline !important; justify-content: space-between !important; }

  /* 2 · die Geschenkzeile braucht oben Platz fuer ihre Fahne */
  html body[class][class][class][class] .drawer--cart .cart__item.s304-gratiszeile,
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item.s304-gratiszeile {
    padding-top: 30px !important;
  }
}
/* ================= ENDE S304-FUSS-BUENDIG-UND-GESCHENKFAHNE-2509 ============= */

/* ================= S304-KORB-ENZOS-SECHS-2509 =================================
   Enzo 25.09., woertlich und der Reihe nach:
     1 *„mach nicht ‚1 kaufen 1 geschenkt‘ unten hin, sondern ‚das koennte dir
        auch gefallen‘"*
     2 *„macht nicht diese Pfeiltasten dahinter, macht darunter einfach so eine
        kleine Swipe-Bar, dass man checkt, okay, man kann nach rechts"*
     3 *„erstmal will ich gar nicht diese komische goldene Farbe"*
     4 *„die Schriften sind unterschiedlich gross, das soll ja auch nicht bei
        Versand und so weiter"*
     5 *„die Produktkacheln … sollen nicht die ganze Breite einhalten"*
     6 *„ich will gar nicht, dass man aendern kann … einfach nur ‚dein Geschenk‘
        oder man kann entfernen, aber nicht auf ‚aendern‘ druecken"*

   ⭐ GEMESSEN vorher (Korb mit zwei Artikeln, 402 px):
       Ueberschrift  „1 KAUFEN · 1 GESCHENKT", Farbe rgb(200,169,110)
       Pfeile        2x `.ic-cross-sell__arrow`
       Gold an       Versandbalken · Geschenktitel · Ueberschrift
       Fuss-Schrift  14 / 16 / 12 / 12 px — vier Groessen
       Kacheln       2x 170 px in einer 350er Spur, `display:grid`,
                     `overflow-x: visible` -> **kein Wischen moeglich**
       Aendern       ein Knopf ohne Klasse
   ============================================================================ */
@layer s304 {

  /* 2 · die Pfeiltasten fallen weg */
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__arrow { display: none !important; }

  /* 3 · kein Gold mehr — der Versandbalken wird schwarz, die Texte Tinte */
  html body[class][class][class][class] .drawer--cart .ic-shipping-bar .ic-shipping-bar__fill {
    background: #15130F !important;
    background-image: none !important;
  }
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__heading,
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile .cart__item__title,
  html body[class][class][class][class] .drawer--cart .cart__item .cart__item__price ins,
  html body[class][class][class][class] .drawer--cart .cart__item .price--highlight {
    color: #15130F !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile.s304-gratiszeile {
    border-color: rgba(30,24,18,.12) !important;
    background: rgba(255,255,255,.82) !important;
  }

  /* 4 · eine Schriftgroesse im Fuss: 12.5 px, Werte fetter */
  html body[class][class][class][class] .drawer--cart .cart__total__label,
  html body[class][class][class][class] .drawer--cart .cart__total__price,
  html body[class][class][class][class] .drawer--cart .s304-fuss__l,
  html body[class][class][class][class] .drawer--cart .s304-fuss__w {
    font-size: 12.5px !important;
    line-height: 1.5 !important;
  }
  html body[class][class][class][class] .drawer--cart .cart__total__label,
  html body[class][class][class][class] .drawer--cart .s304-fuss__l { font-weight: 600 !important; }
  html body[class][class][class][class] .drawer--cart .cart__total__price,
  html body[class][class][class][class] .drawer--cart .s304-fuss__w { font-weight: 700 !important; }

  /* 5 + 2 · die Spur wird wischbar, die Kacheln schmaler.
         Bei 150 px sieht man die dritte anschneiden — das ist die Einladung
         zum Wischen, die Enzo meint. Der eigene Rollbalken wird versteckt,
         die Anzeige darunter baut das JS. */
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__track {
    display: flex !important;
    grid-template-columns: none !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory !important;
    -webkit-overflow-scrolling: touch !important;
    gap: 10px !important;
    scrollbar-width: none !important;
    padding-bottom: 2px !important;
  }
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__track::-webkit-scrollbar { display: none !important; }
  /* ⛔ 150 px waren zu schmal gedacht: zwei Kacheln plus 10 px Spalt sind
     **310 px in einer 350er Spur** — es passt alles hinein, also gibt es
     nichts zu wischen, und die Anzeige darunter blendet sich (richtig) aus.
     Enzo: *„unten der Slider, den checkt man nicht"* und *„die Kacheln der
     beiden Produkte sollen nicht bis zum Rand gehen."*
     ⭐ Beides loest dieselbe Zahl: bei **182 px** sind zwei Kacheln plus Spalt
     **374 px** — die zweite **schneidet sichtbar an**, die Spur wird wischbar,
     und die Anzeige bekommt ihre Aufgabe.
     Gerechnet: 2 x 182 + 10 = 374 > 350 (Spurbreite). */
  html body[class][class][class][class] .drawer--cart .s304-paar.s304-paar {
    /* ⛔⛔ 29.09.2026 — DIE 182 px WAREN ABSICHT, und sie gilt nicht mehr.
       Der Kommentar darueber rechnet vor: 2 x 182 + 10 = 374 > 350, damit die
       zweite Kachel **sichtbar anschneidet** und die Wisch-Anzeige eine Aufgabe
       bekommt. Das war Enzos Wunsch vom 26.09.
       ⭐ Am 29.09. hat er das Gegenteil verlangt: *„mach bitte nur … wirklich
       nur zwei Vorschlaege gehen, dann ist auch der zweite nicht abgehackt."*
       Seit das JS nur noch EIN Paar je Welt baut (`s304PaareAus(..., 1)`), gibt
       es nichts mehr zu wischen — die Einladung zum Wischen waere eine
       Aufforderung ins Leere.
       ⛔ GEAENDERT WIRD DIE QUELLREGEL, NICHT DAGEGENGEHALTEN: mein erster
       Anlauf war ein eigener Block mit `html[class] body[class]` und verlor den
       Spezifitaetskampf gegen genau diese Zeile ([class]x4). Live gemessen:
       Ueberlauf blieb 16 px. Dieselbe Lehre wie am 28.09. beim CTA-Akzent.
       ⭐ Rueckweg: die drei Zeilen wieder auf 182px setzen. */
    flex: 0 0 calc((100% - 10px) / 2) !important;
    width: calc((100% - 10px) / 2) !important;
    min-width: 0 !important;
    max-width: calc((100% - 10px) / 2) !important;
    scroll-snap-align: start !important;
  }
  /* rechts ein Auslauf, damit die letzte Kachel nicht an der Kante klebt */
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__track::after {
    content: '' !important;
    flex: 0 0 12px !important;
  }

  /* die Wisch-Anzeige unter der Spur */
  
/* ⭐ 26.09.2026 — die WISCH-ANZEIGE oben wurde von 2 px auf 4 px gehoben.
   Enzo: „da will ich halt eine Wischleiste, dass man weiter wischen kann.“

   ⛔⛔ KORREKTUR EINER EIGENEN FEHLMESSUNG: ich hatte gemeldet, man KOENNE
   nicht wischen. Falsch — ich hatte `.s304-wischbar` gemessen, und das ist
   nicht die Spur, sondern der Anzeigebalken. Die Spur heisst
   `.ic-cross-sell__track` und rollt einwandfrei, in beiden Motoren:
     Chromium 780/350 = 430 px Ueberlauf · overflow-x auto · touch-action pan-x
     WebKit   430 px Ueberlauf · Rollprobe scrollLeft 0 -> 192 (Snap zieht)
   Es fehlte nur der sichtbare HINWEIS: 2 px auf 12 % Deckkraft liegen unter
   der Wahrnehmungsschwelle, und die zweite Kachel ist zu 92 % sichtbar, was
   sich wie „das war's“ liest statt wie „da kommt noch was“.

   ⛔ UND EIN ZWEITER EIGENER FEHLER, derselbe wie schon viermal: ich hatte
   erst einen NEUEN Block `html body .s304-wischbar` (0,1,2) ans Dateiende
   gehaengt — gegen DIESE Regel hier mit (0,6,2). Er war wirkungslos und ist
   wieder entfernt. **Eine Eigenschaft gehoert an EINE Stelle.** Deshalb steht
   die Aenderung jetzt in der Regel, die ohnehin gewinnt. */
html body[class][class][class][class] .drawer--cart .s304-wischbar {
    position: relative !important;
    height: 4px !important;
    margin: 13px 12px 2px !important;
    background: rgba(21,19,15,.14) !important;
    border-radius: 99px !important;
    overflow: hidden !important;
    overflow: hidden !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-wischbar i {
    position: absolute !important; top: 0 !important; left: 0 !important;
    height: 4px !important; background: #123029 !important;
    transition: left .18s ease, width .18s ease !important;
    border-radius: 99px !important;
  }

  /* 6 · „AENDERN" faellt weg — Geschenk annehmen oder entfernen, nichts sonst */
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile [class*="aender"],
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile [class*="change"],
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile button:not([data-action]):not([name]),
  html body[class][class][class][class] .drawer--cart .s304-geschenk-aendern { display: none !important; }
}
/* ================= ENDE S304-KORB-ENZOS-SECHS-2509 =========================== */

/* ================= S304-DIE-GESCHENKFAHNE-2509 ================================
   Zwei Nachbesserungen, die ich am eigenen Screenshot gesehen habe:
   die Fahne „DEIN GESCHENK — WAEHLBAR" war **noch goldbraun** (Enzo:
   *„erstmal will ich gar nicht diese komische goldene Farbe"*), und
   „WAEHLBAR" stimmt nicht mehr, seit der AENDERN-Knopf weg ist
   (*„einfach nur ‚dein Geschenk‘ oder man kann entfernen"*).
   ⛔ NUR IM KORB: auf der PDP kann man das Geschenk weiter waehlen, dort
   bleibt der Wortlaut richtig. Deshalb haengt alles an `.drawer--cart`. */
@layer s304 {
    /* ⛔ gemessen: die Fahne ist ein <span> in **div.s304-kb-ae** — dasselbe
     Element, das auch den AENDERN-Knopf trug. Farbe war rgb(138,107,47)
     = #8A6B2F, ein dunkles Gold. Meine erste Regel traf .s304-kb-kopf
     und ging deshalb ins Leere. */
html body[class][class][class][class] .drawer--cart .s304-kb-ae,
html body[class][class][class][class] .drawer--cart .s304-kb-ae span,
html body[class][class][class][class] .drawer--cart .s304-kb-ae b,
html body[class][class][class][class] .drawer--cart .s304-kb-kopf,
  html body[class][class][class][class] .drawer--cart .s304-kb-kopf b,
  html body[class][class][class][class] .drawer--cart .s304-gratiszeile .s304-kb-kopf,
  html body[class][class][class][class] .drawer--cart [class*="geschenk"] { color: #15130F !important; }
}
/* ================= ENDE S304-DIE-GESCHENKFAHNE-2509 ========================== */








/* ================= S304-DREI-OFFENE-PUNKTE-2509 ===============================
   Enzo 25.09.: *„kannst du die offenen Punkte erstmal erledigen."*
   Gemessen am Geraet (402 px), dann gebaut:

   A · DAS LETZTE THUMBNAIL KLEBT AN DER KANTE
       gemessen: Halter **342** breit, erstes Bild links 30, letztes rechts 12.
       LIVE (aus `REFERENZ-die-live-pdp-logik`): Halter **402**, Reihe 370 —
       der Ueberhang laeuft in den Halter hinein statt an die Fensterkante.

   B · DAS MENUE SOLL PLASTISCHER SEIN
       gemessen: die Blasen sind **deckend weiss** (`rgb(255,255,255)`).
       Enzo wollte *„transparent-plastisch im Gruen"* — also soll das
       Menue-Gruen durch die Blasen schimmern, wie jetzt im Korb.
       Plastizitaet kommt aus Innenlicht + feinem Ring, nicht aus Deckkraft.

   C · Instagram und TikTok stehen **bereits mittig** (links 148, rechts 148) —
       kein Eingriff noetig. Das war schon erledigt.
   ============================================================================ */
@layer s304 {

  /* A · der Thumbnail-Halter bekommt die volle Fensterbreite */
  html body[class][class][class] .product__thumbs__holder,
  html body[class][class][class] .s304-mini__reihe {
  /* ⛔ 30.09.: 402px (Fensterbreite) -> 100% des Innenraums.
     Enzo hat fotografiert, dass die Reihe aus der Karte laeuft.
     Vier Anlaeufe mit hoeherer Spezifitaet wirkten nicht; die
     Hausregel sagt: die QUELLE aendern, nicht dagegenhalten. */
    width: 100% !important;
    max-width: 100% !important;
    /* S304-THUMBRAND-2709 — Enzo: die Thumbnails sind zu weit.
       Gegen LIVE gemessen: dort Halter x=0, bei uns x=14 (beide w=402).
       URSACHE: der Ausgleich stand auf -16px, aber unser PDP-Inhalt hat
       30px Seitenrand (Live 16). Links blieb eine 14-px-Luecke, rechts
       ragte es hinaus. Der Wert war nie falsch - er passte zu einem Rand,
       den wir seither geaendert haben. */
    margin-left: 0 !important;
    margin-right: 0 !important;
    padding-left: 30px !important;
    padding-right: 30px !important;
    box-sizing: border-box !important;
    overflow-x: auto !important;
    scrollbar-width: none !important;
  
  /* ⛔ 30.09., Enzo am Live-Shop: "erstes Bild zu weit im Raum, letztes
     abgeschnitten". Gemessen: Titel steht bei x=30, erstes Bild bei x=46 -
     16 px Versatz durch das padding links. Und der Schnitt lag 14 px VOR
     der Kartenkante, was wie ein Fehler aussieht statt wie ein Hinweis.
     Jetzt: links buendig mit der Textspalte (kein Polster), rechts laeuft
     die Reihe bis an die Kartenkante, damit das angeschnittene Bild dort
     als "da kommt noch mehr" gelesen wird. scroll-padding sorgt dafuer,
     dass beim Wischen kein Bild unter der Kante klebt. */
  padding-left: 0 !important;
  padding-right: 0 !important;
  scroll-padding-left: 0 !important;
  scroll-padding-right: 14px !important;
  width: calc(100% + 14px) !important;
  max-width: calc(100% + 14px) !important;
}

/* ── S304-THUMBS-NICHTS-HALB-3009 ──────────────────────────────────────
   Enzo: „die Thumbnails sind teilweise komisch."
   Gemessen an 5 Produkten auf 2 Breiten: die Reihe sitzt richtig in der
   Karte, aber bei 430 px stand je EIN Bild halb da — die Bildbreite war
   fest und ging nicht auf.
   Jetzt teilt sich der sichtbare Platz durch die Anzahl der Bilder, also
   steht nie etwas halb. scroll-snap sorgt dafuer, dass auch beim Wischen
   ein Bild ganz stehenbleibt statt an der Kante zu kleben.
   ⛔ Das gilt bis 8 Bildern; darueber wird gewischt, dann rastet es sauber. */
/* ac2 02.10. ZURUECKGENOMMEN (Enzo A9: „Groesse/Anzahl der Vorschau geaendert, zurueck wie vorher“).
   Die Teilung durch 7-9 Bilder machte sie 37x54 px. Jetzt wieder natuerliche Groesse, Reihe wischbar,
   ein angeschnittenes Bild zeigt „da kommt mehr“. Alter Text: /root/theme-sicherung/ac2-0210/. */

/* ── S304-THUMBS-SYMMETRISCH-3009 ─────────────────────────────────────
   Enzo: „links und rechts nicht richtig ausgerichtet".
   Gemessen: die Reihe lief von 30 bis 386, die Karte von 16 bis 386 —
   links 14 px Abstand, rechts 0. Nicht symmetrisch.
   Der Titel steht bei x=30, also 14 px von der Kartenkante. Die Reihe
   bekommt denselben Abstand auf BEIDEN Seiten und sitzt damit in der
   Spur des Titels.
   ⭐ Das geht jetzt ohne Anschnitt, weil die Bildbreite sich seit 15:10
   durch die Anzahl teilt — es laeuft nichts mehr ueber den Rand. */
html body[class][class][class][class][class] .product__thumbs__holder,
html body[class][class][class][class][class] .s304-mini__reihe{
  /* ac2 30.09. 16:3xZ - VIERTER Anlauf, diesmal an der Quelle gemessen:
     die drei Vorgaenger haben nur die Breite verschoben, waehrend in
     derselben Schicht noch padding-right 16px und scroll-padding-right
     14px standen (S304-THUMBS-IN-DIE-SPUR-2809 / DREI-OFFENE-PUNKTE).
     Gemessen vorher: links 14, rechts 44, 21 px Ueberlauf.
     Jetzt: die Reihe fuellt GENAU den Inhaltsbereich der Karte
     (Karte 16..386, Polster 1+13 => 30..372). Keine eigene Breite, kein
     eigenes Polster - der Abstand zur Karte kommt links und rechts aus
     demselben Kartenpolster und ist damit per Bau gleich.
     Die Bildbreite teilt sich durch die Anzahl (THUMBS-NICHTS-HALB). */
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  scroll-padding-left: 0 !important;
  scroll-padding-right: 0 !important;
}
/* S304-THUMBS-KEIN-NACHLAUF-3009 - theme.css haengt der Reihe ein ::after mit
   padding-right:var(--outer) an (fuer die alte randlose Reihe). In der Karte
   ergab das 21 px Wischweg: die Reihe verrutschte beim ersten Daumen und
   die Symmetrie war weg. */
html body[class][class][class][class][class] .product__thumbs__holder::after,
html body[class][class][class][class][class] .s304-mini__reihe::after{
  content: none !important;
  display: none !important;
  padding: 0 !important;
}

  html body[class][class][class] .product__thumbs__holder::-webkit-scrollbar,
  html body[class][class][class] .s304-mini__reihe::-webkit-scrollbar {
    display: none !important;
  }

  /* B · die Menue-Blasen scheinen durch */
  html body[class][class][class] .drawer--header .drawer__inner a[class*="navlink"],
  html body[class][class][class] .drawer--header .navlink,
  html body[class][class][class] .drawer--header .drawer__body > ul > li > a {
    background: rgba(255,255,255,.80) !important;
    -webkit-backdrop-filter: blur(14px) saturate(1.25) !important;
    backdrop-filter: blur(14px) saturate(1.25) !important;
    /* ⛔ 27.09.: der geworfene Schatten ist raus. Unsere eigene Doktrin vom
       23.09.: *„Der Wurf bleibt den Produktkacheln vorbehalten. Wenn die
       Navigation denselben Wurf traegt wie die Ware, konkurriert sie mit ihr."*
       Er stand an DREI Stellen — CSS hier, und ZWEIMAL im Inline-cssText des
       Layouts (die zweite ueberschrieb die erste). */
    box-shadow: inset 0 1px 0 rgba(255,255,255,.34),
                inset 0 0 0 1px rgba(255,255,255,.20) !important;
  }
}
/* ================= ENDE S304-DREI-OFFENE-PUNKTE-2509 ========================= */


/* ================= S304-DIE-LETZTEN-BEIGEN-STELLEN-2509 =======================
   K3 aus Enzos Liste: *„hier oben beim Header ist immer noch so ein bisschen
   beige. Ich wollte das doch einfach nur komplett weiss haben."*

   ⭐ GEMESSEN auf der PDP (402 px), mit einem Test auf **waermer als neutral**
   (r-b >= 6 und g-b >= 3 bei hellen Toenen): 13 Treffer, davon aber nur
   **eine sichtbare Flaeche** — `.s304-pf` mit `rgb(242,240,236)` (109x19).
   Die uebrigen zwoelf sind **Raender im Menue-DOM** (`drawer__head`,
   `drawer__close`, `header__logo__link`), die man auf der PDP gar nicht sieht,
   plus `km-delivery-icon-wrap` mit `rgb(222,218,212)`.
   ⇒ Also nicht fuenf Stellen wie notiert, sondern **zwei, die zaehlen**.
   ⛔ Frueher stand hier „die letzten 5 finde ich per Quelltextsuche nicht" —
   gefunden hat sie erst die Messung im Browser, nicht die Suche im Code. */
@layer s304 {
  html body[class][class][class] .s304-pf,
  html body[class][class][class] .pdp-reviews-member-row .s304-pf {
    background: #FFFFFF !important;
    background-image: none !important;
  }
  /* die Akkordeon-Raender waren die zweite sichtbare Stelle:
     rgb(237,233,227) auf 368x45 — deutlich waermer als neutral. */
  html body[class][class][class] .product__block--accordion,
  html body[class][class][class] .product__block--accordion > * {
    border-color: #E6E6E6 !important;
  }
  html body[class][class][class] .km-delivery-icon-wrap {
    border-color: #E6E6E6 !important;
  }
}
/* ================= ENDE S304-DIE-LETZTEN-BEIGEN-STELLEN-2509 ================= */


/* ================= S304-ENZOS-VIER-VOM-2509-ABEND ============================
   Enzo 25.09., 23:22, mit zwei Screenshots vom eigenen iPhone:

   1 *„Auf der Homepage ist jetzt der Header oben wieder quadratisch, eckig,
      obwohl wir ihn ja so abgeschnitten hatten."*
      GEMESSEN: `.theme__header` sitzt auf der Startseite bei **oben 0**, auf
      der Kategorie bei **oben 32** (unter dem Trustbalken). Dort wirkt er als
      schwebende Karte, auf der Startseite stoesst er hart an die Statusleiste.

   2 *„wenn ich auf dem Warenkorb bin, will ich nicht, dass man im Hintergrund
      noch die PDP scrollen kann."*
      GEMESSEN: `scrollY 600 -> 1100` bei offenem Korb. `body` stand zwar auf
      `overflow:hidden`, aber gescrollt wird am **`<html>`** (`hidden auto`).

   3 *„man kann jetzt gar nicht swipen bei ‚das koennte dir auch gefallen‘."*
      ⭐⭐ **DER FUND DES ABENDS, und er kam von Enzos Finger, nicht von meiner
      Messung.** Die Spur trug `touch-action: manipulation` — das erlaubt
      Tippen und Zoomen, aber **kein Wischen**. Mein Test meldete „396 von 350,
      wischbar", weil ein programmatischer Scroll das ignoriert.
      ⇒ **Ein Scrollmass beweist nicht, dass ein Finger scrollen kann.**

   4 *„die Produktkacheln im Warenkorb duerfen nicht die gesamte Breite
      einnehmen."*
      GEMESSEN: die Artikelzeilen sind **402 px** — die volle Fensterbreite.
   ============================================================================ */
@layer s304 {

  /* 1 · der Header schwebt auch auf der Startseite */
  html body.template-index .theme__header,
  html body.template-index .header__wrapper {
    border-bottom-left-radius: 22px !important;
    border-bottom-right-radius: 22px !important;
    /* ac2 30.09. Enzo: „Header-Pille auf der Startseite: Unterkante harte Kante statt rund.“
       Gemessen: der Behaelter ist 46 px hoch, die Pille reicht bis 49 - overflow:hidden
       schnitt ihr die untere Rundung ab. Die Pille rundet sich selbst; der Behaelter
       schneidet nicht mehr. */
    overflow: visible !important;
  }

  /* 3 · die Angebots-Spur darf gewischt werden */
  html body[class][class][class][class] .drawer--cart .ic-cross-sell__track {
    touch-action: pan-x !important;
    overscroll-behavior-x: contain !important;
  }
  html body[class][class][class][class] .drawer--cart .s304-paar.s304-paar {
    touch-action: pan-x !important;
  }

  /* 4 · die Artikelzeilen lassen links und rechts Luft */
  html body[class][class][class][class] .drawer--cart .cart__item.cart__item {
    margin-left: 12px !important;
    margin-right: 12px !important;
    width: auto !important;
    max-width: calc(100% - 24px) !important;
  }
}

/* 2 · die Seite hinter dem Korb steht still.
      ⛔ `body{overflow:hidden}` reicht nicht — gescrollt wird am `<html>`. */
html.s304-korb-offen,
html.s304-korb-offen body {
  overflow: hidden !important;
  overscroll-behavior: none !important;
}
/* ================= ENDE S304-ENZOS-VIER-VOM-2509-ABEND ======================= */








/* ================= S304-ENZOS-LISTE-2609-GRUEN =================
   Enzo 26.09.: *„vielleicht sieht das sogar cool aus, wenn wir auf der PDP den
   CTA in gruen machen … koennen wir das allgemein ein bisschen gruen coden,
   wichtige Sachen?"* und *„beim Burger-Menue das Gruen transparenter,
   subtiler … als ob da Glas drueber ist."*

   ⭐ ZWEI GRUENTOENE mit Absicht:
     #0B1616 = das Gruen der Startseite (gemessen: `body`/`footer` rgb(11,22,22))
     #123029 = eine Spur heller und saettiger fuer Knoepfe. Der Kaufknopf stand
     auf rgb(11,11,11) — mit #0B1616 waere der Unterschied **zwei Helligkeits-
     stufen**, also unsichtbar. Ein Akzent muss man sehen koennen.

   ⛔ Der Kaufknopf gibt es ZWEIMAL (Seite + Klebeleiste), beide 370 px. Wer nur
   einen faerbt, bekommt beim Scrollen einen Farbwechsel.
   ⛔ Und die staerkste Gegenregel liegt in `@layer s304` von s304-pdp.css mit
   `html.s304-grund-34 body.s304-neu-an.s304-seite.template-product` — deshalb
   steht dieselbe Kette hier verstaerkt. */
@layer s304 {

  /* 1 · der Kaufknopf, beide Auftritte */
  html.s304-grund-34.s304-grund-34 body.s304-neu-an.s304-seite.template-product.template-product.template-product cart-bar.cart-bar .cart-bar__atc-btn,
  html.s304-grund-34.s304-grund-34 body.s304-neu-an.s304-seite.template-product.template-product.template-product .cart-bar__atc-btn,
  html.s304-grund-34.s304-grund-34 body.s304-neu-an.s304-seite.template-product.template-product.template-product .s304-cta,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product .cart-bar__atc-btn,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product .s304-cta.btn {
    /* ⭐ 26.09.: der Wert kommt jetzt aus einer Variablen, die das JS beim
       Waehlen eines Geschenks setzt (S304-FARBE-AN-DER-KACHEL-UND-AM-KNOPF).
       Ohne Auswahl bleibt es exakt #123029 — der Rueckfallwert steht hier.
       ⛔ Vorher stand hier ein fester Wert und ich habe in s304-pdp.css eine
       ZWEITE Regel dagegengesetzt. Die verlor, weil diese hier spezifischer
       ist. Eine Eigenschaft gehoert an EINE Stelle. */
    background-color: var(--s304-wahlfarbe, #123029) !important;
    color: var(--s304-wahlschrift, #FFFFFF) !important;
    transition: background-color .25s ease, color .25s ease !important;
  }

  /* 2 · Burger-Menue: mehr Glas, weniger Farbe.
         Vorher rgba(14,20,22,.44) ohne Unschaerfe — jetzt duenner UND unscharf,
         damit die Seite dahinter durchscheint statt nur abgedunkelt zu werden. */
  html body .drawer--header .drawer__inner,
  html body .drawer--header .drawer__body,
  html body #header-drawer .drawer__inner,
  html body [class*="drawer--header"] .drawer__inner,
}
/* ================= ENDE S304-ENZOS-LISTE-2609-GRUEN ================= */


/* ================= S304-CTA-IN-GROSSBUCHSTABEN-2609 =================
   Enzo 26.09.: *„beide in den Warenkorb finde ich voll cool, aber mach einfach
   BEIDE IN DEN WARENKORB, also in Caps-Lock immer. Auch auf der Main-Seite."*

   `text-transform` statt geaenderter Texte: die Beschriftung kommt aus Liquid
   und aus dem Korb-JS an mehreren Stellen; wer den Text austauscht, muss ihn
   an jeder Stelle finden. Die Schreibweise ist Darstellung, also gehoert sie
   ins CSS — dann trifft sie auch Knoepfe, die spaeter dazukommen.
   `letter-spacing` leicht hoch, weil Versalien sonst gedraengt wirken. */
@layer s304 {
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product .cart-bar__atc-btn,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product cart-bar.cart-bar .cart-bar__atc-btn,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product .s304-cta.btn,
  html.s304-grund-34.s304-grund-34 body.s304-neu-an.s304-seite.template-product.template-product .cart-bar__atc-btn,
  html.s304-grund-34.s304-grund-34 body.s304-neu-an.s304-seite.template-product.template-product .s304-cta,
  html body .s304-cta.btn,
  html body .cart-bar__atc-btn,
  html body [name="add"] .btn__text,
  html body button[name="add"] {
    text-transform: uppercase !important;
    letter-spacing: .06em !important;
  }
}
/* ================= ENDE S304-CTA-IN-GROSSBUCHSTABEN-2609 ================= */


/* ================= S304-KASSE-KNOPF-UND-PREIS-2609 =================
   Enzo 26.09.: *„der CTA im Warenkorb — da steht ‚jetzt sicher zur Kasse‘,
   dann ‚jetzt sicher zur Kasse‘, dann der Preis. Das ist komisch und sieht
   auch nicht gut aus."*

   ⭐ GEMESSEN, was dort wirklich steht: der Knopf traegt ein `::after` mit
   `content: " · 59,99 €"` — und dieses Pseudo-Element hat einen **eigenen
   grauen Grund `rgb(46,46,46)`**. Deshalb sah es wie ein zweiter Knopf im
   Knopf aus. Der Preis bleibt (er beantwortet die letzte Frage vor dem Klick),
   aber er bekommt keinen eigenen Kasten mehr und rueckt nach rechts.

   ⛔ UND: meine erste Fassung lag in `s304-pdp.css` — **die wird auf /cart gar
   nicht eingebunden.** Ich habe an Spezifitaet und Shorthands gedreht, waehrend
   die Datei schlicht nicht da war. ⇒ **Zuerst fragen, ob die Datei auf dieser
   Seite geladen ist**, dann ueber Kaskade nachdenken. */
@layer s304 {

  /* ⛔ Die Fassung davor (drei Wiederholungen) verlor weiterhin: der Knopf blieb
     rgb(10,10,10) — ein Wert, den KEINE der gefundenen Regeln nennt. Statt
     weiter zu suchen, hebe ich die Spezifitaet hoch genug, dass die Frage sich
     eruebrigt. Haesslich, aber ehrlich: dieselbe Technik benutzt das Theme an
     anderen Stellen selbst. */
  html body cart-drawer .btn.btn--primary.btn--solid.btn--full.cart__checkout.cart__checkout.cart__checkout,
  html body.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout {
    background: #123029 !important;
    background-color: #123029 !important;
    color: #FFFFFF !important;
    border-color: #123029 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    text-transform: uppercase !important;
    letter-spacing: .06em !important;
  }

  /* der Preis: kein eigener Kasten mehr, nur Text */
  html body .cart__checkout.cart__checkout::after,
  html body cart-drawer .cart__checkout::after {
    background: transparent !important;
    background-color: transparent !important;
    color: rgba(255,255,255,.82) !important;
    font-weight: 700 !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }
}
/* ================= ENDE S304-KASSE-KNOPF-UND-PREIS-2609 ================= */


/* ================= S304-KOPF-UEBERALL-GLEICH-2609 =================
   ⛔⛔ KORREKTUR 26.09. 14:00 — ich hatte es GENAU FALSCH HERUM.
   Enzo: *„der soll ja auf der Homepage weiss und da drum gruen, also oben
   auch bei der Notch gruen. Und auf der Kategorieseite soll der gruen und
   oben bei der Notch weiss."* Dazu seine Ansage zur Arbeitsweise:
   *„du musst immer vorher pruefen, okay, was koennte Enzo meinen."*

   ⭐ DIE REGEL, die dahintersteht und die ich haette sehen koennen:
   **der Kasten traegt immer die GEGENFARBE zu seinem Grund.**
     Homepage   dunkler Hero  ⇒ Kasten **hell**, Notch und Umfeld **gruen**
     Kategorie  heller Grund  ⇒ Kasten **gruen**, Notch und Umfeld **hell**
     PDP        heller Grund  ⇒ wie Kategorie
   Ein Kasten, der dieselbe Farbe hat wie das, worauf er liegt, ist kein
   Kasten mehr — genau Enzos „weiss auf weiss" von heute Mittag.

   ⭐ Und die harte Kante: er will *„einheitlich auch oben bei der Notch und
   um den Header herum"*. Deshalb ist das Umfeld **nicht** reinweiss, sondern
   dasselbe kuehle Papier `#F3F5F6`, das der Laden schon benutzt — dann gibt
   es zwischen Notch, Kopfumfeld und Versandzeile keinen Sprung mehr. */
@layer s304 {

  /* 1 · der Rahmen aussen ist ueberall durchsichtig, der Kasten rund */
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header,
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header,
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection .header__wrapper,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product .header__wrapper,
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index .header__wrapper {
    background-color: transparent !important;
    border-radius: 0 !important;
  }
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header .header__mobile,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header .header__mobile,
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header .header__mobile {
    border-radius: 30px !important;
    overflow: hidden !important;
  }

  /* 2 · KATEGORIE und PDP: gruener Kasten auf hellem Grund */
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header .header__mobile,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header .header__mobile {
    background-color: #0B1616 !important;
  }
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header, html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header *,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header, html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header * { color: #FFFFFF !important; }
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header svg, html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header svg *,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header svg, html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header svg * { stroke: #FFFFFF !important; }
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header svg:not([fill]), html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header svg *:not([fill]),
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header svg:not([fill]), html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header svg *:not([fill]) { fill: none !important; }
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header img,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header img { filter: brightness(0) invert(1) !important; }

  /* 3 · STARTSEITE: heller Kasten auf dunklem Hero — Schrift dunkel,
         Logo NICHT invertiert (es ist von Haus aus dunkel) */
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header .header__mobile {
    background-color: #FFFFFF !important;
  }
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header, html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header * { color: #15130F !important; }
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header svg, html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header svg * { stroke: #15130F !important; }
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header svg:not([fill]), html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header svg *:not([fill]) { fill: none !important; }
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header img { filter: none !important; }

  /* 4 · der Warenkorb-Zaehler nimmt seine Flaeche aus `currentColor` —
         sonst wird er ein Kloetzchen (am 26.09. schon einmal passiert) */
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection header.theme__header .header__cart__status__holder,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product header.theme__header .header__cart__status__holder,
  html body.template-index.template-index.template-index.template-index.template-index.template-index.template-index header.theme__header .header__cart__status__holder {
    background-color: transparent !important;
  }

  /* 5 · Notch und Umfeld: Startseite gruen, sonst kuehles Papier.
         Dasselbe Papier auch hinter der Versandzeile, damit dort keine
         zweite Kante entsteht. */
  html:has(body.template-index), html body.template-index {
    background-color: #0B1616 !important;
  }
  html:has(body.template-collection), html body.template-collection,
  html:has(body.template-product), html body.template-product {
    background-color: #FFFFFF !important;   /* 26.09.: siehe Begruendung oben */
  }
}
/* ================= ENDE S304-KOPF-UEBERALL-GLEICH-2609 ================= */



/* ================= S304-KORB-KNOPF-UND-LEISTE-2609 =================
   Enzo 26.09.: *„auf dem Ding steht ‚jetzt sicher zur Kasse‘, dann ist kurz
   ein Ding und dann ‚jetzt sicher zur Kasse‘ und dann der Preis"* und
   *„man kann auch nicht swipen bei ‚das koennte dir gefallen‘, und das ist
   schlecht formatiert."*

   ⭐⭐ WARUM DAS WISCHEN DREIMAL NICHT GING — der Befund, den Enzo dreimal
   angemahnt hat und den ich dreimal falsch beantwortet habe:
   Die Spur ist im Korb gar keine Leiste. In dieser Datei stand:
       .drawer--cart .ic-cross-sell__track[data-s304-paare]{
         display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
         overflow:visible; }
   **Ein Raster mit `overflow:visible` kann nicht wischen** — egal welche
   `touch-action` daneben steht. Ich habe dreimal die GESTE repariert,
   waehrend das Element keine Leiste war. Auf `/cart` (ohne die Raster-Regel)
   ergab die Messung `scrollWidth 396` bei `clientWidth 350`: **46 px**
   Ueberlauf bei zwei Kacheln a 182 — also technisch wischbar und praktisch
   nicht spuerbar.
   ⇒ Jetzt eine ECHTE Leiste: feste Kachelbreite, Schnappen, sichtbarer
   Ueberlauf. Bei zwei Artikeln steht sie ruhig, ab drei wischt sie.

   Der Kasse-Knopf: Text links, Preis rechts, eine Zeile — statt Text mittig
   und ein `::after` hinterher, das wie ein zweiter Knopf aussah. */
@layer s304 {

  /* 1 · der Kasse-Knopf: eine Zeile, Preis rechts */
  html body cart-drawer .btn.btn--primary.btn--solid.btn--full.cart__checkout.cart__checkout.cart__checkout,
  html body.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout.cart__checkout {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding-left: 22px !important;
    padding-right: 22px !important;
    text-align: left !important;
  }
  html body .cart__checkout.cart__checkout::after,
  html body cart-drawer .cart__checkout::after {
    margin-left: auto !important;
    white-space: nowrap !important;
    opacity: 1 !important;
    color: #FFFFFF !important;
  }

  /* 2 · aus dem Raster wird eine echte Wisch-Leiste */
  html body .drawer--cart .ic-cross-sell__track[data-s304-paare],
  html body .ic-cross-sell__track[data-s304-paare],
  html body .ic-cross-sell__track {
    display: flex !important;
    grid-template-columns: none !important;
    gap: 10px !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scroll-snap-type: x mandatory !important;
    -webkit-overflow-scrolling: touch !important;
    touch-action: pan-x pan-y pinch-zoom !important;
    overscroll-behavior-x: contain !important;
    scrollbar-width: none !important;
    padding-bottom: 2px !important;
  }
  html body .ic-cross-sell__track::-webkit-scrollbar { display: none !important; }
  html body .ic-cross-sell__track > * {
    flex: 0 0 152px !important;
    max-width: 152px !important;
    scroll-snap-align: start !important;
  }
}
/* ================= ENDE S304-KORB-KNOPF-UND-LEISTE-2609 ================= */


/* ================= S304-KOPF-FOLGT-DER-WAHL-2609 =================
   Enzo: *„gleiches gilt dann natuerlich auch fuer den Warenkorb, mit der
   Farbe im Uebrigen."* Der Kopf haengt auf ALLEN Seiten an derselben
   Variablen wie der Kaufknopf. Ohne Auswahl: Marken-Gruen. */
@layer s304 {
  html body.template-collection.template-collection.template-collection header.theme__header .header__mobile,
  html body.template-product.template-product.template-product header.theme__header .header__mobile {
    background-color: var(--s304-wahlfarbe, #0A0A0A) !important;
    transition: background-color .25s ease !important;
  }
}
/* ================= ENDE S304-KOPF-FOLGT-DER-WAHL-2609 ================= */


/* ================= S304-DER-KORB-WAR-ZU-DURCHSICHTIG-2609 =================
   Enzo 26.09., Bildschirmvideo: *„der Warenkorb buggt immer noch unnormal,
   und der ist auch gar nicht oben richtig gut formatiert. Man sieht ja gar
   nicht die Produkte, die man eigentlich im Warenkorb hat."*

   ⭐ IM VIDEO GESEHEN, nicht erraten: in Bild 11 von 19 liest man **durch den
   Korb hindurch die ganze Produktseite** — „Das schenken wir dir", „Beide in
   den Warenkorb 120 €", „DEIN PIECE – DIREKT ZU DIR", „PRODUKTDETAILS".
   Zwei Seiten uebereinander. Das ist kein Animationsfehler, der Korb ist
   schlicht zu durchlaessig.

   ⭐ DER RICHTIGE HEBEL steht in meinem eigenen Merksatz vom 23.09.:
   **unsichtbar macht die UNSCHAERFE, nicht die Deckkraft.** Wer den Grund
   nur abdunkelt, bekommt Grau (und genau das hat Enzo am 25.09. abgelehnt).
   Wer die Unschaerfe hochdreht, behaelt Farbe und Tiefe — und der Text
   dahinter wird trotzdem unlesbar.
   ⇒ Deshalb: blur 20–26 px auf **38–44 px**, Deckkraft nur leicht nach oben
   (.40 → .54 bzw. .58 → .74). Der G3-Look bleibt, das Durchlesen hoert auf. */


/* ================= S304-KEINE-HARTE-KANTE-AM-KOPF-2609 =================
   Enzo 26.09.: *„unten ist das nicht perfekt abgerundet, dort siehst du so
   eine harte Kante bei diesem Header. Man sieht zwischen dem Versanddings
   und dem Header so eine andere Farbe, so ein leichtes Grau. Macht das doch
   einfach einheitlich, auch oben bei der Notch und um den Header herum."*

   ⛔ Mein erster Versuch setzte `#F3F5F6` auf `html`/`body` — gemessen kam
   trotzdem `rgb(255,255,255)` heraus, eine staerkere Regel gewann. Deshalb
   hier mit genuegend Spezifitaet und an ALLEN drei Flaechen, die zwischen
   Notch und Versandzeile sichtbar sind: Wurzel, Seite und der Streifen, in
   dem der Kopf schwebt. Ein Ton fuer alles ⇒ keine Kante mehr. */
@layer s304 {
  html:has(body.template-collection), html:has(body.template-product),
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection, html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product {
    background-color: #FFFFFF !important;   /* 26.09.: Enzos Grau — siehe Begruendung weiter oben */
  }
  /* der Streifen um den schwebenden Kopf und der hinter der Versandzeile
     ⭐ 26.09., Enzos Punkte B3 und C1: *„von Alle/Kette/Perlen bis hoch zum
     Header ist ein anderes Grau, das soll da auch einfach weiss sein"* und
     *„unter dem Header so ein kleiner Bereich Grau"*. Dieser Streifen WAR das
     Grau — er trug den Papierton #F3F5F6, waehrend die Karten darunter weiss
     sind. Jetzt #FFFFFF. Gemessen in WebKit: Kategorie y 2..82, PDP y 2..50 */
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection .header-sections, html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product .header-sections,
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection .theme__header .section-padding,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product .theme__header .section-padding,
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection .shopify-section-group-group-header,
  html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product .shopify-section-group-group-header {
    background-color: #FFFFFF !important;
  }
  /* die Versandzeile selbst bleibt weiss — sie IST ein eigener Kasten,
     aber ihr Umfeld nicht mehr */
  html body.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection.template-collection main#MainContent.main-content, html body.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product.template-product main#MainContent.main-content {
    background-color: transparent !important;
  }
}
/* ================= ENDE S304-KEINE-HARTE-KANTE-AM-KOPF-2609 ================= */


/* ================= S304-KORB-PRODUKTE-SICHTBAR-2609 =================
   Enzo 26.09. (Bildschirmvideo): *„der ist auch gar nicht oben richtig gut
   formatiert. Man sieht ja gar nicht die Produkte richtig, die man eigentlich
   im Warenkorb hat."*

   Gemessen: Bild **66 x 66** in einer 97 px hohen Zeile, `object-fit: contain`.
   ⛔ DIE 66 STAMMEN AUS SEINEM EIGENEN BLATT vom 19.09. („Bild 66x66") — ich
   weiche hier also bewusst von einer abgenommenen Zahl ab, weil er heute das
   Gegenteil verlangt. Das steht hier, damit es niemand fuer einen Fehler haelt
   und zurueckdreht.
   ⇒ 66 → **88**, Zeile 97 → rund 119. `contain` bleibt: die Ware ist
   freigestellt, `cover` wuerde sie anschneiden (Enzos stehende Regel
   „nie so zuschneiden, dass man das Produkt nicht ganz sieht"). */
@layer s304 {
  /* ⛔ Die erste Fassung (Spezifitaet 0,2,3) verlor: die Theme-Regeln hier
     benutzen `body[class][class][class][class]`. Wer dagegen ankommen will,
     muss dieselbe Technik nehmen — sie steht in dieser Datei mehrfach. */
  html body[class][class][class][class][class] .cart__item .cart__item__image,
  html body[class][class][class][class][class] .drawer .cart__item .cart__item__image,
  html body[class][class][class][class][class] .drawer--cart .cart__item .cart__item__image,
  html body[class][class][class][class][class] cart-drawer .cart__item .cart__item__image {
    width: 88px !important;
    min-width: 88px !important;
    height: 88px !important;
    flex: 0 0 88px !important;
  }
  html body[class][class][class][class][class] .cart__item .cart__item__image img,
  html body[class][class][class][class][class] .drawer .cart__item .cart__item__image img,
  html body[class][class][class][class][class] .drawer--cart .cart__item .cart__item__image img,
  html body[class][class][class][class][class] .drawer--cart .cart__item .cart__item__image a,
  html body[class][class][class][class][class] cart-drawer .cart__item .cart__item__image img {
    width: 88px !important;
    height: 88px !important;
    object-fit: contain !important;
  }
  html body .cart__item,
  html body .drawer .cart__item {
    align-items: center !important;
    gap: 12px !important;
  }
}
/* ================= ENDE S304-KORB-PRODUKTE-SICHTBAR-2609 ================= */


/* ================= S304-DAS-BURGER-MENUE-HATTE-BREITE-NULL-2609 (ZURUECKGENOMMEN) =================
   ⛔⛔⛔ DIESER BLOCK HAT DAS MENUE KAPUTT GEMACHT. Ich hatte gemessen:
   `.drawer--header` hat `display:inline` und `.drawer__inner` einen
   `transform` von +402 px — und beides fuer den Fehler gehalten.

   ⭐ DIE GEGENPROBE, die ich haette ZUERST machen muessen: dasselbe im
   LIVE-Theme messen.
       LIVE          display inline · transform +402 · Menue trifft: **JA**
       Arbeitskopie  display block  · transform none · Menue trifft: **NEIN**
   **Live funktioniert mit genau den Werten, die ich fuer den Defekt hielt.**
   Meine beiden „Fixes" haben einen funktionierenden Zustand zerstoert.

   ⭐⭐ DIE LEHRE, teuer bezahlt: **Bevor ich einen Wert fuer falsch erklaere,
   messe ich denselben Wert dort, wo es funktioniert.** Live ist jederzeit
   erreichbar und kostet dreissig Sekunden. Ich habe stattdessen zwei Stunden
   in eine Diagnose gesteckt, die von Anfang an widerlegbar war.
   ⛔ Dieselbe Familie wie „ein Scrollmass beweist keine Geste": ein Wert, der
   ungewoehnlich AUSSIEHT, ist deshalb noch lange nicht die Ursache.
   ========================================================================= */



/* ═══ S304-KASSE-OHNE-SCHLOSS-2609 ══════════════════════════════════════
   Enzo 26.09.: „mach jetzt sicher zur Kasse. Ohne so ein Schloss-Emoji.
                 Und dann einfach die 120 Euro da rechts.“

   ⛔ WARUM CSS UND NICHT JS: `304-custom.js` haengt den Endpreis an den Knopf
   und warnt dort ausdruecklich: „Der Knopf traegt ein Schloss-SVG — deshalb
   wird NICHT sein innerHTML ersetzt.“ Wer das SVG im Markup entfernt, bricht
   diese Annahme. Ausblenden laesst die Logik heil.

   ⭐ Der Knopf steht auf `justify-content: space-between`. Faellt das Schloss
   weg, rutscht der Text von selbst nach links und der Preis bleibt rechts —
   genau Enzos Anordnung, ohne eine einzige Positionsregel.
   ═══════════════════════════════════════════════════════════════════════ */
html body [name="checkout"] .icon-lock,
html body [name="checkout"] svg.icon-lock,
html body .cart__checkout .icon-lock{ display:none !important; }
html body [name="checkout"]{ text-align:left !important; }




/* ═══ S304-ESSENTIALS-NUR-PRODUKTE-2609 ═════════════════════════════════
   Enzo 26.09.: „ich finde E-B am besten, nur soll da nicht dieses ‚Diese
   Pieces bekommst du nur im Inner Circle‘ stehen und auch nicht ESSENTIALS,
   sondern halt einfach nur die Produkte. … die Inner-Circle-Texte auf den
   einzelnen Produkten sollen so sein wie bei E-C, nur halt in dem Gold, aber
   in der Form.“

   Also: zwei Bloecke RAUS, die Fahne umgeformt — und sonst nichts.
     · `.ic-lock-card`      der Hinweiskasten (271 px, Rahmen rgb(218,165,32))
     · `.wc-trust-header`   der schwarze ESSENTIALS-Kopfkasten
     · `.ic-collection-badge` bleibt, bekommt aber die PILLENFORM aus E-C
       in GOLD statt der goldenen Ecke.

   ⛔ NUR AUF DER ESSENTIALS-KOLLEKTION. `.wc-trust-header` traegt auf den
   anderen Kategorien den Titel samt Bild — wer ihn global ausblendet, nimmt
   Walletchains und Bracelets ihre Kopfzeile.

   ⛔⛔ ERSTER VERSUCH WAR FALSCH, UND DER KOMMENTAR DAZU AUCH: ich haengte die
   Regel an `body.collection-essentials` und schrieb darunter „gegengemessen“ —
   **das hatte ich nicht getan.** Nachgemessen sind die body-Klassen auf
   /collections/essentials:
       template-collection grid-compact aos-initialized has-line-design
       s304-kat-an has-header-sticky is-loaded
   Eine kollektionsspezifische Klasse ist **nicht darunter**. Die Regel war
   wirkungslos, beide Bloecke blieben sichtbar (271 px und 104 px).
   ⇒ Eine Behauptung im eigenen Kommentar ist kein Beleg. Erst messen, dann
   schreiben — sonst glaubt der Naechste der Notiz statt der Seite.

   ⭐ WAS STATTDESSEN TRAEGT: `.ic-lock-card` gibt es **nur** auf dieser
   Kollektion. Sie ist damit der Marker, an dem `:has()` die Seite erkennt —
   und sie bleibt im DOM, wenn sie ausgeblendet wird, `:has()` greift also
   weiter. Nachgemessen: auf /collections/walletchains existiert sie nicht,
   dort bleibt die Kopfzeile unberuehrt (Positivkontrolle im Pruefskript).

   ⭐ WARUM DER KASTEN FEHLEN DARF, ohne dass Information verloren geht: die
   Produkte stehen ohnehin auf `available: false` mit Preis 0,00 — die PDP
   erklaert den Inner Circle dort weiter. Gemessen 26.09.: die Essentials-PDP
   ist in Arbeitskopie und LIVE identisch (4537 px, 15 Sektionen, gleiche
   Knoepfe) — an der Logik dahinter ist also nichts zu tun.
   ═══════════════════════════════════════════════════════════════════════ */
/* ⭐ 27.09. EINGESCHRAENKT auf die Kategorieseite.
   Diese Regel kam aus S304-ESSENTIALS-NUR-PRODUKTE-2609: Enzo wollte am 26.09.
   auf der KATEGORIE nur die Produkte sehen, ohne den Banner. Sie galt aber
   ueberall — auch auf der PRODUKTSEITE.
   ⛔ Heute hat das zugeschlagen: Enzo wollte den Sperrkasten auf der PDP „1:1
   wie im Live Theme". Ich habe ihn eingebaut, die Messung meldete „Karte mit
   Text vorhanden" — und die Seite war trotzdem KOMPLETT SCHWARZ: der Schleier
   lag da, die Karte darin stand auf display:none. Gesehen habe ich es erst am
   Screenshot, nicht an den Zahlen.
   ⭐ Die beiden Wuensche widersprechen sich nicht, sie betreffen zwei Flaechen:
   Kategorie ohne Banner (26.09.), Produktseite mit Sperrkasten (27.09.). */
html body[class][class][class][class].template-collection .ic-lock-card{ display: none !important; }
html body[class][class][class][class]:has(.ic-lock-card) .wc-trust-header{
  display: none !important;
}
html body[class][class][class][class] .ic-collection-badge{
  background: #c8a96e !important;
  color: #1a1408 !important;
  border-radius: 99px !important;
  font-size: 9px !important;
  font-weight: 700 !important;
  letter-spacing: .08em !important;
  padding: 4px 9px !important;
  clip-path: none !important;
  border: 0 !important;
  box-shadow: none !important;
}

/* ═══ S304-ERZAEHLSEITEN-IM-HAUSSTIL-2609 ═══════════════════════════════
   Enzo 26.09.: „bei About Us mach das wie deine Empfehlung, A-B. Mach die
   FAQ-Seite bitte auch so.“

   A-B heisst: der dunkle Kopf wird ein KASTEN mit Radius 22 und 16 px Rand,
   der Grund wird Papier #F3F5F6, die Inhaltsbloecke werden Glas — dieselbe
   Sprache wie Warenkorb und Kategorie.

   ⛔ WAS AUSDRUECKLICH BLEIBT: Text, Bilder, Reihenfolge, und auf About Us
   die Schrift **Anton**. Enzo hat nur den Stil angeglichen haben wollen; die
   kondensierten Kapitelueberschriften sind Absicht, sie umzustellen waere
   Gestaltung und keine Angleichung.

   Gemessene Ausgangslage 26.09.:
     About Us  Grund #FFFFFF · Abschnitte randlos r0 · Hoehe 6487 px
     FAQ       `.s304-faq__hero` 200 px auf rgb(58,58,58) · Antworten
               `.s304-faq__answer-text` auf rgb(248,248,248) r3
   ═══════════════════════════════════════════════════════════════════════ */
/* 27.09.: auch hier weiss — Enzo hat das Grau an inzwischen vier Stellen
   beanstandet, und About Us soll zum Rest passen. */
html body[class][class][class][class] .au-section{ background: #FFFFFF !important; }
/* ⛔ 27.09. — DIE KAESTEN SIND WIEDER WEG.
   Enzo: *„darunter die Sachen sehen auch nicht gut formatiert aus, weil auf
   einmal sind da noch recht heftige Kaesten, macht ja gar keinen Sinn."*
   **Er hat recht, und es ist eine Folge meiner eigenen Kette:** ich hatte am
   26.09. die Abschnitte als Glaskaesten gebaut (Fassung A-B, auf Papiergrund
   #F3F5F6 — dort hatten sie Kontrast). Danach zog ich den Seitengrund auf
   **Weiss**, weil Enzo das Grau an drei Stellen beanstandet hatte. Seitdem
   liegt **weisses Glas auf weissem Grund**: der Kasten grenzt nichts mehr ab,
   man sieht nur noch Rand und Schatten. Genau „macht keinen Sinn".
   ⇒ Der Hero bleibt ein Kasten (er ist dunkel, dort trennt die Rundung
   wirklich). Die Textabschnitte stehen wieder frei auf dem Grund.
   ⭐ Das ist auch Enzos Linie vom 25.09.: *„weg mit den Kaesten … nur weiss,
   wie in unserem Artefakt"* — ruhige Flaeche, Inhalt steht frei. */
html body[class][class][class][class] .au-section--warm{
  background: transparent !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;
  box-shadow: none !important;
}
html body[class][class][class][class] .au-hero{
  /* ⭐ 26.09. abends, Enzo: *„About Us ist nicht richtig formatiert, ist oben
     auch abgeschnitten."* — GEMESSEN und er hat recht: der Kopf steht auf
     `position:absolute` und ist 46 px hoch, der Hero beginnt DARUNTER
     (`verdeckt: true`). Auf dem iPhone kommt die Notch-Hoehe dazu, deshalb
     schiebt sich die Zeile „AN BORD · 304SUPPLY" unter die Kopfleiste.
     ⇒ Der Kasten bekommt oben Luft fuer den Kopf **plus** die Systemzone.
     ⛔ Nicht mit `padding` am Inhalt geloest: der Kasten selbst soll mit
     seiner Rundung sichtbar unter dem Kopf beginnen, nicht nur sein Text. */
  border-radius: 22px !important;
  margin: calc(58px + env(safe-area-inset-top, 0px)) 16px 0 !important;
  overflow: hidden !important;
}

/* FAQ — dieselbe Sprache */
html body[class][class][class][class] .s304-faq__hero{
  border-radius: 22px !important;
  margin: 0 16px !important;
  overflow: hidden !important;
}
html body[class][class][class][class] .s304-faq__content{
  background: #FFFFFF !important;   /* 27.09.: wie About Us */
}
/* 27.09.: dieselbe Begruendung wie bei den About-Us-Abschnitten —
   weisses Glas auf weissem Grund grenzt nichts ab. */
html body[class][class][class][class] .s304-faq__category{
  background: transparent !important;
  -webkit-backdrop-filter: blur(22px) !important;
  backdrop-filter: blur(22px) !important;
  border: 1px solid rgba(255,255,255,.55) !important;
  border-radius: 22px !important;
  margin: 0 16px 18px !important;
  padding: 16px !important;
  box-shadow: 0 10px 30px rgba(11,22,22,.07) !important;
}
html body[class][class][class][class] .s304-faq__answer-text{
  background: rgba(243,245,246,.86) !important;
  border-radius: 12px !important;
}



/* Der Streifen ZWISCHEN Kopf und Inhalt — derselbe Papierton, denselben Weg.
   Auf Kategorie reicht er bis zu den Filter-Chips, auf der PDP bis zur Karte. */
html body[class][class][class][class].template-collection .main-content > .section-padding:first-child,
html body[class][class][class][class].template-product .main-content > .section-padding:first-child{
  background: #FFFFFF !important;
}


/* ═══ S304-KEIN-GRAU-AM-KORBFUSS-2609 ═══════════════════════════════════
   Enzo 26.09.: *„unten bei Zwischensumme und so ist so ein Grau, das will ich
   alles gar nicht."*
   Gemessen: die Zeile ZWISCHENSUMME liegt auf `rgb(243,245,246)` — dem
   Papierton. Im Korb sind alle Karten weiss, deshalb faellt der Streifen als
   Grau auf. ⭐ Derselbe Ton, der heute schon dreimal als „Grau" gemeldet wurde
   (Kopfstreifen, PDP unter dem Header) — es ist immer #F3F5F6.
   ═══════════════════════════════════════════════════════════════════════ */
html body[class][class][class][class] .drawer--cart .cart__footer,
html body[class][class][class][class] cart-drawer .cart__footer,
html body[class][class][class][class] .drawer--cart .drawer__footer,
html body[class][class][class][class] .drawer--cart .cart__subtotal,
html body[class][class][class][class] .drawer--cart [class*="subtotal"],
html body[class][class][class][class] .drawer--cart [class*="totals"]{
  background:#FFFFFF !important;
}

/* ⭐ 26.09.2026 — ALLE Hintergrund-Angaben fuer `.menu-304__primary-link`
   stehen jetzt auf demselben Wert: rgba(255,255,255,.46) + blur(32px).

   Enzo: *„hinter den einzelnen Kategorien ist noch eine Farbe, das soll halt
   transparent aussehen … nicht so fake transparent."*

   ⛔⛔ WARUM DAS NOETIG WAR: es gab **sechs** Regeln fuer diese eine
   Eigenschaft, alle mit demselben Selektor `html body .menu-304__primary-link`
   und alle mit `!important` — mit den Werten 1.0 / 0.96 / 0.9 / 1.0 / 0.8.
   Bei gleicher Spezifitaet gewinnt die letzte; welche das ist, haengt davon ab,
   in welcher Reihenfolge Bloecke angehaengt wurden. Eine siebte dagegenzusetzen
   haette das Muster nur fortgesetzt. **Eine Eigenschaft gehoert an EINE Stelle** —
   bis das hier aufgeraeumt ist, gilt: denselben Wert ueberall, nicht einen neuen.
*/


/* ═══ S304-EINE-SCHICHT-STATT-ZWEI-2709 ═════════════════════════════════
   Enzo 27.09.: *„der Warenkorb hat immer noch zwei verschiedene Farben."*
   Und zum Menue: *„ich will die einzelnen Kacheln so transparent in der
   Fensterglas-Optik haben, wie von Scuffers … bei uns ist einfach grau und im
   Hintergrund ist weiss."*

   ⭐ EINE URSACHE FUER BEIDES, gemessen am 27.09.:
       `cart-drawer`      background **rgb(255,255,255)**  ← DECKEND
       `.drawer__inner`   rgba(255,255,255,.58) + blur(42px) ← Glas
   Das Glas liegt also auf deckendem Weiss. Ein Weichzeichner ueber Weiss
   zeigt Weiss — die Unschaerfe hat nichts zu tun, und der 58-%-Schleier
   erzeugt gegenueber dem reinen Weiss daneben einen zweiten Ton.
   **Das sind Enzos „zwei verschiedene Farben".**

   ⭐ WIE SCUFFERS ES MACHT (aus unserer eigenen Messung, steht weiter oben in
   dieser Datei): `.sc-drawer` traegt `background: rgba(0,0,0,0)` — das Blatt
   selbst ist TRANSPARENT, die Unschaerfe macht der Unterleger. Genau deshalb
   sieht es dort nach Fensterglas aus und bei uns nach Grau.

   ⇒ Die aeussere Huelle wird transparent. Damit steht nur noch EINE Schicht
   zwischen Auge und Seite, und die Unschaerfe hat etwas zu tun.
   ⛔ Nicht die Deckkraft des Glases erhoehen — das war der Reflex und macht es
   nur milchiger. Die Schicht darunter ist das Problem, nicht das Glas.
   ═══════════════════════════════════════════════════════════════════════ */
html body[class][class][class][class] cart-drawer,
html body[class][class][class][class] .drawer--cart{
  background: transparent !important;
}
html body[class][class][class][class] cart-drawer .drawer__inner,
html body[class][class][class][class] .drawer--cart .drawer__inner{
  background: rgba(255,255,255,.52) !important;
  -webkit-backdrop-filter: blur(42px) saturate(1.3) !important;
  backdrop-filter: blur(42px) saturate(1.3) !important;
}


/* ═══ S304-KORB-ZURUECK-AUF-DIE-FREIGABE-2709 ═══════════════════════════
   Die letzten zwei Werte aus Enzos Abnahme vom 23.09. (Blatt V2 / G3), die
   beim Rueckbau vom 25.09. haengen geblieben sind.

   Enzo am 23.09. zur Trust-Zeile: *„die runden Bubbles sind sehr vibe-coded"*
   ⇒ **Eckradius 11**, Hoehe **32** — nicht rund (99) und nicht eckig (0).
   Gemessen am 27.09.: `.cart-block--top` **42 px hoch, radius 0**.

   Der Schliessen-Knopf war mit **26 x 26, radius 99** abgenommen.
   Gemessen: `.drawer__close` **34 x 34, radius 0**.

   ⛔ Beide Abweichungen stammen aus derselben Runde wie Radius und Deckkraft
   der Karte: ich hatte `--RADIUS 0px` als „alles eckig" gelesen. Der Rueckbau
   danach war unvollstaendig — siehe AUDIT-warenkorb-gegen-die-freigaben-2709.
   ═══════════════════════════════════════════════════════════════════════ */
html body[class][class][class][class] .drawer--cart .cart-block--top,
html body[class][class][class][class] cart-drawer .cart-block--top{
  min-height: 32px !important;
  border-radius: 11px !important;
}
html body[class][class][class][class] .drawer--cart .drawer__close,
html body[class][class][class][class] cart-drawer .drawer__close{
  width: 26px !important;
  height: 26px !important;
  min-width: 26px !important;
  border-radius: 99px !important;
  background: rgba(255,255,255,.85) !important;
}


/* ═══ S304-BUNDLEZEILEN-2709 ════════════════════════════════════════════
   Die zwei Nachlege-Zeilen aus Enzos Freigabe (Variante F, 22./23.09.).
   Form nach demselben Massstab wie die Korbkarten: Radius 22, Glas .82,
   Innenlicht — damit sie zur Sprache des Korbs gehoeren und nicht wie ein
   fremder Werbeblock wirken.
   ═══════════════════════════════════════════════════════════════════════ */
html body[class][class][class][class] .s304-bundlezeilen{
  display: flex !important;
  flex-direction: column !important;
  gap: 8px !important;
  /* ⛔ 27.09. nachgemessen: die Zeilen liefen ueber die volle Breite, waehrend
     die Korbkarten 16 px Rand haben — sie standen sichtbar aus der Flucht.
     Jetzt derselbe Rand wie alles andere im Korb. */
  margin: 12px 16px 4px !important;
}
html body[class][class][class][class] .s304-bundlezeile{
  display: grid !important;
  grid-template-columns: 1fr auto auto !important;
  grid-template-areas: "t p pf" "u u pf" !important;
  align-items: center !important;
  gap: 2px 10px !important;
  padding: 12px 14px !important;
  background: rgba(255,255,255,.82) !important;
  border-radius: 22px !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.95),
              inset 0 0 0 1px rgba(30,24,18,.06) !important;
  text-decoration: none !important;
  color: #15130F !important;
}
html body[class][class][class][class] .s304-bz__t{
  grid-area: t !important; font-size: 13px !important; font-weight: 600 !important;
}
html body[class][class][class][class] .s304-bz__p{
  grid-area: p !important; font-size: 13px !important; font-weight: 700 !important;
  font-variant-numeric: tabular-nums !important;
}
html body[class][class][class][class] .s304-bz__u{
  grid-area: u !important; font-size: 11px !important; color: #6E6862 !important;
}
html body[class][class][class][class] .s304-bz__pf{
  grid-area: pf !important; font-size: 15px !important; color: #6E6862 !important;
}


/* ═══ S304-MENUE-WIE-SCUFFERS-WIRKLICH-2709 ═════════════════════════════
   Enzo: *„geh da nochmal tiefer rein"* — also gegen die Referenz gemessen,
   nicht nach Gefuehl.

   ⭐ DIE SCUFFERS-MESSUNG STEHT SEIT DEM 23.09. WEITER OBEN IN DIESER DATEI.
   Ich hatte bisher nur an der FARBE gedreht. Der eigentliche Unterschied ist
   die GEOMETRIE:
   | | Scuffers | wir (27.09. gemessen) |
   |---|---|---|
   | Blatt   | **382 x 640 bei x10/y10** — schwebt | 402 x 854 bei x0 — klebt |
   | Hoehe   | 73 % des Fensters | **98 %** |
   | Unschaerfe am Blatt | ja | **none** |
   | Hauptlinks | 24,5 px · 500 · **-0,8 px** | 19 px · 600 · -0,2 px |
   | Punkt-Wurf | keiner | **0 8px 20px -12px rgba(0,0,0,.55)** |

   ⛔ Der letzte Punkt widerspricht unserer EIGENEN Doktrin von damals:
   *„Der Wurf bleibt den Produktkacheln vorbehalten. Wenn die Navigation
   denselben Wurf traegt wie die Ware, konkurriert sie mit ihr."* Der Wurf war
   trotzdem da — geschrieben und nicht eingehalten.

   ⇒ Jetzt: das Blatt schwebt mit 10 px Rand ringsum und endet bei 74 % Hoehe,
   es bekommt die Unschaerfe selbst, die Links werden groesser und leichter,
   der Wurf faellt weg.
   ═══════════════════════════════════════════════════════════════════════ */
/* ⛔⛔ 27.09. ZURUECKGENOMMEN — ich hatte hier `inset` gesetzt, um das Blatt
   wie bei Scuffers schweben zu lassen. Ergebnis im Bild: **das Menue war
   komplett weg**, nur der unscharfe Unterleger blieb.
   ⭐ URSACHE, und sie stand seit dem 26.09. in meiner eigenen Notiz: das
   Schubfach wird ueber `transform: translateX(...)` eingeblendet. `inset`
   nimmt ihm die Bezugskante, auf die dieses `transform` rechnet — es landet
   ausserhalb des Fensters.
   ⇒ Die Geometrie (382 x 640 schwebend) laesst sich hier NICHT ueber `inset`
   herstellen. Wer sie will, muss an der Stelle ansetzen, die das `transform`
   erzeugt — das ist Theme-Original und ein eigener Eingriff.
   Was ohne Risiko geht und bleibt: Unterleger und Links (weiter unten). */
html body[class][class][class][class] .drawer--header .drawer__inner,
html body[class][class][class][class] .drawer--navigation .drawer__inner{
  -webkit-backdrop-filter: blur(34px) saturate(1.35) !important;
  backdrop-filter: blur(34px) saturate(1.35) !important;
}
/* der Unterleger wird hell und schwach — wie bei Scuffers */
html body[class][class][class][class] .underlay.drawer__underlay{
  background: rgba(147,147,147,.16) !important;
  -webkit-backdrop-filter: blur(14px) !important;
  backdrop-filter: blur(14px) !important;
}
/* die Hauptlinks: groesser, leichter, enger gesetzt — und OHNE Wurf */
html body[class][class][class][class] .menu-304__primary-link{
  font-size: 22px !important;
  font-weight: 500 !important;
  letter-spacing: -0.6px !important;
  min-height: 58px !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34),
              inset 0 0 0 1px rgba(255,255,255,.20) !important;
}


/* === S304-KACHELFAHNE-GOLDVERLAUF-2709 =============================
   Enzo 27.09.: „die stehen ja in a circle auf jeder Produktkachel. Das soll
   in unserem Goldton, in diesem goldglaenzenden, wie im Live Theme."
   ⭐ DIE FAHNE AUF DER KACHEL HEISST `.ic-collection-badge` — NICHT
   `.ic-only-tag`. Das ist die Fahne auf der PDP. Zwei verschiedene Elemente,
   und ich habe tagelang nur das zweite bearbeitet.
   Am LIVE-Theme ausgelesen, nicht geschaetzt:
       background-image linear-gradient(90deg,#B8860B,#DAA520,#FFD700,#DAA520,#B8860B)
       color             rgb(255,255,255)
   Bei uns stand dort `background-image: none` und `color: rgb(26,20,8)`.
   ⭐ Der Verlauf IST der Glanz — eine flache Flaeche kann ihn nicht erzeugen.
   ⛔ SPEZIFITAET: mit `html body .ic-collection-badge` greift es NICHT;
   im Browser gegengeprueft, dass `body[class]x4` reicht. */
html body[class][class][class][class] .ic-collection-badge{
  background:linear-gradient(90deg,#B8860B,#DAA520,#FFD700,#DAA520,#B8860B) !important;
  background-size:200% auto !important;
  color:#FFFFFF !important;
  -webkit-text-fill-color:#FFFFFF !important;
}


/* === S304-ABOUT-LUFT-UNTER-DEM-KOPF-2709 ===============================
   Enzo 27.09., zum dritten Mal zu About Us: "ist doch aber oben immer noch
   abgeschnitten, hier muss ja Platz sein zwischen dem Header und dem About Us."

   ⛔ ICH HABE DREIMAL AM FALSCHEN DING GEMESSEN:
   1. Erst den Hero-KASTEN (y 54, Kopf endet 46) - "sitzt richtig", gemeldet.
   2. Dann den TEXT darin (line-height kleiner als die Schrift) - behoben,
      und das war auch richtig, nur nicht sein Punkt.
   3. Gemeint war der ABSTAND dazwischen: 8 px. Der Kasten klebt am Kopf.
   ⭐ Sein Wort "abgeschnitten" beschrieb den Eindruck, nicht die Ursache.
   Wer nur den Wert misst, den er selbst vermutet, bestaetigt seine Vermutung.

   58 px Kopf + 8 px Luft war zu eng; 58 + 26 gibt dem Kasten Raum, ohne die
   Seite nach unten zu schieben. */

html body[class][class] .au-hero{
  margin-top:calc(76px + env(safe-area-inset-top, 0px)) !important;
}


/* === S304-NACHLEGEZEILE-KLEINER-2809 ===================================
   Enzo 28.09., zum wiederholten Mal: „Die Pieces unten zu gross … man sieht
   dann ja gar nicht, was im Korb ist … das soll deutlich kleiner sein.
   Ich hab da schon so oft Feedback gegeben."

   GEMESSEN, woraus die 230 px bestanden (Korb mit BIG STEEL + Geschenk):
       header            10 px
       track            175 px   davon:
         Bildbereich     86 px   (zwei Bilder à 72 x 72)
         Name            14 px
         Gratis-Hinweis  12 px
         Preis           23 px   (19 px Schrift)
       Rest (Balken, Abstaende)  ~45 px
   Und der Scrollbereich fuer die Artikel: nur 413 px. Darum wurde Enzos
   Geschenkkarte unten gekappt - nicht ueberlagert, wie das Bild nahelegt,
   sondern vom `overflow` des Schubfachs abgeschnitten.

   AUDIT ZU DIESER ENTSCHEIDUNG (Enzos Auflage vom 28.09.):
   - Wie wuerde Jarvis entscheiden? Er zaehlt, bevor er urteilt. Deshalb steht
     die Zerlegung oben: der Bildbereich ist mit 86 px der groesste Posten,
     also faengt das Kuerzen dort an - nicht bei der Schrift, die man zuerst
     sieht, aber die am wenigsten Platz kostet.
   - Wie wuerde ich es machen? Der Korb hat eine Aufgabe: zeigen, was drin ist.
     Alles andere ist Gast. Ein Gast, der dem Gastgeber die Sicht nimmt, wird
     kleiner - nicht der Gastgeber.
   - Wie wurde es frueher entschieden? Am 24.09. hat Enzo die Paar-Kacheln
     selbst gewaehlt („V2 ist aber gut") - die FORM bleibt also, nur das Mass
     aendert sich. Das ist der Unterschied zwischen Kuerzen und Umbauen.

   ⛔ IM LAYER, nicht daneben: diese Datei hat 89 `@layer s304`-Marken, und
   eine ungelayerte !important-Regel verliert gegen jede davon - heute beim
   Kategorie-Filter dreimal gemessen, bevor ich es gemerkt habe.
   ⭐ RECHNUNG: Bildbereich 86 -> 54, Preis 23 -> 19, Abstaende straffer
   ⇒ etwa 70 px zurueck an den Scrollbereich (413 -> ~483). */

@layer s304 {
  /* die Bilder: der groesste Posten */
  html body[class][class] .s304-paar .s304-paar__b{
    max-height:54px !important;
    gap:6px !important;
  }
  html body[class][class] .s304-paar .s304-paar__h{
    height:54px !important;
    padding:2px !important;
  }
  html body[class][class] .s304-paar .s304-paar__h img{
    max-height:50px !important;
  }
  /* Text und Preis eine Spur kleiner, aber lesbar */
  html body[class][class] .s304-paar .s304-paar__p{
    font-size:16px !important;
  }
  html body[class][class] .s304-paar .s304-paar__z{
    margin-top:1px !important;
  }
  html body[class][class] .s304-paar{
    padding-bottom:6px !important;
  }
  /* die Zeile insgesamt kompakter */
  html body[class][class] .drawer--cart .ic-cross-sell{
    margin-top:8px !important;
    padding-top:4px !important;
  }
  html body[class][class] cart-drawer .ic-cross-sell__track,
  html body[class][class] .drawer--cart .ic-cross-sell__track{
    gap:8px !important;
  }
}


/* === S304-KORB-KEINE-LEERE-2809 ========================================
   Enzo 28.09.: „die ganze Seite soll genutzt werden. Weisst du? So wie bei
   dem Live-Theme."

   GEMESSEN nach dem Kuerzen der Nachlegezeile: Scrollbereich 462 px, Inhalt
   aber nur etwa 350 px - dazwischen klaffte eine Leere von ~125 px, bevor
   „Das koennte dir auch gefallen" anfing.
   URSACHE: `html body cart-drawer .drawer__body { flex: 1 1 auto }` - die
   erste 1 ist `flex-grow`. Der Bereich WAECHST also in den freien Platz
   hinein, statt sich dem Inhalt anzupassen. Eine zweite Regel in
   `304-custom.css` sagt bereits `flex: 0 1 auto` (richtig), verliert aber.

   AUDIT ZU DIESER ENTSCHEIDUNG:
   - Wie wuerde Jarvis entscheiden? Er wuerde auf den Widerspruch zeigen: zwei
     Regeln, zwei Meinungen, eine gewinnt zufaellig. Also nicht eine dritte
     dazulegen, sondern die richtige gewinnen lassen.
   - Wie wuerde ich es machen? `flex-grow:0` mit `flex-shrink:1`: bei wenig
     Inhalt schrumpft der Bereich auf seine Hoehe, bei viel Inhalt scrollt er.
     Beides ohne feste Zahl, die bei der naechsten Aenderung wieder falsch ist.
   - Wie wurde es frueher entschieden? Die Lehre vom 26.09.: „eine Eigenschaft
     gehoert an EINE Stelle - nicht eine neue Regel dagegensetzen." Darum steht
     hier auch nur diese eine Eigenschaft, nicht ein neuer Block Geometrie.

   ⛔ Im Layer, sonst verliert sie gegen die 89 `@layer s304`-Regeln der Datei. */

@layer s304 {
  html body[class][class] cart-drawer .drawer__body,
  html body[class][class] .drawer--cart .drawer__body{
    flex:0 1 auto !important;
    overflow-y:auto !important;
    min-height:0 !important;
  }
}


/* === S304-KORB-FUSS-UNTEN-2809 =========================================
   Nach dem Schliessen der Leere in der Mitte blieben unten 92 px frei: der
   Fuss endete bei y762, das Schubfach reicht bis 854. Die Luft war also nur
   umgezogen, nicht verschwunden.
   `margin-top:auto` in einer Flex-Spalte schiebt den Fuss an den unteren Rand -
   damit sitzt die Kasse dort, wo der Daumen sie erwartet, und der freie Platz
   liegt zwischen Inhalt und Fuss statt unter dem Knopf.
   ⭐ Kein fester Wert: bei vollem Korb greift es gar nicht, weil dann kein
   Platz uebrig ist. Genau deshalb `auto` und nicht eine Zahl. */

@layer s304 {
  html body[class][class] cart-drawer .drawer__inner,
  html body[class][class] .drawer--cart .drawer__inner{
    display:flex !important;
    flex-direction:column !important;
  }
  html body[class][class] cart-drawer .cart__foot,
  html body[class][class] .drawer--cart .cart__foot,
  html body[class][class] .drawer--cart .drawer__foot{
    margin-top:auto !important;
  }
}


/* === S304-INHALTSSEITEN-RUND-2809 ======================================
   Enzo 28.09.: „Bei About Us … darunter sind teilweise als
   Gestaltungsmoeglichkeiten rechteckige Bilder … es muss sich komplett
   kohaerent an die Style UI von der PDP und der Category Seite und von der
   Homepage anpassen, mit diesen runden Ecken. Also alles, was live ist, muss
   sich daran anpassen, auch wie Impressum und so aussieht, alles."

   GEMESSEN auf /pages/about-us: der Hero-RAHMEN traegt bereits radius 22,
   aber seine Bestandteile nicht - `au-hero-media`, das `img` darin und
   `au-hero-scrim` sind je 370x477 mit radius 0. Deshalb sieht der Kasten oben
   eckig aus, obwohl die Regel dafuer laengst existiert: das Bild liegt UEBER
   der Rundung. Dasselbe Muster auf FAQ und Impressum (`image-wrapper` 230x157).

   AUDIT ZU DIESER ENTSCHEIDUNG:
   - Wie wuerde Jarvis entscheiden? Er wuerde nach dem Muster fragen statt nach
     dem Einzelfall: nicht „dieses Bild runden", sondern „warum ist es eckig".
     Antwort: die Rundung sass am Rahmen, nicht am Inhalt. Also beide.
   - Wie wuerde ich es machen? Ein Radius am Elternteil braucht `overflow:hidden`,
     sonst ragt jedes Kind darueber. Hier bekommen Rahmen UND Inhalt denselben
     Wert - das haelt auch, wenn jemand spaeter `overflow` entfernt.
   - Wie wurde es frueher entschieden? 22 px ist der Hausradius: Korb, Menue,
     Kategorie-Kacheln, Trust-Reihe und der About-Hero tragen ihn bereits.
     Ich fuehre keinen neuen Wert ein, ich ziehe die vergessenen Stellen nach.

   ⛔ Im Layer, sonst verliert es gegen die 89 `@layer s304`-Regeln. */

@layer s304 {
  /* 1 · der About-Hero: Rahmen UND Inhalt */
  html body[class][class] .au-hero,
  html body[class][class] .au-hero-media,
  html body[class][class] .au-hero-scrim,
  html body[class][class] .au-hero-inner{
    border-radius:22px !important;
  }
  html body[class][class] .au-hero{
    overflow:hidden !important;
  }
  html body[class][class] .au-hero-media img,
  html body[class][class] .au-hero img{
    border-radius:22px !important;
  }

  /* 2 · Bilder auf allen Inhaltsseiten (About, FAQ, Impressum, Versand, …) */
  html body[class][class].template-page .image-wrapper,
  html body[class][class].template-page .image-wrapper img,
  html body[class][class].template-page .au-bild,
  html body[class][class].template-page figure img,
  html body[class][class].template-page .rte img{
    border-radius:18px !important;
    overflow:hidden !important;
  }

  /* 3 · Kaesten und Abschnitte auf Inhaltsseiten */
  html body[class][class].template-page .au-section,
  html body[class][class].template-page .au-karte,
  html body[class][class].template-page .s304-karte,
  html body[class][class].template-page .s304-faq__category,
  html body[class][class].template-page .page-content > div[class*="block"]{
    border-radius:22px !important;
  }
}


/* === S304-MENUE-HELLES-GLAS-2809 =======================================
   Enzo 28.09.: „Ich finde helles Glas im Menue auf jeden Fall besser.
   So soll es im Warenkorb ja auch aussehen."

   ⭐ KEINE NEUEN WERTE ERFUNDEN. Am selben Tag am offenen Warenkorb
   ausgelesen: Grund rgba(255,255,255,.58), Weichzeichner blur(42px)
   saturate(1.3), Schrift rgb(33,33,33). Genau die stehen hier.
   Ein „so ist es gut" von Enzo ist ein MASSSTAB, kein Stimmungsbild.

   ⛔ WARUM DIESER BLOCK UEBERHAUPT NOETIG IST: das Blatt wird hell, also
   verschwindet jede weisse Schrift darauf. Gemessen tragen SECHS Stellen
   helle Schrift - die Bewertungszeile, die Kategorielinks, die Fusszeilen-
   links, die Sprachwahl, der Schliesser und das LOGO (ein weisses Bild,
   das keine Schriftfarbe kennt und deshalb umgedreht wird).

   ⛔ IM LAYER, sonst verliert alles: eine ungelayerte !important-Regel
   verliert gegen JEDE Regel in einem @layer - und diese Datei hat 89. */

@layer s304 {
  /* die Kategoriekapseln: deckender, damit die dunkle Schrift traegt */
  html body[class][class][class] .menu-304__primary-link{
    background: rgba(255,255,255,.55) !important;
    color: rgb(33,33,33) !important;
    border-color: rgba(21,19,15,.12) !important;
  }
  /* Bewertungszeile, Fusszeilenlinks, Sprachwahl */
  html body[class][class][class] .drawer--header .menu-trust-badge__text,
  html body[class][class][class] .drawer--header .menu-304__secondary-pinned-link,
  html body[class][class][class] .drawer--header .popout__toggle__text,
  html body[class][class][class] .drawer--header .drawer__head,
  html body[class][class][class] .drawer--header .drawer__foot{
    color: rgb(33,33,33) !important;
  }
  /* der Schliesser und die Sterne sind Zeichnungen, keine Schrift */
  html body[class][class][class] .drawer--header .drawer__close svg,
  html body[class][class][class] .drawer--header .drawer__close svg *,
  html body[class][class][class] .drawer--header .menu-trust-badge svg{
    color: rgb(33,33,33) !important;
    stroke: rgb(33,33,33) !important;
    fill: currentColor !important;
  }
  /* ⭐ Das Logo ist ein WEISSES BILD - eine Schriftfarbe erreicht es nicht.
     Umdrehen macht aus dem weissen Zug einen dunklen, ohne zweite Datei. */
  /* Das Logo ist ein weisses Bild - eine Schriftfarbe erreicht es nicht.
     Am 28.09. gemessen: es liegt NICHT in .drawer__head, deshalb greift
     ein Selektor darauf ins Leere. Das ganze Blatt abdecken ist hier
     gefahrlos, weil im Menue ausser dem Logo kein Bild mehr steht
     (Enzo 28.09.: nur Kategorienamen, 0 Bilder gemessen). */
  html body[class][class][class] .drawer--header .drawer__inner img,
  html body[class][class][class] mobile-menu .drawer__inner img{
    filter: invert(1) brightness(.22) !important;
  }
  /* Der Schleier dahinter darf jetzt nicht mehr aufhellen, sonst steht
     helles Glas auf hellem Nebel und der Durchblick ist wieder weg. */
  html body[class][class][class][class][class] .underlay.drawer__underlay{
    background: rgba(20,16,12,.18) !important;
    -webkit-backdrop-filter: blur(8px) !important;
    backdrop-filter: blur(8px) !important;
  }
}


/* === S304-VERSANDZIEL-AUSSEHEN-2809 ===================================
   Enzo 28.09. an seinem Screenshot: „du hast die Masse komplett verhauen."
   Er hatte recht. Das Snippet war eingebaut und hatte KEINE einzige Regel:
   gemessen 16px Schrift, 0 Polster, 402 px breit bei x=0 — also ueber die
   volle Fensterbreite, waehrend jede Nachbarkarte 370 px bei x=16 sitzt.
   Zwei Zeilen fetter Fliesstext quer durch die Seite.

   ⛔ WIE DAS DURCHKAM: mein Test hat `textContent` geprueft — „steht 13,99
   da?" — und nie, wie es aussieht. Genau die eigene Regel verletzt:
   was gemessen wird sitzt, was nicht gemessen wird wuerfelt. Nach dem
   Einbau habe ich kein einziges Bild der PDP angesehen.

   ⭐ DIE WERTE SIND AUSGELESEN, nicht erfunden (28.09., royal-grace):
   Nachbarkarten `margin: 10px 16px 0`, Breite 370 bei x=16, Radius 22.
   Hier bewusst KEINE weitere weisse Karte — Enzos Freigabe vom 19.09.
   sagt „Zeilen mit Haarlinie statt Kasten". Also eine schlanke Zeile in
   derselben Spur, damit die Kante stimmt.

   ⛔ Im Layer, sonst verliert es gegen die 89 gelayerten Regeln der Datei. */

@layer s304 {
  html[class] body[class][class][class][class][class] .s304-versandziel{
    display: flex !important;
    flex-wrap: wrap !important;
    align-items: baseline !important;
    gap: 4px 8px !important;
    margin: 9px 16px 0 !important;
    padding: 0 !important;
    font-size: 12.5px !important;
    line-height: 1.45 !important;
    color: #5A5450 !important;
    letter-spacing: -.1px !important;
  }
  html[class] body[class][class][class][class][class] .s304-versandziel b{
    font-weight: 600 !important;
    color: #15130F !important;
  }
  /* Die Gratis-Zusage ist die gute Nachricht — sie bekommt den Goldakzent,
     den Enzo am 19.09. als Hausakzent abgenommen hat. Faellt bei Laendern
     ohne Freigrenze ganz weg, das Snippet rendert sie dort nicht. */
  html[class] body[class][class][class][class][class] .s304-versandziel__frei{
    color: #8A6B2F !important;
    font-weight: 600 !important;
  }

  /* Auf der Kategorieseite (kurz-Form) sitzt sie ueber der Filterleiste und
     muss deren Spur treffen, nicht die der Produktkarten. */
  html[class] body[class][class][class][class][class] .s304-filter + .s304-versandziel,
  html[class] body.template-collection[class][class][class][class] .s304-versandziel{
    margin: 10px 16px 6px !important;
    font-size: 12.5px !important;
  }
}


/* === S304-KORB-LOCH-ZU-2809 ==========================================
   Am Bild gesehen (28.09.), nicht gemessen erraten: zwischen „Das koennte
   dir auch gefallen" und „Zwischensumme" klaffen 112 px Leere.

   ⛔ URSACHE SIND ZWEI EIGENE REGELN, DIE SICH WIDERSPRECHEN:
     S304-KORB-KEINE-LEERE-2809  .drawer__body{flex:0 1 auto}  - nicht wachsen
     S304-KORB-FUSS-UNTEN-2809   .cart__foot{margin-top:auto}  - nach unten
   Der Koerper bleibt kurz, der Fuss springt ans Ende, dazwischen steht nichts.
   Gemessen: margin-top des Fusses = 112,406 px. Genau das Loch.

   ⭐ AUFLOESUNG: der Koerper DARF wachsen. Dann fuellt er den Raum, der Fuss
   sitzt weiterhin unten - aber ohne Loch davor. Enzos Ansage bleibt erfuellt
   („die ganze Seite soll genutzt werden"), nur ohne die Luecke. */

@layer s304 {
  /* ⛔⛔ AM 29.09. ZURUECKGENOMMEN. Am 28.09. hielt ich die Luecke zwischen
     Empfehlungen und Fuss fuer ein Loch und habe den Fuss angeheftet. Am
     alten Theme gemessen: dort ist dieselbe Luecke 256 px gross — und genau
     deshalb sitzt die Kasse dort UNTEN. Enzo: „das ist ja viel viel besser."
     Eine Absicht fuer einen Defekt gehalten und zweimal dagegen gebaut. */
  html body[class][class][class] cart-drawer .drawer__body,
  html body[class][class][class] .drawer--cart .drawer__body{
    flex: 0 1 auto !important;
  }
  html body[class][class][class] cart-drawer .cart__foot,
  html body[class][class][class] .drawer--cart .cart__foot,
  html body[class][class][class] .drawer--cart .drawer__foot{
    position: static !important;
    margin-top: auto !important;
  }
  html body[class][class][class] cart-drawer .drawer__inner,
  html body[class][class][class] .drawer--cart .drawer__inner{
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
  }
}


/* === S304-ENZO-2109-2809 =============================================
   Enzos Liste vom 28.09., 21:09 — woertlich:

   1. „Das ist auch unnoetig das [Deutsch] da zu haben, weil wir haben das ja
      sogar drin, dass das automatisch uebersetzt wird."
      ⇒ Der Sprachwaehler im Menuefuss verschwindet. Er wird nur ausgeblendet,
      nicht entfernt: das Markup gehoert dem Theme, und `localization` haengt
      an Shopify Markets — wer es aus dem Liquid schneidet, bricht die
      Laendererkennung, die die Versandleiste braucht.

   2. „oben der Header ist wieder unten nicht rund genug"
      ⇒ gemessen 22 px, jetzt 30 px. */

@layer s304 {
  html body[class][class][class] .drawer--header .drawer__foot .popout,
  html body[class][class][class] .drawer--header .drawer__foot localization-form,
  html body[class][class][class] mobile-menu .drawer__foot localization-form,
  html body[class][class][class] .drawer--header .drawer__foot form[action*="localization"]{
    display: none !important;
  }
  html body[class][class][class] header.theme__header .header__mobile{
    border-radius: 30px !important;
  }
}


/* === S304-KORB-DICHTE-WIE-LIVE-2809 ==================================
   Enzo, 28.09. 21:09: „Das koennte dir auch gefallen. Darf nicht so gross
   sein. Man sieht die beiden Produkte, die im Warenkorb sind, ja gar nicht.
   Das muss viel kleiner sein und viel mehr die gesamte Seite ausnutzen.
   So wie der aktuelle Live-Theme Warenkorb."

   ⭐ AM LIVE-KORB AUSGELESEN, nicht geschaetzt (28.09., frischer Context):
     Posten       Hoehe 111 · Bild 90x90 · padding 8 · radius 12 · Schrift 13,2
     Empfehlungen Hoehe 124 · Bild 107x64 · padding 8/10/6 · margin 6/12/8
     deren Titel  9 px
   ⛔ Uebernommen sind die GROESSEN, nicht die Optik — das Glas hat Enzo
   abgenommen, die Ansage war „kleiner", nicht „anders". */

@layer s304 {
  /* ── Die Empfehlungen: der groesste Platzfresser ─────────────────── */
  html body[class][class][class] .drawer--cart .ic-cross-sell,
  html body[class][class][class] cart-drawer .ic-cross-sell{
    padding: 8px 10px 6px !important;
    margin: 6px 12px 8px !important;
    border-radius: 12px !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell > *:first-child{
    font-size: 9px !important;
    letter-spacing: .12em !important;
    text-transform: uppercase !important;
    margin: 0 0 4px !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell img{
    max-height: 64px !important;
    width: auto !important;
    object-fit: contain !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="preis"],
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="price"]{
    font-size: 13px !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="titel"],
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="title"]{
    font-size: 12px !important;
  }

  /* ── Die Posten: dichter, damit man sie ueberhaupt sieht ─────────── */
  html body[class][class][class] .drawer--cart .cart__item,
  html body[class][class][class] cart-drawer .cart__item{
    padding: 8px !important;
    margin: 0 12px 8px !important;
    border-radius: 12px !important;
    font-size: 13.2px !important;
  }
  html body[class][class][class] .drawer--cart .cart__item img,
  html body[class][class][class] cart-drawer .cart__item img{
    max-width: 90px !important;
    max-height: 90px !important;
    object-fit: contain !important;
  }
  /* Die Mengenwahl und „Entfernen" duerfen den Posten nicht aufblaehen. */
  /* ac2 01.10.: KEINE Skalierung mehr. [class*=quantity] traf auch die Knoepfe und das Feld darin:
     0,86 hoch drei = 0,64, und transform ueberschrieb das translateY(-50%) des Themes an -/+,
     die Knoepfe rutschten eine halbe Hoehe unter die Zahl (gemessen: Tippflaeche minus 18x9 px). */
  html body[class][class][class] .drawer--cart .cart__item .cart__quantity-wrapper{
    margin: 2px 0 !important;
  }
  html body[class][class][class] .drawer--cart .cart__item a[href*="change"],
  html body[class][class][class] .drawer--cart .cart__item button[class*="remove"],
  html body[class][class][class] .drawer--cart .cart__item [class*="entfernen"]{
    font-size: 10.5px !important;
    letter-spacing: .08em !important;
  }

  /* ── Der Fuss wie live: schmaleres Polster, mehr Platz fuer Inhalt ── */
  html body[class][class][class] .drawer--cart .cart__foot,
  html body[class][class][class] .drawer--cart .drawer__foot{
    padding: 0 12px 12px !important;
  }
}


/* === S304-ABOUT-ZEILE-UND-NOTCH-2809 =================================
   Enzo, 28.09. 21:09: „About Us ist wieder oben das Ding abgeschnitten"
   und „wenn ich runterscroll auf der Kategorie und PDP Seite, ist die Notch
   oben wieder andersfarbig. Die soll ja da weiss sein."

   1 · ABOUT US — gemessen, nicht geraten: `.au-h2` steht auf 24 px Schrift
   bei 24,48 px Zeilenhoehe, Verhaeltnis 1,02. Darunter kappt der Browser die
   Oberlaengen (das A, das f, das k). Betroffen sind SECHS Ueberschriften,
   nicht die eine vom Screenshot. Am 27.09. hatte ich denselben Fehler schon
   einmal behoben — aber nur am Hero-Text, nicht an diesen hier.

   2 · NOTCH — gemessen liegt bei y=1 der weisse `body`. Im Safari klebt beim
   Scrollen aber die dunkle Ankuendigungsleiste in der Notch-Zone, und die
   Statusleiste nimmt deren Farbe. Ein eigener weisser Streifen in der
   safe-area-Zone loest das unabhaengig davon, was darunter scrollt.
   ⛔ Er liegt ueber allem (z-index) und ist nur so hoch wie die Einbuchtung —
   auf Geraeten ohne Notch ist `env(safe-area-inset-top)` gleich 0, dann ist
   der Streifen unsichtbar und kostet nichts. */

@layer s304 {
  html body[class][class][class] .au-h2,
  html body[class][class][class] .au-h3,
  html body[class][class][class] .template-page h2{
    line-height: 1.22 !important;
    padding-top: .04em !important;
  }
}

/* Der Notch-Streifen steht bewusst NICHT im Layer: er soll gegen jede
   Theme-Regel gewinnen, auch gegen spaeter hinzugefuegte. */
body::before{
  content: "" !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: env(safe-area-inset-top, 0px) !important;
  background: #FFFFFF !important;
  z-index: 99999 !important;
  pointer-events: none !important;
}


/* === S304-THUMBS-IN-DIE-SPUR-2809 ====================================
   Enzo, 28.09. 21:09: „die Thumbnails unten unter dem Produkt gehen viel
   zu weit."

   ⭐ GEMESSEN: `.product__thumbs__holder` sitzt bei x=0 mit 402 px Breite,
   sein Inhalt ist 556 px lang. Er laeuft also randlos ueber die ganze
   Fensterbreite, waehrend jede Karte der Seite bei x=16 beginnt und bei
   386 endet. Am rechten Rand wird hart abgeschnitten.

   ⭐ Die Leiste bleibt scrollbar — das ist richtig, es sind mehr Bilder als
   Platz. Sie bekommt nur dieselbe Spur wie alles andere und rastet an den
   Bildern ein, damit nie ein halbes Bild am Rand steht. */

@layer s304 {
  html body[class][class][class] .product__thumbs__holder{
  /* ⛔ 30.09.: padding-left 16px -> 0. Gemessen stand die Reihe
     korrekt bei x=30 (Textspalte), das erste Bild aber bei x=46 -
     genau diese 16 px Polster. Enzo: "erstes Bild buendig an der
     Inhaltsspalte". Das rechte Polster bleibt, es traegt den
     sauberen Schnitt an der Kartenkante. */
    padding-left: 0 !important;
    padding-right: 16px !important;
    scroll-padding-left: 0 !important;
    scroll-snap-type: x proximity !important;
    -webkit-overflow-scrolling: touch !important;
  }
  html body[class][class][class] .product__thumbs__holder .product__thumb{
    scroll-snap-align: start !important;
  }
  /* Der innere Traeger hatte einen eigenen Einzug von 30 px — der kommt
     zum neuen Polster hinzu und schoebe die Reihe aus der Spur. */
  html body[class][class][class] .product__thumbs__holder > .product__thumbs{
    padding-left: 0 !important;
    padding-right: 0 !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }
}


/* === S304-EMPFEHLUNGEN-WIE-FRUEHER-2909 ==============================
   Enzo, 29.09.: „Das war viel uebersichtlicher mit 'Das koennte dir auch
   gefallen'. Jetzt nimmt das zu viel Platz weg."

   ⭐ AM ALTEN THEME GEMESSEN (188690432381), Stueck fuer Stueck:
                      alt      neu      Differenz
     Gesamthoehe      124 px   175 px   +51
     Kopfzeile         18       10       -8
     Track             84      128      +44   <- hier sitzt es
     Wischleiste        -        6       +6   (gab es alt nicht)
     Bild          107x64    64x64      breit statt quadratisch
   Anteil an der Schublade: alt 14 %, neu 20 %.

   ⭐ Der Track ist hoch, weil Titel, Zusatz und Preis UNTEREINANDER stehen.
   Alt lagen die Bilder breit und flach daneben. Die Karte wird wieder
   flach: engere Zeilen, kleinere Zusatzzeile, keine Wischleiste. */

@layer s304 {
  html body[class][class][class] .drawer--cart .ic-cross-sell__track{
    /* Keine max-height: sie kappt den Preis. Die Hoehe kommt aus dem
       Inhalt - siehe die engeren Zeilen und das kleinere Bild unten. */
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell__track > *{
    padding-top: 2px !important;
    padding-bottom: 2px !important;
  }
  /* Titel, Zusatz und Preis dichter setzen — das sind die 44 px */
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="titel"],
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="title"]{
    font-size: 11.5px !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="dazu"],
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="zusatz"],
  html body[class][class][class] .drawer--cart .ic-cross-sell small{
    font-size: 10px !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="preis"],
  html body[class][class][class] .drawer--cart .ic-cross-sell [class*="price"]{
    font-size: 12.5px !important;
    line-height: 1.15 !important;
    margin: 0 !important;
  }
  html body[class][class][class] .drawer--cart .ic-cross-sell img{
    max-height: 48px !important;  /* 56 liess den Preis 5 px ueberstehen */
  }
  /* Die Wischleiste gab es im alten Korb nicht — sie kostet 6 px. */
  html body[class][class][class] .drawer--cart .ic-cross-sell .s304-wischbar{
    display: none !important;
  }
}


/* === S304-NOTCH-IMMER-WEISS-2909 =====================================
   Enzo, zum wiederholten Mal: „die Notch soll immer weiss bleiben."

   ⭐ ZWEI URSACHEN, gemessen am 29.09. — es war nie eine einzige:
     Kategorie  `.ic-top-ticker`  rgb(0,0,0)    absolute  z 2400  bei y=0
     PDP        `.loading`        rgb(11,22,22) fixed     z 99999 ganzflaechig
   Safari faerbt die Statusleiste nach dem, was unter der Einbuchtung liegt,
   sobald es die `theme-color` ignoriert — und genau das tut es, wenn der
   Grund dunkel ist. Das steht seit dem 24.09. so im Layout-Kommentar.

   ⛔ MEIN ERSTER VERSUCH VERLOR LAUTLOS: ich hatte `body::before` benutzt —
   das Theme hat dort schon eines. Gemessen kam am Ende z-index -1 und ein
   grauer Grund heraus, also genau das Gegenteil. `html::before` ist frei.

   ⭐ Auf Geraeten ohne Einbuchtung ist `env(safe-area-inset-top)` gleich 0,
   dann ist der Streifen unsichtbar und kostet nichts. */

html::before{
  content: "" !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  height: env(safe-area-inset-top, 0px) !important;
  background: #FFFFFF !important;
  z-index: 2147483647 !important;
  pointer-events: none !important;
}

/* Zusaetzlich die beiden Quellen selbst entschaerfen — ein Streifen allein
   reicht nicht, wenn Safari den Ton der Flaeche darunter mischt. */
@layer s304 {
  html body[class][class][class] .loading{
    background: #FFFFFF !important;
  }
  html body[class][class][class] .ic-top-ticker{
    padding-top: env(safe-area-inset-top, 0px) !important;
    background-clip: padding-box !important;
  }
}


/* === S304-KACHEL-BUENDIG-2909 ========================================
   Enzo, 29.09.: „die Preise sind nicht eingerueckt — die muessen genau auf
   der Hoehe sein von dem Plus, und das Plus genau auf der Hoehe von den
   Sternebewertungen." Und: „Die Sternebewertungen sehen random aus, die
   muessen einfach in schwarz sein."

   ⭐ GEMESSEN an der Bracelets-Kachel (29.09.):
     Karte    x   8 … 197
     Sterne   x  14 … 126
     Plus     x 153 … 197
     Titel    x  26 … 145   12 px zu weit rechts
     Preis    x 153 … 179   18 px zu weit links
   Ursache ist ein DOPPELTER Innenabstand: `.product-item__info` rueckt 9 px
   ein, und `.product-link` darin noch einmal 9 px. Die Sternereihe liegt
   daneben und hat nur den einen — daher der Versatz.

   ⭐ Die Sterne tragen `fill: rgb(33,33,33)`, sind also fast schwarz — aber
   darueber liegt `filter: invert(1)`, der sie zu Weiss dreht. Auf hellem
   Grund verschwinden sie halb, auf dunklem leuchten sie. Das ist das
   'random'. Der Filter faellt weg, die Farbe bleibt. */

@layer s304 {
  /* 1 · Der innere Einzug faellt weg — die Zeile sitzt dann in derselben
     Spur wie Sterne und Plus. */
  html body[class][class][class] .product-item .product-link{
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  /* ⛔ 6 px reichten nicht: gemessen sass die Infozeile bei x=17, die
     Sterne bei 14. Der Unterschied kommt NICHT aus dem Polster der Zeile,
     sondern aus dem der Karte. Deshalb hier negativ ausgleichen, statt eine
     Zahl zu raten: 3 px links, 9 px rechts - genau die gemessene Differenz. */
  html body[class][class][class][class] .product-item .product-item__info,
  html body[class][class][class][class] .grid-item .product-item__info{
    padding-left: 6px !important;
    padding-right: 6px !important;
    margin-left: -3px !important;
    margin-right: -9px !important;
  }
  /* Die Infozeile selbst wird zur Flex-Zeile, damit Titel links und Preis
     rechts an den Kanten sitzen - dieselben Kanten wie Sterne und Plus. */
  /* Kein > : der Link ist kein direktes Kind, gemessen am 29.09. */
  html body[class][class][class][class] .product-item__info .product-link,
  html body[class][class][class][class] .product-item__info a[class*=link]{
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    width: 100% !important;
    padding: 0 !important;
  }
  /* 2 · Preis rechts buendig mit dem Plus, Titel links mit den Sternen */
  html body[class][class][class] .product-item .product-link{
    display: flex !important;
    align-items: baseline !important;
    justify-content: space-between !important;
    gap: 8px !important;
  }
  html body[class][class][class] .product-item [class*="wc-price"],
  html body[class][class][class] .product-item [class*="price"]{
    text-align: right !important;
    flex: 0 0 auto !important;
  }

  /* 3 · Die Sterne: der Umkehrfilter faellt weg, die dunkle Farbe bleibt. */
  html body[class][class][class] .product-item svg[class*="star"],
  html body[class][class][class] .product-item [class*="stern"] svg,
  html body[class][class][class] .product-item [class*="rating"] svg,
  html body[class][class][class] .grid-item [class*="review"] svg{
    filter: none !important;
    fill: #212121 !important;
    color: #212121 !important;
  }
  /* Im Menue dasselbe — dort stand derselbe Umkehrfilter. */
  html body[class][class][class] .menu-trust-badge svg,
  html body[class][class][class] .menu-trust-badge__stars svg{
    filter: none !important;
    fill: #212121 !important;
    color: #212121 !important;
  }
}


/* === S304-HEADER-NICHT-ABSCHNEIDEN-2909 ==============================
   Enzo, mehrfach: „der Header ist unten nicht genau rund, so eckig
   abgeschnitten, da wo das Logo ist."

   ⭐ URSACHE, gemessen am 29.09. — es lag NIE am Radius:
     .header__mobile  (die weisse Pille)  y 5 … 49   border-radius 30 px
     .theme__header   (ihr Container)     y   … 46   overflow: hidden, radius 0
   Die Pille steht DREI Pixel ueber ihren Container hinaus, und der schneidet
   sie mit einer eckigen Kante ab. In genau diesen drei Pixeln sitzt die
   untere Rundung.

   ⛔ Deshalb hat jede Radius-Erhoehung nichts gebracht: ich habe zweimal die
   falsche Groesse verstellt (22 → 30 px), waehrend das Problem eine Schicht
   darueber lag. Eine gemessene Zahl kann stimmen und trotzdem am falschen
   Objekt gemessen sein.

   ⭐ `overflow: visible` statt einer groesseren Hoehe: der Container soll
   nichts beschneiden, er ist nur eine Huelle. Ein Hoehenwert waere eine
   zweite Zahl, die beim naechsten Umbau wieder auseinanderlaeuft. */

@layer s304 {
  html body[class][class][class] header.theme__header{
    overflow: visible !important;
  }
  /* Die Pille bringt ihren eigenen Schatten mit — der braucht denselben
     Freiraum, sonst wird er an derselben Kante gekappt. */
  html body[class][class][class] header.theme__header .header-sections,
  html body[class][class][class] header.theme__header > *{
    overflow: visible !important;
  }
}


/* === S304-KORBKOPF-WIE-ALT-2909 ======================================
   Enzo, 29.09.: „das X muss weiter oben rechts in die Ecke, beziehungsweise
   das Logo und diese Trust-Icons muessen weiter nach links."

   ⭐ AM ALTEN THEME GEMESSEN:
     Logo   alt x 16   jetzt x 32   -> 16 px zu weit rechts
     Trust  alt x 76   jetzt x 92   -> 16 px zu weit rechts, und 32 statt 22 hoch
     X      alt endet bei -8, jetzt bei -16 -> 8 px zu weit links */

@layer s304 {
  html body[class][class][class] .drawer--cart .drawer__head{
    padding-left: 12px !important;
    padding-right: 8px !important;
  }
  /* ⭐ Der Einzug sass nicht am Logo, sondern an seinem Traeger:
     .drawer__heading hat margin-left 16px. Zusammen mit den 12px des
     Containers und 4px eigenem Polster ergibt das genau die gemessenen 32.
     Im alten Theme sitzt das Logo bei 16. */
  html body[class][class][class] .drawer--cart .drawer__heading{
    margin-left: 0 !important;
    padding-left: 4px !important;
  }
  html body[class][class][class] .drawer--cart .drawer__head img,
  html body[class][class][class] .drawer--cart [class*="logo"]{
    margin-left: 0 !important;
  }
  html body[class][class][class] .drawer--cart [class*="trust"],
  html body[class][class][class] .drawer--cart [class*="usp"]{
    margin-left: -8px !important;
    max-height: 24px !important;
  }
  html body[class][class][class] .drawer--cart .drawer__close{
    margin-right: -6px !important;
    margin-top: -2px !important;
  }
}


/* === S304-ZWEI-KACHELN-2909 ===========================================
   Enzo 29.09.: *„mach bitte nur … wirklich nur zwei Vorschlaege gehen, dann ist
   auch der zweite nicht abgehackt."*
   ⛔ GEMESSEN am Live-Korb: vier Kacheln a **182 px** in einer **358-px**-Spur,
   scrollWidth 780 ⇒ die zweite wurde bei 380 px gekappt (**38 px** Ueberlauf).
   ⭐ Zwei Kacheln a `(100% - 10px)/2` = 174 px ergeben **Ueberlauf 0** (gemessen).
   ⛔ Die Anzahl steht im JS (`s304PaareAus(..., 1)`), die Breite hier — beide
   gehoeren zusammen; wer eine aendert, misst die andere nach.
   ⛔ Der Auslauf `::after` (flex 0 0 12px) faellt weg: er war fuer die Wisch-Spur
   da, und bei zwei passenden Kacheln gibt es nichts mehr zu wischen. */
@layer s304 {
  html[class] body[class] .drawer--cart .ic-cross-sell__track{
    gap: 10px !important;
    overflow-x: hidden !important;
  }
  /* ⛔ 29.09.: der Parallelbau stand hier und verlor gegen die [class]x4-Regel
     oben (Ueberlauf blieb 16 px). Entfernt — die Breite steht jetzt an EINER
     Stelle, in der Quellregel selbst. */
  html[class] body[class] .drawer--cart .ic-cross-sell__track::after{
    content: none !important;
    display: none !important;
  }
  /* Nichts mehr zu schieben ⇒ die Pfeile haben keine Aufgabe mehr. */
  html[class] body[class] .drawer--cart .ic-cross-sell__arrows{ display: none !important; }
}

/* === S304-KAUFEN-UND-GESCHENKT-2909 ===================================
   Der Wortlaut und die Zuordnung stehen im JS-Baustein gleichen Namens.
   ⛔ WARUM DAS AUSBLENDEN HIER STEHT UND NICHT DORT: ROYAL GRACE zeigte den
   Preis zweimal (links `.cart__price`, rechts `.cart__item__price`). Ein
   Inline-Stil darauf ueberlebt den Neuaufbau der Zeile durch das Theme nicht —
   am 29.09. gemessen. Eine Regel mit `:has()` greift auch danach.
   ⭐ Sie trifft nur Zeilen, die wirklich ein Etikett bekommen haben; ein
   einzelnes Stueck ohne Bundle behaelt seinen Preis unveraendert. */
@layer s304 {
  html[class] body[class] .drawer--cart .cart__item:has(.s304-rolle) .cart__price{
    display: none !important;
  }
  html[class] body[class] .drawer--cart .cart__item:has(.s304-rolle) .cart__item__price{
    display: block !important;
    visibility: visible !important;
    text-align: right !important;
  }
  html[class] body[class] .drawer--cart .s304-rolle{
    display: block !important;
    margin-top: 4px !important;
    font-size: 9.5px !important;
    line-height: 1.1 !important;
    letter-spacing: .13em !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    color: #8A8580 !important;
    text-align: right !important;
    white-space: nowrap !important;
  }
  html[class] body[class] .drawer--cart .s304-rolle--gift{ color: #123029 !important; }
  html[class] body[class] .drawer--cart .cart__item__price .s304-alt{
    opacity: .45 !important;
    text-decoration: line-through !important;
    font-weight: 400 !important;
  }
  html[class] body[class] .drawer--cart .cart__item__price .s304-frei{ font-weight: 600 !important; }
}


/* === S304-KEINE-LEERE-IM-KORB-2909 ====================================
   Enzo 29.09.: *„Jetzt ist das ja wieder viel zu, dass man es nicht sieht."*

   ⛔ DIE MESSUNG, die drei Anlaeufe entschieden hat (ein Armband im Korb):
   • vorher, mit den Bundle-Zeilen: kein Loch (sie fuellten es)
   • ohne sie:                      **304 px** Loch zwischen Vorschlaegen und Kasse
   • Vorschlaege ans Koerperende:   Loch **320 px**, nur nach OBEN verschoben —
     eine nackte Flaeche zwischen dem einen Posten und den Vorschlaegen, und
     damit schlechter als vorher. Zurueckgenommen.
   • diese Fassung:                 Loch oben **16 px**, unten **6 px**.

   ⭐ DER PREIS DAFUER, offen gesagt: die Kasse klebt nicht mehr am unteren
   Bildrand, wenn wenig im Korb liegt — sie folgt direkt auf die Vorschlaege.
   Bei zwei und mehr Posten steht sie wieder unten. Enzo hatte das Kleben am
   29.09. gelobt („das ist ja viel viel besser"), aber gegen eine leere Flaeche
   von 300 px ist das Kleben nicht zu halten. Er entscheidet.
   ⭐ Rueckweg zum Kleben: die letzte Regel hier loeschen (`margin-top: 0`).
   ==================================================================== */
@layer s304 {
  /* Der Koerper bleibt so hoch wie sein Inhalt — dehnen wuerde das Loch nur
     nach oben schieben (gemessen, siehe oben). */
  html body[class][class][class][class][class] .drawer--cart .drawer__body,
  html body[class][class][class][class][class] cart-drawer .drawer__body{
    flex: 0 1 auto !important;
  }
  html body[class][class][class][class][class] .drawer--cart .drawer__body > .ic-cross-sell,
  html body[class][class][class][class][class] cart-drawer .drawer__body > .ic-cross-sell{
    margin-top: 6px !important;
  }
  /* ⛔ Diese Kette muss die `margin-top: auto`-Regel von S304-KASSE-UNTEN-2809
     schlagen ([class]x9) — daher [class]x10. Wer sie aendert, misst beide. */
  /* ⛔⛔ 29.09. abends ZURUECKGENOMMEN, auf Enzos Wort: *„Bei wenig Inhalt soll
     die Kasse natuerlich unten kleben."* Damit gilt wieder `margin-top: auto`
     aus S304-KASSE-UNTEN-2809 — und die Luecke darueber ist die bewusste Folge
     (bei einem Artikel gemessen: 304 px). Enzo kennt sie und will sie.
     ⭐ Rueckweg zur dichten Fassung: die drei Zeilen unten wieder einkommentieren. */
  /* html body[class]x10 .drawer--cart .cart__foot,
     html body[class]x10 cart-drawer .cart__foot,
     html body[class]x10 .drawer--cart .drawer__foot{ margin-top: 0 !important; } */
}


/* === S304-DIE-SCHWARZE-KACHEL-2909 ====================================
   Enzo 29.09.: *„Ich will dieses Einkaufen eingeschenkt, wirklich mit dieser
   schwarzen Kachel drumherum, wie es bei uns auf den Produktseiten ist."*

   ⭐ DAS VORBILD, nicht neu erfunden: auf der Kategorieseite sitzt
   „1 KAUFEN · 1 GESCHENKT" als **Pille** im dunklen Kopfbild — weisse
   Flaeche, schwarze Schrift, voll gerundet. Im Warenkorb ist der Grund weiss,
   also dreht sich das Paar um: **schwarze Flaeche, weisse Schrift**. Gleiche
   Form, gleiche Sperrung, gleiche Grossbuchstaben.

   ⛔ Die Werte stammen aus `.s304-kb__t2` (gemessen 29.09. auf
   /collections/bracelets): 12,5 px, Gewicht 600, uppercase. Hier eine Stufe
   kleiner (10 px), weil die Kachel in der Preisspalte des Warenkorbs sitzt
   und nicht in einer Kopfzeile.

   ⭐ Das Geschenk bekommt dieselbe Kachel in Tannengruen — die Hausfarbe
   des Kaufknopfes. So liest man auf einen Blick, welche Zeile bezahlt wird
   und welche nicht, ohne den Preis zu vergleichen.
   ==================================================================== */
@layer s304 {
  /* ⛔ 29.09., am Bild gesehen: als `inline-block` setzt sich die Kachel NEBEN
     den Preis, und „1 GESCHENKT" (11 Zeichen) lief rechts aus dem Schubfach
     heraus — sichtbar abgeschnitten. `nowrap` verhindert den Umbruch, also
     muss die Spalte selbst umbrechen: die Preisspalte wird eine Spalte mit
     rechtsbuendigen Kindern, dann sitzt die Kachel unter dem Preis.
     ⭐ Die Kachel bleibt `inline-block`, damit sie nur so breit ist wie ihr
     Text — eine Pille, kein Balken ueber die ganze Spalte. */
  html[class] body[class] .drawer--cart .cart__item:has(.s304-rolle) .cart__item__price{
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-end !important;
    gap: 0 !important;
  }
  html[class] body[class] .drawer--cart .s304-rolle{
    display: inline-block !important;
    align-self: flex-end !important;
    max-width: 100% !important;
    margin-top: 5px !important;
    padding: 3px 9px 4px !important;
    border-radius: 999px !important;
    background: #0A0A0A !important;
    color: #FFFFFF !important;
    font-size: 10px !important;
    line-height: 1.15 !important;
    letter-spacing: .1em !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    white-space: nowrap !important;
    text-align: center !important;
  }
  html[class] body[class] .drawer--cart .s304-rolle--gift{
    background: #123029 !important;
    color: #FFFFFF !important;
  }
}


/* === S304-KACHELN-IM-GLAS-2909 ========================================
   Enzo 29.09.: *„wir haben schon weisse Freisteller, da muessen die Kacheln auch
   weiss sein. In diesem transparent Look wie halt im Burger Menue, ne."*
   und *„muessen die freistehen … die Freisteller muessen besser aussehen."*

   ⭐ DIE WERTE SIND NICHT ERFUNDEN, SIE SIND ABGELESEN. Am 29.09. am offenen
   Burger-Menue gemessen (`.drawer--header .drawer__inner`):
       background: rgba(255,255,255,.58)
       backdrop-filter: blur(42px) saturate(1.3)
       border-radius: 22px
   Dasselbe traegt der Warenkorb-Rahmen selbst (`.drawer--cart .drawer__inner`)
   — die Kacheln darin waren bisher die einzige massiv weisse Flaeche
   (`#FFFFFF`, radius 18px, harter Schatten) und stachen deshalb heraus.

   ⛔ WARUM DER SCHATTEN KLEINER WIRD: eine Glasflaeche mit 14-px-Schlagschatten
   liest sich wie Papier auf Glas. Der Schatten bleibt, aber flach — er soll die
   Kachel vom Grund abheben, nicht sie darueberlegen.

   ⛔ IM ALTEN THEME waren diese Karten **voellig transparent**: kein
   Hintergrund, radius 0, kein Rand, kein Schatten (am 29.09. im alten Theme
   188690432381 gemessen). Das ist Enzos „das hatten wir schon mal besser".
   Hier wird nicht ganz dorthin zurueckgegangen, weil der neue Korb einen
   helleren Grund hat und die Kachel sonst keine Kante mehr haette.

   ⭐ Rueckweg: diesen Block loeschen — dann gilt wieder `background:#FFFFFF`
   aus S304-PAAR (Zeile ~132169).
   ==================================================================== */
@layer s304 {
  html[class] body[class] .drawer--cart .s304-paar{
    background: rgba(255, 255, 255, .58) !important;
    -webkit-backdrop-filter: blur(42px) saturate(1.3) !important;
    backdrop-filter: blur(42px) saturate(1.3) !important;
    border-radius: 22px !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9),
                0 8px 20px -16px rgba(16, 16, 18, .38) !important;
  }
  /* Der Bildhalter traegt nichts Eigenes — der Freisteller steht frei auf dem
     Glas. Das Polster faellt weg, damit das Bild die volle Breite bekommt. */
  html[class] body[class] .drawer--cart .s304-paar .s304-paar__h{
    background: transparent !important;
    padding: 0 !important;
    border-radius: 0 !important;
  }
  html[class] body[class] .drawer--cart .s304-paar .s304-paar__h img{
    mix-blend-mode: multiply !important;
  }
}

/* === S304-PREISZEILE-WIE-ALT-2909 =====================================
   Enzo 29.09.: *„die Preise und so sind da komisch formatiert. Das musst du
   eigentlich alles so formatieren, wie bei unserem alten Warenkorb."*

   ⛔ GEMESSEN im alten Theme (188690432381, 29.09.): der Preis steht als
   `.cart__item__price` **rechts oben**, 11 px, Gewicht 500, Farbe rgb(33,33,33)
   — eine Zeile, kein Umbruch. Genau diese Werte stehen unten.

   ⛔ WAS FALSCH AUSSAH: beim Geschenk stand der alte Preis in einer Zeile,
   die 0 € darunter und die Kachel wieder darunter — drei Zeilen fuer eine
   Aussage. Jetzt: alter Preis und 0 € nebeneinander, Kachel darunter.
   ==================================================================== */
@layer s304 {
  html[class] body[class] .drawer--cart .cart__item:has(.s304-rolle) .cart__item__price{
    font-size: 11px !important;
    font-weight: 500 !important;
    color: rgb(33, 33, 33) !important;
    line-height: 1.35 !important;
  }
  /* Alter Preis und 0 € gehoeren in EINE Zeile. */
  html[class] body[class] .drawer--cart .cart__item__price .s304-alt,
  html[class] body[class] .drawer--cart .cart__item__price .s304-frei{
    display: inline !important;
  }
  html[class] body[class] .drawer--cart .cart__item:has(.s304-rolle) .cart__item__price > :is(s, b){
    align-self: flex-end !important;
  }
}


/* Ein Flex-Item, darin zwei Inline-Teile — siehe den Kommentar im JS
   (S304-KAUFEN-UND-GESCHENKT-2909). */
@layer s304 {
  html[class] body[class] .drawer--cart .cart__item__price .s304-preiszeile{
    display: block !important;
    white-space: nowrap !important;
    text-align: right !important;
  }
  html[class] body[class] .drawer--cart .cart__item__price .s304-preiszeile .s304-alt,
  html[class] body[class] .drawer--cart .cart__item__price .s304-preiszeile .s304-frei{
    display: inline !important;
  }
}


/* === S304-MILES-ZEILE-WIE-ALT-2909 ====================================
   Enzo 29.09.: *„Die erste Variante sieht besser aus, aber das sieht immer noch
   ueberhaupt nicht gut aus. Pruefen wir, wie das im alten Theme war, da war das
   viel viel cleaner gemacht."*

   ⭐ AM ALTEN THEME (188690432381) ABGELESEN, nicht geschaetzt — am 29.09. im
   frischen Browser, Block per JS sichtbar gemacht:
       .ic-miles-cashback  box [12, y, 378, 42] · background TRANSPARENT
                           border 1px solid rgb(17,17,17) · radius 10px
                           padding 10px 12px · margin 8px 0
                           flex · space-between · center
       .ic-miles-toggle    36 x 20 px · #111 · radius 10px
       Text                13 px, „12,00 € Miles abgezogen"

   ⛔ WAS IM NEUEN KORB SCHIEFGING, zwei Dinge:
   1 · DIE ZEILE SASS DANEBEN. Der neue Fuss ist eine Flex-REIHE; ohne
       `flex: 0 0 100%` setzte sie sich neben die Zwischensumme und lief rechts
       aus dem Bild (gemessen: x 181, Breite 281 ⇒ Ende 462 von 402).
       Im ALTEN Theme brauchte es das nicht: dort steht `.ic-cart-golden` auf
       `display: contents`, seine Kinder ordnen sich direkt in die Spalte ein.
   2 · DIE SCHRIFT WURDE LAUT. Der neue Fuss setzt seine Zeilen in
       GROSSBUCHSTABEN mit Sperrung (`.cart__total__label` & Co.). Das vererbte
       sich auf die Miles-Zeile: aus „12,00 € Miles abgezogen" wurde
       „12,00 € MILES ABGEZOGEN". Genau das meint Enzo mit „nicht clean".

   ⛔ UND EIN EIGENER FEHLGRIFF: mein erster Vorschlag setzte ein Etikett
   „DEINE MILES" darueber und fuellte die Zeile mit Glas. Beides ist hier raus —
   die alte Zeile sagt ihre Aussage in EINEM Satz, und der Rahmen allein hebt
   sie genug ab. Enzos Begruendung von damals steht im CSS: *„sonst ist das zu
   viel Gold"* — dieselbe Logik gilt fuer jede weitere Verzierung.

   ⭐ Rueckweg: diesen Block loeschen.
   ==================================================================== */
@layer s304 {
  /* 1 · eine eigene Zeile, volle Breite */
  html[class] body[class] .drawer--cart .cart__price__holder,
  html[class] body[class] .drawer--cart .cart__foot__inner{
    flex-wrap: wrap !important;
  }
  html[class] body[class] .drawer--cart .ic-miles-cashback{
    flex: 0 0 100% !important;
    width: 100% !important;
    box-sizing: border-box !important;
    /* display nur, wenn das Skript zeigt - siehe S304-IC-LOGIK-I1-I5-0210 */
    align-items: center !important;
    justify-content: space-between !important;
    background: transparent !important;
    border: 1px solid rgb(17, 17, 17) !important;
    border-radius: 10px !important;
    padding: 10px 12px !important;
    margin: 8px 0 !important;
  }
  /* 2 · die Schrift bleibt ruhig — der Fuss vererbt sonst Grossbuchstaben */
  html[class] body[class] .drawer--cart .ic-miles-cashback,
  html[class] body[class] .drawer--cart .ic-miles-cashback__left,
  html[class] body[class] .drawer--cart .ic-miles-cashback__text{
    text-transform: none !important;
    letter-spacing: normal !important;
  }
  html[class] body[class] .drawer--cart .ic-miles-cashback__text{
    font-size: 13px !important;
    line-height: 1.25 !important;
    color: #111 !important;
    -webkit-text-fill-color: #111 !important;
    white-space: nowrap !important;
  }
  /* 3 · der Schalter in den Massen von damals */
  html[class] body[class] .drawer--cart .ic-miles-toggle{
    flex: 0 0 auto !important;
    width: 36px !important;
    height: 20px !important;
    border-radius: 10px !important;
  }
  /* Kein Etikett darueber — falls ein frueherer Vorschlag eines gesetzt hat. */
  html[class] body[class] .drawer--cart .ic-miles-cashback::before{
    content: none !important;
    display: none !important;
  }
}


/* === S304-MITGLIEDERFUSS-ERSETZT-2909 =================================
   Die Begruendung und die Messwerte stehen im JS-Baustein gleichen Namens.
   Kurz: der Mitglieder-Block zeigte Zwischensumme und Versand ZUSAETZLICH
   zum Standard statt an seiner Stelle — zwei Summen, zwei widerspruechliche
   Versandzeilen. Die Klasse `s304-ic-fuss` setzt das JS nur, wenn der Block
   wirklich sichtbar ist (angemeldetes Mitglied).
   ⭐ Die LIEFERZEILE bleibt: sie gilt fuer Mitglieder genauso.
   ⭐ Rueckweg: diesen Block loeschen.
   ==================================================================== */
@layer s304 {
  /* Die Standard-Zwischensumme weicht der goldenen. */
  html[class] body[class] .drawer--cart.s304-ic-fuss .cart__total:not(.ic-cart-total--golden){
    display: none !important;
  }
  /* Die Standard-Versandzeile weicht der Mitglieder-Zeile.
     ⛔ Nur die ERSTE `.s304-fuss__z` — die zweite traegt den Liefertermin. */
  html[class] body[class] .drawer--cart.s304-ic-fuss .s304-fuss__z:first-of-type{
    display: none !important;
  }
}


/* === S304-KEIN-ZUGANG-IM-KORB-2909 ====================================
   Enzo 29.09. abends: *„Nur soll dann nicht daneben stehen ,Zugang 95 Euro
   Inner Circle', das brauchen wir gar nicht. Einfach nur den Toggle unten,
   dann ist es perfekt."*

   ⛔ GEMESSEN: die Zeile steht als `.cart__item__selected-options` unter dem
   Produktnamen und heisst woertlich „Zugang: Inner Circle" bzw. „Zugang:
   Standard". Sie ist der Variantenname — und der sagt dem Kunden nichts, was
   er nicht schon weiss: **ein Mitglied ist angemeldet, sonst saehe es den
   Toggle gar nicht.**

   ⛔ NUR IM WARENKORB. Auf der Produktseite ist die Variantenwahl echt
   („Zugang: Standard / Inner Circle" ist dort der Schalter) — die bleibt.
   ⭐ Rueckweg: diesen Block loeschen.
   ==================================================================== */
@layer s304 {
  html[class] body[class] .drawer--cart .cart__item__selected-options,
  html[class] body[class] cart-drawer .cart__item__selected-options{
    display: none !important;
  }
}


/* === S304-AUTUMN-COLLECTION-2909 — ZURUECKGENOMMEN ==================
   Hier stand ein Block auf `.s304-kb__t2`. Er griff ins Leere: dieses Band ist
   auf der Kategorieseite **unsichtbar** (`s304-kat.sicherung-2309.css` blendet
   es aus). Die Pille, die man SIEHT, ist ein Pseudo-Element:
   `.wc-trust-header::after` in `assets/s304-kat.css`.
   ⭐ Geaendert wird jetzt die gewinnende Deklaration selbst — dieselbe
   Hausregel, die im Kommentar daneben schon zweimal notiert ist.
   ==================================================================== */


/* === S304-KACHEL-EINE-SPUR-2909 =======================================
   Enzo 28.09.: *„die Preise … sind nicht eingerueckt. die muessen genau auf der
   Hoehe sein von dem Plus und das Plus muss genau auf der Hoehe sein von den
   Sternebewertungen."*

   ⛔ VIER ANLAEUFE SIND VORHER GESCHEITERT, weil ich am Titel gezogen habe.
   Der Titel hat aber `padding-left: 0` — der Versatz ist eine SUMME aus seinen
   Eltern. Am 29.09. im Browser gemessen (relX = Abstand zum linken Kachelrand):

       .product-information   pl 9            →  9
       .product-item__info    pl 9, ml -3     → 15   ← hier steht der Titel
       .wc-rating-badge       pl 0            →  6   ← hier stehen die Sterne

   ⛔ UND: die gewinnende Deklaration liess sich NICHT finden. Ein Skript, das
   `document.styleSheets` durchgeht, fand **null** Regeln mit `padding-left`,
   obwohl 9 px berechnet sind — die Stylesheets sind fuer den Zugriff gesperrt
   (cross-origin). Ein toter Messkanal verbietet jedes „gibt es nicht": ich
   weiss nicht, wer die 9 px setzt, nur dass sie da sind.

   ⭐ DESHALB NICHT DIE QUELLE JAGEN, SONDERN DAS ZIEL SETZEN: beide Eltern
   zusammen auf netto 6 px — die Spur der Sterne. Die Spezifitaet liegt eine
   Stufe ueber der hoechsten gefundenen Regel ([class]x4 in dieser Datei).
   ⭐ Rueckweg: diesen Block loeschen.
   ==================================================================== */
@layer s304 {
  html body[class][class][class][class][class] .product-item .product-information{
    padding-left: 6px !important;
    margin-left: 0 !important;
  }
  html body[class][class][class][class][class] .product-item .product-item__info,
  html body[class][class][class][class][class] .grid-item .product-item__info{
    padding-left: 0 !important;
    margin-left: 0 !important;
  }
  /* Der Preis sitzt rechts in derselben Zeile — sein rechter Rand folgt
     demselben Mass, damit die Zeile symmetrisch bleibt. */
  html body[class][class][class][class][class] .product-item .product-information{
    padding-right: 6px !important;
  }
  /* ⛔ AM BILD KORRIGIERT (29.09.): mit `padding-right: 0` endete der Preis
     2 px vor der Kachelkante — gemessen relX 157 bei 189 px Kachelbreite.
     Rechts bekommt dieselben 6 px wie links, dann steht die Zeile symmetrisch.
     ⭐ Der Messwert sagte „Spur getroffen", erst das Bild zeigte den Rand. */
  html body[class][class][class][class][class] .product-item .product-item__info,
  html body[class][class][class][class][class] .grid-item .product-item__info{
    padding-right: 6px !important;
    margin-right: 0 !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════════
   S304-ENZO-PUNKTE-3009 — Fehlerbehebungen aus Enzos Liste vom 30.09.
   Sicherung davor: /root/theme-sicherung/20260930T103414Z

   ⛔ ZWEITER ANLAUF. Der erste wirkte NUR bei About Us. Warum, gemessen:
   · Punkt 1: ich hatte overflow auf .product__thumbs gesetzt — der Scroll-
     Container ist aber .product__thumbs__holder. Am Kind gezogen statt am
     Behälter, dieselbe Klasse Fehler wie bei der Kachel-Ausrichtung am 29.09.
   · Punkt 15: der Schatten steht in 304-custom.css an .s304-blase, also in
     einer ANDEREN Datei. Bei gleicher Spezifität gewinnt die später GELADENE
     Datei, nicht die spätere Zeile — deshalb verlor meine Regel, obwohl sie
     weiter hinten stand. Lösung ist mehr Spezifität, nicht mehr !important.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Punkt 1 · Thumbnails laufen über den Rand ─────────────────────────
   Gemessen: 372 px Inhalt bei 342 px sichtbarer Breite; overflow-x war
   visible, deshalb wurde der Überstand gezeichnet statt abgeschnitten.
   Die bestehende Regel am Behälter nutzt html body[class][class][class] —
   diese Stufe muss erreicht werden, sonst gewinnt sie.                   */
/* ⛔ ZWEITE FASSUNG, 30.09. mittags. Die erste setzte nur overflow-x:auto —
   das machte die Reihe wischbar, aber sie ragte weiter aus der Karte, und
   genau das hat Enzo auf BIG STEEL fotografiert. Die URSACHE ist eine feste
   Breite: der Halter bekommt absichtlich die volle Fensterbreite (402 px),
   damit die Reihe am Bildschirmrand endet. Enzo will sie INNERHALB der Karte.
   Deshalb wird die feste Breite aufgehoben — die Reihe nimmt den Innenraum
   ihres Elternblocks ein. overflow bleibt auto, damit bei vielen Bildern
   gewischt statt überlaufen wird. */
html body[class][class][class][class][class] .product__thumbs__holder,
html body[class][class][class][class][class] .s304-mini__reihe{
  width: 100% !important;
  max-width: 100% !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  overflow-x: auto !important;
  scrollbar-width: none !important;
  -ms-overflow-style: none !important;
}
html body[class][class][class][class][class] .product__thumbs__holder::-webkit-scrollbar,
html body[class][class][class][class][class] .s304-mini__reihe::-webkit-scrollbar{
  display: none !important;
}

/* ── Punkt 15 · Schatten an den Kacheln weg ───────────────────────────
   Die Abschnitte selbst tragen keinen Schatten; er sitzt an .swiper-slide,
   gesetzt über .s304-blase in 304-custom.css. Beide Wege werden hier
   geschlossen, mit einer Stufe mehr Spezifität als die Quelle.           */
/* Die Quelle steht in DIESER Datei bei 51885 mit Spezifitaet 0-2-2 und
   !important. Drei [class] haetten reichen muessen - taten es nicht. Das Haus
   selbst arbeitet an seiner schwersten Stelle mit FUENF [class] (Kachel-
   Ausrichtung, Ende der Datei). Ich ziehe auf dieselbe Stufe nach, statt
   weiter zu raten. */
html body[class][class][class][class][class] .s304-community .swiper-slide,
html body[class][class][class][class][class] .s304-fits .swiper-slide,
html body[class][class][class][class][class] .s304-community .swiper-slide *,
html body[class][class][class][class][class] .s304-fits .swiper-slide *{
  box-shadow: none !important;
}

/* ── Punkt 6 · About Us: rechteckige Elemente abrunden ────────────────
   Wirkt seit dem ersten Anlauf (gemessen: 16 px bzw. 14 px, au-band jetzt
   370 breit bei x=16, also mit Seitenabstand wie die anderen Karten).     */
html body .au-band{
  border-radius: 16px !important;
  margin-inline: 16px !important;
  width: auto !important;
}
html body .au-spec{ border-radius: 14px !important; }
html body .au-manifest{ border-radius: 14px !important; }
/* ═══ Ende S304-ENZO-PUNKTE-3009 ═══ */


/* ═══════════════════════════════════════════════════════════════════════
   S304-ENZO-WAHL-3009 — Enzos Entscheidung zu den Entwürfen, live.
   Wörtlich: „am Preis 55 € + 1 geschenkt, die Schrift +1 geschenkt in WEISS.
   Darunter die Pille in der Variantenfarbe mit weißer Schrift.
   Beim Knopf Beide in den Warenkorb Variante D."

   ⛔ Weiße Schrift braucht einen dunklen Träger, sonst steht sie unsichtbar
   auf der hellen Produktkarte. Deshalb sitzt „+1 GESCHENKT" auf einer Fläche
   in der Variantenfarbe — die Schrift ist weiß, wie gewünscht, und lesbar.
   Die Variantenfarbe kommt aus --s304-wahlfarbe, derselben Quelle, aus der
   sich schon der Kaufknopf färbt (gemessen rgb(24,34,54) bei MIDNIGHT LINK).
   ═══════════════════════════════════════════════════════════════════════ */

/* ── „+1 GESCHENKT" neben dem Preis ──────────────────────────────────── */
/* ac2 30.09. S304-PLAKETTE-UNTER-DEM-PREIS: Preis + Plakette als Spalte.
   Das Preis-Element traegt nur die Zahl (gemessen), die Spalte stapelt also
   genau zwei Dinge: Zahl, darunter „+1 … gratis ✓". Rechtsbuendig, weil der
   Preis rechts neben dem Titel steht. */
html body[class][class][class] .s304-preis,
html body[class][class][class] .price.product__price.s304-preis{
  display: flex !important;
  flex-direction: column !important;
  align-items: flex-end !important;
}
html body[class][class][class] .s304-preis::after,
html body[class][class][class] .price.product__price.s304-preis::after{
  content: var(--s304-gratis, "+1 Bracelet gratis") !important;
  /* ac2 30.09. Enzo: „UNTER dem Preis" - Plakette in eigener Zeile unter der Zahl. */
  display: block !important;
  align-self: flex-end !important;
  margin-left: 0 !important;
  margin-top: 6px !important;
  vertical-align: middle !important;
  font-family: Inter, sans-serif !important;
  font-size: 9.5px !important;
  font-weight: 700 !important;
  letter-spacing: .06em !important;
  line-height: 1 !important;
  padding: 4px 9px !important;
  border-radius: 99px !important;
  white-space: nowrap !important;
  background: var(--s304-wahlfarbe, #182236) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

/* ── Variante D · Zahlungsarten unter dem Kaufknopf ──────────────────── */
/* ac2 01.10. (S4): der Text-Block als ::after ist raus - darunter stehen jetzt die echten Icons
   (.s304-pay-icons in sections/s304-pdp.liquid). */
html body[class][class][class] .product-form__submit::after,
html body[class][class][class] [name="add"]::after{
  content: none !important;
  display: none !important;
}
html body[class][class][class] .product-form__submit,
html body[class][class][class] [name="add"]{
  position: relative !important;
  margin-bottom: 30px !important;
  overflow: visible !important;
}
/* ═══ Ende S304-ENZO-WAHL-3009 ═══ */


/* ── S304-X-TIPPFLAECHE-3009 (ac2) ────────────────────────────────────────
   Enzo (Punkt 10): „X am Warenkorb reagiert nicht immer."
   Gemessen: das X ist 26 x 26 px. Ein Fingertipp 10 px daneben (links-unten)
   verfehlte es - 3 von 8 knappen Tipps liessen den Korb offen.
   Jetzt eine unsichtbare Tippflaeche von 48 x 48 px um das X, das sichtbare X
   bleibt, wo es ist. Im @layer s304, damit keine Layer-Regel sie ueberstimmt. */
@layer s304 {
  html body[class][class][class] .drawer--cart .drawer__close{
    position: relative !important;
    z-index: 30 !important;
    overflow: visible !important;
  }
  html body[class][class][class] .drawer--cart .drawer__close::after{
    content: "" !important;
    position: absolute !important;
    inset: -11px !important;
    display: block !important;
    background: transparent !important;
  }
}


/* ── S304-KEINE-VERSANDLEISTE-3009 (ac2) ────────────────────────────────────────────
   Enzo (Punkt 4, 30.09. 03:05Z): „Die kleine Leiste unter ‚noch … bis
   Gratisversand' soll weg." Der Satz selbst bleibt (sein frueherer Wunsch).
   Gilt fuer die Versandkarte oben auf PDP und Kategorie (.s304-vbar); die
   Leiste im Warenkorb ist ein anderes Element und bleibt. */
@layer s304 {
  html body[class][class][class] .s304-vkopf .s304-vbar,
  html body[class][class][class] .s304-katversand .s304-vbar,
  html body[class][class][class] .s304-kopfversand .s304-vbar{
    display: none !important;
  }
  /* Kategorieseite: dort ist die Leiste ein ::after (das ::before ist das Paket-Icon, bleibt). */
  html body[class][class][class] .s304-katversand::after{
    display: none !important;
  }
  html body[class][class][class] .s304-katversand{
    padding-bottom: 12px !important;
  }
}


/* ── S304-KEIN-PLAY-KNOPF-UEBERALL-3009 (ac2) ───────────────────────────────────────
   Enzo (Punkt 14): Play-Buttons auf den Videos.
   Gemessen: die Regel gegen den iOS-Play-Knopf stand nur in s304-pdp.css -
   die laedt NUR auf der Produktseite. Auf der Kategorieseite (6 Videokacheln)
   fehlte sie. iOS legt den Knopf ueber stumme Autoplay-Videos, wenn es sie
   nicht startet (z. B. Stromsparmodus). Jetzt in der Datei, die ueberall laedt. */
@layer s304 {
  video::-webkit-media-controls-start-playback-button,
  video::-webkit-media-controls-overlay-play-button,
  video::-webkit-media-controls-play-button,
  video::-webkit-media-controls-panel,
  video::-webkit-media-controls{
    display: none !important;
    -webkit-appearance: none !important;
    opacity: 0 !important;
  }
}


/* ── S304-IC-ANMELDEN-3009 (ac2) — Anmelde-Zeile im Korb nur fuer NICHT erkannte Besucher.
   Liquid kennt nur Shopify-Tag-Mitglieder; Cookie-/Magic-Link-Mitglieder erkennt erst
   das Skript (body.ic-cookie-member / .ic-member-active). */
@layer s304 {
  html body.ic-cookie-member .drawer--cart .s304-ic-anmelden,
  html body.ic-member-active .drawer--cart .s304-ic-anmelden{
    display: none !important;
  }
}


/* ── S304-KARUSSELL-ERSTE-KARTE-3009 (ac2, c9 nach Enzos Live-Regel) ─────────────────────────
   Die erste Karte muss ganz sichtbar sein. Der Swiper reicht per -13px ueber die
   Karte hinaus, sein vorgesehenes Polster (13px) wurde aber auf 0 gesetzt - die erste
   Karte begann bei x=3 und der Abschnitt schneidet bei 16. Polster + Einrast-Polster
   zurueck, damit Karte 1 an der Kante der Ueberschrift steht. */
@layer s304 {
  html body[class][class][class][class][class] .s304-fits .swiper,
  html body[class][class][class][class][class] .s304-community .swiper{
    padding-left: 13px !important;
    padding-right: 13px !important;
    scroll-padding-left: 13px !important;
    scroll-padding-right: 13px !important;
  }
}


/* ── S304-NOTCH-STARTSEITE-GRUEN-0110 (ac2) ──────────────────────────────────────────────
   Enzo: Notch auf der Startseite gruen (ueber dem Hero), sonst weiss. iOS 26 beachtet
   theme-color nicht verlaesslich; sichtbar ist, was im Sicherheitsbereich liegt.
   html::before ist der weisse Streifen dort - auf der Startseite in Hero-Gruen. */
@layer s304 {
  html:has(> body.template-index)::before{
    background: #0B1616 !important;
  }
}


/* ── S304-PAY-ICONS-0110 (ac2) — echte Zahlungs-Icons unter dem Kaufknopf der PDP, wie im Warenkorb ── */
@layer s304 {
  html body[class][class][class] .s304-pay-icons{
    display: flex !important; flex-wrap: wrap !important; justify-content: center !important; align-items: center !important;
    gap: 6px !important; margin: -18px 0 0 !important; /* der Kauf-Behaelter ragt 30 px unter den Knopf (gemessen) */ padding: 0 !important; list-style: none !important; background: transparent !important;
  }
  html body[class][class][class] .s304-pay-icons li{ margin: 0 !important; padding: 0 !important; list-style: none !important; }
  html body[class][class][class] .s304-pay-icons svg{ width: 34px !important; height: 22px !important; display: block !important; }
}


/* ── S304-KEIN-KLEBENDES-HOVER-0110 (ac2) — Enzo (S8 „kein Grau“): theme.css dunkelt den Kaufknopf bei :hover
   auf opacity .85 ab. iOS laesst :hover nach dem Tippen kleben - der Knopf blieb grau.
   Auf Touch-Geraeten (hover: none) gibt es keinen Hover-Zustand mehr. */
@media (hover: none) {
  @layer s304 {
    html body[class][class][class] .product-form__submit:hover,
    html body[class][class][class] [name="add"]:hover,
    html body[class][class][class] .s304-cta:hover{
      opacity: 1 !important;
    }
  }
}


/* ── S304-VORSCHLAEGE-KOMPAKT-0110 (ac2) — Enzo (S5): „Das koennte dir auch gefallen“ deutlich kleiner.
   Gemessen vorher: Abschnitt 144 px, Karte 114 px (zwei Bilder uebereinander, Preis 16 px).
   Jetzt: Bilder klein links nebeneinander, Text rechts; Schrift 10/11/13 px, 4-px-Raster,
   ganze Karte bleibt der Tippknopf (>= 44 px hoch). */
@layer s304 {
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar{
    display: grid !important; grid-template-columns: 52px 1fr !important; grid-template-rows: auto auto auto !important;
    column-gap: 8px !important; row-gap: 0 !important; align-items: center !important; align-content: center !important;
    padding: 6px 8px !important; min-height: 48px !important; height: auto !important; text-align: left !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__b{
    grid-column: 1 !important; grid-row: 1 / span 3 !important;
    display: grid !important; grid-template-columns: 24px 24px !important; gap: 4px !important;
    width: 52px !important; height: 36px !important; margin: 0 !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__h{ width: 24px !important; height: 36px !important; min-height: 0 !important; padding: 0 !important; }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__h img{ width: 24px !important; height: 36px !important; object-fit: contain !important; }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__n{ grid-column: 2 !important; font-size: 11px !important; line-height: 14px !important; margin: 0 !important; }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__g{ grid-column: 2 !important; font-size: 10px !important; line-height: 12px !important; margin: 0 !important; letter-spacing: 0 !important;
    /* lange Namen (CRYSTAL GRACE) brauchen 122 px bei 96 px Platz: umbrechen statt abschneiden, hoechstens 2 Zeilen */
    white-space: normal !important; overflow: hidden !important; display: -webkit-box !important; -webkit-line-clamp: 2 !important; -webkit-box-orient: vertical !important; }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__z{ grid-column: 2 !important; margin: 2px 0 0 !important; }
  html body[class][class][class][class][class][class] .drawer--cart .s304-paar .s304-paar__p{ font-size: 13px !important; line-height: 16px !important; }
}


/* ── S304-KORB-TIPPFLAECHEN-0110 (ac2) — Haus-Standard F1 (>= 44 px Tippflaeche), gemessen per
   Treffertest: Minus/Plus 30x31, Entfernen 71x15. Unsichtbare Flaeche, Optik unveraendert.
   Nachbarn gemessen: Mengenreihe y 36-65, Entfernen 71-84, Posten endet ~114, Abstand -/+ 30 px.
   Entfernen waechst deshalb nach UNTEN, damit es die Mengenreihe nicht ueberdeckt. */
@layer s304 {
  html body[class][class][class] .drawer--cart .cart__item .cart__quantity-minus::after,
  html body[class][class][class] .drawer--cart .cart__item .cart__quantity-plus::after{
    content: "" !important; position: absolute !important; inset: -9px -7px -6px !important;
  }
  html body[class][class][class] .drawer--cart .cart__item .cart__item__remove{
    position: relative !important;
  }
  html body[class][class][class] .drawer--cart .cart__item .cart__item__remove::after{
    content: "" !important; position: absolute !important; left: -4px !important; right: -4px !important; top: 0 !important; bottom: -31px !important;
  }
}


/* ── S304-GESCHENK-WIDGET-EIGEN-0210 (ac2) — Enzo 02.10. (A8), echtes iPhone: „Ein Kauf, ein Geschenk war ein
   EIGENES abgeschlossenes Widget, darunter nur ‚Beide in den Warenkorb‘. Jetzt geht der Kasten bis zu den
   Payment-Icons.“ Gemessen: der weisse Kasten sass auf .s304-kaufzeile (Widget + Knopf + Icons), das Widget
   .s304-huelle selbst war fast unsichtbar (7 % Weiss). Jetzt traegt das Widget den Kasten (dieselben Werte:
   weiss, Radius 22, derselbe Schatten), Knopf und Icons stehen frei darunter. */
@layer s304 {
  html body[class][class][class][class][class][class] .s304-kaufzeile.s304-kaufzeile{
    background: transparent !important; box-shadow: none !important;
  }
  html body[class][class][class][class][class][class] .s304-kaufzeile .s304-huelle.s304-huelle{
    background: #FFFFFF !important; border-color: transparent !important; /* Rand bleibt 1 px, sonst wird die Seite 1 px kuerzer */
    box-shadow: 0 0 0 1px rgba(18,18,20,.08), 0 4px 9px -4px rgba(18,18,20,.26) !important;
  }
}


/* ── S304-NOTCH-KLEBENDE-PILLE-0210 (ac2) — Enzo 02.10. (A4), echtes iPhone: Notch auf Kategorie + PDP schwarz.
   Ursache (WebKit-Quelltext LocalFrameView.cpp, fixedContainerEdges): Safari 26 faerbt die Leiste nach dem ersten
   fixed/sticky-Element >= 90 % Breite am Punkt (Mitte, 4 px unter der Oberkante) und dessen erster deckender Farbe.
   theme.js klebt den Kopf ab ~30 px Scroll (.js__header__stuck), dann trifft der Punkt die dunkle Logo-Pille (y=3).
   Startseite klebt nie -> Seitengrund gruen. Pseudo-Elemente und theme-color zaehlen NICHT (daher wirkte S2 vom 01.10. nicht).
   Jetzt: im geklebten Zustand beginnt die Pille bei y=9, der Punkt trifft den weissen Kopfgrund (section-padding). */
@layer s304 {
  html body[class][class][class] .js__header__stuck .header__mobile{
    transform: translateY(6px) !important;
  }
}


/* ── S304-OPTION-C-OHNE-RUCK-0210 (ac2) — Enzo 02.10. (A2): „Kein Springen. Beim ersten Oeffnen GENAU an der Stelle
   laden, ohne Ruck“ (= Option C aus Frage ac2-13). Bisher sprang die Seite per Skript um 98 px nach unten
   (gemessen: 0 -> 98 -> 66 -> 98 in den ersten 4 s). Jetzt wird gar nicht gescrollt: Laufband und Versandkarte
   ueber der Produktkarte sind beim Oeffnen eingeklappt, Titel + Preis stehen sofort unter dem Kopf.
   Zieht man oben weiter nach unten, setzt das Skript in sections/s304-pdp.liquid .s304-oben-offen, dann sind beide da. */
@layer s304 {
  html:not(.s304-oben-offen) body.template-product[class][class] .ic-top-ticker,
  html:not(.s304-oben-offen) body.template-product[class][class] .s304-vkopf{
    display: none !important;
  }
  html:not(.s304-oben-offen) body.template-product[class][class]{
    padding-top: 0 !important;
  }
}


/* ── S304-KAUFKNOPF-SOFORT-AM-PLATZ-0210 (ac2) — Enzo 02.10. (A7): „Sticky-ATC beim ersten Laden nicht sichtbar“.
   Gemessen: das Geschenk-Widget (.s304-huelle) wird erst nach ~3,6 s per Skript eingesetzt; bis dahin stand der
   Kaufknopf 250 px weiter oben IM Bild, die Leiste blieb aus, danach rutschte der Knopf weg. Jetzt haelt ein
   Platzhalter genau die Widget-Hoehe frei (gemessen 390/430 px: Walletchain 229/240, Bracelet 259/269, + 10 Rand),
   der Knopf steht vom ersten Bild an an seiner Stelle. Sobald das Widget da ist, faellt der Platzhalter weg. */
@layer s304 {
  html body[class][class] .s304-kaufzeile.s304-platz-walletchain .product__submit__buttons:not(:has(.s304-huelle))::before,
  html body[class][class] .s304-kaufzeile.s304-platz-bracelet .product__submit__buttons:not(:has(.s304-huelle))::before{
    content: "" !important; display: block !important; flex: 0 0 auto !important;
  }
  html body[class][class] .s304-kaufzeile.s304-platz-walletchain .product__submit__buttons:not(:has(.s304-huelle))::before{
    height: calc(239px + (100vw - 390px) * 0.275) !important;
  }
  html body[class][class] .s304-kaufzeile.s304-platz-bracelet .product__submit__buttons:not(:has(.s304-huelle))::before{
    height: calc(269px + (100vw - 390px) * 0.25) !important;
  }
}


/* ── S304-WARENKORB-B-ALTES-FORMAT-0210 (ac2) — Enzo 02.10. (A10): „B am besten, aber Formatierung wie altes Theme
   (Elemente erkennbar), Elementnamen wie aktuell; kein prominentes IC-Element, das vom Kaufen ablenkt.“
   Werte am alten Theme 188690432381 gemessen (02.10., ein Vorschau-Besuch): Posten ohne Glas, 1 px #E0E0E0, Radius 12,
   Polster 8, Titel Gewicht 400; Versandzeile schlicht 12,8 px; Vorschlaege mit 1 px #ECECEC; keine Trennlinie ueber der
   Zwischensumme. Der IC-Kasten (goldener Rand, 345x57) wird zu einer leisen Textzeile, die Funktion bleibt. */
@layer s304 {
  html body[class][class][class][class][class][class] .drawer--cart .cart__item.cart__item{
    background: transparent !important; border: 1px solid #E0E0E0 !important; border-radius: 12px !important;
    box-shadow: none !important; padding: 8px !important; margin: 0 12px 8px !important;
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .cart__item .cart__item__title{ font-weight: 400 !important; }
  html body[class][class][class][class][class][class] .drawer--cart .drawer__message.drawer__message{
    background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important;
    margin: 4px 12px 10px !important; padding: 0 !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .drawer__message .free-shipping__default-message,
  html body[class][class][class][class][class][class] .drawer--cart .drawer__message .free-shipping__success-message{ font-size: 12.8px !important; font-weight: 400 !important; }
  html body[class][class][class][class][class][class] .drawer--cart .ic-cross-sell.ic-cross-sell{ border: 1px solid #ECECEC !important; }
  html body[class][class][class][class][class][class] .drawer--cart .ic-cross-sell > *:first-child{ font-weight: 400 !important; letter-spacing: 1px !important; }
  html body[class][class][class][class][class][class] .drawer--cart .cart__price__holder.cart__price__holder,
  html body[class][class][class][class][class][class] .drawer--cart .cart__foot__inner.cart__foot__inner{ border-top: 0 !important; }
  html body[class][class][class][class][class][class] .drawer--cart a.s304-ic-anmelden.s304-ic-anmelden{
    border: 0 !important; background: transparent !important; box-shadow: none !important;
    min-height: 44px !important; padding: 0 !important; margin: 0 !important;
    display: flex !important; flex-wrap: wrap !important; align-items: center !important; justify-content: center !important; gap: 4px !important;
    font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; text-transform: none !important; color: #5F5A55 !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart a.s304-ic-anmelden.s304-ic-anmelden *{
    font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; text-transform: none !important;
    color: #5F5A55 !important; -webkit-text-fill-color: #5F5A55 !important; background: none !important; margin: 0 !important;
  }
}


/* ── S304-IC-LOGIK-I1-I5-0210 (ac2) — Enzo 02.10. I5: „Toggles nur an der Kasse einloesbar; nicht erkannt -> einloggen.“
   Gemessen: bei Cookie OHNE Sitzung versteckte das Skript den Miles-Kasten (display:none), diese Datei erzwang aber flex ->
   leerer umrandeter Kasten mit totem Schalter; die Login-Zeile war fuer Cookie-Mitglieder ganz weg. Jetzt: der Kasten nur,
   wenn das Skript ihn zeigt; ist er versteckt, steht die leise Login-Zeile da. */
@layer s304 {
  html[class] body[class] .drawer--cart .ic-miles-cashback:not([style*="none"]){ display: flex !important; }
  html[class] body.ic-cookie-member[class] .drawer--cart [data-cart-price-holder]:has(.ic-miles-cashback[style*="none"]) .ic-cart-guest{
    display: contents !important;
  }
}


/* ── S304-IC-BEGRUESSUNG-TIPPBAR-0210 (ac2, I4) — fuer erkannte Mitglieder ist das Laufband antippbar (-> Dashboard).
   Gaeste bleiben gesperrt (kein Popup, Enzo 22.09.). */
@layer s304 {
  html body.ic-cookie-member[class] #ic-top-ticker,
  html body.ic-cookie-member[class] .ic-top-ticker{ pointer-events: auto !important; cursor: pointer !important; }
}


/* ── S304-BENACHRICHTIGEN-0210 (ac2, 6501) — „Benachrichtige mich“ unter dem Ausverkauft-Knopf, Tippflaeche >= 48 px. */
@layer s304 {
  html body[class][class] .s304-benachrichtigen{ margin: 10px 0 0 !important; }
  html body[class][class] .s304-benachrichtigen__knopf{
    list-style: none !important; display: flex !important; align-items: center !important; justify-content: center !important;
    min-height: 48px !important; border: 1px solid #15130F !important; border-radius: 99px !important; cursor: pointer !important;
    font-size: 13px !important; font-weight: 600 !important; letter-spacing: .04em !important; text-transform: uppercase !important; color: #15130F !important;
    padding: 0 16px !important; text-align: center !important;
  }
  html body[class][class] .s304-benachrichtigen__knopf::-webkit-details-marker{ display: none !important; }
  html body[class][class] .s304-benachrichtigen__inhalt{ padding: 12px 4px 0 !important; }
  html body[class][class] .s304-benachrichtigen__satz{ font-size: 13px !important; line-height: 1.5 !important; color: #5F5A55 !important; margin: 0 0 8px !important; }
  html body[class][class] .s304-benachrichtigen .product__notification__title,
  html body[class][class] .s304-benachrichtigen .product__notification__variant{ display: none !important; }
}


/* ── S304-IPHONE-EIL-0210 (ac2) — Enzos iPhone-Bilder 02.10. 03:21-03:25 + c9 A/B (Leitung).
   (A/5) Weisser Balken UNTER der klebenden Kopf-Pille (Kategorie, PDP): das ist der Kopfgrund .section-padding, seit
         26.09. absichtlich weiss (S304-KEINE-HARTE-KANTE-AM-KOPF-2609). Auf dem iPhone ragt er ~12 px unter der Pille
         heraus (im Messbrowser nicht: dort 3+44+3 px). Jetzt malt er im geklebten Zustand nur noch hinter der Pille
         (background-clip: content-box). Die FARBE bleibt weiss — Safaris Notch-Faerbung (A4) liest die Farbe, nicht die
         gemalte Flaeche. Ursache der iPhone-Mehrhoehe NICHT gemessen.
   (B)   Versand-Pille im Kopf (.s304-kopfversand) nimmt die Kopffarbe (--s304-wahlfarbe, gemessen immer dunkel:
         #15130F / #182236 / Rueckfall #0A0A0A wie der Kopf) statt fest #13201F.
   (6)   Zwischen Kopf-Pille und Versand-Pille lag eine Luecke, durch die Text halb durchschien -> Luecke zu.
   (2)   Korb: das X (8,54 26x26) lag ueber „Herzlichen Glueckwunsch“ (ab y 72) -> Zeile steht jetzt NEBEN dem X.
   (3)   Korb: „DEIN GESCHENK“ lag hinter dem Bild („IK“) — meine A10-Regel (padding 8px, 6x[class]) hatte der
         Geschenkzeile ihre 30 px oben genommen (S304-DAS-GESCHENK-HAENGT-AN-SEINEM-KAUF-2409). Zurueck auf 30 px. */
@layer s304 {
  html body[class][class][class] .js__header__stuck .theme__header .section-padding{
    background-clip: content-box !important;
  }
  html body[class][class][class] .js__header__stuck .theme__header{
    background-color: transparent !important; background-image: none !important;
  }
  html body[class][class][class][class] .theme__header .s304-kopfversand.s304-kopfversand{
    background: var(--s304-wahlfarbe, #0A0A0A) !important;
    background-image: none !important;
    margin-top: 3px !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .drawer__message.drawer__message{
    margin-top: -10px !important;
    padding-left: 34px !important;
    min-height: 26px !important;
    display: flex !important; align-items: center !important;
  }
  html body[class][class][class][class][class][class] .drawer--cart .cart__item.cart__item.s304-gratiszeile{
    padding-top: 30px !important;
  }
  /* (2b) der Fortschrittsbalken unter „Noch … bis Gratisversand“ behaelt die volle Breite, nur der Text rueckt neben das X */
  html body[class][class][class][class][class][class] .drawer--cart .drawer__message .ic-shipping-bar{
    margin-left: -34px !important; width: calc(100% + 34px) !important; flex: 0 0 calc(100% + 34px) !important;
  }
}


/* ── S304-C9-CEFG-0210 (ac2) — c9/Enzo 02.10. 04:03, gemessen vorher rot / nachher gruen ueber alle 24 Produkte (402 px).
   (C) Walletchain-Kategorie: Videos 1244x1664 sind hoeher als das Bildfeld 0,8:1 -> cover schnitt oben UND unten ~8 px;
       jetzt unten buendig, die Kette sitzt ~8 px hoeher, der Schatten unter ihr ist frei. Keine Luecke.
   (E) PDP: „★ 5.0 | … Bewertungen“ auf Hoehe von „+1 … gratis“ (Mitte 107 zu 109, Oberkante 99 unter dem Titel 94).
       NUR bei Produkten mit Geschenk-Kaufzeile — ohne Pille wuerde die Zeile in den Titel rutschen.
   (F) PDP-Thumbnails: Leiste 342 px, 54+6 px je Bild -> 5,7 sichtbar, das sechste angeschnitten. Jetzt genau 6 je Leiste
       (bei 402 px 52 px), der Rest wischbar, Einrasten zeigt nie ein halbes Bild (Live-Abnahme-Regel 30.09.).
   (G) Burger-Menue: vier Sterne trugen #F2EFEA (aus der Zeit des dunklen Menuekopfs) auf hellem Glas -> dunkel;
       der halbe fuenfte (Verlauf #g60, 4,8) bleibt. */
@layer s304 {
  html body .collection-walletchains div.grid.grid.grid.grid .product-item__image.product-item__image .wc-card-video.wc-card-video,
  html body .collection-walletchains div.grid.grid.grid.grid .product-item__image.product-item__image .wc-card-still.wc-card-still {
    object-position: 50% 100% !important;
  }
  html body[class][class][class]:has(.s304-platz-bracelet, .s304-platz-walletchain) .product__mobile-header .pdp-reviews-member-row{
    margin-top: -31px !important;
    width: fit-content !important; max-width: 60% !important;
  }
  html body[class][class][class] .product__thumbs__holder.product__thumbs__holder > *{
    flex: 0 0 calc((100% - 30px) / 6) !important;
    width: calc((100% - 30px) / 6) !important; min-width: 0 !important; max-width: none !important;
  }
  html body[class][class][class] .product__thumbs__holder.product__thumbs__holder > * img{
    width: 100% !important; height: auto !important; aspect-ratio: 1 / 1 !important; object-fit: cover !important;
  }
  html body[class][class][class] .drawer--header .menu-trust-badge svg path:not([fill^="url"]){
    fill: #15130F !important;
  }
}


/* ── S304-WARENKORB-WIE-ENTWURF-B-0210 (ac2) — c9/Enzo 02.10. H: „sieht noch ueberhaupt nicht so aus, wie du den gebaut hattest“.
   Abgeglichen gegen den abgenommenen Entwurf B (Artefakt CYbYRuHGWgVCHJQA8LZ7j7, lokal gerendert, nebeneinander fotografiert):
   X oben rechts IN der Vertrauenszeile, Versandsatz linksbuendig darunter (ersetzt meinen Fix (2) aus S304-IPHONE-EIL-0210),
   beide Posten in EINEM Kasten mit Trennlinie (ohne Klammer), „DEIN GESCHENK“ in der Textspalte ueber dem Titel,
   Versand und Lieferung in EINER Zeile. Bewusst NICHT aus B: Gold (Enzo 25.09. „keine goldene Farbe“), grosse
   Vorschlagskacheln (Enzo S5 01.10. kleiner), Login-Zeile bleibt leise (Enzo I5/17). Elementnamen wie aktuell (A10). */
@layer s304 {
  /* 1 · X oben rechts in der Vertrauenszeile, Versandsatz linksbuendig darunter (Entwurf B) */
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__close{
    position: absolute !important; top: 21px !important; right: 10px !important; left: auto !important; margin: 0 !important; z-index: 5 !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__message.drawer__message{
    margin-top: 4px !important; padding-left: 0 !important; justify-content: flex-start !important; text-align: left !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__message > span{
    text-align: left !important; width: 100% !important; justify-content: flex-start !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__message .ic-shipping-bar{
    margin-left: 0 !important; width: 100% !important; flex: 0 0 100% !important;
  }
  /* 2 · beide Posten in EINEM Kasten, Trennlinie dazwischen */
  html body[class][class][class][class][class][class][class] .drawer--cart cart-items.drawer__items,
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__items{
    border: 1px solid #E0E0E0 !important; border-radius: 12px !important; margin: 0 12px 8px !important; overflow: hidden !important; background: transparent !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__items .cart__item.cart__item{
    border: 0 !important; border-radius: 0 !important; margin: 0 !important; box-shadow: none !important; background: transparent !important;
    width: 100% !important; max-width: none !important; box-sizing: border-box !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .drawer__items .cart__item.cart__item + .cart__item{
    border-top: 1px solid #ECECEC !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .cart__item.cart__item.s304-gratiszeile::before{
    display: none !important; content: none !important;
  }
  /* 3 · „DEIN GESCHENK“ in der Textspalte ueber dem Titel */
  html body[class][class][class][class][class][class][class] .drawer--cart .s304-gratiszeile .s304-kb-ae{
    left: 139px !important; right: 12px !important;
  }
  /* 4 · Versand und Lieferung in EINER Zeile */
  html body[class][class][class][class][class][class][class] .drawer--cart .s304-fuss{
    display: flex !important; flex-wrap: wrap !important; align-items: baseline !important; gap: 0 6px !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z{
    gap: 4px !important; width: auto !important; flex: 0 0 auto !important; justify-content: flex-start !important; padding: 0 !important; margin: 0 !important; border: 0 !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z + .s304-fuss__z::before{
    content: "·" !important; color: #6B665E !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z *{
    font-size: 12.5px !important; text-transform: none !important; letter-spacing: 0 !important; font-weight: 400 !important; color: #6B665E !important;
  }
}


/* ── S304-S7-KORB-OHNE-SCHATTEN-0210 (ac2) — Enzo (ac2-s7, Option 1): „Schatten im Warenkorb ganz weglassen, wie im alten Theme“.
   Zwei Quellen, beide gemessen: (a) der Bildlink trug eine radiale „Buehne“ (radial-gradient, Radius 14) — im alten Theme
   nicht vorhanden; (b) bei Armbaendern ist die Schatten-Ellipse IN die Bilddatei eingebrannt (gemessen ueber alle
   Produktbilder: Produkt endet bei <=54 %, Schatten 64-80 %). Schnitt nur bei data-s304-typ="bracelet" (Attribut aus
   line_item.product.type in snippets/cart-line-items.liquid) — Walletchains reichen bis 96-100 % und bleiben ganz. */
@layer s304 {
  html body[class][class][class][class][class][class][class] .drawer--cart .cart__item .cart__item__image a{
    background-image: none !important; background-color: transparent !important;
  }
  html body[class][class][class][class][class][class][class] .drawer--cart .cart__item[data-s304-typ="bracelet"] .cart__item__image img{
    clip-path: inset(0 0 38% 0 round 12px) !important;
    transform: translateY(12%) !important;
  }
}


/* === S304-DESKTOP-KOPF-SICHTBAR-0210 · Auftrag 6655 (9c), Terminal ac ===================
   Ganzseiten-Vergleich gegen das alte Theme 188690432381 am Desktop (1440 px): Logo und Menue
   waren live UNSICHTBAR. Ursache: S304-KOPF-UEBERALL-GLEICH-2609 gibt nur `.header__mobile` den
   gruenen Kasten, macht aber ALLE Schrift im Kopf weiss und invertiert das Logo. Am Desktop ist
   `.header__mobile` ausgeblendet -> weiss auf weiss (gemessen: Menue rgb(255,255,255) auf
   .section-padding rgb(255,255,255); altes Theme rgb(33,33,33)). Enzos Regel bleibt: der Kasten
   traegt die Gegenfarbe zu seinem Grund. Am Desktop GIBT es keinen Kasten, also gilt die dunkle
   Schrift des alten Themes (S304-KOPF2-2309: #212121). Nur `.header__desktop` — am Handy ist es
   ausgeblendet, der Handy-Kopf bleibt pixelgleich (Ganzseiten-Vergleich 390/430). */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] header.theme__header .header__desktop,
  html body[class][class][class][class][class][class][class][class][class][class][class][class] header.theme__header .header__desktop * { color: #212121 !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] header.theme__header .header__desktop svg,
  html body[class][class][class][class][class][class][class][class][class][class][class][class] header.theme__header .header__desktop svg * { stroke: #212121 !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] header.theme__header .header__desktop img { filter: none !important; }
}
/* ================= ENDE S304-DESKTOP-KOPF-SICHTBAR-0210 ================= */


/* === S304-DESKTOP-THUMBS-WIE-ALT-0210 · Auftrag 6655 (9c), Terminal ac ===================
   Meine A9-Regel (S304-C9-CEFG-0210, F) setzte nur die Breite (100% - 30px)/6, die Höhe blieb 54 px
   -> am Desktop flache Streifen (1440: 105×54, 1920: 145×54). Altes Theme gemessen: ab 1280 px
   fest 74×84, darunter kleiner bei gleichem Seitenverhältnis. Jetzt ab 990 px: Seitenverhältnis
   74:84, höchstens 74 px breit (1280+ = 74×84 wie alt), nie breiter als ein Sechstel der Leiste.
   Unter 990 px unverändert (Handy pixelgleich). */
@layer s304 {
  @media (min-width: 990px) {
    html body[class][class][class][class][class][class][class][class][class][class][class][class] .product__thumbs__holder.product__thumbs__holder > * { width: min(calc((100% - 30px) / 6), 74px) !important; height: auto !important;
            aspect-ratio: 74 / 84 !important; flex: 0 0 auto !important; }
    html body[class][class][class][class][class][class][class][class][class][class][class][class] .product__thumbs__holder.product__thumbs__holder > * img, html body[class][class][class][class][class][class][class][class][class][class][class][class] .product__thumbs__holder.product__thumbs__holder > * .product__thumb__link { width: 100% !important; height: 100% !important;
            aspect-ratio: auto !important; object-fit: cover !important; }
  }
}
/* Nachtrag (gleiche Ursache, 440-989 px): bei 749 px live 110x54, alt 54x54 -> hoechstens 54 px breit,
   die Hoehe 54 bleibt. Ab 440 px, damit 390/430 unberuehrt bleiben. S304-TABLET-THUMBS */
@layer s304 {
  @media (min-width: 440px) and (max-width: 989px) {
    html body[class][class][class][class][class][class][class][class][class][class][class][class] .product__thumbs__holder.product__thumbs__holder > * { width: min(calc((100% - 30px) / 6), 54px) !important; flex: 0 0 auto !important; }
  }
}
/* ================= ENDE S304-DESKTOP-THUMBS-WIE-ALT-0210 ================= */


/* === S304-RECHTSSEITEN-WIE-ALT-0210 · Auftrag 6660 (9c), Terminal ac ======================
   Impressum, AGB, Widerruf, Datenschutz: die Ueberschrift war live HALB vom Kopf verdeckt
   (Handy und Desktop, Fensterbild bei Scroll 0). Ursache: S304-RECHTSSEITEN-ABSTAND-2309 zieht
   .main-content um 34 px hoch -- gerechnet fuer den Kopf vom 23.09. (92 px). Heute ist der Kopf
   46 px (Handy) / 74 px (Desktop) hoch, die Karte begann bei 22 / 50 px, also UNTER ihm.
   Jetzt: kein Hochziehen, die Karte 12 px unter dem Kopf (dieselbe Absicht wie 23.09.: „nichts
   klebt an der Kopfkante“). Und ab 750 px die Textspalte wie im alten Theme: 610 px, mittig
   (alt gemessen 750/1024/1280/1440/1920 -> immer 610; Karte 648 = 610 + 2 x 19 Innenabstand).
   Greift nur auf Seiten mit Policy-Karte. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.shopify-policy__container) .main-content { margin-top: 0 !important; padding-top: 0 !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.shopify-policy__container) .shopify-policy__container { margin-top: 12px !important; }
  @media (min-width: 750px) {
    html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.shopify-policy__container) .shopify-policy__container { max-width: 648px !important; margin-left: auto !important; margin-right: auto !important; }
  }
}
/* ================= ENDE S304-RECHTSSEITEN-WIE-ALT-0210 ================= */


/* === S304-KEIN-BALKEN-UNTER-DER-PILLE-0210 · Auftrag 6680 (9c), Terminal ac ================
   Enzos weisser Balken unter der klebenden Kopf-Pille (Kategorie, PDP; iPhone 03:21 und 13:03/13:04).
   URSACHE (gemessen, Pseudo-Elemente abgefragt): S304-HEADER-SCROLL-2309 legte am 23.09. unter den
   damals WEISSEN Kopf ueber die volle Breite einen „weichen Auslauf“ .theme__header::after
   (top:100%, 14 px). Seit 24.09. ist der Verlauf #FFF 0/45/100 % = deckend weiss. Seit 26.09. ist
   der Kopf eine schwebende Pille — der Streifen blieb und liegt als weisser Balken ueber dem Inhalt.
   Auf der Startseite war er seit S304-KANTE-2409 schon aus; jetzt ueberall.
   Meine Korrektur S304-IPHONE-EIL-0210 (Kopfgrund nur hinter der Pille) traf ihn nicht: elementFromPoint
   sieht keine Pseudo-Elemente, und der Messbrowser zeigte ihn ueber den Filterknoepfen.
   UNBERUEHRT: Notch (Safari faerbt nach dem festen Streifen ganz oben, nicht nach diesem Element) und
   die runde Pille — beides am 02.10. von Enzo abgenommen. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .theme__header::after { background: none !important; }
}
/* ================= ENDE S304-KEIN-BALKEN-UNTER-DER-PILLE-0210 ================= */


/* === S304-IC-PDP-UND-KORB-0210 · Auftrag 6683 (9c), Terminal ac — Enzos iPhone-Bilder 02.10. 13:06–13:07 ===========
   (5) Plakette „ONLY INNER CIRCLE“: Enzo wollte am 27.09. das RUNDE Abzeichen in Gold (S304-FAHNE-GOLDVERLAUF-2709:
       „unser rundes Ding … in der Farbe vom alten Theme“, radius 99 „so gewollt“). Der Pfeilschnitt aus dem Inline-Stil
       (clip-path polygon … 0 50%) blieb dabei stehen und schnitt die runde linke Kante an -> „das buggt“. Jetzt ohne Schnitt.
   (3) Kaufknopf bei Inner-Circle-Produkten: statt „AUSVERKAUFT“ einfach ausgegraut wie im alten Theme (dort lag der Knopf
       ohne sichtbare Schrift unter einem grauen Schleier). „Benachrichtige mich“ (meine 6501-Rueckholung fuer Ausverkauftes)
       gilt hier nicht: IC-Produkte sind nicht ausverkauft, sondern nur fuer Mitglieder. -> ausgeblendet.
   (4) „JETZT ZUM INNER CIRCLE“: Goldverlauf mit Glanz wie die Plakette (derselbe Verlauf, 200 %, icGoldShimmer 3 s).
   (Antwort ac2-6660-schublade-glas-0210 = A) Warenkorb am Computer undurchsichtig weiss statt Glas. Handy unveraendert. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .ic-only-tag.ic-only-tag { clip-path: none !important; -webkit-clip-path: none !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.ic-only-tag) .s304-cta.s304-cta { background: #D3D3D1 !important; background-image: none !important; opacity: 1 !important;
                              box-shadow: none !important; cursor: not-allowed !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.ic-only-tag) .s304-cta.s304-cta .btn__text { visibility: hidden !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.ic-only-tag) form[id^="NotificationForm"],
  html body[class][class][class][class][class][class][class][class][class][class][class][class]:has(.ic-only-tag) details.s304-benachrichtigen { display: none !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .ic-lock-cta.ic-lock-cta {
    background: linear-gradient(90deg, #B8860B, #DAA520, #FFD700, #DAA520, #B8860B) !important;
    background-size: 200% auto !important; animation: icGoldShimmer 3s ease infinite !important;
    color: #FFFFFF !important; -webkit-text-fill-color: #FFFFFF !important; }
  @media (min-width: 990px) {
    html body[class][class][class][class][class][class][class][class][class][class][class][class] .drawer--cart .drawer__inner { background-color: #FFFFFF !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
  }
}
/* ================= ENDE S304-IC-PDP-UND-KORB-0210 ================= */


/* === S304-KEIN-WEISS-HINTER-DER-PILLE-0210 · Auftrag 6714 (9c), Terminal ac — Enzos iPhone 16:42/16:43 ============
   (1) „Da soll kein weisser Bereich dran kleben. Hinter dem Header soll immer der aktuelle Seiteninhalt durchscheinen.“
       Gemessen im klebenden Zustand (Kategorie + PDP): die EINZIGE deckende Flaeche ausser Pille/Versandpille ist
       .section-padding (402 px breit, weiss) — meine Korrektur S304-IPHONE-EIL-0210 hatte sie nur auf content-box
       beschnitten und weiss gelassen „fuer die Notch“. Die Notch faerbt aber der feste Notch-Streifen ganz oben, nicht
       diese Flaeche. Jetzt durchsichtig, auf ALLEN Seitentypen. Notch und runde Pille unberuehrt (Enzo 02.10. abgenommen).
   (2) Versandpille unter der Kopf-Pille: 8 statt 3 px Luft. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .js__header__stuck .theme__header .section-padding { background-color: transparent !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .theme__header .s304-kopfversand.s304-kopfversand { margin-top: 8px !important; }
}
/* ================= ENDE S304-KEIN-WEISS-HINTER-DER-PILLE-0210 ================= */


/* === S304-ERSTES-BILD-0210 · Auftrag 6714 (9c), Terminal ac — Enzo 02.10. 16:43: „Beim Oeffnen erscheint kurz ein ANDERES
   Bild, erst dann drehen sich die Bilder.“ Gemessen: das Standbild (.wc-card-still) war ein eigenes Foto in anderer Groesse
   (scale .98/1.07/.97), das Video laeuft mit scale(1.2) translateY(-14px), zwei davon gespiegelt. Jetzt: Standbild = erstes
   Bild des Videos (theme.liquid, assets/wc-start-*.jpg) mit GENAU der Verschiebung/Spiegelung/Helligkeit des Videos. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains [data-url*="line47"] .wc-card-still,
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains [data-url*="golden-grace"] .wc-card-still { transform: scale(1.2) translateY(-14px) !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains [data-url*="crystal-grace"] .wc-card-still { transform: scale(1.2) translateY(-14px) scaleX(-1) !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains [data-url*="heavy-ice"] .wc-card-still { transform: scale(1.2) translateY(-14px) scaleX(-1) !important; filter: brightness(1.025) !important; }
}
/* ================= ENDE S304-ERSTES-BILD-0210 ================= */


/* === S304-ERSTES-BILD-OHNE-DATAURL-0210 · Auftrag 6714 (9c), Terminal ac — das Aufblitzen auf /collections/walletchains.
   URSACHE: die Kachel zeigte bis zum Videostart das Produktfoto (shot-6_*), dann das Drehvideo. Das Standbild-Verfahren in
   theme.liquid haengt an [data-url*=…] — und data-url klebt seit Monaten an data-grid-item (snippets/product-grid-item.liquid,
   BEWUSST nicht getrennt: das wuerde scale(1.2) auf die Ketten-Videos scharf schalten, das Enzo am 10.08. abgelehnt hat).
   Deshalb hier OHNE data-url, ueber den Produktlink: eine eigene Ebene (::before, z 1) UEBER den weissen Bildhuellen und
   UNTER dem Video (z 2) traegt das ERSTE Bild des Videos (ffmpeg Bild 0, assets/wc-start-*.jpg) in GENAU der Lage des Videos
   (cover, 50% 100%). Startet das Video, steht dasselbe Bild an derselben Stelle. Videogroesse unveraendert.
   ⛔ Erster Anlauf (Hintergrund auf der Folie selbst) zeigte WEISS: die Kinder der Folie (figure.image-wrapper u. a.)
   tragen eigenes Weiss und verdeckten ihn — am Bild gefangen, nicht an den Messwerten. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/line47"]) .product-item__bg__slide:first-child { position: relative !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/line47"]) .product-item__bg__slide:first-child::before { content: "" !important; position: absolute !important; inset: 0 !important; z-index: 1 !important; pointer-events: none !important; background: #FFFFFF url("/cdn/shop/t/97/assets/wc-start-line47.jpg?v=1790954486") 50% 100% / cover no-repeat !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/crystal-grace"]) .product-item__bg__slide:first-child { position: relative !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/crystal-grace"]) .product-item__bg__slide:first-child::before { content: "" !important; position: absolute !important; inset: 0 !important; z-index: 1 !important; pointer-events: none !important; background: #FFFFFF url("/cdn/shop/t/97/assets/wc-start-crystal-grace.jpg?v=1790954486") 50% 100% / cover no-repeat !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/golden-grace"]) .product-item__bg__slide:first-child { position: relative !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .collection-walletchains grid-item:has(a.product-link[href$="/products/golden-grace"]) .product-item__bg__slide:first-child::before { content: "" !important; position: absolute !important; inset: 0 !important; z-index: 1 !important; pointer-events: none !important; background: #FFFFFF url("/cdn/shop/t/97/assets/wc-start-golden-grace.jpg?v=1790954487") 50% 100% / cover no-repeat !important; }
}
/* ================= ENDE S304-ERSTES-BILD-OHNE-DATAURL-0210 ================= */


/* === S304-FUSS-IN-DER-KOPFFARBE-0210 · Auftrag 6714 (9c), Terminal ac — Enzo 02.10. (ueber c9): „unten der Footer soll ja
   auch dann so blau sein, je nach Farbe.“ Der Kopf nimmt auf der Produktseite die Produktfarbe an (--s304-wahlfarbe, inline
   am html), der Footer blieb #0B1616. Jetzt traegt der Footer die Kopffarbe; wo die Variable fehlt (Kategorie, Startseite),
   bleibt er #0B1616 wie bisher. Der Auslauf ueber dem Footer (main, 420 px, dieselben 15 Stufen) laeuft auf der Produktseite
   in dieselbe Farbe. color-mix: Safari ab 16.2. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .footer-sections,
  html body[class][class][class][class][class][class][class][class][class][class][class][class] .shopify-section-group-group-footer { background-color: var(--s304-wahlfarbe, #0B1616) !important; }
  html body[class][class][class][class][class][class][class][class][class][class][class][class].template-product main#MainContent { background-image: linear-gradient(180deg, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 0%, transparent) 0%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 0.4%, transparent) 10%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 1.6%, transparent) 20%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 2.7%, transparent) 29%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 9%, transparent) 40%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 16%, transparent) 50%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 25%, transparent) 59%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 40%, transparent) 70%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 52%, transparent) 78%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 64%, transparent) 83%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 78%, transparent) 89%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 90%, transparent) 94%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 96.5%, transparent) 97%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 99.6%, transparent) 99%, color-mix(in srgb, var(--s304-wahlfarbe, #0B1616) 100%, transparent) 100%) !important; }
}
/* ================= ENDE S304-FUSS-IN-DER-KOPFFARBE-0210 ================= */


/* ================= S304-IPHONE-0310 (ac) — Enzos iPhone 03.10. 02:52, Punkte 2–5 =================
   (2) Burger: die Kacheln werden erst ~0,1 s nach dem Erscheinen „richtig weiss“.
       Gemessen: .mobile-menu__block-inner laeuft cartDrawerItemsFadeInRight (0,5 s, Deckkraft 0->1), dazu .drawer__inner
       mit Deckkraft-Uebergang. Ein Element mit Deckkraft < 1 ist eine „Backdrop Root“ (Filter Effects 2): solange es
       blendet, sieht der Milchglas-Weichzeichner der Kacheln NICHTS dahinter; erst am Ende der Animation greift er, und
       die Kacheln springen auf Weiss. Jetzt: nur noch das Hereinschieben, keine Deckkraft-Blende -> Glas ab Bild 1.
   (3) „Noch X € bis Gratisversand“: die leere Spur war #E8E8E8 auf Glas, praktisch unsichtbar -> deutlich sichtbar.
       Dazu bekommt die Versand-Pille auf der Kategorie denselben Balken (JS versandAufKategorie, gespiegelt).
   (4) Weisser Schleier hinter der klebenden Kopf-Pille (Enzos Bild: Bildbereich 0–58 px unter der Statusleiste milchig).
       Ursache nicht am Geraet belegbar, aber eingegrenzt: Safari 26 sucht am oberen Rand ein festes, fast schirmbreites
       Element (WebKit fixedContainerEdges) und findet .theme__header (402 px breit, 58 px hoch, DURCHSICHTIG). Ohne Farbe
       legt Safari dort sein Milchglas hin. Jetzt sind Kasten und Polster im Kleben unsichtbar und nicht treffbar, nur die
       Pille bleibt. Die Statusleiste bleibt weiss (Seitengrund), wie am 01.10. gewuenscht. Nur Handy-Kopf (.js__show__mobile).
   (5) „Jetzt sicher zur Kasse“ trug fest #123029; jetzt dieselbe Variable wie Kaufknopf und Kopf (--s304-wahlfarbe).
   Rueckweg: diesen Block und die zwei Stellen S304-COOKIE-GLAS-FRUEH-0310 / S304-VERSANDBALKEN-IMMER-0310 entfernen;
   Sicherungen /root/theme-sicherung/ac2-0310/*.vor-0310-*. */
@layer s304 {
  /* 2 */
  html body[class][class][class][class] .drawer--header .drawer__inner,
  html body[class][class][class][class] .mobile-menu__block--menu-304 .mobile-menu__block-inner{
    opacity: 1 !important;
  }
  /* 3 · Warenkorb: leere Spur sichtbar */
  html body[class][class][class][class][class][class][class][class] .drawer--cart .ic-shipping-bar{
    background: rgba(21,19,15,.16) !important;
    height: 4px !important;
    border-radius: 99px !important;
  }
  html body[class][class][class][class][class][class][class][class] .drawer--cart .ic-shipping-bar .ic-shipping-bar__fill{
    height: 4px !important;
    border-radius: 99px !important;
  }
  /* 3 · Kategorie-Pille: derselbe Balken */
  html body[class][class][class][class] .s304-katversand{ position: relative !important; }
  html body[class][class][class][class] .s304-katversand .s304-katversand__bar{
    position: absolute !important; left: 18px !important; right: 54px !important; bottom: 5px !important;
    height: 3px !important; border-radius: 99px !important; background: rgba(21,19,15,.16) !important;
    overflow: hidden !important; pointer-events: none !important;
  }
  html body[class][class][class][class] .s304-katversand .s304-katversand__bar i{
    display: block !important; height: 100% !important; border-radius: 99px !important; background: #15130F !important;
    transition: width .4s ease !important;
  }
  /* 4 */
  html body[class][class][class][class][class][class][class][class] header-component.js__show__mobile.js__header__stuck .theme__header,
  html body[class][class][class][class][class][class][class][class] header-component.js__show__mobile.js__header__stuck .theme__header .section-padding{
    visibility: hidden !important;
    box-shadow: none !important;
  }
  html body[class][class][class][class][class][class][class][class] header-component.js__show__mobile.js__header__stuck .theme__header .header__mobile,
  html body[class][class][class][class][class][class][class][class] header-component.js__show__mobile.js__header__stuck .theme__header .s304-kopfversand{
    visibility: visible !important;
  }
  /* 5 */
  html body[class][class][class][class][class][class][class][class] cart-drawer .cart__checkout,
  html body[class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout{
    background: var(--s304-wahlfarbe, #123029) !important;
    background-color: var(--s304-wahlfarbe, #123029) !important;
    border-color: var(--s304-wahlfarbe, #123029) !important;
    color: var(--s304-wahlschrift, #FFFFFF) !important;
    transition: background-color .25s ease !important;
  }
}
/* ================= ENDE S304-IPHONE-0310 ================= */


/* ================= S304-VERSTELLBAR-NICHT-UNTER-DER-PILLE-0310 (ac, Auftrag 6797) =================
   Gemessen 03.10.: Auf den Kordel-Armbaendern (MIDNIGHT/SNOW … LINK) lag „⇄ VERSTELLBAR“ (.s304-pf, Sternzeile,
   seit 25.09.) UEBER der Pille „+1 Bracelet gratis“ (.s304-preis::after, seit 30.09. unter dem Preis): man las nur
   „…let gratis“. Ueberlappung 32–87 px bei 390–768 px Breite, am Computer (1440) 0. Beide passen nicht in eine Zeile
   (Sterne+Bewertungen 161 + VERSTELLBAR 109 + Pille 126 > 342). „Alle verstellbar.“ steht schon im Geschenkblock
   darunter, deshalb faellt die Zeile unter 1200 px weg; der Computer bleibt wie er war. Rueckweg: Block entfernen. */
@media (max-width: 1199px) {
  @layer s304 {
    html body[class][class][class][class][class][class] .s304-neu .pdp-reviews-member-row .s304-pf,
    html body[class][class][class][class][class][class] .s304-karte .s304-pf{ display: none !important; }
  }
}
/* ================= ENDE S304-VERSTELLBAR-NICHT-UNTER-DER-PILLE-0310 ================= */


/* ================= S304-WARENKORB-A-0310 (ac) =================
   Enzo 03.10. 13:26Z, Antwort auf ac-0310-warenkorb-entwurf: „A · Ruhig wie frueher“.
   Seine Worte davor: Inner-Circle-Zeile = Reibung, Versand links mit Zahlen = unruhig, alles zu klein; und A10 (02.10.):
   Formatierung wie das alte Theme, kein IC-Element, das vom Kaufen ablenkt.
   Umbau nur in der Darstellung, die Zahlen kommen weiter aus denselben Elementen:
     · IC-Zeile im Korb aus (Einloggen bleibt ueber das Profil-Symbol oben)
     · Zwischensumme, Versand, Lieferung als drei ruhige Zeilen, Wert rechtsbuendig (statt „Versand … · Lieferung …“)
     · Produktname und Preis 17 px, Kassenknopf 60 px mit Schloss
   Ersetzt in der Wirkung „4 · Versand und Lieferung in EINER Zeile“ (02.10.). Rueckweg: Block entfernen. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-ic-anmelden-huelle{ display: none !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss{
    display: block !important; margin: 2px 0 10px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z{
    display: flex !important; justify-content: space-between !important; align-items: baseline !important;
    width: 100% !important; box-sizing: border-box !important; padding: 0 12px !important; margin: 0 !important; gap: 12px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z + .s304-fuss__z::before{ content: none !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__hin{ display: none !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z .s304-fuss__l,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total .cart__total__label{
    font-size: 13px !important; line-height: 2 !important; letter-spacing: .07em !important; text-transform: uppercase !important;
    font-weight: 600 !important; color: #55524D !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z .s304-fuss__w,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total .cart__total__price{
    font-size: 16px !important; line-height: 2 !important; letter-spacing: 0 !important; text-transform: none !important;
    font-weight: 600 !important; color: #15130F !important; white-space: nowrap !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__item__title,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__item__title a,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__item__price{ font-size: 17px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout{
    min-height: 60px !important; font-size: 16px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout .icon-lock{
    display: inline-block !important; width: 18px !important; height: 18px !important; margin-right: 8px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout .icon-lock path{ stroke: currentColor !important; }
}
/* Nachschliff 13:40Z, gemessen gegen den genehmigten Entwurf: Luecke Zwischensumme/Versand, Knopftext brach um (76 px statt 60), Lieferzeile brach bei 390 px um. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__price__holder,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total{ margin-bottom: 0 !important; padding-bottom: 0 !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total{ margin-top: 4px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss{ margin-top: 0 !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z .s304-fuss__w,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total .cart__total__price{ font-size: 15px !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout{ font-size: 15px !important; letter-spacing: .04em !important; white-space: nowrap !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout .s304-endpreis{ white-space: nowrap !important; margin-left: auto !important; }
}
@media (max-width: 409px) { @layer s304 {
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .s304-fuss .s304-fuss__z .s304-fuss__l,
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__total .cart__total__label{ font-size: 12px !important; letter-spacing: .05em !important; }
  html body[class][class][class][class][class][class][class][class][class] .drawer--cart .cart__checkout{ font-size: 14px !important; letter-spacing: .03em !important; }
} }
/* ================= ENDE S304-WARENKORB-A-0310 ================= */


/* ================= S304-UNTERKATEGORIEN-0310 (ac, Auftrag 6816): Unterkategorien im Footer eingerueckt, leiser ================= */
@layer s304 {
  html body[class][class][class][class] .s304-fuss-spalte .s304-fuss-spalte__link--unter{
    padding-left: 12px !important; min-height: 24px !important; font-size: 10.5px !important; opacity: .72 !important; }
  /* Lange Unterkategorie-Titel brechen VOR der Pille „1 KAUFEN · 1 GESCHENKT“ um (gemessen: Titelkasten bis x 254, Pille ab ~218) */
  html body[class][class][class][class][class][class] .s304-kopfbild--cord-armbaender .wc-trust-header__title,
  html body[class][class][class][class][class][class] .s304-kopfbild--ice-armbaender .wc-trust-header__title,
  html body[class][class][class][class][class][class] .s304-kopfbild--perlen-walletchains .wc-trust-header__title,
  html body[class][class][class][class][class][class] .s304-kopfbild--ketten-walletchains .wc-trust-header__title{
    max-width: 165px !important; font-size: 19px !important; line-height: 1.15 !important; white-space: normal !important; overflow-wrap: break-word !important; }
}


/* ================= S304-ENZO-IPHONE-0410 (ac) — Enzos iPhone 04.10. 00:31–00:35, Punkte 2·3·4·6·8 =================
   (2) Beim schnellen Hochscrollen blitzt oben der alte gepunktete Grund: `html.s304-grund-34 body::after` ist ein
       Punktkorn (radial-gradient 2,3/3,7/5,3 px, fest ueber den ganzen Schirm). Sichtbar wird es nur dort, wo gerade
       keine weisse Flaeche liegt — beim Ein-/Ausfahren des Kopfs. Kategorie UND Produktseite: weg.
   (3) Burger: Fussblock (Versand & Retouren, FAQ, Icons) blendete 0,5 s nach, die Liste lief cartDrawerItemsFadeInRight
       von rechts, waehrend das Fach von links kam. Jetzt: nur das Hereinschieben, der Inhalt steht ab Bild 1 komplett.
       ⭐ Dauer 1 ms statt `animation:none` — `none` verwirft auch den Endzustand (fill-mode forwards), dann bliebe
       der Ausgangszustand des Themes stehen.
   (4) „Das Paket am Ende der Strecke“ (Absicht in s304-kat.css): Balken und Paket haben jetzt DIESELBE Mitte
       (beide H − 15 px), der Balken laeuft bis 6 px vor das Paket. Vorher: Balken 9 px unter der Paketmitte, am Rand.
   (6) Der Mittelpunkt zwischen Datum und „INNER CIRCLE MEMBER“ ist im Snippet entfernt; hier nur der Abstand.
   (8) „Inner Circle Fits“: 160 px Polster unter dem Produktblock (S304-R4-R5-R6-FUSSBEREICH-2509, damals letzter Block
       vor dem Fuss-Verlauf) -> 0; die Fits stehen 10 px unter den Bewertungen. Die Fotos ohne weisse Kachel und grauen
       Rand.
   Rueckweg: diesen Block entfernen; Sicherung /root/theme-sicherung/ac2-0410/vollstand-0410-vor/. */
@layer s304 {
  /* 2 */
  html.s304-grund-34 body[class][class][class][class].s304-kat-an::after,
  html.s304-grund-34 body[class][class][class][class].template-product::after{
    background: none !important;
    -webkit-mask-image: none !important; mask-image: none !important;
  }
  /* 3 */
  html body[class][class][class][class] .drawer--header .mobile-menu__block,
  html body[class][class][class][class] .drawer--header .mobile-menu__block-inner,
  html body[class][class][class][class] .drawer--header [data-animation="drawer-items-fade"]{
    animation-duration: 1ms !important;
    animation-delay: 0s !important;
    transition-duration: 0s !important;
    transition-delay: 0s !important;
  }
  /* 4 */
  html body[class][class][class][class][class][class][class][class] .s304-katversand{
    padding-top: 8px !important;
    padding-bottom: 22px !important;
  }
  html body[class][class][class][class][class][class][class][class] .s304-katversand .s304-katversand__bar{
    left: 16px !important; right: 41px !important; bottom: 13.5px !important; top: auto !important;
  }
  html body[class][class][class][class][class][class][class][class] .s304-katversand::before{
    top: auto !important; bottom: 5.5px !important; right: 16px !important;
    width: 19px !important; height: 19px !important;
    background-size: 19px 19px !important;
    transform: none !important;
  }
  /* 6 */
  html body[class][class][class][class] .rev-slider-card__meta{ gap: 10px !important; }
  /* 8 */
  html body[class][class][class][class].template-product .s304-neu.product__page{
    padding-bottom: 0 !important;
    background-image: none !important;
  }
  html body[class][class][class][class].template-product .s304-community.s304-community{
    padding-top: 10px !important;
    margin-top: 0 !important;
  }
  html body[class][class][class][class].template-product .s304-community .swiper-slide{
    background: transparent !important;
    box-shadow: none !important;
    border: 0 !important;
  }
}
/* ================= ENDE S304-ENZO-IPHONE-0410 ================= */


/* ================= S304-MITGLIEDERFUSS-NACH-WARENKORB-A-0410 (ac) =================
   Gemessen 04.10. (Mitglied, iPhone-Profil): der Korb zeigte „Versandkosten KOSTENLOS“ und darunter „Versand 4,99 €“.
   Die Klasse s304-ic-fuss sass, der Selektor von S304-MITGLIEDERFUSS-ERSETZT-2909 traf (:first-of-type = true) —
   aber S304-WARENKORB-A-0310 setzt .s304-fuss__z mit 0-12-2 auf display:flex !important und schlug die Sperre (0-6-2).
   Hier dieselbe Sperre in derselben Ebene mit 0-15-2. Nur fuer angemeldete Mitglieder (s304-ic-fuss), Gaeste unberuehrt.
   Rueckweg: Block entfernen. */
@layer s304 {
  html body[class][class][class][class][class][class][class][class][class][class] .drawer--cart.s304-ic-fuss .s304-fuss .s304-fuss__z:first-of-type{ display: none !important; }
}
/* ================= ENDE S304-MITGLIEDERFUSS-NACH-WARENKORB-A-0410 ================= */


/* ================= S304-KOPF-DESKTOP-GLAS-0510 (ac) =================
   Gemessen 05.10. (1440 px, PDP): beim Scrollen bekommt header-component `js__header__stuck` und klebt fixed, aber
   .theme__header hat keinen Hintergrund (rgba(0,0,0,0)); der weisse Grund gehoert zum Abschnitt darunter und scrollt weg.
   Folge: Produktbild, „ALLE 8 ANSEHEN“ und der Kaufknopf liefen sichtbar unter WALLETCHAINS/BRACELETS … durch.
   Hier dasselbe Glas wie Menue und Warenkorb (gemessen: Weiss .94, blur 42 px, saturate 1.3) — nur wenn er klebt
   UND die Desktop-Kopfzeile gilt (`:not(.js__show__mobile)`); die mobile Pille bleibt unberuehrt. Rueckweg: Block entfernen. */
@layer s304 {
  html body[class][class][class][class][class][class] header-component.js__header__stuck:not(.js__show__mobile) .theme__header{
    background: rgba(255,255,255,.94) !important;
    -webkit-backdrop-filter: blur(42px) saturate(1.3) !important;
    backdrop-filter: blur(42px) saturate(1.3) !important;
    box-shadow: 0 1px 0 rgba(21,19,15,.06), 0 14px 30px -24px rgba(16,16,18,.35) !important;
  }
}
/* ================= ENDE S304-KOPF-DESKTOP-GLAS-0510 ================= */

/* S304-MITGLIED-ZEILENPREIS-LESBAR-0510 (ac): inner-circle.css faerbt fuer Mitglieder den Zeilenpreis
   im Warenkorb weiss (#fff !important) - auf dem hellen Korb unsichtbar (Richard 04.10., gemessen rgb(255,255,255)).
   Gleiche Farbe wie beim Gast; im Layer, weil die IC-Regel !important traegt. */
@layer s304 {
  html body.ic-member-active .cart__item__price, html body.ic-cookie-member .cart__item__price {
    color: rgb(33, 33, 33) !important; -webkit-text-fill-color: rgb(33, 33, 33) !important;
  }
}

/* S304-KAUFFEHLER-ABSTAND-0510 (ac): Die Zahlungs-Symbole unter dem Kaufknopf ragen mit negativem Abstand ~18 px nach oben;
   mit sichtbarer Fehlermeldung (S304-KAUFFEHLER-SICHTBAR-0510) ueberdeckten sie das Feld. Nur dann Abstand. */
@layer s304 {
  html body #s304-kaufform .product__form__errors.is-visible { margin-bottom: 24px !important; }
}

/* S304-AUSVERKAUFT-IN-KATEGORIE-0510 (ac): Auf Kategorieseiten blendete die Sammelregel in theme.liquid (~Z. 524) ALLE
   Abzeichen aus - auch "SOLD OUT" (Stil steht in 304-custom.css). white-ice sah kaufbar aus, mit "+",
   und der Klick scheiterte still (gemessen 05.10.). Enzo: "wenn jemand sonst auf ein ausverkauftes Produkt
   geht, dann muss er halt den normalen Ausverkauft sehen." Nur Kacheln MIT .sold-box; andere Abzeichen
   bleiben versteckt, Inner-Circle-Praemien tragen keine .sold-box (gemessen 0 von 5). */
@layer s304 {
  html body .product-item__image .badge-box-container:has(.sold-box),
  html body .product-item__image .badge-box-container:has(.sold-box) .sold-box { display: block !important; opacity: 1 !important; visibility: visible !important; }
  html body .product-item__image .badge-box-container:has(.sold-box) .sold-box { display: inline-block !important; }
  /* staerker als s304-kat.css (html body.s304-kat-an .grid > grid-item.product-item .wc-quick-atc, 0-4-3) */
  html body[class][class] .grid > grid-item.product-item:has(.sold-box) .wc-quick-atc,
  html body[class][class] .product-item:has(.sold-box) .wc-quick-atc { display: none !important; }
}

/* S304-KORB-RABATTZEILE-0510 (ac) — Enzo 05.10. 09:22Z (Karte ac-0510-korb-rabattzeile): „Ja, eine Zeile“ über der Zwischensumme, in derselben Schrift.
   theme.css Regel 11 blendet .drawer .cart__total__discount hart aus; die Zeile „Artikel vor Rabatt“ bleibt weiter aus.
   Ohne Symbol und ohne Entfernen-X: am Warenkorb bleibt sonst alles, wie es ist. Rueckweg: Block entfernen. */
html body .drawer .cart__total__discount{display:block !important;width:100% !important;flex:0 0 100% !important;font-size:inherit !important;color:inherit !important;margin:0 !important}
html body .drawer [data-cart-price-holder] .cart__total__discount .cart__total[data-discount-body]{display:flex !important;justify-content:space-between !important;align-items:baseline !important;width:100% !important;padding:12px 0 0 !important;margin:4px 0 0 !important} /* Spezifitaet 0-5-2 gegen theme.css Teil 1 (0-4-0) */
html body .drawer .cart__total__discount [data-discount-body] > div > span{font-size:12px !important;font-weight:600 !important;letter-spacing:.6px !important;text-transform:uppercase !important;color:rgb(85,82,77) !important} /* wie .cart__total__label, gemessen */
html body .drawer .cart__total__discount [data-discount-body] > span{font-size:15px !important;font-weight:600 !important;letter-spacing:normal !important;text-transform:none !important;color:rgb(21,19,15) !important} /* wie .cart__total__price, gemessen */
html body .drawer .cart__total__discount .remove-discount,html body .drawer .cart__total__discount .icon{display:none !important}

/* ═══ S304-SV-KORB-SCHRIFT-0510 (sv, 05.10.) ═══════════════════════════════
   Enzo 05.10. ~21:05Z mit Bildschirmfoto der Schublade: „Dein Geschenk",
   „Crystal Grace", „Line 47" muessen in DERSELBEN Schrift stehen wie auf
   PDP/Kasse. Gemessen vorher (Chromium 390, Theme 189042917757):
   Korb-Titel Inter 17px/400, Geschenk-Etikett Inter 9.5px/800,
   PDP-Titel h1.s304-titel Helvetica, Arial 19px/700 ls .01em,
   Kasse (Shopify) Systemschrift 14px/400 (-apple-system, ... Helvetica).
   ⇒ Familie + Gewicht + Laufweite vom PDP-Titel. Groessen bleiben, damit
   sich das Layout der Schublade nicht verschiebt.
   Rueckweg: diesen Block entfernen, Sicherung
   /root/theme-sicherung/sv-0510/s304-haus.css.vor-korb-schrift */
@layer s304 {
html body .cart__item__title,
html body .cart__item__title a{
  font-family: Helvetica, Arial, sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: .01em !important;
}
html body .drawer--cart .s304-gratiszeile .s304-kb-ae > span{
  font-family: Helvetica, Arial, sans-serif !important;
  font-weight: 700 !important;
}
}
/* ═══ /S304-SV-KORB-SCHRIFT-0510 ═══ */

/* ═══ S304-SV-KAUFKNOPF-KRINGEL-0510 (sv, 05.10.) ═══════════════════════════
   Enzos Video 23:03: „Beide in den Warenkorb" ist nach dem Tipp ~1 s schwarz
   ohne Schrift. Gemessen: Das Theme blendet die Schrift aus (.is-loading /
   .is-added) und will einen Kringel bzw. ein Haekchen zeigen - am Haupt-Knopf
   ist .btn__loader aber LEER (0x0, kein SVG) und .btn__added fehlt (die Leiste
   hat beides). Hier wird der Kringel per CSS gezeichnet und im Zustand
   „hinzugefuegt" bleibt die Schrift stehen. Rueckweg: Block entfernen,
   Sicherung /root/theme-sicherung/sv-0510/s304-haus.css.vor-kringel */
@layer s304 {
html body button[name="add"].is-loading{ position: relative !important; }
html body button[name="add"].is-loading > .btn__loader:empty{ opacity: 1 !important; }
html body button[name="add"].is-loading > .btn__loader:empty::before{
  content: "" !important; position: absolute !important; left: 50% !important; top: 50% !important;
  width: 18px !important; height: 18px !important; margin: -11px 0 0 -11px !important;
  border: 2px solid rgba(255,255,255,.28) !important; border-top-color: currentColor !important;
  border-radius: 50% !important; box-sizing: content-box !important;
  animation: s304SvKringel .7s linear infinite !important;
}
html body button[name="add"].is-added:not(:has(.btn__added)) > .btn__text{ opacity: 1 !important; }
@keyframes s304SvKringel { to { transform: rotate(360deg); } }
}
/* ═══ /S304-SV-KAUFKNOPF-KRINGEL-0510 ═══ */

/* ═══ S304-SV-IC-DASHBOARD-SCHWARZ-0610 (sv, 06.10.) ═══════════════════════
   Enzo 06.10. 01:19Z Karte sv-0510-ic-dashboard-wahl: „B live“. Nur /pages/member-dashboard
   (#ic-dash): schwarzer Grund = Fussfarbe #0b1616 (keine harte Kante, kein grauer
   Schatten hinter „Abmelden“), FAQ ohne aeussere Box, keine Box in der Box.
   Rueckweg: Block entfernen, Sicherung
   /root/theme-sicherung/sv-0510/s304-haus.css.vor-ic-dashboard-schwarz */
@layer s304 {
/* sv Entwurf A 05.10.: schwarzer Grund = Fussfarbe #0b1616 (keine Kante), FAQ ohne aeussere Box */
html:has(#ic-dash), html:has(#ic-dash) body:not(.template-index), html:has(#ic-dash) body:not(.template-index) .main-content, html:has(#ic-dash) body:not(.template-index) #MainContent, html:has(#ic-dash) body .shopify-section, html body #ic-dash.ic-ruhig { background: #0b1616 !important; background-image: none !important; }
html body #ic-dash.ic-ruhig .pill { background: rgba(255,255,255,.94) !important; }
html body #ic-dash.ic-ruhig .a-faq { background: transparent !important; box-shadow: none !important; border-radius: 0 !important; border: 0 !important; }
html body #ic-dash.ic-ruhig .a-faq::before, html body #ic-dash.ic-ruhig .a-faq::after { display: none !important; }
html body #ic-dash.ic-ruhig .a-faq > .seclbl { color: rgba(255,255,255,.55) !important; }
html body #ic-dash.ic-ruhig .a-faq > .faq-t { color: #fff !important; }
html body #ic-dash.ic-ruhig .a-faq .faq-i { box-shadow: none !important; border-color: rgba(255,255,255,.08) !important; }
html body #ic-dash.ic-ruhig .a-foot .support { color: rgba(255,255,255,.6) !important; }
html body #ic-dash.ic-ruhig .a-foot .support a { color: #fff !important; }
html body #ic-dash.ic-ruhig .a-foot .logout { color: #fff !important; border-color: rgba(255,255,255,.28) !important; background: transparent !important; }
/* B zusaetzlich: keine Box in der Box — innere Kaesten flach, Trennung per Haarlinie */
html body #ic-dash.ic-ruhig .a-route .accbox, html body #ic-dash.ic-ruhig .a-earn .earn-row, html body #ic-dash.ic-ruhig .a-earn .earn-col { background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; }
html body #ic-dash.ic-ruhig .a-earn .earn-row { border-bottom: 1px solid rgba(0,0,0,.08) !important; padding-left: 0 !important; padding-right: 0 !important; }
html body #ic-dash.ic-ruhig .a-earn .earn-col + .earn-col { border-left: 1px solid rgba(0,0,0,.08) !important; }
html body #ic-dash.ic-ruhig .a-route .accbox { border-left: 2px solid rgba(0,0,0,.08) !important; }
html body #ic-dash.ic-ruhig .a-tiles .tiles { background: transparent !important; box-shadow: none !important; border-radius: 0 !important; }

}
/* ═══ /S304-SV-IC-DASHBOARD-SCHWARZ-0610 ═══ */
