/* ==========================================================================
   Digestive Enzymes PDP — static front-end study build
   Design tokens sampled from the reference page.
   ========================================================================== */

:root {
  --red:        #cc0c39;
  --red-dark:   #a80a2e;
  --pink:       #fae7ec;
  --pink-soft:  #fdf3f6;
  --bg:         #f3f7f5;
  --white:      #fff;
  --ink:        #16181c;
  --ink-2:      #3d434d;
  --ink-3:      #6b727e;
  --line:       #e4e7e9;
  --green:      #2f9e5f;
  --gold:       #f5b301;
  --navy:       #143244;

  --r-sm: 8px;
  --r-md: 14px;
  --r-lg: 20px;
  --r-pill: 999px;

  --shadow-sm: 0 1px 2px rgba(16, 20, 24, .06);
  --shadow-md: 0 4px 16px rgba(16, 20, 24, .08);
  --shadow-lg: 0 12px 40px rgba(16, 20, 24, .10);

  --maxw: 1280px;
  --font: "Poppins", Inter, -apple-system, "Segoe UI", system-ui, sans-serif;
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.55;
  color: var(--ink);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; }
svg { width: 100%; height: 100%; }

.section-inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 32px;
}
.section-inner--narrow { max-width: 860px; }

.section-title {
  font-size: clamp(28px, 3.4vw, 44px);
  font-weight: 700;
  letter-spacing: -.02em;
  line-height: 1.15;
  text-align: center;
  margin: 0 0 16px;
}
.section-title--light { color: var(--white); }

.section-lede {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 48px;
  color: var(--ink-2);
  font-size: 17px;
}

.stars { color: var(--gold); letter-spacing: 2px; font-size: 16px; }

/* --------------------------------------------------------------------------
   Inline icons (CSS masks — no external assets)
   -------------------------------------------------------------------------- */
/* Each icon sets --m; the base class wires it into both mask properties so
   Chromium (where the two are aliases) and Firefox both render it. */
.ic {
  --m: none;
  display: inline-block;
  width: 20px; height: 20px;
  flex: 0 0 auto;
  background: currentColor;
  -webkit-mask: var(--m) center / contain no-repeat;
          mask: var(--m) center / contain no-repeat;
  vertical-align: -4px;
}
.ic--star   { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l3 6.5 7 .9-5 4.9 1.2 7L12 18l-6.2 3.3L7 14.3 2 9.4l7-.9z'/%3E%3C/svg%3E"); color: var(--green); }
.ic--check  { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='2' d='M12 2a10 10 0 100 20 10 10 0 000-20zM7.5 12.2l3 3 6-6.4'/%3E%3C/svg%3E"); }
.ic--spark  { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2l2.2 7.8L22 12l-7.8 2.2L12 22l-2.2-7.8L2 12l7.8-2.2z'/%3E%3C/svg%3E"); }
.ic--gut    { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M8 3v5a4 4 0 008 0M16 21v-5a4 4 0 00-8 0v3M8 8a4 4 0 01-4 4 4 4 0 004 4'/%3E%3C/svg%3E"); }
.ic--leaf   { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 4C10 4 4 9 4 16c0 2 1 4 1 4s2-6 8-8c-3 3-5 5-6 9 8 1 13-4 13-17z'/%3E%3C/svg%3E"); }
.ic--abs    { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M12 3v18M5 8h14M5 14h14M7 3h10v18H7z'/%3E%3C/svg%3E"); }
.ic--flask  { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M9 2v7L4 19a2 2 0 002 3h12a2 2 0 002-3l-5-10V2M9 2h6M7 15h10'/%3E%3C/svg%3E"); }
.ic--pill   { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M4.9 12.7l7.8-7.8a4.5 4.5 0 016.4 6.4l-7.8 7.8a4.5 4.5 0 01-6.4-6.4zM8 9l7 7'/%3E%3C/svg%3E"); }
.ic--shield { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M12 2l8 3v7c0 5-3.5 8.5-8 10-4.5-1.5-8-5-8-10V5zM8.5 12l2.5 2.5 4.5-5'/%3E%3C/svg%3E"); }
.ic--truck  { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M2 6h11v10H2zM13 10h4l3 3v3h-7zM7 19a2 2 0 100-4 2 2 0 000 4zM17.5 19a2 2 0 100-4 2 2 0 000 4z'/%3E%3C/svg%3E"); }
.ic--edit   { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M4 20h4L20 8l-4-4L4 16zM14 6l4 4'/%3E%3C/svg%3E"); }
.ic--box    { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M3 7l9-4 9 4v10l-9 4-9-4zM3 7l9 4 9-4M12 11v10'/%3E%3C/svg%3E"); }
.ic--vip    { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M3 8l4 3 5-6 5 6 4-3-2 11H5z'/%3E%3C/svg%3E"); }
.ic--gift   { --m: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23000' stroke-width='1.8' d='M3 10h18v4H3zM4 14h16v7H4zM12 10v11M12 10S9 3 6.5 5.5 12 10 12 10zM12 10s3-7 5.5-4.5S12 10 12 10z'/%3E%3C/svg%3E"); }

/* --------------------------------------------------------------------------
   Timer bar
   -------------------------------------------------------------------------- */
.timer-bar { background: var(--red); color: var(--white); }
.timer-bar__inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 10px 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 28px;
  flex-wrap: wrap;
}
.timer-bar__copy { text-align: center; line-height: 1.25; }
.timer-bar__copy strong { display: block; font-size: 17px; font-weight: 600; letter-spacing: .01em; }
.timer-bar__copy span   { display: block; font-size: 12px; opacity: .92; letter-spacing: .02em; }

.countdown {
  display: flex; align-items: center; gap: 4px;
  background: var(--white);
  border-radius: var(--r-sm);
  padding: 6px 14px;
  color: var(--red);
}
.countdown__unit { text-align: center; min-width: 44px; }
.countdown__unit b { display: block; font-size: 22px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
.countdown__unit i { display: block; font-size: 9px; font-style: normal; font-weight: 600; letter-spacing: .06em; }
.countdown__sep { font-size: 20px; font-weight: 700; align-self: flex-start; }

/* --------------------------------------------------------------------------
   Header
   -------------------------------------------------------------------------- */
.header {
  background: var(--white);
  position: sticky; top: 0; z-index: 60;
  box-shadow: var(--shadow-sm);
}
.header__inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 18px 32px;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
}

.logo {
  font-size: 24px; font-weight: 700; letter-spacing: -.03em;
  white-space: nowrap; position: relative;
}
.logo__mark { color: var(--red); margin-right: 1px; }
.logo__reg  { font-size: .45em; vertical-align: super; font-weight: 500; }
.logo--light { color: var(--white); }
.logo--light .logo__mark { color: var(--white); }

.nav { display: flex; gap: 34px; justify-self: center; }
.nav a {
  font-size: 14px; font-weight: 600; letter-spacing: .02em;
  padding: 6px 0; border-bottom: 2px solid transparent;
  transition: border-color .15s;
}
.nav a:hover { border-color: var(--red); }

.header__actions { display: flex; align-items: center; gap: 20px; justify-self: end; }
.icon-btn {
  width: 24px; height: 24px; padding: 0;
  background: none; border: 0; color: var(--ink);
}
.signin { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 600; }
.signin svg { width: 24px; height: 24px; }

/* --------------------------------------------------------------------------
   Marquee
   -------------------------------------------------------------------------- */
.marquee { overflow: hidden; padding: 9px 0; }
.marquee--pink { background: var(--pink); }
.marquee--red  { background: var(--red); color: var(--white); }
.marquee__track { display: flex; width: max-content; animation: marquee 38s linear infinite; }
.marquee__group { display: flex; gap: 56px; padding-right: 56px; }
.marquee__item {
  display: flex; align-items: center; gap: 10px;
  font-size: 14px; font-weight: 500; white-space: nowrap;
}
.marquee--red .marquee__item { font-size: 13px; font-weight: 600; letter-spacing: .06em; }
@keyframes marquee { to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .marquee__track { animation: none; } }

/* --------------------------------------------------------------------------
   PDP layout
   -------------------------------------------------------------------------- */
.pdp { padding: 44px 0 72px; }
.pdp__inner {
  max-width: var(--maxw);
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  gap: 56px;
  align-items: start;
}

/* Grid children default to min-width:auto, which makes them refuse to shrink
   below their content. Both columns must be free to narrow. */
.gallery, .buybox { min-width: 0; }

/* Gallery ---------------------------------------------------------------- */
/* Offset clears the sticky header (~92px) plus a little breathing room. */
.gallery { position: sticky; top: 108px; align-self: start; }
.gallery__stage {
  position: relative;
  background: var(--white);
  border-radius: var(--r-lg);
  overflow: hidden;
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
}
.gallery__main { width: 100%; height: 100%; object-fit: contain; }

.gallery__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; padding: 9px;
  border: 0; border-radius: var(--r-pill);
  background: rgba(255,255,255,.9);
  box-shadow: var(--shadow-md);
  color: var(--ink);
  display: grid; place-items: center;
  opacity: 0; transition: opacity .18s;
}
.gallery__stage:hover .gallery__arrow,
.gallery__arrow:focus-visible { opacity: 1; }
.gallery__arrow--prev { left: 14px; }
.gallery__arrow--next { right: 14px; }

.gallery__thumbs {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 10px;
  margin-top: 14px;
}
.gallery__thumbs button {
  padding: 0; border: 2px solid transparent; border-radius: var(--r-md);
  background: var(--white); overflow: hidden; aspect-ratio: 1/1;
  transition: border-color .15s;
}
.gallery__thumbs button img { width: 100%; height: 100%; object-fit: contain; }
.gallery__thumbs button.is-active { border-color: var(--red); }

/* Full-width outlined pill with an offset shadow, as on the reference page.
   Sits directly under the buy-box accordion. */
.label-link {
  margin-top: 30px; width: 100%;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: 16px 24px;
  background: var(--white);
  border: 2px solid var(--ink);
  border-radius: var(--r-pill);
  box-shadow: 0 4px 0 var(--ink);
  font-size: 16px; font-weight: 700;
  transition: transform .1s, box-shadow .1s;
}
.label-link:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--ink); }
.label-link svg { width: 19px; height: 19px; }

.vreview { margin-top: 36px; }

.vreview__card {
  background: linear-gradient(180deg, #fff 0%, #fdf1f4 55%, #fbe4ea 100%);
  border: 1px solid var(--red);
  border-radius: var(--r-md);
  padding: 22px 24px 24px;
}

.vreview__eyebrow {
  font-size: 13px; font-weight: 700; letter-spacing: .04em;
  color: var(--ink);
}

.vreview__rule { height: 1px; background: #2c4a5a; margin: 16px 0; }

/* avatar | stars + title | badge */
.vreview__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
}
.vreview__avatar {
  width: 64px; height: 64px;
  border-radius: 50%; overflow: hidden;
}
.vreview__meta { min-width: 0; }
.vreview__stars {
  display: block;
  color: var(--red); font-size: 17px; letter-spacing: 3px;
  margin-bottom: 4px;
}
.vreview__title {
  margin: 0; font-size: 17px; font-weight: 700;
  letter-spacing: -.01em; line-height: 1.3;
}
.vreview__badge {
  align-self: start;
  background: #e6f7ee; color: var(--ink);
  font-size: 13px; font-weight: 500; letter-spacing: .01em;
  padding: 6px 12px; border-radius: 3px;
  white-space: nowrap;
}

.vreview__quote {
  margin: 0 0 12px;
  font-size: 16px; line-height: 1.5; color: var(--ink-2);
}
.vreview__author {
  margin: 0;
  font-size: 15px; font-weight: 600; color: var(--ink);
}

@media (max-width: 560px) {
  .vreview__card { padding: 18px 16px 20px; }
  /* The badge no longer fits beside the title — move it under the avatar row. */
  .vreview__head { grid-template-columns: auto minmax(0, 1fr); gap: 14px; }
  .vreview__badge {
    grid-column: 1 / -1;
    justify-self: start;
    font-size: 12px; padding: 5px 10px;
  }
  .vreview__avatar { width: 52px; height: 52px; }
  .vreview__title { font-size: 15.5px; }
  .vreview__quote { font-size: 15px; }
}

/* Buy box ---------------------------------------------------------------- */
.rating-row { display: flex; align-items: center; gap: 10px; font-size: 14px; }
.rating-row__note { color: var(--ink-2); }

.product-title {
  margin: 10px 0 14px;
  font-size: clamp(34px, 4vw, 50px);
  font-weight: 700; letter-spacing: -.025em; line-height: 1.05;
  color: var(--red);
}
.product-sub { margin: 0 0 22px; font-size: 18px; color: var(--ink-2); line-height: 1.5; }

.benefit-pills {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 20px;
}
.pill {
  display: flex; align-items: center; gap: 12px;
  background: var(--pink-soft);
  border-radius: var(--r-pill);
  padding: 13px 20px;
  font-size: 15px; font-weight: 500;
}
.pill .ic { color: var(--ink); }

.check-list { list-style: none; margin: 0 0 14px; padding: 0; }
.check-list li {
  position: relative;
  padding-left: 30px;
  margin-bottom: 9px;
  font-size: 15.5px;
}
.check-list li::before {
  content: "✓";
  position: absolute; left: 2px; top: -1px;
  color: var(--green); font-weight: 700; font-size: 17px;
}
.check-list--tight li { margin-bottom: 6px; font-size: 15px; }

.fineprint { font-size: 13px; color: var(--ink-3); margin: 0 0 26px; }

/* Selectors -------------------------------------------------------------- */
.selector { margin-bottom: 24px; }
.selector__label { font-size: 14px; font-weight: 600; margin-bottom: 10px; }

.size-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px; }
.size-opt {
  padding: 13px 6px;
  background: var(--white);
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  font-size: 13px; font-weight: 600; letter-spacing: .02em;
  transition: border-color .15s, background .15s;
}
.size-opt:hover { border-color: #c9ced2; }
.size-opt.is-active { border-color: var(--red); background: var(--pink-soft); color: var(--red); }

/* Price box (one-time purchase only) ------------------------------------- */
.price-box {
  background: var(--white);
  border: 1.5px solid var(--line);
  border-radius: var(--r-md);
  padding: 18px 20px;
  margin-bottom: 20px;
}
.price-box__main {
  display: flex; align-items: baseline; flex-wrap: wrap;
  gap: 8px;
}
.price-box__now  { font-size: 30px; font-weight: 700; color: var(--red); line-height: 1; }
.price-box__unit { font-size: 13px; font-weight: 600; color: var(--ink-3); }
.price-box__was  { font-size: 15px; color: var(--ink-3); margin-left: 4px; }
.price-box__save {
  background: var(--green); color: var(--white);
  font-size: 11px; font-weight: 700; letter-spacing: .05em;
  padding: 4px 10px; border-radius: var(--r-pill);
}
.price-box__save[hidden] { display: none; }

.price-box__ship {
  display: flex; align-items: center; gap: 9px;
  margin: 14px 0 0; padding-top: 14px;
  border-top: 1px solid var(--line);
  font-size: 13px; color: var(--ink-2);
}
.price-box__ship .ic { width: 17px; height: 17px; color: var(--green); }

/* Add to cart ------------------------------------------------------------ */

/* atc-shell is now just an inert wrapper (kept so the HTML doesn't need to
   change) — the button carries its own shadow again. */
.atc-shell { border-radius: var(--r-pill); }

/* The light band lives INSIDE the button's own silhouette: a conic gradient
   spins behind an inset red fill, so only a thin ring just inside the edge
   catches the sweep. Nothing renders past the button's outer edge. */
.atc-shell .atc {
  position: relative;
  overflow: hidden;
  isolation: isolate;   /* keep the ring's z-index stack local to this button */
}
.atc-shell .atc::before {
  content: "";
  position: absolute;
  inset: -60%;
  background: conic-gradient(from 0turn,
      transparent    0 55%,
      rgba(255,255,255,.18) 66%,
      rgba(255,255,255,1)   75%,
      rgba(255,255,255,.18) 84%,
      transparent   93% 100%);
  animation: atc-orbit 2.6s linear infinite;
  z-index: 0;
}
.atc-shell .atc::after {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: var(--r-pill);
  background: var(--red);
  z-index: 1;
  transition: background .15s;
}
.atc-shell .atc:hover::after { background: var(--red-dark); }
.atc-shell .atc > * {
  position: relative;
  z-index: 2;
}
@keyframes atc-orbit { to { transform: rotate(1turn); } }

.atc {
  width: 100%;
  display: flex; align-items: center; justify-content: center; gap: 12px;
  padding: 19px 24px;
  background: var(--red); color: var(--white);
  border: 0; border-radius: var(--r-pill);
  font-size: 17px; font-weight: 700; letter-spacing: .01em;
  box-shadow: 0 6px 18px rgba(204, 12, 57, .28);
  transition: background .15s, transform .08s;
}
.atc:hover  { background: var(--red-dark); }
.atc:active { transform: translateY(1px); }
.atc__total { font-weight: 600; opacity: .92; }
.atc__note { font-size: 12px; color: var(--ink-3); text-align: center; margin: 10px 0 20px; }

.returns, .fave {
  display: flex; align-items: center; gap: 14px;
  padding: 15px 18px;
  background: var(--white);
  border-radius: var(--r-md);
  margin-bottom: 12px;
}
.returns .ic { width: 26px; height: 26px; color: var(--green); }
.returns strong, .fave strong { display: block; font-size: 15px; }
.returns span,  .fave span    { font-size: 13px; color: var(--ink-2); }
.fave { flex-direction: column; align-items: flex-start; gap: 2px; }

.guarantee {
  display: flex; align-items: center; gap: 20px;
  background: var(--pink-soft);
  border: 2px dashed var(--red);
  border-radius: var(--r-lg);
  padding: 22px 24px;
  margin: 20px 0 32px;
}
.guarantee__icon { flex: 0 0 auto; width: 42px; height: 50px; }
.guarantee__text { min-width: 0; }
.guarantee__eyebrow {
  font-size: 16px; font-weight: 700; color: var(--red);
  margin-bottom: 8px;
}
.guarantee__title {
  font-size: 18px; font-weight: 700; color: var(--ink);
  letter-spacing: -.01em; margin-bottom: 3px;
}
.guarantee p { margin: 0; font-size: 15.5px; color: var(--ink-2); }

/* --------------------------------------------------------------------------
   Accordion
   -------------------------------------------------------------------------- */
.accordion details { border-bottom: 1px solid var(--line); }
.accordion summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 34px 18px 0;
  font-size: 16.5px; font-weight: 600;
  position: relative;
}
.accordion summary::-webkit-details-marker { display: none; }
/* Red plus that rotates into a minus, matching the reference page */
.accordion summary::before,
.accordion summary::after {
  content: ""; position: absolute; right: 4px; top: 50%;
  background: var(--red);
  transition: transform .22s ease, opacity .22s ease;
}
.accordion summary::before { width: 18px; height: 2.5px; margin-top: -1px; }
.accordion summary::after  { width: 2.5px; height: 18px; margin-top: -9px; right: 11.5px; }
.accordion details[open] summary::after { transform: rotate(90deg); opacity: 0; }

.accordion--light summary::before,
.accordion--light summary::after { background: var(--white); }

.accordion__body { padding: 0 0 22px; color: var(--ink-2); font-size: 15px; }
.accordion__body p { margin: 0 0 12px; }
.accordion__body ul { margin: 0 0 12px; padding-left: 20px; }
.accordion__body li { margin-bottom: 6px; }
.accordion__body .muted { color: var(--ink-3); font-size: 13.5px; }

.benefit-list { list-style: none; padding: 0 !important; }
.benefit-list li { margin-bottom: 12px; }
.benefit-list b { display: block; color: var(--ink); }
.benefit-list span { font-size: 14px; }

.facts dt { font-weight: 700; color: var(--ink); margin-top: 14px; }
.facts dd { margin: 4px 0 0; font-size: 14px; }

.accordion--light { color: var(--white); }
.accordion--light details { border-color: rgba(255,255,255,.28); }
.accordion--light .accordion__body { color: rgba(255,255,255,.9); }

.accordion--boxed details {
  background: var(--white);
  border: 0; border-radius: var(--r-md);
  margin-bottom: 10px;
  padding: 0 22px;
  box-shadow: var(--shadow-sm);
}

/* --------------------------------------------------------------------------
   Content sections
   -------------------------------------------------------------------------- */
.featured { background: var(--pink); padding: 42px 0; }
.featured__inner { max-width: var(--maxw); margin: 0 auto; padding: 0 32px; text-align: center; }
.featured__eyebrow {
  font-size: 12px; font-weight: 700; letter-spacing: .18em;
  color: var(--ink-2); margin: 0 0 22px;
}
.featured__logos {
  display: flex; justify-content: center; align-items: center;
  gap: 46px; flex-wrap: wrap;
}
.featured__logos span {
  font-size: 17px; font-weight: 700; letter-spacing: .06em;
  color: var(--ink); opacity: .55;
}

.why { background: var(--red); color: var(--white); padding: 84px 0; }
.why .section-title { margin-bottom: 8px; }

.why__list {
  display: flex; flex-direction: column; align-items: center;
  margin-top: 56px;
}
.why__item {
  display: flex; flex-direction: column; align-items: center;
  text-align: center;
  max-width: 460px;
  padding: 34px 0;
}

.why__icon {
  width: 72px; height: 86px;
  display: grid; place-items: center;
  margin-bottom: 22px;
  /* Slow, gentle bob — each icon drifts on its own phase so the row
     doesn't move in lockstep. */
  animation: why-float 3.4s ease-in-out infinite;
}
.why__icon svg { width: 100%; height: 100%; }
.why__item:nth-child(2) .why__icon { animation-delay: -.85s; }
.why__item:nth-child(3) .why__icon { animation-delay: -1.7s; }
.why__item:nth-child(4) .why__icon { animation-delay: -2.55s; }

@keyframes why-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}
@media (prefers-reduced-motion: reduce) {
  .why__icon { animation: none; }
}

.why__item h3 { margin: 0 0 10px; font-size: 21px; font-weight: 700; }
.why__item p  { margin: 0; font-size: 15.5px; line-height: 1.55; color: rgba(255,255,255,.82); }

/* Video social proof ------------------------------------------------------
   Two vertical testimonial clips in a slide carousel. Each slide owns its
   own <video> + play button; script.js wires play/pause per slide and pauses
   whatever is playing when the carousel advances. */
.social-proof { background: var(--white); padding: 76px 0 88px; text-align: center; }
.social-proof .section-lede { margin-bottom: 40px; }

.vcarousel {
  position: relative;
  width: min(380px, 100%);
  aspect-ratio: 9 / 16;
  margin: 0 auto;
  border-radius: var(--r-lg);
  overflow: hidden;
  background: #1c1f24;
  box-shadow: var(--shadow-lg);
}

.vcarousel__track {
  display: flex;
  width: 200%;   /* 2 slides */
  height: 100%;
  transition: transform .35s ease;
}
.vcarousel__slide {
  position: relative;
  flex: 0 0 50%;   /* 50% of the 200% track === 100% of the frame */
  height: 100%;
}

.vcarousel__media {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  background: #1c1f24;
}

.social-proof__play {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 72px; height: 72px;
  display: grid; place-items: center;
  border: 0; border-radius: 50%;
  background: rgba(255, 255, 255, .92);
  color: var(--ink);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .28);
  cursor: pointer;
  transition: transform .15s ease, background .15s ease, opacity .15s ease;
}
.social-proof__play:hover { transform: translate(-50%, -50%) scale(1.06); background: var(--white); }
.social-proof__play svg { width: 26px; height: 26px; margin-left: 3px; }
.social-proof__play.is-hidden { opacity: 0; pointer-events: none; }

/* Prev/next arrows — same visual language as the product gallery arrows */
.vcarousel__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 40px; height: 40px; padding: 9px;
  border: 0; border-radius: var(--r-pill);
  background: rgba(255, 255, 255, .9);
  box-shadow: var(--shadow-md);
  color: var(--ink);
  display: grid; place-items: center;
  cursor: pointer;
  z-index: 2;
  transition: opacity .15s ease;
}
.vcarousel__arrow--prev { left: 12px; }
.vcarousel__arrow--next { right: 12px; }
.vcarousel__arrow[disabled] { opacity: 0; pointer-events: none; }

.vcarousel__dots {
  display: flex; justify-content: center; gap: 8px;
  margin-top: 18px;
}
.vcarousel__dots button {
  width: 8px; height: 8px; padding: 0;
  border: 0; border-radius: 50%;
  background: var(--line);
  cursor: pointer;
  transition: background .15s ease, transform .15s ease;
}
.vcarousel__dots button.is-active { background: var(--red); transform: scale(1.2); }

@media (max-width: 760px) {
  .social-proof { padding: 52px 0 60px; }
  .social-proof .section-lede { margin-bottom: 28px; }
  .social-proof__play { width: 60px; height: 60px; }
  .social-proof__play svg { width: 22px; height: 22px; }
  .vcarousel__arrow { width: 36px; height: 36px; padding: 8px; }
}

/* Quality section — two-column: a product photo slot on the left, copy +
   boxed accordion + CTA on the right. */
.quality { background: var(--red); color: var(--white); padding: 80px 0; }

.quality__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
  gap: 56px; align-items: stretch;
}

.quality__media { min-width: 0; }
.quality__img {
  width: 100%; height: 100%;
  min-height: 420px;
  object-fit: cover;
  border-radius: var(--r-lg);
  display: block;
}
/* Warm neutral placeholder, standing in for the product lifestyle photo
   until it's supplied — sized/rounded to match so the swap is a drop-in. */
.quality__media-placeholder {
  width: 100%; height: 100%; min-height: 420px;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(60, 45, 30, .55);
}
.quality__media-placeholder svg { width: 34px; height: 34px; opacity: .8; }
.quality__media-placeholder span { font-size: 13.5px; font-weight: 500; }

.quality__content { min-width: 0; }
.quality__eyebrow {
  font-size: 15px; font-weight: 500;
  color: rgba(255, 255, 255, .85);
  margin: 0 0 14px;
}
.quality__title {
  font-size: clamp(28px, 2.6vw, 40px);
  font-weight: 700; letter-spacing: -.02em; line-height: 1.15;
  color: var(--white);
  margin: 0 0 32px;
}

/* Boxed accordion: outlined rounded rows with a circular +/- icon —
   a self-contained component, independent from the shared .accordion used
   elsewhere, so its styling can't leak into or be leaked into by them. */
.quality-accordion details {
  border: 1.5px solid rgba(255, 255, 255, .32);
  border-radius: var(--r-md);
  margin-bottom: 14px;
  padding: 0 22px;
  transition: border-color .15s;
}
.quality-accordion details:hover { border-color: rgba(255, 255, 255, .55); }
.quality-accordion summary {
  list-style: none;
  cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 19px 0;
  font-size: 16px; font-weight: 600;
  color: var(--white);
}
.quality-accordion summary::-webkit-details-marker { display: none; }

.quality-accordion__icon {
  position: relative;
  flex: 0 0 auto;
  width: 26px; height: 26px;
  border: 1.5px solid rgba(255, 255, 255, .75);
  border-radius: 50%;
}
.quality-accordion__icon::before,
.quality-accordion__icon::after {
  content: ""; position: absolute; top: 50%; left: 50%;
  background: var(--white);
  transition: transform .22s ease, opacity .22s ease;
}
.quality-accordion__icon::before { width: 12px; height: 2px; margin: -1px 0 0 -6px; }
.quality-accordion__icon::after  { width: 2px; height: 12px; margin: -6px 0 0 -1px; }
.quality-accordion details[open] .quality-accordion__icon::after { transform: rotate(90deg); opacity: 0; }

.quality-accordion__body {
  padding: 0 0 22px;
  color: rgba(255, 255, 255, .88);
  font-size: 15px;
}
.quality-accordion__body p { margin: 0 0 12px; }
.quality-accordion__body ul { margin: 0 0 12px; padding-left: 20px; }
.quality-accordion__body li { margin-bottom: 6px; }

.quality__cta {
  display: block;
  width: fit-content;
  margin: 30px auto 0;
  padding: 18px 46px;
  background: var(--white); color: var(--ink);
  border-radius: var(--r-pill);
  font-size: 16px; font-weight: 700; text-align: center;
  box-shadow: var(--shadow-md);
  transition: transform .1s ease;
}
.quality__cta:hover { transform: translateY(-1px); }

.quality__guarantee {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 16px 0 0;
  font-size: 14px; font-weight: 600;
  color: rgba(255, 255, 255, .9);
}
.quality__guarantee svg { width: 18px; height: 18px; flex: 0 0 auto; }

@media (max-width: 1080px) {
  .quality__inner { grid-template-columns: 1fr; gap: 36px; }
  .quality__media-placeholder, .quality__img { min-height: 320px; }
  .quality__eyebrow, .quality__title { text-align: center; }
  .quality__title { margin-left: auto; margin-right: auto; max-width: 640px; }
}

@media (max-width: 760px) {
  .quality__inner { padding: 0 20px; }
  .quality-accordion summary { font-size: 15px; padding: 17px 0; }
  .quality__cta { width: 100%; padding: 16px 24px; }
}

/* Split: image on the left (height-matched to the copy column), benefit
   cards + checklist + full-width CTA on the right. */
.split { padding: 84px 0; background: var(--pink); }
.split__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
  gap: 56px; align-items: stretch;
}
.split__media, .split__copy { min-width: 0; }

.split__img {
  width: 100%; height: 100%;
  min-height: 420px;
  object-fit: cover;
  border-radius: var(--r-lg);
  display: block;
}
/* Same neutral placeholder language as the quality section, so any slot on
   the page reads consistently until the real photo is dropped in. */
.split__media-placeholder {
  width: 100%; height: 100%; min-height: 420px;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(60, 45, 30, .55);
}
.split__media-placeholder svg { width: 34px; height: 34px; opacity: .8; }
.split__media-placeholder span { font-size: 13.5px; font-weight: 500; }

.split__title {
  font-size: clamp(24px, 2.3vw, 32px); font-weight: 700;
  letter-spacing: -.015em; line-height: 1.2;
  color: var(--red);
  margin: 0 0 16px;
}
.split__lede { color: var(--ink); font-size: 15.5px; line-height: 1.6; margin: 0 0 24px; }

.split__card {
  background: var(--white);
  border: 1.5px solid rgba(204, 12, 39, .22);
  border-radius: var(--r-lg);
  padding: 22px 24px;
  margin-bottom: 16px;
}
.split__card-badge {
  display: inline-block;
  background: var(--pink); color: var(--red);
  font-size: 12px; font-weight: 700;
  padding: 5px 14px; border-radius: var(--r-pill);
  margin-bottom: 12px;
}
.split__card-title { color: var(--red); font-size: 18px; font-weight: 700; margin: 0 0 8px; }
.split__card-text  { color: var(--ink); font-size: 14.5px; line-height: 1.55; margin: 0; }

.split__checks {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  margin: 8px 0 24px;
}
.split__checks span {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  background: var(--white);
  border: 1.5px solid rgba(204, 12, 39, .3);
  border-radius: var(--r-pill);
  padding: 13px 14px;
  font-size: 13px; font-weight: 600; text-align: center;
  color: var(--red);
}

.split__cta {
  display: block; width: 100%; text-align: center;
  background: var(--red); color: var(--white);
  font-size: 16px; font-weight: 700;
  padding: 18px 24px;
  border-radius: var(--r-pill);
  box-shadow: 0 6px 18px rgba(204, 12, 57, .28);
  margin-bottom: 16px;
  transition: background .15s;
}
.split__cta:hover { background: var(--red-dark); }

.split__guarantee {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 0; font-size: 14px; font-weight: 600; color: var(--ink);
}
.split__guarantee svg { width: 18px; height: 18px; flex: 0 0 auto; }

/* 4 benefits — 2 cards left, product shot center, 2 cards right, via named
   grid areas so the responsive stack can reflow them without reordering DOM. */
.benefits4 { background: var(--red); color: var(--white); padding: 84px 0; }
.benefits4__title {
  text-align: center; color: var(--white);
  font-size: clamp(28px, 3.4vw, 44px); font-weight: 700;
  letter-spacing: -.02em; margin: 0 0 48px;
}

.benefits4__layout {
  max-width: 1120px; margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.15fr 1fr;
  grid-template-rows: auto auto;
  grid-template-areas:
    "tl media tr"
    "bl media br";
  gap: 24px;
  align-items: center;
}
.benefits4__card--tl { grid-area: tl; }
.benefits4__card--bl { grid-area: bl; }
.benefits4__card--tr { grid-area: tr; }
.benefits4__card--br { grid-area: br; }
.benefits4__media { grid-area: media; display: flex; align-items: center; justify-content: center; }
.benefits4__media img { width: 100%; max-width: 260px; display: block; }

.benefits4__card {
  --card-fg: var(--ink);
  position: relative;
  background: var(--white);
  border-radius: var(--r-lg);
  padding: 26px 22px 22px 64px;
  box-shadow: var(--shadow-sm);
  text-align: center;
}

/* The wrapper only positions; the <svg> inside carries the motion, so the
   centring transform and the keyframes never fight over `transform`. */
.benefits4__icon {
  position: absolute; left: 18px; top: 24px;
  width: 32px; height: 38px;
  color: var(--card-fg);
}
.benefits4__icon svg {
  width: 100%; height: 100%;
  animation-iteration-count: infinite;
  animation-timing-function: ease-in-out;
}

/* Each icon moves in character with what it depicts, rather than all four
   sharing one generic bob. */
.benefits4__card--tl .benefits4__icon svg {          /* belly deflating */
  transform-origin: 50% 80%;
  animation-name: b4-deflate; animation-duration: 3.2s;
}
.benefits4__card--tr .benefits4__icon svg {          /* cycle turning over */
  transform-origin: 50% 50%;
  animation-name: b4-turn; animation-duration: 6s;
  animation-timing-function: linear;
}
.benefits4__card--bl .benefits4__icon svg {          /* weight settling */
  transform-origin: 50% 100%;
  animation-name: b4-settle; animation-duration: 3.6s;
}
.benefits4__card--br .benefits4__icon svg {          /* nutrients drawn up */
  transform-origin: 50% 50%;
  animation-name: b4-absorb; animation-duration: 3s;
}

@keyframes b4-deflate {
  0%, 100% { transform: scale(1, 1); }
  45%      { transform: scale(.84, .74); }
  72%      { transform: scale(1.05, 1.03); }
}
@keyframes b4-turn { to { transform: rotate(360deg); } }
@keyframes b4-settle {
  0%, 100% { transform: translateY(0) scaleY(1); }
  50%      { transform: translateY(5px) scaleY(.93); }
}
@keyframes b4-absorb {
  0%, 100% { transform: translateY(5px); opacity: .78; }
  55%      { transform: translateY(-6px); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .benefits4__icon svg { animation: none; }
}

.benefits4__pill {
  display: inline-block;
  border: 1.5px solid var(--card-fg);
  border-radius: var(--r-pill);
  padding: 9px 22px;
  font-size: 15px; font-weight: 700; color: var(--card-fg);
  margin-bottom: 14px;
}
.benefits4__card p { margin: 0; font-size: 13.5px; line-height: 1.5; color: var(--ink-2); }

.benefits4__cta { text-align: center; margin-top: 48px; }
.benefits4__cta-btn {
  display: inline-block;
  background: var(--white); color: var(--ink);
  font-weight: 700; font-size: 16px;
  padding: 18px 46px;
  border-radius: var(--r-pill);
  box-shadow: var(--shadow-md);
  transition: transform .1s ease;
}
.benefits4__cta-btn:hover { transform: translateY(-1px); }

.benefits4__guarantee {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 16px 0 0;
  font-size: 14px; font-weight: 600;
  color: rgba(255, 255, 255, .9);
}
.benefits4__guarantee svg { width: 18px; height: 18px; flex: 0 0 auto; }

@media (max-width: 900px) {
  /* Reading order follows the desktop reading order (top row, then bottom). */
  .benefits4__layout {
    grid-template-columns: 1fr;
    grid-template-areas: "media" "tl" "tr" "bl" "br";
    max-width: 420px;
    gap: 34px;
  }
  .benefits4__media img { max-width: 200px; }

  .benefits4__card {
    /* Dimmed until the card reaches the middle of the screen. */
    --card-fg: #8a1024;
    background: rgba(255, 255, 255, .26);
    box-shadow: none;
    padding: 22px 20px 22px 112px;
    text-align: left;
    transition: background .35s ease, box-shadow .35s ease;
  }
  .benefits4__card p { color: var(--card-fg); }
  .benefits4__card.is-active {
    --card-fg: var(--ink);
    background: var(--white);
    box-shadow: var(--shadow-md);
  }
  .benefits4__card.is-active p { color: var(--ink-2); }

  /* Bigger icons, vertically centred. Offsetting with margin rather than a
     translate keeps `transform` free for the keyframes above. */
  .benefits4__icon {
    left: 20px; top: 50%;
    width: 74px; height: 88px;
    margin-top: -44px;
  }

  /* White rail linking the cards, drawn in the gap under each one. */
  .benefits4__card:not(.benefits4__card--br)::after {
    content: "";
    position: absolute;
    left: 57px;            /* icon centre: 20 + 74/2 */
    top: 100%;
    width: 3px; height: 34px;   /* matches the grid gap */
    margin-left: -1.5px;
    background: rgba(255, 255, 255, .9);
  }
}

.reviews { background: var(--pink); padding: 80px 0; text-align: center; }
.reviews__stars {
  color: var(--ink);
  font-size: clamp(24px, 3vw, 32px);
  letter-spacing: 8px;
  margin: 10px 0 40px;
}

.stars--red { color: var(--red); }

/* Single-card review carousel: a 300%-wide track holding 3 full-width
   slides, same sliding mechanism as the video testimonial carousel.
   Reviews vary in length, so the viewport's own height is set in JS to
   match whichever slide is active — align-items:flex-start keeps each
   slide sized to its own content instead of stretching to the tallest
   sibling, and the height transition animates the resize on swap. */
.rcarousel { position: relative; max-width: 700px; margin: 0 auto; }
.rcarousel__viewport { overflow: hidden; border-radius: var(--r-lg); transition: height .3s ease; }
.rcarousel__track { display: flex; align-items: flex-start; width: 300%; transition: transform .4s ease; }

.rcarousel__slide {
  flex: 0 0 33.3334%;
  background: #faf6ee;
  padding: 26px 32px;
  text-align: left;
  box-shadow: var(--shadow-sm);
}

.rcarousel__head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; margin-bottom: 12px;
}
.rcarousel__head h3 { margin: 0; font-size: 22px; font-weight: 700; color: var(--ink); }
.rcarousel__head .stars { font-size: 18px; white-space: nowrap; }

.rcarousel__slide p { margin: 0 0 20px; color: var(--ink); font-size: 16px; line-height: 1.55; }

.rcarousel__foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.rcarousel__thumb {
  width: 56px; height: 56px;
  object-fit: cover; object-position: left center;
  border-radius: var(--r-sm);
  flex: 0 0 auto;
}
.rcarousel__author {
  display: flex; align-items: center; gap: 7px;
  font-size: 17px; font-weight: 500; color: var(--ink);
}
.rcarousel__author svg { width: 18px; height: 18px; color: var(--ink); flex: 0 0 auto; }

/* Arrows straddle the card edge on desktop, matching the reference. */
.rcarousel__arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px;
  border: 0; border-radius: 50%;
  background: var(--red); color: var(--white);
  display: grid; place-items: center;
  box-shadow: var(--shadow-md);
  cursor: pointer;
  z-index: 2;
  transition: background .15s;
}
.rcarousel__arrow:hover { background: var(--red-dark); }
.rcarousel__arrow svg { width: 22px; height: 22px; }
.rcarousel__arrow--prev { left: -26px; }
.rcarousel__arrow--next { right: -26px; }

.rcarousel__dots { display: flex; justify-content: center; gap: 8px; margin-top: 20px; }
.rcarousel__dots button {
  width: 8px; height: 8px; padding: 0;
  border: 0; border-radius: 50%;
  background: rgba(204, 12, 57, .3);
  cursor: pointer;
  transition: background .15s, transform .15s;
}
.rcarousel__dots button.is-active { background: var(--red); transform: scale(1.25); }

@media (max-width: 760px) {
  /* No room to straddle the edge once the section padding shrinks to 20px —
     the arrows would push past the viewport. Sit them just inside instead. */
  .rcarousel__arrow { width: 40px; height: 40px; }
  .rcarousel__arrow svg { width: 18px; height: 18px; }
  .rcarousel__arrow--prev { left: 6px; }
  .rcarousel__arrow--next { right: 6px; }
  /* The arrows span 6-46px vertically centred over the whole card, so any
     slide content in that horizontal band would collide with one for some
     slide height or other — clear it on both sides regardless of content. */
  .rcarousel__slide { padding: 28px 54px 24px; }
  .rcarousel__head h3 { font-size: 19px; }
  .rcarousel__slide p { font-size: 15px; margin-bottom: 18px; }
}

/* Red CTA band — copy on the left, a landscape lifestyle shot on the right. */
.band { background: var(--red); color: var(--white); padding: 84px 0; }
.band__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 0.92fr) minmax(0, 1fr);
  gap: 56px; align-items: center;
}
.band__copy, .band__media { min-width: 0; }

.band__title {
  font-size: clamp(30px, 3.2vw, 44px); font-weight: 700;
  letter-spacing: -.02em; line-height: 1.15;
  margin: 0 0 20px;
}
.band__lede {
  margin: 0 0 28px;
  font-size: 15.5px; line-height: 1.65;
  color: rgba(255, 255, 255, .9);
}

/* Outlined, not filled — reads as secondary against the solid red band. */
.band__cta {
  display: inline-block;
  background: transparent; color: var(--white);
  border: 1.5px solid rgba(255, 255, 255, .85);
  font-weight: 700; font-size: 16px;
  padding: 16px 38px;
  border-radius: var(--r-md);
  margin-bottom: 28px;
  transition: background .15s;
}
.band__cta:hover { background: rgba(255, 255, 255, .12); }

.band__features { display: flex; flex-direction: column; gap: 13px; }
.band__features span {
  display: flex; align-items: center; gap: 10px;
  font-size: 13.5px; font-weight: 500;
  color: rgba(255, 255, 255, .92);
}
.band__features svg { width: 18px; height: 18px; flex: 0 0 auto; }

.band__img {
  /* height:auto is required — without it, the width/height HTML attributes
     (added to prevent layout shift) resolve to a literal pixel height that
     silently overrides aspect-ratio, since aspect-ratio only fills in a
     dimension left auto. */
  width: 100%; height: auto; aspect-ratio: 4 / 3.15;
  object-fit: cover;
  border-radius: var(--r-lg);
  display: block;
}
.band__media-placeholder {
  width: 100%; aspect-ratio: 4 / 3.15;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(60, 45, 30, .55);
}
.band__media-placeholder svg { width: 34px; height: 34px; opacity: .8; }
.band__media-placeholder span { font-size: 13.5px; font-weight: 500; }

@media (max-width: 1080px) {
  .band__inner { grid-template-columns: 1fr; gap: 36px; }
  .band__copy { text-align: center; }
  .band__cta { display: block; width: fit-content; margin-left: auto; margin-right: auto; }
  .band__features { align-items: center; }
}

@media (max-width: 760px) {
  .band { padding: 0 0 48px; }

  /* Image first, full-bleed to both edges — it sits above the padded copy
     block rather than inside it, so .band__inner drops its own padding and
     .band__copy carries it instead. */
  .band__inner { padding: 0; gap: 28px; }
  .band__media { order: -1; }
  .band__img, .band__media-placeholder { border-radius: 0; aspect-ratio: 16 / 10; }

  .band__copy { padding: 32px 20px 0; }
  .band__title { font-size: 28px; }
  .band__cta { width: 100%; text-align: center; padding: 16px 24px; }

  /* Two items per row, third one centred alone underneath — matches the
     reference instead of one item per row. */
  .band__features {
    display: grid;
    grid-template-columns: repeat(2, auto);
    justify-content: center;
    gap: 10px 28px;
  }
  .band__features span:nth-child(3) { grid-column: 1 / -1; justify-content: center; }
}

/* Timeline — copy, product shot, and a Day-1/3/5/7 rail across the top;
   3 icon features below. */
.timeline { background: var(--pink); padding: 84px 0; }

.timeline__top {
  max-width: var(--maxw); margin: 0 auto 72px; padding: 0 32px;
  display: grid;
  grid-template-columns: 1fr 0.8fr 1.15fr;
  gap: 48px;
  align-items: center;
}
.timeline__copy, .timeline__media, .timeline__days { min-width: 0; }

.timeline__title {
  font-size: clamp(26px, 2.4vw, 34px); font-weight: 700;
  letter-spacing: -.015em; line-height: 1.2;
  color: var(--ink);
  margin: 0 0 16px;
}
.timeline__lede { margin: 0; color: var(--ink-2); font-size: 15px; line-height: 1.6; }

.timeline__media { display: flex; align-items: center; justify-content: center; }
.timeline__img { width: 100%; max-width: 220px; height: auto; display: block; }
.timeline__media-placeholder {
  width: 100%; max-width: 220px; aspect-ratio: 3 / 4;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 10px;
  color: rgba(60, 45, 30, .55);
}
.timeline__media-placeholder svg { width: 28px; height: 28px; opacity: .8; }
.timeline__media-placeholder span { font-size: 12px; font-weight: 500; text-align: center; padding: 0 14px; }

/* The rail is just the container's own left border — it automatically spans
   the full stack height, no matter how the Day items reflow. */
.timeline__days {
  display: flex; flex-direction: column; gap: 26px;
  border-left: 2px solid rgba(22, 24, 28, .15);
  padding-left: 26px;
}
.timeline__days h3 { margin: 0 0 6px; font-size: 19px; font-weight: 700; color: var(--ink); }
.timeline__days p { margin: 0; font-size: 14px; line-height: 1.55; color: var(--ink-2); }

.timeline__features {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px;
}
.timeline__features h3 { margin: 0 0 10px; font-size: 18px; font-weight: 700; color: var(--ink); }
.timeline__features p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--ink-2); }

.timeline__icon {
  display: flex; align-items: center; justify-content: center;
  width: 64px; height: 64px;
  border-radius: 50%;
  margin-bottom: 18px;
  overflow: hidden;
}
/* The bloat/absorb source images already carry their own circular teal
   fill; the background here is just a same-color fallback while loading. */
.timeline__icon img { width: 100%; height: 100%; display: block; object-fit: contain; }
.timeline__icon--enzyme { background: transparent; }
.timeline__icon--bloat, .timeline__icon--absorb { background: #149c85; }

@media (max-width: 1080px) {
  .timeline__top { grid-template-columns: 1fr; gap: 36px; margin-bottom: 56px; }
  .timeline__copy { text-align: center; }
  /* The rail and left-aligned Day text stay even once the top row stacks —
     only the copy block above centers itself. */
  .timeline__days { max-width: 420px; margin: 0 auto; }
  .timeline__features { grid-template-columns: repeat(3, 1fr); gap: 28px; }

  /* Scroll spotlight: every Day dims to gray except whichever one is
     crossing the centre band of the viewport, toggled by script.js. */
  .timeline__days article { opacity: .45; transition: opacity .3s ease; }
  .timeline__days article.is-active { opacity: 1; }
}

@media (max-width: 760px) {
  .timeline { padding: 56px 0; }
  .timeline__features { grid-template-columns: 1fr; text-align: center; }
  .timeline__icon { margin-left: auto; margin-right: auto; }
}

/* How to take — a square photo on the left, red title + numbered steps on
   the right, same height-matched two-column pattern as quality/split/band. */
.howto { background: var(--white); padding: 84px 0; }
.howto__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
  gap: 56px; align-items: center;
}
.howto__media, .howto__copy { min-width: 0; }

.howto__img {
  /* height:auto (not 100%) — same reasoning as .band__img: with the
     width/height HTML attributes present, a non-auto height can silently
     win over aspect-ratio. Only works out here because the source happens
     to already be square; auto keeps it correct if that ever changes. */
  width: 100%; height: auto; aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: var(--r-lg);
  display: block;
}
.howto__media-placeholder {
  width: 100%; aspect-ratio: 1 / 1;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(60, 45, 30, .55);
}
.howto__media-placeholder svg { width: 34px; height: 34px; opacity: .8; }
.howto__media-placeholder span { font-size: 13.5px; font-weight: 500; }

.howto__title {
  font-size: clamp(26px, 2.6vw, 34px); font-weight: 700;
  letter-spacing: -.015em; line-height: 1.2;
  color: var(--red);
  margin: 0 0 16px;
}
.howto__lede { margin: 0 0 30px; color: var(--ink); font-weight: 600; font-size: 15px; line-height: 1.6; }

.howto__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 22px; }
.howto__steps li { display: flex; align-items: flex-start; gap: 18px; }
.howto__steps p { margin: 0; color: var(--ink-2); font-size: 15.5px; line-height: 1.5; padding-top: 6px; }
.howto__steps b { color: var(--ink); }

.howto__n {
  display: grid; place-items: center;
  flex: 0 0 auto;
  width: 40px; height: 40px;
  background: var(--red); color: var(--white);
  border-radius: 50%;
  font-size: 17px; font-weight: 700;
}

@media (max-width: 1080px) {
  .howto__inner { grid-template-columns: 1fr; gap: 32px; }
  .howto__media { max-width: 420px; margin: 0 auto; }
  .howto__title, .howto__lede { text-align: center; }
}

/* FAQ — black "FAQ" tag + centered title above, then a photo left / flat
   accordion right, two-column like the quality/split/band sections. */
.faq { background: var(--pink); padding: 84px 0; }

.faq__head { text-align: center; margin-bottom: 52px; }
.faq__tag {
  display: inline-block;
  background: var(--ink); color: var(--white);
  font-size: 14px; font-weight: 700;
  padding: 8px 18px; border-radius: 6px;
  margin-bottom: 20px;
}
.faq__title {
  font-size: clamp(28px, 3vw, 38px); font-weight: 700;
  letter-spacing: -.02em; color: var(--ink);
  margin: 0;
}

.faq__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px;
  display: grid; grid-template-columns: minmax(0, 0.86fr) minmax(0, 1fr);
  gap: 48px; align-items: stretch;
}
.faq__media, .faq-accordion { min-width: 0; }

.faq__img {
  width: 100%; height: 100%; min-height: 420px;
  object-fit: cover;
  border-radius: var(--r-lg);
  display: block;
}
.faq__media-placeholder {
  width: 100%; height: 100%; min-height: 420px;
  border-radius: var(--r-lg);
  background: linear-gradient(155deg, #ddcdb8 0%, #cbb89c 55%, #b9a284 100%);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px;
  color: rgba(60, 45, 30, .55);
}
.faq__media-placeholder svg { width: 34px; height: 34px; opacity: .8; }
.faq__media-placeholder span { font-size: 13.5px; font-weight: 500; }

/* One continuous white surface with thin dividers between rows, rather than
   the boxed/floating-card look used elsewhere — matches the reference's
   flat list with a plain black +/− instead of the red one. */
.faq-accordion {
  display: flex; flex-direction: column; justify-content: center;
  background: var(--white);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.faq-accordion details { border-bottom: 1px solid var(--line); }
.faq-accordion details:last-child { border-bottom: 0; }
.faq-accordion summary { padding: 20px 52px 20px 26px; font-size: 15.5px; }
.faq-accordion summary::before,
.faq-accordion summary::after { background: var(--ink); right: 26px; }
.faq-accordion .accordion__body { padding: 0 26px 22px; }

@media (max-width: 1080px) {
  .faq__inner { grid-template-columns: 1fr; gap: 32px; }
  .faq__media { max-width: 420px; margin: 0 auto; }
  .faq__media-placeholder, .faq__img { min-height: 320px; }
}

@media (max-width: 760px) {
  .faq-accordion summary { padding: 18px 44px 18px 20px; font-size: 15px; }
  .faq-accordion summary::before, .faq-accordion summary::after { right: 20px; }
  .faq-accordion .accordion__body { padding: 0 20px 20px; }
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.footer { background: var(--navy); color: var(--white); padding: 66px 0 0; }
.footer__inner {
  max-width: var(--maxw); margin: 0 auto; padding: 0 32px 50px;
  display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px;
}
.footer__brand p { margin: 16px 0 0; font-size: 14px; opacity: .75; max-width: 320px; }
.footer__col h4 { margin: 0 0 16px; font-size: 14px; letter-spacing: .06em; text-transform: uppercase; }
.footer__col a { display: block; font-size: 14px; opacity: .75; margin-bottom: 10px; }
.footer__col a:hover { opacity: 1; }

.footer__legal {
  border-top: 1px solid rgba(255,255,255,.14);
  padding: 26px 32px 34px;
  max-width: var(--maxw); margin: 0 auto;
}
.footer__legal p { margin: 0 0 10px; font-size: 12px; opacity: .6; line-height: 1.6; }
.footer__demo { opacity: .85 !important; }

/* --------------------------------------------------------------------------
   Nutrient label lightbox
   -------------------------------------------------------------------------- */
.lightbox {
  position: fixed; inset: 0; z-index: 90;
  display: grid; place-items: center;
  padding: 24px;
}
.lightbox[hidden] { display: none; }

.lightbox__backdrop {
  position: absolute; inset: 0;
  background: rgba(16, 20, 24, .62);
  animation: lb-fade .18s ease;
}
@keyframes lb-fade { from { opacity: 0; } }

.lightbox__dialog {
  position: relative;
  width: min(560px, 100%);
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  background: var(--white);
  border-radius: var(--r-md);
  /* Extra top padding keeps the close button clear of the panel border. */
  padding: 54px 26px 26px;
  box-shadow: var(--shadow-lg);
  animation: lb-rise .2s ease;
}
@keyframes lb-rise { from { opacity: 0; transform: translateY(10px); } }

.lightbox__close {
  position: absolute; top: 12px; right: 12px;
  width: 34px; height: 34px; padding: 7px;
  background: var(--white); border: 0; border-radius: var(--r-pill);
  color: var(--ink); cursor: pointer;
}
.lightbox__close:hover { background: var(--bg); }

/* Supplement Facts panel — FDA layout: heavy rules, condensed grotesque. */
.sfp {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  color: #000;
}
.sfp__panel { border: 3px solid #000; padding: 12px 14px 10px; }

.sfp__title {
  margin: 0;
  font-size: clamp(30px, 7vw, 44px);
  font-weight: 800; letter-spacing: -.02em; line-height: .98;
}
.sfp__serving { margin: 4px 0 0; font-size: clamp(15px, 3.4vw, 20px); font-weight: 600; }

.sfp__rule { height: 1px; background: #000; margin: 7px 0; }
.sfp__rule--xl { height: 10px; margin: 8px 0; }

.sfp__cols {
  display: flex; justify-content: flex-end; gap: 14px;
  font-size: clamp(13px, 2.9vw, 16px); font-weight: 700;
}

.sfp__row { padding: 2px 0; }
.sfp__line {
  display: grid;
  grid-template-columns: 1fr auto 22px;
  align-items: baseline; gap: 8px;
  font-size: clamp(13px, 2.9vw, 16px);
}
.sfp__line b { font-weight: 700; }
.sfp__amt { font-weight: 700; }
.sfp__dv  { text-align: right; font-weight: 700; }

.sfp__sub {
  margin: 2px 0 0; padding-left: 14px;
  font-size: clamp(12.5px, 2.8vw, 15px);
  line-height: 1.35;
}

.sfp__foot {
  display: flex; gap: 7px;
  margin: 0; font-size: clamp(12.5px, 2.8vw, 15px);
}
.sfp__other {
  margin: 12px 0 0;
  font-size: clamp(12px, 2.6vw, 14px);
  line-height: 1.45;
}

@media (max-width: 760px) {
  .lightbox { padding: 12px; }
  .lightbox__dialog { padding: 48px 14px 18px; max-height: calc(100dvh - 24px); }
  .sfp__panel { padding: 10px 10px 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .lightbox__backdrop, .lightbox__dialog { animation: none; }
}

/* --------------------------------------------------------------------------
   Sticky ATC
   -------------------------------------------------------------------------- */
.sticky-atc {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 70;
  background: var(--white);
  box-shadow: 0 -4px 24px rgba(16,20,24,.12);
  transform: translateY(110%);
  transition: transform .25s ease;
}
.sticky-atc.is-visible { transform: none; }
.sticky-atc__inner {
  max-width: var(--maxw); margin: 0 auto;
  padding: 12px 32px;
  display: flex; align-items: center; gap: 18px;
}
.sticky-atc img { width: 52px; height: 52px; object-fit: contain; }
.sticky-atc__info { flex: 1 1 auto; min-width: 0; line-height: 1.3; }
.sticky-atc__info strong { display: block; font-size: 16px; }
.sticky-atc__info span   { font-size: 13px; color: var(--ink-3); }
.atc--sm { width: auto; padding: 13px 34px; font-size: 15px; }

/* --------------------------------------------------------------------------
   Responsive
   Breakpoints: 1280 (large desktop cap) · 1080 (tablet) · 760 (phone)
   Phone layout is tuned against a 390x844 viewport (iPhone 14/15).
   -------------------------------------------------------------------------- */

/* The Add-to-cart label must never wrap — it is the primary action. */
.atc, .atc span, .btn { white-space: nowrap; }

/* ---- Large desktop ---------------------------------------------------- */
@media (min-width: 1400px) {
  .pdp__inner { gap: 72px; }
  .gallery { top: 104px; }
}

/* ---- Tablet ----------------------------------------------------------- */
@media (max-width: 1080px) {
  .pdp { padding: 32px 0 60px; }
  /* minmax(0,…) — a plain 1fr keeps min-width:auto, which lets the fixed-width
     thumbnail strip push the whole column past the viewport. */
  .pdp__inner { grid-template-columns: minmax(0, 1fr); gap: 44px; }
  .gallery { position: static; max-width: 620px; margin: 0 auto; width: 100%; }
  /* Two benefit cards + a 4-item checklist get cramped in a narrow column at
     tablet widths — stack instead, same treatment as the quality section. */
  .split__inner { grid-template-columns: 1fr; gap: 36px; }
  .split__media-placeholder, .split__img { min-height: 320px; }
  .split__title, .split__lede { text-align: center; }
  .split__title { max-width: 640px; margin-left: auto; margin-right: auto; }
  .split__lede { max-width: 640px; margin-left: auto; margin-right: auto; }

  .nav { display: none; }
  .header__inner { grid-template-columns: 1fr auto; }
  .logo { font-size: 21px; }
  .header__actions { gap: 16px; }

  /* 4 link columns get too narrow to read below ~900px */
  .footer__inner { grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 32px; }
}

@media (max-width: 900px) {
  .footer__inner { grid-template-columns: repeat(3, 1fr); gap: 32px; }
  .footer__brand { grid-column: 1 / -1; }
}

/* ---- Phone ------------------------------------------------------------ */
@media (max-width: 760px) {
  .section-inner, .pdp__inner, .header__inner,
  .timer-bar__inner, .split__inner, .footer__inner,
  .featured__inner { padding-left: 18px; padding-right: 18px; }

  .quality, .split, .benefits4, .reviews,
  .band, .timeline, .howto, .faq { padding: 52px 0; }
  .faq { padding-bottom: 64px; }
  .section-lede { margin-bottom: 32px; font-size: 15.5px; }

  /* Timer bar — keep the countdown on the same row as the copy */
  .timer-bar__inner { gap: 12px; padding: 8px 18px; flex-wrap: nowrap; }
  .timer-bar__copy { text-align: left; }
  .timer-bar__copy strong { font-size: 13px; }
  .timer-bar__copy span   { font-size: 9.5px; letter-spacing: 0; }
  .countdown { padding: 4px 9px; gap: 2px; }
  .countdown__unit { min-width: 30px; }
  .countdown__unit b { font-size: 16px; }
  .countdown__unit i { font-size: 7px; }
  .countdown__sep { font-size: 14px; }

  /* Header — shrink the wordmark and drop the SIGN IN label so the
     cart icon stays inside the viewport */
  .header__inner { padding-top: 12px; padding-bottom: 12px; gap: 12px; }
  .logo { font-size: 17px; letter-spacing: -.035em; }
  .header__actions { gap: 15px; min-width: 0; }
  .signin span { display: none; }
  .icon-btn, .signin svg { width: 22px; height: 22px; }

  .marquee__group { gap: 34px; padding-right: 34px; }
  .marquee__item { font-size: 12.5px; }

  /* Gallery — thumbnails become a swipeable strip */
  .gallery__stage { border-radius: var(--r-md); }
  .gallery__arrow { opacity: 1; width: 34px; height: 34px; padding: 8px; }
  .gallery__thumbs {
    display: flex; gap: 8px;
    overflow-x: auto; scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none; padding-bottom: 2px;
  }
  .gallery__thumbs::-webkit-scrollbar { display: none; }
  .gallery__thumbs button { flex: 0 0 66px; scroll-snap-align: start; }
  .label-link { padding: 14px 20px; font-size: 15px; }

  /* Buy box */
  .product-sub { font-size: 16px; }
  .benefit-pills { grid-template-columns: 1fr; gap: 8px; }
  .pill { padding: 11px 16px; font-size: 14px; }
  .check-list li { font-size: 14.5px; }
  .size-grid { grid-template-columns: repeat(2, 1fr); }
  .price-box { padding: 16px; }
  .price-box__now { font-size: 26px; }
  .atc { padding: 17px 20px; font-size: 16px; }
  /* Tuned so "60-DAYS MONEY-BACK GUARANTEE" stays on one line at 375px:
     it needs 250px and this leaves ~257px of text column. */
  .guarantee { gap: 12px; padding: 16px; }
  .guarantee__icon { width: 34px; height: 40px; }
  .guarantee__eyebrow { font-size: 14.5px; margin-bottom: 6px; }
  .guarantee__title { font-size: 14px; }
  .guarantee p { font-size: 13.5px; }

  .split__inner { gap: 30px; }
  .split__checks { grid-template-columns: 1fr; }
  .split__card { padding: 18px 20px; }
  .split__cta { padding: 16px 20px; font-size: 15px; }

  .why { padding: 56px 0; }
  .why__list { margin-top: 36px; }
  .why__item { padding: 26px 0; max-width: 340px; }
  .why__icon { width: 58px; height: 70px; margin-bottom: 16px; }
  .why__item h3 { font-size: 18px; }
  .why__item p  { font-size: 14.5px; }
  .featured__logos { gap: 22px; }
  .featured__logos span { font-size: 14px; }
  .accordion summary { font-size: 15.5px; padding-right: 30px; }

  .footer { padding-top: 48px; }
  .footer__inner { grid-template-columns: 1fr 1fr; gap: 28px; }
  .footer__brand { grid-column: 1 / -1; }

  /* Sticky bar — single row, label never wraps, and the page gets
     bottom padding so the bar cannot cover the footer */
  body { padding-bottom: 76px; }
  .sticky-atc__inner { padding: 10px 16px; gap: 12px; }
  .sticky-atc img { display: none; }
  .sticky-atc__info strong { font-size: 14px; }
  .sticky-atc__info span {
    font-size: 11px; display: block;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .atc--sm { flex: 0 0 auto; padding: 12px 20px; font-size: 14px; gap: 8px; }
}

/* ---- Small phones (SE / mini) ----------------------------------------- */
@media (max-width: 380px) {
  .logo { font-size: 15.5px; }
  .header__actions { gap: 12px; }
  .timer-bar__copy strong { font-size: 12px; }
  .countdown__unit { min-width: 26px; }
  .countdown__unit b { font-size: 14px; }
  .size-grid { gap: 7px; }
  .size-opt { font-size: 12px; padding: 12px 4px; }
  .atc--sm { padding: 11px 16px; font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .sticky-atc { transition: none; }
  .atc-shell .atc::before { animation: none; }
}
