/*  MICROTHEMER STYLES  */

/*= Full Code Editor CSS ====== */

/* ==========================================================================
   Hacke & Spitze – CSS-Overrides (konsolidierte Neufassung)
   --------------------------------------------------------------------------
   Quelle:   Microthemer-Export „Tweaks August 2026" (11.08.2026, MT 7.5.3.9)
   Einbau:   In Microthemer ALLE bestehenden Ordner löschen, dann diese Datei
             komplett in den globalen Code-Editor (hand-coded CSS) einfügen.
             Zuerst auf Staging, dann Production. Export der alten Fassung
             (tweaks-august-2026.zip) liegt als Backup vor.
   Breaks:   Alle Media Queries sind max-width (Desktop-First). Reihenfolge
             in dieser Datei: groß -> klein, kleinere Query gewinnt unten.
   Hinweis:  !important ist überall gesetzt, weil Microthemer das bisher auch
             tat und das Theme sonst sticht. Gezielt ausdünnen, wenn Zeit.
   Typo:     Sektion 0 enthält das Token-System für Antarctica (VF): Ebenen
             mit je einer Zahl pro Achse – Selbstbedienung ohne KI-Session.
   Stand:    15.08.2026 (Typo-Token, Karten- und Pillen-Typografie)
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Typo-Steuerung (Antarctica VF) – Ebenen-Token
   --------------------------------------------------------------------------
   SO STELLST DU EINEN WERT EIN: Microthemer → globaler Custom-Code → diesen
   Block suchen → genau eine Zahl ändern → speichern. Wirkt sofort auf allen
   Elementen der Ebene.

   Achsen: wdth = Laufweite, wght = Strichstärke, CNTR = Kontrast (gleicht
   die Lesbarkeit enger Laufweiten aus). Schreibweise beachten: CNTR groß –
   „cntr" klein ist eine tote Achse. Eigener Messbefund vom 14.08.: wght und
   CNTR verändern die Zeichenbreite nicht – Hover per wght/CNTR ist damit
   ohne Layout-Shift möglich.

   Ebenen-Logik: Text und Kompakt-Kontexte (Karten, Pills) sind bewusst
   getrennt. Unterschiedliche Achsenwerte bei gleicher Schrift sind hier eine
   Design-Entscheidung, kein Setup-Fehler. Konsistenz Karten ↔ Überschriften
   stellst du über die Token her (z. B. --hs-wdth-head Richtung 50 ziehen).
   -------------------------------------------------------------------------- */
:root {
	/* Fließtext / Absätze */
	--hs-wdth-text: 85;
	--hs-wght-text: 400;
	--hs-cntr-text: 50;

	/* Überschriften auf Seiten (H1, H2, PDP-Titel) */
	--hs-wdth-head: 85;
	--hs-wght-head: 700;
	--hs-cntr-head: 50;

	/* Produktkarten: Marke / Titel / Tagline */
	--hs-wdth-card-brand: 50;
	--hs-wght-card-brand: 500;
	--hs-cntr-card-brand: 100;
	--hs-wdth-card-title: 50;
	--hs-wght-card-title: 650;
	--hs-cntr-card-title: 100;
	--hs-wdth-card-tag: 85;
	--hs-wght-card-tag: 400;
	--hs-cntr-card-tag: 50;

	/* Variation-Pills (Größenwahl auf Produktseiten) */
	--hs-wdth-pill: 85;
	--hs-wght-pill: 500;
	--hs-cntr-pill: 50;

	/* Preis auf Produktkarten */
	--hs-wdth-price: 100;
	--hs-wght-price: 850;
	--hs-cntr-price: 50;

	/* Hauptmenü (aktuell ungenutzt – Block in Sektion 1 ist auskommentiert) */
	--hs-wdth-menu: 100;
	--hs-wght-menu: 500;
	--hs-cntr-menu: 50;
}

/* --------------------------------------------------------------------------
   1. Typografie (global)
   Alle Regeln lesen die Token aus Sektion 0. Die früher separaten Text-Regeln
   für Kontakt/Versandkosten/Datenschutz/MailPoet sind hier zusammengeführt.
   -------------------------------------------------------------------------- */
.page-header h1 {
	line-height: 30px !important;
	font-variation-settings: "wdth" var(--hs-wdth-head), "wght" var(--hs-wght-head), "CNTR" var(--hs-cntr-head) !important;
}
.text-entry > h2 {
	padding-bottom: 20px !important;
	font-variation-settings: "wdth" var(--hs-wdth-head), "wght" var(--hs-wght-head), "CNTR" var(--hs-cntr-head) !important;
}
.wp-block-column h2 {
	font-variation-settings: "wdth" var(--hs-wdth-head), "wght" var(--hs-wght-head), "CNTR" var(--hs-cntr-head) !important;
}
.wp-block-column p,
#js-modal-page .excerpt,
.mtp-46091 .content > p,
.mtp-46091 .hf-fields-wrap label,
.mtp-45545 .content p,
.mtp-186 .agb_content p,
.mtp-186 .agb_content li {
	font-variation-settings: "wdth" var(--hs-wdth-text), "wght" var(--hs-wght-text), "CNTR" var(--hs-cntr-text) !important;
}
/* ACHTUNG globaler Selektor (war in MT als „Card-Weiterlesen" geführt): */
.button-wrapper > a:nth-of-type(1) > span {
	font-variation-settings: "wdth" var(--hs-wdth-card-tag), "wght" var(--hs-wght-card-tag), "CNTR" var(--hs-cntr-card-tag) !important;
}
#js-modal-page .title-icon {
	width: auto !important;
	height: 18px !important;
	padding-right: 3px !important;
	margin-top: 1px !important;
}

@media (max-width: 1199.98px) {
	#js-modal-page .excerpt {
		font-size: 15px !important;
		font-variation-settings: "wdth" var(--hs-wdth-text), "wght" var(--hs-wght-text), "CNTR" var(--hs-cntr-text) !important;
	}
	#js-modal-page .title-icon {
		font-size: 16px !important;
	}
}

@media (max-width: 479.98px) {
	.page-header h1 {
		font-size: 24px !important;
		margin-bottom: 20px !important;
	}
}

/* --------------------------------------------------------------------------
   1b. Produktkarten (Grid + Slider): Marke / Titel / Tagline
   Spezifikation Holger, 15.08.2026: Marke eng am Titel, Tagline mit mehr
   Abstand. Selektoren aus dem Live-Markup verifiziert (li.product >
   .inner-wrap > a > .brand + .woocommerce-loop-product__title > .title/
   .tagline). display:block auf den Spans, weil Inline-Elemente sonst keine
   Abstände nach oben/unten annehmen.
   -------------------------------------------------------------------------- */
li.product .inner-wrap .brand {
	margin-bottom: -5px !important;   /* Holger 15.08.: bewusst negativ – zieht den Titel eng an die Marke */
	opacity: 1 !important;
	line-height: 1.1 !important;
	font-variation-settings: "wdth" var(--hs-wdth-card-brand), "wght" var(--hs-wght-card-brand), "CNTR" var(--hs-cntr-card-brand) !important;
}
li.product .woocommerce-loop-product__title .title {
	/* 16.08. revidiert (Vorgabe Holger): Titel wieder EINE Zeile mit Ellipsis,
	   keine reservierte Leerzeile zwischen Titel und Tagline. Die Tagline
	   behält ihre 2-Zeilen-Reservierung (verhindert Preis-Versatz). */
	display: -webkit-box !important;
	-webkit-box-orient: vertical !important;
	-webkit-line-clamp: 1 !important;
	line-clamp: 1 !important;
	overflow: hidden !important;
	opacity: 1 !important;
	line-height: 1.05 !important;
	font-variation-settings: "wdth" var(--hs-wdth-card-title), "wght" var(--hs-wght-card-title), "CNTR" var(--hs-cntr-card-title) !important;
}
li.product .woocommerce-loop-product__title .tagline {
	display: -webkit-box !important;
	-webkit-box-orient: vertical !important;
	-webkit-line-clamp: 2 !important;
	line-clamp: 2 !important;
	overflow: hidden !important;
	min-height: 2.5em !important;
	text-wrap: balance !important;
	margin-top: 10px !important;
	font-size: 16px !important;
	line-height: 1.25 !important;
	font-variation-settings: "wdth" var(--hs-wdth-card-tag), "wght" var(--hs-wght-card-tag), "CNTR" var(--hs-cntr-card-tag) !important;
}

/* Preis auf den Karten (testweise, 15.08.): rechtsbündig, eigene Achsenwerte
   (breitere Laufweite als Text/Titel, Kontrast 50), dichter an der Tagline,
   Untermargin reduziert (Theme: mt-4 = 16px / mb-3 = 12px). Das €-Zeichen
   rückt näher an die Zahl: Das Theme positioniert es absolut und schiebt die
   Zahl per bdi-Padding 12px nach rechts – hier enger. */
li.product .inner-wrap .price {
	justify-content: flex-end !important;
	margin-top: 2px !important;
	margin-bottom: 4px !important;
	margin-right: 30px !important;   /* testweise: 30px nach links, damit die Zugehörigkeit zum Textblock darüber klar bleibt */
	font-variation-settings: "wdth" var(--hs-wdth-price), "wght" var(--hs-wght-price), "CNTR" var(--hs-cntr-price) !important;
}
li.product .inner-wrap .price bdi {
	padding-left: 12px !important;
}


/* Derselbe €-Abstand gilt auch innerhalb von Streich-/Aktionspreisen
   (dort sitzt der Betrag in del/ins statt direkt im .price). */
li.product .price del bdi,
li.product .price ins bdi {
	padding-left: 12px !important;
}

/* --------------------------------------------------------------------------
   1d. „Neu im Sortiment" / Related-Slider (Liste Holger, 15.08.)
   - Textblock-Padding 24px -> 16px
   - Karten gleich hoch (align-self stretch statt self-end des Themes) und
     breiter (max-width 280 -> 320px)
   - Bilder einheitlich im Anschnitt: festes Seitenverhältnis + cover
     (schneidet zu, verzerrt nie)
   Die leere Fläche rechts ist Absicht des Themes (slidesPerView 5.5).
   -------------------------------------------------------------------------- */
.related-slider ul.swiper-wrapper.products li.product.swiper-slide {
	align-self: stretch !important;
	max-width: 320px !important;
}
.related-slider li.product .inner-wrap {
	padding: 16px !important;
}
.related-slider li.product > img {
	width: 100% !important;
	aspect-ratio: 4 / 3 !important;
	object-fit: cover !important;
}

/* X-Versatz des vollbreiten Slider-Wrappers: Der Theme-Trick calc(50% - 50vw)
   setzt vw gleich % – unsere scrollbar-gutter-Reservierung verschiebt das um
   die halbe Rinnenbreite (Windows ~15-17px). Kompensation als Näherung; bei
   Overlay-Scrollbars (macOS/Mobil) wirkungslos, da dort nichts verrutscht. */
.related-products-wrapper {
	margin-left: calc(50% - 50vw + 8px) !important;
	margin-right: calc(50% - 50vw + 8px) !important;
}

/* --------------------------------------------------------------------------
   1f. Resilienz-Fallback: Slider bleibt benutzbar, wenn Swiper nie startet
   Befund 16.08. (iOS Safari, PDP; alt und auch auf Prod): Der Theme-Router
   laedt die PDP-Route per dynamischem Import nach – scheitert er, laeuft
   keinerlei Theme-JS: weder Menue noch Slider-Init. Ein nicht initialisierter
   .related-slider zeigt dann kollabierte Karten ohne Swipe. Solange die
   Klasse .swiper-initialized fehlt, bekommt die Zeile natives horizontales
   Scrollen mit Snap und festen Kartenbreiten; die dann funktionslosen
   Navigationspfeile werden ausgeblendet. Sobald Swiper laeuft, greift nichts
   davon. Zugleich Muster fürs Neubau-Protokoll: Komponenten muessen ohne
   JS degradieren statt zu kollabieren.
   -------------------------------------------------------------------------- */
.related-slider:not(.swiper-initialized) {
	overflow-x: auto !important;
	scroll-snap-type: x mandatory;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.related-slider:not(.swiper-initialized)::-webkit-scrollbar {
	display: none;
}
.related-slider:not(.swiper-initialized) ul.products {
	gap: 16px !important;
}
.related-slider:not(.swiper-initialized) li.product {
	flex: 0 0 64% !important;
	max-width: 280px !important;
	scroll-snap-align: start;
}
@media (min-width: 830px) {
	.related-slider:not(.swiper-initialized) li.product {
		flex: 0 0 23.5% !important;
	}
}
.related-slider:not(.swiper-initialized) .swiper-nav-button--prev,
.related-slider:not(.swiper-initialized) .swiper-nav-button--next {
	display: none !important;
}

/* --------------------------------------------------------------------------
   1e. Kategorie-Karten-Slider auf LPs: Breite deterministisch setzen
   Swipers Init-Messung ist auf dieser Komponente fehleranfällig (gemessen
   15.08.: Slides mit 4,47 Mio. px Inline-Breite; danach weiter zu breite
   Karten mit verzerrten Bildern). Die Prozent-Breite bezieht sich auf den
   Wrapper (= Container-Breite), Swiper behält Steuerung (ziehen/snappen),
   aber die Kartenbreite hängt nicht mehr von der Messung ab. Die Breiten sind lückenkompensiert (Gap-Anteil abgezogen), damit die letzte
   Karte einer Reihe rechts bündig an der Content-Kante steht. Zielwerte wie
   im Theme: ~6/5/4/~2,3 Karten pro Reihe je nach Breite.
   -------------------------------------------------------------------------- */
.landingpage-card-slider .swiper-slide {
	width: calc(16.6667% - 10px) !important;
}
@media (max-width: 1023.98px) {
	.landingpage-card-slider .swiper-slide {
		width: calc(20% - 9.6px) !important;
	}
}
@media (max-width: 829.98px) {
	.landingpage-card-slider .swiper-slide {
		width: calc(25% - 9px) !important;
	}
}
@media (max-width: 520.98px) {
	.landingpage-card-slider .swiper-slide {
		width: 42.5% !important;
	}
}

/* Bild-Härtung gegen Verzerrung (16.08.: oberhalb ~1500px wurden quadratische
   Bilder in ein 4:3-Rechteck gezwungen, gemessen 235×170 statt 170×170):
   Egal welche Stelle Breite und Höhe des Bildes erzwingt – contain passt ein
   statt zu verzerren. Wirkt als No-op, wenn nichts erzwingt. */
.landingpage-card-slider .img-wrapper img {
	width: auto !important;
	max-width: 100% !important;
	height: auto !important;
	max-height: 100% !important;
	object-fit: contain !important;
}

/* Vektor-Kartenbilder (z. B. /tanzkleidung/): SVGs ohne verlässliche Intrinsic-
   Größe brechen bei Auto-Größen aus der festen Bildbühne aus und werden mobil
   abgeschnitten (Befund 18.08., Motorola). Box füllen + contain = die Grafik
   wird mit Rand eingepasst statt beschnitten. Bewusst nur mobil: Auf dem
   Desktop ist der Zustand unauffällig und bleibt unverändert. */
@media (max-width: 767.98px) {
	.landingpage-card-slider .img-wrapper img[src*=".svg"] {
		width: 100% !important;
		height: 100% !important;
		object-fit: contain !important;
	}
}

/* --------------------------------------------------------------------------
   1c. Hauptmenü – vorbereitet, aber bewusst auskommentiert
   Das Menü war bisher unangetastet. Zum Aktivieren die Kommentarzeichen
   entfernen. Hover-Zustände sind im Code schlicht „Selektor:hover" (in
   Microthemers GUI: je Selektor der Hover-Schalter). Der Hover unten nutzt
   nur wght – nach eigenem Befund vom 14.08. breiteninvariant, also ohne
   Layout-Shift.

#nav-main .top-level {
	font-variation-settings: "wdth" var(--hs-wdth-menu), "wght" var(--hs-wght-menu), "CNTR" var(--hs-cntr-menu) !important;
}
#nav-main .top-level:hover,
#nav-main .top-level a:hover {
	font-variation-settings: "wdth" var(--hs-wdth-menu), "wght" 700, "CNTR" var(--hs-cntr-menu) !important;
}
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   2. Globale Fixes
   -------------------------------------------------------------------------- */
.sib-form svg {
	width: auto !important;
	max-width: 32px !important;
	height: auto !important;
	max-height: 32px !important;
}

/* Layout-Shift beim Menü-Flyout (gemessen 15.08.2026: ~10 px nach rechts beim
   Öffnen): Das Menü kappelt beim Öffnen den Overflow (Theme, _global.scss:
   body.open { overflow: hidden }), die vertikale Scrollbar verschwindet, der
   zentrierte Container springt um die halbe Scrollbar-Breite. Die Rinne wird
   hier dauerhaft reserviert, sodass ihr Verschwinden das Layout nicht mehr
   verschiebt. Harmlos: Auf langen Seiten ist die Scrollbar ohnehin immer da.
   Einschränkung: Safari < 18.2 ignoriert die Eigenschaft (Shift bleibt dort,
   kein Bruch). */
html {
	scrollbar-gutter: stable !important;
	/* Mobile Schriftgrößen-Divergenz Firefox vs. Chrome (gemeldet 15.08.):
	   Font-Inflation abschalten, sonst skaliert Firefox Text eigenmächtig. */
	-webkit-text-size-adjust: 100% !important;
	text-size-adjust: 100% !important;
}


/* 1g Kategorie-Doppelslider: SVG-Höhenkappe < 640px (21.08.2026, v2 TwicPics-Attribute). Grund: img-wrapper hat erst ab sm feste Höhen; SVGs ohne intrinsische Maße übersteigen max-h. Höhen = Theme-Skala. */
@media (max-width: 520px) {
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[data-twic-deferred*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[src*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[srcset*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper svg {
    --hus-svg-cap: 1;
    height: 120px;
    width: auto;
    max-width: 100%;
    object-fit: contain;
  }
}
@media (min-width: 521px) and (max-width: 639px) {
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[data-twic-deferred*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[src*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper img[srcset*=".svg"],
  .single-landingpage .card-slider-wrapper .landingpage-card-slider .swiper-slide .img-wrapper svg {
    --hus-svg-cap: 1;
    height: 140px;
    width: auto;
    max-width: 100%;
    object-fit: contain;
  }
}



/* --------------------------------------------------------------------------
   3. Produkt-Grid / Landingpages (.mtp-678)
   OFF-CENTER-KORREKTUR (15.08.2026, korrigierte Fassung): Der Versatz ab
   1280 px kommt nicht aus Microthemer, sondern aus dem Theme selbst
   (_woo-archive.scss): .products-grid ist eine Flexbox, in der die linke
   Viertelspalte .filters-col (w-1/4, pr-12) für das geplante, nie
   eingeführte Filter-System reserviert wird; .products-col bekommt nur
   xl:w-3/4. Gleiches Prinzip im Kopfbereich: die leere .offset-col drückt
   .intro-col auf 3/4 Breite. Da beide Spalten dauerhaft leer sind und
   leer bleiben, werden sie hier eingezogen. Die :not(:has(*))-Logik greift
   automatisch nicht, falls doch je Facetten-Inhalt erscheint.
   -------------------------------------------------------------------------- */
/* Leere Filter- und Offset-Spalten einklappen (gilt für alle Archiv-/LP-Grids).
   Dokumentierte Fallen: :empty scheitert am Whitespace im Live-Markup
   (gemessen 15.08.: filters-col w=360 bei innerHTML nur aus Leerzeichen);
   verschachteltes :has überlebte den MT-Parser nicht (products-col blieb
   bei 1080 statt 1440); und width muss DEFINIT bleiben (100%), nicht auto:
   Mit auto maß der Swiper-Karten-Slider (.landingpage-card-slider) beim
   Init eine unbestimmte Containerbreite und vergab ~4,47 Mio. px breite
   Slides (gemessen 15.08.: slideInlineBreite 4.47391e+06px) – sichtbar als
   leere Riesenboxen, weil das Bild per justify-center Millionen px rechts
   außerhalb des sichtbaren Bereichs stand. */
.products-grid > .filters-col:not(:has(*)) {
	display: none !important;
}
.products-grid > .products-col {
	flex-grow: 1 !important;
	width: 100% !important;
}
.woocommerce-products-header .upper > .offset-col:not(:has(*)) {
	display: none !important;
}
.woocommerce-products-header .upper > .intro-col {
	flex-grow: 1 !important;
	width: 100% !important;
}

.mtp-678 .archive-description {
	background-color: rgb(255, 255, 255) !important;
	padding-top: 0 !important;
	text-underline-offset: 3px !important;
}
/* Prüfen auf Staging: ggf. entbehrlich, wenn Theme .main bereits auf 100% zieht */
.mtp-678 .main {
	width: 100% !important;
}

@media (max-width: 1199.98px) {
	.mtp-678 .products-grid {
		width: auto !important;
		max-width: 100% !important;
	}
}

@media (max-width: 767.98px) {
	/* Edge-to-edge: geschachtelte Paddings entfernen */
	.mtp-678 .hus-sso-grid {
		padding-right: 0 !important;
		padding-left: 0 !important;
	}
	.mtp-678 .hus-sso-flex {
		max-width: 100% !important;
	}
	/* Konsolidiert: ersetzt max-width 750px (<768) und die <480-Dopplung */
	.mtp-678 .facetwp-template {
		width: auto !important;
		max-width: 100% !important;
	}
}

@media (max-width: 639.98px) {
	.mtp-678 .slim {
		padding-right: 0 !important;
		padding-left: 0 !important;
	}
}
/* ENTFERNT: .hus-sso-flex { padding-right: 16px } bei <480 – einseitig,
   widerspricht dem Edge-to-edge-Ziel und erzeugte Asymmetrie. */

/* Mobile Karten-Größen (Originalziel „Produktbilder bis an den Viewport-Rand",
   jetzt priorisiert 15.08.): Spalten exakt 50% ohne odd/even-Ränder, das Bild
   wird auf volle Kartenbreite gezwungen (deckt unabhängig von der Ursache die
   beobachtete Einrückung der Thumbnails ab), der Text bekommt einen kleinen
   Innenrand. Gilt global für alle Archiv-/LP-Grids, Slider-Karten (.swiper-
   wrapper) sind ausgenommen. */
@media (max-width: 767.98px) {
	.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product {
		width: 50% !important;
		margin-right: 0 !important;
		margin-left: 0 !important;
	}
	.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product > img {
		width: 100% !important;
		max-width: 100% !important;
		height: auto !important;
		margin-left: 0 !important;
		margin-right: 0 !important;
	}
	.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product .inner-wrap {
		padding-left: 8px !important;
		padding-right: 8px !important;
	}
	/* Runde 2 (15.08.): Karte als Spalte statt Zeilen-Flex mit Wrap – beendet
	   das vertikale Strecken des Bildcontainers; aspect-ratio 1 als Schutz
	   gegen verzerrte Thumbnails; Eltern-Polster der Grid-Kette auf 0, damit
	   der Viewport-Rand tatsächlich erreicht wird (Header-Text behält seins). */
	.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product {
		flex-direction: column !important;
		flex-wrap: nowrap !important;
	}
	.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product > img {
		aspect-ratio: 1 / 1 !important;
		object-fit: contain !important;
	}
	/* Vollbreite mobil: Grid an den Viewport-Rand ziehen (Theme-eigenes Muster,
	   siehe related-products-wrapper). Erst dann erreichen die Karten ihre volle
	   Größe; Eltern-Paddings bleiben für Textabschnitte erhalten. Befund 16.08.:
	   zwei Container-Polster (je 16px) ließen das Grid bei 348 von 412px. */
	.woocommerce .products-grid {
		margin-left: calc(50% - 50vw) !important;
		margin-right: calc(50% - 50vw) !important;
		max-width: none !important;   /* sonst faengt die aeltere .mtp-678-Regel
		   (max-width: 100%) den Randzug wieder ein */
	}
}

/* --------------------------------------------------------------------------
   3b. Alignment-System für LP-Komponenten (16.08.2026)
   Gemessen am gerenderten /tanzschuhe/-Abbild bei 2560px: Die linken Kanten
   lagen bei 537 (Header + Kategorie-Slider), 553 (Produkt-Grid) und 905
   (Sortiment-Slider). Zwei Ursachen: (a) das Grid hat eine verschachtelte
   Container-Ebene mehr als der Header (je +16px Padding) – eine Ebene wird
   hier auf 0 gesetzt; (b) im Sortiment-Abschnitt drückt eine zweite leere
   offset-col (w-1/4 = 368px, nie befüllt) den Slider nach rechts – dieselbe
   Theme-Falle wie im Header, Sektion 3. Danach stehen alle drei Komponenten
   auf der Header-Kante. (Die mobile Variante der Grid-Regel von gestern ist
   damit ersetzt und gilt jetzt global.)
   -------------------------------------------------------------------------- */
.woocommerce .wrap.container > .container.wrap > .content.full {
	padding-left: 0 !important;
	padding-right: 0 !important;
}
.related-slider-section .lp-wrapper > .offset-col:not(:has(*)) {
	display: none !important;
}
.related-slider-section .lp-wrapper > .related-slider-wrapper {
	flex-grow: 1 !important;
	width: 100% !important;
}

/* 3c. Grid: Luft unter den Karten-Textblöcken – 10px, Vorgabe Holger 18.08.
   (Korrektur: gemeint ist das Produkt-Grid, nicht der Beschreibungstext.) */
.woocommerce ul.products[class*="columns-"]:not(.swiper-wrapper) li.product {
	padding-bottom: 10px !important;
}

/* --------------------------------------------------------------------------
   4. Produktseite
   ACHTUNG: .button-wrapper und .entry-title sind global, wirken also auch
   außerhalb der PDP.
   -------------------------------------------------------------------------- */
.button-wrapper {
	margin-bottom: 80px !important;
	-webkit-justify-content: center !important;
	justify-content: center !important;
	grid-column-gap: 20px !important;
	column-gap: 20px !important;
}
.entry-title {
	font-size: 26px !important;
	margin-bottom: 0 !important;
}

/* PDP-Titel über die gleichen Token wie die Karten: Marke und Tagline lesen
   die Karten-Token, der Titel die Heading-Token – Konsistenz per Sektion 0. */
.single-product .product_title {
	font-variation-settings: "wdth" var(--hs-wdth-head), "wght" var(--hs-wght-head), "CNTR" var(--hs-cntr-head) !important;
}
.single-product .product_title span.brand {
	font-variation-settings: "wdth" var(--hs-wdth-card-brand), "wght" var(--hs-wght-card-brand), "CNTR" var(--hs-cntr-card-brand) !important;
}
.single-product .product_title span.tagline {
	font-variation-settings: "wdth" var(--hs-wdth-card-tag), "wght" var(--hs-wght-card-tag), "CNTR" var(--hs-cntr-card-tag) !important;
}

/* Variation-Pills (Größenwahl): Text modernisiert.
   Befund 15.08.2026 (PDP-Screenshots): Theme setzt text-xl (20 px) in
   54×65 px kleine Pillen mit overflow:hidden + break-words – Wörter brachen
   mitten im Wort („schma l"). Selektoren aus dem Theme (_woo-single-product.scss),
   Live-Check auf Staging ausstehend. */
.single-product .thwvs-wrapper-ul .thwvs-wrapper-item-li {
	flex-shrink: 0 !important;   /* Pille nie unter Inhaltsbreite quetschen */
}
.single-product .thwvs-wrapper-item-li .item-span-text {
	font-size: 17px !important;
	line-height: 1.15 !important;
	overflow-wrap: normal !important;   /* Theme: break-words brach mitten im Wort */
	font-variant-numeric: tabular-nums !important;   /* Zahlen stehen ruhig */
	font-variation-settings: "wdth" var(--hs-wdth-pill), "wght" var(--hs-wght-pill), "CNTR" var(--hs-cntr-pill) !important;
}
.single-product .thwvs-wrapper-item-li .item-span-text .parent {
	font-size: 13px !important;
	line-height: 1.2 !important;
	white-space: nowrap !important;
	font-variation-settings: "wdth" var(--hs-wdth-pill), "wght" 400, "CNTR" var(--hs-cntr-pill) !important;
}

/* Pills gleicher Breite pro Reihe (Vorgabe Holger 15.08.: die breiteste Pille
   gibt die Breite aller vor – ruhigeres Bild). Grid-Trick: Jede Spur ist
   mindestens so breit wie ihr Inhalt (max-content), der Rest der Reihe wird
   gleichmäßig verteilt (1fr). Greift nur, wenn die Zeile nicht als Swiper
   läuft; space-x-2 des Themes wird durch gap ersetzt. */
.single-product table.variations .thwvs-wrapper-ul:not(.swiper-wrapper) {
	display: grid !important;
	grid-auto-flow: column !important;
	grid-auto-columns: minmax(max-content, 1fr) !important;
	width: 100% !important;
	gap: 8px !important;
}
.single-product table.variations .thwvs-wrapper-ul:not(.swiper-wrapper) > li {
	margin-left: 0 !important;
}

/* --------------------------------------------------------------------------
   5. Kundenkonto & Formulare
   Bereinigt: Der Block existierte zweimal (lp-overrides + customer_account),
   hier die vollständigere Fassung, Duplikat verworfen.
   -------------------------------------------------------------------------- */
.woocommerce-form-login .form-row,
.woocommerce-form-register .form-row {
	display: block !important;
	width: 100% !important;
	float: none !important;
	clear: both !important;
	margin-bottom: 20px !important;
}
.woocommerce-form-login label,
.woocommerce-form-register label {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	margin-bottom: 6px !important;
	text-align: left !important;
	float: none !important;
}
.woocommerce-form-login .input-text,
.woocommerce-form-register .input-text {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	min-width: 100% !important;
	box-sizing: border-box !important;
}
.woocommerce-form-login .form-row-rememberme {
	display: block !important;
	margin-top: 15px !important;
	margin-bottom: 15px !important;
}
.woocommerce-form-login .woocommerce-form-login__rememberme {
	display: inline-flex !important;
	-webkit-align-items: center !important;
	align-items: center !important;
	width: auto !important;
}
.woocommerce-form-login .woocommerce-form-login__rememberme input {
	margin-right: 8px !important;
	width: auto !important;
	display: inline-block !important;
}
.woocommerce-form-login .woocommerce-form-login__submit,
.woocommerce-form-register .woocommerce-form-register__submit {
	display: block !important;
	width: 100% !important;
	max-width: 100% !important;
	margin-top: 10px !important;
	float: none !important;
}
.woocommerce-form-login .lost_password {
	display: block !important;
	width: 100% !important;
	margin-top: 12px !important;
	text-align: right !important;
	float: none !important;
}
.woocommerce-form-login .woocommerce-form-login__rememberme input[type="checkbox"] {
	display: inline-block !important;
	width: 16px !important;
	height: 16px !important;
	min-width: 16px !important;
	max-width: 16px !important;
	-webkit-flex-shrink: 0 !important;
	flex-shrink: 0 !important;
	margin-right: 8px !important;
	padding: 0 !important;
}
/* Footer auf der Login/Registrierungsseite ausblenden */
body.woocommerce-account:not(.logged-in) footer.content-info,
body.woocommerce-account:not(.logged-in) .site-footer,
body.woocommerce-account:not(.logged-in) footer {
	display: none !important;
}
/* Kundenkonto-Navigation sticky + horizontal scrollbar */
.woocommerce-MyAccount-navigation {
	position: sticky !important;
	top: 0 !important;
	z-index: 50 !important;
	background: #f9fafb !important;
	margin-bottom: 32px !important;
	padding: 8px 0 !important;
	border-bottom: 1px solid #e5e7eb !important;
}
.woocommerce-MyAccount-navigation ul {
	display: flex !important;
	-webkit-flex-wrap: nowrap !important;
	-moz-flex-wrap: nowrap !important;
	-ms-flex-wrap: nowrap !important;
	flex-wrap: nowrap !important;
	overflow-x: auto !important;
	-webkit-overflow-scrolling: touch !important;
	scroll-snap-type: x mandatory !important;
	list-style: none !important;
	padding: 0 16px !important;
	margin: 0 !important;
	-ms-overflow-style: none !important;
	scrollbar-width: none !important;
}
.woocommerce-MyAccount-navigation li {
	scroll-snap-align: start !important;
	scroll-margin-left: 16px !important;
}
.woocommerce-MyAccount-navigation li a {
	display: block !important;
	padding: 12px 18px !important;
	padding-top: 10px !important;
	padding-bottom: 14px !important;
	color: #4b5563 !important;
	text-decoration: none !important;
	font-weight: 600 !important;
	border-bottom: 3px solid transparent !important;
	-webkit-transition: all 0.2s ease !important;
	transition: all 0.2s ease !important;
}
.woocommerce-MyAccount-navigation ul::-webkit-scrollbar {
	display: none !important;
}
.woocommerce-Message--info,
.woocommerce-info {
	display: block !important;
	margin-bottom: 20px !important;
	position: relative !important;
	float: none !important;
	clear: both !important;
}
.woocommerce-MyAccount-content .button,
.woocommerce-MyAccount-content a.button {
	text-decoration: none !important;
	display: inline-block !important;
}
.woocommerce-form-row-display_name,
.woocommerce-EditAccountForm p:has(input[name="account_display_name"]),
.woocommerce-EditAccountForm em {
	display: none !important;
}
.woocommerce-EditAccountForm p.form-row {
	margin-bottom: 24px !important;
}

/* --------------------------------------------------------------------------
   6. Einzelseiten: Versandkosten, Kontakt, Datenschutz
   Die Text-Typografie dieser Seiten läuft über die Sammelregel in Sektion 1.
   -------------------------------------------------------------------------- */
/* Versandkosten (.mtp-45545) – konsolidiert aus 700px/700px + 90% + 95% */
.mtp-45545 .wrap {
	width: 700px !important;
	max-width: 90% !important;
}
.mtp-45545 .wp-block-group__inner-container {
	background-color: rgb(241, 245, 255) !important;
	padding: 15px !important;
}
@media (max-width: 639.98px) {
	.mtp-45545 .wp-block-spacer {
		height: 0 !important;
	}
}
@media (max-width: 479.98px) {
	.mtp-45545 .wrap {
		max-width: 95% !important;
	}
}

/* Datenschutz (.mtp-186) */
.mtp-186 .content {
	max-width: 650px !important;
}
.mtp-186 .agb_content li {
	margin-bottom: 4px !important;
}

/* --------------------------------------------------------------------------
   7. Home (.mtp-2)
   WICHTIG: Mehrere Regeln hängen an #js-modal-page. Falls dieser Wrapper nur
   im Modal-/Preview-Kontext existiert, wirken sie auf der Live-Seite nicht –
   auf Staging verifizieren.
   -------------------------------------------------------------------------- */
#js-modal-page .has-large-font-size {
	font-size: 34px !important;
	line-height: normal !important;
	padding-top: 0 !important;
	padding-bottom: 16px !important;
	padding-left: 0 !important;
	margin-bottom: 0 !important;
	font-variation-settings: "wdth" var(--hs-wdth-head), "wght" 500, "CNTR" 50 !important;
}
/* Der Wert 75px stammt aus dem Bestand, wirkt willkürlich – Kandidat für die
   Weißraum-Skala */
.mtp-2 .wp-container-1 p:nth-of-type(2) {
	padding-bottom: 75px !important;
}
/* "Seit 2010"-Block war auf display:none; die übrigen Werte (83px u. a.)
   waren dadurch tot und sind entfernt */
.mtp-2 .has-text-align-left {
	display: none !important;
}
#js-modal-page .wp-block-button__link {
	color: rgb(241, 245, 255) !important;
	background-color: rgba(61, 70, 100, 0.5) !important;
}
#js-modal-page .wp-block-button__link:hover {
	color: rgb(255, 255, 255) !important;
	background-color: rgb(61, 70, 100) !important;
	border-color: rgb(61, 70, 100) !important;
}
.mtp-2 .is-vertically-aligned-top {
	margin-top: 10px !important;
}
.mtp-2 figcaption {
	font-variation-settings: "wdth" var(--hs-wdth-text), "wght" 500, "CNTR" var(--hs-cntr-text) !important;
}
.mtp-2 .is-vertically-aligned-center a {
	text-underline-offset: 3px !important;
	text-decoration-color: #8194C9 !important;
}
.mtp-2 .is-vertically-aligned-center a:hover {
	color: rgb(255, 255, 255) !important;
	background-color: rgb(129, 148, 201) !important;
}

@media (max-width: 979.98px) {
	#js-modal-page .has-large-font-size {
		font-size: 26px !important;
	}
}
@media (max-width: 767.98px) {
	#js-modal-page .has-large-font-size {
		text-align: left !important;
		padding-right: 0 !important;
	}
	.mtp-2 .is-vertically-aligned-top {
		text-align: left !important;
		padding-left: 80px !important;
	}
	/* Inhalt-ID-basiert, daher stabiler als wp-container-* */
	.mtp-2 .wp-image-40013 {
		height: 295px !important;
		position: static !important;
	}
}
@media (max-width: 639.98px) {
	.mtp-2 .is-vertically-aligned-top {
		padding-left: 0 !important;
	}
}
@media (max-width: 479.98px) {
	#js-modal-page .has-large-font-size {
		font-size: 1.5rem !important;
	}
	.mtp-2 .is-vertically-aligned-top {
		margin-bottom: 0 !important;
	}
}

/* --------------------------------------------------------------------------
   8. MailPoet-Formular – ENTFERNT (15.08.2026)
   MailPoet wird nur noch transaktional genutzt (Mailversender); das Formular
   existiert auf Prod nicht mehr (Nachfolger: Brevo). Sämtliche MailPoet-
   Regeln gestrichen, inkl. der Selektoren in der Sammelregel in Sektion 1.
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   9. LEGACY-KANDIDATEN – aktiv, aber zur Prüfung vorgemerkt
   Diese Selektoren hängen an auto-generierten Gutenberg-Klassen
   (.wp-container-NN) oder an Einzel-Produkt-IDs. Solche Klassen verfallen,
   sobald Blöcke im Editor angefasst werden – das erklärt die wirkungslos
   gewordenen Tweaks. Auf Staging Seite für Seite prüfen: wirkt die Regel
   noch? Wenn nein, Zeile löschen. Wenn ja, Regel auf eine stabile Klasse
   umhängen (Block im Editor benennen bzw. Zusatzklasse vergeben).
   -------------------------------------------------------------------------- */
.wp-container-12 ul {
	font-variation-settings: "wdth" var(--hs-wdth-text), "wght" var(--hs-wght-text), "CNTR" var(--hs-cntr-text) !important;
}

/* Einzel-Produkt-Scopes (IDs 8742 / 22231 / Akkordeon-Instanz) */
#product-8742 .delivery__label {
	margin-top: -15px !important;
}
.mtp-22231 .quantity-wrapper {
	margin-top: 50px !important;
	margin-bottom: 50px !important;
}
#accordion-64795clqsi-0 .care-instruction {
	background-color: rgb(244, 245, 248) !important;
	border-radius: 5px !important;
}

/* Datenschutz: positionsabhängige Selektoren, brechen bei jeder Textänderung */
.mtp-186 #js-modal-page p:nth-of-type(4) {
	margin-top: 15px !important;
}
.mtp-186 .agb_content p:nth-of-type(96) {
	margin-top: 40px !important;
}

/* Home: Mobile Umstellungen der Gutenberg-Container (Bild/Text-Tausch u. a.) */
@media (max-width: 767.98px) {
	.mtp-2 .wp-container-28 {
		display: grid !important;
		grid-template-columns: 1fr !important;
		grid-template-rows: auto auto !important;
	}
	.mtp-2 .wp-container-28 > :nth-child(2) {
		grid-area: 1 / 1 / 2 / 2 !important;
	}
	.mtp-2 .wp-container-29 {
		margin-bottom: -20px !important;
	}
	.mtp-2 .wp-container-27 {
		margin-bottom: -20px !important;
	}
	.mtp-2 .wp-container-15 {
		margin-bottom: 40px !important;
	}
	.mtp-2 .wp-container-17 {
		margin-bottom: 40px !important;
		margin-left: 0 !important;
	}
	.mtp-2 .wp-container-19 {
		margin-bottom: 40px !important;
	}
	.mtp-2 .wp-container-21 {
		margin-bottom: 40px !important;
		margin-left: 0 !important;
	}
	.mtp-44375 .content .wp-block-spacer:nth-of-type(2) {
		height: 40px !important;
	}
	.mtp-44449 .has-2-columns {
		display: grid !important;
		grid-template-columns: 1fr !important;
		grid-template-rows: auto auto !important;
	}
	.mtp-44449 .has-2-columns > :nth-child(2) {
		grid-area: 1 / 1 / 2 / 2 !important;
	}
}

/* Tanzprofis-B2B (.mtp-44375): Grid-Umordnungen < 980 */
@media (max-width: 979.98px) {
	.mtp-44375 .wp-container-7 {
		display: grid !important;
		grid-template-columns: 1fr 1fr !important;
		grid-template-rows: auto auto !important;
	}
	.mtp-44375 .wp-container-7 > :nth-child(1) {
		grid-area: 1 / 1 / 2 / 3 !important;
	}
	.mtp-44375 .wp-container-7 > :nth-child(2) {
		grid-area: 2 / 1 / 3 / 3 !important;
	}
	.mtp-44375 .wp-container-11 {
		display: grid !important;
		grid-template-columns: 1fr 1fr !important;
		grid-template-rows: auto auto !important;
	}
	.mtp-44375 .wp-container-11 > :nth-child(1) {
		grid-area: 2 / 1 / 3 / 3 !important;
	}
	.mtp-44375 .wp-container-11 > :nth-child(2) {
		grid-area: 1 / 1 / 2 / 3 !important;
	}
	.mtp-44375 .wp-container-15 {
		display: grid !important;
		grid-template-columns: 1fr 1fr !important;
		grid-template-rows: auto auto !important;
	}
	.mtp-44375 .wp-container-15 > :nth-child(1) {
		grid-area: 1 / 1 / 2 / 3 !important;
	}
	.mtp-44375 .wp-container-15 > :nth-child(2) {
		grid-area: 2 / 1 / 3 / 3 !important;
	}
}

/* Home: Unterschriften-Grid (.wp-container-6) in drei Stufen */
.mtp-2 .wp-container-6 {
	display: grid !important;
	grid-row-gap: 0 !important;
	row-gap: 0 !important;
	grid-template-columns: 1fr 1fr !important;
	grid-template-rows: auto auto !important;
	justify-items: center !important;
}
.mtp-2 .wp-container-6 > :nth-child(1) {
	grid-area: 1 / 1 / 2 / 3 !important;
}
.mtp-2 .wp-container-6 > :nth-child(2) {
	grid-area: 2 / 1 / 3 / 3 !important;
}
@media (max-width: 767.98px) {
	.mtp-2 .wp-container-6 {
		grid-template-rows: auto !important;
	}
	.mtp-2 .wp-container-6 > :nth-child(n) {
		padding: 0 !important;
	}
}
@media (max-width: 639.98px) {
	.mtp-2 .wp-container-6 > :nth-child(n) {
		margin: 0 !important;
	}
	.mtp-2 .wp-container-6 > :nth-child(1) {
		justify-self: center !important;
	}
	.mtp-2 .wp-container-6 > :nth-child(2) {
		-webkit-align-items: center !important;
		align-items: center !important;
	}
}

/* --------------------------------------------------------------------------
   10. BEWUSST NICHT ÜBERNOMMEN (Dokumentation)
   - Sämtliche Entwürfe ohne kompiliertes CSS (waren nie live): /tanzladen
     Brevo-Container/-Eyebrow/-Heading + Adress-Block (6 Selektoren),
     /tanzladen h1, /home hero-tagline, mailpoet Formularbreite 1440,
     produktseite html (Padding 10px + Rahmen + Radius auf <html> – hätte der
     ganzen Site einen Rahmen gegeben).
   - .mtp-2 .container:nth-of-type(2) bei <640: max-width 630% (Tippfehler,
     ungültig) und padding: auto (ungültig). Zu diesem Selektor gehört in MT
     außerdem ein HTML-SNIPPET (ersetzt Markup per Text-Austausch). Wenn ihr
     die MT-Ordner löscht, prüfen, ob dieses Snippet noch gebraucht wird –
     es ist NICHT Teil dieser CSS-Datei.
   - Spacer .content > .wp-block-spacer: <480 = 50px stand gegen <640 = 0px;
     je nach MT-Ladereihenfolge war einer der beiden Werte faktisch tot.
     Konsolidiert: nicht übernommen, Abstände gehören in die Weißraum-Skala.
   - Redundante MQ-Dopplungen (gleiche Werte in mehreren kleineren Tabs,
     durch max-width-Kaskade ohnehin abgedeckt).
   --------------------------------------------------------------------------
   ÄNDERUNGSHISTORIE
   15.08.2026: Typo-Token-System eingeführt (Sektion 0); alle Schrift-Regeln
     lesen Ebenen-Token. Text-Laufweite von 100 auf 85 gesenkt (Vorgabe).
     Neu: Karten-Typografie (1b), PDP-Titel und Variation-Pills (Sektion 4),
     Menü-Block vorbereitet, auskommentiert (1c).
   15.08.2026: Slider-Fix – width:auto durch width:100% auf .products-col/
     .intro-col ersetzt, weil der Swiper-Karten-Slider in einer Flex-Spalte
     mit unbestimmter Breite ~4,47 Mio. px breite Slides maß (Karten-Slider
     auf LPs wie /tanzschuhe/ dadurch zerstört).
   15.08.2026: MailPoet-Styling komplett entfernt (nur noch transaktional;
     Formular existiert auf Prod nicht mehr, Nachfolger Brevo). Mobil: Karten
     exakt 50% breit, Bilder auf volle Kartenbreite, Text mit 8px-Innenrand.
   15.08.2026: Holgers Tuning gemergt (holger-edit.css): wght-text 400,
     card-brand wght 500, card-title wght 700, card-tag wdth 85; Karte:
     Marke margin-bottom -5px + opacity 1, Titel opacity 1, Tagline
     margin-top 10px + font-size 16px. NICHT übernommen: .page-header h1
     font-size 12px bei <480 (vermutlicher Verschreiber, bleibt 24px).
     Verworfen: leere MT-Artefakte (.boxzilla-close-icon, main > .wrap,
     .product_cat-spitzenschuhe .price) und ein Regel-Fragment, das mitten
     im Sektion-0-Kommentar gelandet war.
   15.08.2026 (spät): Preis-Block nach Vorgabe (rechtsbündig, eigene Token
     --hs-*-price: wdth 100/wght 700/CNTR 50, dichter an der Tagline,
     Untermargin 12→4px, € näher an der Zahl via bdi-Padding 12→7px).
     Mobil Runde 2: Karte als Spalte (gegen Stretch des Bildcontainers),
     aspect-ratio 1 als Verzerr-Schutz, Eltern-Padding der Grid-Kette auf 0;
     text-size-adjust gegen die Firefox/Chrome-Schriftgrößen-Divergenz.
   15.08.2026 (Nacht): Karten-Text normalisiert nach Vorgabe – Titel und
     Tagline je max. 2 Zeilen mit Ellipsis (korrekt via -webkit-box; mein
     früheres display:block hätte die Theme-Ellipsis ausgehebelt) plus fix
     reservierte 2 Zeilen (min-height 2.1em/2.5em) gegen Preis-Versatz,
     text-wrap: balance gegen Lücken. Sortiment-Slider: Padding 24→16px,
     Karten gleich hoch + 320px breit, Bilder im Anschnitt (4/3, cover).
     Preis testweise 30px nach links (margin-right). X-Versatz des
     Vollbreiten-Slider-Wrappers um die halbe Scrollbar-Rinne kompensiert.
   15.08.2026 (Nacht, 2): Kategorie-Karten-Slider bekam deterministische
     Prozent-Breiten statt Swipers fehleranfälliger Init-Messung (lieferte
     weiter zu breite Karten mit verzerrten Bildern). Variation-Pills je
     Reihe gleich breit (breiteste Pille gibt vor, grid-auto-columns
     minmax(max-content, 1fr)), nur im Nicht-Swiper-Zustand.
   16.08.2026: Titel auf Karten zurück auf eine Zeile mit Ellipsis (keine
     Leerzeile zur Tagline; Vorgabe Holger). Bild-Härtung im Kategorie-
     Slider: contain statt erzwungener Vollfläche – Verzerrung konstruktiv
     ausgeschlossen. Erkenntnis Zustellung: Die Seite referenziert
     active-styles.css nicht direkt (vermutlich fasst WP Rocket das CSS
     zusammen) – Verifikation per gerenderter Seite/Konsole, nicht per
     Quelltext-Suche in der statischen Datei.
   16.08.2026 (Alignment-System): Gemeinsame Kante für Kategorie-Slider,
     Sortiment-Slider und Grid auf LPs. Grid-Kette um eine Container-
     Polsterung (16px) reduziert; zweite leere offset-col im Sortiment-
     Abschnitt eingeklappt (dieselbe Theme-Falle wie im Header); Kategorie-
     Karten lückenkompensiert (stehen rechts bündig an der Kante). Gemessen
     am gerenderten 2560px-Abbild: linke Kanten vorher 537/553/905px.
   16.08.2026 (mobil): Grid per calc(50% - 50vw) an den Viewport-Rand
     gezogen (Theme-eigenes Vollbreite-Muster) – gemessen am 412px-Abbild:
     Karten waren 174 statt 206px, weil zwei Container-Polster stecken
     blieben. Nebenbefund: MT minifiziert das ausgelieferte CSS; Marker-
     Suchen müssen leerzeichentolerant sein (Regex).
   16.08.2026 (iOS-Resilienz): Fallback für Upsell-/Sortiment-Slider
     bei totem Theme-JS (iOS-Safari-PDP-Befund, alt, auch auf Prod):
     solange .swiper-initialized fehlt, natives Horizontal-Scrollen mit
     Snap und festen Kartenbreiten; Navigationspfeile dann ausgeblendet.
     Grundursache liegt im Theme-JS (Router-Kaskade in main.js: der
     dynamische PDP-Import steht vor allen Routen). 16.08.: Ivan ist
     aus dem Projekt ausgeschieden – Theme-JS-Fix derzeit nicht möglich;
     als nicht auf WP lösbaren Fall vermerkt (siehe Analyst-Seite).
   18.08.2026: SVG-Kartenbilder im Doppelslider (Vektor-Headings,
     z. B. /tanzkleidung/) mobil gegen Abschneiden gehärtet: Box füllen
     + contain – SVGs ohne verlässliche Intrinsic-Größe brachen aus der
     Bildbühne aus (Befund Motorola, Tango-Kleidung).
   18.08.2026 (2): €-Zeichen näher an die Zahl (bdi padding 7→4px,
     ~ ein Leerzeichen). Streichpreis: Strich auf die minimale Bounding
     Box begrenzt (Pseudo-Linie statt nativem line-through, das Template-
     Whitespace mitzog). LP-Textblöcke: 10px Bottom-Padding, letzter
     Block ausgenommen.
   18.08.2026 (4): d korrigiert – gemeint waren die Karten-
     Textblöcke im Grid (10px Bottom-Padding dort); die Variante auf dem
     Beschreibungstext (entry-content) wurde zurückgenommen.
   18.08.2026 (5): €-Abstand 4→12px (Leerzeichen Luft, Vorgabe Holger).
     Streichpreis-Umbau zurückgenommen: Der native Theme-Strich bleibt,
     die horizontale Pseudo-Linie wurde entfernt. Offen (depriorisiert):
     minimaler Strich-Rahmen – benötigt MHTML einer Sale-LP.
   18.08.2026 (3): Token-Merge aus Holgers Editor-Tuning (head 700/
     cntr 50, card-title 650, price 850). Erklärung für die „Reset“-
     Beobachtung: Editor-Tuning ohne Rückspiegelung in diese Datei wird
     vom nächsten Pack-Import überschrieben – die Datei ist die Wahrheit.
   15.08.2026: Off-center-Ursache im Theme gefunden (_woo-archive.scss:
     leere filters-col/offset-col) und mit :not(:has(*)) + flex-grow gelöst;
     Menü-Layout-Shift (body.open overflow:hidden in _global.scss) über
     scrollbar-gutter entschärft. Zwei Fallen dokumentiert: :empty vs.
     Whitespace im Live-Markup; verschachteltes :has überlebt den
     Microthemer-Parser nicht.
   11.08.2026: Konsolidierung aus dem Microthemer-Export „Tweaks August 2026".
   ========================================================================== */

