/**
 * Product page — prototype gb-new-elements.css §12 (L761–1119) + shared drawer shell (§6 L319–371).
 * Values unchanged, scoped to .gb-root. Blocksy integration at the end.
 * Markup: custom/woocommerce/single-product.php + custom/js/pdp.js. Tier C (is_product).
 */

/* --- 6. Mini-cart drawer (dark) ------------------------------------------
   Layout follows the approved pattern. The palette is the header's:
   --gb-dark ground, --gb-dark-2 surfaces, --gb-on-dark text, brand gold as
   the only accent, Playfair for the title. No new colour or font.         */
.gb-root .gb-drawer { position: fixed; inset: 0; z-index: 60; }
.gb-root .gb-drawer__scrim {
  position: absolute; inset: 0; background: rgba(12,10,9,0.62);
  opacity: 0; transition: opacity .24s cubic-bezier(.4,0,.2,1);
}
.gb-root .gb-drawer.is-open .gb-drawer__scrim { opacity: 1; }

.gb-root .gb-drawer__panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(440px, 100%);
  display: flex; flex-direction: column;
  background: var(--gb-dark); color: var(--gb-on-dark);
  border-left: 1px solid rgba(255,255,255,0.10);
  box-shadow: var(--gb-shadow-2);
  transform: translateX(100%);
  transition: transform .24s cubic-bezier(.4,0,.2,1);
}
.gb-root .gb-drawer.is-open .gb-drawer__panel { transform: translateX(0); }

/* --- title bar --- */
.gb-root .gb-drawer__head {
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 16px var(--gb-gutter);
  border-bottom: 1px solid rgba(255,255,255,0.12);
}
.gb-root .gb-drawer__title {
  display: inline-flex; align-items: center; gap: 10px; margin: 0;
  font-family: var(--gb-font-display); font-size: var(--gb-fs-20); font-weight: 600;
  color: #fff; letter-spacing: .01em;
}
.gb-root .gb-drawer__title .gb-icon { color: var(--gb-gold); }
.gb-root .gb-drawer__count { color: var(--gb-on-dark-muted); font-family: var(--gb-font-body); font-size: var(--gb-fs-16); font-weight: 700; }
.gb-root .gb-drawer__close {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; padding: 0; flex: 0 0 auto;
  background: transparent; border: 0; color: var(--gb-on-dark);
  border-radius: var(--gb-r-sm); cursor: pointer;
}
.gb-root .gb-drawer__close:hover { background: rgba(255,255,255,0.10); color: #fff; }

/* --- scroll area + sticky foot --- */
.gb-root .gb-drawer__inner { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.gb-root .gb-drawer__body { flex: 1 1 auto; overflow-y: auto; padding: 16px var(--gb-gutter) 8px; }
.gb-root .gb-drawer__foot {
  flex: 0 0 auto; padding: 14px var(--gb-gutter) 18px;
  background: var(--gb-dark-2); border-top: 1px solid rgba(255,255,255,0.12);
}


/* --- 12. Product page (PDP) rebuild ----------------------------------------
   Layout and hierarchy per the approved concept (claude.ai/artifact/
   B7S4LrjxXKwcskrTWYjsff). Mobile first; breakpoints 421 / 521 / 561 / 901.
   Existing tokens only. Montserrat 400/600/700 and Playfair 600/700, the
   weights the site already loads. */

/* page frame */
.gb-root .gb-pdp { padding-block: 22px 0; }
.gb-root .gb-pdp__crumbs { margin-bottom: 18px; }
.gb-root .gb-pdp__crumbs a { color: var(--gb-muted); }
.gb-root .gb-pdp__crumbs [aria-current] { color: var(--gb-ink); font-weight: 600; }
.gb-root .gb-pdp__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; align-items: start; }

/* gallery */
.gb-root .gb-pdp__hero {
  position: relative; display: block; overflow: hidden; border-radius: var(--gb-r-lg);
  background: var(--gb-surface-2); aspect-ratio: 720 / 629; box-shadow: var(--gb-shadow-1);
  --gb-zx: 50%; --gb-zy: 50%;
}
.gb-root .gb-pdp__hero-img { display: block; width: 100%; height: 100%; object-fit: cover; transform-origin: var(--gb-zx) var(--gb-zy); transition: transform .25s ease; }
.gb-root .gb-pdp__hero.is-zooming .gb-pdp__hero-img { transform: scale(2); }
.gb-root .gb-pdp__hero.is-zooming { cursor: zoom-in; }
.gb-root .gb-pdp__hero:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 3px; }
.gb-root .gb-pdp__zoomhint {
  position: absolute; right: 14px; bottom: 14px; display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; border-radius: var(--gb-r-sm); background: var(--gb-surface); color: var(--gb-ink);
  font-size: var(--gb-fs-12); font-weight: 600; box-shadow: var(--gb-shadow-1); pointer-events: none;
}
.gb-root .gb-pdp__zoomhint .gb-icon { width: 14px; height: 14px; }
.gb-root .gb-pdp-flag {
  position: absolute; top: 14px; left: 14px; z-index: 1;
  display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: var(--gb-r-sm);
  background: var(--gb-dark); color: var(--gb-on-dark); font-size: var(--gb-fs-12); font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
}
.gb-root .gb-pdp-flag::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--gb-gold); }
.gb-root .gb-pdp__thumbs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.gb-root .gb-pdp__thumb { appearance: none; padding: 0; border: 2px solid transparent; border-radius: var(--gb-r-md); overflow: hidden; background: var(--gb-surface-2); aspect-ratio: 4 / 3; cursor: pointer; }
.gb-root .gb-pdp__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gb-root .gb-pdp__thumb.is-active { border-color: var(--gb-gold-deep); }
.gb-root .gb-pdp__thumb:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }

/* lightbox (built by JS; pinch zoom is the browser's own on touch screens) */
.gb-pdp-lightbox { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; padding: 0; border: 0; background: var(--gb-dark); overflow: auto; touch-action: pinch-zoom pan-x pan-y; }
.gb-pdp-lightbox::backdrop { background: var(--gb-dark); }
.gb-pdp-lightbox img { display: block; width: 100%; height: auto; min-height: 100%; object-fit: contain; }
.gb-pdp-lightbox__close {
  position: fixed; top: max(12px, env(safe-area-inset-top)); right: 12px; z-index: 2;
  width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--gb-surface); color: var(--gb-ink);
  display: grid; place-items: center; cursor: pointer; box-shadow: var(--gb-shadow-2);
}
.gb-pdp-lightbox__close:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }

/* summary */
.gb-root .gb-pdp__summary .gb-eyebrow { margin: 0 0 10px; }
.gb-root .gb-pdp__title { margin: 0; font-family: var(--gb-font-display); font-weight: 700; font-size: clamp(30px, 4vw, 46px); line-height: 1.12; letter-spacing: -.01em; color: var(--gb-ink); overflow-wrap: anywhere; }
.gb-root .gb-pdp__price { margin: 16px 0 0; display: flex; align-items: baseline; flex-wrap: wrap; gap: 10px; font-family: var(--gb-font-display); font-weight: 700; font-size: 34px; line-height: 1.1; color: var(--gb-ink); }
.gb-root .gb-pdp__price small { font-family: var(--gb-font-body); font-weight: 400; font-size: var(--gb-fs-14); color: var(--gb-muted); }
.gb-root .gb-pdp__desc { margin: 16px 0 0; max-width: 60ch; color: var(--gb-ink-2); font-size: var(--gb-fs-15); }

/* "What's inside" link (the full table is in the details section) */
.gb-root .gb-pdp__inside { margin: 16px 0 0; }
.gb-root .gb-pdp__inside a {
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px;
  padding: 12px 16px; border: 1px solid var(--gb-line); border-radius: var(--gb-r-md); background: var(--gb-surface);
  color: var(--gb-ink); font-size: var(--gb-fs-15); font-weight: 600; text-decoration: none;
}
.gb-root .gb-pdp__inside a:hover { border-color: var(--gb-line-strong); }
.gb-root .gb-pdp__inside a:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp__inside-cta { font-size: var(--gb-fs-13); color: var(--gb-gold-ink); text-decoration: underline; text-underline-offset: 2px; }

/* buy box */
.gb-root .gb-pdp-buy { margin-top: 18px; padding: 20px 18px 18px; border: 1px solid var(--gb-line); border-radius: var(--gb-r-lg); background: var(--gb-surface); }
.gb-root .gb-pdp-label { display: block; margin: 0 0 10px; padding: 0; font-family: var(--gb-font-body); font-size: var(--gb-fs-14); font-weight: 600; color: var(--gb-ink); }

/* gift cards */
.gb-root .gb-pdp-cards__set { margin: 0; padding: 0; border: 0; min-width: 0; }
.gb-root .gb-pdp-cards__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 8px; }
.gb-root .gb-pdp-card { position: relative; display: block; min-width: 0; cursor: pointer; text-decoration: none; color: inherit; }
.gb-root .gb-pdp-card__input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.gb-root .gb-pdp-card__art {
  position: relative; display: grid; place-items: center; aspect-ratio: 1; padding: 6px; overflow: hidden;
  border: 2px solid var(--gb-line); border-radius: var(--gb-r-sm); background: var(--gb-surface-2);
  text-align: center; transition: border-color .15s, background .15s;
}
.gb-root .gb-pdp-card__art.has-img { padding: 0; }
.gb-root .gb-pdp-card__art img { width: 100%; height: 100%; object-fit: cover; }
.gb-root .gb-pdp-card__art.has-img .gb-pdp-card__name { position: absolute; inset: auto 0 0; padding: 3px; background: var(--gb-surface); font-family: var(--gb-font-body); font-size: var(--gb-fs-12); }
.gb-root .gb-pdp-card__name { font-family: var(--gb-font-display); font-weight: 600; font-size: 13px; line-height: 1.15; color: var(--gb-ink); overflow-wrap: anywhere; }
.gb-root .gb-pdp-card:hover .gb-pdp-card__art { border-color: var(--gb-line-strong); }
.gb-root .gb-pdp-card__input:checked + .gb-pdp-card__art { border-color: var(--gb-gold-deep); background: var(--gb-gold-mist); }
.gb-root .gb-pdp-card__input:checked + .gb-pdp-card__art::after {
  content: ""; position: absolute; top: 4px; right: 4px; width: 18px; height: 18px; border-radius: 50%;
  background: var(--gb-gold-deep) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.2 4.2L19 7'/%3E%3C/svg%3E") center / 12px no-repeat;
}
.gb-root .gb-pdp-card__input:focus-visible + .gb-pdp-card__art { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-cards__hint { margin: 8px 0 0; font-size: var(--gb-fs-13); color: var(--gb-muted); }
.gb-root .gb-pdp-cards__hint b { color: var(--gb-ink); font-weight: 600; }
.gb-root .gb-pdp-linkbtn { appearance: none; padding: 0; border: 0; background: none; font: inherit; font-weight: 600; color: var(--gb-gold-ink); text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.gb-root .gb-pdp-linkbtn:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }

/* extras */
/* accordions: gift card and extras (native <details>) */
.gb-root .gb-pdp-acc { border: 1.5px solid var(--gb-line-strong); border-radius: var(--gb-r-md); background: var(--gb-surface); }
.gb-root .gb-pdp-acc + .gb-pdp-acc { margin-top: 10px; }
.gb-root .gb-pdp-acc[open] { border-color: var(--gb-gold-deep); }
.gb-root .gb-pdp-acc__summary {
  display: grid; grid-template-columns: minmax(0, 1fr) auto 14px; align-items: center; gap: 12px;
  padding: 14px 16px; list-style: none; cursor: pointer; border-radius: var(--gb-r-md);
}
.gb-root .gb-pdp-acc__summary::-webkit-details-marker { display: none; }
.gb-root .gb-pdp-acc__summary::after {
  content: ""; width: 8px; height: 8px; margin-top: -4px; justify-self: center;
  border-right: 2px solid var(--gb-ink-2); border-bottom: 2px solid var(--gb-ink-2); transform: rotate(45deg); transition: transform .15s;
}
.gb-root .gb-pdp-acc[open] > .gb-pdp-acc__summary::after { transform: rotate(-135deg); margin-top: 4px; }
.gb-root .gb-pdp-acc__summary:hover { background: var(--gb-gold-mist); }
.gb-root .gb-pdp-acc__summary:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-acc__title { display: grid; gap: 2px; min-width: 0; font-size: var(--gb-fs-15); font-weight: 600; color: var(--gb-ink); line-height: 1.3; }
.gb-root .gb-pdp-acc__title small { font-size: var(--gb-fs-13); font-weight: 400; color: var(--gb-muted); }
.gb-root .gb-pdp-acc__state { max-width: 14em; text-align: right; font-size: var(--gb-fs-12); font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--gb-muted); line-height: 1.3; }
.gb-root .gb-pdp-acc__state.is-set { color: var(--gb-gold-ink); }
.gb-root .gb-pdp-acc__body { padding: 0 16px 16px; }
.gb-root .gb-pdp-extras__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.gb-root .gb-pdp-extra {
  position: relative; display: flex; flex-direction: column; min-width: 0; overflow: hidden;
  border: 1px solid var(--gb-line); border-radius: var(--gb-r-md); background: var(--gb-surface);
}
.gb-root .gb-pdp-extra.is-on { border-color: var(--gb-gold-deep); box-shadow: inset 0 0 0 1px var(--gb-gold-deep); }
.gb-root .gb-pdp-extra__img { display: block; aspect-ratio: 4 / 3; background: var(--gb-surface-2); }
.gb-root .gb-pdp-extra__img img { display: block; width: 100%; height: 100%; object-fit: contain; background: var(--gb-dark); }
.gb-root .gb-pdp-extra__body { display: flex; flex: 1; flex-direction: column; gap: 2px; padding: 9px 10px 10px; }
.gb-root .gb-pdp-extra__name { margin: 0; font-family: var(--gb-font-body); font-size: var(--gb-fs-13); font-weight: 600; line-height: 1.3; color: var(--gb-ink); overflow-wrap: anywhere; }
.gb-root .gb-pdp-extra__desc { margin: 0; font-size: var(--gb-fs-12); line-height: 1.35; color: var(--gb-muted); }
.gb-root .gb-pdp-extra__foot { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; margin-top: auto; padding-top: 8px; }
.gb-root .gb-pdp-extra__foot b { font-size: var(--gb-fs-13); font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-extra__ctl { display: inline-flex; align-items: center; }
.gb-root .gb-pdp-extra__input { width: 64px; min-height: 32px; padding: 0 6px; border: 1px solid var(--gb-line-strong); border-radius: var(--gb-r-sm); font: inherit; font-size: var(--gb-fs-13); text-align: center; background: var(--gb-surface); color: var(--gb-ink); }
.gb-root .gb-pdp-extra__add { min-height: 32px; padding: 0 12px; border: 1px solid var(--gb-gold-deep); border-radius: var(--gb-r-sm); background: var(--gb-surface); color: var(--gb-gold-ink); font: inherit; font-size: var(--gb-fs-13); font-weight: 600; cursor: pointer; }
.gb-root .gb-pdp-extra__add:hover { background: var(--gb-gold-mist); }
.gb-root .gb-pdp-extra__step { display: inline-flex; align-items: center; height: 32px; border: 1px solid var(--gb-gold-deep); border-radius: var(--gb-r-sm); overflow: hidden; }
.gb-root .gb-pdp-extra__step[hidden], .gb-root .gb-pdp-extra__add[hidden] { display: none; }
.gb-root .gb-pdp-extra__step button { width: 30px; height: 100%; border: 0; background: var(--gb-gold-mist); color: var(--gb-gold-ink); font: inherit; font-size: 16px; font-weight: 600; cursor: pointer; }
.gb-root .gb-pdp-extra__step output { min-width: 26px; text-align: center; font-size: var(--gb-fs-13); font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-extra__add:focus-visible, .gb-root .gb-pdp-extra__step button:focus-visible, .gb-root .gb-pdp-extra__input:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
/* enhanced: the number input stays in the form but the Add / stepper drive it */
.gb-root .is-pdp-enhanced .gb-pdp-extra__input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.gb-root .gb-pdp-extra--all {
  grid-column: 1 / -1; flex-direction: row; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 14px; border-style: dashed; border-color: var(--gb-line-strong); background: var(--gb-gold-mist);
  color: var(--gb-gold-ink); text-decoration: none; font-size: var(--gb-fs-12); line-height: 1.35;
}
.gb-root .gb-pdp-extra--all b { display: block; margin-bottom: 3px; font-size: var(--gb-fs-14); color: var(--gb-gold-ink); }
.gb-root .gb-pdp-extra--all span:first-child { color: var(--gb-muted); }
.gb-root .gb-pdp-extra--all:hover { border-color: var(--gb-gold-deep); }
.gb-root .gb-pdp-extra--all:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-extra__arrow { font-size: 18px; }
.gb-root .gb-pdp-extras__hint { margin: 8px 0 0; padding: 8px 10px; border-radius: var(--gb-r-sm); background: var(--gb-ok-soft); color: var(--gb-ink); font-size: var(--gb-fs-13); }
.gb-root .gb-pdp-extras__hint b { font-weight: 700; }
/* the full catalogue: inline via :target without JS, in the drawer with JS */
.gb-root .gb-pdp-extras__all { display: none; margin-top: 12px; }
.gb-root .gb-pdp-extras__all:target { display: block; }
.gb-root .gb-pdp-drawer__body .gb-pdp-extras__all { display: block; margin: 0; }
.gb-root .gb-pdp-extras__cat + .gb-pdp-extras__cat { margin-top: 18px; }
.gb-root .gb-pdp-extras__cat[hidden] { display: none; }
.gb-root .gb-pdp-extras__cat-title { margin: 0 0 10px; font-family: var(--gb-font-display); font-weight: 700; font-size: var(--gb-fs-18); color: var(--gb-ink); }
.gb-root .gb-pdp-extras__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.gb-root .gb-pdp-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.gb-root .gb-pdp-chip {
  display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 12px;
  border: 1px solid var(--gb-line-strong); border-radius: 999px; background: var(--gb-surface);
  color: var(--gb-ink); font: inherit; font-size: var(--gb-fs-13); font-weight: 600; cursor: pointer;
}
.gb-root .gb-pdp-chip:hover { border-color: var(--gb-ink); }
.gb-root .gb-pdp-chip[aria-pressed="true"] { background: var(--gb-dark); border-color: var(--gb-dark); color: var(--gb-on-dark); }
.gb-root .gb-pdp-chip:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-chip__n { display: inline-grid; place-items: center; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--gb-gold); color: var(--gb-dark); font-size: var(--gb-fs-12); }
.gb-root .gb-pdp-chip__n[hidden] { display: none; }

/* quantity + running total */
.gb-root .gb-pdp-qty { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; align-items: end; margin-top: 16px; }
.gb-root .gb-pdp-qty .gb-qty { margin: 0; }
.gb-root .gb-pdp-qty__bulk { position: relative; margin: 0; padding-left: 13px; font-size: var(--gb-fs-13); font-weight: 600; color: var(--gb-gold-ink); line-height: 1.4; }
.gb-root .gb-pdp-qty__bulk::before { content: ""; position: absolute; left: 0; top: .5em; width: 6px; height: 6px; border-radius: 50%; background: var(--gb-gold); }
.gb-root .gb-pdp-total { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 14px 0 0; font-size: var(--gb-fs-14); color: var(--gb-muted); }
.gb-root .gb-pdp-total b { flex: none; font-family: var(--gb-font-display); font-size: var(--gb-fs-20); font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-buy__cta { width: 100%; margin-top: 10px; }
/* delivery panel, under Add to cart */
.gb-root .gb-pdp-ship {
  display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px; align-items: start;
  margin-top: 12px; padding: 14px 16px; border: 1px solid var(--gb-line); border-radius: var(--gb-r-md);
  background: var(--gb-surface-2);
}
.gb-root .gb-pdp-ship.is-free { background: var(--gb-ok-soft); border-color: var(--gb-ok-soft); }
.gb-root .gb-pdp-ship__icon { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--gb-surface); color: var(--gb-gold-deep); }
.gb-root .gb-pdp-ship.is-free .gb-pdp-ship__icon { color: var(--gb-ok); }
.gb-root .gb-pdp-ship__text { display: grid; gap: 3px; min-width: 0; }
.gb-root .gb-pdp-ship__text p { margin: 0; }
.gb-root .gb-pdp-ship__title { font-size: var(--gb-fs-15); font-weight: 700; color: var(--gb-ink); line-height: 1.3; }
.gb-root .gb-pdp-ship.is-free .gb-pdp-ship__title { color: var(--gb-ok); }
.gb-root .gb-pdp-ship__sub { font-size: var(--gb-fs-13); color: var(--gb-ink-2); line-height: 1.45; }
.gb-root .gb-pdp-ship__xmas { display: flex; align-items: flex-start; gap: 6px; margin-top: 4px !important; font-size: var(--gb-fs-13); color: var(--gb-ink-2); line-height: 1.45; }
.gb-root .gb-pdp-ship__xmas .gb-icon { flex: none; margin-top: 1px; color: var(--gb-gold-deep); }
.gb-root .gb-pdp-ship__xmas b { color: var(--gb-ink); font-weight: 700; }
.gb-root .gb-pdp-ship__link { justify-self: start; margin-top: 4px; font-size: var(--gb-fs-13); font-weight: 600; color: var(--gb-gold-ink); text-underline-offset: 2px; }
.gb-root .gb-pdp-ship__link:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }

.gb-root .gb-pdp-buy__secondary { display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 10px; }
.gb-root .gb-pdp-secondary {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 12px;
  border: 1px solid var(--gb-line-strong); border-radius: var(--gb-r-md); background: var(--gb-surface);
  color: var(--gb-ink); font: inherit; font-size: var(--gb-fs-14); font-weight: 600; text-decoration: none; cursor: pointer;
}
.gb-root .gb-pdp-secondary:hover { border-color: var(--gb-ink); color: var(--gb-ink); }
.gb-root .gb-pdp-secondary:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-secondary__on { display: none; }
.gb-root .gb-pdp-secondary[aria-pressed="true"] { border-color: var(--gb-gold-deep); background: var(--gb-gold-mist); color: var(--gb-gold-ink); }
.gb-root .gb-pdp-secondary[aria-pressed="true"] .gb-icon { fill: currentColor; }
.gb-root .gb-pdp-secondary[aria-pressed="true"] .gb-pdp-secondary__off { display: none; }
.gb-root .gb-pdp-secondary[aria-pressed="true"] .gb-pdp-secondary__on { display: inline; }
.gb-root .gb-pdp-buy__status { margin: 6px 0 0; min-height: 1em; font-size: var(--gb-fs-13); color: var(--gb-ok); text-align: center; }
.gb-root .gb-pdp-buy__status:empty { margin: 0; min-height: 0; }

/* trust row: one inline line, icon + light label + bold value; wraps per item */
.gb-root .gb-pdp-trust {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px;
  margin: 14px 0 0; padding: 14px 0 0; border-top: 1px solid var(--gb-line); list-style: none;
  font-size: var(--gb-fs-14); color: var(--gb-muted); line-height: 1.4;
}
.gb-root .gb-pdp-trust li { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.gb-root .gb-pdp-trust .gb-icon { flex: none; width: 18px; height: 18px; color: var(--gb-gold-deep); }
.gb-root .gb-pdp-trust b, .gb-root .gb-pdp-trust a { font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-trust a { text-decoration: none; }
.gb-root .gb-pdp-trust a:hover { color: var(--gb-gold-ink); text-decoration: underline; }
.gb-root .gb-pdp-trust a:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }

.gb-root .gb-pdp-team { margin-top: 14px; padding: 14px 16px; border-left: 3px solid var(--gb-gold); border-radius: 0 var(--gb-r-md) var(--gb-r-md) 0; background: var(--gb-gold-mist); font-size: var(--gb-fs-14); color: var(--gb-ink-2); }
.gb-root .gb-pdp-team b { display: block; margin-bottom: 3px; color: var(--gb-ink); }
.gb-root .gb-pdp-team a { color: var(--gb-gold-ink); font-weight: 600; }

/* details */
.gb-root .gb-pdp-details { margin-top: 44px; padding-block: 40px; border-block: 1px solid var(--gb-line); background: var(--gb-surface); }
.gb-root .gb-pdp-details__cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 36px; }
.gb-root .gb-pdp-details__title { margin: 0 0 14px; font-family: var(--gb-font-display); font-weight: 700; font-size: var(--gb-fs-24); color: var(--gb-ink); }
.gb-root .gb-pdp-details__sub { margin: 22px 0 6px; font-family: var(--gb-font-body); font-size: var(--gb-fs-14); font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-details p { margin: 0 0 8px; max-width: 60ch; font-size: var(--gb-fs-15); color: var(--gb-ink-2); }
.gb-root .gb-pdp-contents { width: 100%; border-collapse: collapse; font-size: var(--gb-fs-14); }
.gb-root .gb-pdp-contents td { padding: 10px 10px 10px 0; border-bottom: 1px solid var(--gb-line); vertical-align: top; color: var(--gb-ink); overflow-wrap: anywhere; }
.gb-root .gb-pdp-contents td:first-child { width: 28%; font-weight: 600; color: var(--gb-gold-ink); }
.gb-root .gb-pdp-contents td:last-child { width: 16%; padding-right: 0; text-align: right; white-space: nowrap; color: var(--gb-muted); }
.gb-root .gb-pdp-contents tr.is-pack td { font-style: italic; font-weight: 400; color: var(--gb-muted); }
.gb-root .gb-pdp-contents tr.is-pack td:last-child { width: auto; text-align: left; white-space: normal; }
.gb-root .gb-pdp-steps { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
.gb-root .gb-pdp-steps li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 12px; font-size: var(--gb-fs-14); color: var(--gb-ink-2); line-height: 1.5; }
.gb-root .gb-pdp-steps b { display: block; color: var(--gb-ink); }
.gb-root .gb-pdp-steps__n { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--gb-dark); color: var(--gb-on-dark); font-size: var(--gb-fs-12); font-weight: 700; }
.gb-root .gb-pdp-faq { margin-top: 22px; border-top: 1px solid var(--gb-line); }
.gb-root .gb-pdp-faq details { border-bottom: 1px solid var(--gb-line); }
.gb-root .gb-pdp-faq summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 0; font-size: var(--gb-fs-15); font-weight: 600; color: var(--gb-ink); list-style: none; cursor: pointer; }
.gb-root .gb-pdp-faq summary::-webkit-details-marker { display: none; }
.gb-root .gb-pdp-faq summary::after { content: "+"; flex: none; font-size: 20px; line-height: 1; color: var(--gb-gold-deep); }
.gb-root .gb-pdp-faq details[open] summary::after { content: "\2212"; }
.gb-root .gb-pdp-faq summary:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-faq p { padding-bottom: 12px; }

/* related */
.gb-root .gb-pdp-related { padding-block: 40px 56px; }
.gb-root .gb-pdp-related__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 16px; margin-bottom: 18px; }
.gb-root .gb-pdp-related__head .gb-pdp-details__title { margin: 0; }
.gb-root .gb-pdp-related__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; }
.gb-root .gb-pdp-rel { position: relative; display: flex; flex-direction: column; overflow: hidden; border: 1px solid var(--gb-line); border-radius: var(--gb-r-lg); background: var(--gb-surface); }
.gb-root .gb-pdp-rel__link { display: flex; flex-direction: column; color: var(--gb-ink); text-decoration: none; }
.gb-root .gb-pdp-rel__link:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: -3px; }
.gb-root .gb-pdp-rel__img { position: relative; display: block; aspect-ratio: 720 / 629; background: var(--gb-surface-2); }
.gb-root .gb-pdp-rel__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.gb-root .gb-pdp-rel__title { padding: 16px 18px 0; font-family: var(--gb-font-display); font-weight: 700; font-size: 19px; line-height: 1.2; }
.gb-root .gb-pdp-rel__link:hover .gb-pdp-rel__title { color: var(--gb-gold-ink); }
.gb-root .gb-pdp-rel .gb-cat-wish { position: absolute; top: 12px; right: 12px; }
.gb-root .gb-pdp-rel__meta { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 6px 18px 0; font-size: var(--gb-fs-13); color: var(--gb-muted); }
.gb-root .gb-pdp-rel__meta b { font-family: var(--gb-font-display); font-size: var(--gb-fs-16); font-weight: 700; color: var(--gb-ink); }
.gb-root .gb-pdp-rel__cta { margin-top: auto; padding: 12px 18px 18px; }
.gb-root .gb-pdp-rel__btn {
  display: flex; align-items: center; justify-content: center; width: 100%; min-height: 44px; padding: 0 14px;
  border: 1px solid var(--gb-gold-deep); border-radius: var(--gb-r-md); background: var(--gb-gold-deep); color: #fff;
  font: inherit; font-size: var(--gb-fs-14); font-weight: 700; text-decoration: none; cursor: pointer;
}
.gb-root .gb-pdp-rel__btn:hover { background: var(--gb-gold-ink); border-color: var(--gb-gold-ink); color: #fff; }
.gb-root .gb-pdp-rel__btn.is-ghost { background: var(--gb-surface); border-color: var(--gb-line-strong); color: var(--gb-ink); }
.gb-root .gb-pdp-rel__btn.is-ghost:hover { border-color: var(--gb-ink); color: var(--gb-ink); }
.gb-root .gb-pdp-rel__btn.is-out { background: var(--gb-surface-2); border-color: var(--gb-surface-2); color: var(--gb-muted); cursor: not-allowed; }
.gb-root .gb-pdp-rel__btn.is-added { background: var(--gb-ok); border-color: var(--gb-ok); }
.gb-root .gb-pdp-rel__btn:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-pdp-rel__cta small { display: block; margin-top: 6px; text-align: center; font-size: var(--gb-fs-12); color: var(--gb-muted); }
.gb-root .gb-pdp-rel__cta .added_to_cart { display: none; }

/* light drawers (same shell and behaviour as the cart drawer) */
.gb-root .gb-drawer--light .gb-drawer__panel { background: var(--gb-ground); color: var(--gb-ink); border-left-color: var(--gb-line); }
.gb-root .gb-drawer--light .gb-drawer__head { border-bottom-color: var(--gb-line); background: var(--gb-surface); }
.gb-root .gb-drawer--light .gb-drawer__title { color: var(--gb-ink); }
.gb-root .gb-drawer--light .gb-drawer__close { color: var(--gb-ink); }
.gb-root .gb-drawer--light .gb-drawer__close:hover { background: var(--gb-surface-2); color: var(--gb-ink); }
.gb-root .gb-drawer--light .gb-drawer__close:focus-visible { outline: 3px solid var(--gb-gold); outline-offset: 2px; }
.gb-root .gb-drawer--wide .gb-drawer__panel { width: min(600px, 100%); }
.gb-root .gb-pdp-drawer__body { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 18px 20px; -webkit-overflow-scrolling: touch; overscroll-behavior: contain; }
.gb-root .gb-pdp-drawer__foot {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 20px;
  padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--gb-line); background: var(--gb-surface); font-size: var(--gb-fs-14); color: var(--gb-ink-2);
}

/* sticky add to cart (mobile only) */
.gb-root .gb-pdp-sticky {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
  display: flex; align-items: center; gap: 12px; padding: 10px var(--gb-gutter);
  padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--gb-line); background: var(--gb-surface); box-shadow: var(--gb-shadow-2);
}
.gb-root .gb-pdp-sticky[hidden] { display: none; }
.gb-root .gb-pdp-sticky__price { margin: 0; font-family: var(--gb-font-display); font-weight: 700; font-size: var(--gb-fs-18); line-height: 1.15; color: var(--gb-ink); }
.gb-root .gb-pdp-sticky__price small { display: block; font-family: var(--gb-font-body); font-size: var(--gb-fs-12); font-weight: 400; color: var(--gb-muted); }
.gb-root .gb-pdp-sticky .gb-btn { flex: 1; min-height: 48px; }
.gb-root .gb-pdp__spacer { height: 84px; }

/* below 420px the extras row swipes, with snapping; nothing else scrolls sideways */
@media (max-width: 420px) {
  .gb-root .gb-pdp-extras__row { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; gap: 10px; padding-bottom: 6px; margin-inline: -2px; scrollbar-width: thin; }
  .gb-root .gb-pdp-extras__row .gb-pdp-extra { flex: 0 0 calc((100% - 10px) / 2); scroll-snap-align: start; }
  .gb-root .gb-pdp-extras__row .gb-pdp-extra--all { flex-direction: column; align-items: flex-start; justify-content: center; }
  .gb-root .gb-pdp-extras__row .gb-pdp-extra--all:only-child { flex: 1 1 auto; flex-direction: row; align-items: center; justify-content: space-between; }
  .gb-root .gb-pdp-buy { padding-inline: 14px; }
}
@media (min-width: 521px) {
  .gb-root .gb-pdp-qty { grid-template-columns: auto minmax(0, 1fr); gap: 16px; }
  .gb-root .gb-pdp-qty__bulk { align-self: center; margin-top: 26px; }
  .gb-root .gb-pdp-buy__secondary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gb-root .gb-pdp-buy { padding-inline: 20px; }
}
@media (min-width: 561px) {
  .gb-root .gb-pdp-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gb-root .gb-pdp-extras__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (min-width: 901px) {
  .gb-root .gb-pdp__grid { grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr); gap: 44px; }
  .gb-root .gb-pdp__gallery { position: sticky; top: 100px; }
  .gb-root .gb-pdp-details { padding-block: 48px; }
  .gb-root .gb-pdp-details__cols { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 56px; }
  .gb-root .gb-pdp-related__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gb-root .gb-pdp-sticky { display: none; }
  .gb-root .gb-pdp__spacer { display: none; }
}
@media (max-width: 420px) {
  .gb-root .gb-pdp-acc__summary { grid-template-columns: minmax(0, 1fr) 14px; grid-template-areas: "title chev" "state chev"; row-gap: 6px; }
  .gb-root .gb-pdp-acc__title { grid-area: title; }
  .gb-root .gb-pdp-acc__state { grid-area: state; max-width: none; text-align: left; }
  .gb-root .gb-pdp-acc__summary::after { grid-area: chev; }
  .gb-root .gb-pdp-acc__body { padding-inline: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .gb-root .gb-pdp__hero-img, .gb-root .gb-pdp-card__art, .gb-root .gb-pdp-acc__summary::after { transition: none; }
}

/* =====================================================================
 * Blocksy / WooCommerce integration
 * ===================================================================== */

/* Legacy add-on UI (modal triggers, overlays, grid, summary) — replaced by pdp.js; inputs still submit. */
.single-product form.cart .addon-btn-trigger,
.single-product form.cart .single-product-addons,
.single-product form.cart .product-addons-grid,
.single-product form.cart .product-addons-total-wrapper,
.single-product form.cart #product-addons-total,
.single-product .addon-gift-styling-label,
.single-product .yith-wcwl-add-to-wishlist,
.single-product .summary .ct-product-add-to-cart > .ct-wishlist-button-single {
	display: none;
}

/* ---------- two-column grid (prototype .gb-pdp__grid 6fr / 6fr, gap 40) ---------- */
.single-product .product-entry-wrapper {
	position: relative;
	gap: 40px;
	align-items: start;
}

/* Free shipping flag (legacy shipping class 336 badge) over the gallery, top-left. */
.single-product .product-entry-wrapper > .free-shipping-badge {
	position: absolute;
	top: 14px;
	left: 14px;
	z-index: 3;
	width: auto;
	height: auto;
	padding: 5px 10px;
	border-radius: 999px;
	background: rgba(27, 24, 21, 0.82);
	color: var(--gb-gold);
	font-size: var(--gb-fs-12);
	font-weight: 700;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	line-height: 1.3;
}

.single-product .product-entry-wrapper > .free-shipping-badge * {
	color: inherit;
	font: inherit;
	margin: 0;
	white-space: nowrap;
}

.single-product .woocommerce-product-gallery .ct-media-container,
.single-product .woocommerce-product-gallery img {
	border-radius: var(--gb-r-lg);
}

/* ---------- summary ---------- */
.single-product .summary .ct-breadcrumbs {
	margin-bottom: 14px;
	font-size: var(--gb-fs-13);
	font-weight: 400;
	letter-spacing: 0;
	text-transform: none;
	color: var(--gb-muted);
}

.single-product .summary .gb-pdp__eyebrow {
	margin: 0 0 8px;
}

.single-product .summary .product_title {
	margin: 0;
	font-family: var(--gb-font-display);
	font-size: var(--gb-fs-40);
	font-weight: 600;
	line-height: 1.12;
	color: var(--gb-ink);
}

.single-product .summary > .price,
.single-product .summary .price {
	margin: 14px 0 0;
	font-size: var(--gb-fs-30);
	font-weight: 700;
	color: var(--gb-ink);
}

.single-product .gb-pdp__price-note {
	margin: 2px 0 0;
	font-size: var(--gb-fs-14);
	color: var(--gb-muted);
}

.single-product .summary .woocommerce-product-details__short-description {
	margin-top: 16px;
	font-size: var(--gb-fs-16);
	color: var(--gb-ink-2);
}

.single-product .summary .woocommerce-product-details__short-description p {
	margin: 0;
}

.single-product .gb-pdp__inside {
	margin: 12px 0 0;
}

.single-product .gb-pdp__inside a {
	display: inline-flex;
	flex-wrap: wrap;
	gap: 6px 14px;
	font-size: var(--gb-fs-14);
	font-weight: 600;
	color: var(--gb-ink);
	text-decoration: none;
}

.single-product .gb-pdp__inside-cta {
	color: var(--gb-gold-ink);
	border-bottom: 1.5px solid var(--gb-gold-soft);
}

/* ---------- buy box ---------- */
.single-product .summary .ct-product-add-to-cart {
	margin-top: 22px;
}

.single-product form.cart {
	display: block;
}

.single-product .gb-pdp-buy {
	display: grid;
	gap: 12px;
	background: transparent;
}

.single-product .gb-pdp-acc__state.is-set {
	color: var(--gb-gold-ink);
	font-weight: 700;
}

.single-product .gb-pdp-qty__ctl .quantity {
	width: 132px;
	height: 48px;
	margin: 6px 0 0;
	border: 1.5px solid var(--gb-line-strong);
	border-radius: var(--gb-r-md);
	background: var(--gb-surface);
	overflow: hidden;
}

.single-product .gb-pdp-qty__ctl .quantity input.qty {
	height: 100%;
	border: 0;
	font-weight: 700;
	font-size: var(--gb-fs-16);
}

.single-product .gb-pdp-total {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	margin: 4px 0 0;
	padding-top: 12px;
	border-top: 1px solid var(--gb-line);
	font-size: var(--gb-fs-15);
	color: var(--gb-ink-2);
}

.single-product .gb-pdp-total b {
	font-size: var(--gb-fs-20);
	color: var(--gb-ink);
}

/* Original submit row: only the Add to cart button is left in it. */
.single-product .gb-pdp-submit-row {
	display: block;
	margin-top: 12px;
}

.single-product .gb-pdp-submit-row .gb-pdp-buy__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	width: 100%;
	min-height: 56px;
	border-radius: var(--gb-r-md);
	font-size: var(--gb-fs-16);
	font-weight: 700;
	letter-spacing: 0;
	text-transform: none;
	background: var(--gb-gold-deep);
	color: #fff;
}

.single-product .gb-pdp-submit-row .gb-pdp-buy__cta:hover {
	background: #75592e;
}

/* picked extras inline list */
.single-product .gb-pdp-extras__picked {
	display: grid;
	gap: 8px;
	margin-bottom: 10px;
}

.single-product .gb-pdp-extras__picked:empty {
	display: none;
}

.single-product .gb-pdp-picked {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 12px;
	border: 1px solid var(--gb-line);
	border-radius: var(--gb-r-md);
	background: var(--gb-surface);
	font-size: var(--gb-fs-14);
}

.single-product .gb-pdp-picked__name small {
	display: block;
	color: var(--gb-muted);
	font-size: var(--gb-fs-12);
}

.gb-pdp-drawer[hidden] {
	display: none;
}

html.gb-no-scroll {
	overflow: hidden;
}

/* shipping / trust / team blocks after the form */
.single-product .summary .gb-pdp-ship,
.single-product .summary .gb-pdp-trust,
.single-product .summary .gb-pdp-team {
	font-family: var(--gb-font-body);
}

/* ---------- details band + related ---------- */
.single-product .gb-pdp-details-wrap {
	margin-top: 48px;
	background: transparent;
}

.single-product .gb-pdp-details-wrap .gb-wrap {
	padding-inline: 0;
}

.single-product .gb-pdp-contents td {
	padding: 8px 0;
	border-bottom: 1px solid var(--gb-line);
	font-size: var(--gb-fs-15);
}

.single-product .related.products > h2,
.single-product .ct-related-posts > h2,
.single-product section.related > h2 {
	font-family: var(--gb-font-display);
	font-size: var(--gb-fs-30);
	font-weight: 600;
	text-align: left;
	text-transform: none;
	letter-spacing: 0;
}

@media (max-width: 999.98px) {
	.single-product .summary .product_title {
		font-size: var(--gb-fs-30);
	}
}

/* ---------- integration fixes ---------- */
.single-product .gb-pdp__eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: var(--gb-fs-12);
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--gb-gold-ink);
}

.single-product .gb-pdp__eyebrow::before {
	content: "";
	width: 22px;
	height: 2px;
	background: var(--gb-gold);
}

/* 8/7 gallery like the prototype */
.single-product .woocommerce-product-gallery .ct-media-container,
.single-product .woocommerce-product-gallery .ct-media-container img {
	aspect-ratio: 8 / 7;
	object-fit: cover;
	height: auto;
}

.gb-pdp-after {
	display: grid;
	gap: 14px;
	margin-top: 18px;
	background: transparent;
}

.single-product .gb-pdp-qty__ctl .quantity::before,
.single-product .gb-pdp-qty__ctl .quantity::after,
.single-product .gb-pdp-qty__ctl > .quantity > label {
	display: none;
	content: none;
}

.single-product form.cart .gb-pdp-submit-row button.gb-pdp-buy__cta {
	letter-spacing: 0;
	text-transform: none;
	font-family: var(--gb-font-body);
}

/* Mobile: the legacy fixed bottom bar (legacy addons css) styled as the prototype sticky buy bar. */
@media (max-width: 689.98px) {
	.single-product .gb-pdp-submit-row {
		padding: 10px var(--gb-gutter) calc(10px + env(safe-area-inset-bottom, 0px));
		background: var(--gb-surface);
		border-top: 1px solid var(--gb-line);
		box-shadow: 0 -10px 30px rgba(31, 27, 23, 0.12);
	}

	.single-product .gb-pdp-submit-row .gb-pdp-buy__cta {
		min-height: 48px;
	}
}

/* details band: full-bleed surface, content in the 1180 container */
.single-product .gb-pdp-details {
	box-shadow: 0 0 0 100vmax var(--gb-surface);
	clip-path: inset(0 -100vmax);
	background: var(--gb-surface);
}

.single-product .gb-pdp-details-wrap .gb-wrap {
	max-width: var(--gb-max);
	margin-inline: auto;
	padding-inline: 0;
}

.single-product .gb-pdp-contents,
.single-product .gb-pdp-contents td {
	text-align: left;
	border-left: 0;
	border-right: 0;
	border-top: 0;
}

.single-product .gb-pdp-contents tr.is-pack td {
	font-style: normal;
	color: var(--gb-muted);
}

.gb-pdp-drawer-root {
	background: transparent;
}

/* drawer chips: gutters; one swipeable row on phones */
.gb-pdp-drawer .gb-pdp-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	padding: 12px var(--gb-gutter);
	border-bottom: 1px solid var(--gb-line);
}

@media (max-width: 689.98px) {
	.gb-pdp-drawer .gb-pdp-chips {
		flex: 0 0 auto; /* a scroll box in the panel's flex column shrank and lost its bottom padding (QA) */
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.gb-pdp-drawer .gb-pdp-chips .gb-pdp-chip {
		flex: 0 0 auto;
	}

	/* room for the fixed buy bar */
	body.single-product {
		padding-bottom: 76px;
	}
}

/* Breadcrumbs above gallery + summary (prototype .gb-pdp__crumbs); Blocksy page-title hero is off. */
.single-product .site-main > .ct-container-full[data-vertical-spacing*="top"] { padding-top: 34px; }
/* Prototype PDP column: 1180px wrap, 20px gutter = 1140px (Blocksy constrains to 1220px). */
.single-product .site-main .is-width-constrained,
.gb-root.gb-pdp-crumbs { max-width: calc(var(--gb-max) - 2 * var(--gb-gutter)); }
.gb-root.gb-pdp-crumbs { width: calc(100% - 2 * var(--gb-gutter)); margin-inline: auto; }
.gb-root .gb-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: var(--gb-fs-13); color: var(--gb-muted); }
.gb-root .gb-crumbs a { text-decoration: none; border-bottom: 1px solid var(--gb-line-strong); }
.gb-root .gb-crumbs a:hover { color: var(--gb-gold-ink); border-bottom-color: var(--gb-gold-deep); }
.gb-root .gb-pdp__crumbs { margin-bottom: 18px; }
.gb-root .gb-pdp__crumbs a { color: var(--gb-muted); }
.gb-root .gb-pdp__crumbs [aria-current] { color: var(--gb-ink); font-weight: 600; }
@media (min-width: 1000px) {
	/* Prototype .gb-pdp__grid: gallery ~half, 44px gap, summary the rest. */
	.single-product .product-entry-wrapper { column-gap: 44px; }
	.single-product .product-entry-wrapper > .woocommerce-product-gallery { flex: 0 0 50%; width: auto; max-width: none; }
	/* Out-ranks Blocksy's .product-entry-wrapper:has(...) .entry-summary (40px start margin + calc width). */
	.single-product .product-entry-wrapper:has(.woocommerce-product-gallery) > .summary.entry-summary { flex: 1 1 0; width: auto; min-width: 0; max-width: none; margin-inline-start: 0; }
}

/* =====================================================================
 * Prototype pass (product-*.html, Oct): title + price line, "What's inside" box,
 * one bordered buy card, stepper, gallery flag / zoom / thumbs, contents table,
 * related cards. No !important: selectors out-rank Blocksy's.
 * ===================================================================== */

/* title and price on one line with "per hamper, GST inc." */
.single-product .entry-summary .product_title { font-size: clamp(30px, 4vw, 46px); font-weight: 700; letter-spacing: -0.01em; }
.single-product .entry-summary > p.price { display: inline-block; margin: 16px 10px 0 0; vertical-align: baseline; font-family: var(--gb-font-display); font-size: 34px; font-weight: 700; line-height: 1.1; }
.single-product .entry-summary > p.price .amount,
.single-product .entry-summary > p.price bdi { font-family: inherit; font-size: inherit; font-weight: inherit; color: var(--gb-ink); }
.single-product .entry-summary > .gb-pdp__price-note { display: inline-block; margin: 0; vertical-align: baseline; font-size: var(--gb-fs-14); color: var(--gb-muted); }

/* "What's inside: N items · See the full list" box */
.single-product .entry-summary .gb-pdp__inside { margin: 16px 0 0; }
.single-product .entry-summary .gb-pdp__inside a {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 4px 12px;
	padding: 12px 16px;
	border: 1px solid var(--gb-line);
	border-radius: var(--gb-r-md);
	background: var(--gb-surface);
	color: var(--gb-ink);
	font-size: var(--gb-fs-15);
	font-weight: 600;
}
.single-product .entry-summary .gb-pdp__inside a:hover { border-color: var(--gb-line-strong); }
.single-product .entry-summary .gb-pdp__inside-cta { border-bottom: 0; font-size: var(--gb-fs-13); text-decoration: underline; text-underline-offset: 2px; }

/* one buy card: form, delivery panel, save / share, trust row */
.single-product .entry-summary .gb-pdp-buycard {
	margin-top: 18px;
	padding: 20px 20px 18px;
	border: 1px solid var(--gb-line);
	border-radius: var(--gb-r-lg);
	background: var(--gb-surface);
}
.single-product .entry-summary .gb-pdp-buycard .ct-product-add-to-cart { margin-top: 0; }
.single-product .entry-summary .gb-pdp-buycard .gb-pdp-buy { margin: 0; padding: 0; border: 0; }
.single-product .entry-summary .gb-pdp-buycard .gb-pdp-after { margin-top: 14px; }
.single-product .entry-summary .gb-pdp-after--team { margin-top: 18px; }
.single-product .entry-summary .gb-pdp-buycard .gb-pdp-trust { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px; margin: 0; padding: 14px 0 0; border-top: 1px solid var(--gb-line); list-style: none; font-size: var(--gb-fs-14); color: var(--gb-muted); }
.single-product .entry-summary .gb-pdp-buycard .gb-pdp-trust li { display: inline-flex; align-items: center; gap: 8px; margin: 0; white-space: nowrap; }
.single-product .entry-summary .gb-pdp-buycard .gb-pdp-trust .gb-icon { flex: none; width: 18px; height: 18px; color: var(--gb-gold-deep); }
@media (max-width: 420px) {
	.single-product .entry-summary .gb-pdp-buycard { padding-inline: 14px; }
}

/* quantity stepper (prototype .gb-qty: 48 / 72 / 48, grey ends) on Blocksy's type-2 quantity */
.single-product .gb-pdp-qty__ctl .quantity {
	display: inline-grid;
	grid-template-columns: 48px 72px 48px;
	width: max-content;
	height: 48px;
	padding: 0;
}
.single-product .gb-pdp-qty__ctl .quantity .ct-decrease,
.single-product .gb-pdp-qty__ctl .quantity .ct-increase {
	position: static;
	grid-row: 1;
	width: 48px;
	height: 100%;
	margin: 0;
	border: 0;
	border-radius: 0;
	background: var(--gb-surface-2);
	color: var(--gb-ink);
	cursor: pointer;
	transform: none;
}
.single-product .gb-pdp-qty__ctl .quantity .ct-decrease { grid-column: 1; }
.single-product .gb-pdp-qty__ctl .quantity .ct-increase { grid-column: 3; }
.single-product .gb-pdp-qty__ctl .quantity .ct-decrease:hover,
.single-product .gb-pdp-qty__ctl .quantity .ct-increase:hover { background: var(--gb-gold-soft); }
.single-product .gb-pdp-qty__ctl .quantity input.qty { grid-column: 2; grid-row: 1; width: 100%; min-width: 0; padding: 0; background: transparent; text-align: center; }

/* gallery: free shipping flag, zoom pill, thumbnails (prototype .gb-pdp-flag / __zoomhint / __thumbs) */
.single-product .product-entry-wrapper > .free-shipping-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 8px 12px;
	border-radius: var(--gb-r-sm);
	background: var(--gb-dark);
	color: var(--gb-on-dark);
	font-weight: 600;
}
.single-product .product-entry-wrapper > .free-shipping-badge::before { content: ""; flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--gb-gold); }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger {
	top: auto;
	right: 14px;
	bottom: 14px;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	width: auto;
	height: auto;
	padding: 7px 12px;
	border-radius: var(--gb-r-sm);
	background: var(--gb-surface);
	box-shadow: var(--gb-shadow-1);
	color: var(--gb-ink);
	font-size: 0;
	line-height: 1;
}
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger::before {
	position: static;
	width: 14px;
	height: 14px;
	margin: 0;
	background: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m16 16 4.5 4.5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='6.5'/%3E%3Cpath d='m16 16 4.5 4.5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger::after { content: "Zoom"; font-size: var(--gb-fs-12); font-weight: 600; }
.single-product .woocommerce-product-gallery .ct-media-container { box-shadow: var(--gb-shadow-1); }
.single-product .gb-pdp__thumbs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
.single-product .gb-pdp__thumb { appearance: none; padding: 0; border: 2px solid transparent; border-radius: var(--gb-r-md); overflow: hidden; background: var(--gb-surface-2); aspect-ratio: 1; cursor: pointer; }
.single-product .gb-pdp__thumb img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 0; }
.single-product .gb-pdp__thumb.is-active { border-color: var(--gb-gold-deep); }

/* contents table: brand (gold) | item | size (right) */
.single-product .gb-pdp-details .gb-pdp-contents { table-layout: auto; }
.single-product .gb-pdp-details .gb-pdp-contents td { padding: 10px 10px 10px 0; font-size: var(--gb-fs-14); }
.single-product .gb-pdp-details .gb-pdp-contents td:first-child { width: 28%; font-weight: 600; color: var(--gb-gold-ink); }
.single-product .gb-pdp-details .gb-pdp-contents td:last-child { width: 16%; padding-right: 0; text-align: right; white-space: nowrap; color: var(--gb-muted); }
.single-product .gb-pdp-details .gb-pdp-contents tr.is-pack td { font-style: italic; font-weight: 400; color: var(--gb-muted); }
.single-product .gb-pdp-details .gb-pdp-contents tr.is-pack td:last-child { width: auto; text-align: left; white-space: normal; }
.single-product .gb-pdp-details .gb-pdp-steps strong { display: block; font-weight: 700; color: var(--gb-ink); }

/* details columns never wider than the screen (they overflowed on phones) */
.single-product .gb-pdp-details-wrap { overflow-x: clip; }
.single-product .gb-pdp-details__cols { display: grid; grid-template-columns: minmax(0, 1fr); gap: 40px; }
.single-product .gb-pdp-details__cols > * { min-width: 0; }
@media (min-width: 901px) {
	.single-product .gb-pdp-details__cols { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 56px; }
}

/* related band: our cards in the 1140px column; Blocksy / WooCommerce related list is replaced */
.single-product section.related.products { display: none; }
.single-product .gb-pdp-related-wrap { width: calc(100% - 2 * var(--gb-gutter)); max-width: calc(var(--gb-max) - 2 * var(--gb-gutter)); margin-inline: auto; background: transparent; }
.single-product .gb-pdp-related .gb-pdp-details__title { font-family: var(--gb-font-display); font-size: var(--gb-fs-24); font-weight: 700; color: var(--gb-ink); }
.single-product .gb-pdp-rel__img img { aspect-ratio: 720 / 629; border-radius: 0; }
.single-product .gb-pdp-rel__img .gb-pdp-flag { top: 12px; left: 12px; }
.single-product .gb-pdp-rel__meta b .amount { font-family: inherit; color: inherit; }
.single-product .gb-pdp-rel__btn.added { opacity: 1; }
.single-product .gb-pdp-rel__btn.loading { opacity: 0.72; }
.single-product .gb-pdp-rel__btn.added::after,
.single-product .gb-pdp-rel__btn.loading::after { display: none; }
.gb-root .gb-cat-wish {
	z-index: 3;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	min-height: 0;
	padding: 0;
	border: 0;
	border-radius: 999px;
	background: rgba(27, 24, 21, 0.82);
	color: var(--gb-gold);
	cursor: pointer;
}
.gb-root .gb-cat-wish:hover,
.gb-root .gb-cat-wish[aria-pressed="true"] { background: var(--gb-gold); color: var(--gb-dark); }
.gb-root .gb-cat-wish[aria-pressed="true"] .gb-icon { fill: currentColor; }
.gb-root .gb-cat-wish .gb-icon { width: 18px; height: 18px; }
/* Blocksy sizes the trigger's ::after to 0; give the "Zoom" label its own box. */
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger::after { position: static; width: auto; height: auto; margin: 0; background: none; -webkit-mask: none; mask: none; opacity: 1; color: inherit; line-height: 1; }
/* Details band: 20px gutter below the 1180px column (it ran edge to edge on phones). */
@media (max-width: 1199.98px) {
	.single-product .gb-pdp-details-wrap .gb-wrap { width: calc(100% - 2 * var(--gb-gutter)); }
}
/* Details band in the same 1140px column as the summary and related cards (prototype .gb-wrap). */
.single-product .gb-pdp-details-wrap .gb-wrap { width: calc(100% - 2 * var(--gb-gutter)); max-width: calc(var(--gb-max) - 2 * var(--gb-gutter)); }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger::after { content: none; }
.single-product .woocommerce-product-gallery .gb-pdp__zoomlabel { font-size: var(--gb-fs-12); font-weight: 600; line-height: 1; color: var(--gb-ink); }
.single-product .woocommerce-product-gallery .woocommerce-product-gallery__trigger { text-indent: 0; overflow: visible; }
.single-product .woocommerce-product-gallery .gb-pdp__zoomlabel { display: inline-block; flex: none; width: auto; min-width: max-content; max-width: none; text-indent: 0; white-space: nowrap; }
.single-product .woocommerce-product-gallery .ct-media-container { cursor: zoom-in; }

/* ---------- Prototype initPdp extras ---------- */
/* Share status line under the save / share buttons. */
.gb-root .gb-pdp-buy__status { margin: 6px 0 0; min-height: 1em; font-size: 13px; color: var(--gb-ok); }
.gb-root .gb-pdp-buy__status:empty { margin: 0; min-height: 0; }
/* Hover zoom on desktop (fine pointers only). */
.single-product .woocommerce-product-gallery .ct-media-container { overflow: hidden; --gb-zx: 50%; --gb-zy: 50%; }
.single-product .woocommerce-product-gallery .ct-media-container img { transform-origin: var(--gb-zx) var(--gb-zy); transition: transform .25s ease; }
.single-product .woocommerce-product-gallery .ct-media-container.is-zooming { cursor: zoom-in; }
.single-product .woocommerce-product-gallery .ct-media-container.is-zooming img { transform: scale(2); }
@media (prefers-reduced-motion: reduce) {
	.single-product .woocommerce-product-gallery .ct-media-container img { transition: none; }
}
/* Sticky Add to cart on phones. */
.gb-root.gb-pdp-sticky {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 45;
	display: flex; align-items: center; gap: 12px;
	padding: 10px var(--gb-gutter, 20px) calc(10px + env(safe-area-inset-bottom, 0px));
	border-top: 1px solid var(--gb-line); background: var(--gb-surface); box-shadow: var(--gb-shadow-2);
}
.gb-root.gb-pdp-sticky[hidden] { display: none; }
.gb-root .gb-pdp-sticky__price { margin: 0; font-family: var(--gb-font-display); font-weight: 700; font-size: 18px; line-height: 1.15; color: var(--gb-ink); }
.gb-root .gb-pdp-sticky__price small { display: block; font-family: var(--gb-font-body); font-size: 12px; font-weight: 400; color: var(--gb-muted); }
.gb-root.gb-pdp-sticky .gb-btn { flex: 1; min-height: 48px; }
@media (min-width: 901px) {
	.gb-root.gb-pdp-sticky { display: none; }
}

/* ---------- Responsive pass (prototype at 390 / 800px) ---------- */
/* Tablets and phones: the buy section sits in the site's 20px gutter like the rest of the page (Blocksy holds
   it to 90% width here). */
@media (max-width: 999.98px) {
	.single-product .product-entry-wrapper.is-width-constrained { width: calc(100% - 2 * var(--gb-gutter, 20px)); }
}
/* Running total as the prototype: no rule above it, 14px muted line, 20px display price. */
.single-product .gb-pdp-total { margin: 14px 0 0; padding-top: 0; border-top: 0; font-size: 14px; color: var(--gb-muted); }
/* Phones: the Add to cart row is a plain full-width button (the sticky bar is .gb-pdp-sticky). */
@media (max-width: 689.98px) {
	.single-product .gb-pdp-submit-row { padding: 0; background: none; border-top: 0; box-shadow: none; }
}
/* Delivery panel: calendar icon on the Christmas line, underlined "Delivery details". */
.single-product .gb-pdp-ship__xmas { display: flex; align-items: flex-start; gap: 6px; }
.single-product .gb-pdp-ship__xmas .gb-icon { flex: none; margin-top: 1px; color: var(--gb-gold-deep); }
.single-product .gb-pdp-ship__link { text-decoration: underline; text-underline-offset: 2px; }
/* Buy box rhythm as the prototype (the box is a 12px grid, so these margins add to that gap):
   extras -> quantity 16px, quantity -> total 14px, total -> Add to cart 10px, Add to cart -> delivery 12px. */
.single-product .gb-pdp-buy .gb-pdp-qty { margin-top: 4px; }
.single-product .gb-pdp-buy .gb-pdp-total { margin-top: 2px; }
.single-product form.cart .gb-pdp-submit-row { margin-top: 0; }
.single-product .gb-pdp-buycard .gb-pdp-after { margin-top: 12px; }
.single-product .gb-pdp-buycard .gb-pdp-after > .gb-pdp-ship { margin-top: 0; }
/* Stacked layout (tablets, phones): 35px from the thumbnails to the category line (prototype). */
@media (max-width: 999.98px) {
	.single-product .woocommerce-product-gallery { margin-bottom: 29px; }
}
/* Quantity stepper: 50px tall with no top offset (Blocksy adds 6px), as the prototype's .gb-qty. */
.single-product .gb-pdp-qty__ctl .quantity { margin-top: 0; height: 50px; }
@media (max-width: 689.98px) {
	.single-product .gb-pdp-submit-row .gb-pdp-buy__cta { min-height: 56px; }
}
/* Desktop: the gallery stays in view on the left while the buy box scrolls (prototype .gb-pdp__gallery, sticky;
   QA). Top clears the folded sticky header. Short windows keep the normal flow so the gallery is never cut off. */
@media (min-width: 1000px) and (min-height: 720px) {
	.single-product .product-entry-wrapper > .woocommerce-product-gallery { position: sticky; top: calc(var(--scroll-margin-top-offset, 85px) + 20px); }
}
/* Extras with their own photo (item-images.php) show the whole packshot on white; others keep the group icon (QA). */
.gb-root .gb-pdp-extra__img.has-img img { object-fit: contain; background: #fff; }

/* Breadcrumb (QA): one line on phones, swiped sideways, so a long product name takes no extra rows. */
@media (max-width: 689.98px) {
	.gb-root .gb-crumbs.gb-pdp__crumbs {
		flex-wrap: nowrap;
		overflow-x: auto;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
		white-space: nowrap;
		padding-bottom: 2px; /* link underline inside the scroll box */
	}
	.gb-root .gb-crumbs.gb-pdp__crumbs::-webkit-scrollbar { display: none; }
	.gb-root .gb-crumbs.gb-pdp__crumbs > * { flex: 0 0 auto; }
}
