/* =============================================================================
   PP v2 — Single product page (PDP, restyle-in-place) — Phase 5 / Task 5.1
   -----------------------------------------------------------------------------
   Emitted as a raw <link> at wp_head:1005 (after design-system @1001,
   header-footer @1002, home @1003, shop @1004), single product pages only
   (is_product). EVERY rule is scoped under body.pp-theme-v2 so the sheet is
   inert on any other theme/context.

   This is a RESTYLE-IN-PLACE layer: the default WooCommerce single-product
   template is left in place, so every existing PDP "section" feature keeps
   firing on its own hook (variation swatches, price, bulk cards/upsell, COA
   tab + spec tiles, sticky cart, MoA). This sheet:
     - neutralises the legacy dark WooCommerce PDP rules in style.css (which
       carry !important on .woocommerce div.product / .summary / span.price /
       .variable-item / .quantity .qty / .onsale / .woocommerce-tabs);
     - lays out the page light/airy: floating cutout gallery well, light buy
       box, concentration pills, light qty + add-to-cart, light bulk cards,
       COA card, trust grid, RUO band, accordion;
     - adds the new ppv2-pdp-* element styles for the markup injected by
       inc/sections/pdp-v2-aminoclub.php and the accordion JS.

   Tokens from pp-v2-design-system.css (--pp-navy / --pp-blue / --pp-gold-text
   / --pp-slate / --pp-line / --ppv2-* radii/shadows). Never gold-on-white text
   — use --pp-gold-text. Pills ≥46px tall; qty/add ≥44px; AA contrast.

   Breakpoints: mobile-first base, then 768 (tablet) / 1024 (desktop).
   ============================================================================= */

/* ---------------------------------------------------------------------------
   0. PAGE FRAME — relax GP article chrome; the v2 light gradient (from the
   design system) shows through. Neutralise the legacy dark product bg.
   --------------------------------------------------------------------------- */

body.pp-theme-v2.single-product .inside-article {
  padding: 0 !important;
  border: 0;
  background: transparent;
  box-shadow: none;
}

body.pp-theme-v2.single-product .woocommerce div.product,
body.pp-theme-v2.single-product div.product {
  background: transparent !important;
  color: var(--pp-ink) !important;
  margin-bottom: 0 !important;
  position: relative;
}

/* Hide the legacy spinning-logo overlay pseudo-element on PDP gallery links
   (it was added for the old dark loop cards; not wanted on the PDP). */
body.pp-theme-v2.single-product div.product a.woocommerce-product-gallery__image::after {
  content: none !important;
}

/* ---------------------------------------------------------------------------
   1. BREADCRUMB — light, slim. Override legacy muted-grey rule.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce .woocommerce-breadcrumb {
  margin: 0 0 18px !important;
  padding: 0 !important;
  font-family: var(--ppv2-font-body);
  font-size: 13px !important;
  color: var(--pp-slate) !important;
  line-height: 1.5;
}
body.pp-theme-v2 .woocommerce .woocommerce-breadcrumb a,
body.pp-theme-v2 .woocommerce .woocommerce-breadcrumb a:link {
  color: var(--pp-blue) !important;
  text-decoration: none;
}
body.pp-theme-v2 .woocommerce .woocommerce-breadcrumb a:hover {
  color: var(--pp-blue-hover) !important;
  text-decoration: underline;
}

/* ---------------------------------------------------------------------------
   2. TWO-COLUMN LAYOUT — gallery (left) + buy box (right) on desktop.
   product-layout-v2.php uses CSS grid via its own body class on wide screens;
   we provide a robust mobile-first flex/grid here that coexists. WC default
   floats .images / .summary at 48% each — we override to a clean grid.
   --------------------------------------------------------------------------- */

body.pp-theme-v2.single-product div.product {
  display: block;
}

/* Mobile: single column, gallery then summary (natural source order). */
body.pp-theme-v2.single-product div.product > .woocommerce-product-gallery,
body.pp-theme-v2.single-product div.product > .images,
body.pp-theme-v2.single-product div.product > .summary,
body.pp-theme-v2.single-product div.product > .entry-summary {
  float: none !important;
  width: 100% !important;
  margin: 0 0 22px !important;
}

/* ---------------------------------------------------------------------------
   3. GALLERY — floating cutout on a light well with soft shadow + chips.
   The WC gallery wrapper is .woocommerce-product-gallery.images (position
   relative). We give it a light card well and float the image.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product div.images.woocommerce-product-gallery {
  position: relative;
  background:
    radial-gradient(60% 50% at 50% 88%, rgba(0, 41, 82, 0.07) 0%, rgba(0, 41, 82, 0) 70%),
    linear-gradient(180deg, #ffffff 0%, #f1f6fc 100%) !important;
  border: 1px solid var(--pp-line) !important;
  border-radius: var(--ppv2-radius-lg) !important;
  box-shadow: var(--ppv2-shadow-card);
  padding: 26px 22px 18px !important;
  overflow: hidden !important;
  margin-bottom: 22px !important;
}

/* The main image — floated cutout look (drop shadow, capped height). */
body.pp-theme-v2 .woocommerce div.product div.images .woocommerce-product-gallery__wrapper {
  margin: 0 !important;
  padding: 0 !important;
}
body.pp-theme-v2 .woocommerce div.product div.images .woocommerce-product-gallery__image,
body.pp-theme-v2 .woocommerce div.product div.images .woocommerce-product-gallery__image:first-child {
  display: flex !important;
  align-items: center;
  justify-content: center;
}
body.pp-theme-v2 .woocommerce div.product div.images .woocommerce-product-gallery__image a {
  display: block;
  outline-offset: -2px;
}
body.pp-theme-v2 .woocommerce div.product div.images img {
  display: block;
  width: auto !important;
  max-width: 86% !important;
  height: auto !important;
  max-height: 360px;
  margin: 0 auto !important;
  object-fit: contain;
  box-shadow: none !important;
  filter: drop-shadow(0 14px 22px rgba(0, 41, 82, 0.20));
}

/* Gallery zoom trigger — keep but make it light. */
body.pp-theme-v2 .woocommerce div.product div.images .woocommerce-product-gallery__trigger {
  background: #ffffff !important;
  border: 1px solid var(--pp-line) !important;
  box-shadow: var(--ppv2-shadow-card);
  z-index: 4;
}

/* Thumbnail strip (when multiple images) — light pills. */
body.pp-theme-v2 .woocommerce div.product div.images .flex-control-thumbs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 14px 0 0;
  padding: 0;
  list-style: none;
}
body.pp-theme-v2 .woocommerce div.product div.images .flex-control-thumbs li {
  width: 56px;
  margin: 0;
}
body.pp-theme-v2 .woocommerce div.product div.images .flex-control-thumbs li img {
  width: 56px !important;
  height: auto !important;
  border: 2px solid var(--pp-line) !important;
  border-radius: var(--ppv2-radius-sm);
  background: #fff;
  opacity: 0.7;
  filter: none;
  transition: border-color var(--ppv2-ease), opacity var(--ppv2-ease);
}
body.pp-theme-v2 .woocommerce div.product div.images .flex-control-thumbs li img:hover,
body.pp-theme-v2 .woocommerce div.product div.images .flex-control-thumbs li img.flex-active {
  border-color: var(--pp-blue) !important;
  opacity: 1;
}

/* Gallery overlay chips (injected by pp_pdp_v2_gallery_chips) */
body.pp-theme-v2 .ppv2-pdp-gallery-chips {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 5;
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  max-width: calc(100% - 32px);
}
body.pp-theme-v2 .ppv2-pdp-chip {
  /* inherits .ppv2-chip base (design system); these tune the PDP variants */
  padding: 5px 12px;
  font-size: 11.5px;
  box-shadow: 0 2px 8px rgba(0, 41, 82, 0.16);
}
body.pp-theme-v2 .ppv2-pdp-chip--sale {
  background-color: #f0a500;
  color: #1a1206;
  border: 1px solid #d98e00;
}
body.pp-theme-v2 .ppv2-pdp-chip--coa {
  background-color: var(--pp-navy);
  color: #ffffff;
  border: 1px solid var(--pp-navy);
}

/* Neutralise the legacy diagonal "Sale!" ribbon on the PDP — we use the chip
   instead. The legacy onsale flash is .onsale.wdr-onsale. */
body.pp-theme-v2 .woocommerce div.product span.onsale {
  position: absolute !important;
  top: 16px !important;
  right: 16px !important;
  left: auto !important;
  transform: none !important;
  width: auto !important;
  min-width: 0 !important;
  padding: 5px 12px !important;
  background: var(--pp-navy) !important;
  color: #fff !important;
  font-family: var(--ppv2-font-body) !important;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  letter-spacing: 0.04em !important;
  text-transform: uppercase !important;
  border-radius: 20px !important;
  box-shadow: 0 2px 8px rgba(0, 41, 82, 0.16) !important;
  z-index: 5 !important;
  line-height: 1.4 !important;
}

/* ---------------------------------------------------------------------------
   4. BUY BOX (.summary) — light column. Override legacy silver text rules.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product .summary,
body.pp-theme-v2 .woocommerce div.product .entry-summary {
  background: transparent !important;
  color: var(--pp-ink) !important;
  padding: 0 !important;
}

/* Eyebrow ("<category> · RUO") */
body.pp-theme-v2 .ppv2-pdp-eyebrow-wrap {
  margin: 0 0 6px;
}
body.pp-theme-v2 .ppv2-pdp-eyebrow {
  margin: 0;
}
body.pp-theme-v2 .ppv2-pdp-eyebrow-sep {
  color: var(--pp-line);
  font-weight: 700;
}

/* Title — light navy, no uppercase, override legacy 2.8rem uppercase silver. */
body.pp-theme-v2 .woocommerce div.product .product_title,
body.pp-theme-v2 .woocommerce div.product h1.product_title {
  font-family: var(--ppv2-font-heading) !important;
  font-size: clamp(1.7rem, 4.5vw, 2.3rem) !important;
  font-weight: 800 !important;
  line-height: 1.14 !important;
  letter-spacing: -0.01em !important;
  text-transform: none !important;
  color: var(--pp-navy) !important;
  margin: 0 0 6px !important;
  padding: 0 !important;
}

/* Subtitle */
body.pp-theme-v2 .ppv2-pdp-subtitle {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.55;
  color: var(--pp-slate);
}

/* Star rating + review count row */
body.pp-theme-v2 .woocommerce div.product .woocommerce-product-rating {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 14px;
  line-height: 1;
}
body.pp-theme-v2 .woocommerce .star-rating {
  color: var(--pp-gold) !important;        /* decoration-only gold is fine here */
  font-size: 1em;
}
body.pp-theme-v2 .woocommerce .star-rating::before {
  color: #d9e2ee !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-review-link {
  color: var(--pp-slate) !important;
  font-size: 13px;
  text-decoration: none;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-review-link:hover {
  color: var(--pp-blue) !important;
  text-decoration: underline;
}

/* Price — large navy, tabular figures; override legacy silver 1.6rem rule. */
body.pp-theme-v2 .woocommerce div.product p.price,
body.pp-theme-v2 .woocommerce div.product .summary .price,
body.pp-theme-v2 .woocommerce div.product span.price {
  color: var(--pp-navy) !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: clamp(1.6rem, 4vw, 2rem) !important;
  font-weight: 800 !important;
  line-height: 1.1 !important;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  margin: 0 0 14px !important;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
}
body.pp-theme-v2 .woocommerce div.product p.price del,
body.pp-theme-v2 .woocommerce div.product .price del,
body.pp-theme-v2 .woocommerce div.product .woocommerce-variation-price del {
  color: var(--pp-slate2) !important;
  font-size: 0.62em !important;
  font-weight: 600 !important;
  opacity: 1 !important;
  text-decoration: line-through;
}
body.pp-theme-v2 .woocommerce div.product p.price ins,
body.pp-theme-v2 .woocommerce div.product .price ins,
body.pp-theme-v2 .woocommerce div.product .woocommerce-variation-price ins {
  background: transparent !important;
  color: var(--pp-navy) !important;
  text-decoration: none !important;
  font-weight: 800 !important;
}
/* "Save X%" pill (rendered by pdp-header-price-v2 / WC variation price as a
   .pp-save-pct or appended span; style any save badge we emit). */
body.pp-theme-v2 .woocommerce div.product .price .pp-save-pct,
body.pp-theme-v2 .ppv2-pdp-save {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  border-radius: 20px;
  background: #dcfce7;
  color: var(--pp-green);
  border: 1px solid #bbf7d0;
  font-family: var(--ppv2-font-body);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* Per-variation price block (WC injects .woocommerce-variation-price on
   variation select). Keep it on one line, navy, tabular. */
body.pp-theme-v2 .woocommerce div.product .woocommerce-variation-price .price {
  margin: 0 0 4px !important;
  font-size: clamp(1.5rem, 3.6vw, 1.9rem) !important;
}

/* ---------------------------------------------------------------------------
   5. CONCENTRATION pills (variation-swatches-v2) — ≥46px tall, light.
   Override the legacy dark .variable-item rules (background dark, silver).
   --------------------------------------------------------------------------- */

/* "CONCENTRATION" label — the variations table renders <th><label> per attr.
   We restyle the label as an uppercase eyebrow-ish heading. */
body.pp-theme-v2 .woocommerce div.product form.variations_form table.variations {
  margin: 0 0 14px !important;
  border: 0;
  width: 100%;
}
body.pp-theme-v2 .woocommerce div.product table.variations tbody,
body.pp-theme-v2 .woocommerce div.product table.variations tr {
  display: block;
}
body.pp-theme-v2 .woocommerce div.product table.variations th.label {
  display: block;
  width: auto;
  padding: 0 0 8px !important;
  text-align: left;
  vertical-align: top;
}
body.pp-theme-v2 .woocommerce div.product table.variations th.label label {
  font-family: var(--ppv2-font-body) !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  letter-spacing: 0.12em !important;
  text-transform: uppercase !important;
  color: var(--pp-slate) !important;
  margin: 0 !important;
}
body.pp-theme-v2 .woocommerce div.product table.variations td.value {
  display: block;
  padding: 0 !important;
}

/* The reset-variations link */
body.pp-theme-v2 .woocommerce div.product .reset_variations {
  display: inline-block;
  margin: 8px 0 0;
  font-size: 13px;
  color: var(--pp-blue) !important;
}

/* The pills themselves */
body.pp-theme-v2 .variable-items-wrapper {
  display: flex !important;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}
body.pp-theme-v2 .variable-items-wrapper .variable-item,
body.pp-theme-v2 .wvs-style-squared .variable-items-wrapper .variable-item,
body.pp-theme-v2 .wvs-style-rounded-square .variable-items-wrapper .variable-item {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-height: 46px !important;       /* spec: pills ≥46px tall */
  min-width: 64px !important;
  margin: 0 !important;
  padding: 10px 18px !important;
  background: #ffffff !important;
  border: 1.5px solid var(--pp-line) !important;
  border-radius: var(--ppv2-radius) !important;
  box-shadow: none !important;
  color: var(--pp-navy) !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  text-align: center;
  cursor: pointer;
  transition: border-color var(--ppv2-ease), background-color var(--ppv2-ease), box-shadow var(--ppv2-ease) !important;
}
body.pp-theme-v2 .variable-items-wrapper .variable-item .variable-item-contents,
body.pp-theme-v2 .variable-items-wrapper .variable-item .variable-item-span {
  line-height: 1.1;
}
body.pp-theme-v2 .variable-items-wrapper .variable-item:hover {
  border-color: var(--pp-blue) !important;
  background: #f6f9fd !important;
}
body.pp-theme-v2 .variable-items-wrapper .variable-item.selected,
body.pp-theme-v2 .variable-items-wrapper .variable-item:focus-visible {
  border-color: var(--pp-blue) !important;
  background: #eef4fc !important;
  color: var(--pp-blue) !important;
  box-shadow: 0 0 0 3px rgba(0, 61, 130, 0.16) !important;
  outline: none;
}
body.pp-theme-v2 .variable-items-wrapper .variable-item.disabled,
body.pp-theme-v2 .variable-items-wrapper .variable-item.wvs-disabled-archive-term {
  opacity: 0.4 !important;
  text-decoration: line-through;
  cursor: not-allowed;
}

/* ---------------------------------------------------------------------------
   6. QTY STEPPER + ADD TO CART — light, ≥44px. Override legacy dark input +
   silver button rules. The cart form is form.cart; qty is .quantity .qty.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product form.cart {
  margin: 6px 0 14px !important;
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 10px;
}
body.pp-theme-v2 .woocommerce div.product form.cart .quantity {
  display: inline-flex;
  align-items: stretch;
  border: 1.5px solid var(--pp-line);
  border-radius: var(--ppv2-radius);
  background: #fff;
  overflow: hidden;
}
body.pp-theme-v2 .woocommerce div.product form.cart .quantity .qty {
  width: 56px !important;
  min-height: 44px !important;
  text-align: center;
  border: 0 !important;
  background: #ffffff !important;
  color: var(--pp-navy) !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: 16px !important;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  padding: 0 6px !important;
  box-shadow: none !important;
}
/* +/- quantity buttons. The old `.woocommerce div.product …` descendant selector
   never matched on the single-product PDP (where `.woocommerce` sits on <body>),
   so the +/- fell back to navy-on-navy = invisible glyphs. Drop the `.woocommerce`
   anchor (so it matches) and make them navy with WHITE glyphs, matching the navy
   Add-to-cart. States included so the sitewide button press-style can't flash them
   white/black. */
body.pp-theme-v2 div.product form.cart .quantity .minus,
body.pp-theme-v2 div.product form.cart .quantity .plus {
  min-width: 40px;
  min-height: 44px;
  border: 1px solid #cdd9e8 !important;
  background: #e8eef6 !important;
  color: #002952 !important;
  font-size: 18px !important;
  font-weight: 700;
  cursor: pointer;
  /* GP injects the +/- as <a> links; a theme link rule underlines them, so the
     "-" reads as "=" and "+" as "±" (the "extra dash" on each button). Kill it. */
  text-decoration: none !important;
}
body.pp-theme-v2 div.product form.cart .quantity .minus::before,
body.pp-theme-v2 div.product form.cart .quantity .plus::before {
  color: #002952 !important;
}
body.pp-theme-v2 div.product form.cart .quantity .minus:hover::before,
body.pp-theme-v2 div.product form.cart .quantity .plus:hover::before,
body.pp-theme-v2 div.product form.cart .quantity .minus:focus::before,
body.pp-theme-v2 div.product form.cart .quantity .plus:focus::before {
  color: #ffffff !important;
}
body.pp-theme-v2 div.product form.cart .quantity .minus:hover,
body.pp-theme-v2 div.product form.cart .quantity .plus:hover,
body.pp-theme-v2 div.product form.cart .quantity .minus:focus,
body.pp-theme-v2 div.product form.cart .quantity .plus:focus,
body.pp-theme-v2 div.product form.cart .quantity .minus:active,
body.pp-theme-v2 div.product form.cart .quantity .plus:active {
  background: var(--pp-navy, #002952) !important;
  color: #ffffff !important;
  text-decoration: none !important;
}
/* (The extra qty-stepper underline override that used to live here is gone — the
   content-underline rule is now prose-scoped (pp-v2-design-system.css), so it no
   longer matches the GP <a class="minus/plus"> steppers. The base .minus/.plus
   rule above already sets text-decoration:none.) */

/* Add to cart button — primary blue, white text, ≥44px. Out-specify legacy
   silver !important button rules with high-specificity + !important. */
body.pp-theme-v2 .woocommerce div.product form.cart .single_add_to_cart_button,
body.pp-theme-v2 .woocommerce div.product form.cart button.single_add_to_cart_button {
  flex: 1 1 auto;
  min-height: 48px !important;
  padding: 12px 26px !important;
  background-color: var(--pp-blue) !important;
  background-image: none !important;
  color: #ffffff !important;
  border: 2px solid var(--pp-blue) !important;
  border-radius: var(--ppv2-radius) !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: 0.02em !important;
  text-transform: none !important;
  box-shadow: none !important;
  transition: background-color var(--ppv2-ease), box-shadow var(--ppv2-ease), transform var(--ppv2-ease) !important;
}
body.pp-theme-v2 .woocommerce div.product form.cart .single_add_to_cart_button:hover {
  background-color: var(--pp-blue-hover) !important;
  border-color: var(--pp-blue-hover) !important;
  color: #fff !important;
  box-shadow: 0 4px 16px rgba(0, 61, 130, 0.25) !important;
  transform: translateY(-1px);
}
body.pp-theme-v2 .woocommerce div.product form.cart .single_add_to_cart_button.disabled,
body.pp-theme-v2 .woocommerce div.product form.cart .single_add_to_cart_button:disabled {
  opacity: 0.55 !important;
  cursor: not-allowed;
  transform: none;
}

/* The single_variation_wrap holds the per-variation price/stock + button.
   Make the form go full-width inside it. */
body.pp-theme-v2 .woocommerce div.product .single_variation_wrap {
  margin-top: 6px;
}
body.pp-theme-v2 .woocommerce div.product .single_variation_wrap .woocommerce-variation-add-to-cart {
  display: flex;
  flex-wrap: wrap;
  align-items: stretch;
  gap: 10px;
  margin: 0;
}

/* Qty stepper + Add-to-cart on ONE row (button to the RIGHT of the +/- qty),
   matching the mockup. pp-pdp-summary-clean-v2 (critical-css) dissolves the
   wrapper with `display:contents` and forces every summary child to width:100%,
   which stacks qty above a full-width button. Re-establish the wrapper as a
   single horizontal flex row and let the button take the remaining width. The
   compound body.pp-theme-v2.pp-pdp-summary-clean-v2 + descendant chain
   out-specifies the critical-css rules (which are 0,2,1) and !important wins. */
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;          /* trust rows wrap BELOW the qty+button row */
  align-items: center !important;
  gap: 10px !important;
  width: 100% !important;
}
/* Row 1: qty stepper (auto width) on the left … */
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart > .quantity {
  width: auto !important;
  max-width: none !important;
  flex: 0 0 auto !important;
  order: 1 !important;
}
/* … Add-to-cart button to the RIGHT, filling the rest of row 1. */
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart > .single_add_to_cart_button,
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart > button.single_add_to_cart_button {
  flex: 1 1 0 !important;
  width: auto !important;
  max-width: none !important;
  min-width: 150px !important;
  margin: 0 !important;
  order: 2 !important;
}
/* Everything else in the wrapper (trust rows, hidden inputs, etc.) drops to its
   own full-width line(s) BELOW the qty+button row. */
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart > .pp-trust-row,
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap .woocommerce-variation-add-to-cart > *:not(.quantity):not(.single_add_to_cart_button) {
  flex: 1 0 100% !important;
  width: 100% !important;
  max-width: 100% !important;
  order: 3 !important;
}

/* ---------------------------------------------------------------------------
   7. BULK "buy more, save more" cards (bulk-cards-v2 / WDR table) — keep the
   data-driven table; restyle into a light hint band. The bulk-cards-v2 CSS in
   overrides.css already turns the table into cards via the body class; here we
   only make sure the colours read light on the v2 surface and add a hint line.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product .awdr-bulk-customizable-table,
body.pp-theme-v2 .woocommerce div.product table.awdr-bulk-customizable-table {
  margin: 4px 0 14px !important;
  background: transparent !important;
  border: 0 !important;
  color: var(--pp-navy) !important;
}
body.pp-theme-v2 .woocommerce div.product .awdr-bulk-customizable-table th,
body.pp-theme-v2 .woocommerce div.product .awdr-bulk-customizable-table td {
  color: var(--pp-navy) !important;
  border-color: var(--pp-line) !important;
  background: transparent !important;
}

/* Bulk discounts link + blurb (bulk-discounts-link-v2) */
body.pp-theme-v2 .pp-bulk-link {
  display: inline-block;
  font-family: var(--ppv2-font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pp-gold-text) !important;
  text-decoration: none;
  margin: 0 0 4px;
}
body.pp-theme-v2 .pp-bulk-link:hover {
  text-decoration: underline;
}
body.pp-theme-v2 .pp-bulk-blurb {
  margin: 0 0 10px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pp-slate);
}

/* Bulk tier upsell card (bulk-tier-upsell-v2) — light actionable band */
body.pp-theme-v2 .pp-bulk-upsell__btn {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 44px;
  padding: 10px 14px;
  background: #f6f9fd;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius);
  color: var(--pp-navy);
  font-family: var(--ppv2-font-body);
  font-size: 13.5px;
  font-weight: 600;
  text-align: left;
  cursor: pointer;
  transition: border-color var(--ppv2-ease), background-color var(--ppv2-ease);
}
body.pp-theme-v2 .pp-bulk-upsell__btn:hover {
  border-color: var(--pp-blue);
  background: #eef4fc;
}
body.pp-theme-v2 .pp-bulk-upsell__tier {
  font-weight: 800;
  color: var(--pp-blue);
}
body.pp-theme-v2 .pp-bulk-upsell__chev {
  margin-left: auto;
  color: var(--pp-blue);
  font-weight: 800;
}

/* Static bulk hint line — subtle inline text (no band), matching the mockup. */
body.pp-theme-v2 .ppv2-pdp-bulk-hint {
  margin: 2px 0 16px;
  padding: 0;
  background: none;
  border: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pp-slate);
}
body.pp-theme-v2 .ppv2-pdp-bulk-hint strong {
  color: var(--pp-navy);
  font-weight: 700;
}

/* ---------------------------------------------------------------------------
   8. COA CARD (buy box) — pp_pdp_v2_coa_card. Compact white card.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .ppv2-pdp-coa-card {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  margin: 14px 0;
  background: #ffffff;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius);
  box-shadow: var(--ppv2-shadow-card);
}
/* override .ppv2-card hover lift on this static card */
body.pp-theme-v2 .ppv2-pdp-coa-card.ppv2-card:hover {
  transform: none;
  box-shadow: var(--ppv2-shadow-card);
}
body.pp-theme-v2 .ppv2-pdp-coa-card__thumb {
  flex: 0 0 auto;
  width: 48px;
  height: 62px;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius-sm);
  background: #f6f9fd;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
body.pp-theme-v2 .ppv2-pdp-coa-card__thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
body.pp-theme-v2 .ppv2-pdp-coa-card__thumb--icon {
  color: var(--pp-blue);
}
body.pp-theme-v2 .ppv2-pdp-coa-card__body {
  flex: 1 1 auto;
  min-width: 0;
}
body.pp-theme-v2 .ppv2-pdp-coa-card__title {
  font-family: var(--ppv2-font-heading);
  font-size: 14px;
  font-weight: 700;
  color: var(--pp-navy);
  line-height: 1.2;
}
body.pp-theme-v2 .ppv2-pdp-coa-card__meta {
  margin-top: 2px;
  font-size: 12px;
  line-height: 1.4;
  color: var(--pp-slate);
}
body.pp-theme-v2 .ppv2-pdp-coa-card__btn {
  flex: 0 0 auto;
  white-space: nowrap;
}

/* ---------------------------------------------------------------------------
   9. TRUST GRID — pp_pdp_v2_trust_grid. 2x2 tiles.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .ppv2-pdp-trust {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 8px;
  margin: 14px 0;
  padding: 0;
  list-style: none;
}
body.pp-theme-v2 .ppv2-pdp-trust__item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 10px 12px;
  background: #f6f9fd;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--pp-navy);
  line-height: 1.25;
}
body.pp-theme-v2 .ppv2-pdp-trust__icon {
  flex: 0 0 auto;
  display: inline-flex;
  color: var(--pp-blue);
}
body.pp-theme-v2 .ppv2-pdp-trust__icon svg {
  width: 20px;
  height: 20px;
}

/* ---------------------------------------------------------------------------
   10. PRODUCT META (.product_meta) — slim, light. Override legacy.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product .product_meta {
  margin: 12px 0 0 !important;
  padding: 12px 0 0 !important;
  border-top: 1px solid var(--pp-line);
  font-size: 12.5px;
  color: var(--pp-slate);
}
body.pp-theme-v2 .woocommerce div.product .product_meta > span {
  display: block;
  margin: 0 0 4px;
}
body.pp-theme-v2 .woocommerce div.product .product_meta a {
  color: var(--pp-blue) !important;
}

/* ---------------------------------------------------------------------------
   11. LEFT INFO BLOCK (product-layout-v2 .pp-product-info-block) — light card
   wrapper for the relocated description + chem spec + MoA.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .pp-product-info-block {
  margin: 0 0 22px;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-product-details__short-description {
  color: var(--pp-slate) !important;
  border-left: 3px solid var(--pp-line) !important;
  padding-left: 16px !important;
  margin: 0 0 18px !important;
  font-size: 15px;
  line-height: 1.7;
}

/* Chemistry spec card (chemistry-spec-card-v2) — light tiles */
body.pp-theme-v2 .pp-chem-spec-card {
  margin: 0 0 18px;
  padding: 16px;
  background: #ffffff;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius);
  box-shadow: var(--ppv2-shadow-card);
}
body.pp-theme-v2 .pp-chem-spec-card__heading {
  font-family: var(--ppv2-font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--pp-gold-text);
  margin: 0 0 12px;
}
body.pp-theme-v2 .pp-chem-spec-card__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 10px;
}
body.pp-theme-v2 .pp-chem-spec-card__tile {
  padding: 10px 12px;
  background: #f6f9fd;
  border: 1px solid var(--pp-line);
  border-radius: var(--ppv2-radius-sm);
}
body.pp-theme-v2 .pp-chem-spec-card__label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pp-slate);
  margin-bottom: 3px;
}
body.pp-theme-v2 .pp-chem-spec-card__value {
  display: block;
  font-family: var(--ppv2-font-mono, 'JetBrains Mono', ui-monospace, monospace);
  font-size: 14px;
  font-weight: 700;
  color: var(--pp-navy);
  word-break: break-word;
}

/* ---------------------------------------------------------------------------
   12. ACCORDION (from pp-v2-pdp.js converting the WC tabs).
   --------------------------------------------------------------------------- */

/* Full-width section under the two columns. */
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs {
  clear: both;
  width: 100%;
  margin: 8px 0 0 !important;
  padding: 0 !important;
}

/* When JS has run, the original tablist is hidden. As a pre-JS / no-JS
   fallback, style the native tabs light too. */
body.pp-theme-v2 .ppv2-pdp-acc-hidden-tablist {
  display: none !important;
}

/* Native tabs (no-JS fallback) — light pills. */
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs {
  margin: 0 0 18px !important;
  padding: 0 !important;
  border-bottom: 1px solid var(--pp-line) !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs::before {
  border-bottom-color: var(--pp-line) !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs li {
  background: transparent !important;
  border: 0 !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs li a {
  color: var(--pp-slate) !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: 14px !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: 0 !important;
  border-bottom: 2px solid transparent !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs li.active a,
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs ul.tabs li a:hover {
  color: var(--pp-blue) !important;
  border-bottom-color: var(--pp-blue) !important;
}
body.pp-theme-v2 .woocommerce div.product .woocommerce-tabs .panel {
  background: transparent !important;
  color: var(--pp-slate) !important;
}

/* Accordion item rows */
body.pp-theme-v2 .ppv2-pdp-acc__item {
  border-bottom: 1px solid var(--pp-line);
}
body.pp-theme-v2 .ppv2-pdp-acc__item:first-of-type {
  border-top: 1px solid var(--pp-line);
}
body.pp-theme-v2 .ppv2-pdp-acc__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  min-height: 56px;
  padding: 16px 4px;
  background: transparent;
  border: 0;
  cursor: pointer;
  text-align: left;
  font-family: var(--ppv2-font-heading);
  font-size: 16px;
  font-weight: 700;
  color: var(--pp-navy);
  -webkit-tap-highlight-color: transparent;
}
body.pp-theme-v2 .ppv2-pdp-acc__header:focus-visible {
  outline: 2px solid var(--pp-blue);
  outline-offset: 2px;
  border-radius: var(--ppv2-radius-sm);
}
body.pp-theme-v2 .ppv2-pdp-acc__title {
  flex: 1 1 auto;
}
body.pp-theme-v2 .ppv2-pdp-acc__chev {
  flex: 0 0 auto;
  width: 20px;
  height: 20px;
  position: relative;
  transition: transform var(--ppv2-ease-long);
}
body.pp-theme-v2 .ppv2-pdp-acc__chev::before,
body.pp-theme-v2 .ppv2-pdp-acc__chev::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 11px;
  height: 2px;
  background: var(--pp-slate);
  border-radius: 2px;
}
body.pp-theme-v2 .ppv2-pdp-acc__chev::before { left: 0;  transform: translateY(-50%) rotate(45deg); }
body.pp-theme-v2 .ppv2-pdp-acc__chev::after  { right: 0; transform: translateY(-50%) rotate(-45deg); }
body.pp-theme-v2 .ppv2-pdp-acc__header[aria-expanded="true"] .ppv2-pdp-acc__chev {
  transform: rotate(180deg);
}
body.pp-theme-v2 .ppv2-pdp-acc__header[aria-expanded="true"] {
  color: var(--pp-blue);
}

/* The accordion headers are <button>s, and the legacy sheets
   (style.css / overrides-base.css / design-theme.css) paint EVERY button with
   `background: var(--pp-blue) !important` plus uppercase / padding / radius /
   hover-transform — global `button` rules. Those !important globals beat the
   non-important .ppv2-pdp-acc__header rule above, turning each header into a
   solid blue bar with white uppercase text. Re-assert the light row treatment
   with !important; body.pp-theme-v2 .ppv2-pdp-acc__header (0,2,1) out-specifies
   the global `button` (0,0,1), so !important here wins cleanly. */
body.pp-theme-v2 .ppv2-pdp-acc__header,
body.pp-theme-v2 .ppv2-pdp-acc__header:hover,
body.pp-theme-v2 .ppv2-pdp-acc__header:focus {
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 16px 4px !important;
  min-height: 56px !important;
  font-family: var(--ppv2-font-heading) !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: normal !important;
  text-transform: none !important;
  color: var(--pp-navy) !important;
  transform: none !important;
}
body.pp-theme-v2 .ppv2-pdp-acc__header[aria-expanded="true"],
body.pp-theme-v2 .ppv2-pdp-acc__header:hover {
  color: var(--pp-blue) !important;
}

body.pp-theme-v2 .ppv2-pdp-acc__panel {
  padding: 0 4px 20px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--pp-slate);
}
body.pp-theme-v2 .ppv2-pdp-acc__panel[hidden] {
  display: none;
}
body.pp-theme-v2 .ppv2-pdp-acc__panel p {
  color: var(--pp-slate);
}
body.pp-theme-v2 .ppv2-pdp-acc__panel h2,
body.pp-theme-v2 .ppv2-pdp-acc__panel h3,
body.pp-theme-v2 .ppv2-pdp-acc__panel h4 {
  color: var(--pp-navy);
}
/* WooCommerce prepends an <h2> that repeats the tab name inside the Description
   and Additional-information panels — redundant once the accordion header
   already labels the row. Hide that leading duplicate. The COA panel starts
   with a <div> (pp-coa-section), so :first-child won't match it. */
body.pp-theme-v2 .ppv2-pdp-acc__panel > h2:first-child {
  display: none !important;
}

@media (prefers-reduced-motion: reduce) {
  body.pp-theme-v2 .ppv2-pdp-acc__chev {
    transition: none;
  }
}

/* ---------------------------------------------------------------------------
   13. RUO BAND — pp_pdp_v2_ruo_band. Dark navy band, white text (AA).
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .ppv2-pdp-ruo {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  margin: 22px 0 0;
  padding: 16px 18px;
  background: var(--pp-band);
  border-radius: var(--ppv2-radius);
  color: #e7eefb;
}
body.pp-theme-v2 .ppv2-pdp-ruo__badge {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 20px;
  background: #fef3c7;
  color: var(--pp-gold-text);
  border: 1px solid #fde68a;
  font-family: var(--ppv2-font-body);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
body.pp-theme-v2 .ppv2-pdp-ruo__text {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: #e7eefb;
}
body.pp-theme-v2 .ppv2-pdp-ruo__text strong {
  color: #ffffff;
  font-weight: 700;
}

/* ---------------------------------------------------------------------------
   14. STICKY MOBILE ADD-TO-CART BAR (sticky-cart-v2) — light treatment +
   body bottom padding so it never hides content.
   --------------------------------------------------------------------------- */

body.pp-theme-v2.single-product.pp-sticky-cart-v2 {
  /* reserve space for the bar on small screens (the section may also set
     this; this is a defensive guard so content is never hidden). */
}
body.pp-theme-v2 .pp-sticky-cart {
  background: #ffffff;
  border-top: 1px solid var(--pp-line);
  box-shadow: 0 -4px 20px rgba(0, 41, 82, 0.12);
}
body.pp-theme-v2 .pp-sticky-cart__name {
  color: var(--pp-navy);
  font-family: var(--ppv2-font-heading);
  font-weight: 700;
}
body.pp-theme-v2 .pp-sticky-cart__price {
  color: var(--pp-navy);
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
body.pp-theme-v2 .pp-sticky-cart__add {
  min-height: 44px;
  padding: 10px 20px;
  background: var(--pp-blue);
  color: #fff;
  border: 0;
  border-radius: var(--ppv2-radius);
  font-family: var(--ppv2-font-heading);
  font-weight: 700;
  cursor: pointer;
}
body.pp-theme-v2 .pp-sticky-cart__add:hover {
  background: var(--pp-blue-hover);
}

/* Reserve bottom space on mobile so the fixed sticky bar can't hide the RUO
   band / accordion / related products. */
@media (max-width: 783px) {
  body.pp-theme-v2.single-product.pp-sticky-cart-v2 .site-main,
  body.pp-theme-v2.single-product.pp-sticky-cart-v2 #content {
    padding-bottom: 88px;
  }
}

/* ---------------------------------------------------------------------------
   15. RELATED / UPSELLS — keep them on the v2 card styling. The related rows
   render WC loop products; the design-system .ppv2-pcard rules don't apply to
   the default WC loop markup, so just keep the section heading light + tidy.
   --------------------------------------------------------------------------- */

body.pp-theme-v2 .woocommerce div.product .related > h2,
body.pp-theme-v2 .woocommerce div.product .upsells > h2 {
  font-family: var(--ppv2-font-heading) !important;
  font-size: clamp(1.3rem, 3vw, 1.8rem) !important;
  font-weight: 800 !important;
  text-transform: none !important;
  letter-spacing: -0.01em !important;
  color: var(--pp-navy) !important;
  margin: 8px 0 18px !important;
}

/* ---------------------------------------------------------------------------
   BREAKPOINT: 768px (tablet) — begin two-column buy box.
   --------------------------------------------------------------------------- */
@media (min-width: 768px) {
  body.pp-theme-v2 .woocommerce div.product div.images img {
    max-height: 420px;
  }
  body.pp-theme-v2 .ppv2-pdp-trust {
    gap: 10px;
  }
}

/* ---------------------------------------------------------------------------
   BREAKPOINT: 992px (desktop) — gallery left / buy box right two-column grid.
   product-layout-v2 may also grid .product; this base grid is robust on its
   own and harmless if the section's grid wins (both target two columns).
   --------------------------------------------------------------------------- */
@media (min-width: 992px) {
  body.pp-theme-v2.single-product div.product {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    grid-template-areas:
      "gallery summary"
      "info    summary"
      "tabs    tabs"
      "related related";
    column-gap: 40px;
    row-gap: 6px;
    align-items: start;
  }
  body.pp-theme-v2.single-product div.product > .woocommerce-product-gallery,
  body.pp-theme-v2.single-product div.product > .images {
    grid-area: gallery;
    width: 100% !important;
    margin: 0 0 18px !important;
    /* Fix 2026-06-06: was position:sticky; top:96px. Pinning the gallery let the
       full-width Description/specs (grid-area:tabs, which sits below it in the
       same left column) scroll up and paint over the image. Let the gallery
       scroll normally with the page. */
    position: static;
  }
  body.pp-theme-v2.single-product div.product > .summary,
  body.pp-theme-v2.single-product div.product > .entry-summary {
    grid-area: summary;
    width: 100% !important;
    margin: 0 !important;
  }
  body.pp-theme-v2.single-product div.product > .pp-product-info-block {
    grid-area: info;
    width: 100%;
    margin: 0 0 22px !important;
  }
  body.pp-theme-v2.single-product div.product > .woocommerce-tabs {
    grid-area: tabs;
  }
  body.pp-theme-v2.single-product div.product > .related,
  body.pp-theme-v2.single-product div.product > .upsells {
    grid-area: related;
  }
  /* Keep the gallery at its natural height; don't let it stretch the row. */
  body.pp-theme-v2.single-product div.product > .woocommerce-product-gallery {
    align-self: start;
  }
}

/* ---------------------------------------------------------------------------
   BELOW 992px — force a true single column. Some legacy PDP layout features
   (product-layout-v2) grid `.product` at a lower width, which left the buy box
   in a sparse 2-column layout on tablets / intermediate widths. Pin it to one
   column until the desktop grid above takes over at 992px. !important + the
   .single-product div.product specificity (0,3,1) beats the section grid. */
@media (max-width: 991.98px) {
  /* Flex column with EXPLICIT order — a plain display:block would fall back to
     DOM source order, which puts the info block (description/specs/MOA) above
     the buy box. The mockup order is: gallery → buy box → info → tabs → related. */
  body.pp-theme-v2.single-product div.product {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: none !important;
  }
  body.pp-theme-v2.single-product div.product > .woocommerce-product-gallery,
  body.pp-theme-v2.single-product div.product > .images {
    order: 1 !important;
  }
  body.pp-theme-v2.single-product div.product > .summary,
  body.pp-theme-v2.single-product div.product > .entry-summary {
    order: 2 !important;
  }
  body.pp-theme-v2.single-product div.product > .pp-product-info-block {
    order: 3 !important;
  }
  body.pp-theme-v2.single-product div.product > .woocommerce-tabs {
    order: 4 !important;
  }
  body.pp-theme-v2.single-product div.product > .related,
  body.pp-theme-v2.single-product div.product > .upsells {
    order: 5 !important;
  }
  body.pp-theme-v2.single-product div.product > * {
    float: none !important;
    width: 100% !important;
    max-width: 100% !important;
    grid-column: auto !important;
    grid-area: auto !important;
    position: static !important;
  }
}

/* ---------------------------------------------------------------------------
   9. FIX — price color + buy-box order (match the live PDP)
   --------------------------------------------------------------------------- */

/* The price rules in §4 above were written "body.pp-theme-v2 .woocommerce
   div.product ..." — a *descendant* .woocommerce. But on the single-product PDP
   the .woocommerce class sits on <body> itself (no nested .woocommerce wrapper),
   so those selectors never matched and the legacy silver !important rule won →
   the price rendered #C8D8E8 (pale, unreadable). Re-assert navy with BOTH classes
   on <body> (body.pp-theme-v2.woocommerce), which out-specifies legacy silver. */
body.pp-theme-v2.woocommerce div.product p.price,
body.pp-theme-v2.woocommerce div.product .summary .price,
body.pp-theme-v2.woocommerce div.product span.price,
body.pp-theme-v2.woocommerce div.product .woocommerce-variation-price .price,
body.pp-theme-v2.woocommerce div.product .price > .amount,
body.pp-theme-v2.woocommerce div.product .price > .woocommerce-Price-amount,
body.pp-theme-v2.woocommerce div.product .price ins,
body.pp-theme-v2.woocommerce div.product .price ins .woocommerce-Price-amount,
body.pp-theme-v2.woocommerce div.product .woocommerce-variation-price ins {
  color: var(--pp-navy) !important;
}
body.pp-theme-v2.woocommerce div.product .price del,
body.pp-theme-v2.woocommerce div.product .price del .woocommerce-Price-amount,
body.pp-theme-v2.woocommerce div.product .woocommerce-variation-price del {
  color: var(--pp-slate2) !important;
}

/* Buy-box flex-column order — match the live PDP. The legacy overrides-base.css
   rules put price(.single_variation) order 1 / bulk-upsell order 2 with the
   add-to-cart row at the default 0 (qty/Add-to-cart ABOVE the price). Live order
   is price + 'X in stock' → bulk-tier upsell (BRONZE) → qty stepper + Add-to-cart
   + shipping rows, all just above the +/- button. */
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap > .single_variation {
  order: 0 !important;
}
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap > .pp-bulk-upsell {
  order: 1 !important;
}
body.pp-theme-v2.pp-pdp-summary-clean-v2 .single_variation_wrap > .woocommerce-variation-add-to-cart {
  order: 2 !important;
}

/* ---------------------------------------------------------------------------
   10. FIX — legacy silver (#C8D8E8 / --pp-silver) text bleeding onto the light
   v2 PDP, unreadable (~1.3:1 on white). Same family as the price: a v2 override
   that is either inert (the .woocommerce-descendant bug) or non-!important and
   loses to a legacy silver rule. Audit of the body.pp-theme-v2 .woocommerce
   pattern surfaced these. Re-assert readable colors.
   --------------------------------------------------------------------------- */

/* "Clear" variation reset + product-meta (Category / Tags) links. Both had
   `color:var(--pp-blue)` in §4-style rules scoped "body.pp-theme-v2 .woocommerce
   div.product ..." (a nested .woocommerce that doesn't exist on the PDP), so the
   legacy silver won. Re-assert with both classes on <body>. */
body.pp-theme-v2.woocommerce div.product .reset_variations,
body.pp-theme-v2.woocommerce div.product .product_meta a {
  color: var(--pp-blue) !important;
}

/* "View COA (PDF)" ghost button. pp-v2-design-system.css sets color:var(--pp-blue)
   but WITHOUT !important, so a legacy silver link rule out-prioritises it. */
html body.pp-theme-v2 .ppv2-btn--ghost,
html body.pp-theme-v2 a.ppv2-btn--ghost {
  color: var(--pp-blue) !important;
  border-color: var(--pp-blue) !important;
}
html body.pp-theme-v2 .ppv2-btn--ghost:hover {
  color: #ffffff !important;
}

/* Near-title "For Research Use Only — Not for human consumption" badge. It's a
   legacy element (overrides-base.css) colored var(--pp-silver,#C0C0C0) for the
   old DARK theme; on the light v2 PDP that's ~1.25:1. Make it navy + a defined
   light-navy border so the compliance text actually reads. */
body.pp-theme-v2.single-product .pp-research-badge,
body.pp-theme-v2.single-product .pp-research-badge .pp-research-badge__icon {
  color: var(--pp-navy) !important;
}
body.pp-theme-v2.single-product .pp-research-badge {
  border-color: rgba(0, 41, 82, 0.18) !important;
}

/* ---------------------------------------------------------------------------
   11. PDP declutter (UI/UX) — one on-brand sale signal + one RUO notice
   Brand palette is authority-navy + trust-gold (no green). The PDP had THREE
   sale cues (green WDR flash + amber "-15% OFF" pill + strikethrough price) and
   TWO RUO notices. Keep the single on-brand, quantified sale signal and one
   notice; drop the rest.
   --------------------------------------------------------------------------- */

/* (a) Off-brand green "SALE!" flash badge (WooCommerce Discount Rules .onsale.
   wdr-onsale / WC span.onsale). The amber .ppv2-pdp-chip--sale ("-15% OFF") pill
   + the strikethrough->sale price already signal AND quantify the discount
   on-brand, so remove the green badge.
   NOTE: do NOT target .sales-flash-overlay — WDR puts that class on the
   div.product CONTAINER itself, so display:none there blanks the whole page. */
body.pp-theme-v2.single-product .onsale.wdr-onsale,
body.pp-theme-v2.single-product .woocommerce-product-gallery .onsale,
body.pp-theme-v2.single-product span.onsale {
  display: none !important;
}

/* (b) Two RUO notices -> keep ONE. Drop the duplicate navy PDP band; the top
   .pp-shop-ruo-notice is first, carries the "Full Disclaimer" link, and is
   consistent with shop/cart (stated once, up front). */
body.pp-theme-v2.single-product .ppv2-pdp-ruo {
  display: none !important;
}

/* (c) The kept notice's body text was a muted grey (~2.5:1) — make it readable. */
body.pp-theme-v2 .pp-shop-ruo-notice__body {
  color: var(--pp-slate2) !important;
}

/* Fix 2026-06-05: the PDP RUO band (.ppv2-pdp-ruo from pdp-v2-aminoclub.php) is a
   direct child of div.product with no grid-area, so it auto-placed into the
   gallery cell and overlapped the product image on scroll. Per the eebb025
   declutter decision it's a duplicate of the top .pp-shop-ruo-notice — drop it. */
.ppv2-pdp-ruo{display:none!important}
