/* product-page.css — per-SKU product pages (scripts/build-product-pages.js).
   Loaded after styles.css; reuses its tokens (--gold, --green-deep, --cream…)
   so these pages inherit the sitewide light/dark theming. */

.pdp-preview-bar{margin-top:72px;padding:9px 20px;background:#8a5f20;color:#fff;font-size:12.5px;text-align:center}
.pdp-preview-bar code{background:rgba(0,0,0,.32);padding:1px 5px;border-radius:4px;font-size:11.5px}

/* ── Breadcrumb ─────────────────────────────────────────────────────────── */
.pdp-crumbs{background:var(--green-deep);padding:14px 0;margin-top:72px;font-size:12.5px;color:rgba(255,255,255,.62)}
.pdp-preview-bar+header+.srch-overlay~.pdp-crumbs,.pdp-preview-bar~main .pdp-crumbs{margin-top:0}
.pdp-crumbs .wrap{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.pdp-crumbs a{color:var(--gold-lt)}
.pdp-crumbs a:hover{text-decoration:underline}
.pdp-crumbs span[aria-current]{color:rgba(255,255,255,.78)}

/* ── Hero: gallery + buy box ────────────────────────────────────────────── */
.pdp-hero{padding:44px 0 52px;background:var(--cream)}
.pdp-hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:48px;align-items:start}
.pdp-hero-grid>*{min-width:0}
.pdp-gallery picture{min-width:0;max-width:100%}
/* position:relative anchors the .pz-open "Enlarge" button that
   js/product-zoom.js injects, exactly as .mic does in the category modal. */
.pdp-gallery{position:relative;background:var(--warm-white);border:1px solid var(--border);
  border-radius:var(--radius-lg);padding:28px;display:flex;align-items:center;
  justify-content:center;min-height:360px}
.pdp-img{max-width:100%;height:auto;max-height:420px;object-fit:contain}
.pdp-buy .label-tag{margin-bottom:10px}
.pdp-buy .label-tag a{color:inherit}
.pdp-buy .label-tag a:hover{text-decoration:underline}
.pdp-buy h1{font-size:clamp(1.7rem,3.2vw,2.5rem);color:var(--text-dk);margin-bottom:8px}
.pdp-sku{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-lt);margin-bottom:16px}
.pdp-sku b{color:var(--gold-dk);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:0}
.pdp-desc{font-size:.98rem;line-height:1.72;color:var(--text-md);margin-bottom:22px}

.pdp-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:1px;margin-bottom:24px;
  background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
/* Each tile is a flex column and the value is pushed to the bottom, so the
   figures sit on one line across the row even when a label wraps to two
   ("Layers per Pallet" against "Pallet Qty"). Grid already stretches the
   tiles to equal height, so bottom-aligning the values lines them up. */
.pdp-facts>div{background:var(--warm-white);padding:13px 15px;display:flex;flex-direction:column}
.pdp-facts dt{font-size:10px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-lt);margin-bottom:4px;line-height:1.35}
.pdp-facts dd{font-size:1.02rem;font-weight:700;color:var(--text-dk);margin-top:auto;line-height:1.2}

.pdp-cta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.pdp-tel{font-size:13px;color:var(--text-lt)}
.pdp-tel:hover{color:var(--gold-dk);text-decoration:underline}
.pdp-origin{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;letter-spacing:.04em;color:#47653f;margin-bottom:6px}
.pdp-origin::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.pdp-price{font-size:12.5px;color:var(--text-lt);font-style:italic}

/* ── Bands ──────────────────────────────────────────────────────────────── */
.pdp-band{padding:52px 0;background:var(--warm-white);border-top:1px solid var(--border)}
.pdp-band-alt{background:var(--cream)}
.pdp-h2{font-size:clamp(1.3rem,2.4vw,1.75rem);color:var(--text-dk);margin-bottom:8px}
.pdp-sub{font-size:.9rem;color:var(--text-lt);line-height:1.7;margin-bottom:22px;max-width:640px}
.pdp-sub a{color:var(--gold-dk);font-weight:600}
.pdp-sub a:hover{text-decoration:underline}

/* ── Pack-size ladder / related products ────────────────────────────────── */
.pdp-mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:16px}
.pdp-mini{display:flex;flex-direction:column;background:var(--warm-white);border:1px solid var(--border);
  border-radius:var(--radius);padding:14px;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s}
.pdp-band-alt .pdp-mini{background:var(--warm-white)}
.pdp-mini:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:rgba(200,150,62,.35)}
.pdp-mini-img{width:100%;height:112px;object-fit:contain;margin-bottom:11px}
.pdp-mini-name{font-size:13px;font-weight:600;color:var(--text-dk);line-height:1.4;margin-bottom:4px}
.pdp-mini-pack{font-size:11.5px;color:var(--text-lt)}

/* ── Specification list ─────────────────────────────────────────────────── */
.pdp-spec{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;max-width:720px}
.pdp-spec-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,1.4fr);gap:16px;
  padding:11px 16px;background:var(--warm-white);border-bottom:1px solid var(--border)}
.pdp-spec-row:last-child{border-bottom:0}
.pdp-spec-row:nth-child(even){background:var(--cream-dk)}
.pdp-spec dt{font-size:12.5px;font-weight:700;color:var(--text-md)}
.pdp-spec dd{font-size:13px;color:var(--text-dk)}
.pdp-todo{display:inline-block;padding:2px 9px;border-radius:100px;font-size:10.5px;font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;color:#7a4f12;background:rgba(200,150,62,.16);
  border:1px dashed rgba(138,95,32,.55)}
.pdp-note{margin-top:18px;padding:13px 16px;border-left:3px solid var(--gold);background:rgba(200,150,62,.08);
  border-radius:0 var(--radius) var(--radius) 0;font-size:12.5px;line-height:1.7;color:var(--text-md);max-width:720px}
.pdp-note code{background:rgba(0,0,0,.06);padding:1px 5px;border-radius:4px;font-size:11.5px}

/* ── Documentation ──────────────────────────────────────────────────────── */
.pdp-docs{display:grid;grid-template-columns:repeat(auto-fit,minmax(196px,1fr));gap:14px;margin-bottom:22px}
.pdp-doc{background:var(--warm-white);border:1px solid var(--border);border-radius:var(--radius);padding:15px 17px}
.pdp-doc b{display:block;font-size:13px;color:var(--text-dk);margin-bottom:3px}
.pdp-doc span{font-size:11.5px;color:var(--text-lt)}

/* ── Responsive ─────────────────────────────────────────────────────────── */
@media(max-width:900px){
  .pdp-hero-grid{grid-template-columns:1fr;gap:28px}
  .pdp-gallery{min-height:0;padding:20px}
  .pdp-img{max-height:300px}
}
@media(max-width:600px){
  .pdp-hero{padding:28px 0 36px}
  .pdp-band{padding:38px 0}
  .pdp-cta{flex-direction:column;align-items:stretch}
  .pdp-cta .btn{width:100%;justify-content:center}
  .pdp-tel{text-align:center}
  .pdp-spec-row{grid-template-columns:1fr;gap:3px}
  .pdp-mini-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
}

/* ── Dark theme (mirrors the styles.css scheme) ─────────────────────────── */
@media(prefers-color-scheme:dark){
  .pdp-hero{background:#0e1911}
  .pdp-band{background:#132118;border-top-color:rgba(255,255,255,.08)}
  .pdp-band-alt{background:#0e1911}
  .pdp-gallery,.pdp-facts>div,.pdp-mini,.pdp-band-alt .pdp-mini,.pdp-doc,.pdp-spec-row{background:var(--warm-white)}
  .pdp-spec-row:nth-child(even){background:#17291c}
  .pdp-facts{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.10)}
  .pdp-todo{color:var(--gold-lt);background:rgba(200,150,62,.14);border-color:rgba(230,185,106,.5)}
  .pdp-note{background:rgba(200,150,62,.10)}
  .pdp-note code{background:rgba(255,255,255,.10)}
  .pdp-sub a,.pdp-sku b{color:var(--gold-lt)}
  .pdp-origin{color:#8fc98a}
}

/* ── Closing CTA band ───────────────────────────────────────────────────────
   .cat-cta / .btn-wht are declared in each category page's inline <style>,
   not in styles.css, so generated pages need their own copy. Values match the
   category-page originals so the two read as one band. */
.cat-cta{background:linear-gradient(135deg,var(--green-dark),var(--green-mid));padding:56px 0;text-align:center}
.cat-cta h2{font-family:'Playfair Display',serif;font-size:clamp(1.6rem,3vw,2.2rem);color:#fff;margin-bottom:12px}
.cat-cta p{color:rgba(255,255,255,.68);font-size:.92rem;margin:0 auto 28px;max-width:480px;line-height:1.65}
.cat-cta-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.cat-cta-btns .btn-wht{display:inline-flex;align-items:center;gap:6px;padding:12px 24px;
  border:1.5px solid rgba(255,255,255,.4);border-radius:8px;color:#fff;font-size:13px;font-weight:600;
  text-decoration:none;transition:background-color .18s,border-color .18s}
.cat-cta-btns .btn-wht:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.7)}
@media(max-width:600px){.cat-cta-btns{flex-direction:column}.cat-cta-btns a{width:100%;justify-content:center}}

/* ── Family mode: the pack-size table ───────────────────────────────────── */
/* position:relative matters: the header's .sr-only span is absolutely
   positioned, and without a positioned ancestor it escapes this scroll
   container and widens the whole page on narrow screens. */
.fam-table-wrap{position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;
  border:1px solid var(--border);border-radius:var(--radius);background:var(--warm-white)}
.fam-table-wrap:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.fam-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:620px}
.fam-table thead th{background:var(--green-deep);color:#fff;text-align:left;padding:11px 16px;
  font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap}
.fam-table td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:top;color:var(--text-md)}
.fam-table tr:last-child td{border-bottom:0}
.fam-table tbody tr:nth-child(even) td{background:var(--cream-dk)}
.fam-table tbody tr:target td{background:rgba(200,150,62,.16)}
.fam-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:var(--gold-dk);white-space:nowrap}
.fam-table td b{display:block;color:var(--text-dk);font-size:14px;margin-bottom:3px}
.fam-note{display:block;font-size:12px;color:var(--text-lt);line-height:1.6;max-width:42ch}
.fam-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--text-dk);font-weight:600}
.fam-act{white-space:nowrap;text-align:right}
.fam-btn{display:inline-flex;align-items:center;padding:7px 14px;border-radius:7px;font-size:12px;
  font-weight:700;background:var(--green-deep);color:#fff;transition:background-color .15s}
.fam-btn:hover{background:var(--green-mid)}
.fam-btn-alt{margin-left:6px;background:transparent;color:var(--gold-dk);border:1.5px solid var(--gold);padding:5.5px 12.5px}
.fam-btn-alt:hover{background:var(--gold-dk);color:#fff;border-color:var(--gold-dk)}
@media(max-width:600px){
  .fam-table{font-size:13px}
  .fam-table td,.fam-table thead th{padding:11px 13px}
  .fam-act{text-align:left}
  .fam-btn-alt{margin-left:5px}
}
@media(prefers-color-scheme:dark){
  .fam-table-wrap{background:var(--warm-white);border-color:rgba(255,255,255,.10)}
  .fam-table tbody tr:nth-child(even) td{background:#17291c}
  .fam-table td{border-bottom-color:rgba(255,255,255,.08)}
  .fam-code,.fam-btn-alt{color:var(--gold-lt)}
  .fam-btn-alt{border-color:var(--gold-lt)}
  .fam-btn-alt:hover{background:var(--gold-dk);color:#fff;border-color:var(--gold-dk)}
}

/* ── Lightbox layering ──────────────────────────────────────────────────────
   styles.css puts .pz-ov at z-index 9500, but the Olivia chat widget sits at
   9989/9990 — so the chat bubble floats over the enlarged product image.
   Scoped here to the generated product pages; 9995 clears the widget and still
   sits under the cookie banner (9999). The same one-liner in styles.css would
   fix the category-page modal lightbox, which has the identical problem. */
.pz-ov{z-index:9995}

/* ══ Enquiry list (js/enquiry-basket.js) ═══════════════════════════════════
   Launcher sits bottom-LEFT: the Olivia chat widget owns bottom-right.
   Panel at 9993 clears the chat widget (9990), stays under the image
   lightbox (9995) and the cookie banner (9999). */
.eb-launch{position:fixed;left:20px;bottom:20px;z-index:9200;display:inline-flex;align-items:center;gap:9px;
  padding:11px 17px;border-radius:100px;background:var(--green-deep);color:#fff;font-size:13px;font-weight:700;
  box-shadow:0 6px 24px rgba(0,0,0,.28);cursor:pointer;border:1.5px solid rgba(255,255,255,.14)}
.eb-launch:hover{background:var(--green-mid)}
.eb-launch:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.eb-launch-ic{font-size:15px;line-height:1}
.eb-count{display:inline-flex;align-items:center;justify-content:center;min-width:21px;height:21px;padding:0 6px;
  border-radius:100px;background:rgba(255,255,255,.18);font-size:11.5px;font-weight:700}
.eb-launch.eb-has .eb-count{background:var(--gold);color:#241705}

.eb-backdrop{position:fixed;inset:0;z-index:9992;background:rgba(0,0,0,.45);opacity:0;transition:opacity .18s}
.eb-backdrop.eb-on{opacity:1}
/* [hidden] is only display:none in the UA stylesheet — any display here beats
   it, which would leave the closed panel off-screen but still tabbable and
   still read by screen readers. Restate it for every element we toggle. */
.eb-panel[hidden],.eb-backdrop[hidden],#enq-form-wrap[hidden],#enq-empty[hidden],
#enq-success[hidden],.enq-table-wrap[hidden]{display:none !important}
.eb-panel{position:fixed;top:0;right:0;bottom:0;z-index:9993;width:min(420px,100%);display:flex;flex-direction:column;
  background:var(--warm-white);border-left:1px solid var(--border);box-shadow:-12px 0 48px rgba(0,0,0,.22);
  transform:translateX(100%);transition:transform .2s var(--ease)}
.eb-panel.eb-on{transform:none}
.eb-hd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;
  border-bottom:1px solid var(--border)}
.eb-hd h2{font-size:1.15rem;color:var(--text-dk)}
.eb-x{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--border);background:transparent;
  color:var(--text-lt);font-size:15px;line-height:1;cursor:pointer;flex-shrink:0}
.eb-x:hover{background:var(--green-deep);color:#fff;border-color:var(--green-deep)}
.eb-body{flex:1;overflow-y:auto;padding:8px 20px}
.eb-list{list-style:none;margin:0;padding:0}
.eb-empty{padding:28px 4px;color:var(--text-lt);font-size:13.5px;line-height:1.7}
.eb-item{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--border)}
.eb-item:last-child{border-bottom:0}
.eb-thumb{width:52px;height:52px;flex-shrink:0;object-fit:contain;background:var(--cream);border-radius:8px}
.eb-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.eb-name{font-size:13.5px;font-weight:600;color:var(--text-dk);line-height:1.4}
.eb-meta{font-size:11.5px;color:var(--text-lt)}
.eb-qty{display:flex;align-items:center;gap:8px;margin-top:6px}
.eb-qty span{font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-lt)}
.eb-qty input{flex:1;min-width:0;padding:6px 9px;border:1.5px solid rgba(0,0,0,.12);border-radius:7px;
  font-size:12.5px;background:var(--warm-white);color:var(--text-dk)}
.eb-qty input:focus{border-color:var(--gold);outline:none}
.eb-rm{width:28px;height:28px;flex-shrink:0;border-radius:50%;border:0;background:transparent;color:var(--text-lt);
  font-size:13px;cursor:pointer;line-height:1}
.eb-rm:hover{background:rgba(0,0,0,.07);color:var(--text-dk)}
.eb-ft{padding:16px 20px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:10px}
.eb-ft .eb-send{justify-content:center}
.eb-send.eb-disabled{opacity:.45;pointer-events:none}
.eb-clear{align-self:flex-start;background:0;border:0;padding:0;color:var(--text-lt);font-size:12px;
  text-decoration:underline;cursor:pointer}
.eb-clear:hover{color:var(--text-dk)}
.eb-note{font-size:11.5px;color:var(--text-lt);line-height:1.6}

/* The add button in the product-page CTA row. */
/* Now the only call to action in the buy box, so it carries the primary
   treatment the "Enquire about this product" button used to have. */
.pdp-cta .eb-add{display:inline-flex;align-items:center;gap:7px;padding:13px 26px;border-radius:var(--radius);
  font-size:.9rem;font-weight:600;letter-spacing:.01em;border:2px solid transparent;
  background:linear-gradient(135deg,#946826 0,#7d5619 100%);color:#fff;cursor:pointer;
  box-shadow:0 4px 16px rgba(200,150,62,.38);
  transition:transform .22s var(--ease),box-shadow .22s var(--ease),background-color .22s var(--ease)}
.pdp-cta .eb-add:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(200,150,62,.5)}
.pdp-cta .eb-add.eb-in{background:var(--green-deep);border-color:var(--green-deep);color:#fff;
  box-shadow:0 4px 16px rgba(13,28,16,.28)}
.pdp-cta .eb-add.eb-in:hover{background:var(--green-mid);box-shadow:0 8px 28px rgba(13,28,16,.34)}

@media(max-width:600px){
  .eb-launch{left:14px;bottom:14px;padding:10px 15px;font-size:12.5px}
  .eb-panel{width:100%}
  .pdp-cta .eb-add{width:100%;justify-content:center}
}
@media(prefers-color-scheme:dark){
  .eb-panel{background:#132118;border-left-color:rgba(255,255,255,.10)}
  .eb-hd,.eb-item,.eb-ft{border-color:rgba(255,255,255,.10)}
  .eb-thumb{background:#0e1911}
  .eb-qty input{background:var(--warm-white);border-color:rgba(255,255,255,.16)}
  .eb-x{border-color:rgba(255,255,255,.16)}
  .pdp-cta .eb-add.eb-in{background:#1b3520;border-color:#1b3520;color:#dbecd5}
}

/* ── Enquiry page ──────────────────────────────────────────────────────── */
.enq-table-wrap{position:relative;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);
  background:var(--warm-white);margin-bottom:26px}
.enq-table{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
.enq-table thead th{background:var(--green-deep);color:#fff;text-align:left;padding:11px 16px;font-size:10.5px;
  font-weight:700;letter-spacing:.09em;text-transform:uppercase;white-space:nowrap}
.enq-table td{padding:13px 16px;border-bottom:1px solid var(--border);vertical-align:middle;color:var(--text-md)}
.enq-table tr:last-child td{border-bottom:0}
.enq-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:700;color:var(--gold-dk);white-space:nowrap}
.enq-table td b{display:block;color:var(--text-dk);font-size:14px}
.enq-pack{display:block;font-size:11.5px;color:var(--text-lt);margin-top:2px}
.enq-qty{width:100%;max-width:180px;padding:8px 10px;border:1.5px solid rgba(0,0,0,.12);border-radius:8px;
  font-size:12.5px;background:var(--warm-white);color:var(--text-dk)}
.enq-qty:focus{border-color:var(--gold);outline:none}
.enq-act{text-align:right}
.enq-rm{width:30px;height:30px;border-radius:50%;border:0;background:transparent;color:var(--text-lt);
  font-size:13px;cursor:pointer}
.enq-rm:hover{background:rgba(0,0,0,.07);color:var(--text-dk)}
.enq-form{max-width:760px}
.enq-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px}
.enq-msg{margin-bottom:20px}
.form-section-title{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  color:var(--text-lt);margin-bottom:12px}
.enq-form .field{display:flex;flex-direction:column;gap:5px}
.enq-form label{font-size:12px;font-weight:700;color:var(--text-dk);text-transform:uppercase;letter-spacing:.06em}
.enq-form .req{color:var(--gold)}
@media(max-width:600px){.enq-grid{grid-template-columns:1fr}}
@media(prefers-color-scheme:dark){
  .enq-table-wrap{background:var(--warm-white);border-color:rgba(255,255,255,.10)}
  .enq-table td{border-bottom-color:rgba(255,255,255,.08)}
  .enq-code{color:var(--gold-lt)}
  .enq-qty{background:var(--warm-white);border-color:rgba(255,255,255,.16)}
}
