/* ============================================================================
   FORTRELL — store design language (one design language across all products).
   Per-product ACCENT only: set --accent / --accent-strong / --accent-tint /
   --accent-on on <body> and the whole design re-tints; layout/type/spacing/
   radii never change. Primary Add-to-Cart = the accent (loudest). Checkout
   button = always black. Type: Montserrat (self-hosted). Radii small: 4–8px.
   ========================================================================== */

@font-face { font-family: 'Montserrat'; font-weight: 100 900; font-display: swap;
  src: url('/static/fonts/montserrat-normal.woff2') format('woff2'); }
@font-face { font-family: 'Montserrat'; font-weight: 100 900; font-style: italic; font-display: swap;
  src: url('/static/fonts/montserrat-italic.woff2') format('woff2'); }

:root {
  /* ACCENT — the only thing that varies per product (derived from the hero image).
     Defaults here are a NEUTRAL fallback (never a leftover brand colour); each product page
     overrides --accent/--qp-red/etc. on <body> from its own hero. */
  --accent: #3A3A3A;
  --accent-strong: #2A2A2A;   /* loudest shade for the Add-to-Cart button */
  --accent-tint: #ECECEC;     /* light wash for icon chips / soft fills */
  --accent-line: #D8D5D2;     /* soft accent-family border (neutral-safe) */
  --accent-on: #ffffff;       /* AA-safe text/foreground ON the accent */
  --qp-red: var(--accent);
  --accent-band: #DADADA;  /* dark-band accent: product hero lightened to AA on ink (neutral fallback) */
  --banner: #3A3A3A;        /* home/shop: neutral bar (no product context) */
  --banner-on: #ffffff;
  --qp-red-dark: var(--accent-strong);
  --qp-red-tint: var(--accent-tint);
  --qp-ink: #121212;
  --qp-body: #2E2A39;
  --qp-gray: #6A6A6A;
  --qp-light: #6A6A6A;   /* muted secondary text — darkened from #9A9A9A to clear WCAG AA (>=4.5:1) on white AND the soft-grey sections, while staying calm/secondary */
  --qp-line: #E4E4E4;
  --qp-bg: #FFFFFF;
  --qp-soft: #F3F3F3;
  --qp-font: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --qp-r: 6px;          /* base radius — small by order */
  --qp-r-lg: 8px;
  --qp-maxw: 1200px;
}

* { margin: 0; box-sizing: border-box; }
[hidden] { display: none !important; }  /* author display rules must never beat the hidden attribute */
html { -webkit-font-smoothing: antialiased; }
body { background: var(--qp-bg); color: var(--qp-body);
  font: 400 15px/1.65 var(--qp-font); }
h1, h2, h3, h4 { color: var(--qp-ink); font-weight: 700; letter-spacing: -0.01em; }
a { color: var(--qp-ink); }
img { max-width: 100%; height: auto; display: block; }
.qp-wrap { max-width: var(--qp-maxw); margin: 0 auto; padding: 0 24px; }
.qp-red { color: var(--qp-red); }

/* interaction law (kept): fast press, quiet hovers, keyboard-only ring */
a, button, summary, label, input { transition: background-color 150ms ease-out, color 150ms ease-out,
  border-color 150ms ease-out, opacity 150ms ease-out, transform 75ms ease-out; }
a:active, button:active, summary:active { transform: scale(0.98); }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--qp-red); outline-offset: 2px; }
a, button, summary, .qp-opt, .qp-toggle, .qp-check { cursor: pointer; touch-action: manipulation; }
@media (prefers-reduced-motion: reduce) { a, button, summary, label, input { transition: none; } }

/* ---- announcement bar: slow continuous RIGHT-TO-LEFT marquee, ACCENT-tinted per product ----
   (B9, Ako-ordered exception to the no-continuous-motion law; static under reduced-motion) */
.qp-announce { background: var(--banner, var(--accent)); color: var(--banner-on, var(--accent-on)); overflow: hidden;
  font: 700 12.5px/1 var(--qp-font); letter-spacing: .06em; text-transform: uppercase;
  padding: 10px 0; }
.qp-announce .track { display: inline-block; white-space: nowrap;
  animation: qp-marquee 60s linear infinite; will-change: transform; }
/* tighter ticker spacing + a subtle dot separator (ticker convention: inline items with a visual
   separator, not large empty gaps). Per-side 46px -> 24px (~48% tighter), dot centered between items. */
.qp-announce span { margin: 0; }
.qp-announce span::after { content: '·'; margin: 0 24px; opacity: .55; }
@keyframes qp-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .qp-announce .track { animation: none; } }

/* ---- header ---- */
.qp-header { background: #fff; border-bottom: 1px solid var(--qp-line);
  position: sticky; top: 0; z-index: 60; }
.qp-nav { max-width: none; margin: 0; padding: 12px 44px;
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 16px; }
.qp-links { display: flex; gap: 6px; align-items: center; }
.qp-links a { text-decoration: none; font: 500 13.5px/1 var(--qp-font); color: var(--qp-ink);
  padding: 9px 12px; border-radius: 4px; }
.qp-links a:hover { background: var(--qp-soft); }
.qp-links a.on { background: var(--qp-ink); color: #fff; font-weight: 600; }
.qp-logo { justify-self: center; text-decoration: none; }
.qp-logo img { height: 56px; width: auto; }
.qp-wordmark { font: 800 25px/1 var(--qp-font); letter-spacing: -0.02em; color: var(--qp-ink);
  text-transform: none; }
.qp-icons { justify-self: end; display: flex; gap: 14px; align-items: center; }
.qp-icons a, .qp-icons button { background: none; border: 0; color: var(--qp-ink); position: relative;
  padding: 4px; display: inline-flex; }
.qp-icons svg { width: 21px; height: 21px; }
.qp-cartcount { position: absolute; top: -3px; right: -5px; background: var(--qp-red); color: #fff;
  font: 700 10px/1 var(--qp-font); min-width: 15px; height: 15px; border-radius: 999px;
  display: none; align-items: center; justify-content: center; padding: 0 3px; }
.qp-cartcount.show { display: inline-flex; }

/* ---- buttons ---- */
.qp-btn { display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  border: 0; border-radius: var(--qp-r); padding: 15px 26px; text-decoration: none;
  font: 700 13.5px/1 var(--qp-font); letter-spacing: .08em; text-transform: uppercase;
  min-height: 48px; white-space: nowrap; }
.qp-btn-dark { background: var(--qp-ink); color: #fff; }
.qp-btn-dark:hover { background: #000; }
.qp-btn-line { background: #fff; color: var(--qp-ink); border: 1px solid #D8D8D8; }
.qp-btn-line:hover { border-color: var(--qp-ink); }
.qp-btn-red { background: var(--qp-red); color: #fff; }
.qp-btn-red:hover { background: var(--qp-red-dark); }
.qp-btn-block { display: flex; width: 100%; }
.qp-review-note { margin: 8px 0 2px; color: #6D6862;
  font: 600 11.5px/1.4 var(--qp-font); text-align: center; }
.qp-review-note.is-active { color: var(--qp-red-dark); font-weight: 700; }

/* ---- home hero ---- */
.qp-hero { position: relative; text-align: center; padding: 74px 24px 84px; overflow: hidden; }
.qp-hero::before, .qp-hero::after { content: ''; position: absolute; width: 480px; height: 480px;
  border-radius: 50%; background: radial-gradient(circle, rgba(0,0,0,.045), transparent 65%);
  z-index: 0; }
.qp-hero::before { top: -140px; left: -80px; }
.qp-hero::after { top: 40px; right: -120px; }
.qp-hero > * { position: relative; z-index: 1; }
.qp-pill { display: inline-block; border: 1px solid var(--accent-line); color: var(--qp-red);
  background: #fff; border-radius: 999px; font: 600 11px/1 var(--qp-font);
  letter-spacing: .14em; text-transform: uppercase; padding: 9px 16px; }
.qp-hero h1 { font-size: clamp(40px, 5.6vw, 64px); line-height: 1.07; font-weight: 800;
  margin: 26px auto 0; max-width: 16ch; }
.qp-hero h1 .qp-red { display: block; }
.qp-hero .sub { color: var(--qp-gray); max-width: 52ch; margin: 20px auto 0; font-size: 15.5px; }
.qp-hero .ctas { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 28px; }
.qp-trustline { display: flex; gap: 8px 22px; justify-content: center; flex-wrap: wrap;
  color: var(--qp-gray); font: 500 12.5px/1.4 var(--qp-font); margin-top: 26px; }
.qp-trustline .st { color: var(--qp-red); font-weight: 700; }
.qp-trustline .ck { color: var(--qp-red); font-weight: 700; margin-right: 4px; }

/* ---- features-around-image ---- */
.qp-featgrid { display: grid; grid-template-columns: 1fr minmax(0, 1.25fr) 1fr; gap: 30px;
  align-items: center; padding: 60px 0; }
.qp-featcol { display: flex; flex-direction: column; gap: 44px; }
.qp-feat { max-width: 300px; }
.qp-featcol.l { align-items: flex-start; text-align: left; }
.qp-featcol.r { align-items: flex-end; text-align: right; }
.qp-feat .ic { width: 44px; height: 44px; border-radius: var(--qp-r-lg); background: var(--qp-red-tint);
  color: var(--qp-red); display: inline-flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.qp-feat .ic svg { width: 24px; height: 24px; display: block; }
.qp-feat b { display: block; color: var(--qp-ink); font-size: 14.5px; margin-bottom: 6px; }
.qp-feat p { color: var(--qp-gray); font-size: 13px; line-height: 1.6; }
.qp-featcol.r .qp-feat .ic { margin-left: auto; }

/* ---- full-bleed image ---- */
.qp-bleed img { width: 100%; height: auto; }

/* ---- dark science section ---- */
.qp-dark { background: radial-gradient(90% 130% at 30% 28%, rgba(255,255,255,.05), transparent 62%), var(--qp-ink); color: #C9C9C9; padding: 84px 0; }
.qp-dark .qp-kicker { color: var(--accent-band); }
.qp-dark .qp-kicker::before { background: var(--accent-band); }
.qp-dark h2 em { display: block; font-style: normal; color: var(--accent-band); }
.qp-dark .qp-wrap { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 60px;
  align-items: center; }
.qp-kicker { display: inline-flex; align-items: center; gap: 10px; color: var(--qp-red);
  font: 700 11px/1 var(--qp-font); letter-spacing: .16em; text-transform: uppercase; }
.qp-kicker::before { content: ''; width: 26px; height: 2px; background: var(--qp-red); }
.qp-kicker.c::after { content: ''; width: 26px; height: 2px; background: var(--qp-red); }
.qp-dark h2 { color: #fff; font-size: clamp(30px, 3.6vw, 44px); line-height: 1.15;
  font-weight: 800; margin-top: 18px; }
.qp-dark .note { margin-top: 18px; font-size: 14px; color: #8F8F8F; max-width: 40ch; }
.qp-statrows { display: flex; flex-direction: column; }
.qp-statrow { display: flex; gap: 22px; align-items: center; padding: 25px 0; border-top: 1px solid rgba(255,255,255,.09); }
.qp-statrows .qp-statrow:last-child { border-bottom: 1px solid rgba(255,255,255,.09); }
.qp-ring { flex: none; width: 74px; height: 74px; border-radius: 50%; position: relative;
  background: conic-gradient(var(--accent-band) calc(var(--p) * 1%), #333 0); }
.qp-ring::before { content: ''; position: absolute; inset: 6px; background: var(--qp-ink);
  border-radius: 50%; }
.qp-ring span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  color: #fff; font: 700 15px/1 var(--qp-font); }
.qp-statrow p { color: #B9B9B9; font-size: 14.5px; max-width: 46ch; }
.qp-statrow b { color: #fff; }
.qp-statrow .qp-source { display: block; width: fit-content; margin-top: 7px; color: var(--accent-band);
  font: 700 11px/1.35 var(--qp-font); text-decoration: underline; text-underline-offset: 3px; }
.qp-statrow .qp-source:hover { color: #fff; }

/* ---- sections ---- */
.qp-sec { padding: 72px 0; }
.qp-sec.soft { background: var(--qp-soft); }
.qp-sec-head { text-align: center; margin-bottom: 40px; }
.qp-sec-head h2 { font-size: clamp(26px, 3.2vw, 36px); font-weight: 800; margin-top: 14px; }
.qp-sec-head .sub { color: var(--qp-gray); font-size: 14px; margin: 12px auto 0; max-width: 52ch; }

/* ---- stat band (auto-fit: a 2-stat band fills cleanly — no empty third column, B3) ---- */
.qp-statband { background: var(--qp-soft); }
.qp-statband .in { max-width: 900px; margin: 0 auto; padding: 44px 24px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.qp-bigstat { text-align: center; border-left: 1px solid #DDD; }
.qp-bigstat:first-child { border-left: 0; }
.qp-bigstat .n { font: 800 clamp(34px, 4.6vw, 52px)/1 var(--qp-font); color: var(--qp-ink);
  font-variant-numeric: tabular-nums; }
.qp-bigstat .n sup { color: var(--qp-red); font-size: .55em; }
.qp-bigstat .l { color: var(--qp-light); font: 600 10.5px/1.5 var(--qp-font);
  letter-spacing: .16em; text-transform: uppercase; margin-top: 8px; }

/* ---- testimonials ---- */
.qp-quotes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px;
  max-width: 1080px; margin: 0 auto; }
.qp-quote { background: var(--qp-soft); border-radius: var(--qp-r-lg); overflow: hidden;
  text-align: center; }
.qp-quote .ph { position: relative; }
.qp-quote .ph img { width: 100%; aspect-ratio: 4 / 3.4; object-fit: cover; }
.qp-quote .qm { position: absolute; right: 12px; bottom: -14px; width: 34px; height: 34px;
  background: var(--qp-red); color: #fff; border-radius: 50%; display: flex; align-items: center;
  justify-content: center; font: 800 17px/1 Georgia, serif; }
.qp-quote .body { padding: 22px 20px 20px; }
.qp-stars { color: #F5B301; letter-spacing: 2px; font-size: 13px; }  /* fixed gold — the rating convention, like the black checkout button */
.qp-stars.red { color: var(--qp-red); }
.qp-quote p { color: var(--qp-gray); font-size: 13px; margin-top: 10px; }
.qp-quote .who { color: var(--qp-ink); font: 700 12.5px/1 var(--qp-font); margin-top: 12px; }
.qp-dots { display: flex; gap: 7px; justify-content: center; margin-top: 26px; }
.qp-dots i { width: 7px; height: 7px; border-radius: 50%; background: #D5D5D5; }
.qp-dots i.on { background: var(--qp-ink); }

/* ---- see it in action ---- */
.qp-action-card { max-width: 320px; margin: 0 auto; border-radius: var(--qp-r-lg); overflow: hidden; }
.qp-action-card img { aspect-ratio: 9 / 14; object-fit: cover; }
.qp-at { color: var(--qp-light); font: 600 11px/1 var(--qp-font); letter-spacing: .2em;
  text-transform: uppercase; text-align: center; }

/* ---- PDP layout ---- */
.qp-pdp { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 44px;
  padding: 34px 0 56px; align-items: start; }
.qp-gallery { position: sticky; top: 92px; min-width: 0; }   /* min-width:0 so the filmstrip scrolls, never widens the page */
.qp-gallery .main { background: var(--qp-soft); border-radius: var(--qp-r-lg); overflow: hidden; }
/* single-row filmstrip (C3): never wraps; scrolls sideways with subtle arrows + edge fades */
.qp-filmstrip { position: relative; margin-top: 12px; min-width: 0; }
.qp-thumbs { display: flex; flex-wrap: nowrap; gap: 10px; overflow-x: auto; scroll-behavior: smooth;
  scrollbar-width: none; -ms-overflow-style: none; padding: 2px; }
.qp-thumbs::-webkit-scrollbar { display: none; }
.qp-thumbs button { flex: none; width: 66px; height: 66px; border: 1px solid var(--qp-line);
  border-radius: var(--qp-r); background: #fff; padding: 0; overflow: hidden; }
.qp-thumbs button.on { border: 2px solid var(--qp-red); }   /* active = product accent */
.qp-thumbs img { width: 100%; height: 100%; aspect-ratio: 1; object-fit: cover; }
.qp-fs-arrow { position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--qp-line);
  background: #fff; color: var(--qp-ink); display: none; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(0,0,0,.10); cursor: pointer; }
.qp-fs-arrow svg { width: 16px; height: 16px; }
.qp-fs-arrow.prev { left: 2px; } .qp-fs-arrow.next { right: 2px; }   /* inside the strip — never widens the column */
.qp-fs-arrow.show { display: inline-flex; }
.qp-filmstrip::before, .qp-filmstrip::after { content: ''; position: absolute; top: 0; bottom: 0;
  width: 34px; pointer-events: none; z-index: 1; opacity: 0; transition: opacity 150ms ease-out; }
.qp-filmstrip::before { left: 0; background: linear-gradient(90deg, var(--qp-bg), transparent); }
.qp-filmstrip::after { right: 0; background: linear-gradient(270deg, var(--qp-bg), transparent); }
.qp-filmstrip.fade-l::before { opacity: 1; } .qp-filmstrip.fade-r::after { opacity: 1; }

.qp-buy h1 { font-size: 24px; line-height: 1.3; font-weight: 700; }
.qp-rating { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px;
  color: var(--qp-ink); }
.qp-new-rating { display: inline-flex; align-items: center; gap: 9px; width: fit-content; margin-top: 8px;
  color: var(--qp-light); font: 600 12px/1 var(--qp-font); text-decoration: none; }
.qp-new-badge { display: inline-flex; align-items: center; width: fit-content; border-radius: 999px;
  padding: 6px 10px; background: var(--qp-red); color: var(--accent-on);
  font: 700 10.5px/1 var(--qp-font); letter-spacing: .04em; text-transform: uppercase; }
.qp-chips { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 14px; }
.qp-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--accent-line);
  color: var(--qp-ink); border-radius: 999px; font: 600 11.5px/1 var(--qp-font);
  padding: 8px 13px; background: #fff; }
.qp-chip .i { color: var(--qp-red); font-weight: 800; display: inline-flex; }
.qp-chip .i svg { width: 14px; height: 14px; display: block; }

/* offer BANNER (not a button): light accent-tinted callout, subordinate to the ADD TO CART button (C5) */
.qp-offer { display: flex; align-items: center; gap: 9px; margin-top: 16px;
  background: var(--accent-tint); color: var(--qp-red); border-left: 3px solid var(--qp-red);
  border-radius: var(--qp-r); padding: 11px 13px;
  font: 700 12.5px/1.35 var(--qp-font); letter-spacing: .01em; }
.qp-offer svg { flex: none; width: 16px; height: 16px; }

/* LAUNCH OFFER banner — premium trust callout above the ATC (rebuilt 2026-07-06, docs-first).
   Accent-tinted card + solid accent badge pill + bold benefit + muted trust sub. Clearly NOT a
   button; subordinate to the ATC (C5). Two-word badge label is the sanctioned caps exception. */
.qp-offer.qp-launch { align-items: flex-start; gap: 12px; background: var(--accent-tint);
  border: 1px solid var(--accent-line); border-left: 3px solid var(--qp-red);
  border-radius: var(--qp-r-lg); padding: 13px 15px; color: var(--qp-ink); }
.qp-launch-badge { flex: none; align-self: flex-start; background: var(--qp-red); color: var(--accent-on);
  border-radius: 999px; font: 700 10.5px/1 var(--qp-font); letter-spacing: .04em; padding: 6px 10px;
  text-transform: uppercase; white-space: nowrap; }
.qp-launch-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.qp-launch-txt b { font: 700 14px/1.3 var(--qp-font); color: var(--qp-ink); letter-spacing: 0; }
.qp-launch-txt > span { font: 400 12.5px/1.45 var(--qp-font); color: var(--qp-light); text-transform: none; letter-spacing: 0; }

/* ===== ALSO-INCLUDED-FREE bonus row (v3 — to Ako's designer reference 2026-07-07). 3 product cards; each is
   a dashed-bordered figure holding the REAL product listing image, a premium BLACK+GOLD "$XX FREE" pill
   overlapping the top, and the bold product name below. Sits under the price, above express pay. ===== */
.qp-bonus { margin-top: 18px; }
.qp-bonus-lbl { display: flex; align-items: center; gap: 6px; margin-bottom: 21px;
  font: 700 11.5px/1 var(--qp-font); color: var(--qp-ink); letter-spacing: .02em; }
.qp-bonus-lbl svg { flex: none; width: 14px; height: 14px; color: var(--qp-red); }
.qp-bonus-row { display: flex; gap: 12px; align-items: flex-start; }
.qp-bonus-card { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 9px; }
.qp-bonus-figure { position: relative; width: 100%; background: #fff; border: 2px dashed #C9C4CE;
  border-radius: 14px; padding: 21px 9px 10px; }
/* uniform product-image box so all 3 cards match height (reference is even); contain = whole image, no crop */
.qp-bonus-figure .ph { width: 100%; aspect-ratio: 5 / 4; object-fit: contain; display: block; border-radius: 5px; }
/* the "$XX FREE" flag is now the premium GENERATED badge image (from Ako's reference via FAL), overlapping the
   card top — transparent PNG, so just position + size it. */
.qp-bonus-tag { position: absolute; top: -15px; left: 50%; transform: translateX(-50%); z-index: 2;
  width: 86%; max-width: 152px; height: auto; filter: drop-shadow(0 4px 8px rgba(0,0,0,.34)); }
.qp-bonus-nm { font: 700 12.5px/1.25 var(--qp-font); color: var(--qp-ink); text-align: center; }

/* EXPRESS PAY surface — OFFICIAL wallet buttons (Apple Pay JS SDK element + Google pay.js
   createButton) directly ABOVE the ATC. Sizing only: Apple via its documented CSS custom
   properties; the Google button is never restyled (brand guidelines) — its wrapper is sized and
   buttonSizeMode:'fill' fills it. 8px gaps satisfy Google's minimum clear space. */
.qp-xpay { display: flex; flex-direction: column; gap: 8px; margin: 16px 0 8px; }  /* sits directly above the ATC */
apple-pay-button { --apple-pay-button-width: 100%; --apple-pay-button-height: 48px;
  --apple-pay-button-border-radius: var(--qp-r); --apple-pay-button-box-sizing: border-box;
  width: 100%; display: block; }
.qp-gpay { width: 100%; height: 48px; }
.qp-gpay > * { width: 100%; }
.qp-xor { display: flex; align-items: center; gap: 12px; color: var(--qp-light); font-size: 11.5px;
  margin-top: 14px; text-transform: uppercase; letter-spacing: .08em; }
.qp-xor::before, .qp-xor::after { content: ''; flex: 1; height: 1px; background: var(--qp-line); }

.qp-opts { display: flex; flex-direction: column; gap: 10px; margin-top: 12px; }
.qp-opt { position: relative; display: flex; align-items: center; gap: 12px; background: #fff;
  border: 1px solid #DBDBDB; border-radius: var(--qp-r); padding: 15px 14px; }
.qp-opt.on { border: 2px solid var(--qp-ink); padding: 14px 13px; }
.qp-opt input { accent-color: var(--qp-ink); width: 17px; height: 17px; flex: none; }
.qp-opt .t { flex: 1; display: flex; align-items: center; gap: 9px; flex-wrap: wrap;
  font: 700 14px/1.3 var(--qp-font); color: var(--qp-ink); }
.qp-off { background: var(--qp-red); color: #fff; border-radius: 3px;
  font: 700 9.5px/1 var(--qp-font); letter-spacing: .05em; padding: 4px 6px; text-transform: uppercase; }
.qp-opt .pr { text-align: right; }
.qp-opt .pr b { display: block; font-size: 14.5px; color: var(--qp-ink); }
.qp-opt .pr s { color: var(--qp-light); font-size: 12px; }
.qp-ribbon { position: absolute; top: -9px; right: 10px; background: var(--qp-red); color: #fff;
  font: 700 9.5px/1 var(--qp-font); letter-spacing: .05em; text-transform: uppercase;
  border-radius: 3px; padding: 5px 8px; transform: rotate(3deg); }

.qp-member { display: flex; gap: 11px; align-items: flex-start; border: 1px dashed #C9C9C9;
  border-radius: var(--qp-r); padding: 13px 14px; margin-top: 12px; background: #fff; }
.qp-member input { accent-color: var(--qp-ink); width: 17px; height: 17px; flex: none; margin-top: 2px; }
.qp-member b { font-size: 13.5px; color: var(--qp-ink); display: block; }
.qp-member span { color: var(--qp-gray); font-size: 12px; line-height: 1.5; }

/* VALUE STACK — neutral surface + hairline (card-law: hugs content, no accent card tint);
   accent hue only on the FREE marker. Numbers tabular. Renders only when data-populated. */
.qp-vstack { margin-top: 16px; border: 1px solid var(--accent-line); border-radius: 10px; overflow: hidden; }
.qp-vstack .hd { background: var(--accent-tint); color: var(--qp-ink); padding: 10px 14px;
  font: 700 12.5px/1 var(--qp-font); letter-spacing: .02em; }
.qp-vstack ul { list-style: none; margin: 0; padding: 4px 14px; }
.qp-vstack li { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0;
  font-size: 14px; border-bottom: 1px solid var(--qp-soft); }
.qp-vstack li:last-child { border-bottom: 0; }
.qp-vstack .l { color: var(--qp-ink); }
.qp-vstack .v { color: var(--qp-light); font-variant-numeric: tabular-nums; white-space: nowrap; }
.qp-vstack .v.free { color: var(--qp-red); font-weight: 700; letter-spacing: .04em; }
.qp-vstack .tot { display: flex; justify-content: space-between; align-items: baseline; gap: 12px;
  padding: 11px 14px; border-top: 1px solid var(--accent-line); }
.qp-vstack .tv { color: var(--qp-light); font-size: 13px; }
.qp-vstack .tv s { color: var(--qp-light); }
.qp-vstack .pay { color: var(--qp-ink); font: 800 16px/1 var(--qp-font); }

/* HONEST-URGENCY SLOT — quiet single line; clock icon carries the accent hue. Off unless populated. */
.qp-urgency { display: flex; align-items: center; gap: 8px; margin-top: 14px; font-size: 13.5px; color: var(--qp-ink); }
.qp-urgency svg { width: 16px; height: 16px; flex: none; color: var(--qp-red); }

/* cart-drawer honest banner — accent-tinted strip carrying the REAL savings (store.js gates on >0).
   Off product pages --accent falls back to neutral, so this is never the old red. */
.qp-drbanner { display: flex; align-items: center; gap: 8px; margin: 0 0 12px;
  background: var(--accent-tint); color: var(--qp-red); border-radius: 8px; padding: 9px 12px; font-size: 13px; }
.qp-drbanner b { color: var(--qp-red); font-weight: 800; }
.qp-drbanner svg { flex: none; width: 15px; height: 15px; }

.qp-atc { margin-top: 14px; }
.qp-marks { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 12px;
  justify-content: center; }
.qp-mark { display: inline-flex; align-items: center; justify-content: center; background: #fff;
  border: 1px solid var(--qp-line); border-radius: 4px; min-width: 44px; height: 28px; padding: 0 8px; }
.qp-mark svg { height: 12px; width: auto; }
.qp-mark img { height: 13px; width: auto; display: block; }   /* official artwork, undistorted, clear space */
.qp-social { display: flex; gap: 8px; align-items: center; justify-content: center; margin-top: 14px;
  font: 700 13.5px/1.4 var(--qp-font); color: var(--qp-ink); }
.qp-social .ok { color: var(--qp-red); }
.qp-minireview { display: flex; gap: 12px; margin-top: 14px; background: var(--qp-soft);
  border-radius: var(--qp-r); padding: 14px; }
.qp-minireview .av { flex: none; width: 38px; height: 38px; border-radius: 50%;
  background: var(--qp-ink); color: #fff; display: flex; align-items: center; justify-content: center;
  font: 700 14px/1 var(--qp-font); }
.qp-minireview p { color: var(--qp-body); font-size: 13px; }
.qp-minireview .nm { color: var(--qp-gray); font-size: 12px; margin-top: 4px; }

.qp-faq { margin-top: 16px; display: flex; flex-direction: column; gap: 8px; }
.qp-faq details { background: #fff; border: 1px solid var(--qp-line); border-radius: var(--qp-r);
  padding: 0 15px; }
.qp-faq summary { list-style: none; display: flex; justify-content: space-between; align-items: center;
  gap: 12px; padding: 14px 0; font: 600 13.5px/1.4 var(--qp-font); color: var(--qp-ink); }
.qp-faq summary::-webkit-details-marker { display: none; }
.qp-faq summary::after { content: '+'; color: var(--qp-red); font: 500 19px/1 var(--qp-font); }
.qp-faq details[open] summary::after { content: '–'; }
.qp-faq .a { color: var(--qp-gray); font-size: 13px; padding: 0 0 14px; }

/* ---- sticky mini ATC (PDP) ---- */
body.qp-haspdp { padding-bottom: 72px; }   /* reserve space for the sticky ATC on ALL viewports */
.qp-sticky { position: fixed; left: 0; right: 0; bottom: 0; z-index: 55; background: #fff;
  border-top: 1px solid var(--qp-line); box-shadow: 0 -6px 18px rgba(0,0,0,.06);
  padding: 10px 16px; display: none; align-items: center; gap: 12px; }
.qp-sticky.show { display: flex; justify-content: center; }
.qp-sticky img { flex: none; width: 44px; height: 44px; object-fit: cover; border-radius: 4px;
  border: 1px solid var(--qp-line); }
.qp-sticky .inf { flex: 0 1 480px; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.qp-sticky .inf b { display: block; font-size: 13px; color: var(--qp-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qp-sticky .inf .pr { display: flex; align-items: baseline; gap: 7px; }
.qp-sticky .inf .pr .now { font: 800 13.5px/1 var(--qp-font); color: var(--qp-ink); }
.qp-sticky .inf .pr s { color: var(--qp-light); font-size: 11.5px; }
/* small clean discount tag — light accent tint, accent text, padded, never covers the name/price */
.qp-save { background: var(--accent-tint); color: var(--qp-red); border-radius: 4px;
  font: 700 10px/1 var(--qp-font); padding: 3px 6px; letter-spacing: .01em; white-space: nowrap; }
.qp-sticky .qp-btn { flex: none; min-height: 42px; padding: 10px 18px; }

/* ---- cart drawer ---- */
.qp-scrim { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 90; opacity: 0;
  pointer-events: none; transition: opacity 200ms ease-out; }
.qp-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(430px, 100vw); z-index: 95;
  background: #fff; display: flex; flex-direction: column; transform: translateX(102%);
  transition: transform 240ms ease-out; box-shadow: -12px 0 40px rgba(0,0,0,.18); }
body.qp-cart-open { overflow: hidden; }
body.qp-cart-open .qp-scrim { opacity: 1; pointer-events: auto; }
body.qp-cart-open .qp-drawer { transform: none; }
@media (prefers-reduced-motion: reduce) { .qp-drawer, .qp-scrim { transition: none; } }
.qp-dr-head { display: flex; justify-content: space-between; align-items: center;
  padding: 18px 20px 12px; }
.qp-dr-head h3 { font-size: 19px; font-weight: 800; }
.qp-dr-head button { background: none; border: 0; padding: 4px; }
.qp-dr-head svg { width: 20px; height: 20px; }
.qp-reserve { background: #000; color: #fff; text-align: center; font: 600 12.5px/1 var(--qp-font);
  padding: 11px 10px; }
.qp-reserve b { font-variant-numeric: tabular-nums; }
.qp-dr-body { flex: 1; overflow-y: auto; padding: 16px 20px; }
.qp-line { display: flex; gap: 12px; padding: 10px 0 16px; }
.qp-line img { width: 62px; height: 62px; object-fit: cover; border-radius: 4px;
  border: 1px solid var(--qp-line); flex: none; }
.qp-line .b { flex: 1; min-width: 0; }
.qp-line .b b { display: block; font-size: 13.5px; color: var(--qp-ink); line-height: 1.35; }
.qp-line .b .v { color: var(--qp-gray); font-size: 12px; }
.qp-line .rm { background: none; border: 0; color: var(--qp-gray); padding: 2px; align-self: flex-start; }
.qp-line .rm svg { width: 15px; height: 15px; }
.qp-qty { display: inline-flex; align-items: center; gap: 10px; margin-top: 8px; }
.qp-qty button { width: 24px; height: 24px; border-radius: 4px; border: 1px solid #D5D5D5;
  background: #fff; font: 600 14px/1 var(--qp-font); color: var(--qp-ink);
  display: inline-flex; align-items: center; justify-content: center; }
.qp-qty span { font: 600 13px/1 var(--qp-font); min-width: 14px; text-align: center; }
.qp-line .pr { text-align: right; font: 700 13.5px/1.4 var(--qp-font); color: var(--qp-ink); }
.qp-line .pr s { display: inline-block; color: var(--qp-light); font-weight: 500; margin-right: 5px; }
.qp-line .pr .sv { display: block; color: var(--qp-red); font: 600 11px/1.3 var(--qp-font); }
.qp-upshead { font: 800 12px/1 var(--qp-font); letter-spacing: .08em; text-transform: uppercase;
  color: var(--qp-ink); margin: 14px 0 4px; }
.qp-upssub { color: var(--qp-gray); font-size: 12px; margin-bottom: 10px; }
.qp-ups { display: flex; gap: 11px; align-items: flex-start; padding: 11px 0;
  border-top: 1px solid #F0F0F0; }
.qp-ups img { width: 40px; height: 40px; border-radius: var(--qp-r); flex: none; }
.qp-ups .b { flex: 1; min-width: 0; }
.qp-ups .b .r1 { display: flex; justify-content: space-between; gap: 10px; }
.qp-ups .b b { font-size: 13px; color: var(--qp-ink); }
.qp-ups .b .pr { font: 700 13px/1 var(--qp-font); color: var(--qp-ink); white-space: nowrap; }
.qp-ups .b p { color: var(--qp-gray); font-size: 11.5px; line-height: 1.5; margin-top: 3px; }
.qp-toggle { flex: none; width: 40px; height: 24px; border-radius: 999px; background: #D9D9D9;
  border: 0; position: relative; margin-top: 6px; }
.qp-toggle::after { content: ''; position: absolute; top: 2.5px; left: 3px; width: 19px; height: 19px;
  border-radius: 50%; background: #fff; transition: left 150ms ease-out; }
.qp-toggle.on { background: var(--qp-ink); }
.qp-toggle.on::after { left: 18px; }
.qp-dr-foot { border-top: 1px solid var(--qp-line); padding: 14px 20px 18px; }
.qp-totrow { display: flex; justify-content: space-between; font: 600 14px/1.7 var(--qp-font); }
.qp-totrow.savings span:last-child { color: var(--qp-red); }
.qp-totrow.sub { font-size: 17px; font-weight: 800; color: var(--qp-ink); }
.qp-totrow .rec { color: var(--qp-gray); font-size: 12px; font-weight: 500; }
.qp-dr-foot .qp-btn { margin-top: 10px; }
.qp-dr-foot .qp-marks { margin-top: 12px; }
.qp-empty { color: var(--qp-gray); text-align: center; padding: 40px 10px; }

/* ---- footer ---- */
.qp-footer { background: var(--qp-ink); color: #B9B9B9; margin-top: 80px;
  padding: 46px 24px 30px; text-align: center; }
.qp-footer h4 { color: #fff; font-size: 15px; margin-bottom: 18px; }
.qp-footer .links { display: flex; gap: 10px 26px; justify-content: center; flex-wrap: wrap; }
.qp-footer a { color: #C9C9C9; text-decoration: none; font-size: 13px; }
.qp-footer a:hover { color: #fff; }
.qp-footer .qp-marks { justify-content: center; margin-top: 26px; }
.qp-footer .cp { color: #7E7E7E; font-size: 12px; margin-top: 18px; }

/* ---- responsive ---- */
@media (max-width: 1023px) {
  .qp-featgrid { grid-template-columns: 1fr; text-align: center; }
  .qp-featcol.l, .qp-featcol.r { align-items: center; text-align: center; }
  .qp-featcol.r .qp-feat .ic { margin: 0 auto 12px; }
  .qp-feat .ic { margin: 0 auto 12px; }
  .qp-dark .qp-wrap { grid-template-columns: 1fr; gap: 40px; }
  .qp-pdp { grid-template-columns: 1fr; }
  .qp-gallery { position: static; }
  .qp-quotes { grid-template-columns: 1fr; max-width: 440px; }
}
/* ---- buy-box price line (single offer) ---- */
.qp-priceline { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.qp-priceline .now { font: 800 26px/1 var(--qp-font); color: var(--qp-ink); }
.qp-priceline .was { color: var(--qp-light); font-size: 16px; }
/* inline "Save X%" — plain accent text, NOT a badge/box (Ako 2026-07-06) */
.qp-priceline .qp-savepct { color: var(--qp-red); font: 700 14px/1 var(--qp-font); }

/* (3) benefit checklist */
.qp-benefits { padding: 34px 0; }
/* left-aligned to the section edge — no oversized left gap (C2) */
.qp-checklist { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 40px; max-width: 820px; margin: 0; }
.qp-checklist li { display: flex; gap: 11px; align-items: flex-start; color: var(--qp-body);
  font: 500 14.5px/1.5 var(--qp-font); }
.qp-checklist .ck { flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--accent-tint);
  color: var(--qp-red); display: inline-flex; align-items: center; justify-content: center;
  font: 800 12px/1 var(--qp-font); margin-top: 1px; }

/* (8) UGC grid */
.qp-ugcgrid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; max-width: 1000px; margin: 0 auto; }
.qp-ugcgrid .qp-action-card { max-width: none; }
.qp-ugcgrid .qp-action-card img { aspect-ratio: 4 / 5; }

/* (9) reviews block */
.qp-reviews { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 40px; align-items: start; }
.qp-rsummary { text-align: center; background: #fff; border: 1px solid var(--qp-line);
  border-radius: var(--qp-r-lg); padding: 26px 22px; position: sticky; top: 92px; }
.qp-rsummary .big.num { font: 800 46px/1 var(--qp-font); color: var(--qp-ink); }  /* number only — must not hit .qp-stars.big */
.qp-stars.big { font-size: 18px; display: block; margin: 8px 0 6px; }
.qp-rsummary .cnt { color: var(--qp-gray); font-size: 12.5px; }
.qp-bars { display: flex; flex-direction: column; gap: 7px; margin: 18px 0 20px; text-align: left; }
.qp-bar { display: flex; align-items: center; gap: 10px; font: 600 11.5px/1 var(--qp-font); color: var(--qp-gray); }
.qp-bar .s { width: 26px; }
.qp-bar .track { flex: 1; height: 7px; background: var(--qp-soft); border-radius: 999px; overflow: hidden; }
.qp-bar .fill { display: block; height: 100%; background: var(--qp-red); border-radius: 999px; }
.qp-bar .pc { width: 34px; text-align: right; }
.qp-writereview { width: 100%; }
.qp-rlist { display: flex; flex-direction: column; gap: 4px; }
.qp-review-empty { width: min(100%, 520px); margin: 0 auto; padding: 28px 24px; text-align: center;
  background: #fff; border: 1px solid var(--qp-line); border-radius: var(--qp-r-lg); }
.qp-review-empty .qp-stars-empty { color: var(--qp-star); font-size: 22px; letter-spacing: 3px; }
.qp-review-empty h3 { margin: 10px 0 6px; font: 700 18px/1.3 var(--qp-font); color: var(--qp-ink); }
.qp-review-empty p { margin: 0 auto 18px; max-width: 410px; color: var(--qp-body); font-size: 13.5px; }
.qp-review-empty .qp-writereview { width: auto; min-width: 160px; }
.qp-reviews-empty .qp-rsummary { display: flex; flex-direction: column; align-items: flex-start; }
.qp-reviews-empty .qp-rsummary .qp-stars-empty { margin-top: 18px; }
.qp-reviews-empty .qp-rsummary h3 { margin: 7px 0 5px; }
.qp-reviews-empty .qp-rsummary p { margin: 0 0 18px; color: var(--qp-light); font-size: 13px; }
.qp-reviews-empty .qp-rsummary .qp-writereview { width: 100%; }
.qp-first-review { min-height: 170px; display: flex; flex-direction: column; justify-content: center; }
.qp-first-review h3 { margin: 0 0 8px; font: 700 18px/1.3 var(--qp-font); color: var(--qp-ink); }
.qp-first-review p { margin: 0; max-width: 430px; color: var(--qp-body); }
.qp-ritem { padding: 18px 0; border-bottom: 1px solid var(--qp-line); }
.qp-ritem .hd { display: flex; align-items: center; gap: 11px; }
.qp-ritem .av { flex: none; width: 38px; height: 38px; border-radius: 50%; background: var(--qp-ink);
  color: #fff; display: flex; align-items: center; justify-content: center; font: 700 14px/1 var(--qp-font); }
.qp-ritem .nm { font: 700 13.5px/1.3 var(--qp-font); color: var(--qp-ink); }
.qp-ritem .dt { margin-left: auto; color: var(--qp-light); font-size: 12px; }
.qp-ritem p { color: var(--qp-body); font-size: 13.5px; margin-top: 10px; }
.qp-ritem .rphoto { margin-top: 10px; width: 84px; height: 84px; object-fit: cover; border-radius: var(--qp-r);
  border: 1px solid var(--qp-line); }

/* (10) FAQ wide */
.qp-faqwrap { max-width: 760px; }
.qp-faq.wide details { background: #fff; }

/* (11) money-back guarantee */
.qp-guarantee { max-width: 760px; margin: 0 auto; display: flex; gap: 20px; align-items: center;
  background: #fff; border: 1px solid var(--qp-line); border-radius: var(--qp-r-lg); padding: 26px 28px; }
.qp-guarantee .ic { flex: none; width: 54px; height: 54px; border-radius: 50%; background: var(--accent-tint);
  color: var(--qp-red); display: inline-flex; align-items: center; justify-content: center; }
.qp-guarantee .ic svg { width: 28px; height: 28px; }
.qp-guarantee h3 { font-size: 17px; font-weight: 800; }
.qp-guarantee p { color: var(--qp-gray); font-size: 13.5px; margin-top: 5px; }

/* (12) final CTA band */
.qp-cta { background: var(--qp-ink); color: #fff; text-align: center; padding: 66px 24px; }
.qp-cta h2 { color: #fff; font-size: clamp(26px, 3.4vw, 38px); font-weight: 800; }
.qp-cta p { color: #C9C9C9; font-size: 14.5px; margin: 12px 0 24px; }
.qp-cta p s { color: #8F8F8F; }
.qp-cta .qp-btn { padding: 16px 40px; }

/* ---- shop/home product cards (Fortrell shelf — hug content, small radii) ---- */
.qp-shopgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 22px; max-width: 1080px; margin: 0 auto; }
.qp-pcard { display: flex; flex-direction: column; gap: 6px; text-decoration: none;
  background: #fff; border: 1px solid var(--qp-line); border-radius: var(--qp-r-lg);
  padding: 12px; color: var(--qp-ink); }
.qp-pcard:hover { border-color: var(--qp-ink); }
.qp-pcard .ph { position: relative; border-radius: var(--qp-r); overflow: hidden;
  background: var(--qp-soft); }
.qp-pcard .ph img { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.qp-pcard .ph .qp-off { position: absolute; top: 8px; left: 8px; }
.qp-pcard b { font-size: 13.5px; line-height: 1.35; margin-top: 4px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.qp-pcard .rt { display: flex; align-items: center; gap: 6px; }
.qp-pcard .rt .n { color: var(--qp-gray); font-size: 12px; }
.qp-pcard .pr { display: flex; align-items: baseline; gap: 8px; }
.qp-pcard .pr .now { font: 800 15px/1 var(--qp-font); }
.qp-pcard .pr s { color: var(--qp-light); font-size: 12.5px; }

/* ---- accent foreground (AA-safe text on every accent-filled element) ---- */
.qp-btn-red, .qp-off, .qp-ribbon, .qp-cartcount,
.qp-quote .qm { color: var(--accent-on); }
/* primary Add-to-Cart = the loudest element: strong accent shade, AA text */
/* ONE action colour end-to-end (Ako 2026-07-06): the buy action is BLACK on every surface
   (product ATC, cart drawer, checkout). The per-product --accent stays the brand hue on
   badges/eyebrows/chips/✓/save-pill/links — it is NOT used on the action button anymore. */
/* primary BUY colour = #312b36 (Ako 2026-07-06), not pure black; white text clears WCAG AA (>14:1).
   Applies to the product ATC + the cart Check out button; wallet buttons keep their brand black. */
.qp-btn-atc { background: #312b36; color: #fff; }
.qp-btn-atc:hover { background: #26212a; }
#qp-checkout { background: #312b36; color: #fff; }
#qp-checkout:hover { background: #26212a; }

@media (max-width: 720px) {
  .qp-links { display: none; }
  .qp-nav { grid-template-columns: 1fr auto 1fr; padding: 10px 16px; }
  .qp-logo { justify-self: start; }
  .qp-logo img { height: 44px; }
  .qp-statband .in { grid-template-columns: repeat(3, 1fr); padding: 30px 12px; }
  .qp-bigstat .l { letter-spacing: .08em; font-size: 9px; }
  .qp-hero { padding: 54px 20px 60px; }
  .qp-sec { padding: 54px 0; }
  body.qp-haspdp { padding-bottom: 70px; }
  .qp-checklist { grid-template-columns: 1fr; gap: 12px; }
  .qp-checklist li { align-items: flex-start; font-size: 14px; }
  .qp-ugcgrid { grid-template-columns: repeat(2, 1fr); }
  /* B10 mobile pass — badges/chips sized + placed for one hand, stat band never cramped */
  .qp-chips { gap: 6px; margin-top: 12px; }
  .qp-chip { font-size: 10.5px; padding: 7px 10px; gap: 5px; }
  .qp-chip .i svg { width: 12px; height: 12px; }
  .qp-priceline { margin-top: 12px; }
  .qp-priceline .now { font-size: 23px; }
  /* phones: 3 product cards fit one compact row (equal flex + min-width:0 so it never widens past screen);
     tighter figure padding + smaller pill/name keep the ATC above the fold. */
  .qp-bonus-row { gap: 8px; }
  .qp-bonus-figure { padding: 12px 6px 8px; border-radius: 11px; }
  .qp-bonus-nm { font-size: 11px; line-height: 1.2; }
  .qp-bonus-tag { top: -12px; width: 92%; }
  .qp-statband .in { grid-template-columns: repeat(auto-fit, minmax(90px, 1fr));
    padding: 26px 14px; gap: 6px; }
  .qp-bigstat { border-left: 0; padding: 0 4px; }
  .qp-bigstat .n { font-size: clamp(24px, 8vw, 34px); }
  .qp-bigstat .l { letter-spacing: .07em; font-size: 8.5px; margin-top: 5px; }
  .qp-benefits { padding: 26px 0; }
  .qp-shopgrid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .qp-pcard { padding: 9px; }
  .qp-buy h1 { font-size: 21px; }
  .qp-marks { gap: 5px; }
  .qp-mark { min-width: 40px; height: 26px; padding: 0 6px; }
  .qp-mark img { height: 11px; }
  /* mobile sticky: give the product name more room before it cleanly truncates */
  .qp-sticky { padding: 8px 12px; gap: 9px; }
  .qp-sticky.show { justify-content: flex-start; }
  .qp-sticky img { width: 38px; height: 38px; }
  .qp-sticky .inf { flex: 1; }
  .qp-sticky .inf b { font-size: 12px; }
  .qp-sticky .qp-btn { padding: 9px 13px; font-size: 11px; letter-spacing: .05em; }
}
@media (max-width: 1023px) {
  .qp-reviews { grid-template-columns: 1fr; }
  .qp-rsummary { position: static; }
}

/* ---- shared hamburger + slide-out menu (all pages, all widths) ---- */
.qp-navleft { justify-self: start; display: flex; align-items: center; }
.qp-burger { background: none; border: 0; color: var(--qp-ink); padding: 6px; cursor: pointer;
  display: none; align-items: center; }   /* desktop: no menu button (Ako) — mobile media query shows it */
@media (max-width: 1023px) { .qp-burger { display: inline-flex; } }
.qp-burger svg { width: 24px; height: 24px; }
.qp-menu-scrim { position: fixed; inset: 0; background: rgba(0,0,0,.5); opacity: 0; visibility: hidden;
  transition: opacity .2s ease-out; z-index: 80; }
body.qp-menu-open .qp-menu-scrim { opacity: 1; visibility: visible; }
.qp-menu { position: fixed; top: 0; left: 0; height: 100dvh; width: min(360px, 84vw); background: #121212;
  color: #fff; transform: translateX(-100%); transition: transform .24s ease-out; z-index: 90;
  display: flex; flex-direction: column; box-shadow: 6px 0 30px rgba(0,0,0,.3); }
body.qp-menu-open .qp-menu { transform: translateX(0); }
.qp-menu-head { display: flex; align-items: center; justify-content: space-between;
  padding: 22px 24px 18px; border-bottom: 1px solid rgba(255,255,255,.12); }
.qp-menu-title { font: 700 20px/1 var(--qp-font); color: #fff; }
#qp-menu-close { background: none; border: 0; color: #fff; padding: 4px; cursor: pointer; display: inline-flex; }
#qp-menu-close svg { width: 24px; height: 24px; }
.qp-menu-links { display: flex; flex-direction: column; padding: 6px 0 0; }
.qp-menu-links a { color: #fff; text-decoration: none; font: 400 18px/1 var(--qp-font);
  padding: 17px 24px; border-bottom: 1px solid rgba(255,255,255,.07); transition: background .1s ease-out; }
.qp-menu-links a:hover { background: rgba(255,255,255,.06); }
.qp-menu-sep { height: 1px; background: rgba(255,255,255,.12); margin: 6px 0; }
.qp-menu-login { display: flex; align-items: center; gap: 11px; color: #fff; text-decoration: none;
  font: 600 16px/1 var(--qp-font); padding: 18px 24px; }
.qp-menu-login svg { width: 20px; height: 20px; }
.qp-menu-login:hover { background: rgba(255,255,255,.06); }

/* ============================ THE VAULT (member area) — NEUTRAL (2026-07-07 v2) ============================
   Repointed to the storefront's neutral palette (near-black #121212 / grey / white — the same tokens home +
   checkout use). NO navy, NO gold. Scoped to body.vault so the storefront is untouched. Montserrat --qp-font. */
body.vault {
  --v-navy: #121212; --v-navy-2: #1E1E1E; --v-navy-line: rgba(255,255,255,.13);
  --v-on-navy: #F4F4F4; --v-on-navy-muted: #B4B4B4;
  --v-gold: #565656; --v-gold-bright: #FFFFFF; --v-gold-tint: #F3F3F3; --v-gold-line: #E4E4E4;
  --v-page: #F7F7F6; --v-line: #E4E4E4; --v-ink: #1A1A1A; --v-muted: #5E5E5E;
  background: var(--v-page);
}

/* ---- Vault login ---- */
.v-login { display: grid; grid-template-columns: 1.05fr .95fr; min-height: 552px; max-width: 1120px;
  margin: 44px auto 76px; border-radius: 18px; overflow: hidden; box-shadow: 0 12px 44px rgba(0,0,0,.12);
  border: 1px solid var(--v-line); }
.v-login-hero { background: radial-gradient(130% 130% at 12% 8%, #1F1F1F, #121212 62%);
  color: var(--v-on-navy); padding: 56px 52px; display: flex; flex-direction: column; justify-content: center; }
.v-login-hero .eyebrow { display: inline-flex; align-items: center; gap: 9px; color: var(--v-on-navy);
  font: 700 12px/1 var(--qp-font); letter-spacing: .16em; text-transform: uppercase; margin-bottom: 24px; }
.v-login-hero .eyebrow svg { width: 15px; height: 15px; }
.v-login-hero h1 { color: #fff; font: 800 clamp(34px,4vw,50px)/1.04 var(--qp-font);
  letter-spacing: -.02em; margin: 0; }
.v-login-hero .lead { color: var(--v-on-navy-muted); font-size: 16px; line-height: 1.6;
  max-width: 40ch; margin: 16px 0 32px; }
.v-benefits { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; }
.v-benefits li { display: flex; align-items: center; gap: 12px; color: var(--v-on-navy); font-size: 15px; }
.v-benefits svg { flex: none; width: 20px; height: 20px; color: #fff; }
.v-login-form { background: #fff; padding: 56px 52px; display: flex; flex-direction: column; justify-content: center; }
.v-login-form h2 { font: 800 27px/1.1 var(--qp-font); color: var(--v-ink); margin: 0 0 7px; letter-spacing: -.01em; }
.v-login-form .lead { color: var(--v-muted); margin: 0 0 26px; font-size: 15px; }
.v-field { display: block; margin-bottom: 18px; }
.v-field span { display: block; font-size: 13px; font-weight: 600; color: var(--v-ink); margin-bottom: 8px; }
.v-field input { width: 100%; height: 52px; border: 1px solid var(--v-line); border-radius: 10px; padding: 0 15px;
  font: 400 15px/1 var(--qp-font); color: var(--v-ink); background: #fff; }
.v-field input:focus { outline: none; border-color: var(--v-ink); box-shadow: 0 0 0 3px rgba(0,0,0,.10); }
.v-btn { display: inline-flex; align-items: center; justify-content: center; width: 100%; height: 54px;
  background: var(--v-navy); color: #fff; border: 0; border-radius: 10px; font: 700 15.5px/1 var(--qp-font);
  cursor: pointer; transition: background .12s ease-out; }
.v-btn:hover { background: #000; }
.v-btn .k { margin-left: 9px; color: #fff; }
.v-msg { margin-top: 18px; font-size: 14px; color: #4A4A4A; background: var(--v-gold-tint);
  border: 1px solid var(--v-gold-line); border-radius: 10px; padding: 12px 14px; }
.v-login-alt { margin-top: 24px; font-size: 14px; color: var(--v-muted); }
.v-login-alt a { color: var(--v-ink); font-weight: 600; text-decoration: none; }
.v-login-alt a:hover { text-decoration: underline; }

/* ---- Vault member area ---- */
.v-home { max-width: 1120px; margin: 36px auto 84px; padding: 0 24px; }
.v-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.v-welcome { display: flex; align-items: center; gap: 14px; }
.v-welcome h1 { font: 800 30px/1 var(--qp-font); color: var(--v-ink); margin: 0; letter-spacing: -.02em; }
.v-badge { display: inline-flex; align-items: center; gap: 7px; background: var(--v-navy); color: #fff;
  font: 700 11px/1 var(--qp-font); letter-spacing: .12em; text-transform: uppercase; padding: 7px 12px; border-radius: 999px; }
.v-badge svg { width: 13px; height: 13px; }
.v-logout { background: none; border: 1px solid var(--v-line); color: var(--v-muted); border-radius: 9px;
  padding: 9px 15px; font: 600 14px/1 var(--qp-font); cursor: pointer; }
.v-logout:hover { border-color: #C9C4BA; color: var(--v-ink); }

/* plan card (near-black hero) */
.v-plan { margin-top: 24px; background: radial-gradient(140% 140% at 10% 0%, #1F1F1F, #121212 64%);
  border-radius: 16px; padding: 28px 30px; color: var(--v-on-navy); display: grid;
  grid-template-columns: 1fr auto; gap: 20px 22px; align-items: center; box-shadow: 0 10px 34px rgba(0,0,0,.20); }
.v-plan .pl-name { display: flex; align-items: center; gap: 13px; }
.v-plan .pl-name strong { color: #fff; font: 700 18px/1 var(--qp-font); }
.v-active { display: inline-flex; align-items: center; gap: 7px; color: #fff;
  font: 700 12px/1 var(--qp-font); letter-spacing: .08em; text-transform: uppercase; }
.v-active .dot { width: 8px; height: 8px; border-radius: 50%; background: #fff;
  box-shadow: 0 0 0 4px rgba(255,255,255,.16); }
.v-plan .pl-price { margin-top: 15px; font: 800 34px/1 var(--qp-font); color: #fff; }
.v-plan .pl-price span { font-size: 15px; font-weight: 500; color: var(--v-on-navy-muted); }
.v-plan .pl-next { margin-top: 9px; color: var(--v-on-navy-muted); font-size: 14px; }
.v-plan .pl-actions { text-align: right; }
.v-cancel { background: transparent; color: var(--v-on-navy); border: 1px solid var(--v-navy-line);
  border-radius: 10px; padding: 12px 18px; font: 600 14px/1 var(--qp-font); cursor: pointer; transition: all .12s ease-out; }
.v-cancel:hover { border-color: rgba(255,255,255,.34); background: rgba(255,255,255,.05); }
.v-external-manage { display: inline-flex; align-items: center; justify-content: center; min-height: 44px;
  text-decoration: none; }
.v-plan-foot { grid-column: 1/-1; border-top: 1px solid var(--v-navy-line); margin-top: 4px; padding-top: 16px;
  color: var(--v-on-navy-muted); font-size: 13px; }

/* cancel-request panel (UI only) */
.v-cancelpanel { margin-top: 16px; background: #fff; border: 1px solid var(--v-line); border-radius: 14px;
  padding: 22px 24px; box-shadow: 0 2px 8px rgba(0,0,0,.05); }
.v-cancelpanel h3 { font: 800 18px/1.25 var(--qp-font); color: var(--v-ink); margin: 0 0 7px; }
.v-cancelpanel p { color: var(--v-muted); font-size: 14.5px; line-height: 1.55; margin: 0 0 16px; max-width: 62ch; }
.v-cancelpanel .row { display: flex; gap: 12px; flex-wrap: wrap; }
.v-req { background: var(--v-navy); color: #fff; border: 0; border-radius: 10px; padding: 12px 20px;
  font: 700 14px/1 var(--qp-font); cursor: pointer; }
.v-req:hover { background: #000; }
.v-keep { background: #fff; color: var(--v-ink); border: 1px solid var(--v-line); border-radius: 10px;
  padding: 12px 20px; font: 600 14px/1 var(--qp-font); cursor: pointer; }
.v-keep:hover { border-color: #C9C4BA; }
.v-done { margin-top: 16px; background: var(--v-gold-tint); border: 1px solid var(--v-gold-line); border-radius: 12px;
  padding: 16px 18px; color: #444; font-size: 14.5px; line-height: 1.55; display: flex; gap: 11px; align-items: flex-start; }
.v-done svg { flex: none; width: 20px; height: 20px; color: #333; margin-top: 1px; }
.v-done strong { color: #1A1A1A; }

/* library */
.v-lib-head { margin: 46px 0 6px; display: flex; align-items: baseline; justify-content: space-between; }
.v-lib-head h2 { font: 800 22px/1 var(--qp-font); color: var(--v-ink); margin: 0; letter-spacing: -.01em; }
.v-lib-head .cnt { color: var(--v-muted); font-size: 14px; }
.v-lib-sub { color: var(--v-muted); font-size: 14.5px; margin: 6px 0 22px; max-width: 66ch; }
.v-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.v-card { background: #fff; border: 1px solid var(--v-line); border-radius: 14px; overflow: hidden;
  display: flex; flex-direction: column; transition: box-shadow .14s ease-out, transform .14s ease-out; }
.v-card:hover { box-shadow: 0 12px 28px rgba(0,0,0,.11); transform: translateY(-2px); }
.v-card .thumb { aspect-ratio: 4/3; background: var(--v-page); overflow: hidden; }
.v-card .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.v-card .body { padding: 16px 16px 18px; display: flex; flex-direction: column; gap: 11px; flex: 1; }
.v-kind { display: inline-flex; align-self: flex-start; background: var(--v-gold-tint); color: var(--v-gold);
  font: 700 10.5px/1 var(--qp-font); letter-spacing: .06em; text-transform: uppercase; padding: 5px 9px; border-radius: 6px; }
.v-card .nm { font: 700 15px/1.34 var(--qp-font); color: var(--v-ink); flex: 1; }
.v-price { display: flex; align-items: baseline; gap: 9px; }
.v-price .mem { font: 800 21px/1 var(--qp-font); color: var(--v-ink); }
.v-price .was { font-size: 13.5px; color: var(--v-muted); text-decoration: line-through; }
.v-price .lbl { font-size: 10.5px; color: var(--v-gold); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.v-dl { display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: var(--v-navy);
  color: #fff; border-radius: 9px; padding: 12px; font: 700 13.5px/1 var(--qp-font); text-decoration: none;
  transition: background .12s ease-out; }
.v-dl:hover { background: #000; }
.v-dl svg { width: 15px; height: 15px; color: #fff; }

@media (max-width: 900px) {
  .v-login { grid-template-columns: 1fr; margin: 20px 16px 48px; min-height: 0; }
  .v-login-hero { padding: 40px 28px; }
  .v-login-form { padding: 36px 28px; }
  .v-grid { grid-template-columns: repeat(2, 1fr); gap: 14px; }
  .v-plan { grid-template-columns: 1fr; }
  .v-plan .pl-actions { text-align: left; }
}
@media (max-width: 560px) { .v-grid { grid-template-columns: 1fr; } }

/* ============ THANK-YOU / ORDER CONFIRMATION (ty-*) — Baymard-pattern order confirmation
   composed from the storefront kit: neutral white cards on hairline borders, sentence case,
   #312b36 Download as the one filled action, quiet ghost links everywhere else. ============ */
.ty-wrap { max-width: 1080px; margin: 0 auto; padding: 34px 20px 90px; }
.ty-head { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 26px; }
.ty-tick { color: #1B7F4D; flex: none; margin-top: 4px; }
.ty-tick svg { width: 34px; height: 34px; }
.ty-eyebrow { color: var(--qp-light); font: 600 12px/1 var(--qp-font); letter-spacing: .08em;
  text-transform: uppercase; margin: 0 0 6px; }
.ty-head h1 { font-size: clamp(22px, 3vw, 30px); margin: 0 0 6px; }
.ty-sub { color: var(--qp-gray); margin: 0; }
.ty-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 18px; align-items: start; }
.ty-card { background: #fff; border: 1px solid var(--qp-line); border-radius: var(--qp-r-lg);
  padding: 22px; }
.ty-card + .ty-card { margin-top: 18px; }
.ty-card h2 { font-size: 16.5px; margin: 0 0 6px; }
.ty-cardsub { color: var(--qp-light); font-size: 13px; margin: 0 0 14px; }
.ty-item { display: flex; align-items: center; gap: 14px; padding: 13px 0;
  border-top: 1px solid var(--qp-line); }
.ty-item .th { flex: none; width: 52px; height: 52px; border-radius: var(--qp-r);
  border: 1px solid var(--qp-line); overflow: hidden; background: #F3F3F3; }
.ty-item .th img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ty-item .b { flex: 1 1 auto; min-width: 0; }
.ty-item .b .k { display: block; color: var(--qp-light); font: 600 10.5px/1 var(--qp-font);
  letter-spacing: .06em; text-transform: uppercase; margin-bottom: 4px; }
.ty-item .b b { font-size: 14px; }
.ty-item .act { flex: none; display: flex; flex-direction: column; gap: 6px; align-items: flex-end; }
.ty-dl.qp-btn { padding: 11px 22px; font-size: 12.5px; }
.ty-prep { color: var(--qp-light); font-size: 12px; max-width: 200px; text-align: right; }
.ty-note { color: var(--qp-light); font-size: 12px; margin: 12px 0 0; }
.ty-vip { margin-top: 18px; }
.ty-vipline { margin: 0 0 10px; font-size: 14px; }
.ty-terms { color: var(--qp-gray); font-size: 13px; line-height: 1.6; margin: 0 0 14px; }
.ty-vaultbtn.qp-btn { padding: 12px 22px; font-size: 12.5px; }
.ty-row { display: flex; justify-content: space-between; gap: 12px; font-size: 13.5px;
  padding: 8px 0; border-top: 1px solid var(--qp-line); }
.ty-row:first-of-type { border-top: 0; }
.ty-row i { font-style: normal; color: var(--qp-light); }
.ty-total { font-weight: 700; border-top: 1px solid var(--qp-ink); margin-top: 4px; }
.ty-help { color: var(--qp-light); font-size: 12.5px; line-height: 1.6; margin: 14px 2px; }
.ty-help a, .ty-cardsub a { color: var(--qp-ink); }
@media (max-width: 860px) {
  .ty-grid { grid-template-columns: 1fr; }
  .ty-item { flex-wrap: wrap; }
  .ty-item .act { width: 100%; align-items: stretch; }
  .ty-prep { max-width: none; text-align: left; }
}
