/* [PPS-SITE-V2] site-v2.css — the v2 look for every classic page body. Loaded after site.css and
   home-v2.css, only when site_v2 is on. Two layers: (1) remap the classic design tokens so the
   token-driven parts of site.css restyle themselves; (2) override the components that hard-code
   colours or shapes. Every selector is prefixed with body.hv2 so it beats page-level <style> rules. */

/* ---- 1. tokens: navy/mint -> graphite/brass, Inter -> IBM Plex Sans, radius 4 -> 2 ---- */
body.hv2 {
  --ink: #1F2124; --ink-soft: #3A3D42; --ink-mute: #5F636A;
  --paper: #F4F1EA; --paper-2: #ECE8DE; --line: #E3DED2;
  --accent: #B08D3E; --accent-deep: #7F6320; --gold: #7F6320; --warning: #9A3412;
  --shadow-1: 0 1px 0 rgba(31,33,36,.05); --shadow-2: 0 1px 0 rgba(31,33,36,.05), 0 10px 24px -8px rgba(31,33,36,.18);
  --radius: 2px; --radius-lg: 6px;
  --font-display: "Fraunces", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --font-body: "IBM Plex Sans", "Helvetica Neue", Arial, system-ui, sans-serif;
  --font-mono: "IBM Plex Sans", "Helvetica Neue", Arial, system-ui, sans-serif;
  background: var(--paper); color: var(--ink-2, #3A3D42);
}
body.hv2 main { color: var(--ink-2, #3A3D42); }
body.hv2 main h1, body.hv2 main h2, body.hv2 main h3, body.hv2 main h4 { color: var(--ink); font-family: var(--font-display); font-weight: 500; letter-spacing: -.01em; }
body.hv2 main h1 { font-variation-settings: "opsz" 144; }
body.hv2 main a:not(.btn):not(.hv2-btn):not(.product-card):not(.label-name a) { color: inherit; }
body.hv2 main p a, body.hv2 main li a, body.hv2 main td a { color: var(--brass); text-decoration: underline; text-underline-offset: 3px; }
body.hv2 main p a:hover, body.hv2 main li a:hover { color: var(--ink); }

/* ---- 2. shared components ---- */
/* eyebrows: caps, tracked, brass; no "//" prefix */
body.hv2 .section-eyebrow, body.hv2 .ppx-eyebrow, body.hv2 .ppx-eyebrow-dark { font-family: var(--font-body); font-size: var(--fs-caps); font-weight: 500; letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--brass); }
body.hv2 .section-eyebrow::before { content: none; }
body.hv2 .section-title { font-family: var(--font-display); font-weight: 500; letter-spacing: -.015em; margin-bottom: 32px; }
body.hv2 .section-title em { color: var(--ink-3); }
body.hv2 section { padding: var(--section) 0; }
body.hv2 .container { max-width: var(--container); padding: 0 var(--gutter); }

/* page headers and heroes: paper, hairline, no gradients, no grid overlays */
body.hv2 .page-header, body.hv2 .page-hero, body.hv2 .hero, body.hv2 .pp3-dark, body.hv2 .ppx-hero, body.hv2 .products-hero, body.hv2 .cart-hero, body.hv2 .calc-hero, body.hv2 .track-hero, body.hv2 .coa-hero, body.hv2 .affiliate-hero, body.hv2 .about-hero, body.hv2 .contact-hero, body.hv2 .compare-hero, body.hv2 .blog-hero {
  background: var(--paper) !important; background-image: none !important; color: var(--ink) !important; border-bottom: var(--hair); box-shadow: none;
}
body.hv2 .hero::before, body.hv2 .hero::after, body.hv2 .page-header::before, body.hv2 .page-header::after, body.hv2 .page-hero::before, body.hv2 .page-hero::after, body.hv2 .pp3-dark::before, body.hv2 .pp3-dark::after, body.hv2 .ppx-hero::before, body.hv2 .ppx-hero::after { content: none !important; }
body.hv2 .page-header { padding: clamp(40px, 6vw, 72px) 0 clamp(28px, 4vw, 44px); }
body.hv2 .page-header h1, body.hv2 .page-hero h1, body.hv2 .hero h1, body.hv2 .pp3-dark h1, body.hv2 .ppx-hero h1 { color: var(--ink) !important; font-family: var(--font-display); font-weight: 500; letter-spacing: -.015em; font-size: var(--fs-1); line-height: 1.05; }
body.hv2 .page-header p, body.hv2 .page-hero p, body.hv2 .hero p, body.hv2 .pp3-dark p, body.hv2 .ppx-hero p { color: var(--ink-2) !important; font-size: var(--fs-lead); max-width: var(--measure); }
body.hv2 .hero-inner { gap: 48px; }

/* buttons: classic .btn family -> v2 shapes */
body.hv2 .btn { font-family: var(--font-body); font-size: var(--fs-body); font-weight: 600; letter-spacing: .01em; text-transform: none; padding: 0 22px; min-height: 48px; border-radius: var(--radius-1, 2px); background: var(--ink); color: var(--on-dark); border: 1px solid var(--ink); box-shadow: none; }
body.hv2 .btn:hover { background: var(--ink-2, #3A3D42); color: var(--on-dark); border-color: var(--ink-2, #3A3D42); }
body.hv2 .btn-secondary { background: transparent; color: var(--ink); border-color: var(--ink); }
body.hv2 .btn-secondary:hover { background: var(--ink); color: var(--on-dark); }
body.hv2 .btn-accent { background: var(--brass-2); color: var(--ink); border-color: var(--brass-2); }
body.hv2 .btn-accent:hover { background: var(--paper); color: var(--ink); border-color: var(--ink); }
body.hv2 .btn-sm { min-height: 36px; padding: 0 14px; font-size: var(--fs-ui-s); }
body.hv2 .btn-danger { background: #9A3412; border-color: #9A3412; color: #fff; }

/* forms */
body.hv2 .form-row label { font-family: var(--font-body); font-size: var(--fs-caps); letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--ink-3); font-weight: 500; }
body.hv2 .form-row input, body.hv2 .form-row textarea, body.hv2 .form-row select, body.hv2 main input[type=text], body.hv2 main input[type=email], body.hv2 main input[type=number], body.hv2 main input[type=password], body.hv2 main input[type=tel], body.hv2 main input[type=search], body.hv2 main select, body.hv2 main textarea {
  background: var(--paper); border: var(--hair); border-radius: var(--radius-1, 2px); color: var(--ink); min-height: var(--tap); font-family: var(--font-body); font-size: 16px; box-shadow: none;
}
body.hv2 main input:focus, body.hv2 main select:focus, body.hv2 main textarea:focus { outline: 2px solid var(--brass); outline-offset: 1px; border-color: var(--ink); }
body.hv2 main input[type=checkbox], body.hv2 main input[type=radio] { min-height: 0; accent-color: var(--ink); }

/* product grid + cards (the v2 label card is rendered by _product_card_v2.html) */
body.hv2 .product-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: 0; box-shadow: none; }
@media (min-width: 640px) { body.hv2 .product-grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { body.hv2 .product-grid { grid-template-columns: repeat(4, 1fr); } }
body.hv2 .product-grid .label-card { background: var(--paper); }

/* panels, cards, alerts, badges, tables */
body.hv2 .card, body.hv2 .admin-card, body.hv2 .cart-summary, body.hv2 .calc-input-box, body.hv2 .ppx-card, body.hv2 .quality-cell, body.hv2 .coa-trust-item, body.hv2 .ct-tile, body.hv2 .sale-tile, body.hv2 .bogo-tile, body.hv2 .trust-item, body.hv2 .compare-section { background: var(--paper-2); border: var(--hair); border-radius: var(--radius-2, 6px); box-shadow: none; }
body.hv2 .alert { border-radius: var(--radius-1, 2px); border: var(--hair); background: var(--paper-2); color: var(--ink); }
body.hv2 .alert-error { border-color: #9A3412; color: #7c2d12; background: #f8efe9; }
body.hv2 .badge { border-radius: var(--radius-1, 2px); font-family: var(--font-body); letter-spacing: var(--track-caps); text-transform: uppercase; font-size: var(--fs-caps); }
body.hv2 .badge.sale { background: var(--ink); color: var(--on-dark); }
body.hv2 main table { border-collapse: collapse; width: 100%; font-size: var(--fs-ui); }
body.hv2 main th { font-family: var(--font-body); font-size: var(--fs-caps); letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--ink-3); font-weight: 500; text-align: left; border-bottom: var(--hair); padding: 10px 8px; }
body.hv2 main td { border-bottom: var(--hair); padding: 12px 8px; vertical-align: top; }

/* category pills on /products */
body.hv2 .cat-pill { border-radius: 999px; border: var(--hair); background: var(--paper); color: var(--ink); font-family: var(--font-body); font-size: var(--fs-ui-s); font-weight: 500; letter-spacing: 0; text-transform: none; box-shadow: none; }
body.hv2 .cat-pill.is-active, body.hv2 .cat-pill[aria-current], body.hv2 .cat-pill.active { background: var(--ink); color: var(--on-dark); border-color: var(--ink); }

/* generic dark bands used by classic pages -> paper bands with a hairline */
body.hv2 .dark-band, body.hv2 .band-dark, body.hv2 .cta-band, body.hv2 .newsletter-band { background: var(--paper-2) !important; background-image: none !important; color: var(--ink) !important; border-top: var(--hair); border-bottom: var(--hair); }
body.hv2 .dark-band *, body.hv2 .band-dark *, body.hv2 .cta-band * { color: inherit; }

/* mono-styled data labels -> plain caps */
body.hv2 main [style*="font-mono"] { font-family: var(--font-body) !important; }

/* ---- 3. page-specific leftovers (found by the QA matrix) ---- */
/* dark "kinetic" headers from site.css: gradient text, light inputs */
body.hv2 .page-header h1 em, body.hv2 .page-hero h1 em { background: none !important; -webkit-background-clip: initial; background-clip: initial; -webkit-text-fill-color: currentColor; color: var(--brass); font-style: italic; }
body.hv2 .page-header input, body.hv2 .page-hero input, body.hv2 .page-header select, body.hv2 .page-hero select { background: var(--paper) !important; border: var(--hair) !important; color: var(--ink) !important; box-shadow: none !important; }
body.hv2 .page-header input::placeholder, body.hv2 .page-hero input::placeholder { color: var(--ink-4) !important; }
body.hv2 .page-header .section-eyebrow, body.hv2 .page-hero .section-eyebrow, body.hv2 .page-header .eyebrow, body.hv2 .page-hero .eyebrow, body.hv2 .hero-eyebrow { color: var(--brass) !important; }
body.hv2 .page-header .btn-secondary, body.hv2 .page-hero .btn-secondary { color: var(--ink); border-color: var(--ink); }

/* /products: category pills + search row */
body.hv2 .cat-pill { min-height: 36px; padding-block: 0; display: inline-flex; align-items: center; }
body.hv2 .cat-pill.is-active, body.hv2 .cat-pill.is-active * { color: var(--on-dark); }
body.hv2 .cat-pill-count { font-size: 12px; }
body.hv2 .cat-pill.is-active .cat-pill-count { background: rgba(244,241,234,.18); }
body.hv2 .section-cat-header { font-weight: 500 !important; }

/* /coas */
body.hv2 .coa-trust { background: var(--paper-2) !important; border-top: var(--hair); border-bottom: var(--hair); }
body.hv2 .coa-trust-item { background: var(--paper); }
body.hv2 .coa-trust-num { color: var(--ink) !important; font-family: var(--font-display); font-weight: 500; }
body.hv2 .coa-trust-label { color: var(--ink-3) !important; font-size: 12px; }
body.hv2 .coa-card { background: var(--paper); border: var(--hair); border-radius: var(--radius-2, 6px); box-shadow: none !important; }
body.hv2 .coa-verified { background: var(--paper-2) !important; color: var(--brass) !important; border: var(--hair); font-size: 12px; }
body.hv2 .coa-purity-pct { color: var(--brass) !important; }
body.hv2 .coa-purity-label, body.hv2 .coa-date { font-size: 12px; }
body.hv2 .coa-view-btn { background: var(--ink) !important; color: var(--on-dark) !important; border-radius: var(--radius-1, 2px); }
body.hv2 .coa-view-btn:hover { background: var(--ink-2, #3A3D42) !important; color: var(--on-dark) !important; }

/* /calculator: light card, dark result well and dark side rail in the v2 palette */
body.hv2 .calc-wrapper { background: var(--paper) !important; border-radius: 0; box-shadow: none; }
body.hv2 .calc-input-box, body.hv2 .calc-card { background: var(--paper) !important; border: var(--hair) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; }
body.hv2 .calc-input-box label { font-size: 12px; color: var(--ink-3); padding: 8px 12px 0; }   /* the label sat on the box border */
body.hv2 .calc-input-box input:focus, body.hv2 .calc-input-box select:focus { border-color: var(--ink) !important; box-shadow: none !important; outline: 2px solid var(--brass); }
body.hv2 .calc-result { background: var(--well) !important; border-radius: var(--radius-2, 6px) !important; color: var(--on-dark); }
body.hv2 .calc-result h2 { color: var(--on-dark) !important; font-family: var(--font-display); font-weight: 500; }
body.hv2 .calc-good { background: rgba(176,141,62,.18) !important; color: var(--brass-2) !important; border-radius: 999px; }
body.hv2 .calc-fill-bar { background: linear-gradient(90deg, rgba(176,141,62,.35), rgba(176,141,62,.75)) !important; box-shadow: none !important; }
body.hv2 .calc-fill-bar::after { background: var(--brass-2) !important; }
body.hv2 .calc-needle { background: var(--brass-2) !important; box-shadow: none !important; }
body.hv2 .calc-tick-label { font-size: 11px; }
body.hv2 .calc-shop { background: var(--well) !important; border: 1px solid rgba(244,241,234,.12) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; }
body.hv2 .calc-shop-h { color: var(--brass-2) !important; font-size: 12px; letter-spacing: var(--track-caps); }
body.hv2 .calc-item-k, body.hv2 .calc-item-go, body.hv2 .calc-rec-why { font-size: 12px; }
body.hv2 .calc-item:hover, body.hv2 .calc-bundle-row:hover, body.hv2 .calc-rec-row:hover { background: rgba(244,241,234,.06) !important; border-color: rgba(244,241,234,.2) !important; }
body.hv2 .calc-item-dose, body.hv2 .calc-bundle-p, body.hv2 .calc-shop [class*="calc-"][class*="-p"] { color: var(--brass-2) !important; background: transparent !important; }
body.hv2 .calc-add, body.hv2 .calc-rec-add { background: var(--brass-2) !important; color: var(--ink) !important; border-color: var(--brass-2) !important; font-size: 12px; box-shadow: none !important; }
body.hv2 .calc-add:disabled, body.hv2 .calc-rec-add:disabled { background: transparent !important; color: rgba(244,241,234,.5) !important; border-color: rgba(244,241,234,.25) !important; }
body.hv2 .calc-copy { background: transparent !important; border: 1px solid rgba(244,241,234,.35) !important; color: var(--on-dark) !important; font-size: 12px; box-shadow: none !important; }
body.hv2 .calc-copy:hover, body.hv2 .calc-browse:hover { background: rgba(244,241,234,.08) !important; box-shadow: none !important; }
body.hv2 .calc-browse { background: transparent !important; border: 1px solid rgba(244,241,234,.2) !important; color: var(--on-dark) !important; }
body.hv2 .calc-trust-i { font-size: 12px; color: rgba(244,241,234,.7) !important; }
body.hv2 .calc-size { background: rgba(244,241,234,.08) !important; border: 1px solid rgba(244,241,234,.25) !important; color: var(--on-dark) !important; }
body.hv2 .calc-size option { background: #1F2124; }

/* /cart: no glow blobs; the summary stays a dark panel, in the v2 palette */
body.hv2 .cart-page { background: var(--paper) !important; }
body.hv2 .cart-item { border: var(--hair); border-radius: var(--radius-2, 6px); box-shadow: none !important; }
body.hv2 .cart-item:hover { border-color: var(--ink-4) !important; box-shadow: none !important; }
body.hv2 .cart-item-image { background: var(--well) !important; border-radius: var(--radius-1, 2px); }
body.hv2 .cart-summary { background: var(--well) !important; border: 1px solid rgba(244,241,234,.12) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; }
body.hv2 .cart-summary::before, body.hv2 .cart-summary::after { content: none !important; }
body.hv2 .cx-fill { background: var(--brass-2) !important; box-shadow: none !important; }
body.hv2 .cart-summary details .btn, body.hv2 .cart-summary details .btn:hover { background: rgba(176,141,62,.18) !important; border: 1px solid rgba(176,141,62,.6) !important; color: var(--on-dark) !important; }
body.hv2 .cart-summary #checkout-form .btn.btn-block { background: var(--brass-2) !important; color: var(--ink) !important; border-color: var(--brass-2) !important; box-shadow: none !important; }
body.hv2 .cart-summary #checkout-form .btn.btn-block:hover { background: var(--paper) !important; box-shadow: none !important; }
body.hv2 .cart-summary details input[name="code"]:focus, body.hv2 .cart-summary select:focus, body.hv2 .cart-summary textarea:focus { box-shadow: none !important; outline: 2px solid var(--brass-2); }
body.hv2 .empty-state .btn, body.hv2 .cx-st-btn { box-shadow: none !important; }
body.hv2 .cx-stickybar { border-top: var(--hair) !important; }
body.hv2 .cx-empty-title em, body.hv2 .empty-state h1 em, body.hv2 .empty-state h2 em { color: var(--brass) !important; }
body.hv2 .cx-empty-eyebrow, body.hv2 .cart-page .on { font-size: 12px; }

/* /track: the lookup card becomes a paper panel */
body.hv2 main .admin-card { background: var(--paper-2) !important; border: var(--hair) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; color: var(--ink) !important; animation: none !important; }
body.hv2 main .admin-card::before, body.hv2 main .admin-card::after { content: none !important; }
body.hv2 main .admin-card label, body.hv2 main .admin-card .form-row label { color: var(--ink-3) !important; }
body.hv2 main .admin-card input, body.hv2 main .admin-card select { background: var(--paper) !important; border: var(--hair) !important; color: var(--ink) !important; box-shadow: none !important; }
body.hv2 main .admin-card input::placeholder { color: var(--ink-4) !important; }
body.hv2 main .admin-card .btn { box-shadow: none !important; }
body.hv2 main .admin-card div[style*="paper-2"] { background: var(--paper) !important; border: var(--hair) !important; }
body.hv2 main .admin-card div[style*="paper-2"] div[style*="16px"] { text-shadow: none !important; }
body.hv2 main .admin-card p, body.hv2 main .admin-card small, body.hv2 main .admin-card div { color: var(--ink-2); }
body.hv2 .tx-fill { background: var(--brass-2) !important; box-shadow: none !important; }
body.hv2 .tx-node i { background: var(--paper) !important; border-color: var(--ink-4) !important; box-shadow: none !important; }
body.hv2 .tx-node.on i { background: var(--brass-2) !important; box-shadow: none !important; animation: none !important; }
body.hv2 .tx-copy { background: var(--paper) !important; border: var(--hair) !important; color: var(--ink) !important; }

/* /affiliate-program: readable hero, dark panels without glow */
body.hv2 .ppx-hero { background: var(--paper) !important; }
body.hv2 .ppx-hero p, body.hv2 .ppx-hero .ppx-lead, body.hv2 .ppx-hero .ppx-sub { color: var(--ink-2) !important; }
body.hv2 .ppx-pill-url, body.hv2 .ppx-pill-label { color: var(--ink-3) !important; font-size: 12px; }
body.hv2 .ppx-pill-url b { color: var(--brass) !important; text-shadow: none !important; }
body.hv2 .ppb-panel, body.hv2 .ppx-receipt, body.hv2 .ppx-close-panel { background: var(--well) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; }
body.hv2 .ppb-panel::before, body.hv2 .ppb-panel::after, body.hv2 .ppx-close-panel::before, body.hv2 .ppx-close-panel::after { content: none !important; }
body.hv2 .ppb-fig span, body.hv2 .ppx-receipt-row.ppx-earn span:last-child { text-shadow: none !important; color: var(--brass-2) !important; }
body.hv2 .ppb-fig, body.hv2 .ppb-lbl { color: var(--on-dark); }

/* /product: bundle badges + helper text */
body.hv2 .bc-badge { font-size: 12px; border-radius: 999px; letter-spacing: var(--track-caps); }
body.hv2 .bc-badge-popular { background: var(--ink) !important; color: var(--on-dark) !important; }
body.hv2 .bc-badge-value { background: var(--brass) !important; color: var(--on-dark) !important; }
body.hv2 .bundle-card .bc-save { color: var(--brass) !important; }
body.hv2 .bc-each, body.hv2 .stock, body.hv2 .check, body.hv2 .hero-eyebrow, body.hv2 .compare-card-eyebrow { font-size: 12px; }
body.hv2 .bundle-note, body.hv2 .bc-note, body.hv2 .bundle-card + p { color: var(--ink-3) !important; }
body.hv2 .trust-item svg { color: var(--brass) !important; }
body.hv2 .bundle-save-label::after, body.hv2 .variant-picker-label::after { background: var(--brass-2) !important; }

/* tiny inline-styled labels across pages (11px/10px -> 12px) */
body.hv2 main [style*="font-size: 11px"], body.hv2 main [style*="font-size:11px"], body.hv2 main [style*="font-size: 10px"], body.hv2 main [style*="font-size:10px"], body.hv2 main [style*="font-size: 9px"] { font-size: 12px !important; }

/* ---- 4. last leftovers ---- */
body.hv2 .empty-state h2 em, body.hv2 .cart-page h2 em, body.hv2 .cx-empty h2 em { color: var(--brass) !important; background: none !important; -webkit-text-fill-color: currentColor; }
body.hv2 .cx-steps span, body.hv2 .cart-item-info .variant, body.hv2 .cart-summary .shipping-progress { font-size: 12px !important; }
body.hv2 main .admin-card p, body.hv2 main .admin-card small, body.hv2 main .admin-card [style*="rgba(250"], body.hv2 main .admin-card [style*="rgba(255"] { color: var(--ink-2) !important; }
body.hv2 .bundle-note, body.hv2 .pd-calc-link, body.hv2 .pd-complete-h, body.hv2 .pd-complete-w, body.hv2 .calc-browse, body.hv2 .calc-tick-label, body.hv2 .calc-shop span { font-size: 12px !important; }
body.hv2 .calc-shop, body.hv2 .calc-item, body.hv2 .calc-bundle-row, body.hv2 .calc-rec-row { color: rgba(244,241,234,.88) !important; }
body.hv2 .calc-shop .calc-item-k, body.hv2 .calc-shop .calc-item-go, body.hv2 .calc-shop .calc-rec-why { color: rgba(244,241,234,.6) !important; }
body.hv2 .calc-bundle-row > *, body.hv2 .calc-item > * { color: inherit; }
body.hv2 .pd-complete-add, body.hv2 .cart-item-info a, body.hv2 .cart-summary a, body.hv2 .cart-item a { font-size: 12px !important; }

/* ---- 5. /coas stat band: a hairline stat row like the homepage proof strip, not boxed tiles in a tall band ---- */
body.hv2 .coa-trust { background: var(--paper) !important; border-top: var(--rule, 1px solid var(--ink)); border-bottom: var(--hair); padding: 0 !important; }
body.hv2 .coa-trust-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; text-align: left; }
body.hv2 .coa-trust-item { background: transparent !important; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; padding: 22px 20px 22px 0; }
body.hv2 .coa-trust-item + .coa-trust-item { border-left: var(--hair) !important; padding-left: 20px; }
body.hv2 .coa-trust-num { font-family: var(--font-display); font-size: var(--fs-num); font-weight: 600; letter-spacing: -.01em; line-height: 1.1; color: var(--ink) !important; }
body.hv2 .coa-trust-label { margin-top: 6px; font-family: var(--font-body); font-size: var(--fs-caps); font-weight: 500; letter-spacing: var(--track-caps); text-transform: uppercase; color: var(--ink-3) !important; }
@media (max-width: 719.98px) {
  body.hv2 .coa-trust-grid { grid-template-columns: 1fr 1fr; }
  body.hv2 .coa-trust-item { padding: 16px 12px 16px 0; }
  body.hv2 .coa-trust-item + .coa-trust-item { border-left: 0 !important; padding-left: 0; }
  body.hv2 .coa-trust-item:nth-child(even) { border-left: var(--hair) !important; padding-left: 12px; }
  body.hv2 .coa-trust-item:nth-child(-n+2) { border-bottom: var(--hair) !important; }
}

/* ---- 6. account pages: sidebar tabs ---- */
body.hv2 .account-nav-item { color: var(--ink-2); border-radius: var(--radius-1, 2px); font-size: var(--fs-ui); font-weight: 500; }
body.hv2 .account-nav-item:hover { background: var(--paper-2); color: var(--ink); }
body.hv2 .account-nav-item.active { background: var(--ink) !important; color: var(--on-dark) !important; border-color: var(--ink) !important; }
body.hv2 .account-sidebar { gap: 4px; }
body.hv2 .account-stat .label, body.hv2 .account-stat-row .label { font-size: 12px !important; }
body.hv2 .partner-claim::after, body.hv2 .partner-pitch-hero::after, body.hv2 .partner-claim::before { content: none !important; }
body.hv2 .partner-claim, body.hv2 .partner-pitch-hero { background: var(--well) !important; border-radius: var(--radius-2, 6px) !important; box-shadow: none !important; }
body.hv2 .partner-flash-ok { background: rgba(176,141,62,.14) !important; border-left-color: var(--brass) !important; }
body.hv2 .partner-pill-paid { background: rgba(176,141,62,.18) !important; color: var(--brass) !important; }
body.hv2 .partner-pill-pending { background: var(--paper-2) !important; color: var(--ink-2) !important; }
body.hv2 .partner-eyebrow { font-family: var(--font-body); letter-spacing: var(--track-caps); }
/* headings inside dark panels stay light (the generic heading rule above must not win there) */
body.hv2 .partner-claim h1, body.hv2 .partner-claim h2, body.hv2 .partner-claim h3, body.hv2 .partner-pitch-hero h1, body.hv2 .partner-pitch-hero h2, body.hv2 .ppx-close-panel h2, body.hv2 .ppx-close-panel h3, body.hv2 .ppb-panel h2, body.hv2 .ppx-receipt h3, body.hv2 .cart-summary h2, body.hv2 .cart-summary h3, body.hv2 .calc-result h2, body.hv2 .calc-shop h2, body.hv2 .calc-shop h3, body.hv2 section[style*="var(--ink)"] h1, body.hv2 section[style*="var(--ink)"] h2, body.hv2 section[style*="var(--ink)"] h3, body.hv2 div[style*="var(--ink)"] h2, body.hv2 div[style*="var(--ink)"] h3 { color: var(--on-dark) !important; }
body.hv2 .partner-claim label, body.hv2 .partner-claim .partner-hint, body.hv2 .partner-claim small { font-size: 12px !important; }
/* cart: savings in brass instead of green, sticky bar in the palette, small labels lifted */
body.hv2 main [style*="#0f7a3a"]:not([style*="background"]) { color: var(--brass) !important; }
body.hv2 main [style*="background:#0f7a3a"], body.hv2 main [style*="background: #0f7a3a"] { background: var(--ink) !important; color: var(--on-dark) !important; font-size: 12px !important; }
body.hv2 .cart-bulk-badge { background: rgba(176,141,62,.16) !important; color: var(--brass) !important; border-color: rgba(176,141,62,.4) !important; font-size: 12px !important; }
body.hv2 .cart-item-info .remove, body.hv2 .cx-st-total span, body.hv2 .cart-summary details summary { font-size: 12px !important; }
body.hv2 .cx-stickybar { background: var(--well) !important; }
body.hv2 .cart-item[style*="dashed"] { background: var(--paper-2) !important; border: 1px dashed var(--brass-2) !important; }

/* last sub-12px labels: product meta line + check mark, cart "continue shopping" link, cart trust chips */
body.hv2 .product-info .product-meta { font-family: var(--font-body); font-size: 12px !important; letter-spacing: var(--track-caps); color: var(--ink-3); }
body.hv2 .product-meta .check { width: 16px !important; height: 16px !important; font-size: 12px !important; line-height: 1; background: var(--brass) !important; color: var(--paper) !important; }
body.hv2 .product-description-eyebrow { font-family: var(--font-body); font-size: 12px !important; letter-spacing: var(--track-caps); color: var(--brass); }
body.hv2 .cx-items-head a { font-family: var(--font-body); font-size: 12px !important; letter-spacing: var(--track-caps); color: var(--brass) !important; }
body.hv2 .cx-trust span { font-family: var(--font-body); font-size: 12px !important; letter-spacing: var(--track-caps); color: rgba(244,241,234,.75) !important; border-color: rgba(244,241,234,.25) !important; }
body.hv2 .cx-trust svg { color: var(--brass-2) !important; }
/* cart: step line fits one row on phones; guest sign-in panel on paper with a brass hairline instead of a solid brass fill */
body.hv2 .cx-steps { gap: 10px; }
body.hv2 .cx-steps i { flex-basis: 18px; }
@media (max-width: 480px) { body.hv2 .cx-steps span { letter-spacing: .06em !important; } body.hv2 .cx-steps i { flex-basis: 14px; } }
body.hv2 .cart-summary [style*="background: var(--accent)"] { background: var(--paper-2) !important; border: 1px solid var(--brass-2) !important; color: var(--ink) !important; border-radius: var(--radius-2, 6px) !important; }
body.hv2 .cart-summary [style*="background: var(--accent)"] p { color: var(--ink-2) !important; }
body.hv2 .cart-summary [style*="background: var(--accent)"] .btn-secondary { background: transparent !important; color: var(--ink) !important; border-color: var(--ink) !important; }
/* product card: spec rows line up whether the strength is a select or plain text; SKU label uses the free width */
body.hv2 .label-spec > div:first-child { min-height: 59px; }
body.hv2 .label-code { max-width: none; flex: 1 1 auto; min-width: 0; }
body.hv2 .label-stock { flex: 0 0 auto; }
/* empty cart category chips and the 404 "jump to" links: 12px minimum, 44px tap height */
body.hv2 .cx-cats a { font-family: var(--font-body); font-size: 12px !important; letter-spacing: var(--track-caps); min-height: 44px; display: inline-flex; align-items: center; }
body.hv2 .cx-cats a:hover { transform: none; color: var(--brass) !important; border-color: var(--brass) !important; }
body.hv2 main [style*="gap: 28px"] > a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 4px; }

/* ===== polish pass: shop (findings from the phone and desktop reviewers, each re-measured) ===== */
/* hairlines are drawn by the cards, so a short last row leaves paper instead of a grey block */
body.hv2 .product-grid, body.hv2 .hv2-cards { gap: 0; background: transparent; border-width: 1px 0 0 1px; border-color: var(--line); }
body.hv2 .product-grid > .product-card, body.hv2 .product-grid > .label-card, body.hv2 .hv2-cards > .label-card { border-right: var(--hair); border-bottom: var(--hair); align-self: stretch; }
/* /products cards: no lift, tilt, glow or white on hover; sentence-case button like the homepage */
body.hv2 .product-section .product-card, body.hv2 .product-section .product-card:hover, body.hv2 .product-card.pgv-tilt, body.hv2 .product-card.pgv-tilt:hover { background: var(--paper) !important; box-shadow: none !important; transform: none !important; }
body.hv2 .pgv-glare { display: none !important; }
body.hv2 .label-btn.pc-quick { text-transform: none; letter-spacing: .01em; }
body.hv2 .label-btn.pc-quick:hover { background: var(--ink-2); color: var(--on-dark); box-shadow: none !important; }
/* search row on the container edge; square 44px button; equal heights; sort select keeps its chevron */
body.hv2 main form[action="/products"][style*="max-width"] { margin-left: 0 !important; margin-right: 0 !important; }
body.hv2 .products-search-bar { border: 0; border-radius: 0; box-shadow: none; }
body.hv2 .products-search-input { border-radius: var(--radius-1, 2px); box-shadow: none; padding: 0 116px 0 46px; min-height: 52px; font-size: 16px; }
body.hv2 .products-search-input:focus { border-color: var(--ink); box-shadow: none; }
body.hv2 .products-search-btn { right: 4px; min-height: 44px; padding: 0 16px; border-radius: var(--radius-1, 2px); font-size: var(--fs-ui-s); letter-spacing: 0; text-transform: none; background: var(--ink); color: var(--on-dark); }
body.hv2 .products-search-btn:hover, body.hv2 .products-search-btn:active { background: var(--ink-2); transform: translateY(-50%); }
body.hv2 .products-sort-select { min-height: 52px; padding: 0 40px 0 14px; border-radius: var(--radius-1, 2px); box-shadow: none; }
body.hv2 main select.products-sort-select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231F2124' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; }
/* category dots: one brass square, no halo or glow; active pill readable; pill counts at full contrast */
body.hv2 .cat-pill .cat-dot, body.hv2 .cat-pill[data-cat] .cat-dot, body.hv2 .cat-pill.is-active[data-cat] .cat-dot, body.hv2 .section-cat-dot, body.hv2 .product-section[data-cat] .section-cat-dot { width: 8px; height: 8px; border-radius: 0; background: var(--brass-2) !important; box-shadow: none !important; }
body.hv2 .cat-pill.is-active, body.hv2 .cat-pill.is-active * { color: var(--on-dark) !important; }
body.hv2 .cat-pill-count { opacity: 1; color: var(--ink-3); }
body.hv2 .cat-pill.is-active .cat-pill-count { color: var(--on-dark) !important; }
/* sticky pill bar parks flush under the 57px header; one scrollable row of 44px pills on phones */
body.hv2 .cat-pills.is-sticky { top: 57px; padding-top: 8px; padding-bottom: 8px; backdrop-filter: none; }
body.hv2 .cat-pills.is-sticky.pgv-stuck { box-shadow: 0 0 0 100vmax var(--paper) !important; border-bottom: var(--hair); }
@media (max-width: 639.98px) {
  body.hv2 .cat-pills { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; gap: 8px; }
  body.hv2 .cat-pills::-webkit-scrollbar { display: none; }
  body.hv2 .cat-pill { flex: 0 0 auto; min-height: 44px; }
}
/* rhythm: 24px above the pills, 40px between category sections */
body.hv2 .page-header + section:has(#catPills) { padding-top: 24px !important; }
body.hv2 .page-header + .coa-trust { padding-top: 0 !important; }
body.hv2 .product-section + .product-section { margin-top: 40px !important; }
/* card spec label column wide enough for "Strength" on desktop, natural width on phones */
body.hv2 .label-spec > div:not(.label-price-row) { grid-template-columns: minmax(4.2em, max-content) 1fr; column-gap: 8px; }
@media (min-width: 1024px) { body.hv2 .label-price-row { grid-template-columns: minmax(4.2em, max-content) 1fr; } }
@media (max-width: 639.98px) { body.hv2 .label-spec > div:not(.label-price-row) { grid-template-columns: max-content 1fr; column-gap: 6px; } body.hv2 .label-spec dt { letter-spacing: .02em; } }
/* product page: gallery stays in view on desktop; post-fold sections share the page's left edge and a 900px measure */
body.hv2 .product-page { align-items: start; }
/* a long failure label ("Sold out — pick another size") wraps inside the Add to Cart button instead of widening the column
   (the page scrolled sideways at 320-360px for 3 s) */
body.hv2 #pdp-add-form .qty-row .btn { white-space: normal; min-width: 0; line-height: 1.2; }
@media (max-width: 767.98px) { body.hv2 .product-page { grid-template-columns: minmax(0, 1fr); } }
@media (min-width: 900px) { body.hv2 .product-gallery-wrap { position: sticky; top: calc(var(--header-h) + 16px); } }
body.hv2 .product-gallery { border-radius: 0; }
body.hv2 .product-page ~ section .container[style*="max-width"] { max-width: var(--container) !important; }
body.hv2 .product-page ~ section .container[style*="max-width"] > * { max-width: 900px; }
body.hv2 .product-page ~ section .section-title[style*="center"] { text-align: left !important; }
/* buy box: v2 radii, no lift or shadow on bundle tiles, left-aligned labels, 44px controls, trust items without a second box */
body.hv2 .bundle-card { border-radius: var(--radius-2, 6px); }
body.hv2 .bundle-card:hover, body.hv2 .bundle-card.selected { transform: none; box-shadow: none; }
body.hv2 .variant-picker-label, body.hv2 .bundle-save-label { text-align: left; font-weight: 500; color: var(--brass); letter-spacing: var(--track-caps); padding-bottom: 0; }
body.hv2 .variant-picker-label::after, body.hv2 .bundle-save-label::after { content: none; }
body.hv2 .bundle-note { text-align: left; }
@media (max-width: 520px) { body.hv2 .bc-badge { letter-spacing: .04em; padding: 3px 7px; } body.hv2 .bundle-cards { gap: 6px; } }
/* under 360px each bundle card is 92px wide and "Most Popular" (111px) overlapped "Best Value" */
@media (max-width: 359.98px) { body.hv2 .bc-badge { letter-spacing: 0; padding: 3px 5px; } }
body.hv2 .pd-complete, body.hv2 .trust-row { border-radius: var(--radius-2, 6px); }
body.hv2 .pd-complete-add { border-radius: var(--radius-1, 2px); min-height: 44px; padding: 0 16px; }
body.hv2 .pd-calc-link { border-radius: var(--radius-1, 2px); min-height: 44px; padding: 0 16px; letter-spacing: 0; text-transform: none; color: var(--ink); display: inline-flex; align-items: center; }
@media (min-width: 600px) { body.hv2 .trust-row { grid-template-columns: repeat(4, auto); justify-content: space-between; gap: 10px 12px; } body.hv2 .trust-row .trust-item { white-space: nowrap; } }
body.hv2 .trust-row .trust-item { background: transparent; border: 0; border-radius: 0; }
body.hv2 .product-description-eyebrow, body.hv2 .product-description-title { text-align: left; }
body.hv2 main [style*="#d4a84b"] { color: var(--brass) !important; }   /* [PPS-SWEEP-2] brass-2 stars were 2.8:1 on paper; brass is 5.3:1 */
body.hv2 main [style*="#2d7d46"] { color: var(--brass) !important; }

/* ===== polish pass: cart and account ===== */
/* phone checkout bar stays under the menu (z 100) and the quick-add drawer (z 101), reserves its own room, well-dark with a hairline */
@media (max-width: 980px) {
  body.hv2 .cx-stickybar { z-index: 40; background: #0A0A0B !important; border-top: 1px solid rgba(244,241,234,.16) !important; backdrop-filter: none; }  /* PPS-STICKYBAR: solid, the summary text no longer shows through */
  body.hv2 .cx-stickybar { transition: transform .22s ease, visibility .22s; }
  body.hv2 .cx-stickybar.cx-st-away { transform: translateY(110%); visibility: hidden; pointer-events: none; }
  body.hv2:has(.cx-stickybar) { padding-bottom: calc(80px + env(safe-area-inset-bottom)); }
}
body.hv2 .cx-st-btn { border-radius: var(--radius-1, 2px) !important; background: var(--brass-2) !important; color: var(--ink) !important; box-shadow: none !important; }
body.hv2 .cx-st-total span { font-size: 12px !important; color: var(--on-dark-2) !important; letter-spacing: var(--track-caps); }
/* quantity stepper: 44px buttons that match the field, v2 radius */
body.hv2 .cx-qbtn { width: 44px; height: 44px; border-radius: var(--radius-1, 2px); border: var(--hair); font-size: 18px; }
body.hv2 .cart-item-info input[type=number] { width: 56px; padding: 6px 4px; border-radius: var(--radius-1, 2px); }
body.hv2 .cart-item-info form[action="/cart/update"] { gap: 8px; }
/* summary controls in the two v2 radii, paper-white text without glow; savings rows and helper text readable on the well */
body.hv2 .cart-summary #checkout-form .btn.btn-block, body.hv2 .cart-summary select, body.hv2 .cart-summary textarea, body.hv2 .cart-summary details input[name="code"], body.hv2 .cart-summary details .btn { border-radius: var(--radius-1, 2px) !important; }
body.hv2 .cart-summary .cart-summary-row, body.hv2 .cart-summary .cart-summary-row.total span:last-child, body.hv2 .cart-summary select, body.hv2 .cart-summary textarea, body.hv2 .cart-summary label { color: var(--on-dark) !important; text-shadow: none !important; }
body.hv2 .cart-summary .cart-summary-row[style*="#0f7a3a"], body.hv2 .cart-summary .cart-summary-row[style*="7a5d20"], body.hv2 .cart-summary .cart-bulk-savings-row { color: var(--brass-2) !important; }
body.hv2 .cart-summary [style*="var(--ink-mute)"] { color: var(--on-dark-2) !important; }
body.hv2 .cx-dot { box-shadow: none; }
/* 44px hit areas for the small text links without changing their visual size */
body.hv2 .cart-item-info .remove, body.hv2 .cx-items-head a, body.hv2 main a[href="/account/forgot-password"], body.hv2 .page-header a[href="/account"] { display: inline-flex; align-items: center; min-height: 44px; padding: 0; margin-block: -12px; }
body.hv2 .cx-items-head { align-items: center; }
/* account card rhythm, phone padding, stats as one hairline list on phones, paper tabs, long emails wrap */
body.hv2 .account-title { font-size: clamp(28px, 1.5rem + 1vw, 32px); line-height: 1.1; margin: 0 0 8px; }
body.hv2 .account-sub { margin: 0 0 28px; }
body.hv2 .account-alt { margin: 24px 0 0; }
body.hv2 .account-stat { border-radius: var(--radius-2, 6px); }
body.hv2 .account-stat .value { color: var(--ink); }
@media (max-width: 800px) {
  body.hv2 .account-stat-row { gap: 0; margin-bottom: 32px; border: var(--hair); border-radius: var(--radius-2, 6px); overflow: hidden; }
  body.hv2 .account-stat { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 14px 16px; border: 0; border-radius: 0; }
  body.hv2 .account-stat + .account-stat { border-top: var(--hair); }
  body.hv2 .account-stat .label { margin: 0; }
  body.hv2 .account-stat .value { font-size: 20px !important; line-height: 1.2; }
  body.hv2 .account-sidebar .account-nav-item { background: var(--paper); border: var(--hair); }
}
@media (max-width: 480px) { body.hv2 .account-card { padding: 28px 20px; } }
body.hv2 .account-header-row p { overflow-wrap: anywhere; }
body.hv2 .partner-perk { border-radius: var(--radius-2, 6px); }
body.hv2 .products-search-input, body.hv2 .products-sort-select { height: 52px !important; min-height: 52px !important; }

/* ===== polish pass: tools (COAs, calculator, compare, research) ===== */
/* /compare cards and the /research filter row keep the page gutter; 44px filter pills */
body.hv2 main section.container[style*="padding: 24px 0"] { padding-inline: var(--gutter) !important; }
body.hv2 main .container[style*="padding: 16px 0"] { padding-inline: var(--gutter) !important; }
body.hv2 main .container[style*="padding: 16px 0"] .cat-pill { min-height: 44px; padding: 0 16px; display: inline-flex; align-items: center; }
/* /calculator on phones: one gutter, tighter card and well so the syringe scale and headline have room */
@media (max-width: 700px) {
  body.hv2 .calc-wrapper { padding: 24px var(--gutter) 40px !important; }
  body.hv2 .calc-card { padding: 20px !important; }
  body.hv2 .calc-result { padding: 28px 16px !important; margin-top: 24px; }
  body.hv2 .calc-result h2 { font-size: 34px; }
}
/* /calculator result well: flat brass fill, no navy track, no blur, palette grey, no emoji; one control height; readable disclaimer */
body.hv2 .calc-scale { background: rgba(244,241,234,.08) !important; border-radius: var(--radius-1, 2px) !important; }
body.hv2 .calc-fill-bar { background: rgba(176,141,62,.35) !important; }
body.hv2 .calc-fill-bar::after { filter: none !important; }
body.hv2 .calc-details { color: var(--on-dark-2) !important; }
body.hv2 .calc-copy-ico { display: none !important; }
body.hv2 .calc-input-box input, body.hv2 .calc-input-box select { height: 52px; min-height: 52px; padding: 0 16px; line-height: normal; }
/* /calculator under 360px: room for the longest peptide name in the menu ("CJC-1295 no DAC + Ipamorelin" showed as "…Ipamo"),
   and every second scale label only ("90" ran into "100") */
@media (max-width: 359.98px) {
  body.hv2 .calc-card { padding: 12px !important; }
  body.hv2 .calc-input-box select { padding: 0 0 0 10px; }
  body.hv2 .calc-tick-label:nth-child(even of .calc-tick-label) { display: none; }
}
body.hv2 .calc-disclaimer { color: var(--ink-3) !important; }
/* /calculator rail: 44px hit areas on the product and bundle links without changing their visual size */
body.hv2 .calc-item-n, body.hv2 .calc-rec-name { display: inline-block; padding-block: 12px; margin-block: -12px; }
body.hv2 .calc-rec-row { align-items: center; }
/* /compare and /research heroes share the page-header rhythm and type scale */
body.hv2 .page-hero { padding: clamp(40px, 6vw, 72px) 0 clamp(28px, 4vw, 44px) !important; }
body.hv2 .page-hero h1 { font-size: var(--fs-1) !important; line-height: 1.05 !important; margin-top: 12px !important; }
body.hv2 .page-hero p { font-size: var(--fs-lead) !important; margin-top: 16px !important; }
/* /research: the article column never exceeds the container */
body.hv2 main div[style*="minmax(340px"] { grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)) !important; }
/* balanced two-line titles: no hyphen orphans in product and comparison names; COA numbers and names in the display face */
body.hv2 .coa-product, body.hv2 .compare-card-title, body.hv2 main article h2 { text-wrap: balance; }
body.hv2 .coa-purity-num { font-family: var(--font-display); font-weight: 600; letter-spacing: -.02em; font-variation-settings: "opsz" 144; }
body.hv2 .coa-purity-pct { font-weight: 500; }
body.hv2 .coa-product { font-family: var(--font-display); font-weight: 500; letter-spacing: -.01em; line-height: 1.2; }
/* /track: the classic dark card redefined --ink-mute as near-white; on the paper card muted copy is ink-3 and the sign-in link brass */
body.hv2 main .admin-card { --ink-mute: var(--ink-3); }
body.hv2 main .admin-card a[style*="#2563eb"] { color: var(--brass) !important; }
/* /contact: the "email for a faster response" note in palette grey instead of red */
body.hv2 main [style*="color: #c44"] { color: var(--ink-3) !important; }
body.hv2 main .admin-card [style*="ink-mute"] { color: var(--ink-3) !important; }
body.hv2 main .admin-card div[style*="paper-2"] div { color: var(--ink-2) !important; }
/* tools, desktop findings: readable active filter pill, comparison card type and pinned CTA, COA grid on the container, calculator block
   aligned with the page edges, centred disclaimer, balanced hero title, visible research placeholder initial, no card lift, radii, tick labels */
body.hv2 .cat-pill.active, body.hv2 .cat-pill.active * { color: var(--on-dark) !important; }
body.hv2 .cat-pill:hover { border-color: var(--ink); }
body.hv2 .compare-card-title { font-size: clamp(20px, 1.1rem + .5vw, 24px); line-height: 1.25; letter-spacing: -.01em; margin: 0 0 10px; }
/* 20-24px headings use the text cut of the display font: the display cut's hairline "4" read as "1" ("AOD-960 1") on 1x screens */
body.hv2 .compare-card-title, body.hv2 .compare-prose h3 { font-variation-settings: "opsz" 24, "SOFT" 0, "WONK" 0; }
body.hv2 .compare-card { display: flex; flex-direction: column; }
body.hv2 .compare-card-desc { margin: 0 0 16px; }
body.hv2 .compare-card-cta { margin-top: auto; }
@media (min-width: 1024px) {
  body.hv2 .coa-grid { max-width: none; grid-template-columns: repeat(3, 1fr); gap: 24px; }
  body.hv2 .coa-card { padding: 32px; }
}
body.hv2 .calc-wrapper { max-width: var(--container); padding: 40px var(--gutter) 60px; }
body.hv2 .calc-disclaimer { margin: 0 auto; padding: 0 var(--gutter) 48px; }
body.hv2 .page-hero div[style*="max-width: 760px"] { max-width: 900px !important; }
body.hv2 .page-hero h1 { text-wrap: balance; }
body.hv2 main article div[style*="aspect-ratio"] > span { opacity: 1 !important; color: var(--ink-4) !important; font-size: 96px !important; line-height: 1; font-variation-settings: "opsz" 144; }
body.hv2 .coa-card:hover, body.hv2 .compare-card:hover { transform: none; border-color: var(--ink); }
body.hv2 .calc-copy, body.hv2 .calc-browse, body.hv2 .calc-add, body.hv2 .calc-rec-add, body.hv2 .calc-rec-row, body.hv2 .calc-trust-i { border-radius: var(--radius-1, 2px); }
body.hv2 .calc-tick-label { color: rgba(244,241,234,.6) !important; }
body.hv2 .coa-view-btn { min-height: 48px; padding: 0 22px; font-size: var(--fs-body); font-weight: 600; letter-spacing: .01em; }
body.hv2 main article a:hover h2 { color: var(--brass); }

/* ===== polish pass: info pages (about, contact, affiliate programme, track, bulk orders, policy pages) ===== */
/* /track: hairline back under the form, 44px sign-in link */
body.hv2 main .admin-card [style*="border-top: 1px solid var(--line)"] { border-top-color: var(--line) !important; }
body.hv2 main .admin-card a[style*="2563eb"] { display: inline-block; padding: 12px 6px; margin: -12px -6px; }
/* /affiliate-program: outline button legible inside the dark closing panel; brass step chips; no glow on the eyebrow dot; visible link slab */
body.hv2 .ppx-close-panel .btn-secondary { color: var(--on-dark) !important; border-color: rgba(244,241,234,.45) !important; }
body.hv2 .ppx-close-panel .btn-secondary:hover { background: var(--paper) !important; color: var(--ink) !important; border-color: var(--paper) !important; }
body.hv2 .ppx-chip { background: rgba(176,141,62,.14) !important; border: 1px solid rgba(176,141,62,.4) !important; color: var(--brass) !important; border-radius: var(--radius-1, 2px) !important; }
body.hv2 .ppx-dot { box-shadow: none !important; }
body.hv2 .ppx-pill { background: var(--paper-2) !important; border: var(--hair) !important; border-radius: var(--radius-1, 2px) !important; }
/* /page/*: reading rhythm of CMS content (the v2 h2/h3/p margin resets must not flatten it) */
body.hv2 .rich-content p { margin: 0 0 1em; }
body.hv2 .rich-content h2, body.hv2 .rich-content h3, body.hv2 .rich-content h4 { margin: 1.6em 0 .6em; line-height: 1.2; }
body.hv2 .rich-content h2 { font-size: 1.5em; }
body.hv2 .rich-content h3 { font-size: 1.25em; }
body.hv2 .rich-content h4 { font-size: 1.1em; }
body.hv2 .rich-content > :first-child { margin-top: 0; }
/* /contact + /about Reach Us: 44px hit areas on the sms/mailto links without moving the layout */
body.hv2 main ul[style*="gap: 18px"] li > a { display: inline-block; padding: 12px 0; margin: -12px 0; text-decoration: underline; text-underline-offset: 3px; }
/* /bulk-orders (any .admin-card with a heading): room under the card title; textareas keep their classic minimum */
body.hv2 main .admin-card > h2 { margin: 0 0 20px; }
body.hv2 .form-row textarea { min-height: 120px; }
/* /about: cards on paper with the two system radii; stat figures at 600 */
body.hv2 main div[style*="background: white"] { background: var(--paper) !important; border: var(--hair) !important; border-radius: var(--radius-2, 6px) !important; }
body.hv2 main a[style*="background: white"] { background: var(--paper) !important; border-radius: var(--radius-1, 2px) !important; }
body.hv2 main div[style*="font-size: 36px"] { font-weight: 600 !important; }
/* FAQ (contact + about): tighter rhythm on phones, ink questions, 44px calculator CTA in the 2px radius */
@media (max-width: 639.98px) {
  body.hv2 .faq-item summary { padding: 20px 0; font-size: 18px; }
  body.hv2 .faq-item p { padding-bottom: 20px; }
}
body.hv2 .faq-item summary { color: var(--ink); }
body.hv2 .faq-item p a[style*="background: var(--ink)"] { display: inline-flex !important; align-items: center; min-height: 44px; border-radius: var(--radius-1, 2px) !important; }
/* /products: cards are visible at once (no reveal-on-scroll fade), like the homepage grid */
body.hv2 .product-card[data-rv] { opacity: 1 !important; transform: none !important; transition: none !important; }
/* info pages, desktop findings: visible contact fields, affiliate FAQ measure, about values 3+3, brass eyebrows where --accent-strong was
   undefined, policy column under its title, card-scale bulk-quote heading, one h1 scale, no hover lift, 404 links 3+2, CMS spacer lines */
body.hv2 .two-col-page-grid.contact-variant .form-row input, body.hv2 .two-col-page-grid.contact-variant .form-row textarea { border-color: var(--ink-4, #8A8E94); }
body.hv2 .two-col-page-grid.contact-variant .form-row input:hover, body.hv2 .two-col-page-grid.contact-variant .form-row textarea:hover { border-color: var(--ink-3); }
body.hv2 .ppx-faq details { max-width: 760px; }
@media (min-width: 900px) { body.hv2 main section[style*="paper-2"] > .container > div[style*="minmax(280px"] { grid-template-columns: repeat(3, 1fr) !important; } }
body.hv2 main [style*="--accent-strong"] { color: var(--brass) !important; letter-spacing: var(--track-caps) !important; font-weight: 500; }
body.hv2 .page-header + section > .container[style*="max-width: 760px"] { margin-left: 0 !important; }
body.hv2 main .admin-card > h2 { font-size: clamp(24px, 1.25rem + .5vw, 28px); line-height: 1.2; margin: 0 0 24px; }
body.hv2 main h1[style*="clamp("] { font-size: var(--fs-1) !important; line-height: 1.05 !important; }
body.hv2 .ppb-stat:hover, body.hv2 main .admin-card .btn:hover { transform: none !important; }
body.hv2 main .container[style*="text-align: center"] [style*="gap: 28px"] { max-width: 520px; margin-inline: auto; gap: 4px 24px; }
body.hv2 .rich-content p:has(> br:only-child) { display: none; }
/* /about: the three stat tiles share one row from tablet width up (2 + 1 on phones) */
@media (min-width: 640px) { body.hv2 main div[style*="grid-template-columns: 1fr 1fr"]:has(> div > div[style*="font-size: 36px"]) { grid-template-columns: repeat(3, 1fr) !important; } }

/* ===== polish pass: cross-page consistency and accessibility (global reviewer) ===== */
/* size cards show the focus ring (the real radio is invisible) */
body.hv2 .variant-option input:focus-visible + .variant-card { outline: 2px solid var(--brass); outline-offset: 2px; }
/* focus rings: brass on paper (5:1), brass-2 inside dark surfaces (5.2:1 on ink) */
body.hv2 .hv2-sale :focus-visible, body.hv2 .hv2-ruo :focus-visible, body.hv2 .cart-summary :focus-visible, body.hv2 .cx-stickybar :focus-visible, body.hv2 .calc-result :focus-visible, body.hv2 .calc-shop :focus-visible, body.hv2 .ppb-panel :focus-visible, body.hv2 .ppx-receipt :focus-visible, body.hv2 .ppx-close-panel :focus-visible, body.hv2 .partner-claim :focus-visible { outline-color: var(--brass-2); }
/* one section rhythm on every page (83px desktop, 48px phone, like the homepage) */
body.hv2 main section[style*="padding: 60px 0"], body.hv2 main section[style*="padding: 80px 0"], body.hv2 main section[style*="padding: 100px 0 80px"], body.hv2 main section[style*="padding: 80px 0 100px"] { padding-block: var(--section) !important; }
/* AA contrast: affiliate step chips on paper; struck-through price on the selected (ink) variant card */
body.hv2 .ppx-chip { background: var(--paper) !important; border-color: var(--brass-2) !important; }
body.hv2 .variant-option input:checked + .variant-card s { color: var(--on-dark-2) !important; }
/* 44px hit areas: product breadcrumbs and the complete-your-order product link */
body.hv2 .breadcrumbs li a { display: inline-block; padding: 15px 4px; margin: -15px -4px; }
body.hv2 .breadcrumbs li { display: inline-flex; align-items: center; min-height: 44px; }
body.hv2 .pd-complete-n { display: inline-block; padding: 14px 0; margin: -14px 0; }
/* the last uppercase tracked buttons (calculator rail, complete-your-order) become sentence-case 13px/600 like every other button */
body.hv2 .calc-add, body.hv2 .calc-rec-add, body.hv2 .calc-copy, body.hv2 .calc-browse, body.hv2 .pd-complete-add { text-transform: none !important; letter-spacing: .01em !important; font-size: var(--fs-ui-s) !important; font-weight: 600; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
body.hv2 .pd-complete-add { color: var(--on-dark) !important; }
/* [PPS-QUIET-ADD] a disabled Add ("Out of stock") is light paper-2, so its text is ink, not the light on-dark (was 1.08:1) */
body.hv2 .pd-complete-add:disabled { color: var(--ink) !important; }
/* eyebrows and section headings on the shared scale */
body.hv2 .hero-eyebrow, body.hv2 .cx-empty-eyebrow, body.hv2 .compare-card-eyebrow { font-family: var(--font-body); font-weight: 500; letter-spacing: var(--track-caps) !important; color: var(--brass) !important; }
body.hv2 main h2[style*="clamp(28px, 4vw"], body.hv2 .ppx-how h2, body.hv2 .ppx-math h2, body.hv2 .ppx-faq h2, body.hv2 .ppx-close h2 { font-size: var(--fs-2) !important; line-height: 1.1; }
/* /track fields at the site's 52px; the calculator rail footer loses the last gradient */
body.hv2 main .admin-card .form-row input { padding: 12px 14px !important; }
body.hv2 .calc-shop-f { background: transparent !important; background-image: none !important; border-top: 1px solid rgba(244,241,234,.12) !important; }

/* [PPS-A11Y-2] skip-link target lands below the sticky header */
body.hv2 #main { scroll-margin-top: 80px; }

/* [PPS-STICKY-BUY] product page: price + Add to Cart bar on phones while the buy box is off screen */
body.hv2 .pd-stickybuy { display: none; }
@media (max-width: 768px) {
  body.hv2 .pd-stickybuy { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; display: flex; align-items: center; gap: 12px; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: var(--paper); border-top: var(--hair); box-shadow: 0 -6px 20px rgba(0,0,0,.08); }
  body.hv2 .pd-stickybuy[hidden] { display: none; }
  /* PPS-STICKYBAR: slides in and out (transform only) instead of being switched on and off while scrolling, and the
     page keeps the same bottom room the whole time: iPhone Safari drew a bar that was switched on mid-scroll in the
     middle of the screen */
  body.hv2 .pd-stickybuy { transform: translateY(110%); visibility: hidden; transition: transform .22s ease, visibility .22s; will-change: transform; }
  body.hv2 .pd-stickybuy.pd-st-on { transform: none; visibility: visible; }
  body.hv2 .pd-stickybuy-info { min-width: 0; flex: 1; }
  body.hv2 .pd-stickybuy-name { font-size: 13px; color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.hv2 .pd-stickybuy-price { font-weight: 600; font-size: 16px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.hv2 .pd-stickybuy-btn { min-height: 44px; padding: 0 20px; white-space: nowrap; flex-shrink: 0; }
  body.hv2.has-stickybuy { padding-bottom: 76px; }
  body.hv2.pcq-lock .pd-stickybuy { display: none; }   /* out of the way while the cart drawer is open */
}

/* [PPS-POSTCHECK] the dark-well heading rule above matches any div whose inline style mentions var(--ink); the research
   article wrapper only sets its text colour, so its H2/H3 rendered paper-on-paper. Keep headings dark there. */
body.hv2 .article-content h2, body.hv2 .article-content h3, body.hv2 .article-content h4,
body.hv2 div[style*="color: var(--ink)"]:not([style*="background"]) h2, body.hv2 div[style*="color: var(--ink)"]:not([style*="background"]) h3 { color: var(--ink) !important; }

/* [PPS-SWEEP] order flow: the phone sticky Add to Cart bar steps aside while the email offer sheet is up; the
   applied-code Remove, the cross-sell close and the offer close reach 44px */
body.hv2.pps-ec-open .pd-stickybuy { display: none !important; }
body.hv2 form[action="/cart/remove-code"] button { display: inline-flex; align-items: center; min-height: 44px; padding: 0 8px !important; margin-block: -12px; }
body.hv2 .upsell-close { width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center; }
body.hv2 #pps-ec-close { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }


/* [PPS-SWEEP] age gate: scrolls when the card is taller than the screen (short or landscape phones) so the
   Agree button is always reachable; the backdrop stays fixed behind the scrolling card */
body.hv2 .age-gate { overflow-y: auto; -webkit-overflow-scrolling: touch; align-items: flex-start; }
body.hv2 .age-gate-backdrop { position: fixed; }
body.hv2 .age-gate-card { margin: auto; }

/* [PPS-SWEEP] render pass: on laptops the Add to Cart row comes before Bundle & Save so it sits above the fold;
   comparison tables fit three columns on phones; card COA links, the clear-search link and the notify
   summary reach 44px; tablet category pills 44px; sold-out tag 12px */
@media (min-width: 900px) {
  body.hv2 #pdp-add-form { display: flex; flex-direction: column; }
  body.hv2 #pdp-add-form .bundle-save { order: 3; margin-top: 16px; }
}
/* [PPS-CARD-GAP] phones: words are never split mid-word; a table too wide for the screen scrolls inside its own box */
@media (max-width: 480px) {
  body.hv2 .comparison-table { min-width: 0; width: 100%; }
  body.hv2 .comparison-table thead th, body.hv2 .comparison-table tbody td { white-space: normal; padding: 10px 6px; font-size: 13px; overflow-wrap: normal; word-break: normal; }
  body.hv2 .comparison-table thead th { letter-spacing: .06em; }
  body.hv2 .comparison-table tbody td:first-child { white-space: normal; font-size: 12px; }
}
/* a table wider than its box shows a soft shadow on the side that still scrolls; the paper-2 covers move with the
   content and hide the shadow once that edge is reached, so a table that fits shows none */
body.hv2 .comparison-table-wrap { background:
  linear-gradient(var(--paper-2), var(--paper-2)) left center / 12px 100% no-repeat local,
  linear-gradient(var(--paper-2), var(--paper-2)) right center / 12px 100% no-repeat local,
  linear-gradient(to right, rgba(31, 33, 36, .16), transparent) left center / 12px 100% no-repeat scroll,
  linear-gradient(to left, rgba(31, 33, 36, .16), transparent) right center / 12px 100% no-repeat scroll,
  var(--paper-2); }
/* compare pages: the card sections get inner padding so headings and text do not touch the border; a section that only
   holds the table keeps just the table's own box */
body.hv2 .compare-article .compare-section { padding: 20px 22px; }
body.hv2 .compare-article .compare-section > :first-child { margin-top: 0; }
body.hv2 .compare-article .compare-section > :last-child { margin-bottom: 0; }
body.hv2 .compare-article .compare-section:has(> .comparison-table-wrap:only-child) { padding: 0; background: none; border: 0; border-radius: 0; }
@media (max-width: 480px) { body.hv2 .compare-article .compare-section { padding: 16px; } }
body.hv2 .label-card dd a[href*="/coas/"] { display: inline-block; min-width: 44px; text-align: center; }
body.hv2 .products-search-clear, body.hv2 a[href="/products"].cx-clear { display: inline-flex; align-items: center; min-height: 44px; }
body.hv2 details.pd-notify-other > summary, body.hv2 summary.pd-notify-summary { display: flex; align-items: center; min-height: 44px; }
@media (max-width: 1023px) and (pointer: coarse) { body.hv2 .cat-pill { min-height: 44px; } }
body.hv2 .sold-out-banner .sold-out-tag { font-size: 12px; }

/* [PPS-SWEEP] product facts, bundle contents, top-of-cart alert */
body.hv2 .pd-facts { margin: 16px 0 0; padding: 12px 0 0; border-top: var(--hair); display: grid; gap: 6px; font-size: 13px; line-height: 1.45; }
body.hv2 .pd-facts div { display: grid; grid-template-columns: 96px 1fr; gap: 10px; }
body.hv2 .pd-facts dt { color: var(--ink-3); font-family: var(--font-mono); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; padding-top: 2px; }
body.hv2 .pd-facts dd { margin: 0; color: var(--ink-2); }
body.hv2 .pd-includes { margin: 0 0 14px; font-size: 13px; color: var(--ink-2); line-height: 1.5; }
body.hv2 .pd-includes span { font-family: var(--font-mono); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); margin-right: 4px; }
body.hv2 .pd-includes a { color: var(--ink); text-decoration: underline; text-underline-offset: 2px; }
body.hv2 .cart-alert-top:focus { outline: 2px solid var(--brass); outline-offset: 2px; }

/* [PPS-SWEEP-2] contrast on product pages (skeptic re-measure): the sold-out size card was faded to 45% (its size, price
   and "Sold Out" read at about 2:1), the struck original price sat at 3.8:1, the disabled Sold Out button at 3.6:1. The
   card keeps its strike line and not-allowed cursor but its text stays legible; the struck price uses ink-3 on paper
   (5.4:1) and the paper-on-dark tint on a selected card; disabled buttons are solid ink-3 with paper text (5.4:1). */
body.hv2 .variant-option.sold-out .variant-card { opacity: 1; color: var(--ink-3); border-style: dashed; }
body.hv2 .variant-option.sold-out .variant-card .label { color: var(--ink-3); }
body.hv2 .variant-option.sold-out .variant-card .price { color: var(--ink-3); }
body.hv2 .variant-option.sold-out .variant-card .stock span { color: var(--warning) !important; font-weight: 600; }
body.hv2 .variant-option.sold-out .variant-card::after { background: var(--ink-4); }
body.hv2 .variant-card .price s { opacity: 1 !important; color: var(--ink-3); }
body.hv2 .pd-complete-p s { opacity: 1 !important; color: var(--ink-3); }   /* the struck price in "Complete your order" was 2.5:1 */
body.hv2 .btn:disabled, body.hv2 .btn[disabled], body.hv2 .hv2-btn:disabled, body.hv2 .hv2-btn[disabled] { opacity: 1 !important; background: var(--ink-3) !important; color: var(--paper) !important; border-color: var(--ink-3) !important; }
/* [PPS-CARD-GAP] product cards: the name no longer reserves a second line (a one-line name such as "GLP-3 RT" left an
   empty line above Strength) and the spec rows sit on the button instead, so Strength / Purity / Price and the button
   stay level across a row; extra space only appears beside a neighbour whose name really wraps to two lines. */
body.hv2 .label-name { min-height: 0; }
body.hv2 .label-spec { margin-top: auto; }
body.hv2 .label-btn { margin-top: 0; }
/* [PPS-CARD-GAP] 1024-1279px: cards are about 236px wide, too narrow for "PRICE" plus "FROM $79.99 $67.99" on one line (the sale price
   ran 15px past the card edge), so the Price label is hidden there as it already is below 1024px; screen readers still read it. */
@media (min-width: 1024px) and (max-width: 1279.98px) {
  body.hv2 .label-price-row { grid-template-columns: 1fr; }
  body.hv2 .label-price-row dt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  body.hv2 .label-code { white-space: nowrap; }   /* a long SKU ends in "…" on one line, so the names in a row stay level */
}
/* [PPS-CARD-GAP] under 375px (small Android phones, first iPhone SE) the two-column grid leaves about 130px per card and
   "FROM $79.99 $67.99" ran up to 22px past the card, so the word "from" is dropped there (the size menu shows every size). */
@media (max-width: 374.98px) { body.hv2 .label-from { position: absolute; width: 1px; height: 1px; margin: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } }
/* [PPS-CARD-GAP] under 1024px the Price label is hidden, so the price gets the whole row (the 4.2em label column beat
   the 1fr rule in home-v2.css and prices did not line up when the sale is off) */
@media (max-width: 1023.98px) { body.hv2 .label-price-row { grid-template-columns: 1fr; } }
/* [PPS-CARD-GAP] under 390px a size menu next to "Strength" had 22-49px for its text ("10mg" showed as "10"), so on cards
   with a size menu the label is hidden (the menu's own label still says "Strength for <name>") */
@media (max-width: 389.98px) {
  body.hv2 .label-spec > div:first-child:has(select.label-pick) { grid-template-columns: 1fr; }
  body.hv2 .label-spec > div:first-child:has(select.label-pick) dt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
/* [PPS-CARD-GAP] under 375px "Purity" plus "99.50% · COA" is wider than the card and the A of COA was cut off, so the
   Purity label is hidden there as the Price label is (screen readers still read it) */
@media (max-width: 374.98px) {
  body.hv2 .label-spec > div:nth-child(2):not(.label-price-row) { grid-template-columns: 1fr; }
  body.hv2 .label-spec > div:nth-child(2):not(.label-price-row) dt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
/* [PPS-A11Y-2] the two-line clamp sits on an inner span, so the heading no longer clips the name link's 12px tap padding
   (the link was about 20px tall) and a long name no longer shows half of a third line */
body.hv2 .label-name { display: flow-root; overflow: visible; -webkit-line-clamp: none; }
body.hv2 .label-name-t { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; padding-bottom: .12em; margin-bottom: -.12em; }   /* room for p/y/g tails on the last line */
body.hv2 .label-name a { padding: 12.5px 0; margin: -12.5px 0; }   /* at least 44px tall with a one-line name */
/* the display cut of the heading font draws "+" with hairlines (1.3:1 on ordinary screens); only the "+" in a card name
   uses the text cut, and the small negative margin keeps every name on the same lines as before */
body.hv2 .label-plus { font-variation-settings: "opsz" 24, "SOFT" 0, "WONK" 0; margin-inline: -.05em; }
body.hv2 .label-plus-end { margin-inline: .1em 0; }   /* a "+" straight after a letter (NAD+) keeps a small gap from it */
/* at 320px the ~118px name column needs 3 lines for "CJC-1295 no DAC + Ipamorelin" (the specs sit at the bottom, so rows stay level) */
@media (max-width: 359.98px) { body.hv2 .label-name-t { -webkit-line-clamp: 3; } }
