/* ============================================================
   home-v12.css — Premium homepage v12 (FASE C, strangler-fig)
   ------------------------------------------------------------
   Design-tokens 1-op-1 uit jaloeziedeal-v11 mockup.css. Alle
   component-styling is gescopet onder .jdh / .jdh-* zodat het
   tijdens co-existentie niet botst met mockup.css / overrides.css.
   Geen nieuwe !important-laag. Cache-bust via filemtime() in
   inc/mockup-render.php.

   Stap 1 (frame): topbar + sticky header + mobiele drawer + footer.
   ============================================================ */

/* ===== Design-tokens (jdh-prefix om botsing met theme-tokens te vermijden) ===== */
:root{
  --jdh-green:#6B8F71; --jdh-green-dark:#5A7A63; --jdh-green-deep:#46604E; --jdh-green-light:#E8F0EA;
  --jdh-green-cta:#50705A; /* SAVE274: iets dieper dan green-dark zodat wit-op-groen ruim WCAG AA haalt (5.5:1) */
  --jdh-accent:#C4945A; --jdh-golden:#F2BC41;
  --jdh-cream:#F4F4F1; --jdh-sand:#F7F4EE; --jdh-sand-deep:#EFEAE0;
  --jdh-dark:#1A1A1A; --jdh-ink:#171717; --jdh-text:#2C2C2C; --jdh-muted:#6B6B6B; --jdh-light:#9B9B9B;
  --jdh-border:#E5E0D8; --jdh-border-light:#F0EDE8; --jdh-white:#FFFFFF;
  --jdh-r-sm:8px; --jdh-r:12px; --jdh-r-lg:20px; --jdh-r-pill:50px;
  --jdh-sh-xs:0 1px 2px rgba(0,0,0,.05); --jdh-sh:0 2px 8px rgba(0,0,0,.06);
  --jdh-sh-md:0 4px 20px rgba(0,0,0,.1); --jdh-sh-lg:0 12px 40px rgba(0,0,0,.12);
  --jdh-sh-premium:0 24px 60px -16px rgba(23,23,23,.18),0 10px 24px -8px rgba(23,23,23,.10);
  --jdh-tx:0.25s cubic-bezier(0.4,0,0.2,1);
  --jdh-serif:'Fraunces',Georgia,serif; --jdh-sans:'DM Sans',system-ui,sans-serif;
  --jdh-section-y:clamp(56px,8vw,112px); --jdh-wrap:1200px;
}

/* ===== Page-level basis (alleen op de v12-home; body krijgt .jdh-v12) ===== */
body.jdh-v12{margin:0;background:var(--jdh-cream);-webkit-font-smoothing:antialiased}

/* ===== Scoped reset + basis ===== */
.jdh,.jdh *{box-sizing:border-box}
.jdh{font-family:var(--jdh-sans);font-size:16.5px;line-height:1.65;color:var(--jdh-text)}
.jdh img{max-width:100%;display:block}
.jdh a{text-decoration:none}
/* SAVE285 (root-fix): inherit-reset met `:where()` zodat de selector specificity (0,1,1)
   houdt i.p.v. (0,3,1). Zo winnen normale sectie-link-kleuren (`.jdh-xxx a`, 0,1,1+) via
   source-order, terwijl knoppen/chips (eigen kleur) buiten de reset blijven. Vervangt de
   per-geval SAVE274/SAVE278-patches (CTA wit / chip wit blijven werken: btn/chip uitgesloten). */
.jdh a:where(:not(.jdh-btn, .jdh-chip)){color:inherit}
/* SAVE308 (root-fix): `:where()` zodat de button-reset specificity 0,0,0 houdt i.p.v.
   (0,1,1). De configurator-v2-bundle (product-shell laadt home-v12.css mee) zet de
   groene add-to-cart-bg via een enkele class (0,1,0) — die verloor van de oude reset en
   kwam alleen op :hover (0,2,1) terug → wit-op-witte knop. Met `:where()` winnen alle
   eigen button-classes (burger/drawer/vlightbox/cart) altijd. Zelfde patroon als regel 42. */
:where(.jdh button){font:inherit;cursor:pointer;border:0;background:none}
.jdh-wrap{max-width:var(--jdh-wrap);margin:0 auto;padding:0 clamp(20px,4vw,40px)}

/* ===== Reveal-on-scroll (geactiveerd door home-v12.js) ===== */
/* Reveal is JS-gated (.jdh-js gezet door home-v12.js): faalt het script of is JS
   uit, dan blijft alle content gewoon zichtbaar (geen blanco pagina). */
.jdh.jdh-js .reveal{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s cubic-bezier(.22,.61,.36,1)}
.jdh .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.jdh.jdh-js .reveal{opacity:1;transform:none;transition:none}}

/* ===== Knoppen (gedeeld door header/hero/CTA's) ===== */
.jdh-btn{display:inline-flex;align-items:center;gap:9px;font-weight:500;border-radius:var(--jdh-r-pill);transition:transform var(--jdh-tx),box-shadow var(--jdh-tx),background var(--jdh-tx);will-change:transform}
.jdh-btn-primary{background:var(--jdh-green-cta);color:#fff;padding:15px 28px;box-shadow:0 6px 18px -6px rgba(80,112,90,.5)}
.jdh-btn-primary:hover{background:var(--jdh-green-deep);transform:translateY(-2px);box-shadow:0 10px 26px -8px rgba(90,122,99,.6)}
.jdh-btn-primary:active{transform:translateY(0)}
.jdh-btn-outline{border:1.5px solid var(--jdh-border);background:#fff;color:var(--jdh-text);padding:14px 26px}
.jdh-btn-outline:hover{border-color:var(--jdh-green);color:var(--jdh-green-deep);transform:translateY(-2px)}
.jdh-btn-sm{padding:10px 20px;font-size:14.5px}
.jdh-arr{transition:transform .25s ease}
.jdh-btn:hover .jdh-arr{transform:translateX(4px)}

/* ===== Topbar verwijderd (SAVE274) — geen zwarte balk; USP's komen in Stap 3. ===== */

/* ===== Header ===== */
.jdh-hdr{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.94);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid transparent;transition:box-shadow var(--jdh-tx),border-color var(--jdh-tx)}
.jdh-hdr.scrolled{box-shadow:var(--jdh-sh);border-bottom-color:var(--jdh-border-light)}
.jdh-hdr-in{display:flex;align-items:center;gap:28px;height:72px;transition:height var(--jdh-tx)}
.jdh-hdr.scrolled .jdh-hdr-in{height:62px}
.jdh-logo img{height:26px;width:auto}
.jdh-nav{display:flex;gap:26px;font-size:15px;font-weight:500;margin-left:8px}
.jdh-nav a{position:relative;padding:6px 0;color:var(--jdh-text)}
.jdh-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:2px;background:var(--jdh-green);transition:right .25s ease}
.jdh-nav a:hover::after{right:0}
.jdh-hdr-cta{margin-left:auto;display:flex;align-items:center;gap:14px}
.jdh-cart{position:relative;display:flex;padding:8px;border-radius:50%;color:var(--jdh-ink);transition:background var(--jdh-tx)}
.jdh-cart:hover{background:var(--jdh-green-light)}
.jdh-badge{position:absolute;top:0;right:0;background:var(--jdh-green-dark);color:#fff;font-size:10.5px;font-weight:700;min-width:17px;height:17px;border-radius:9px;display:flex;align-items:center;justify-content:center}
.jdh-badge[hidden]{display:none}
.jdh-burger{display:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:44px;height:44px;padding:0}
.jdh-burger i{display:block;width:22px;height:2px;background:var(--jdh-ink);border-radius:2px}
@media (max-width:880px){.jdh-nav{display:none}.jdh-burger{display:flex}.jdh-hdr-cta .jdh-btn{display:none}}

/* ===== Mobiele drawer (nieuw t.o.v. mockup — toegankelijk mobiel menu) ===== */
.jdh-scrim{position:fixed;inset:0;background:rgba(23,23,23,.5);z-index:9998;opacity:0;transition:opacity .3s ease}
.jdh-scrim.open{opacity:1}
.jdh-scrim[hidden]{display:none}
.jdh-drawer{position:fixed;top:0;left:0;bottom:0;width:min(82vw,320px);background:#fff;z-index:9999;transform:translateX(-100%);transition:transform .35s cubic-bezier(.22,.61,.36,1);box-shadow:var(--jdh-sh-lg);padding:22px;display:flex;flex-direction:column;overflow-y:auto}
.jdh-drawer.open{transform:none}
.jdh-drawer-close{align-self:flex-end;width:44px;height:44px;display:flex;align-items:center;justify-content:center;font-size:30px;line-height:1;color:var(--jdh-muted);border-radius:50%}
.jdh-drawer-close:hover{background:var(--jdh-cream);color:var(--jdh-ink)}
.jdh-drawer-nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.jdh-drawer-nav a{padding:14px 6px;font-size:17px;font-weight:500;color:var(--jdh-ink);border-bottom:1px solid var(--jdh-border-light)}
.jdh-drawer-nav .jdh-btn{margin-top:18px;justify-content:center;border-bottom:0}
@media (min-width:881px){.jdh-drawer,.jdh-scrim{display:none}}
@media (prefers-reduced-motion:reduce){.jdh-drawer,.jdh-scrim{transition:none}}

/* ===== Eyebrow (gedeeld door hero + sectie-koppen) ===== */
.jdh-eyebrow{font-size:12.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--jdh-green-dark);display:flex;align-items:center;gap:12px}
.jdh-eyebrow::after{content:"";width:44px;height:1px;background:var(--jdh-accent)}

/* ============================================================
   Hero (Stap 2)
   ============================================================ */
.jdh-hero{position:relative;overflow:hidden;background:linear-gradient(180deg,#FBFAF8 0%,var(--jdh-cream) 100%)}
.jdh-hero-grid{display:grid;grid-template-columns:minmax(0,46fr) minmax(0,54fr);gap:clamp(32px,5vw,72px);align-items:center;padding-top:clamp(48px,7vw,104px);padding-bottom:clamp(56px,7vw,96px)}
.jdh-hero h1{font-family:var(--jdh-serif);font-weight:600;font-size:clamp(36px,4.6vw,58px);line-height:1.08;letter-spacing:-.01em;color:var(--jdh-ink);margin:18px 0 20px}
.jdh-hero h1 em{font-style:italic;font-weight:500;color:var(--jdh-green)}
.jdh-lead{font-size:clamp(16.5px,1.35vw,18.5px);color:var(--jdh-muted);max-width:46ch}
.jdh-hero-price{display:inline-flex;align-items:baseline;gap:8px;margin:22px 0 4px;font-size:15px;color:var(--jdh-muted)}
.jdh-hero-price strong{font-family:var(--jdh-serif);font-size:26px;font-weight:600;color:var(--jdh-ink)}
.jdh-hero-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:18px}
.jdh-hero-trust{display:flex;flex-wrap:wrap;align-items:center;gap:10px 22px;margin-top:26px;font-size:14px;color:var(--jdh-muted)}
.jdh-tick{display:inline-flex;align-items:center;gap:7px}
.jdh-tick svg{width:14px;height:14px;stroke:var(--jdh-green-dark)}

/* Hero visual + lamellen-signature */
.jdh-hero-visual{position:relative}
.jdh-photo-card{position:relative;border-radius:var(--jdh-r-lg);overflow:hidden;box-shadow:var(--jdh-sh-premium);aspect-ratio:5/4;transform:translateZ(0)}
.jdh-photo-card>img{width:100%;height:100%;object-fit:cover}
/* SAVE277: lamellen-overlay verwijderd — hero toont gewoon de schone sfeerfoto, geen animatie. */
.jdh-chip{position:absolute;display:flex;align-items:center;gap:8px;background:rgba(23,23,23,.82);color:#fff;font-size:12.5px;font-weight:500;letter-spacing:.02em;padding:8px 14px;border-radius:var(--jdh-r-pill);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:4}
.jdh-chip-product{top:16px;left:16px}
.jdh-chip-product:hover{background:rgba(23,23,23,.95)}
.jdh-chip-delivery{bottom:16px;left:16px;background:rgba(255,255,255,.92);color:var(--jdh-ink);box-shadow:var(--jdh-sh)}
.jdh-chip-delivery .jdh-dot{width:7px;height:7px;border-radius:50%;background:var(--jdh-green);animation:jdh-pulse 2.4s infinite}
@keyframes jdh-pulse{0%,100%{box-shadow:0 0 0 0 rgba(107,143,113,.5)}55%{box-shadow:0 0 0 6px rgba(107,143,113,0)}}
.jdh-hero-bgword{position:absolute;right:-1%;bottom:-4%;font-family:var(--jdh-serif);font-size:clamp(120px,16vw,230px);font-weight:600;font-style:italic;color:rgba(107,143,113,.055);line-height:1;pointer-events:none;user-select:none}
@media (max-width:880px){.jdh-hero-grid{grid-template-columns:1fr;gap:34px;padding-top:36px}.jdh-hero-bgword{display:none}.jdh-photo-card{aspect-ratio:4/3}}
@media (prefers-reduced-motion:reduce){.jdh-chip-delivery .jdh-dot{animation:none}}

/* ============================================================
   USP-strip (Stap 3)
   ============================================================ */
.jdh-usps{background:#fff;border-top:1px solid var(--jdh-border-light);border-bottom:1px solid var(--jdh-border-light)}
.jdh-usps-in{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;padding-top:22px;padding-bottom:22px;margin:0;list-style:none}
.jdh-usp{display:flex;align-items:center;gap:13px;font-size:14.5px;font-weight:500;color:var(--jdh-text);justify-content:center}
.jdh-usp svg{width:26px;height:26px;stroke:var(--jdh-green-dark);flex:none}
.jdh-usp small{display:block;font-size:12.5px;font-weight:400;color:var(--jdh-muted)}
@media (max-width:880px){.jdh-usps-in{grid-template-columns:repeat(2,1fr);gap:14px 10px;padding-top:18px;padding-bottom:18px}.jdh-usp{justify-content:flex-start}}

/* ============================================================
   Sectie-koppen (gedeeld vanaf Stap 4)
   ============================================================ */
.jdh-sec-head{max-width:620px;margin:0 auto clamp(36px,5vw,56px);text-align:center}
.jdh-sec-head .jdh-eyebrow{justify-content:center}
.jdh-sec-head .jdh-eyebrow::after{display:none}
.jdh-sec-head h2{font-family:var(--jdh-serif);font-weight:600;font-size:clamp(28px,3.6vw,44px);line-height:1.12;color:var(--jdh-ink);margin:14px 0 12px}
.jdh-sec-sub{color:var(--jdh-muted);font-size:16.5px;margin:0}

/* ============================================================
   Materialen (Stap 4)
   ============================================================ */
.jdh-mats{background:var(--jdh-cream);padding:var(--jdh-section-y) 0}
.jdh-mat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.jdh-mat{position:relative;background:#fff;border-radius:var(--jdh-r-lg);overflow:hidden;box-shadow:var(--jdh-sh);transition:transform .35s cubic-bezier(.22,.61,.36,1),box-shadow .35s ease;display:block}
.jdh-mat:hover{transform:translateY(-6px);box-shadow:var(--jdh-sh-lg)}
.jdh-mat-img{aspect-ratio:1/1;overflow:hidden;background:var(--jdh-sand-deep)}
.jdh-mat-img img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.22,.61,.36,1)}
.jdh-mat:hover .jdh-mat-img img{transform:scale(1.06)}
.jdh-mat-body{padding:18px 18px 20px}
.jdh-mat-body h3{font-family:var(--jdh-serif);font-size:20px;font-weight:600;color:var(--jdh-ink);margin:0}
.jdh-mat-range{font-size:13px;color:var(--jdh-light);margin:2px 0 10px}
.jdh-mat-price{font-size:14px;color:var(--jdh-muted)}
.jdh-mat-price strong{color:var(--jdh-green-dark);font-weight:700;font-size:16px}
.jdh-mat-go{display:inline-flex;align-items:center;gap:7px;margin-top:12px;font-size:14px;font-weight:500;color:var(--jdh-green-deep)}
.jdh-mat:hover .jdh-mat-go .jdh-arr{transform:translateX(4px)}
.jdh-mat-tag{position:absolute;top:12px;left:12px;background:var(--jdh-accent);color:#fff;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 11px;border-radius:var(--jdh-r-pill);z-index:2}
@media (max-width:1080px){.jdh-mat-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){
  .jdh-mat-grid{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;padding:4px 20px 18px;margin:0 -20px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .jdh-mat-grid::-webkit-scrollbar{display:none}
  .jdh-mat{flex:0 0 72%;scroll-snap-align:start}
}

/* ============================================================
   Kleurstalen-teaser (Stap 5)
   ============================================================ */
.jdh-swatches{background:#fff;padding:var(--jdh-section-y) 0}
.jdh-sw-card{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);align-items:center;background:var(--jdh-sand);border:1px solid var(--jdh-border-light);border-radius:var(--jdh-r-lg);padding:clamp(28px,4.5vw,56px);overflow:hidden}
.jdh-sw-copy .jdh-badge-soft{display:inline-block;background:var(--jdh-green-light);color:var(--jdh-green-deep);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:7px 14px;border-radius:var(--jdh-r-pill);margin-bottom:16px}
.jdh-sw-copy h2{font-family:var(--jdh-serif);font-weight:600;font-size:clamp(28px,3.6vw,44px);line-height:1.12;color:var(--jdh-ink);margin:0 0 12px}
.jdh-sw-copy p{color:var(--jdh-muted);max-width:42ch;margin:0 0 22px}
.jdh-fan{position:relative;height:300px;display:flex;align-items:flex-end;justify-content:center}
.jdh-sw{position:absolute;bottom:8px;width:88px;height:122px;border-radius:10px;overflow:hidden;box-shadow:var(--jdh-sh-md);border:3px solid #fff;transform-origin:50% 130%;transform:rotate(0deg);transition:transform .8s cubic-bezier(.22,.61,.36,1),box-shadow .3s ease;will-change:transform}
.jdh-sw img{width:100%;height:100%;object-fit:cover}
.jdh-sw:hover{box-shadow:var(--jdh-sh-lg);z-index:9}
.jdh-fan.in .jdh-sw{transform:rotate(calc((var(--i) - 4)*11deg)) translateY(calc(max(var(--i) - 4, 4 - var(--i))*-2px))}
.jdh-fan.in .jdh-sw:hover{transform:rotate(calc((var(--i) - 4)*11deg)) translateY(-16px) scale(1.07)}
.jdh-fan-count{position:absolute;top:6px;right:0;background:#fff;border:1px solid var(--jdh-border);border-radius:var(--jdh-r-pill);padding:8px 16px;font-size:13px;font-weight:500;color:var(--jdh-text);box-shadow:var(--jdh-sh-xs);z-index:10}
.jdh-fan-count b{color:var(--jdh-green-dark)}
@media (max-width:880px){.jdh-sw-card{grid-template-columns:1fr}.jdh-fan{height:240px}.jdh-sw{width:72px;height:100px}}
@media (prefers-reduced-motion:reduce){.jdh-sw{transition:none}}

/* ============================================================
   Hoe het werkt — 4-staps tijdlijn (Stap 6)
   ============================================================ */
.jdh-steps{background:var(--jdh-cream);padding:var(--jdh-section-y) 0}
.jdh-tl{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;position:relative;list-style:none;padding:0;margin:0}
.jdh-tl::before{content:"";position:absolute;top:23px;left:11%;right:11%;height:2px;background:linear-gradient(90deg,var(--jdh-border),var(--jdh-green-light) 50%,var(--jdh-border))}
.jdh-step{text-align:center;position:relative;padding:0 8px}
.jdh-step .jdh-num{width:46px;height:46px;border-radius:50%;background:var(--jdh-green-dark);color:#fff;font-weight:700;font-size:17px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px;box-shadow:0 0 0 6px var(--jdh-cream),0 4px 12px -2px rgba(90,122,99,.5);position:relative;z-index:1}
.jdh-step h3{font-size:16.5px;font-weight:700;color:var(--jdh-ink);margin:0 0 5px}
.jdh-step p{font-size:14px;color:var(--jdh-muted);line-height:1.5;margin:0}
@media (max-width:760px){
  .jdh-tl{grid-template-columns:1fr;gap:0}
  .jdh-tl::before{top:8px;bottom:8px;left:22px;right:auto;width:2px;height:auto;background:linear-gradient(180deg,var(--jdh-border),var(--jdh-green-light) 50%,var(--jdh-border))}
  /* SAVE319: expliciete grid-plaatsing - num in kolom 1 (beide rijen), h3 + p
     beide in kolom 2 gestapeld. Voorheen viel <p> via auto-placement in de
     46px-kolom (rij 2, kolom 1) -> tekst brak 1 lettergreep per regel op mobiel. */
  .jdh-step{display:grid;grid-template-columns:46px 1fr;column-gap:16px;row-gap:0;text-align:left;padding:10px 0;align-items:start}
  .jdh-step .jdh-num{grid-column:1;grid-row:1 / span 2;margin:0}
  .jdh-step h3{grid-column:2;grid-row:1;margin:0 0 4px}
  .jdh-step p{grid-column:2;grid-row:2;margin:0}
}

/* ============================================================
   Video's (Stap 7) — poster-kaarten + lazy-load lightbox
   ============================================================ */
.jdh-vids{background:#fff;padding:var(--jdh-section-y) 0}
.jdh-vid-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.jdh-vid{position:relative;border-radius:var(--jdh-r-lg);overflow:hidden;box-shadow:var(--jdh-sh-md);aspect-ratio:16/9;display:block;background:var(--jdh-ink);cursor:pointer}
.jdh-vid img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.22,.61,.36,1)}
.jdh-vid:hover img{transform:scale(1.04)}
/* Echt frame = geen ingebakken tekst → scrim levert leesbaarheid: zachte radiaal achter de play-knop + onder-gradient voor de titel/sub. */
.jdh-vid-scrim{position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(circle at 50% 50%,rgba(0,0,0,.32) 0%,rgba(0,0,0,0) 30%),linear-gradient(to top,rgba(0,0,0,.80) 0%,rgba(0,0,0,.34) 24%,rgba(0,0,0,0) 52%);transition:opacity .35s ease}
.jdh-vid:hover .jdh-vid-scrim{opacity:.92}
.jdh-vid-play{position:absolute;inset:0;margin:auto;z-index:2;width:68px;height:68px;border-radius:50%;background:rgba(255,255,255,.94);display:flex;align-items:center;justify-content:center;box-shadow:var(--jdh-sh-lg);transition:transform .3s ease,background .3s ease}
.jdh-vid:hover .jdh-vid-play{transform:scale(1.08);background:#fff}
.jdh-vid-play svg{width:22px;height:22px;fill:var(--jdh-green-deep);margin-left:3px}
.jdh-vid-dur{position:absolute;top:14px;right:14px;z-index:3;background:rgba(23,23,23,.72);color:#fff;font-size:12px;font-weight:500;padding:5px 11px;border-radius:var(--jdh-r-pill);backdrop-filter:blur(2px)}
.jdh-vid-cap{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:clamp(15px,2.3vw,23px);pointer-events:none}
.jdh-vid-title{display:block;font-family:var(--jdh-serif);font-size:clamp(19px,2.1vw,23px);font-weight:600;color:#fff;line-height:1.2;text-shadow:0 1px 14px rgba(0,0,0,.45)}
.jdh-vid-sub{display:block;margin-top:3px;font-size:14px;color:rgba(255,255,255,.9);text-shadow:0 1px 10px rgba(0,0,0,.5)}
@media (max-width:760px){.jdh-vid-grid{grid-template-columns:1fr}}

/* Video-lightbox (lazy-load; z-index boven drawer 9999/scrim 9998) */
.jdh-vlightbox{position:fixed;inset:0;z-index:10050;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;padding:20px}
.jdh-vlightbox[hidden]{display:none}
.jdh-vlightbox-inner{width:min(960px,100%)}
.jdh-vlightbox video{width:100%;max-height:84vh;border-radius:var(--jdh-r);background:#000;display:block}
.jdh-vlightbox-close{position:absolute;top:18px;right:22px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;font-size:26px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}
.jdh-vlightbox-close:hover{background:rgba(255,255,255,.28)}

/* ============================================================
   Belofte / garantie (Stap 8) — eerlijke cards + reviews-ready
   ============================================================ */
.jdh-belofte{background:var(--jdh-cream);padding:var(--jdh-section-y) 0}
.jdh-belofte-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.jdh-belofte-card{background:#fff;border-radius:var(--jdh-r-lg);padding:clamp(26px,3vw,34px);box-shadow:var(--jdh-sh);transition:transform .35s cubic-bezier(.22,.61,.36,1),box-shadow .35s ease}
.jdh-belofte-card:hover{transform:translateY(-4px);box-shadow:var(--jdh-sh-md)}
.jdh-belofte-ic{display:inline-flex;width:52px;height:52px;border-radius:14px;background:var(--jdh-green-light);align-items:center;justify-content:center;margin-bottom:18px}
.jdh-belofte-ic svg{width:26px;height:26px;stroke:var(--jdh-green-deep)}
.jdh-belofte-card h3{font-family:var(--jdh-serif);font-size:20px;font-weight:600;color:var(--jdh-ink);margin:0 0 8px}
.jdh-belofte-card p{font-size:15px;color:var(--jdh-muted);line-height:1.6;margin:0}
@media (max-width:880px){.jdh-belofte-grid{grid-template-columns:1fr}}

/* Reviews-ready score-strip — rendert alleen met een echte bron (wp_option jd_home_reviews) */
.jdh-rev-score{display:flex;align-items:baseline;justify-content:center;gap:12px;flex-wrap:wrap;margin:0 0 clamp(28px,4vw,44px);text-align:center}
.jdh-rev-big{font-family:var(--jdh-serif);font-size:clamp(40px,5vw,56px);font-weight:600;color:var(--jdh-ink);line-height:1}
.jdh-rev-of{font-size:15px;color:var(--jdh-muted)}
.jdh-rev-meta{font-size:14px;color:var(--jdh-muted);width:100%}
.jdh-rev-meta a{color:var(--jdh-green-deep);text-decoration:underline}

/* ============================================================
   FAQ-accordion (Stap 9) — top 5 uit jd_faq_data(), link naar alle 22
   ============================================================ */
.jdh-faq{background:#fff;padding:var(--jdh-section-y) 0}
.jdh-faq-list{max-width:760px;margin:0 auto}
.jdh-qa{border-bottom:1px solid var(--jdh-border-light)}
.jdh-qa button{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;text-align:left;padding:22px 4px;font-size:17px;font-weight:500;color:var(--jdh-ink);transition:color var(--jdh-tx)}
.jdh-qa button:hover{color:var(--jdh-green-deep)}
.jdh-chev{flex:none;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--jdh-border);display:flex;align-items:center;justify-content:center;transition:transform .35s cubic-bezier(.22,.61,.36,1),background var(--jdh-tx),border-color var(--jdh-tx)}
.jdh-chev svg{width:14px;height:14px;stroke:var(--jdh-muted)}
.jdh-qa.open .jdh-chev{transform:rotate(180deg);background:var(--jdh-green-light);border-color:var(--jdh-green-light)}
.jdh-qa.open .jdh-chev svg{stroke:var(--jdh-green-deep)}
.jdh-ans{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.22,.61,.36,1)}
.jdh-ans-in{padding:0 4px 22px;color:var(--jdh-muted);max-width:64ch;line-height:1.6}
.jdh-ans-in a{color:var(--jdh-green-deep);text-decoration:underline}
.jdh-ans-in strong{color:var(--jdh-text);font-weight:700}
.jdh-faq-more{text-align:center;margin-top:30px}
.jdh-faq-more a{font-weight:500;color:var(--jdh-green-deep);border-bottom:1.5px solid var(--jdh-green-light);padding-bottom:2px;transition:border-color var(--jdh-tx)}
.jdh-faq-more a:hover{border-color:var(--jdh-green)}

/* ============================================================
   Final-CTA (Stap 10) — groen afsluitblok met lamellen-textuur
   ============================================================ */
.jdh-final{background:var(--jdh-green-deep);color:#fff;overflow:hidden;position:relative;padding:var(--jdh-section-y) 0}
.jdh-final::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(180deg,rgba(255,255,255,.045) 0 2px,transparent 2px 26px);pointer-events:none}
.jdh-final .jdh-wrap{position:relative;text-align:center}
.jdh-final .jdh-eyebrow{justify-content:center;color:rgba(255,255,255,.65)}
.jdh-final .jdh-eyebrow::after{display:none}
.jdh-final h2{font-family:var(--jdh-serif);font-weight:600;font-size:clamp(28px,3.6vw,44px);line-height:1.12;color:#fff;margin:14px 0 14px}
.jdh-final p{color:rgba(255,255,255,.78);max-width:46ch;margin:0 auto 30px}
.jdh-final-ctas{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.jdh-btn-white{background:#fff;color:var(--jdh-green-deep);padding:16px 32px;font-weight:700}
.jdh-btn-white:hover{transform:translateY(-2px);box-shadow:0 12px 30px -8px rgba(0,0,0,.35)}
.jdh-btn-ghost{border:1.5px solid rgba(255,255,255,.45);color:#fff;padding:15px 30px}
.jdh-btn-ghost:hover{border-color:#fff;transform:translateY(-2px)}

/* ===== Footer ===== */
.jdh-footer{background:var(--jdh-dark);color:#B9B5AD;font-size:14.5px}
.jdh-ft-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:36px;padding:64px 0 44px}
.jdh-ft-brand img{height:24px;width:auto;filter:brightness(0) invert(1);opacity:.92;margin-bottom:16px}
.jdh-ft-brand p{max-width:30ch;line-height:1.6;margin:0}
.jdh-ft h4{color:#fff;font-size:13px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 16px}
.jdh-ft ul{list-style:none;display:flex;flex-direction:column;gap:10px;margin:0;padding:0}
.jdh-ft a{transition:color var(--jdh-tx)}
.jdh-ft a:hover{color:#fff}
.jdh-ft-contact li{display:flex;gap:10px;align-items:center}
.jdh-ft-contact svg{width:15px;height:15px;stroke:var(--jdh-green);flex:none}
.jdh-ft-local{border-top:1px solid rgba(255,255,255,.09);padding:20px 0;text-align:center;font-size:13.5px;color:#8E8A82}
.jdh-ft-local b{color:#CFCBC3}
.jdh-ft-local a{color:#B9B5AD}
.jdh-ft-local a:hover{color:#fff}
.jdh-ft-bottom{border-top:1px solid rgba(255,255,255,.09);padding:20px 0 26px;display:flex;align-items:center;justify-content:space-between;gap:14px 22px;flex-wrap:wrap;font-size:13px;color:#8E8A82}
.jdh-ft-meta{display:flex;align-items:center;gap:8px 18px;flex-wrap:wrap}
.jdh-ft-legal-links a{color:#B9B5AD}
.jdh-ft-legal-links a:hover{color:#fff}
.jdh-pay{display:flex;gap:8px;flex-wrap:wrap}
.jdh-pay span{border:1px solid rgba(255,255,255,.18);border-radius:6px;padding:4px 10px;font-size:11.5px;font-weight:500;letter-spacing:.04em;color:#CFCBC3}
@media (max-width:880px){.jdh-ft-grid{grid-template-columns:1fr 1fr;padding:48px 0 32px}.jdh-ft-bottom{justify-content:center;text-align:center}.jdh-ft-meta{justify-content:center}}
@media (max-width:480px){.jdh-ft-grid{grid-template-columns:1fr}}
.jdh-cookie-link{cursor:pointer;color:#B9B5AD}
.jdh-cookie-link:hover{color:#fff}

/* ============================================================
   SAVE274 — plugin-elementen onderdrukken op de v12-home.
   Deze elementen worden via wp_footer buiten .jdh geïnjecteerd,
   dus gescopet op body.jdh-v12. !important is nodig: het zijn
   plugin-eigen styles (zelfde aanpak als overrides.css SAVE113/
   kleurstaal-public.css SAVE85). Beide alléén op de v12-home —
   product-/categoriepagina's (geen body.jdh-v12) blijven intact.
   ============================================================ */

/* Complianz floating "Beheer toestemming"-knop verbergen. Target de
   gegenereerde <button> + positie-classes; de footer-link
   <a class="cmplz-manage-consent jdh-cookie-link"> valt hier bewust BUITEN
   (geen <button>, geen manage-consent-N) en blijft consent-beheer bieden. */
body.jdh-v12 button.cmplz-manage-consent,
body.jdh-v12 .cmplz-manage-consent.manage-consent-1,
body.jdh-v12 .cmplz-manage-consent.manage-consent-2,
body.jdh-v12 .cmplz-manage-consent.manage-consent-3,
body.jdh-v12 .cmplz-manage-consent.manage-consent-4{display:none !important}

/* "Gratis kleurstalen"-pill (kleurstaal-plugin) — header heeft die CTA al +
   er komt een kleurstalen-sectie. Alleen op de v12-home verbergen. */
body.jdh-v12 .jd-ks-cta-pill{display:none !important}

/* ============================================================
   Sticky mobiel-CTA (Stap 11) — alleen mobiel (<=760px); home-v12.js
   togglet .show voorbij de hero en verbergt 'm weer bij de footer.
   z-index 70: boven de paginacontent, ruim onder de drawer-stack
   (scrim 9998 / drawer 9999) en de video-lightbox (10050). Linkt naar
   #materialen — geen cart/checkout-interactie.
   ============================================================ */
.jdh-mcta{position:fixed;left:12px;right:12px;bottom:12px;z-index:70;display:none;align-items:center;gap:14px;background:rgba(23,23,23,.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:#fff;border-radius:16px;padding:12px 12px 12px 20px;box-shadow:var(--jdh-sh-lg);transform:translateY(140%);visibility:hidden;transition:transform .45s cubic-bezier(.22,.61,.36,1),visibility .45s}
.jdh-mcta.show{transform:none;visibility:visible}
.jdh-mcta-txt{font-size:12.5px;color:#B9B5AD;line-height:1.3}
.jdh-mcta-txt strong{display:block;font-family:var(--jdh-serif);font-size:16px;font-weight:600;color:#fff}
.jdh-mcta-btn{margin-left:auto;flex:none;padding:12px 20px;font-size:14.5px}
@media (max-width:760px){.jdh-mcta{display:flex}}
@media (prefers-reduced-motion:reduce){.jdh-mcta{transition:none}}
