/*
Theme Name: LUMABAG
Theme URI: https://lumabag.de
Author: HECHT INS GEFECHT
Description: Custom Theme für lumabag.de — Richtung B „Werkstatt". Werte und Klassen folgen dem freigegebenen Design-Mockup (08/2026), skaliert auf 1330px (Benny-Feedback 08.08.).
Version: 1.1.0
Requires PHP: 8.1
Text Domain: lumabag
*/

/* ---------- Tokens: dir-b-vars aus dem freigegebenen Mockup ---------- */
:root {
  --bg: #fbf8f0; --bg2: #f1eada; --band: #292520; --band-fg: #f5f0e4; --band-soft: #c9c2b0;
  --ink: #201e19; --soft: #454034; --dim: #716b5d; --line: #e2dbc9; --line-strong: #c8c0ab;
  --accent: #ffd500; --accent-ic: #9c8300; --accent-strong: #7a6200;
  --tile: #fbf8f0; --tile-dark: #e6dfcd;
  --cta-bg: #ffd500; --cta-fg: #201e19; --cta-hover: #ebc400;
  --pill-act-bg: #ffd500; --pill-act-fg: #201e19;
  --faq-bg: #f1eada; --faq-fg: #201e19; --faq-open-bg: #ffd500; --faq-open-fg: #201e19;
  --footer-bg: #292520; --footer-fg: #f5f0e4; --footer-soft: #c9c2b0; --footer-dim: #98917e; --footer-line: #3f3a31;
  --radius: 3px; --disp-stretch: 82%; --disp-weight: 800;
}

@font-face {
  font-family: 'Archivo';
  src: url('fonts/archivo-latin-vf-wdth.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-style: normal;
  font-display: swap;
}

/* ---------- Basis ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: 'Archivo', system-ui, sans-serif;
  font-weight: 430;
  line-height: 1.55;
  font-size: 17px;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; }
a { color: var(--accent-strong); }
:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 2px; }
::selection { background: var(--ink); color: var(--accent); }
.wrap { max-width: 1330px; margin: 0 auto; padding: 0 32px; }
@media (max-width: 600px) { .wrap { padding: 0 22px; } }
.screen-reader-text {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap;
}

h1, h2, h3, h4 {
  font-stretch: var(--disp-stretch);
  font-weight: var(--disp-weight);
  text-transform: uppercase;
  margin: 0 0 .5em;
}
.hl {
  background: var(--accent); color: #17181a; padding: .04em .1em;
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
::selection { background: var(--accent); color: var(--ink); }
:focus-visible { outline: 2px solid var(--accent-strong); outline-offset: 2px; }

/* CTAs — Werte aus dem Mockup (.m-cta / .m-cta2), skaliert */
.m-cta {
  display: inline-block; background: var(--cta-bg); color: var(--cta-fg);
  font-weight: 740; font-stretch: 84%; text-transform: uppercase; letter-spacing: .06em;
  font-size: 14.5px; padding: 17px 30px; border-radius: var(--radius);
  text-decoration: none; border: 0; cursor: pointer;
}
.m-cta:hover { background: var(--cta-hover); color: var(--cta-fg); }
.m-cta2 {
  display: inline-block; border: 1.5px solid var(--ink); color: var(--ink);
  font-weight: 700; font-stretch: 84%; text-transform: uppercase; letter-spacing: .06em;
  font-size: 14.5px; padding: 16px 28px; margin-left: 12px; border-radius: var(--radius);
  text-decoration: none; background: transparent; cursor: pointer;
}
.m-cta2:hover { background: var(--ink); color: var(--bg); }
/* Mobil: CTAs stapeln mit Luft statt zu kleben */
@media (max-width: 600px) {
  .m-cta, .m-cta2 { display: block; text-align: center; }
  .m-cta2 { margin: 12px 0 0; }
}

/* ---------- Utility-Bar + Header ---------- */
.m-util { background: var(--band); color: var(--band-fg); font-size: 12px; }
.m-util .wrap { display: flex; justify-content: space-between; gap: 14px; padding-top: 8px; padding-bottom: 8px; flex-wrap: wrap; }
@media (max-width: 600px) { .m-util .wrap { justify-content: center; } .m-util .wrap span + span { display: none; } }
/* Trennlinie full-bleed wie bei der Utility-Bar — nicht auf Containerbreite */
.m-head { border-bottom: 1px solid var(--line); }
.m-head .wrap { display: flex; align-items: center; gap: 38px; padding-top: 20px; padding-bottom: 20px; }
.m-logo {
  font-stretch: 116%; font-weight: 880; font-size: 23px; letter-spacing: -.01em;
  text-transform: uppercase; white-space: nowrap; color: var(--ink); text-decoration: none;
}
.m-logo b { color: var(--accent); font-weight: 880; }
.m-nav ul { list-style: none; margin: 0; padding: 0; display: flex; gap: 28px; flex-wrap: wrap; }
.m-nav a {
  font-size: 14.5px; font-weight: 640; font-stretch: 86%; text-transform: uppercase;
  letter-spacing: .05em; color: var(--ink); text-decoration: none;
  position: relative; padding-bottom: 4px;
}
.m-nav .current-menu-item > a::after, .m-nav a:hover::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--accent);
}
/* Auf der Startseite markiert WP alle Anker-Items als current — Strich nur per Hover */
body.home .m-nav .current-menu-item > a:not(:hover)::after { display: none; }
.m-cart { margin-left: auto; display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 640; color: var(--ink); text-decoration: none; }
.m-cart svg { width: 21px; height: 21px; }
.m-burger { display: none; background: none; border: 0; padding: 6px; cursor: pointer; color: var(--ink); }
.m-burger svg { width: 24px; height: 24px; display: block; }
@media (max-width: 900px) {
  .m-head .wrap { gap: 18px; }
  .m-nav { display: none; }
  .m-burger { display: block; }
}
/* Mobile-Overlay: Vollbild auf Dunkelband */
.m-mobilenav {
  position: fixed; inset: 0; z-index: 200; background: var(--band); color: var(--band-fg);
  display: none; flex-direction: column; padding: 28px;
}
.m-mobilenav.open { display: flex; }
.m-mobilenav__top { display: flex; justify-content: space-between; align-items: center; }
.m-mobilenav__close { background: none; border: 0; color: var(--band-fg); padding: 8px; cursor: pointer; }
.m-mobilenav__close svg { width: 26px; height: 26px; display: block; }
.m-mobilenav ul { list-style: none; margin: 40px 0 0; padding: 0; }
.m-mobilenav li { margin-bottom: 6px; }
.m-mobilenav a {
  display: block; color: var(--band-fg); text-decoration: none;
  font-stretch: var(--disp-stretch); font-weight: var(--disp-weight); text-transform: uppercase;
  font-size: 30px; line-height: 1.3; padding: 6px 0;
}
.m-mobilenav a:hover { color: var(--accent); }
body.m-nav-open { overflow: hidden; }

/* ---------- Hero ---------- */
.m-hero .wrap { display: grid; grid-template-columns: 1.05fr .95fr; gap: 54px; align-items: center; padding-top: 66px; padding-bottom: 66px; }
@media (max-width: 760px) { .m-hero .wrap { grid-template-columns: 1fr; gap: 34px; padding-top: 36px; padding-bottom: 44px; } }
.m-eyebrow { font-stretch: 80%; font-weight: 650; text-transform: uppercase; letter-spacing: .15em; font-size: 12px; color: var(--dim); margin: 0; }
.m-hero h1, .m-final h2, .m-werk h2, .m-pdp .product_title { line-height: 1.08 !important; }
.m-hero h1 {
  font-size: clamp(33px, 4.6vw, 58px); line-height: 1.05; margin: 14px 0 18px;
  letter-spacing: -.005em; text-wrap: balance;
}
.m-hero p { margin: 0 0 26px; color: var(--soft); font-size: 17.5px; max-width: 46ch; }
.m-hero .foto { position: relative; margin: 0; }
.m-hero .foto .ph { aspect-ratio: 4/4.4; overflow: hidden; }
.m-hero .foto .ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.m-hero .foto figcaption { font-size: 12px; color: var(--dim); margin-top: 8px; }

/* ---------- USP-Streifen ---------- */
.m-usp { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
/* auto-Spalten statt 4×1fr: das längere „ca. 3–4 Wochen“-Label bleibt einzeilig */
.m-usp .wrap { display: grid; grid-template-columns: repeat(4, auto); justify-content: space-between; gap: 16px; padding-top: 24px; padding-bottom: 24px; }
@media (max-width: 760px) { .m-usp .wrap { grid-template-columns: repeat(2, 1fr); gap: 16px 12px; } }
.m-usp .wrap > div { display: flex; align-items: center; gap: 11px; font-size: 13.5px; font-weight: 640; font-stretch: 88%; text-transform: uppercase; letter-spacing: .04em; }
.m-usp svg { width: 28px; height: 28px; flex: none; color: var(--accent-ic); }

/* ---------- Sortiment ---------- */
.m-sort .wrap { padding-top: 64px; padding-bottom: 36px; }
@media (max-width: 760px) { .m-sort .wrap { padding-top: 40px; } }
.m-h2 { font-size: clamp(27px, 3.8vw, 44px); line-height: 1.02; margin: 0 0 24px; }
.m-pills { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 34px; }
.m-pill {
  font-size: 13.5px; font-weight: 680; font-stretch: 86%; text-transform: uppercase; letter-spacing: .05em;
  padding: 10px 18px; border: 1.5px solid var(--ink); border-radius: var(--radius);
  color: var(--ink); text-decoration: none;
}
.m-pill.act, .m-pill:hover { background: var(--pill-act-bg); color: var(--pill-act-fg); border-color: var(--pill-act-bg); }
.m-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; }
@media (max-width: 760px) { .m-grid { grid-template-columns: 1fr 1fr; gap: 26px 18px; } }
.m-card { display: flex; flex-direction: column; }
/* .ph ist teils ein <a> (inline!) — ohne block schrumpft die Kachel auf Bildbreite */
.m-card .ph { display: block; width: 100%; }
/* Karten-Fuß bündig: der Link sitzt in jeder Karte unten */
.m-card .lnk { margin-top: auto; align-self: flex-start; }
.m-card .ph {
  aspect-ratio: 4/4.2; background: var(--tile); border-radius: var(--radius);
  overflow: hidden; margin: 0; display: block;
}
.m-card .ph img { width: 100%; height: 100%; object-fit: contain; mix-blend-mode: multiply; display: block; }
.m-card .name { font-stretch: 92%; font-weight: 760; text-transform: uppercase; font-size: 17px; letter-spacing: .03em; margin: 15px 0 4px; }
.m-card .name a { color: var(--ink); text-decoration: none; }
.m-card .meta { font-size: 13.5px; color: var(--dim); margin-bottom: 7px; }
.m-card .price { font-weight: 740; font-size: 16px; font-variant-numeric: tabular-nums; margin-bottom: 7px; color: var(--ink); }
.m-card .lnk {
  font-size: 14px; font-weight: 660; color: var(--ink);
  text-decoration: underline; text-underline-offset: 3px;
  text-decoration-color: var(--accent); text-decoration-thickness: 2px;
}
.m-card .lnk:hover { color: var(--accent-strong); }
.m-card.feat { grid-column: span 2; display: grid; grid-template-columns: 1.1fr 1fr; background: var(--bg2); border-radius: var(--radius); overflow: hidden; }
@media (max-width: 760px) { .m-card.feat { grid-column: span 2; grid-template-columns: 1fr; } }
.m-card.feat .ph { aspect-ratio: auto; min-height: 340px; height: 100%; background: var(--bg2); border-radius: 0; }
.m-card.feat .ftxt { padding: 32px 34px; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; }
.m-card.feat .ftxt .flag { font-stretch: 80%; font-weight: 660; text-transform: uppercase; letter-spacing: .12em; font-size: 11.5px; color: var(--accent-strong); margin-bottom: 9px; }
.m-card.feat .ftxt .name { font-size: 26px; margin-top: 0; }
.m-card.feat .ftxt p { font-size: 15px; color: var(--soft); margin: 7px 0 14px; max-width: 36ch; }
.m-legal { font-size: 13px; color: var(--dim); margin-top: 22px; }
.m-sub { font-stretch: 88%; font-weight: 780; text-transform: uppercase; font-size: 19px; margin: 46px 0 18px; }
.m-mini { display: grid; grid-template-columns: repeat(6, 1fr); gap: 18px; }
/* Mobil 2 statt 3 Spalten: bei 3 kollabiert der Gap und die Kacheln stoßen aneinander */
@media (max-width: 760px) { .m-mini { grid-template-columns: repeat(2, 1fr); gap: 20px 16px; } }
.m-mini .m-card .ph { aspect-ratio: 1/1; }
.m-mini .m-card .name { font-size: 13.5px; margin-top: 11px; }
.m-mini .m-card .meta { font-size: 12px; }
.m-mini .m-card .price { font-size: 13.5px; }

/* ---------- Material-Band ---------- */
.m-mat { background: var(--bg2); }
.m-mat .wrap { padding-top: 60px; padding-bottom: 54px; }
.m-mat .cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; margin-top: 30px; }
@media (max-width: 760px) { .m-mat .cols { grid-template-columns: 1fr; gap: 30px; } }
.m-mat .cols .ph {
  aspect-ratio: 16/9; background: var(--tile-dark); border-radius: var(--radius);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  color: var(--dim); font-size: 12px; text-transform: uppercase; letter-spacing: .08em; margin: 0;
}
.m-mat .cols .ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.m-mat h5 { font-stretch: 90%; font-weight: 780; text-transform: uppercase; font-size: 16px; margin: 14px 0 5px; }
.m-mat .cols p { font-size: 15px; color: var(--soft); margin: 0; }
.m-mat .zahlen { margin-top: 30px; font-stretch: 88%; font-weight: 700; text-transform: uppercase; font-size: 14px; letter-spacing: .05em; color: var(--soft); }
.m-mat .zahlen b { color: var(--accent-strong); }

/* ---------- Werkstatt-Band ---------- */
.m-werk { background: var(--band); color: var(--band-fg); }
.m-werk .wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; padding-top: 0; padding-bottom: 0; }
@media (max-width: 760px) { .m-werk .wrap { grid-template-columns: 1fr; gap: 0; } }
.m-werk .ph { min-height: 420px; height: 100%; margin: 0; overflow: hidden; }
.m-werk .ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
@media (max-width: 760px) { .m-werk .ph { min-height: 0; } .m-werk .ph img { height: auto; } }
.m-werk .txt { padding: 60px 0; }
@media (max-width: 760px) { .m-werk .txt { padding: 36px 0 44px; } }
.m-werk .m-eyebrow { color: var(--band-soft); }
.m-werk h2 { font-size: clamp(25px, 3.3vw, 40px); line-height: 1.05; margin: 12px 0 18px; }
.m-werk h2 b { color: var(--accent); }
.m-werk p { color: var(--band-soft); font-size: 16.5px; max-width: 46ch; margin: 0 0 24px; }

/* ---------- FAQ (Accordion mit details/summary) ---------- */
/* Mockup: nur die Fragezeile färbt sich gelb, die Antwort liegt auf dem Seitengrund */
.m-faq .wrap { padding-top: 58px; padding-bottom: 58px; }
.m-faq details { margin-bottom: 9px; max-width: 980px; }
.m-faq summary {
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  padding: 17px 20px; font-weight: 640; font-size: 16px; cursor: pointer;
  list-style: none; border-radius: var(--radius);
  background: var(--faq-bg); color: var(--faq-fg);
}
.m-faq summary::-webkit-details-marker { display: none; }
.m-faq summary::after { content: "+"; font-size: 21px; font-weight: 400; line-height: 1; }
.m-faq details[open] summary { background: var(--faq-open-bg); color: var(--faq-open-fg); }
.m-faq details[open] summary::after { content: "–"; }
.m-faq .ans { padding: 16px 20px 24px; font-size: 15.5px; color: var(--soft); max-width: 70ch; }

/* ---------- Schlussband ---------- */
/* pt kleiner: FAQ davor liegt auf demselben Grund, 58+64 rissen ein 120px-Loch */
.m-final .wrap { padding-top: 32px; padding-bottom: 64px; text-align: center; }
.m-final h2 { font-size: clamp(25px, 4vw, 46px); line-height: 1.02; margin: 0 0 26px; }

/* ---------- Footer ---------- */
.m-foot { background: var(--footer-bg); color: var(--footer-fg); margin-top: 70px; }
body.home .m-foot { margin-top: 0; }
.m-foot .wrap { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 34px; padding-top: 52px; padding-bottom: 24px; }
@media (max-width: 760px) { .m-foot .wrap { grid-template-columns: 1fr 1fr; gap: 30px 22px; } }
@media (max-width: 480px) { .m-foot .wrap { grid-template-columns: 1fr; } }
.m-foot h6 { font-stretch: 84%; font-weight: 720; text-transform: uppercase; letter-spacing: .1em; font-size: 12px; margin: 0 0 13px; color: var(--footer-dim); }
.m-foot ul { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.m-foot li { margin-bottom: 8px; }
.m-foot a { color: var(--footer-fg); text-decoration: none; }
.m-foot a:hover { color: var(--accent); }
.m-foot .brand { font-stretch: 116%; font-weight: 880; text-transform: uppercase; font-size: 20px; margin-bottom: 11px; }
.m-foot .brand b { color: var(--accent); }
.m-foot .manifest { font-size: 14.5px; color: var(--footer-soft); max-width: 34ch; margin: 0 0 13px; }
.m-foot .mail {
  font-weight: 700; font-size: 14.5px; color: var(--footer-fg);
  text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--accent);
}
.m-foot .social { display: flex; gap: 12px; margin-top: 16px; }
.m-foot .social a { color: var(--footer-fg); }
.m-foot .social a:hover { color: var(--accent); }
.m-foot .social svg { width: 20px; height: 20px; display: block; }
.m-foot .bottom {
  border-top: 1px solid var(--footer-line); margin-top: 10px;
  /* Linie full-bleed, Inhalt auf Contentkante */
  padding: 15px max(32px, calc((100% - 1266px) / 2));
  font-size: 12px; color: var(--footer-dim); display: flex; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
}
@media (max-width: 600px) { .m-foot .bottom { justify-content: flex-start; padding-inline: 22px; } }

/* EU-Widerrufsbutton (Plugin, rendert als body-Kind HINTER dem Footer):
   ans Dunkelband andocken, damit er überall gleich aussieht statt unter der Seite zu schweben.
   Pflicht-Button — sichtbar lassen, nur Optik. */
p.eu-owb-order-withdraw-from-contract-button {
  background: var(--footer-bg); margin: 0; padding: 2px 22px 36px; text-align: center;
}
p.eu-owb-order-withdraw-from-contract-button a.button {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 42px; padding: 10px 22px;
  background: transparent !important; color: var(--footer-fg) !important;
  border: 1px solid var(--footer-line) !important; border-radius: var(--radius);
  font-size: 12px; font-weight: 680; font-stretch: 84%; letter-spacing: .08em; text-transform: uppercase;
  text-decoration: none; line-height: 1;
}
p.eu-owb-order-withdraw-from-contract-button a.button:hover {
  color: var(--accent) !important; border-color: var(--accent) !important; background: transparent !important;
}
/* Mobil überdeckt die Sticky-Kaufleiste sonst den Pflicht-Button am Seitenende */
@media (max-width: 768px) {
  body.single-product p.eu-owb-order-withdraw-from-contract-button { padding-bottom: 100px; }
}

/* ---------- Produktseite (Anatomie aus dem PDP-Mockup) ---------- */
.m-pdp > .wrap { display: grid; grid-template-columns: 1.1fr .9fr; gap: 48px; padding-top: 56px; padding-bottom: 48px; align-items: start; }
@media (max-width: 760px) { .m-pdp > .wrap { grid-template-columns: 1fr; gap: 30px; padding-top: 26px; padding-bottom: 24px; } }

/* Woo-Galerie in die Mockup-Geometrie: Hauptbild auf Kachel, multiply, Thumbs als schlanke Scroll-Leiste.
   Buy-Box trägt zusätzlich die Woo-Klasse .summary — deren Float-Layout neutralisieren.
   overflow:hidden fängt FlexSlider-Reste ab (Wrapper läuft sonst in die Breite). */
.m-pdp .woocommerce-product-gallery { width: 100% !important; float: none !important; overflow: hidden; }
/* Galerie folgt der längeren Buy-Box — füllt die Leerfläche unter kurzen Galerien */
@media (min-width: 761px) { .m-pdp__media { position: sticky; top: 24px; } }
.m-pdp .entry-summary, .woocommerce div.product .m-pdp__buy.summary {
  width: 100% !important; float: none !important; margin: 0;
}
.m-pdp .woocommerce-product-gallery__wrapper { background: transparent; }
.m-pdp .woocommerce-product-gallery__image {
  background: var(--tile); border-radius: var(--radius); overflow: hidden;
  aspect-ratio: 4/4.4;
}
.m-pdp .woocommerce-product-gallery__image img,
.m-pdp .woocommerce-product-gallery__image a {
  width: 100%; height: 100%;
}
.m-pdp .woocommerce-product-gallery__image img { mix-blend-mode: multiply; object-fit: contain; }
/* Thumb-Leiste: fix 6 Kacheln, nie scrollbar. Ab 7 Bildern macht das JS Kachel 6
   zum Counter (+N / Alle ansehen) mit Ankersprung zur Bilderstrecke. */
.m-pdp .woocommerce-product-gallery .flex-control-thumbs {
  margin: 12px 0 0; padding: 0; list-style: none;
  display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px;
}
.m-pdp .woocommerce-product-gallery .flex-control-thumbs li {
  float: none !important; width: auto !important; margin: 0 !important;
}
.m-pdp .woocommerce-product-gallery .flex-control-thumbs img {
  width: 100%; aspect-ratio: 1/1; height: auto; object-fit: cover; display: block;
  background: var(--tile); mix-blend-mode: multiply; border-radius: var(--radius);
  border: 0; border-bottom: 3px solid transparent; cursor: pointer;
}
.m-pdp .woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.m-pdp .woocommerce-product-gallery .flex-control-thumbs img:hover {
  border-bottom-color: var(--accent-strong);
}
.lb-gal-many .flex-control-thumbs li:nth-child(n+6):not(.lb-thumb-more) { display: none; }
.lb-thumb-more button {
  width: 100%; aspect-ratio: 1/1; border: 0; cursor: pointer; font: inherit;
  background: var(--band); color: var(--band-fg); border-radius: var(--radius);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
}
.lb-thumb-more b { font-size: 19px; font-weight: 800; color: var(--accent); }
.lb-thumb-more span { font-size: 9.5px; text-transform: uppercase; letter-spacing: .07em; font-weight: 640; }
.lb-thumb-more button:hover span { color: var(--accent); }
/* Mobil: keine Thumbs — Swipe + Zähler-Chip + Link zur Strecke */
.m-pdp .woocommerce-product-gallery { position: relative; }
.lb-gal-chip { display: none; }
.lb-gal-all { display: none; }
@media (max-width: 760px) {
  .m-pdp .woocommerce-product-gallery .flex-control-thumbs { display: none; }
  .lb-gal-chip {
    display: block; position: absolute; top: 10px; right: 10px; z-index: 5;
    background: var(--accent); color: var(--ink); font-size: 12px; font-weight: 740;
    font-variant-numeric: tabular-nums; padding: 4px 9px; border-radius: var(--radius);
  }
  .lb-gal-all {
    display: inline-block; margin-top: 10px; font-size: 13.5px; font-weight: 680; color: var(--ink);
    text-decoration: underline; text-underline-offset: 3px;
    text-decoration-color: var(--accent); text-decoration-thickness: 2px;
  }
}

/* Buy-Box: bb-* aus dem Mockup */
.bb-eyebrow { font-stretch: 80%; font-weight: 660; text-transform: uppercase; letter-spacing: .13em; font-size: 11.5px; color: var(--dim); margin: 0 0 2px; }
.m-pdp .product_title { font-size: clamp(27px, 3.2vw, 40px); line-height: 1.02; margin: 8px 0 12px; }
.bb-rating { display: inline-flex; align-items: center; gap: 9px; margin: -2px 0 10px; text-decoration: none; }
.bb-rating__stars { display: inline-flex; gap: 1px; }
.bb-rating__stars svg { width: 21px; height: 21px; }
/* Uwe-Wunsch 09.08.: größer, ohne Kontur — reine Accent-Füllung */
.bb-rating__stars svg.is-filled { fill: var(--accent); stroke: none; }
.bb-rating__stars svg.is-empty { fill: none; stroke: var(--line-strong); stroke-width: 1.4; }
.bb-rating__text { font-size: 13.5px; font-weight: 660; color: var(--soft); }
.bb-rating:hover .bb-rating__text { text-decoration: underline; text-underline-offset: 2px; }
.woocommerce div.product .m-pdp__buy p.price,
.woocommerce div.product .m-pdp__buy span.price,
.m-pdp .entry-summary .price {
  font-weight: 800 !important; font-size: 28px !important; font-variant-numeric: tabular-nums;
  color: var(--ink) !important; margin: 0 0 4px; display: block;
}
.m-pdp .entry-summary .price .woocommerce-Price-amount { font-weight: 800; }
.m-pdp .entry-summary .price .woocommerce-price-suffix { font-weight: 450; font-size: 13px; color: var(--dim); margin-left: 10px; }
.m-pdp .entry-summary .woocommerce-product-details__short-description { color: var(--soft); font-size: 16px; max-width: 52ch; }
.bb-compat { display: flex; gap: 11px; align-items: flex-start; font-weight: 700; font-size: 15px; margin: 18px 0; }
.bb-compat svg { width: 23px; height: 23px; flex: none; color: var(--accent-ic); margin-top: 1px; }
.bb-compat a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
.bb-specs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 16px 0; }
.bb-specs > div { background: var(--bg2); padding: 15px 16px; border-radius: var(--radius); }
.bb-specs b { display: block; font-size: 17px; font-variant-numeric: tabular-nums; }
.bb-specs span { font-size: 11.5px; text-transform: uppercase; letter-spacing: .07em; color: var(--dim); }
@media (max-width: 480px) {
  .bb-specs { grid-template-columns: repeat(2, 1fr); }
  /* Waisen-Kachel (3. von 3) läuft über beide Spalten statt allein zu hängen */
  .bb-specs > div:last-child:nth-child(odd) { grid-column: span 2; }
}

/* Varianten: Buttons statt Select (JS-Enhancement), Optik = Mockup .bb-var .opt */
.lb-var-buttons { display: flex; gap: 10px; flex-wrap: wrap; margin: 10px 0 6px; }
.lb-var-buttons button {
  border: 1.5px solid var(--line-strong) !important; background: transparent !important;
  color: var(--ink) !important; font-size: 13.5px; font-weight: 620;
  padding: 10px 15px; border-radius: var(--radius); cursor: pointer;
  text-transform: none; letter-spacing: 0;
}
.lb-var-buttons button.act { border-color: var(--ink) !important; background: var(--ink) !important; color: var(--bg) !important; }
.lb-var-hidden { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden; clip-path: inset(50%); }
/* Anker für absolut versteckte Kinder — sonst wird deren 100% zur Viewportbreite */
.m-pdp form.cart { position: relative; }
/* Mockup .bb-var .lbl: Attributname als Label ÜBER den Buttons — erst wenn das JS-Enhancement greift */
.m-pdp form.cart.lb-var-enhanced table.variations,
.m-pdp form.cart.lb-var-enhanced table.variations tbody,
.m-pdp form.cart.lb-var-enhanced table.variations tr,
.m-pdp form.cart.lb-var-enhanced table.variations th,
.m-pdp form.cart.lb-var-enhanced table.variations td { display: block; padding: 0; border: 0; }
.m-pdp form.cart.lb-var-enhanced table.variations th label {
  font-size: 12.5px; font-weight: 680; text-transform: uppercase; letter-spacing: .07em;
  margin-bottom: 8px; display: block;
}
.m-pdp form.cart .reset_variations { font-size: 11.5px; color: var(--dim); }
.bb-var-label { font-size: 12.5px; font-weight: 680; text-transform: uppercase; letter-spacing: .07em; margin-bottom: 8px; }
.bb-hint { font-size: 12.5px; color: var(--dim); margin: 8px 0; max-width: 44ch; }

/* Menge ausblenden (Default 1 bleibt im DOM), CTA volle Breite */
.m-pdp form.cart .quantity, .woocommerce div.product form.cart div.quantity { display: none !important; }
.m-pdp form.cart .single_add_to_cart_button { display: block; width: 100%; text-align: center; font-size: 15.5px; padding: 18px; }

/* PayPal-Smart-Buttons: Luft zum Kauf-Button */
.m-pdp [id^='ppc-button'], .m-pdp .ppc-button-wrapper { margin-top: 12px; }

.bb-mto { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 640; margin: 14px 0 18px; }
.bb-mto svg { width: 21px; height: 21px; flex: none; color: var(--accent-ic); }
.bb-mto__text p, .bb-mto__text .wc-gzd-additional-info { margin: 0; display: inline; }

.bb-usp { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 18px; margin: 20px 0 16px; }
.bb-usp > div { display: flex; gap: 10px; align-items: center; font-size: 13px; font-weight: 640; font-stretch: 90%; text-transform: uppercase; letter-spacing: .03em; }
.bb-usp svg { width: 21px; height: 21px; flex: none; color: var(--accent-ic); }

.bb-service { font-size: 13px; color: var(--dim); line-height: 1.7; border-top: 1px solid var(--line); padding-top: 14px; }
.bb-service b { color: var(--soft); font-weight: 660; }
.bb-service a { color: var(--accent-strong); }

/* Germanized-Zeilen beruhigen; Lieferzeit steckt in der MTO-Zeile */
.m-pdp .entry-summary .woocommerce-price-suffix,
.m-pdp .entry-summary .wc-gzd-additional-info-loop,
.m-pdp .entry-summary .shipping-costs-info,
.m-pdp .entry-summary .tax-info,
.m-pdp .entry-summary .wc-gzd-additional-info.delivery-time-info { font-size: 12.5px; color: var(--dim); }
/* Standard-Lieferzeit nur ausblenden, wenn die MTO-Ersatzzeile wirklich da ist (z. B. Wachsdose hat keine) */
.m-pdp .entry-summary:has(.bb-mto) > .wc-gzd-additional-info.delivery-time-info,
.m-pdp .entry-summary:has(.bb-mto) form.cart > .wc-gzd-additional-info.delivery-time-info { display: none !important; }

/* ---------- Landingpage-Sektionen unter der Buy-Zone ---------- */
.m-pdp-below { margin-top: 32px; }
@media (max-width: 760px) { .m-pdp-below { margin-top: 16px; } }
/* Fallback-Textspalte (nur wenn der Parser nichts liefert) */
.lb-desc .wrap { padding: 10px 32px 34px; }
.lb-desc .wrap > * { max-width: 72ch; }
.lb-desc h2, .lb-desc h3 { font-size: clamp(18px, 2vw, 23px); margin: 1.4em 0 .5em; }
.lb-desc p, .lb-desc li { font-size: 16px; color: var(--soft); }
.lb-desc img { background: var(--tile); mix-blend-mode: multiply; border-radius: var(--radius); }

/* Feature-Splits: Bild|Text im Wechsel, ab Sektion 3 auf Sekundärfläche */
.lb-feat .wrap {
  display: grid; grid-template-columns: 1.02fr .98fr; gap: 48px; align-items: start;
  padding-top: 48px; padding-bottom: 48px;
}
.lb-feat--flip .lb-feat__txt { order: 2; }
.lb-feat--flip .lb-feat__ph { order: 1; }
.lb-feat--band { background: var(--bg2); }
.lb-feat--band + .lb-feat--band .wrap { padding-top: 0; }
.lb-feat__nr { color: var(--accent-strong); margin-bottom: 10px; }
.lb-feat__h { font-size: clamp(22px, 2.6vw, 32px); line-height: 1.04; margin: 0 0 14px; }
.lb-feat__txt { max-width: 56ch; }
.lb-feat__txt p, .lb-feat__txt li { font-size: 16px; color: var(--soft); }
.lb-feat__txt > *:last-child { margin-bottom: 0; }
.lb-feat__ph { margin: 0; }
.lb-feat__ph img { width: 100%; height: auto; display: block; border-radius: var(--radius); }
.lb-feat__ph.lb-ph--photo img { aspect-ratio: 4/3; object-fit: cover; }
.lb-feat__ph.lb-ph--cut { background: var(--tile); border-radius: var(--radius); padding: 26px; }
.lb-feat--band .lb-feat__ph.lb-ph--cut { background: var(--bg); }
.lb-feat__ph.lb-ph--cut img { aspect-ratio: 1/1; object-fit: contain; mix-blend-mode: multiply; }
.lb-feat__cap { font-size: 12px; color: var(--dim); margin-top: 8px; }
.lb-feat--text .wrap { display: block; }
.lb-feat--text .lb-feat__txt { max-width: 64ch; }
/* Lange Einzel-Textfeatures: zweispaltiger Zeitungssatz statt schmaler Wurst */
@media (min-width: 900px) {
  .lb-feat--cols .lb-feat__txt { max-width: none; column-count: 2; column-gap: 48px; }
  .lb-feat--cols .lb-feat__nr, .lb-feat--cols .lb-feat__h { column-span: all; }
  .lb-feat--cols .lb-feat__txt > p { break-inside: avoid-column; }
}
/* Duo-Grid: zwei Text-Features nebeneinander, 2px-Strich über der Nummer */
.lb-feat--duo .wrap { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: start; }
.lb-feat__duocol { max-width: 52ch; }
.lb-feat__duocol .lb-feat__nr { position: relative; padding-top: 12px; }
.lb-feat__duocol .lb-feat__nr::before {
  content: ""; position: absolute; top: 0; left: 0; width: 24px; height: 2px; background: var(--ink);
}
@media (max-width: 760px) { .lb-feat--duo .wrap { grid-template-columns: 1fr; gap: 34px; } }

/* Add-on-Karte: verlinktes Zubehör als Cross-Sell statt Fehlpaarungs-Feature */
.lb-addon .wrap { padding-top: 20px; padding-bottom: 20px; }
.lb-addon.lb-feat--band { background: var(--bg2); }
.lb-addon.lb-feat--band .wrap { padding-top: 40px; padding-bottom: 40px; }
.lb-addon__card {
  display: grid; grid-template-columns: 116px minmax(0, 1fr) auto; gap: 24px; align-items: center;
  background: var(--bg2); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px 26px 20px 20px; max-width: 880px;
}
.lb-addon.lb-feat--band .lb-addon__card { background: var(--bg); }
.lb-addon__ph img { width: 116px; height: 116px; object-fit: contain; mix-blend-mode: multiply; display: block; }
.lb-addon__eyebrow { color: var(--accent-strong); margin-bottom: 5px; }
.lb-addon__name { font-stretch: 90%; font-weight: 760; text-transform: uppercase; font-size: 15.5px; letter-spacing: .02em; }
.lb-addon__text { margin: 7px 0 0; font-size: 14px; color: var(--soft); max-width: 48ch; }
.lb-addon__buy { display: grid; gap: 10px; justify-items: center; }
.lb-addon__price { font-weight: 800; font-size: 19px; font-variant-numeric: tabular-nums; }
.lb-addon__link {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 42px; padding: 10px 24px; border: 1.5px solid var(--ink); border-radius: var(--radius);
  font-size: 13px; font-weight: 700; font-stretch: 88%; letter-spacing: .05em; text-transform: uppercase;
  color: var(--ink); text-decoration: none;
}
.lb-addon__link:hover { background: var(--ink); color: var(--bg); }
@media (max-width: 760px) {
  .lb-addon__card { grid-template-columns: 88px minmax(0, 1fr); gap: 6px 16px; align-items: start; padding: 16px; }
  .lb-addon__ph { grid-row: 1 / 3; align-self: center; }
  .lb-addon__ph img { width: 88px; height: 88px; }
  /* Preis + Button bündig unter dem Namen, nicht unterm Bild */
  .lb-addon__buy { grid-column: 2; grid-template-columns: auto auto; justify-content: start; align-items: center; margin-top: 6px; }
}
@media (max-width: 760px) {
  .lb-feat .wrap { grid-template-columns: 1fr; gap: 22px; padding-top: 32px; padding-bottom: 32px; }
  .lb-feat--flip .lb-feat__txt { order: 0; }
  .lb-feat--flip .lb-feat__ph { order: 0; }
  .lb-feat .lb-feat__ph { order: -1; }
}

/* Bilderstrecke „Alle Ansichten“ (Dunkelband, Anker der Galerie-Counter) */
.lb-strip { background: var(--band); color: var(--band-fg); scroll-margin-top: 16px; margin: 10px 0; }
.lb-strip .wrap { padding-top: 56px; padding-bottom: 56px; }
.lb-strip__head { display: flex; align-items: baseline; gap: 14px; margin-bottom: 26px; }
.lb-strip__head h2 { font-size: clamp(24px, 3vw, 36px); margin: 0; }
.lb-strip__count { font-size: clamp(24px, 3vw, 36px); font-weight: 800; color: var(--accent); font-variant-numeric: tabular-nums; }
.lb-strip__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.lb-strip__tile {
  position: relative; padding: 0; border: 0; margin: 0; display: block; width: 100%;
  aspect-ratio: 1/1; overflow: hidden; border-radius: var(--radius);
  background: var(--tile); cursor: zoom-in;
}
div.lb-strip__tile { cursor: default; }
.lb-strip__tile img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lb-strip__tile.lb-ph--cut { padding: 14px; }
.lb-strip__tile.lb-ph--cut img { object-fit: contain; mix-blend-mode: multiply; }
.lb-strip__tile:first-child { grid-column: span 2; grid-row: span 2; }
.lb-strip__tile:focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
@media (max-width: 760px) {
  .lb-strip__grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .lb-strip__tile:last-child:nth-child(even) { grid-column: span 2; }
}

/* Technik als Datenblatt-Karte */
.lb-technik .wrap { padding-top: 48px; padding-bottom: 8px; }
.lb-technik__card { border: 2px solid var(--ink); border-radius: var(--radius); padding: 24px 24px 16px; max-width: 860px; background: var(--bg); }
.lb-technik__eyebrow { color: var(--accent-strong); margin-bottom: 6px; }
.lb-material .wrap { padding-top: 40px; padding-bottom: 8px; }
.lb-technik h2, .lb-material h2 { font-size: clamp(20px, 2.3vw, 26px); margin-bottom: 18px; }
/* X-Sell als Band */
.m-xsell { background: var(--bg2); margin-top: 60px; }
.m-xsell .wrap { padding-top: 48px; padding-bottom: 56px; }
/* gleiche Ebene wie „Material &amp; Fertigung“ — vorher zwei Größen nebeneinander */
.m-xsell > .wrap > h2 { font-size: clamp(20px, 2.3vw, 26px); margin: 0 0 18px; }
body.single-product .m-foot { margin-top: 0; }
.lb-technik table { width: 100%; max-width: 760px; border-collapse: collapse; }
.lb-technik th, .lb-technik td { text-align: left; padding: 11px 15px; border-bottom: 1px solid var(--line); font-size: 15px; vertical-align: top; }
.lb-technik th { width: 190px; color: var(--dim); font-weight: 660; text-transform: uppercase; font-size: 12px; letter-spacing: .06em; }
.lb-technik tr:last-child th, .lb-technik tr:last-child td { border-bottom: 0; }
/* Mobil: Label über Wert statt gequetschter Zweispalter */
@media (max-width: 600px) {
  .lb-technik tr, .lb-technik th, .lb-technik td { display: block; width: auto; }
  .lb-technik th { padding: 12px 0 2px; border-bottom: 0; }
  .lb-technik td { padding: 0 0 12px; }
  .lb-technik tr { border-bottom: 1px solid var(--line); }
  .lb-technik tr:last-child { border-bottom: 0; }
}
.lb-material__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; max-width: 1080px; }
.lb-material__item { background: var(--bg2); padding: 22px 24px; border-radius: var(--radius); }
.lb-material h3 { font-size: 15px; margin: 0 0 9px; }
.lb-material p { font-size: 15px; color: var(--soft); margin: 0; line-height: 1.6; }
@media (max-width: 768px) { .lb-material__grid { grid-template-columns: 1fr; } }
/* Kundenstimmen: Woo-Reviews im Werkstatt-Look */
.lb-reviews .wrap { padding-top: 48px; padding-bottom: 8px; }
.lb-reviews__eyebrow { color: var(--accent-strong); margin-bottom: 6px; }
.lb-reviews .woocommerce-Reviews-title { font-size: clamp(20px, 2.3vw, 26px); margin: 0 0 18px; }
.lb-reviews .commentlist { list-style: none; margin: 0 0 8px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)); gap: 16px; max-width: 1080px; }
/* Woo-Clearfix (::before/::after mit content) würde im Grid zum leeren ersten Item */
.lb-reviews ol.commentlist::before, .lb-reviews ol.commentlist::after,
.lb-reviews #reviews #comments ol.commentlist::before, .lb-reviews #reviews #comments ol.commentlist::after { content: none; display: none; }
.lb-reviews .commentlist li { margin: 0; }
/* Woo-Core legt Rahmen + Avatar-Einrückung auf .comment-text — neutralisieren */
.lb-reviews #reviews #comments ol.commentlist li .comment-text { margin: 0; border: 0; padding: 0; border-radius: 0; }
.lb-reviews .comment_container { background: var(--bg2); border-radius: var(--radius); padding: 20px 22px; height: 100%; }
.lb-reviews .comment_container .avatar { display: none; }
.lb-reviews .comment-text { margin: 0; }
.lb-reviews .comment-text .meta { margin: 0 0 8px; font-size: 13px; color: var(--dim); }
.lb-reviews .woocommerce-review__author { font-weight: 700; color: var(--ink); font-size: 14.5px; }
.lb-reviews .description { font-size: 15px; color: var(--soft); line-height: 1.6; }
.lb-reviews .description p { margin: 0 0 8px; }
.lb-reviews .description p:last-child { margin-bottom: 0; }
/* Woo-Sternbalken: Star-Font des Cores durch Unicode-Sterne ersetzen */
.lb-reviews .star-rating { position: relative; display: inline-block; width: 5.7em; height: 1.2em; line-height: 1.2; font-size: 13px; font-family: system-ui, sans-serif; letter-spacing: .14em; margin: 0 0 6px; }
.lb-reviews .star-rating::before { content: "★★★★★"; color: var(--line-strong); }
.lb-reviews .star-rating span { position: absolute; left: 0; top: 0; height: 17px; overflow: hidden; white-space: nowrap; font-size: 0; padding: 0; }
.lb-reviews .star-rating span::before { content: "★★★★★"; font-size: 13px; letter-spacing: .14em; color: var(--accent-ic); }
/* Bewertungsformular */
.lb-reviews #review_form_wrapper { max-width: 640px; margin-top: 26px; }
.lb-reviews .comment-reply-title { display: block; font-weight: 800; font-size: 17px; margin-bottom: 4px; }
.lb-reviews .comment-notes { font-size: 13.5px; color: var(--dim); }
.lb-reviews .comment-form p { margin: 0 0 14px; }
.lb-reviews .comment-form label { display: block; font-weight: 660; font-size: 13.5px; margin-bottom: 4px; }
.lb-reviews .comment-form-rating .stars a { color: var(--accent-ic); }
.lb-reviews .comment-form input[type="text"], .lb-reviews .comment-form input[type="email"], .lb-reviews .comment-form textarea, .lb-reviews .comment-form select { width: 100%; border: 1px solid var(--line-strong); border-radius: var(--radius); background: var(--bg); padding: 11px 13px; font: inherit; color: var(--ink); }
.lb-reviews .comment-form input:focus, .lb-reviews .comment-form textarea:focus, .lb-reviews .comment-form select:focus { outline: 2px solid var(--accent-strong); outline-offset: 1px; }
.lb-reviews .comment-form textarea { min-height: 130px; resize: vertical; }
.lb-reviews .comment-form-cookies-consent, .lb-reviews .comment-form .woocommerce-form__label-for-checkbox { display: flex; gap: 8px; align-items: baseline; }
.lb-reviews .comment-form-cookies-consent label { display: inline; font-weight: 450; font-size: 13.5px; }
/* Senden-Button erbt bewusst die Sekundär-Ghost-Optik aus css/woo.css (#respond input#submit) */
.m-xsell .up-sells > h2 { display: none; }
/* .woocommerce-Präfix nötig: Woo-Loop-CSS (columns-Breiten, Floats) hat sonst höhere Spezifität */
.woocommerce .m-xsell ul.products { display: grid; grid-template-columns: repeat(3, minmax(0, 240px)); gap: 16px; list-style: none; margin: 0; padding: 0; width: auto; }
/* Woo-Clearfix (::before/::after) würde im Grid zum ersten Grid-Item */
.woocommerce .m-xsell ul.products::before, .woocommerce .m-xsell ul.products::after,
.woocommerce .lb-archive ul.products::before, .woocommerce .lb-archive ul.products::after { content: none; display: none; }
.woocommerce .m-xsell ul.products li.product { background: transparent; text-align: left; margin: 0 !important; width: auto !important; float: none !important; }
.woocommerce .m-xsell ul.products li.product img { background: var(--tile); mix-blend-mode: multiply; border-radius: var(--radius); aspect-ratio: 1/1; object-fit: contain; width: 100%; margin: 0; }
.woocommerce .m-xsell ul.products li.product .woocommerce-loop-product__title { font-stretch: 92%; font-weight: 760; text-transform: uppercase; font-size: 13.5px; letter-spacing: .03em; margin: 11px 0 4px; color: var(--ink); padding: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
/* Mobil: gestapelte Zeilenkarten statt gequetschtem 3er-Grid (100px-Karten mit Texttürmen) */
@media (max-width: 600px) {
  .woocommerce .m-xsell ul.products { grid-template-columns: 1fr; gap: 12px; }
  .woocommerce .m-xsell ul.products li.product {
    display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 2px 16px;
    align-content: center; background: var(--bg2); border-radius: var(--radius); padding: 12px;
  }
  .woocommerce .m-xsell ul.products li.product > a.woocommerce-LoopProduct-link { display: contents; }
  .woocommerce .m-xsell ul.products li.product img { grid-column: 1; grid-row: 1 / span 5; align-self: center; }
  .woocommerce .m-xsell ul.products li.product :where(.woocommerce-loop-product__title, .price, .wc-gzd-additional-info) { grid-column: 2; }
  .woocommerce .m-xsell ul.products li.product .woocommerce-loop-product__title { margin: 0 0 2px; }
  .woocommerce .m-xsell ul.products li.product .price { margin: 0 0 2px; }
  .m-xsell .wc-gzd-additional-info-loop { margin: 0; }
}
.woocommerce .m-xsell ul.products li.product .price { font-weight: 740; font-size: 13.5px; color: var(--ink); font-variant-numeric: tabular-nums; margin: 0; }
.m-xsell .wc-gzd-additional-info-loop { font-size: 11px; color: var(--dim); margin: 2px 0 0; }
.m-xsell ul.products li.product .button, .m-xsell ul.products li.product .added_to_cart { display: none; }

/* ---------- Sticky-ATC (mobil) ---------- */
.lb-sticky-atc { display: none; }
.lb-sticky-atc[hidden] { display: none !important; }
@media (max-width: 768px) {
  .lb-sticky-atc:not([hidden]) {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
    display: grid; background: var(--bg); border-top: 1px solid var(--line-strong);
    padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
    grid-template-columns: 1fr auto; gap: 14px; align-items: center;
  }
}
.lb-sticky-atc__meta { min-width: 0; }
.lb-sticky-atc__title { display: block; font-stretch: 84%; font-weight: 760; text-transform: uppercase; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lb-sticky-atc__price { font-size: 12.5px; color: var(--dim); font-variant-numeric: tabular-nums; }
.lb-sticky-atc__price .woocommerce-Price-amount { font-weight: 700; color: var(--ink); }
.lb-sticky-atc__button {
  background: var(--cta-bg); color: var(--cta-fg); border: 0;
  font-weight: 760; font-stretch: 84%; text-transform: uppercase; letter-spacing: .05em;
  font-size: 14px; padding: 14px 24px; border-radius: var(--radius); cursor: pointer;
}

/* ---------- Woo global: Primär-CTAs gelb, Sekundär-Buttons regelt css/woo.css ---------- */
.single_add_to_cart_button, .checkout-button, #place_order,
.woocommerce .button.alt, .woocommerce button.button.alt {
  background: var(--cta-bg) !important; color: var(--cta-fg) !important;
  font-weight: 760; font-stretch: 84%; text-transform: uppercase; letter-spacing: .06em;
  border-radius: var(--radius); border: 0;
}
.single_add_to_cart_button:hover, .checkout-button:hover, #place_order:hover,
.woocommerce .button.alt:hover, .woocommerce button.button.alt:hover {
  background: var(--cta-hover) !important; color: var(--cta-fg) !important;
}
.m-pdp .product_meta { display: none; }

/* Archiv-Fallback (Shop/Kategorien bis zur 301-Runde) */
.woocommerce .lb-archive ul.products { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; list-style: none; margin: 28px 0; padding: 0; }
@media (max-width: 760px) { .woocommerce .lb-archive ul.products { grid-template-columns: 1fr 1fr; gap: 26px 18px; } }
.woocommerce .lb-archive ul.products li.product { width: auto !important; float: none !important; margin: 0 !important; text-align: left; }
.woocommerce .lb-archive ul.products li.product img { background: var(--tile); mix-blend-mode: multiply; border-radius: var(--radius); aspect-ratio: 4/4.2; object-fit: contain; width: 100%; }
.woocommerce .lb-archive ul.products li.product .woocommerce-loop-product__title { font-stretch: 92%; font-weight: 760; text-transform: uppercase; font-size: 17px; letter-spacing: .03em; margin: 15px 0 4px; }

/* Woo-Zoom-Lupe: Mockup zeigt keinen Trigger — Lightbox bleibt per Bildklick */
.woocommerce-product-gallery__trigger { display: none !important; }
/* Variations-Beschreibungszeile beruhigen */
.m-pdp .woocommerce-variation-description, .m-pdp .woocommerce-variation-description p { font-size: 12.5px; color: var(--dim); margin: 4px 0 0; }

/* ---------- Seiten (Kasse, Konto, Rechtstexte) ---------- */
.lb-page { padding: 50px 0 24px; }
.lb-page > .wrap > h1 { font-size: clamp(29px, 3.6vw, 44px); margin-bottom: 26px; }
body.page:not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) .lb-page .entry-content > p,
body.page:not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) .lb-page .entry-content > ul,
body.page:not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) .lb-page .entry-content > ol,
body.page:not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) .lb-page .entry-content > h2,
body.page:not(.woocommerce-cart):not(.woocommerce-checkout):not(.woocommerce-account) .lb-page .entry-content > h3 { max-width: 72ch; }
.lb-page .entry-content h2 { font-size: 24px; margin-top: 1.6em; }
.lb-page .entry-content h3 { font-size: 18px; margin-top: 1.4em; }

/* Cookie-Bar (CookieLawInfo) an die Palette */
#cookie-law-info-bar { font-weight: 500; font-size: 15px; }

/* 404 */
.lb-404 { padding: 80px 0; text-align: center; }
.lb-404 h1 { font-size: clamp(32px, 4.2vw, 52px); }

/* Ein Bewegungsmuster: Kachel-Hover skaliert das Bild minimal (ein Easing überall) */
.m-card .ph img, .lb-strip__tile img, .lb-feat__ph img,
.woocommerce .m-xsell ul.products li.product img {
  transition: transform 300ms cubic-bezier(.25, .1, .25, 1);
}
.m-card:hover .ph img, .lb-strip__tile:hover img { transform: scale(1.03); }

/* Auf sehr breiten Screens (Benny browst ~2000px) zieht das Vertikale mit,
   sonst wirken die Sektionen briefmarkig */
@media (min-width: 1600px) {
  .m-hero .wrap { padding-top: 82px; padding-bottom: 82px; }
  .m-sort .wrap { padding-top: 80px; }
  .m-mat .wrap { padding-top: 76px; padding-bottom: 70px; }
  .m-faq .wrap { padding-top: 74px; padding-bottom: 74px; }
  .m-final .wrap { padding-top: 80px; padding-bottom: 80px; }
  .m-pdp > .wrap { padding-top: 72px; }
  .lb-feat .wrap { padding-top: 64px; padding-bottom: 64px; }
  .lb-strip .wrap { padding-top: 72px; padding-bottom: 72px; }
  .m-xsell .wrap { padding-top: 60px; padding-bottom: 68px; }
}

/* ---------- Kontaktseite (page-kontakt.php, CF7) ---------- */
.lb-kontakt__intro, .lb-haendler__intro { color: var(--soft); font-size: 17.5px; max-width: 62ch; margin: 0 0 32px; }
.lb-contact { display: grid; grid-template-columns: 1.05fr .95fr; gap: 64px; align-items: start; }
.lb-contact__noscript {
  margin: 0 0 24px; padding: 14px 16px; font-size: 15px;
  border: 1.5px solid var(--line-strong); border-radius: var(--radius); background: var(--bg2);
}
@media (max-width: 860px) { .lb-contact { grid-template-columns: 1fr; gap: 40px; } }
.lb-contact .wpcf7 form { display: grid; gap: 18px; }
/* CF7 wrappt jedes Feld in <p> mit <br> — Grid-Items kollabieren keine Margins, sonst ~50px statt gap */
.lb-contact .wpcf7 form p { margin: 0; }
.lb-contact .wpcf7 label br { display: none; }
.lb-contact .wpcf7 form p:has(.wpcf7-acceptance) { margin-top: 8px; }
.lb-contact .wpcf7 form p:has(.wpcf7-submit) { margin-top: 6px; }
.lb-contact .wpcf7 label {
  display: block; font-size: 12.5px; font-weight: 680; text-transform: uppercase;
  letter-spacing: .07em; color: var(--ink);
}
.lb-contact .wpcf7-form-control-wrap { display: block; margin-top: 7px; }
.lb-contact .wpcf7 input[type="text"],
.lb-contact .wpcf7 input[type="email"],
.lb-contact .wpcf7 textarea {
  width: 100%; min-height: 48px; padding: 12px 14px;
  border: 1.5px solid var(--line-strong); border-radius: var(--radius);
  background: #fff; color: var(--ink); font: inherit; line-height: 1.35;
}
.lb-contact .wpcf7 input:focus, .lb-contact .wpcf7 textarea:focus {
  outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(255, 213, 0, .35);
}
.lb-contact .wpcf7 textarea { min-height: 170px; resize: vertical; }
.lb-contact .wpcf7-acceptance { font-size: 13px; color: var(--soft); }
.lb-contact .wpcf7-acceptance label { display: flex; gap: 10px; align-items: flex-start; text-transform: none; letter-spacing: 0; font-weight: 450; font-size: 13px; }
.lb-contact .wpcf7-acceptance input { width: 17px; height: 17px; margin-top: 2px; accent-color: var(--ink); flex: none; }
.lb-contact .wpcf7-list-item { margin: 0; }
.lb-contact .wpcf7-submit {
  background: var(--cta-bg); color: var(--cta-fg); border: 0; cursor: pointer;
  font-weight: 740; font-stretch: 84%; text-transform: uppercase; letter-spacing: .06em;
  font-size: 14.5px; padding: 17px 34px; border-radius: var(--radius); justify-self: start;
}
.lb-contact .wpcf7-submit:hover { background: var(--cta-hover); }
.lb-contact .wpcf7-not-valid-tip { font-size: 12.5px; color: #a03318; margin-top: 5px; display: block; }
.lb-contact .wpcf7-response-output {
  margin: 0; padding: 14px 18px; border: 0; border-left: 3px solid var(--accent);
  background: var(--bg2); font-size: 14.5px; border-radius: var(--radius);
}
.lb-contact .wpcf7-spinner { margin: 0 0 0 12px; }
.lb-contact__side { display: grid; gap: 26px; align-content: start; }
.lb-contact__foto { margin: 0; }
.lb-contact__foto img { border-radius: var(--radius); display: block; width: 100%; height: auto; }
.lb-contact__foto figcaption { font-size: 12px; color: var(--dim); margin-top: 8px; }
.lb-contact__block h2 { font-size: 15px; margin: 0 0 8px; }
.lb-contact__block p { margin: 0 0 6px; font-size: 15px; color: var(--soft); }
.lb-contact__block a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--accent); text-decoration-thickness: 2px; font-weight: 640; }
.lb-contact__hint { font-size: 13px !important; color: var(--dim) !important; }

/* ---------- Händlerseite (page-haendler.php, DACH-Karte) ---------- */
.lb-dealers { display: grid; grid-template-columns: .85fr 1.15fr; gap: 64px; align-items: start; }
@media (max-width: 860px) { .lb-dealers { grid-template-columns: 1fr; gap: 20px; } }
.lb-dealers__map { position: sticky; top: 24px; }
@media (max-width: 860px) {
  .lb-dealers__map { position: static; max-width: 440px; margin: 0 auto; width: 100%; }
  /* SVG-Labels skalieren mit der viewBox — mobil sonst ~7px */
  .lb-map__label { font-size: 17px; }
}
.lb-map { width: 100%; height: auto; display: block; }
.lb-map__land { fill: var(--bg2); stroke: var(--line-strong); stroke-width: 1; }
.lb-map__dot { fill: var(--band); transition: fill 120ms ease; }
.lb-map__dot--hq { fill: var(--accent); stroke: var(--band); stroke-width: 2; }
.lb-map__label { font-family: 'Archivo', system-ui, sans-serif; font-size: 11.5px; font-weight: 640; fill: var(--soft); }
.lb-map__city { cursor: default; }
.lb-map__city.is-hot .lb-map__dot { fill: var(--accent); stroke: var(--band); stroke-width: 2; }
.lb-dealers__list .m-sub { margin-top: 34px; }
.lb-dealers__list .m-sub:first-child { margin-top: 0; }
.lb-dealers__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 560px) { .lb-dealers__grid { grid-template-columns: 1fr; } }
.lb-dealer {
  background: var(--bg2); border-radius: var(--radius); padding: 16px 18px;
  display: flex; flex-direction: column; gap: 3px; border: 1.5px solid transparent;
  transition: border-color 120ms ease;
}
.lb-dealer.is-hot { border-color: var(--accent); }
.lb-dealer--hq { background: var(--band); color: var(--band-fg); }
.lb-dealer--hq .lb-dealer__ort { color: var(--band-soft); }
.lb-dealer--hq .lb-dealer__addr, .lb-dealer--hq .lb-dealer__note { color: var(--band-soft); }
.lb-dealer__flag { font-size: 10.5px; font-weight: 680; text-transform: uppercase; letter-spacing: .12em; color: var(--accent); margin-bottom: 4px; }
.lb-dealer__ort { font-size: 11.5px; font-weight: 660; text-transform: uppercase; letter-spacing: .1em; color: var(--dim); }
.lb-dealer__name { font-stretch: 90%; font-weight: 760; text-transform: uppercase; font-size: 15px; letter-spacing: .02em; }
.lb-dealer__addr { font-size: 13.5px; color: var(--soft); line-height: 1.5; }
.lb-dealer__note { font-size: 12.5px; color: var(--dim); margin-top: 4px; }
.lb-dealers__cta { margin-top: 32px; font-size: 14.5px; color: var(--soft); }
.lb-dealers__cta a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--accent); text-decoration-thickness: 2px; font-weight: 660; }

/* Sprach-Switcher (Flagge in Nav + Footer) */
.lb-lang { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: inherit; text-decoration: none; }
.lb-lang svg { width: 20px; height: 14px; border-radius: 2px; box-shadow: 0 0 0 1px rgba(0, 0, 0, .12); display: block; }
.lb-lang:hover span { text-decoration: underline; }
.m-head .lb-lang { flex-shrink: 0; }
.m-mobilenav .lb-lang { margin: 22px 0 0; font-size: 15px; }
.m-foot .bottom .lb-lang { color: inherit; }
