/**
 * product.css — Single product (PDP). Loaded only on product pages.
 * Uses tokens.css + shared components from main.css.
 */

/* Breadcrumbs */
.gfo-breadcrumbs { background: var(--gfo-sand); padding: 14px 0; border-bottom: 1px solid rgba(58,40,32,.08); font-size: 12px; font-weight: 500; color: var(--gfo-text-hint); }
.gfo-breadcrumbs a { color: var(--gfo-text-hint); text-decoration: none; }
.gfo-breadcrumbs a:hover { color: var(--gfo-terracotta); }
.gfo-breadcrumbs__current { color: var(--gfo-ink); }

/* Buy section */
.gfo-pdp { padding: 40px 0 56px; background: var(--gfo-sand); }
.gfo-pdp__grid { display: grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items: start; }
.gfo-pdp__gallery { position: sticky; top: 88px; }
.gfo-pdp__stage { position: relative; aspect-ratio: 1 / 1; border: 1px solid rgba(58,40,32,.12); border-radius: 16px; overflow: hidden; background: var(--gfo-surface); }
.gfo-pdp__stage img { width: 100%; height: 100%; object-fit: cover; }
/* gallery arrows (JS-injected when >1 image; stage is also touch-swipeable) */
.gfo-pdp__nav { position: absolute; top: 50%; transform: translateY(-50%); width: 38px; height: 38px; border-radius: 50%; border: 1px solid rgba(58,40,32,.18); background: rgba(255,255,255,.92); color: var(--gfo-ink); font-size: 24px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; padding: 0 0 3px; transition: background .15s ease; }
.gfo-pdp__nav:hover { background: #fff; }
.gfo-pdp__nav--prev { left: 10px; }
.gfo-pdp__nav--next { right: 10px; }
.gfo-pdp__ph { width: 100%; height: 100%; }
.gfo-pdp__thumbs { display: flex; gap: 12px; margin-top: 14px; }
.gfo-pdp__thumb { flex: 1; aspect-ratio: 1 / 1; border: 1px solid rgba(58,40,32,.14); border-radius: 10px; overflow: hidden; cursor: pointer; background: none; padding: 0; }
.gfo-pdp__thumb img { width: 100%; height: 100%; object-fit: cover; }
.gfo-pdp__thumb.is-active { border: 2px solid var(--gfo-terracotta); }

/* Buy box */
.gfo-pdp__buy .product_title { font-size: 46px; letter-spacing: -.02em; margin: 10px 0 0; }
/* Funnel pages promote the brand eyebrow to the H1 (2026-08-27): keep it at eyebrow scale, not heading scale. */
.gfo-pdp__buy h1.gfo-eyebrow { margin: 0; line-height: inherit; font-size: var(--gfo-fs-mono); }
.gfo-pdp__meta { display: flex; align-items: center; gap: 10px; margin: 14px 0 0; flex-wrap: wrap; }
.gfo-pdp__meta .woocommerce-product-rating { margin: 0; }
.gfo-instock { font-size: 11px; font-weight: 600; color: var(--gfo-success); background: rgba(79,138,91,.12); padding: 4px 9px; border-radius: 20px; }
.gfo-pdp__buy .woocommerce-product-details__short-description { font-size: 15.5px; line-height: 1.6; color: var(--gfo-text); margin: 18px 0 0; max-width: 48ch; }
.gfo-pdp__price { margin: 24px 0 0; }
.gfo-pdp__price .price { font-family: var(--gfo-font-display); font-weight: 700; font-size: 34px; color: var(--gfo-ink); }
.gfo-pdp__price del { font-size: 18px; color: var(--gfo-text-faint); font-weight: 500; }
.gfo-pdp__price ins { text-decoration: none; }

/* Bundle tiers */
.gfo-tiers { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
/* flavour pills (second variation axis, above the pack tiers) */
.gfo-flavours { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.gfo-flavours__label { font-family: var(--gfo-font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--gfo-text-muted); margin-right: 4px; }
.gfo-flavour { border: 1px solid rgba(58,40,32,.22); background: var(--gfo-surface); border-radius: 9px; padding: 9px 16px; font: 600 13.5px var(--gfo-font-body); color: var(--gfo-ink); cursor: pointer; }
.gfo-flavour.is-selected { border-color: var(--gfo-terracotta); box-shadow: 0 0 0 1px var(--gfo-terracotta); background: rgba(192,104,60,.06); }
.gfo-tier { display: flex; align-items: center; gap: 14px; width: 100%; background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.16); border-radius: 11px; padding: 16px 18px; cursor: pointer; text-align: left; }
.gfo-tier.is-selected { background: #fff; border: 2px solid var(--gfo-terracotta); padding: 15px 17px; box-shadow: 0 8px 22px rgba(192,104,60,.14); }
/* Bulk-pack disclosure. Deliberately NOT styled as a tier — dashed outline + no radio dot so it
   reads as a control to open, never as a pack you could accidentally buy. 46px tall = tappable. */
.gfo-tier-more { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 46px; padding: 12px 16px; background: transparent; border: 1px dashed rgba(58,40,32,.34); border-radius: 11px; color: var(--gfo-terracotta); font-family: var(--gfo-font-body); font-weight: 700; font-size: 14px; text-align: center; cursor: pointer; }
.gfo-tier-more::after { content: "▾"; font-size: 11px; line-height: 1; }
.gfo-tier-more:hover { background: rgba(192,104,60,.06); border-color: var(--gfo-terracotta); }
.gfo-tier__dot { width: 20px; height: 20px; border-radius: 50%; border: 2px solid rgba(58,40,32,.3); flex: none; position: relative; }
.gfo-tier.is-selected .gfo-tier__dot { border-color: var(--gfo-terracotta); }
.gfo-tier.is-selected .gfo-tier__dot::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: var(--gfo-terracotta); }
.gfo-tier__info { flex: 1; display: flex; flex-direction: column; }
.gfo-tier__label { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15px; color: var(--gfo-ink); }
.gfo-tier__sub { font-size: 12px; color: var(--gfo-text-muted); }
.gfo-tier__badge { font-family: var(--gfo-font-mono); font-size: 8.5px; font-weight: 700; letter-spacing: .1em; color: #fff; background: var(--gfo-success); padding: 4px 8px; border-radius: 20px; flex: none; }
.gfo-tier__price { display: flex; flex-direction: column; align-items: flex-end; font-family: var(--gfo-font-display); font-weight: 700; font-size: 15px; color: var(--gfo-ink); flex: none; }
.gfo-tier__was { font-size: 12px; font-weight: 400; opacity: .55; text-decoration: line-through; } /* regular/RRP anchor when a pack is on sale */
/* optional per-product payment badges + detail line (driven by landing data: paybadges / paynote) */
.gfo-pdp__paybadge { font-family: var(--gfo-font-body); font-size: 10px; font-weight: 800; letter-spacing: .02em; padding: 4px 8px; border-radius: 4px; background: #fff; border: 1px solid rgba(58,40,32,.15); color: #1a1a1a; }
.gfo-pdp__paybadge--paynow { color: #7a1b78; }
.gfo-pdp__paybadge--atome { background: #edff8c; border-color: #d9ee6d; color: #111; }
.gfo-pdp__paynote { font-size: 12px; line-height: 1.6; color: var(--gfo-text-muted); margin: 8px 0 0; }

/* Value-stacked pricing cards (rendered when landing data provides 'pricecards') */
.gfo-tier--card { position: relative; display: block; padding: 0 0 16px; overflow: hidden; text-align: left; }
.gfo-tier--card.is-selected { padding: 0 0 15px; } /* keep the highlight border without collapsing the card layout */
.gfo-tiercard__ribbon { position: absolute; top: 0; right: 0; background: #b03a48; color: #fff; font: 700 9px/1 var(--gfo-font-mono); letter-spacing: .1em; padding: 6px 10px; border-radius: 0 0 0 8px; }
/* cards.chosen flash: top-LEFT so it can share a card with (or sit beside) the price-earned BEST VALUE ribbon. */
.gfo-tiercard__ribbon--chosen { left: 0; right: auto; border-radius: 0 0 8px 0; background: var(--gfo-success); }
/* cards.atomelogo chip: badge + instalment figure are ONE statement, so they get one line.
   The chip markup ships from shared product.js, but its layout only ever existed inside the
   MOVEON skin — everywhere else the global block-level img dropped the figure to its own line,
   flush against the card edge. Base-layer layout only (no pill/background): the MOVEON rule is
   more specific and keeps its own look. Indent matches the per-unit meta line directly above. */
.gfo-tiercard__atome--chip { display: inline-flex; align-items: center; gap: 8px; width: fit-content; white-space: nowrap; margin: 0 18px 8px 46px; }
.gfo-tiercard__atome--chip img { display: block; width: 35px; height: 24px; border-radius: 6px; }
@media (max-width: 640px) { .gfo-tiercard__atome--chip { margin-left: 18px; } }
.gfo-tiercard__banner { display: block; background: rgba(79,138,91,.16); color: var(--gfo-success); text-align: center; font: 700 11px/1.3 var(--gfo-font-body); letter-spacing: .04em; padding: 9px 12px; }
.gfo-tiercard__top { display: flex; align-items: center; gap: 12px; padding: 16px 18px 4px; }
.gfo-tiercard__name { flex: 1; font: 700 16px var(--gfo-font-display); color: var(--gfo-ink); }
.gfo-tiercard__name em { font-style: normal; color: var(--gfo-success); font-size: 13px; }
.gfo-tiercard__price { font: 700 24px var(--gfo-font-display); color: var(--gfo-ink); white-space: nowrap; text-align: right; }
.gfo-tiercard__price del { font-size: 13px; font-weight: 400; opacity: .55; margin-left: 5px; }
.gfo-tiercard__price small { display: block; font: 600 10px var(--gfo-font-body); color: var(--gfo-text-muted); }
.gfo-tiercard__meta { display: block; padding: 2px 18px 10px 46px; font-size: 12.5px; color: var(--gfo-text-muted); }
.gfo-tiercard__feats { display: block; border-top: 1px solid rgba(58,40,32,.1); margin: 4px 18px 0; padding-top: 10px; }
.gfo-tiercard__feat { display: flex; align-items: baseline; gap: 8px; font-size: 13px; color: var(--gfo-text); padding: 3px 0; }
.gfo-tiercard__feat i { font-style: normal; color: var(--gfo-success); }
.gfo-tiercard__feat del { margin-left: auto; opacity: .5; font-size: 12px; white-space: nowrap; }
.gfo-tiercard__bonuses { display: block; text-align: center; font: 700 9.5px var(--gfo-font-mono); letter-spacing: .12em; color: var(--gfo-amber); background: var(--gfo-soft); border-radius: 20px; padding: 5px 12px; margin: 8px auto 4px; width: max-content; }
.gfo-tier__save { font-family: var(--gfo-font-body); font-size: 10px; font-weight: 700; color: var(--gfo-success); }
.gfo-tier[disabled] { opacity: .5; cursor: not-allowed; }

/* WooCommerce add-to-cart form */
.gfo-pdp__buy form.cart { margin: 18px 0 0; }
.gfo-pdp__buy form.cart .quantity { margin-right: 10px; }
/* Pack tiers ARE the quantity — hide the native qty box once product.js has built them
   (the class is set only when a pack axis exists, so flavour-only products keep theirs).
   The input stays in the DOM at value 1, so add-to-cart still posts a quantity.
   !important is required: WooCommerce's add-to-cart-variation.js jQuery-.show()s the
   wrapper, writing an inline display:block that would otherwise win. */
.gfo-pdp__buy form.cart.gfo-has-tiers .quantity { display: none !important; }
/* Tier cards drive the selection: hide WC's small duplicate variation price (the
   big .gfo-pdp__price is kept in sync by product.js). */
.gfo-pdp__buy .woocommerce-variation-price { display: none; }
/* The `.woocommerce` prefix is load-bearing: WooCommerce's own `.woocommerce button.button`
   (specificity 0,2,1) outranked the unprefixed selector (0,2,0), so this block never applied
   to the buy button — it rendered at WC's `.618em` padding, i.e. 36px tall on a 412px phone,
   under the 44px minimum tap target for the single most important button on the page. */
.gfo-pdp__buy .single_add_to_cart_button,
.woocommerce .gfo-pdp__buy button.single_add_to_cart_button {
  width: 100%; background: var(--gfo-terracotta); color: #fff; border: 0; border-radius: 9px;
  font-family: var(--gfo-font-body); font-size: 15px; font-weight: 700; letter-spacing: .02em; padding: 17px; cursor: pointer;
  min-height: 48px;
}
.gfo-pdp__buy .single_add_to_cart_button:hover { background: #a95930; }
.gfo-pdp__buy table.variations { width: 100%; margin-bottom: 14px; }
.gfo-pdp__buy table.variations td, .gfo-pdp__buy table.variations th { padding: 6px 0; }

.gfo-pdp__guarantee { display: flex; align-items: center; justify-content: center; gap: 7px; margin-top: 12px; font-size: 12.5px; font-weight: 500; color: var(--gfo-text-muted); }
.gfo-tick { color: var(--gfo-success); }
.gfo-pdp__trust { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 20px; }
.gfo-pdp__trust > div { background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.12); border-radius: 9px; padding: 13px; text-align: center; }
.gfo-pdp__trust strong { display: block; font-family: var(--gfo-font-display); font-size: 12px; }
.gfo-pdp__trust span { font-size: 11px; color: var(--gfo-text-muted); }
.gfo-pdp__pay { display: flex; align-items: center; gap: 10px; margin-top: 16px; flex-wrap: wrap; font-size: 11px; color: var(--gfo-text-hint); }

/* Feel band */
.gfo-pdp-feel { padding: 52px 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-pdp-feel__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.gfo-pdp-feel__item { text-align: center; }
.gfo-pdp-feel__pct { font-family: var(--gfo-font-display); font-weight: 700; font-size: 44px; color: var(--gfo-terracotta); }
.gfo-pdp-feel__label { font-size: 12.5px; color: var(--gfo-text); margin-top: 10px; }
.gfo-pdp__note { text-align: center; font-family: var(--gfo-font-mono); font-size: 11px; color: var(--gfo-text-faint); margin-top: 26px; }

/* Benefit band */
.gfo-pdp-benefits { padding: 48px 0; background: var(--gfo-ink-deep); color: #fff; }
.gfo-pdp-benefits__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.gfo-pdp-benefit__idx { font-family: var(--gfo-font-mono); font-weight: 700; font-size: 13px; color: var(--gfo-clay-light); margin-bottom: 8px; }
.gfo-pdp-benefit__title { font-family: var(--gfo-font-display); font-weight: 700; font-size: 16px; }
.gfo-pdp-benefit__line { font-size: 13px; color: var(--gfo-on-dark-muted); margin-top: 6px; }

/* Tabs */
.gfo-pdp-tabs { padding: 56px 0; background: var(--gfo-sand); scroll-margin-top: 80px; }
.gfo-pdp-tabs .wc-tabs { display: flex; gap: 6px; border-bottom: 1px solid rgba(58,40,32,.16); margin: 0 0 30px; padding: 0; list-style: none; }
.gfo-pdp-tabs .wc-tabs li { list-style: none; }
.gfo-pdp-tabs .wc-tabs li a { display: inline-block; padding: 12px 14px; font-family: var(--gfo-font-body); font-weight: 600; font-size: 14px; color: var(--gfo-text-hint); text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; }
.gfo-pdp-tabs .wc-tabs li.active a { color: var(--gfo-ink); border-bottom-color: var(--gfo-terracotta); }
.gfo-pdp-tabs .woocommerce-Tabs-panel h2 { font-size: 24px; }

/* Guarantee */
.gfo-pdp-guarantee { padding: 54px 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-pdp-guarantee__inner { max-width: 760px; margin-inline: auto; padding-inline: var(--gfo-gutter); text-align: center; }
.gfo-seal { display: block; width: 168px; height: 168px; margin: 0 auto 20px; color: var(--gfo-success); }
.gfo-seal__ring { font: 500 9px/1 var(--gfo-font-mono); letter-spacing: .5px; }
.gfo-seal__days { font: 500 12px/1 var(--gfo-font-mono); letter-spacing: .5px; }
@media (max-width: 640px) { .gfo-seal { width: 148px; height: 148px; } }
.gfo-pdp-guarantee__eyebrow { margin-bottom: 10px; }
.gfo-pdp-trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 16px 24px; max-width: 520px; margin: 22px auto 0; padding-top: 20px; border-top: 1px solid rgba(58,40,32,.1); }
.gfo-pdp-trust__item { display: flex; flex-direction: column; align-items: center; gap: 6px; width: 96px; text-align: center; }
.gfo-pdp-trust__item svg { width: 22px; height: 22px; color: var(--gfo-success); }
.gfo-pdp-trust__item span { font-size: 12px; line-height: 1.35; color: var(--gfo-text-muted); }
.gfo-landing-guarantee { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-guarantee__inner { max-width: 640px; margin-inline: auto; padding-inline: var(--gfo-gutter); text-align: center; }
.gfo-landing-guarantee .gfo-eyebrow { font-size: 13px; margin-bottom: 12px; }
.gfo-landing-guarantee__line { font-size: 18px; line-height: 1.65; color: var(--gfo-text); margin: 0 auto; max-width: 46ch; }
.gfo-pdp-guarantee p { font-size: 15px; line-height: 1.65; color: var(--gfo-text); margin: 0 auto; max-width: 52ch; }

/* Cross-sell */
.gfo-pdp-cross { padding: 58px 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-pdp-cross .products { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; list-style: none; margin: 0; padding: 0; }
.gfo-pdp-cross .products li { list-style: none; }

/* Sticky ATC */
.gfo-sticky-atc { position: fixed; left: 0; right: 0; bottom: 0; z-index: 80; background: var(--gfo-ink-deep); border-top: 1px solid rgba(255,255,255,.12); box-shadow: var(--gfo-shadow-sticky); }
.gfo-sticky-atc[hidden] { display: none; }
.gfo-sticky-atc__inner { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding-block: 13px; }
.gfo-sticky-atc__info { display: flex; flex-direction: column; }
.gfo-sticky-atc__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 14px; color: #fff; }
.gfo-sticky-atc__price { font-size: 12px; color: var(--gfo-on-dark-faint); }
.gfo-sticky-atc__price .price { color: #fff; }

/* Responsive */
@media (max-width: 1024px) {
  .gfo-pdp__grid { grid-template-columns: 1fr; gap: 30px; }
  .gfo-pdp__gallery { position: static; }
  .gfo-pdp-feel__grid, .gfo-pdp-benefits__grid { grid-template-columns: repeat(2, 1fr); }
  .gfo-pdp-cross .products { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .gfo-pdp-feel__grid, .gfo-pdp-benefits__grid, .gfo-pdp-cross .products { grid-template-columns: 1fr; }
  .gfo-pdp__buy .product_title { font-size: 34px; }
}

/* ============ Conversion landing sections (playbook-driven PDPs) ============ */
/* 18-day phases */
.gfo-landing-phases__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gfo-landing-phase { background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 26px; }
.gfo-landing-phase__step { font-family: var(--gfo-font-mono); font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--gfo-text-muted); }
.gfo-landing-phase__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 20px; margin: 10px 0 8px; color: var(--gfo-ink); }
.gfo-landing-phase__name span { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; background: var(--gfo-terracotta); color: #fff; font-size: 13px; margin-right: 6px; }
.gfo-landing-phase p { color: var(--gfo-text); font-size: 14.5px; line-height: 1.6; margin: 0; }

/* stats band */
.gfo-landing-stats { background: var(--gfo-ink); color: #fff; padding: 44px 0; }
.gfo-landing-stats__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 26px; }
.gfo-landing-stat__num { font-family: var(--gfo-font-display); font-weight: 700; font-size: 40px; color: var(--gfo-clay-light); }
.gfo-landing-stat__label { font-size: 12.5px; line-height: 1.5; color: rgba(255,255,255,.75); margin-top: 6px; }

/* mechanism */
.gfo-landing-mech { padding: var(--gfo-space-section) 0; }
.gfo-landing-mech__steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gfo-landing-mech__step { background: var(--gfo-sand); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 24px; }
.gfo-landing-mech__idx { font-family: var(--gfo-font-mono); font-size: 12px; color: var(--gfo-terracotta); }
.gfo-landing-mech__step h3 { font-size: var(--gfo-fs-h3); margin: 8px 0; }
.gfo-landing-mech__step p { font-size: 14.5px; line-height: 1.6; color: var(--gfo-text); margin: 0; }
.gfo-landing-mech__answer { margin-top: 22px; background: var(--gfo-surface); border-left: 4px solid var(--gfo-terracotta); border-radius: 10px; padding: 24px 28px; }
.gfo-landing-mech__answer h3 { margin: 0 0 8px; font-size: var(--gfo-fs-h3); }
.gfo-landing-mech__answer p { margin: 0; color: var(--gfo-text); line-height: 1.65; }

/* inside cards */
.gfo-landing-inside { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-inside__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gfo-landing-inside__card { background: var(--gfo-sand); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 24px; }
.gfo-landing-inside__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 18px; color: var(--gfo-ink); }
.gfo-landing-inside__tag { font-family: var(--gfo-font-mono); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--gfo-terracotta); margin: 4px 0 10px; }
.gfo-landing-inside__card p { font-size: 14px; line-height: 1.6; color: var(--gfo-text); margin: 0; }
.gfo-landing-inside__note { text-align: center; margin-top: 20px; font-size: 13px; color: var(--gfo-text-muted); }

/* failed solutions */
.gfo-landing-failed { padding: var(--gfo-space-section) 0; }
.gfo-landing-failed__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.gfo-landing-failed__card { border: 1px solid rgba(58,40,32,.14); border-radius: var(--gfo-radius-card); padding: 22px 24px; background: var(--gfo-surface); }
.gfo-landing-failed__name { font-weight: 700; font-family: var(--gfo-font-display); margin-bottom: 6px; color: var(--gfo-ink); }
.gfo-landing-failed__card p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--gfo-text); }

/* value band */
.gfo-landing-value { background: var(--gfo-terracotta); color: #fff; padding: 56px 20px; text-align: center; }
.gfo-landing-value__inner { max-width: 640px; margin: 0 auto; }
.gfo-landing-value .gfo-eyebrow { color: rgba(255,255,255,.8); }
.gfo-landing-value h2 { color: #fff; font-size: var(--gfo-fs-h2); margin: 10px 0 12px; }
.gfo-landing-value p { color: rgba(255,255,255,.9); line-height: 1.65; margin: 0 0 22px; }
.gfo-landing-value .gfo-btn--primary { background: var(--gfo-ink); }
.gfo-landing-value .gfo-btn--primary:hover { background: #241a15; }

/* FAQ */
.gfo-landing-faq { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-faq__list { max-width: 760px; margin: 0 auto; }
.gfo-landing-faq__item { border: 1px solid rgba(58,40,32,.14); border-radius: 12px; background: var(--gfo-sand); margin-bottom: 10px; padding: 0 20px; }
.gfo-landing-faq__item summary { cursor: pointer; font-weight: 600; font-family: var(--gfo-font-display); padding: 16px 0; color: var(--gfo-ink); list-style: none; position: relative; padding-right: 30px; }
.gfo-landing-faq__item summary::-webkit-details-marker { display: none; }
.gfo-landing-faq__item summary::after { content: '+'; position: absolute; right: 2px; top: 50%; transform: translateY(-50%); font-size: 20px; color: var(--gfo-terracotta); }
.gfo-landing-faq__item[open] summary::after { content: '–'; }
.gfo-landing-faq__item p { margin: 0; padding: 0 0 18px; color: var(--gfo-text); line-height: 1.65; font-size: 14.5px; }

.gfo-landing-disclaimer { font-size: 12px; color: var(--gfo-text-hint); text-align: center; padding: 18px 0 26px; max-width: 720px; margin: 0 auto; }

@media (max-width: 900px) {
  .gfo-landing-phases__grid, .gfo-landing-mech__steps, .gfo-landing-inside__grid { grid-template-columns: 1fr; }
  .gfo-landing-stats__grid { grid-template-columns: repeat(2, 1fr); }
  .gfo-landing-failed__grid { grid-template-columns: 1fr; }
  .gfo-landing-stat__num { font-size: 32px; }
}

/* ============ Buy-box quick benefits + accordions (landing PDPs) ============ */
.gfo-pdp__quick { list-style: none; margin: 14px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 7px 14px; }
.gfo-pdp__quick li { font-size: 13px; font-weight: 500; color: var(--gfo-text); }
.gfo-pdp__quick .gfo-tick { color: var(--gfo-terracotta); font-weight: 700; margin-right: 4px; }
.gfo-pdp__accordions { margin-top: 20px; border-top: 1px solid rgba(58,40,32,.14); }
.gfo-pdp__accordion { border-bottom: 1px solid rgba(58,40,32,.14); }
.gfo-pdp__accordion summary { cursor: pointer; font-family: var(--gfo-font-display); font-weight: 600; font-size: 14px; color: var(--gfo-ink); padding: 13px 26px 13px 0; list-style: none; position: relative; }
.gfo-pdp__accordion summary::-webkit-details-marker { display: none; }
.gfo-pdp__accordion summary::after { content: '+'; position: absolute; right: 2px; top: 50%; transform: translateY(-50%); font-size: 18px; color: var(--gfo-terracotta); }
.gfo-pdp__accordion[open] summary::after { content: '–'; }
.gfo-pdp__accordion p { margin: 0; padding: 0 0 14px; font-size: 13.5px; line-height: 1.6; color: var(--gfo-text); }

/* ============ Category comparison table ============ */
.gfo-landing-compare { padding: var(--gfo-space-section) 0; }
.gfo-landing-compare__scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.gfo-landing-compare__table { width: 100%; min-width: 560px; border-collapse: separate; border-spacing: 0; background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.14); border-radius: var(--gfo-radius-card); overflow: hidden; }
.gfo-landing-compare__table th, .gfo-landing-compare__table td { padding: 13px 14px; text-align: center; font-size: 13.5px; border-bottom: 1px solid rgba(58,40,32,.1); }
.gfo-landing-compare__table thead th { font-family: var(--gfo-font-mono); font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--gfo-text-muted); background: var(--gfo-sand); }
.gfo-landing-compare__table thead th.is-us { color: #fff; background: var(--gfo-terracotta); }
.gfo-landing-compare__table tbody th { text-align: left; font-weight: 600; color: var(--gfo-ink); font-family: var(--gfo-font-body); }
.gfo-landing-compare__table td.is-us { background: rgba(192,104,60,.08); }
.gfo-landing-compare__table tr:last-child th, .gfo-landing-compare__table tr:last-child td { border-bottom: 0; }
.gfo-landing-compare__yes { color: var(--gfo-terracotta); font-weight: 700; font-size: 15px; }
.gfo-landing-compare__no { color: var(--gfo-text-hint); }

/* Rich head-to-head comparison ('comparerich') — a bright, premium card on the dark femoire
   skin. Icon + label + subtext per cell, BEST CHOICE badge, mobile-fit (no side-scroll). */
.gfo-cx__scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 24px 2px 8px; }
.gfo-cx__table { width: 100%; min-width: 560px; border-collapse: separate; border-spacing: 0; background: #fff; border-radius: 20px; box-shadow: 0 26px 60px rgba(0,0,0,.34); font-family: var(--gfo-font-body); }
.gfo-cx__table thead th { padding: 0; vertical-align: bottom; }
.gfo-cx__feat { text-align: left; width: 26%; }
.gfo-cx__feathead { display: block; padding: 22px 20px; font-family: var(--gfo-font-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: #b39a9f; background: #faf5f6; border-top-left-radius: 20px; }
.gfo-cx__col { position: relative; text-align: center; }
.gfo-cx__colname { display: block; padding: 22px 14px 20px; font-weight: 800; font-size: 17px; letter-spacing: .01em; }
.gfo-cx__col--us .gfo-cx__colname { background: linear-gradient(165deg, #883049 0%, #45191F 92%); color: #fff; border-bottom: 3px solid #E79AA0; text-shadow: 0 1px 8px rgba(0,0,0,.25); }
.gfo-cx__col--b  .gfo-cx__colname { background: #fdeef1; color: #cf5c78; border-bottom: 3px solid #f3c4cf; }
.gfo-cx__col--c  .gfo-cx__colname { background: #fbf6e9; color: #c0892c; border-bottom: 3px solid #ecdcae; border-top-right-radius: 20px; }
.gfo-cx__badge { position: absolute; top: -13px; left: 50%; transform: translateX(-50%); white-space: nowrap; background: linear-gradient(180deg, #8c3149, #6d2338); color: #fff; font-family: var(--gfo-font-mono); font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; padding: 6px 15px; border-radius: 30px; box-shadow: 0 8px 18px rgba(69,25,31,.5); z-index: 2; }
.gfo-cx__star { color: #f3ba4d; }
.gfo-cx__table tbody th.gfo-cx__feat { text-align: left; font-weight: 700; font-size: 14px; color: #3a2830; padding: 16px 20px; border-top: 1px solid #f4e8eb; background: #fff; }
.gfo-cx__cell { text-align: center; padding: 15px 12px; border-top: 1px solid #f4e8eb; vertical-align: middle; background: #fff; }
.gfo-cx__cell--us { background: #fdf0f3; box-shadow: inset 1px 0 0 #f7dde4, inset -1px 0 0 #f7dde4; }
.gfo-cx__table tbody tr:hover .gfo-cx__cell, .gfo-cx__table tbody tr:hover th.gfo-cx__feat { background: #fbf5f6; }
.gfo-cx__table tbody tr:hover .gfo-cx__cell--us { background: #fce7ec; }
.gfo-cx__table tbody tr:last-child .gfo-cx__feat { border-bottom-left-radius: 20px; }
.gfo-cx__table tbody tr:last-child .gfo-cx__cell--c { border-bottom-right-radius: 20px; }
.gfo-cx__val { display: block; font-weight: 700; font-size: 14.5px; color: #45191F; line-height: 1.3; }
.gfo-cx__cell--b .gfo-cx__val, .gfo-cx__cell--c .gfo-cx__val { font-weight: 600; color: #9a8286; }
.gfo-cx__sub { display: block; font-size: 11.5px; color: #b09499; margin-top: 4px; line-height: 1.35; }
.gfo-cx__mark { display: inline-block; margin-bottom: 8px; line-height: 1; }
.gfo-cx__mark--yes { width: 26px; height: 26px; border-radius: 8px; background: linear-gradient(180deg, #22b355, #158a44); color: #fff; font-size: 15px; font-weight: 800; text-align: center; line-height: 26px; box-shadow: 0 4px 10px rgba(22,163,74,.4); }
.gfo-cx__mark--no { color: #ef5468; font-size: 19px; font-weight: 800; }
.gfo-cx__mark--warn { width: 0; height: 0; border-left: 13px solid transparent; border-right: 13px solid transparent; border-bottom: 22px solid #f5a524; position: relative; filter: drop-shadow(0 3px 5px rgba(245,165,36,.35)); }
.gfo-cx__mark--warn::after { content: "!"; position: absolute; left: -2px; top: 6px; color: #fff; font-size: 12px; font-weight: 800; line-height: 1; }
@media (max-width: 640px) {
  .gfo-cx__scroll { padding: 22px 0 4px; }
  .gfo-cx__table { min-width: 0; table-layout: fixed; }
  .gfo-cx__feat { width: 28%; }
  .gfo-cx__feathead { padding: 12px 7px; font-size: 9px; letter-spacing: .06em; border-top-left-radius: 16px; }
  .gfo-cx__colname { padding: 14px 5px 12px; font-size: 12.5px; }
  .gfo-cx__col--c .gfo-cx__colname { border-top-right-radius: 16px; }
  .gfo-cx__table tbody th.gfo-cx__feat { padding: 12px 7px; font-size: 11.5px; }
  .gfo-cx__cell { padding: 12px 4px; }
  .gfo-cx__val { font-size: 11.5px; word-break: break-word; }
  .gfo-cx__sub { font-size: 9.5px; }
  .gfo-cx__mark { margin-bottom: 6px; }
  .gfo-cx__mark--yes { width: 21px; height: 21px; line-height: 21px; font-size: 12px; border-radius: 6px; }
  .gfo-cx__mark--no { font-size: 15px; }
  .gfo-cx__mark--warn { border-left-width: 10px; border-right-width: 10px; border-bottom-width: 17px; }
  .gfo-cx__mark--warn::after { top: 4px; left: -1.5px; font-size: 9px; }
  .gfo-cx__table tbody tr:last-child .gfo-cx__feat { border-bottom-left-radius: 16px; }
  .gfo-cx__table tbody tr:last-child .gfo-cx__cell--c { border-bottom-right-radius: 16px; }
}

@media (max-width: 640px) {
  .gfo-pdp__quick { grid-template-columns: 1fr; }
}

/* ============ Landing media band (placeholder tiles → real photography) ============ */
.gfo-landing-media { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-media__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.gfo-landing-media__tile { aspect-ratio: 1 / 1; border-radius: var(--gfo-radius-card); overflow: hidden; margin: 0; }
.gfo-landing-media__tile--img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gfo-landing-media__tile.gfo-placeholder { display: flex; align-items: center; justify-content: center; text-align: center; padding: 12px; }
/* ingredient cards: photo + caption, natural height */
.gfo-landing-media__tile--card { aspect-ratio: auto; background: #fff; border: 1px solid rgba(58,40,32,.12); display: flex; flex-direction: column; }
.gfo-landing-media__tile--card img { height: auto; aspect-ratio: 4 / 3; }
.gfo-landing-media__cap { padding: 14px 16px 16px; }
.gfo-landing-media__cap b { display: block; font-family: var(--gfo-font-display); font-size: 15px; color: var(--gfo-ink); }
.gfo-landing-media__cap i { display: block; font-style: normal; font-family: var(--gfo-font-mono); font-size: 10.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--gfo-terracotta); margin: 3px 0 7px; }
.gfo-landing-media__cap p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--gfo-text); }

/* ============ Landing customer reviews (real WooCommerce reviews) ============ */
.gfo-landing-reviews { padding: var(--gfo-space-section) 0; }
.gfo-landing-reviews__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gfo-landing-review { background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 22px; }
.gfo-landing-review__stars { color: var(--gfo-terracotta); font-size: 15px; letter-spacing: 2px; }
.gfo-landing-review__text { font-size: 14px; line-height: 1.65; color: var(--gfo-text); margin: 10px 0 14px; }
.gfo-landing-review__who { font-family: var(--gfo-font-display); font-weight: 700; font-size: 13px; color: var(--gfo-ink); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gfo-landing-review__verified { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px 3px 6px; border-radius: 999px;
  background: rgba(58,125,68,.10); color: #2f6b39; font-family: var(--gfo-font-mono); font-size: 10px; letter-spacing: .06em;
  text-transform: uppercase; font-weight: 600; line-height: 1.4; white-space: nowrap; }

@media (max-width: 900px) {
  .gfo-landing-media__grid { grid-template-columns: repeat(2, 1fr); }
  .gfo-landing-reviews__grid { grid-template-columns: 1fr; }
}

/* ============ 7-in-1 grid ============ */
.gfo-landing-b7 { padding: var(--gfo-space-section) 0; }
.gfo-landing-b7__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.gfo-landing-b7__card { background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 20px; }
.gfo-landing-b7__idx { font-family: var(--gfo-font-mono); font-size: 11px; color: var(--gfo-terracotta); }
.gfo-landing-b7__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15px; color: var(--gfo-ink); margin: 6px 0 6px; }
.gfo-landing-b7__card p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--gfo-text); }

/* ============ proof band variant ============ */
.gfo-landing-proofband { background: var(--gfo-terracotta); }
.gfo-landing-proofband .gfo-landing-stat__num { color: #fff; }
.gfo-landing-proofband .gfo-landing-stat__label { color: rgba(255,255,255,.85); }

/* ============ included with every order ============ */
.gfo-landing-included { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-included__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.gfo-landing-included__card { background: var(--gfo-sand); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 20px; }
.gfo-landing-included__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 14px; color: var(--gfo-ink); margin-bottom: 6px; }
.gfo-landing-included__name .gfo-tick { color: var(--gfo-terracotta); margin-right: 4px; }
/* Gift worth. Floated rather than flexing the name, so cards WITHOUT a worth keep their exact
   current layout — the element only exists where the funnel sets one. */
.gfo-landing-included__worth { float: right; font-weight: 400; font-size: 12px; opacity: .55; white-space: nowrap; }
.gfo-landing-included__card p { margin: 0; font-size: 13px; line-height: 1.55; color: var(--gfo-text); }

/* ============ brand promise note ============ */
.gfo-landing-promise { padding: var(--gfo-space-section) 20px; }
.gfo-landing-promise__inner { max-width: 640px; margin: 0 auto; text-align: center; background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.14); border-radius: var(--gfo-radius-card); padding: 44px 36px; }
.gfo-landing-promise__inner h2 { margin: 10px 0 14px; font-size: var(--gfo-fs-h2); }
.gfo-landing-promise__inner p { color: var(--gfo-text); line-height: 1.7; margin: 0 0 18px; }
.gfo-landing-promise__sign { font-family: var(--gfo-font-serif, Georgia, serif); font-style: italic; color: var(--gfo-text-muted); font-size: 15px; }

/* ============ closing CTA ============ */
.gfo-landing-finalcta { background: var(--gfo-ink); color: #fff; padding: 64px 20px; text-align: center; }
.gfo-landing-finalcta__inner { max-width: 560px; margin: 0 auto; }
.gfo-landing-finalcta h2 { color: #fff; font-size: var(--gfo-fs-h1); letter-spacing: -.02em; margin: 0 0 12px; }
.gfo-landing-finalcta p { color: rgba(255,255,255,.85); margin: 0 0 24px; line-height: 1.6; }

@media (max-width: 900px) {
  .gfo-landing-b7__grid, .gfo-landing-included__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .gfo-landing-b7__grid, .gfo-landing-included__grid { grid-template-columns: 1fr; }
}

/* ============ buy-box social strip + hero tick pills + gallery photo slots ============ */
.gfo-pdp__social { font-size: 13.5px; font-weight: 600; color: var(--gfo-ink); display: inline-flex; align-items: center; gap: 7px; }
.gfo-pdp__social-stars { color: var(--gfo-terracotta); letter-spacing: 1px; }
.gfo-pdp__social-sep { color: var(--gfo-text-hint); }
.gfo-pdp__ticks { list-style: none; margin: 16px 0 4px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.gfo-pdp__ticks li { border: 1px solid rgba(58,40,32,.18); border-radius: 24px; padding: 10px 16px; font-size: 13.5px; font-weight: 600; color: var(--gfo-ink); background: var(--gfo-surface); }
.gfo-pdp__ticks .gfo-tick { color: var(--gfo-terracotta); font-weight: 700; margin-right: 6px; }
.gfo-pdp__thumb--slot { display: flex; align-items: center; justify-content: center; aspect-ratio: 1/1; border-radius: 8px; font-family: var(--gfo-font-mono); font-size: 11px; color: var(--gfo-text-hint); cursor: default; }

/* ============ what you'll feel rows ============ */
.gfo-landing-feelrows { padding: var(--gfo-space-section) 0; background: var(--gfo-surface); border-top: 1px solid rgba(58,40,32,.1); }
.gfo-landing-feelrows__list { max-width: 720px; margin: 0 auto; background: var(--gfo-sand); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); overflow: hidden; }
.gfo-landing-feelrow { display: flex; align-items: center; gap: 16px; padding: 18px 22px; border-bottom: 1px solid rgba(58,40,32,.1); }
.gfo-landing-feelrow:last-child { border-bottom: 0; }
.gfo-landing-feelrow__icon { font-size: 22px; flex: none; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; background: var(--gfo-soft); border-radius: 10px; }
.gfo-landing-feelrow__copy { flex: 1; min-width: 0; }
.gfo-landing-feelrow__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15px; color: var(--gfo-ink); }
.gfo-landing-feelrow__sub { font-size: 12.5px; color: var(--gfo-text-muted); margin-top: 2px; }
.gfo-landing-feelrow__stat { text-align: right; flex: none; max-width: 150px; }
.gfo-landing-feelrow__stat b { display: block; font-family: var(--gfo-font-display); font-weight: 700; font-size: 22px; color: var(--gfo-terracotta); }
.gfo-landing-feelrow__stat span { font-size: 10.5px; color: var(--gfo-text-muted); line-height: 1.3; display: block; }

/* ============ scrolling trust ticker ============ */
.gfo-landing-ticker { overflow: hidden; background: var(--gfo-sand); border-top: 1px solid rgba(58,40,32,.12); border-bottom: 1px solid rgba(58,40,32,.12); padding: 13px 0; }
.gfo-landing-ticker__track { display: inline-flex; align-items: center; gap: 26px; white-space: nowrap; animation: gfo-ticker 36s linear infinite; will-change: transform; }
.gfo-landing-ticker__item { font-family: var(--gfo-font-mono); font-size: 11.5px; letter-spacing: .14em; color: var(--gfo-ink); font-weight: 600; }
.gfo-landing-ticker__dot { color: var(--gfo-terracotta); }
@keyframes gfo-ticker { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .gfo-landing-ticker__track { animation: none; } }

/* ============ reviews carousel (overrides earlier grid layout) ============ */
.gfo-landing-reviews__agg { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 10px; font-size: 15px; }
.gfo-landing-reviews__agg-stars { color: var(--gfo-terracotta); letter-spacing: 2px; }
.gfo-landing-reviews__agg b { font-family: var(--gfo-font-display); font-size: 17px; color: var(--gfo-ink); }
.gfo-landing-reviews__agg-count { color: var(--gfo-text-muted); font-size: 14px; }
.gfo-landing-reviews__carousel { position: relative; }
.gfo-landing-reviews__grid { display: block; }
.gfo-landing-reviews__track { display: flex; gap: 18px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding: 4px 2px 14px; scrollbar-width: thin; }
.gfo-landing-reviews__track .gfo-landing-review { flex: 0 0 320px; max-width: 320px; scroll-snap-align: start; display: flex; flex-direction: column; background: #fff; border: 1px solid rgba(58,40,32,.1); box-shadow: 0 4px 16px rgba(42,28,21,.06); }
.gfo-landing-review__title { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15.5px; color: var(--gfo-ink); margin: 8px 0 6px; line-height: 1.35; }
.gfo-landing-review__foot { margin-top: auto; padding-top: 14px; border-top: 1px solid rgba(58,40,32,.1); display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gfo-landing-review__avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--gfo-terracotta); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: var(--gfo-font-display); font-weight: 700; font-size: 13px; flex: none; }
.gfo-landing-review__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 13.5px; color: var(--gfo-ink); }
.gfo-landing-review__meta { margin-left: auto; text-align: right; display: flex; flex-direction: column; gap: 2px; }
.gfo-landing-review__date { font-size: 11.5px; color: var(--gfo-text-muted); }
.gfo-landing-reviews__arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(58,40,32,.18); background: #fff; color: var(--gfo-ink); font-size: 22px; line-height: 1; cursor: pointer; box-shadow: 0 4px 12px rgba(42,28,21,.12); }
.gfo-landing-reviews__arrow--prev { left: -14px; }
.gfo-landing-reviews__arrow--next { right: -14px; }
.gfo-landing-reviews__arrow:hover { background: var(--gfo-soft); }
@media (max-width: 640px) {
  .gfo-landing-reviews__track .gfo-landing-review { flex-basis: 84vw; max-width: 84vw; }
  .gfo-landing-reviews__arrow--prev { left: 2px; }
  .gfo-landing-reviews__arrow--next { right: 2px; }
}

/* ============ buy-box mini review carousel ============ */
.gfo-pdp-minirev { position: relative; margin-top: 16px; background: var(--gfo-soft); border: 1px solid rgba(58,40,32,.12); border-radius: var(--gfo-radius-card); padding: 4px 40px 22px; }
.gfo-pdp-minirev__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.gfo-pdp-minirev__track::-webkit-scrollbar { display: none; }
.gfo-pdp-minirev__slide { flex: 0 0 100%; scroll-snap-align: start; padding: 16px 4px 0; }
.gfo-pdp-minirev__head { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.gfo-pdp-minirev__avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--gfo-terracotta); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-family: var(--gfo-font-display); font-weight: 700; font-size: 12px; flex: none; }
.gfo-pdp-minirev__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 13.5px; color: var(--gfo-ink); }
/* #e8a33d on the panel's --gfo-soft (#f6e6d9) measured 1.77:1 — below even the 3:1 floor for
   meaningful non-text, i.e. the rating was effectively invisible on every store. --gfo-amber
   (#c98a2b) is the palette's existing rating colour and clears 3:1 on this tint. */
.gfo-pdp-minirev__stars { color: var(--gfo-amber); letter-spacing: 1px; font-size: 13px; }
.gfo-pdp-minirev__verified { margin-left: auto; font-family: var(--gfo-font-mono); font-size: 10px; letter-spacing: .06em; text-transform: uppercase; color: #3a7d44; font-weight: 600; }
.gfo-pdp-minirev__quote { margin: 10px 0 0; font-size: 13.5px; line-height: 1.6; color: var(--gfo-text); font-style: italic; }
.gfo-pdp-minirev__arrow { position: absolute; top: 50%; transform: translateY(-50%); width: 30px; height: 30px; border-radius: 50%; border: 1px solid rgba(58,40,32,.16); background: #fff; color: var(--gfo-ink); font-size: 17px; line-height: 1; cursor: pointer; z-index: 2; }
.gfo-pdp-minirev__arrow[data-gfo-minirev-prev] { left: 6px; }
.gfo-pdp-minirev__arrow[data-gfo-minirev-next] { right: 6px; }
.gfo-pdp-minirev__dots { position: absolute; bottom: 9px; left: 0; right: 0; display: flex; justify-content: center; gap: 6px; }
.gfo-pdp-minirev__dots i { width: 7px; height: 7px; border-radius: 50%; background: rgba(58,40,32,.2); }
.gfo-pdp-minirev__dots i.is-active { background: var(--gfo-terracotta); width: 16px; border-radius: 4px; }
.gfo-pdp__pay .gfo-paylogo svg { display: block; } /* own tile rounding — see main.css */
.gfo-pdp__pay { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }

/* ============ problem / agitation ============ */
.gfo-landing-agitate { padding: var(--gfo-space-section) 0; background: var(--gfo-ink); }
.gfo-landing-agitate .gfo-section-head h2 { color: #fff; }
.gfo-landing-agitate .gfo-eyebrow { color: var(--gfo-clay-light); }
.gfo-landing-agitate__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.gfo-landing-agitate__card { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12); border-radius: var(--gfo-radius-card); padding: 22px; }
.gfo-landing-agitate__icon { font-size: 24px; }
.gfo-landing-agitate__name { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15.5px; color: #fff; margin: 10px 0 6px; }
.gfo-landing-agitate__card p { margin: 0; font-size: 13.5px; line-height: 1.6; color: rgba(255,255,255,.75); }
.gfo-landing-agitate__closer { text-align: center; margin: 24px auto 0; max-width: 560px; font-size: 15.5px; font-weight: 600; color: var(--gfo-clay-light); }
@media (max-width: 900px) { .gfo-landing-agitate__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gfo-landing-agitate__grid { grid-template-columns: 1fr; } }

/* ============ review grid variant (Trustpilot-style) ============ */
.gfo-landing-reviews--grid .gfo-landing-reviews__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 28px; }
.gfo-landing-reviews--grid .gfo-landing-review { display: flex; flex-direction: column; background: #fff; border: 1px solid rgba(58,40,32,.1); box-shadow: 0 4px 16px rgba(42,28,21,.06); }
.gfo-landing-reviews--grid .gfo-landing-review__foot { margin-top: auto; }
.gfo-landing-reviews__agg-word { font-family: var(--gfo-font-display); font-weight: 700; font-size: 17px; color: var(--gfo-ink); }
@media (max-width: 900px) { .gfo-landing-reviews--grid .gfo-landing-reviews__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .gfo-landing-reviews--grid .gfo-landing-reviews__grid { grid-template-columns: 1fr; } }

/* ============ media wall video tiles + customer / cert walls ============ */
.gfo-landing-media__tile--video { aspect-ratio: 9 / 16; background: #000; position: relative; }
.gfo-landing-media__tile--video video,
.gfo-landing-media__tile--yt img { width: 100%; height: 100%; object-fit: cover; display: block; }
.gfo-landing-media__tile--yt iframe { width: 100%; height: 100%; border: 0; display: block; }

/* Results wall: uniform square 3-col grid (desktop), swipeable row on mobile */
.gfo-landing-testimonials .gfo-landing-media__grid { grid-template-columns: repeat(3, 1fr); gap: 16px; }
.gfo-landing-testimonials .gfo-landing-media__tile { aspect-ratio: 1 / 1; box-shadow: 0 6px 18px rgba(0,0,0,.14); }
@media (max-width: 640px) {
  .gfo-landing-testimonials .gfo-landing-media__grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 12px; scrollbar-width: thin; }
  .gfo-landing-testimonials .gfo-landing-media__tile { flex: 0 0 80vw; scroll-snap-align: center; }
}

/* Customer strip: uniform 3:4 portrait crops */
.gfo-landing-customers .gfo-landing-media__tile { aspect-ratio: 3 / 4; }

.gfo-landing-certs .gfo-landing-media__cap p { margin: 0; }

/* ============ ingredients carousel (swipeable, natural-aspect poster cards) ============ */
.gfo-landing-media__carousel { position: relative; margin-top: 28px; }
.gfo-landing-media__track { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding: 4px 2px 14px; scrollbar-width: thin; }
.gfo-landing-media__track .gfo-landing-media__tile { flex: 0 0 300px; max-width: 300px; scroll-snap-align: start; aspect-ratio: auto; }
/* video tiles in a carousel keep their vertical 9:16 Short ratio (the track rule above would
   otherwise flatten them to aspect-auto → the iframe collapses to ~150px). Desktop + mobile. */
.gfo-landing-media__track .gfo-landing-media__tile--video { aspect-ratio: 9 / 16; }
.gfo-landing-media__track .gfo-landing-media__tile--card img { aspect-ratio: auto; height: auto; width: 100%; }
.gfo-landing-media__arrow { position: absolute; top: 40%; transform: translateY(-50%); z-index: 2; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(58,40,32,.15); background: var(--gfo-surface); color: var(--gfo-ink); font-size: 22px; line-height: 1; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.18); }
.gfo-landing-media__arrow--prev { left: -8px; }
.gfo-landing-media__arrow--next { right: -8px; }
.gfo-landing-media__arrow:hover { color: var(--gfo-terracotta); }
@media (max-width: 640px) {
  .gfo-landing-media__track .gfo-landing-media__tile { flex-basis: 78vw; max-width: 78vw; }
  .gfo-landing-media__arrow { display: none; }
}

/* ============ mobile: UGC wall swipes, certs go full-width ============ */
@media (max-width: 640px) {
  .gfo-landing-ugc .gfo-landing-media__grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 12px; scrollbar-width: thin; }
  .gfo-landing-ugc .gfo-landing-media__tile { flex: 0 0 64vw; scroll-snap-align: center; }
}
@media (max-width: 700px) {
  .gfo-landing-certs .gfo-landing-media__grid { grid-template-columns: 1fr; }
}

/* Retail-set strip: 5 portrait tiles across on desktop, swipeable row on mobile */
.gfo-landing-customers .gfo-landing-media__grid { grid-template-columns: repeat(5, 1fr); }
@media (max-width: 900px) { .gfo-landing-customers .gfo-landing-media__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) {
  .gfo-landing-customers .gfo-landing-media__grid { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: 12px; scrollbar-width: thin; }
  .gfo-landing-customers .gfo-landing-media__tile { flex: 0 0 64vw; scroll-snap-align: center; }
}

/* ============ certificate zoom overlay ============ */
a.gfo-zoom { display: block; cursor: zoom-in; }
a.gfo-zoom img { display: block; }
.gfo-zoombox { position: fixed; inset: 0; z-index: 9999; background: rgba(15,5,7,.9); display: flex; align-items: center; justify-content: center; padding: 24px; cursor: zoom-out; }
.gfo-zoombox img { max-width: 94vw; max-height: 92vh; width: auto; height: auto; border-radius: 8px; box-shadow: 0 20px 60px rgba(0,0,0,.6); }

/* ---- SPIRO V2 landing additions (2026-08-03): sludge / GLP-1 / trial-stats.
   Sections render only for products whose landing array sets the opt-in keys. */
/* Deepest shade so the band reads distinct from the agitate section right above it. */
.gfo-landing-sludge { background: #0d2b24; color: #f1e9df; padding: 64px 0; }
.gfo-landing-sludge .gfo-section-head h2 { color: var(--gfo-surface); }
.gfo-landing-sludge .gfo-section-sub { color: #d8c9b8; }
.gfo-landing-sludge .gfo-eyebrow { color: var(--gfo-terracotta); }
.gfo-landing-sludge__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 14px; margin-top: 28px; }
.gfo-landing-sludge__card { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.14); border-radius: var(--gfo-radius, 14px); padding: 20px; }
.gfo-landing-sludge__card h3 { margin: 0 0 8px; font-size: 17px; color: var(--gfo-surface); }
.gfo-landing-sludge__card p { margin: 0; font-size: 14.5px; line-height: 1.6; color: #d8c9b8; }
.gfo-landing-sludge__answer { margin-top: 18px; background: rgba(192,104,60,.16); border: 1px solid rgba(192,104,60,.5); border-radius: var(--gfo-radius, 14px); padding: 22px 24px; }
.gfo-landing-sludge__answer h3 { margin: 0 0 8px; font-size: 18px; color: var(--gfo-surface); }
.gfo-landing-sludge__answer p { margin: 0; font-size: 14.5px; line-height: 1.65; color: #eadbcb; }

.gfo-landing-glp { padding: 26px 0; }
.gfo-landing-glp__box { background: linear-gradient(160deg, #fdf6ea, #f7ead3); border: 1px solid var(--gfo-terracotta); border-radius: 18px; padding: 30px 28px; }
.gfo-landing-glp__box h2 { margin: 6px 0 10px; font-size: 26px; }
.gfo-landing-glp__box > p { margin: 0; font-size: 15px; line-height: 1.7; }
.gfo-landing-glp__points { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; padding: 0; }
.gfo-landing-glp__points li { background: var(--gfo-surface); border: 1px solid var(--gfo-terracotta); border-radius: 999px; padding: 6px 14px; font-size: 13.5px; font-weight: 600; color: var(--gfo-terracotta); }

.gfo-landing-stats--trial .gfo-section-head { margin-bottom: 26px; }
.gfo-landing-stats--trial .gfo-section-head h2 { color: #fff; }
.gfo-landing-stats--trial .gfo-eyebrow { color: var(--gfo-terracotta); }
.gfo-landing-stats__note { margin: 18px 0 0; text-align: center; font-size: 12.5px; opacity: .65; }
@media (max-width: 640px) {
  .gfo-landing-glp__box h2 { font-size: 21px; }
  .gfo-landing-sludge { padding: 48px 0; }
}

/* ---- Hero stat chips (landing data `herostats`, V2 overlays) ---- */
.gfo-herostats { display: flex; gap: 10px; margin: 14px 0 4px; flex-wrap: wrap; }
.gfo-herostats__chip { flex: 1 1 0; min-width: 96px; text-align: center; padding: 10px 8px; border: 1px solid rgba(58,40,32,.14); border-radius: 12px; background: var(--gfo-surface); }
.gfo-herostats__chip strong { display: block; font-size: 15px; color: var(--gfo-ink); }
.gfo-herostats__chip span { display: block; font-size: 12px; color: var(--gfo-text-muted); margin-top: 2px; }

/* ---- Consultant CTA band (landing data `consult`) ---- */
.gfo-landing-consult { padding: 56px 20px; }
.gfo-landing-consult__inner { max-width: 640px; margin: 0 auto; text-align: center; background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.14); border-radius: 18px; padding: 36px 24px; }
.gfo-landing-consult__inner h2 { margin: 6px 0 10px; }
.gfo-landing-consult__inner > p { margin: 0 0 18px; color: var(--gfo-text); line-height: 1.65; }
.gfo-landing-consult__note { font-size: 13px; color: var(--gfo-text-muted); margin: 10px 0 0; }

/* Review-section photo strip (SPIRO received-product photos; opt-in via reviewphotos key) */
.gfo-landing-reviews__photos { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin: 4px 0 20px; }
.gfo-landing-reviews__photos img { width: 128px; height: 128px; object-fit: cover; border-radius: 12px; border: 1px solid rgba(58,40,32,.14); }
@media (max-width: 640px) {
  .gfo-landing-reviews__photos img { width: 76px; height: 76px; border-radius: 9px; }
  /* Ribbon flows above the card content on phones instead of overlapping the pack name (SPIRO only). */
  .gfo-skin-spiro .gfo-tiercard__ribbon { position: static; display: inline-block; border-radius: 6px; margin: 0 0 6px; }
}

/* ---- Photos-from-customers strip inside the reviews section (landing `revphotos`) ---- */
.gfo-landing-reviews__photoswrap { margin: 4px 0 26px; }
.gfo-landing-reviews__photos-label { display: block; font-size: 12.5px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--gfo-text-muted); margin-bottom: 10px; }
.gfo-landing-reviews__photos { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 6px; -webkit-overflow-scrolling: touch; scroll-snap-type: x proximity; }
.gfo-landing-reviews__photo { flex: 0 0 auto; margin: 0; scroll-snap-align: start; }
.gfo-landing-reviews__photo img { height: 168px; width: auto; border-radius: 12px; display: block; }
@media (max-width: 640px) { .gfo-landing-reviews__photo img { height: 132px; } }

/* ---- Key-gated section visual (landing `img` on inside/included sections) ---- */
.gfo-landing-section__media { margin: 0 auto 26px; max-width: 680px; }
.gfo-landing-section__media img { width: 100%; height: auto; border-radius: 16px; display: block; }
/* Mobile: the customer-photo strip stays one swipeable row (a wrapped collage of 12
   pushes the written reviews a full screen down); desktop keeps the collage. */
@media (max-width: 640px) { .gfo-landing-reviews__photos { flex-wrap: nowrap; justify-content: flex-start; } }

/* Sludge-section media (mechanism visual, opt-in via sludge.img) */
.gfo-landing-sludge__img { max-width: 460px; margin: 24px auto 4px; border-radius: 14px; overflow: hidden; box-shadow: 0 14px 34px rgba(0,0,0,.3); }
.gfo-landing-sludge__img img { width: 100%; height: auto; display: block; }

/* Photos inside review cards (SPIRO reviewphotos → first N cards) */
.gfo-landing-review__photo { margin: -4px 0 12px; border-radius: 10px; overflow: hidden; aspect-ratio: 4/3; }
.gfo-landing-review__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* ---- ?seq2 sequence PREVIEW (SPIRO): proposed DTC arc via flex order.
   Visual-order only; ships as a real template resequence once approved. ---- */
body.gfo-seq2 .gfo-main { display: flex; flex-direction: column; }
body.gfo-seq2 .gfo-main > * { order: 50; }
body.gfo-seq2 .gfo-main > .woocommerce-notices-wrapper { order: 1; }
body.gfo-seq2 .gfo-main > .gfo-pdp { order: 2; }
body.gfo-seq2 .gfo-main > .gfo-landing-agitate { order: 3; }
body.gfo-seq2 .gfo-main > .gfo-landing-sludge { order: 4; }
body.gfo-seq2 .gfo-main > .gfo-landing-failed { order: 5; }
body.gfo-seq2 .gfo-main > .gfo-landing-mech { order: 6; }
body.gfo-seq2 .gfo-main > .gfo-landing-glp { order: 7; }
body.gfo-seq2 .gfo-main > .gfo-landing-media { order: 8; }
body.gfo-seq2 .gfo-main > .gfo-landing-feelrows { order: 9; }
body.gfo-seq2 .gfo-main > .gfo-landing-b7 { order: 10; }
body.gfo-seq2 .gfo-main > .gfo-landing-ticker { order: 11; }
body.gfo-seq2 .gfo-main > .gfo-landing-stats { order: 12; }
body.gfo-seq2 .gfo-main > .gfo-landing-stats--trial { order: 13; }
body.gfo-seq2 .gfo-main > .gfo-landing-phases { order: 14; }
body.gfo-seq2 .gfo-main > .gfo-landing-value { order: 15; }
body.gfo-seq2 .gfo-main > .gfo-landing-compare { order: 16; }
body.gfo-seq2 .gfo-main > .gfo-landing-proofband { order: 17; }
body.gfo-seq2 .gfo-main > .gfo-landing-included { order: 18; }
body.gfo-seq2 .gfo-main > .gfo-landing-experts { order: 19; }
body.gfo-seq2 .gfo-main > .gfo-landing-reviews { order: 20; }
body.gfo-seq2 .gfo-main > .gfo-landing-promise { order: 21; }
body.gfo-seq2 .gfo-main > .gfo-landing-faq { order: 22; }
body.gfo-seq2 .gfo-main > .gfo-landing-finalcta { order: 23; }

/* ---- SPIRO-scoped readability bumps (owner call 2026-08-03: shared classes
   stay at historic sizes for every other funnel; only SPIRO pages bump). ---- */
.gfo-skin-spiro .gfo-tiercard__ribbon { font-size: 10px; }
.gfo-skin-spiro .gfo-tiercard__banner { font-size: 11.5px; }
.gfo-skin-spiro .gfo-instock { font-size: 12px; }
.gfo-skin-spiro .gfo-landing-phase__step { font-size: 12px; }
.gfo-skin-spiro .gfo-landing-compare__table thead th { font-size: 11px; }

/* ============ customer photo marquee (custwall) ============ */
.gfo-custwall { padding: 46px 0 52px; background: var(--gfo-sand); border-top: 1px solid rgba(58,40,32,.10); border-bottom: 1px solid rgba(58,40,32,.10); overflow: hidden; }
.gfo-custwall .gfo-section-head { margin-bottom: 26px; }
.gfo-custwall__rail { overflow: hidden; margin-bottom: 12px; }
.gfo-custwall__rail:last-of-type { margin-bottom: 0; }
.gfo-custwall__track { display: inline-flex; gap: 12px; will-change: transform; }
.gfo-custwall__track--a { animation: gfo-custwall-a 34s linear infinite; }
.gfo-custwall__track--b { animation: gfo-custwall-b 41s linear infinite; }
.gfo-custwall__img { width: 168px; height: 210px; object-fit: cover; border-radius: 12px; flex: 0 0 168px; background: rgba(58,40,32,.06); }
.gfo-custwall__note { margin: 20px 0 0; font-size: 13px; color: var(--gfo-ink-soft, #6b5b50); text-align: center; }
@keyframes gfo-custwall-a { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes gfo-custwall-b { from { transform: translateX(-50%); } to { transform: translateX(0); } }
/* Mobile tiles are 124px + 12px gap vs 180px on desktop, so the SAME 78s/92s timing moved the
   rail at ~42px/sec on a phone against ~55px/sec on desktop — it visibly crawled. Durations are
   scaled by the width ratio (136/180) so the marquee travels at the same pixels-per-second on
   both: 34 x 0.756 = 26s, 41 x 0.756 = 31s. Desktop was cut 78s/92s -> 45s/54s on 2026-08-28
   (owner: still too slow at the matched pace), taking the rail from ~55px/sec to ~96px/sec. */
@media (max-width: 640px) {
  .gfo-custwall__img { width: 124px; height: 158px; flex-basis: 124px; }
  .gfo-custwall__track--a { animation-duration: 26s; }
  .gfo-custwall__track--b { animation-duration: 31s; }
}
@media (prefers-reduced-motion: reduce) { .gfo-custwall__track--a, .gfo-custwall__track--b { animation: none; } .gfo-custwall__rail { overflow-x: auto; } }
/* Owner asked for the plain "Verified" wording on 2026-08-28, so the muted treatment that used to
   separate this from a WooCommerce-verified purchase is gone and it inherits the standard badge
   style. The modifier class is KEPT on the element so the two can be told apart again in one line
   if that decision is ever revisited. */
.gfo-landing-reviews__note { margin: 18px auto 0; max-width: 760px; font-size: 12px; line-height: 1.5; color: var(--gfo-ink-soft, #6b5b50); text-align: center; }

/* ── Wide head-to-head grid (`comparepro`) ───────────────────────────────────────────────────
   Six columns will never fit a phone, so the whole table scrolls horizontally inside its own
   container and the feature column is sticky — without that you scroll right and lose track of
   which row you are reading, which is the single thing that makes wide comparison tables useless
   on mobile. The section itself must never widen the page: overflow lives on __scroll only. */
.gfo-cp { padding: 56px 0 60px; }
/* Horizontal inset is MARGIN, never padding. A sticky cell pins to the scrollport's padding
   edge, so `padding-left: 16px` left a 16px window at the left of the table through which the
   scrolling rival columns were visible beside the pinned ones — it read as text bleeding out
   the side. Margin insets the container itself, so overflow clips at the same edge the sticky
   columns pin to and there is no gap. */
.gfo-cp__scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 0 0 8px; margin: 0 16px; }
@media (max-width: 640px) { .gfo-cp__scroll { margin: 0 8px; } }
/* NO `overflow: hidden` here. It rounds the corners nicely and it also makes the table its own
   scroll container, which silently breaks `position: sticky` on the pinned columns — they end
   up anchored to the table (which never scrolls) instead of .gfo-cp__scroll. Corners are
   rounded on the corner CELLS below instead. */
.gfo-cp__table { border-collapse: separate; border-spacing: 0; margin: 0 auto; min-width: 900px; background: var(--gfo-surface, #fffdf9); border-radius: 14px; box-shadow: 0 1px 3px rgba(58,40,32,.08); }
.gfo-cp__table thead th:first-child { border-top-left-radius: 14px; }
.gfo-cp__table thead th:last-child { border-top-right-radius: 14px; }
.gfo-cp__table tbody tr:last-child > *:first-child { border-bottom-left-radius: 14px; }
.gfo-cp__table tbody tr:last-child > *:last-child { border-bottom-right-radius: 14px; }
.gfo-cp__table tbody tr:last-child th, .gfo-cp__table tbody tr:last-child td { border-bottom: 0; }
.gfo-cp__table th, .gfo-cp__table td { text-align: left; vertical-align: top; padding: 14px 16px; border-bottom: 1px solid rgba(58,40,32,.08); }

/* Sticky feature column. z-index keeps it above scrolled cells; the background must be opaque. */
.gfo-cp__feat { position: sticky; left: 0; z-index: 2; background: var(--gfo-surface, #fffdf9); font: 600 14.5px var(--gfo-font-display); color: var(--gfo-ink); min-width: 150px; max-width: 190px; }

.gfo-cp__col { background: var(--gfo-soft, #f6e6d9); font: 600 14.5px var(--gfo-font-display); color: var(--gfo-ink); min-width: 150px; }
.gfo-cp__col--us { background: var(--gfo-terracotta, #c0683c); color: #fff; }
/* The header row is as tall as its TALLEST cell, and "Tiger Milk Mushroom capsules" wraps to
   three lines — which is what made the orange Tiger Milk King block look oversized next to the
   reference. Tight line-height plus a smaller badge shrinks the whole row, not just our column. */
.gfo-cp__colname { display: block; line-height: 1.2; }
.gfo-cp__table thead th { padding-top: 11px; padding-bottom: 11px; vertical-align: bottom; }
.gfo-cp__badge { display: inline-block; margin-bottom: 4px; padding: 2px 7px; border-radius: 999px; background: rgba(255,255,255,.22); color: #fff; font-family: var(--gfo-font-mono); font-size: 9.5px; letter-spacing: .06em; text-transform: uppercase; }

.gfo-cp__cell--us { background: rgba(192,104,60,.06); }
.gfo-cp__cell.is-muted .gfo-cp__val { color: var(--gfo-text-muted, #8a7a6d); font-weight: 500; }
.gfo-cp__val { display: block; font-size: 14.5px; font-weight: 600; color: var(--gfo-ink); line-height: 1.35; }
.gfo-cp__sub { display: block; margin-top: 3px; font-size: 12.5px; line-height: 1.4; color: var(--gfo-text-muted, #8a7a6d); }
.gfo-cp__mark { font-style: normal; margin-right: 4px; }
.gfo-cp__mark--yes { color: #3a7d44; }
.gfo-cp__mark--warn { color: var(--gfo-amber, #c98a2b); }
.gfo-cp__mark--no { color: var(--gfo-text-muted, #8a7a6d); }

/* Group band. Spans the full width, so it also acts as the visual reset between sections. */
.gfo-cp__group { background: #2f4a2f; color: #fff; padding: 10px 16px; }
/* The band spans every column so it can never shift; the LABEL inside it is what sticks, which
   is why it lives in its own wrapper. inline-flex keeps the title and its toggle together as
   one unit so they pin as a pair instead of drifting apart. */
.gfo-cp__groupinner { position: sticky; left: 16px; display: inline-flex; align-items: center; gap: 10px; }
.gfo-cp__grouptitle { font: 600 13px var(--gfo-font-mono); letter-spacing: .07em; text-transform: uppercase; }
.gfo-cp__toggle { padding: 2px 6px; border: 0; border-radius: 6px; background: rgba(255,255,255,.14); color: #fff; font: 500 11.5px var(--gfo-font-body, inherit); cursor: pointer; }
.gfo-cp__toggle:hover { background: rgba(255,255,255,.24); }
.gfo-cp__chev { display: inline-block; margin-left: 3px; transition: transform .18s ease; }
.gfo-cp__toggle[aria-expanded="true"] .gfo-cp__chev { transform: rotate(180deg); }

/* Meter row: filled dots read as a score without needing a number to be read first. */
.gfo-cp__dots { display: flex; gap: 3px; margin-bottom: 5px; }
.gfo-cp__dot { width: 14px; height: 5px; border-radius: 3px; background: rgba(58,40,32,.16); }
.gfo-cp__dot.is-on { background: #3a7d44; }
.gfo-cp__cell--us .gfo-cp__dot.is-on { background: var(--gfo-terracotta, #c0683c); }
.gfo-cp__note { margin: 16px auto 0; max-width: 760px; font-size: 12px; line-height: 1.5; color: var(--gfo-text-muted, #8a7a6d); text-align: center; }

@media (max-width: 640px) {
  .gfo-cp { padding: 40px 0 44px; }
  .gfo-cp__table th, .gfo-cp__table td { padding: 11px 12px; }
  /* One source of truth for the pinned width: the feature column is sized from it AND the
     Tigrox column is offset by it, so the two can never drift apart. box-sizing matters —
     without it the padding is added on top and our column overlaps the labels by 24px. */
  /* Sized against a REAL 390px viewport, measured in-browser: the scrollport is only ~359px
     once margins and page padding are taken out, so 92 + 126 pinned leaves ~141px — enough for
     a whole 132px rival rather than a clipped sliver. Change these four numbers together. */
  .gfo-cp__table { --gfo-cp-feat-w: 92px; min-width: 620px; }
  .gfo-cp__feat { box-sizing: border-box; width: var(--gfo-cp-feat-w); min-width: var(--gfo-cp-feat-w); max-width: var(--gfo-cp-feat-w); font-size: 13px; }
  .gfo-cp__col { min-width: 132px; font-size: 13px; }
  /* Our column is pinned alongside the feature column, so the two of them are permanently
     stolen from the visible width. 100 + 138 = 238px leaves ~152px of a 390px phone for the
     rival being compared — enough for a whole rival column rather than a clipped sliver.
     Rivals keep the wider 152px because they only ever appear one at a time. */
  .gfo-cp__col--us, .gfo-cp__cell--us { box-sizing: border-box; width: 126px; min-width: 126px; max-width: 126px; }
  .gfo-cp__table thead th { padding-top: 9px; padding-bottom: 9px; }
  .gfo-cp__val { font-size: 13.5px; }
  .gfo-cp__sub { font-size: 12px; }

  /* On a phone the rival columns scroll UNDER both the row label and our own column, so the
     two things being compared are always on screen. Without pinning ours, swiping right to
     reach a rival takes the thing you are comparing against off the screen, which makes the
     table unreadable exactly when it matters.
     left offset must equal the feature column width; z-index keeps feat above us, us above
     the scrolling cells, and both need an opaque background or rivals show through. */
  .gfo-cp__feat { z-index: 3; }
  .gfo-cp__col--us, .gfo-cp__cell--us { position: sticky; left: var(--gfo-cp-feat-w); z-index: 2; }
  .gfo-cp__cell--us { background: #fbf1ea; }
  .gfo-cp__col--us { background: var(--gfo-terracotta, #c0683c); }
  /* The group band spans every column, so it must sit above BOTH sticky columns or the pinned
     cells punch through the dark band as you scroll. */
  .gfo-cp__group { z-index: 4; }
}

/* ============================================================================
   REVX — redesigned review section (SG ?revx=1 pilot; see inc/landing-revx.php)
   Curated benefit-title grid + brand-wide aggregate row + in-page expander.
   Scoped under .gfo-revx so the default .gfo-landing-reviews styles above are
   never touched. Rating blocks fill PROPORTIONALLY (4.7 = 70% of block 5).
   ========================================================================= */
.gfo-revx { padding: 56px 0; background: var(--gfo-sand); }
.gfo-revx__head { display: grid; grid-template-columns: 1.15fr .85fr; gap: 16px 40px; align-items: start; margin-bottom: 26px; }
.gfo-revx__title { font-family: var(--gfo-font-display); font-weight: 700; font-size: clamp(24px, 3.4vw, 34px); line-height: 1.14; color: var(--gfo-ink-deep); margin: 0; }
.gfo-revx__accent { font-style: normal; color: var(--gfo-terracotta); }
.gfo-revx__agg { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 14px; }
.gfo-revx__blocks { display: inline-flex; gap: 3px; }
.gfo-revx__blk { position: relative; width: 24px; height: 24px; border-radius: 4px; background: #dcdce6; overflow: hidden; }
.gfo-revx__blkfill { position: absolute; inset: 0 auto 0 0; background: #00b67a; }
.gfo-revx__blk::after { content: "★"; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 15px; line-height: 1; }
.gfo-revx__aggline { font-family: var(--gfo-font-display); font-weight: 700; font-size: 17px; color: #20271c; }
.gfo-revx__frame { font-size: 15.5px; line-height: 1.6; color: var(--gfo-text); margin: 6px 0 0; }
.gfo-revx__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(255px, 1fr)); gap: 16px; }
.gfo-revx-card { display: flex; flex-direction: column; gap: 8px; background: var(--gfo-surface); border: 1px solid rgba(58,40,32,.12); border-radius: 18px; padding: 20px; box-shadow: 0 4px 16px rgba(42,28,21,.05); }
.gfo-revx-card.is-off { display: none; }
.gfo-revx__grid.is-collapsed .gfo-revx-card.is-fade { -webkit-mask-image: linear-gradient(#000 35%, rgba(0,0,0,.25) 100%); mask-image: linear-gradient(#000 35%, rgba(0,0,0,.25) 100%); }
.gfo-revx-card__stars { color: var(--gfo-terracotta); font-size: 14px; letter-spacing: .12em; }
.gfo-revx-card__hollow { color: rgba(58,40,32,.3); }
.gfo-revx-card__title { font-family: var(--gfo-font-display); font-weight: 700; font-size: 16px; line-height: 1.3; color: var(--gfo-ink); margin: 0; }
.gfo-revx-card__text { font-size: 14px; line-height: 1.6; color: var(--gfo-text); margin: 0; }
.gfo-revx-card__foot { margin-top: auto; padding-top: 10px; display: flex; align-items: center; gap: 5px; flex-wrap: nowrap; font-size: 12.5px; }
.gfo-revx-card__seal { width: 17px; height: 17px; border-radius: 50%; background: #1d5fa8; color: #fff; display: inline-flex; align-items: center; justify-content: center; font-size: 10px; flex: none; }
.gfo-revx-card__ver { color: #1d5fa8; font-weight: 700; white-space: nowrap; }
.gfo-revx-card__name { font-family: var(--gfo-font-display); font-weight: 600; font-size: 12.5px; color: var(--gfo-text-muted); min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gfo-revx__morewrap { display: flex; justify-content: center; margin-top: 22px; }
.gfo-revx__more { font-family: var(--gfo-font-display); font-weight: 700; font-size: 15px; color: var(--gfo-ink); background: transparent; border: 1.5px solid var(--gfo-ink); border-radius: 999px; padding: 13px 30px; min-height: 48px; cursor: pointer; transition: background .15s ease, color .15s ease; }
.gfo-revx__more:hover { background: var(--gfo-ink); color: #fff; }
.gfo-revx .gfo-landing-reviews__photoswrap { margin-top: 26px; }
@media (max-width: 720px) {
  .gfo-revx { padding: 40px 0; }
  .gfo-revx__head { grid-template-columns: 1fr; gap: 10px; }
  .gfo-revx__grid { grid-template-columns: 1fr; }
}

/* sp2 hero proof strip - gated by gfo_socialproof_v2_active() (inc/social-proof.php).
   Scoped to --sp2 so it cannot affect the live hero while the gate is off. */
.gfo-pdp__social--sp2 { flex-wrap: wrap; gap: 6px; }
.gfo-pdp__social--sp2 .gfo-pdp__social-stars { font-size: 15px; letter-spacing: 1.5px; }
.gfo-pdp__social--sp2 .gfo-pdp__social-rating { font-weight: 700; }
/* Descriptor beneath the sp2 strip. order:2 + flex-basis:100% drops it onto its own row
   inside the existing wrapping .gfo-pdp__meta flex row, so the in-stock badge stays
   beside the stars on line 1 and no wrapper element is needed. */
.gfo-pdp__social-desc { order: 2; flex-basis: 100%; font-size: 12.5px; font-weight: 500; color: var(--gfo-text-hint); }
