/* Single product page. Mobile first; desktop at 769px. */

.single-product .wc-page { padding-bottom: var(--section-space); }

/* ---------- Gallery (WooCommerce flexslider + zoom + photoswipe) ---------- */

/* WC fades the gallery in only after its slider script runs. Show the first image right away (LCP)
   and hide the others until flexslider takes over (it sets display:block inline on slides). */
.woocommerce-product-gallery {
  position: relative;
  margin: 0 calc(-1 * var(--page-gutter)) 0;
  overflow: hidden;
  opacity: 1 !important;
}
/* Slide width comes from the gallery (container units), not from the slide track: flexslider first makes the
   track ~1000% wide and only then gives slides pixel widths, so "width: 100%" made every slide 10× wide and
   tall for a frame, pushing the summary off screen (CLS ≈ 0.9 on mobile). */
.woocommerce-product-gallery { container-type: inline-size; --slide-w: 100cqw; }
.woocommerce-product-gallery__wrapper { margin: 0; }
.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image { width: var(--slide-w); }
.woocommerce-product-gallery__wrapper > .woocommerce-product-gallery__image:nth-child(n + 2) { display: none; }
.woocommerce-product-gallery__image { position: relative; background: var(--color-small-image-bg); }
.woocommerce-product-gallery__image a { display: block; }
.woocommerce-product-gallery__image img { width: 100%; height: auto; }

/* Phones (design v2): full-width square slides, swipe; dots below (active = short bar).
   The frame is square but the photo never is cropped: contain, letterboxed on the slide background. */
.woocommerce-product-gallery__image { aspect-ratio: 1; overflow: hidden; }
.woocommerce-product-gallery__image a, .woocommerce-product-gallery__image img { height: 100%; }
.woocommerce-product-gallery__image img { object-fit: contain; }
/* Room for the dots before flexslider adds them */
.woocommerce-product-gallery:has(.woocommerce-product-gallery__image + .woocommerce-product-gallery__image):not(:has(.flex-control-nav)) { padding-bottom: 30px; }

/* Thumbnails become dots on mobile */
.woocommerce-product-gallery .flex-control-thumbs {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 6px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}
.flex-control-thumbs li {
  width: 5px;
  height: 5px;
  background: var(--color-border);
  overflow: hidden;
  cursor: pointer;
  transition: width 0.2s ease;
}
.flex-control-thumbs li:has(.flex-active) { width: 18px; height: 4px; background: var(--color-text); }
.flex-control-thumbs img { width: 100%; height: 100%; opacity: 0; }

/* Badge + counter (moved into the gallery by product.js) */
.gallery-extras { display: none; }
.gallery-extras.is-ready { display: contents; }
.gallery-badge {
  position: absolute;
  z-index: 3;
  top: 12px;
  left: calc(var(--page-gutter) + 0px);
  padding: 5px 9px;
  background: var(--color-sale-tag);
  color: var(--color-sale-tag-text);
  font-size: var(--fs-card-brand);
  font-weight: var(--fw-bold);
  letter-spacing: 0.18em;
  line-height: normal;
  text-transform: uppercase;
  pointer-events: none;
}
.gallery-badge--sold-out { background: var(--color-surface); color: var(--color-text); }
.gallery-counter {
  position: absolute;
  z-index: 3;
  top: 12px;
  right: 12px;
  padding: 4px 8px;
  background: var(--color-surface);
  font-size: 12px;
  font-weight: var(--fw-medium);
  letter-spacing: normal;
  line-height: normal;
  pointer-events: none;
}

/* Zoom / lightbox trigger: round button on the image (phones); "Hover to zoom" label on desktop */
.woocommerce-product-gallery__trigger {
  position: absolute;
  z-index: 3;
  right: 12px;
  bottom: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 1px solid var(--color-border);
  border-radius: 50%;
  background: var(--color-bg);
  font-size: 0;
  color: transparent;
}
.woocommerce-product-gallery__trigger::before {
  content: "";
  width: 16px;
  height: 16px;
  background: currentColor;
  color: var(--color-text);
  -webkit-mask: var(--zoom-icon) center / contain no-repeat;
  mask: var(--zoom-icon) center / contain no-repeat;
}
.woocommerce-product-gallery__trigger img { display: none; }
.woocommerce-product-gallery { --zoom-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none' stroke='black' stroke-width='5'%3E%3Ccircle cx='27' cy='27' r='17'/%3E%3Cpath d='M39 39l17 17M19 27h16M27 19v16'/%3E%3C/svg%3E"); }
.woocommerce-product-gallery .zoomImg { background: var(--color-bg); }

/* ---------- Summary ---------- */

/* Design v2 (reference/product-v2): left-aligned column; UI text in weight 400 */
.summary { margin-top: 24px; text-align: left; }
.product-brand {
  display: block;
  width: fit-content;
  margin-bottom: 8px;
  color: var(--color-text-muted);
  font-size: var(--fs-eyebrow);
  font-weight: var(--fw-medium);
  letter-spacing: 0.24em;
  line-height: 1.25;
  text-transform: uppercase;
}
.product-brand:hover { color: var(--color-text); }
.summary .product_title { margin: 0; font-size: var(--fs-product-title); line-height: 1.12; letter-spacing: 0.04em; }
.product-summary__after-title:empty { display: none; }
.product-summary__after-title { margin-top: 11px; }
.product-rating { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; letter-spacing: normal; }
.product-rating__avg { font-weight: var(--fw-bold); }
.product-rating__count { color: var(--color-text-muted); font-weight: var(--fw-regular); text-decoration: underline; text-underline-offset: 3px; }
.product-rating:hover .product-rating__count { color: var(--color-text); }
.product-summary__divider { margin: 25px 0 23px; border: 0; border-top: 1px solid var(--color-border); }

.product-price { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 12px; font-size: 22px; font-weight: var(--fw-medium); line-height: 1.25; letter-spacing: normal; }
.product-price .price__compare { margin: 0; color: var(--color-text-muted); font-size: 18px; font-weight: var(--fw-regular); }
.product-price .price__savings { margin: 0; font-size: 17px; font-weight: var(--fw-regular); }

/* Option heads: "COLOUR: MINT BLUE", "SIZE (UK): 8" + size guide */
.variant-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.variant-head__label { margin: 0; font-size: var(--fs-eyebrow); letter-spacing: 0.28em; line-height: 1.25; text-transform: uppercase; }
.variant-head__value { font-weight: var(--fw-bold); letter-spacing: 0.08em; }
.variant-head .size-guide-link { margin: 0; font-size: 14px; letter-spacing: normal; }
.variant-head .size-guide-link .icon { display: none; }

/* Colour swatches (colourway links, or colour variation buttons) */
.product-colours { margin-top: 22px; }
.colour-swatches { display: flex; flex-wrap: wrap; gap: 10px; margin: 0; padding: 0; list-style: none; }
.colour-swatch, .variant-buttons__label--swatch {
  display: block;
  width: var(--swatch-size);
  height: var(--swatch-size);
  padding: 4px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  transition: border-color 0.15s ease;
}
.colour-swatch:hover, .colour-swatch.is-current { border-color: var(--color-text); }
.colour-swatch__fill { display: block; width: 100%; height: 100%; border: 1px solid var(--color-border); }

.woocommerce-product-details__short-description { margin-bottom: 25px; }

/* Variations table → stacked blocks */
.variations_form .variations,
.variations_form .variations tbody,
.variations_form .variations tr,
.variations_form .variations th,
.variations_form .variations td { display: block; padding: 0; text-align: inherit; }
.variations_form .variations { width: 100%; margin: 22px 0 0; border: 0; }
.variations_form .variations tr { margin-bottom: 22px; }
.variations_form .variations th { display: none; } /* our .variant-head shows the label + chosen value */

/* Variation buttons: size grid (5 columns on phones, 6 from 769px); colours as swatches */
.variant-buttons {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
  padding: 0;
  border: 0;
}
.variant-buttons--swatches { display: flex; flex-wrap: wrap; gap: 10px; }
.variant-buttons__label {
  position: relative;
  display: grid;
  place-items: center;
  min-height: var(--option-h);
  padding: 0 6px;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  font-size: 16px;
  font-weight: var(--fw-regular);
  letter-spacing: normal;
  line-height: 1.2;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.variant-buttons__label:hover { border-color: var(--color-text); }
.variant-buttons__input:checked + .variant-buttons__label { border-color: var(--color-text); background: var(--color-variant-selected); color: var(--color-variant-selected-text); box-shadow: 0 0 0 1px var(--color-text); }
.variant-buttons__input:checked + .variant-buttons__label--swatch { background: var(--color-surface); box-shadow: none; }
.variant-buttons__input:focus-visible + .variant-buttons__label { outline: 2px solid var(--color-focus); outline-offset: 3px; }
.variant-buttons__input:disabled + .variant-buttons__label {
  color: var(--color-option-disabled);
  background: linear-gradient(to top right, transparent calc(50% - 0.5px), var(--color-border) 50%, transparent calc(50% + 0.5px)), var(--color-surface);
  cursor: not-allowed;
}
.variant-buttons__input:disabled:checked + .variant-buttons__label { box-shadow: 0 0 0 1px var(--color-border); color: var(--color-option-disabled); }

.size-guide-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 12px;
  padding: 0;
  border: 0;
  background: none;
  font-size: var(--fs-small);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.size-guide-link .icon { width: 20px; height: 20px; }

/* Size guide: bottom sheet on phones, centred card from 769px */
.modal--size-guide {
  width: 100%;
  max-height: 88dvh;
  margin: auto 0 0;
  border-radius: var(--radius-sheet) var(--radius-sheet) 0 0;
}
.modal--size-guide[open] { animation: ci-sheet-up 0.3s var(--ease-drawer); }
@keyframes ci-sheet-up { from { transform: translateY(40px); opacity: 0; } }
.modal--size-guide .modal__inner { padding: 30px 16px calc(24px + env(safe-area-inset-bottom)); }
.size-guide__head { display: flex; align-items: center; justify-content: center; gap: 10px; margin-bottom: 6px; }
.size-guide__head .icon { width: 26px; height: 26px; }
.size-guide__head .modal__title { margin: 0; }
.size-guide__current {
  width: fit-content;
  margin: 10px auto 0;
  padding: 4px 14px;
  border-radius: 999px;
  background: var(--color-variant-selected);
  color: var(--color-variant-selected-text);
  font-size: var(--fs-small);
}
.size-guide { margin-top: 16px; }
.size-guide > p:first-child { margin-bottom: 16px; color: var(--color-text-muted); font-size: var(--fs-small); text-align: center; }
.size-guide > p:last-child { margin: 18px 0 0; color: var(--color-text-muted); font-size: var(--fs-xsmall); text-align: center; }
.size-guide table {
  margin: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--account-card-radius);
  border-collapse: separate;
  border-spacing: 0;
  overflow: hidden;
  background: var(--color-surface);
  font-variant-numeric: tabular-nums;
  table-layout: fixed;
}
.size-guide th, .size-guide td { padding: 9px 4px; border: 0; }
.size-guide th {
  background: var(--color-button);
  color: var(--color-button-text);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
  letter-spacing: var(--ls-base);
  line-height: 1.2;
  text-transform: uppercase;
}
.size-guide td { border-top: 1px solid var(--color-border); }
.size-guide tbody tr:first-child td { border-top: 0; }
.size-guide tbody tr:nth-child(even) td { background: var(--color-bg); }
.size-guide td:first-child { font-weight: var(--fw-bold); }
.size-guide tbody tr.is-selected td { background: var(--color-variant-selected); color: var(--color-variant-selected-text); font-weight: var(--fw-bold); }
.size-guide h3 { margin: 26px 0 12px; font-size: var(--fs-base); }
.size-guide ol { margin: 0; padding: 0; list-style: none; counter-reset: size-step; }
.size-guide ol li { position: relative; margin-bottom: 10px; padding-left: 36px; counter-increment: size-step; }
.size-guide ol li::before {
  content: counter(size-step);
  position: absolute;
  top: 0;
  left: 0;
  display: grid;
  place-items: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--color-button);
  color: var(--color-button-text);
  font-size: var(--fs-xsmall);
  font-weight: var(--fw-bold);
}
@media (min-width: 769px) {
  .modal--size-guide { width: min(620px, calc(100% - 34px)); margin: auto; border-radius: var(--radius-sheet); }
  .modal--size-guide .modal__inner { padding: 40px 40px 34px; }
  .size-guide th, .size-guide td { padding: 10px 8px; }
}
@media (prefers-reduced-motion: reduce) { .modal--size-guide[open] { animation: none; } }

/* WC's own variation price/stock are replaced by ours (kept in DOM for plugins) */
.woocommerce-variation-price, .woocommerce-variation-availability { display: none; }
.woocommerce-variation-description { margin-bottom: 15px; }
.variations_form .stock.out-of-stock, .summary > .stock { margin-bottom: 15px; }

/* Stock line */
.selling-points { margin: 0 0 22px; padding: 0; list-style: none; }
.selling-points__item { display: flex; align-items: center; gap: 10px; font-size: 15px; font-weight: var(--fw-regular); letter-spacing: normal; }
.product-stock__dot { display: inline-flex; flex: none; width: 9px; height: 9px; }
.product-stock__dot::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--color-stock-ok); }
.product-stock--low .product-stock__dot::before { background: var(--color-stock-low); }
.product-stock--out .product-stock__dot::before { background: var(--color-stock-out); }

/* Quantity stepper + add to cart: stacked on phones, one row from 769px */
/* !important: WooCommerce's variation script sets display:block inline on .quantity */
.product--no-qty form.cart .quantity,
.quick-shop--no-qty form.cart .quantity { display: none !important; }
form.cart .quantity { margin-bottom: 12px; }
form.cart .quantity.is-stepper {
  display: inline-flex !important;
  align-items: stretch;
  width: 132px;
  height: var(--atc-h);
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}
form.cart .quantity input { width: 80px; text-align: center; }
form.cart .quantity.is-stepper input {
  flex: 1;
  width: 0;
  min-width: 0;
  height: auto;
  min-height: 0;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font-size: 16px;
  text-align: center;
  -moz-appearance: textfield;
}
form.cart .quantity.is-stepper input::-webkit-inner-spin-button,
form.cart .quantity.is-stepper input::-webkit-outer-spin-button { margin: 0; -webkit-appearance: none; }
.qty-step { flex: none; width: 44px; padding: 0; border: 0; background: none; color: var(--color-text); font-size: 20px; cursor: pointer; }
.qty-step:hover { background: var(--color-bg); }
.single_add_to_cart_button.button {
  display: flex;
  width: calc(100% - 12px);
  min-height: var(--atc-h);
  margin: 0 6px;
  padding-block: 0;
  font-size: 13px;
  font-weight: var(--fw-bold);
  letter-spacing: 0.28em;
}
form.cart:not(.variations_form) { margin-bottom: 0; }

/* Express checkout slot (filled by payment plugins) */
.express-checkout { margin-top: 16px; }
.express-checkout__label {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 0 0 10px;
  color: var(--color-text-muted);
  font-size: var(--fs-eyebrow);
  letter-spacing: 0.24em;
  text-transform: uppercase;
}
.express-checkout__label::before, .express-checkout__label::after { content: ""; flex: 1; border-top: 1px solid var(--color-border); }

/* Trust lines + authenticity box */
.trust-lines { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 22px 0 0; padding: 0; list-style: none; }
.trust-lines__item { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: var(--fw-regular); letter-spacing: normal; }
.trust-lines__check { display: grid; flex: none; place-items: center; width: 16px; height: 16px; border-radius: 50%; background: var(--color-text); color: var(--color-surface); }
.trust-lines__check .icon { width: 10px; height: 10px; stroke-width: 7px; }
.authenticity {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 22px;
  padding: 16px 18px;
  border: 1px solid var(--color-accent);
  background: var(--color-section-alt);
}
.authenticity__badge {
  display: grid;
  flex: none;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--color-text);
  color: var(--color-accent);
  font-family: var(--font-heading);
  font-size: 13px;
  font-weight: var(--fw-heading);
  letter-spacing: 0.04em;
}
.authenticity__title { margin: 0 0 4px; font-size: 13px; font-weight: var(--fw-bold); letter-spacing: 0.18em; line-height: 1.25; text-transform: uppercase; }
.authenticity__text { margin: 0; font-size: 14px; line-height: 1.45; letter-spacing: normal; }
.authenticity__link { font-weight: var(--fw-medium); text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }

.trust-badges { margin-top: 20px; text-align: center; }
.trust-badges__title { margin-bottom: 10px; font-size: var(--fs-small); }
.trust-badges .payment-icons { gap: 6px; }

/* Accordions under the product (design v2): one bordered 800px box, centred spaced titles */
.single-product div.product > .product-accordions { grid-column: 1 / -1; }
.product-accordions {
  width: 100%;
  max-width: var(--accordion-width);
  margin: 48px auto 0;
  border: 1px solid var(--color-border);
  background: var(--color-surface);
}
.product-accordion + .product-accordion { border-top: 1px solid var(--color-border); }
.product-accordion__title {
  position: relative;
  display: block;
  padding: 21px 48px;
  font-size: 13px;
  font-weight: var(--fw-regular);
  letter-spacing: 0.3em;
  line-height: 1.25;
  text-align: center;
  text-transform: uppercase;
  list-style: none;
  cursor: pointer;
}
.product-accordion__title::-webkit-details-marker { display: none; }
.product-accordion__title:focus-visible { outline: 2px solid var(--color-focus); outline-offset: -4px; }
.product-accordion__icon { position: absolute; top: 50%; right: 22px; width: 12px; height: 12px; margin-top: -6px; stroke-width: 6px; transition: transform 0.2s ease; }
.product-accordion[open] .product-accordion__icon { transform: rotate(180deg); }
.product-accordion__content { padding: 6px 20px 28px; font-size: 16px; line-height: 1.6; letter-spacing: normal; }
.product-accordion__content > :last-child { margin-bottom: 0; }
/* Imported descriptions carry their own headings and photos: content-sized here */
.product-accordion__content :is(h1, h2, h3, h4) { margin: 0 0 12px; font-size: 16px; line-height: 1.35; letter-spacing: 0.04em; text-align: left; }
.product-accordion__content img { display: block; width: 100%; max-width: 480px; height: auto; margin: 10px auto 16px; }
.product-details { margin: 0; }
.product-details > div { display: flex; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--color-border); }
.product-details > div:last-child { border-bottom: 0; }
.product-details dt { flex: 0 0 120px; color: var(--color-text-muted); }
.product-details dd { margin: 0; }


/* ---------- Reviews section (Loox-style) ---------- */
.product-reviews {
  grid-column: 1 / -1;
  margin-top: var(--product-section-gap);
  padding-block: var(--home-section-pad);
  border-top: 1px solid var(--color-border);
  /* Edge-to-edge line while the content keeps the 1200px column (outset = no horizontal scroll) */
  border-image: linear-gradient(var(--color-border), var(--color-border)) 1 / 1px 0 0 / 0 100vmax;
}
.reviews__title { margin: 0 0 28px; font-size: var(--fs-section-title); text-align: center; }
.reviews__notice { margin: 0 auto 20px; padding: 12px 16px; max-width: 520px; background: var(--color-section-alt); font-size: var(--fs-small); text-align: center; }
.reviews__head { display: grid; gap: 32px; }
.reviews__summary { display: grid; gap: 14px; }
.reviews__score { display: flex; align-items: center; gap: 16px; }
.reviews__average { font-family: var(--font-heading); font-size: 56px; font-weight: var(--fw-heading); line-height: 1; }
.reviews__score-meta { display: flex; flex-direction: column; gap: 6px; }
.reviews__score .ci-stars--lg { --star-size: 22px; }
.reviews__based { color: var(--color-text-muted); font-size: 14px; letter-spacing: normal; }
.reviews__bars { display: grid; gap: 11px; width: 100%; max-width: 416px; margin: 0; padding: 0; list-style: none; }
.reviews__bar-row { display: grid; grid-template-columns: 28px 1fr 28px; align-items: center; gap: 12px; font-size: 14px; letter-spacing: normal; }
.reviews__bar-label { white-space: nowrap; }
.reviews__bar { height: 8px; background: var(--color-bar-track); overflow: hidden; }
.reviews__bar > span { display: block; height: 100%; background: var(--color-text); }
.reviews__bar-count { color: var(--color-text-muted); text-align: right; }
.reviews__actions { margin-top: 18px; }
.reviews__actions .btn { white-space: nowrap; }
.reviews__empty { display: grid; justify-items: center; gap: 14px; text-align: center; }
.reviews__empty p { margin: 0; }

.reviews__photos-title { margin: 0 0 14px; font-family: var(--font-body); font-size: var(--fs-eyebrow); font-weight: var(--fw-regular); letter-spacing: 0.28em; text-transform: uppercase; }
.reviews__photo-strip { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.reviews__photo { position: relative; display: block; width: 100%; padding: 0; border: 0; background: var(--color-section-alt); cursor: zoom-in; }
.reviews__photo img { display: block; width: 100%; height: auto; aspect-ratio: 1; object-fit: cover; transition: opacity 0.2s ease; }
.reviews__photo:hover img { opacity: 0.85; }
.reviews__photo-more { position: absolute; inset: 0; display: grid; place-items: center; background: color-mix(in srgb, var(--brand-navy) 55%, transparent); color: var(--color-on-image); font-size: 15px; font-weight: var(--fw-bold); }

/* Review cards: even rows (design v2) */
.reviews__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  margin: 40px 0 0;
  padding: 0;
  list-style: none;
}
.review-card { padding: 22px; border: 1px solid var(--color-border); background: var(--color-surface); text-align: left; }
.review-card__meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0 0 12px; }
.review-card__meta .ci-stars { --star-size: 16px; }
.review-card__date { color: var(--color-text-muted); font-size: 13px; letter-spacing: normal; }
.review-card__author { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; margin: 0 0 12px; }
.review-card__name { font-size: 16px; font-weight: var(--fw-bold); letter-spacing: normal; }
.review-card__verified { padding: 4px 8px; background: var(--color-accent); color: var(--color-on-accent); font-size: 10px; font-weight: var(--fw-bold); letter-spacing: 0.16em; line-height: 1.3; text-transform: uppercase; }
.review-card__text { font-size: 15px; line-height: 1.6; letter-spacing: normal; overflow-wrap: anywhere; }
.review-card__text p { margin: 0 0 8px; }
.review-card__text p:last-child { margin-bottom: 0; }
.review-card__thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 0; padding: 0; list-style: none; }
.review-card__thumbs button { display: block; padding: 0; border: 0; background: var(--color-section-alt); cursor: zoom-in; }
.review-card__thumbs img { display: block; width: 72px; height: 72px; object-fit: cover; }
.review-card__reply { margin-top: 12px; padding: 10px 12px; background: var(--color-section-alt); font-size: var(--fs-small); }
.review-card__reply-title { margin: 0 0 4px; font-weight: var(--fw-bold); }
.review-card__reply p { margin: 0; }
.reviews__more { margin-top: 48px; text-align: center; }

/* Review form (WooCommerce comment form + CusRev's photo upload field) */
.review-form { max-width: 640px; margin: 35px auto 0; padding: 25px 20px; border: 1px solid var(--color-border); }
.review-form .comment-reply-title { margin-bottom: 18px; font-size: var(--fs-h3); text-align: center; }
.review-form .comment-form { display: grid; gap: 16px; }
.review-form .comment-form > p, .review-form .comment-form-rating { margin: 0; }
.review-form label { display: block; margin-bottom: 6px; font-size: var(--fs-label); letter-spacing: var(--ls-wider); text-transform: uppercase; }
.review-form .required { color: inherit; text-decoration: none; }
.review-form .comment-form-cookies-consent label { display: inline; letter-spacing: var(--ls-base); text-transform: none; }
.review-form .comment-form-cookies-consent { display: flex; align-items: flex-start; gap: 8px; font-size: var(--fs-small); }
.review-form .form-submit { margin: 0; text-align: center; }
.review-form__submit { min-width: 220px; }
.review-form p.stars { margin: 0; }
.cr-upload-local-images { margin-top: 12px; }
.cr-upload-local-images input[type="file"] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.review-form .cr-upload-images-status {
  display: block;
  margin: 0;
  padding: 14px;
  border: 1px dashed color-mix(in srgb, var(--color-text) 35%, transparent);
  font-size: var(--fs-small);
  letter-spacing: var(--ls-base);
  text-align: center;
  text-transform: none;
  cursor: pointer;
}
.cr-upload-images-status:hover, .cr-upload-local-images input:focus-visible + * { border-color: var(--color-text); }
.cr-upload-images-preview { display: flex; flex-wrap: wrap; gap: 8px; }
.cr-upload-images-preview:not(:empty) { margin-bottom: 10px; }
.cr-upload-images-containers { position: relative; width: 64px; height: 64px; }
.cr-upload-images-preview img, .cr-upload-video-thumbnail { width: 64px; height: 64px; object-fit: cover; }
.cr-upload-images-pbar { position: absolute; right: 4px; bottom: 4px; left: 4px; height: 3px; background: color-mix(in srgb, var(--color-bg) 70%, transparent); }
.cr-upload-images-pbarin { width: 0; height: 100%; background: var(--color-text); transition: width 0.2s linear; }
.cr-upload-ok .cr-upload-images-pbar { display: none; }
.cr-upload-images-delete {
  position: absolute;
  top: -7px;
  right: -7px;
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 2px solid var(--color-bg);
  border-radius: 50%;
  background: var(--color-text);
  color: var(--color-bg);
  font-size: 11px;
  line-height: 1;
  cursor: pointer;
}
.cr-upload-images-delete > * { display: none; } /* CusRev's icon-font span; its font isn't loaded */
.cr-upload-images-delete::before { content: "\2715"; } /* ✕ (escaped: the CSS is served without a charset) */
.cr-upload-images-delete-spinner, .cr-upload-images-ids { display: none; }
.review-form .cr-upload-images-status-error { border-color: var(--color-savings); color: var(--color-savings); }

/* Customer photo lightbox */
.modal--review-photo { width: min(960px, calc(100% - 34px)); }
.review-photo { display: grid; gap: 18px; }
.review-photo__img { width: 100%; max-height: 70vh; object-fit: contain; background: var(--color-section-alt); }
.review-photo__review .review-card__thumbs { display: none; }
.review-photo__review:empty { display: none; }

@media (min-width: 769px) {
  .reviews__title { margin-bottom: 48px; }
  .reviews__head { grid-template-columns: 416px minmax(0, 1fr); column-gap: 72px; align-items: start; }
  .reviews__photo-strip { grid-template-columns: repeat(8, 72px); }
  .reviews__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 56px; }
  .review-form { padding: 35px 40px; }
  .review-photo { grid-template-columns: 1.6fr 1fr; align-items: start; }
}

/* Star picker on the review form (WooCommerce turns the rating <select> into p.stars links) */
p.stars a { display: inline-block; width: 1.2em; overflow: hidden; font-size: 20px; white-space: nowrap; color: var(--color-text); text-indent: 1.2em; position: relative; }
p.stars a::before { content: "\2606"; /* ☆ — escaped: served without a charset, a literal glyph can turn into "â˜†" */ position: absolute; left: 0; top: 0; text-indent: 0; }
p.stars:hover a::before, p.stars.selected a::before { content: "\2605"; } /* ★ */
p.stars a:hover ~ a::before, p.stars.selected a.active ~ a::before { content: "\2606"; }

/* ---------- Sticky add to cart (mobile) ---------- */
.sticky-atc {
  position: fixed;
  inset: auto 0 0 0;
  z-index: 15;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 16px calc(11px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--color-border);
  background: var(--color-surface);
  box-shadow: var(--shadow-bar);
  transform: translateY(110%);
  transition: transform 0.3s var(--ease-drawer);
}
.sticky-atc.is-visible { transform: none; }
.sticky-atc__media img { display: block; width: 48px; height: 48px; object-fit: cover; }
.sticky-atc__info { flex: 1; min-width: 0; }
.sticky-atc__price { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 8px; font-size: 16px; font-weight: var(--fw-medium); line-height: 1.25; letter-spacing: normal; }
.sticky-atc__price .price__compare { margin: 0; color: var(--color-text-muted); font-size: 13px; font-weight: var(--fw-regular); }
.sticky-atc__price .price__savings { display: none; } /* design: compare + price only */
.sticky-atc__variant { margin: 3px 0 0; overflow: hidden; color: var(--color-text-muted); font-size: 13px; font-weight: var(--fw-regular); letter-spacing: normal; line-height: 1.25; white-space: nowrap; text-overflow: ellipsis; }
.sticky-atc__variant:empty { display: none; }
.sticky-atc__button.btn { flex: none; min-width: 162px; min-height: 48px; padding: 0 22px; font-size: 12px; font-weight: var(--fw-bold); letter-spacing: 0.22em; white-space: nowrap; }
.sticky-atc__button.is-disabled { opacity: 0.5; }
body.has-sticky-atc .site-footer { padding-bottom: 110px; }
@media (prefers-reduced-motion: reduce) { .sticky-atc { transition: none; } }

/* ---------- Quick Shop content (this file is loaded on demand on collection pages) ---------- */
.quick-shop { display: grid; gap: 25px; }
.quick-shop__media { display: flex; gap: 15px; align-items: flex-start; }
.quick-shop__thumbs { display: flex; flex-direction: column; gap: 15px; width: 80px; flex: none; }
.quick-shop__thumb { display: block; padding: 0; border: 2px solid transparent; background: none; }
.quick-shop__thumb.is-active { border-color: var(--color-text); }
.quick-shop__thumb img { width: 76px; height: 76px; object-fit: cover; }
.quick-shop__main { flex: 1; min-width: 0; }
.quick-shop__main img { width: 100%; height: auto; }
.quick-shop .summary { margin-top: 0; }
.quick-shop__details { margin-top: 20px; text-align: center; }
.quick-shop .single_variation_wrap { display: block; }

/* ---------- Desktop ---------- */
@media (min-width: 769px) {
  /* Design v2: 1200px content, gallery 686px (80 thumbs + 16 + 590 image), 64px gap, info 450px */
  .single-product .wc-page { max-width: calc(var(--home-width) + 2 * var(--page-gutter)); }
  .single-product div.product {
    display: grid;
    grid-template-columns: minmax(0, 686fr) minmax(0, 450fr);
    column-gap: 64px;
    align-items: start;
    padding-top: 48px;
  }
  .single-product div.product > * { grid-column: 1 / -1; }
  .single-product div.product > .woocommerce-product-gallery { grid-column: 1; }
  .single-product div.product > .summary { grid-column: 2; }

  .woocommerce-product-gallery { margin: 0; overflow: visible; }
  /* Thumbnails beside: a fixed 80px column on the left, as tall as the main image */
  .woocommerce-product-gallery:has(.woocommerce-product-gallery__image + .woocommerce-product-gallery__image) { --slide-w: 100cqw; padding-left: 96px; }
  .woocommerce-product-gallery:has(.woocommerce-product-gallery__image + .woocommerce-product-gallery__image):not(:has(.flex-control-nav)) { padding-bottom: 0; }
  .woocommerce-product-gallery:has(.woocommerce-product-gallery__image + .woocommerce-product-gallery__image) > .woocommerce-product-gallery__wrapper,
  .woocommerce-product-gallery .flex-viewport { width: auto; margin: 0; overflow: hidden !important; }
  .woocommerce-product-gallery .flex-viewport .woocommerce-product-gallery__image { padding-inline: 0; }
  .woocommerce-product-gallery .flex-control-thumbs {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: flex-start;
    gap: 10px;
    width: 80px;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    scrollbar-width: none;
  }
  .flex-control-thumbs li { flex: none; width: 80px; height: 80px; background: none; }
  .flex-control-thumbs li:has(.flex-active) { width: 80px; height: 80px; background: none; }
  .flex-control-thumbs img { opacity: 1; object-fit: cover; border: 1px solid var(--color-border); }
  .flex-control-thumbs img.flex-active { border-color: var(--color-text); }
  .gallery-badge { top: 14px; left: 110px; }
  .gallery-counter { display: none; }
  /* Zoom button as the design's "Hover to zoom" label (label text set by product.js; WC keeps the a11y text) */
  .woocommerce-product-gallery__trigger[data-label] {
    right: 14px;
    bottom: 14px;
    width: auto;
    height: auto;
    padding: 6px 10px;
    border-radius: 0;
    font-size: 0;
  }
  .woocommerce-product-gallery__trigger[data-label]::before {
    content: attr(data-label);
    width: auto;
    height: auto;
    background: none;
    font-size: 12px;
    letter-spacing: normal;
    -webkit-mask: none;
    mask: none;
  }

  .summary { margin-top: 0; }
  .variant-buttons { grid-template-columns: repeat(6, minmax(0, 1fr)); }
  .variant-buttons--swatches { display: flex; }
  /* Quantity and add to cart on one row */
  .woocommerce-variation-add-to-cart, form.cart:not(.variations_form) { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0 12px; }
  .woocommerce-variation-add-to-cart > .selling-points, form.cart:not(.variations_form) > .selling-points { flex-basis: 100%; }
  form.cart .quantity.is-stepper { margin: 0; }
  .single_add_to_cart_button.button { flex: 1; width: auto; margin: 0 6px 0 0; }
  .single-product div.product > .product-accordions { margin-top: 86px; }
  .product-accordion__content { padding: 6px 40px 30px; }
  .sticky-atc { display: none; }
  .quick-shop { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; }
  .quick-shop .summary { padding-left: 45px; }
}

/* ---------- Video reviews (shared component) inside the product column ---------- */
.single-product div.product > .product-videos { grid-column: 1 / -1; }
.product-videos {
  /* Edge-to-edge sand band while the content keeps the 1200px column */
  border-image: linear-gradient(var(--color-section-alt), var(--color-section-alt)) fill 0 / 0 / 0 100vmax;
}
.product-videos .home-width { max-width: none; padding-inline: 0; }

/* ---------- You may also like / Recently viewed (homepage card + grid, design v2) ---------- */
.single-product div.product > .product-related, .single-product div.product > .product-recent { grid-column: 1 / -1; }
.product-related { padding-top: var(--home-section-pad); }
.product-recent { padding-block: 32px var(--home-section-pad); }
.product-recent:not(:has(.products)) { padding: 0; } /* nothing loaded yet: no gap */
.product-recent:not(:has(.products)) .product-recent__title { display: none; }
.product-recent__title { margin: 0 0 24px; font-size: 16px; line-height: 1.1; }
/* Compact cards (design: 6 columns, smaller type, no "Save %") */
.product-recent .home-products--compact.products { gap: 24px 10px; }
.product-recent .home-products--compact.home-products--carousel.products { grid-auto-columns: 34vw; }
.product-recent .home-products--compact .product-card__meta { padding-top: 10px; }
.product-recent .home-products--compact .product-card__brand { margin-bottom: 3px; font-size: 10px; }
.product-recent .home-products--compact .product-card__title { font-size: 14px; line-height: 1.3; }
.product-recent .home-products--compact .product-card__price { margin-top: 3px; font-size: 14px; }
.product-recent .home-products--compact .price__savings { display: none; }
@media (min-width: 769px) {
  .product-recent { padding-top: 56px; }
  .product-recent__title { margin-bottom: 28px; font-size: 20px; }
  .product-recent .home-products--compact.products { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 24px 16px; }
}
