/* ============================================================
   ROEGAINS: Engineered Artifact design system
   Dark + antique gold. Industrial-athletic. Honest grit.
   ============================================================ */

/* Fonts are loaded via <link> in each page <head> (preconnect + display=swap). */

/* ============================================================
   TOKENS
   ============================================================ */
:root {
  /* surfaces */
  --void: oklch(0.145 0.006 66);
  --bg: oklch(0.175 0.008 62);
  --surface: oklch(0.215 0.010 60);
  --surface-2: oklch(0.255 0.012 58);
  --line: oklch(0.34 0.012 60);
  --line-2: oklch(0.44 0.02 72);

  /* ink */
  --ink: oklch(0.955 0.008 85);
  --ink-2: oklch(0.82 0.012 80);
  --muted: oklch(0.68 0.014 78);

  /* gold */
  --gold: oklch(0.80 0.115 84);
  --gold-bright: oklch(0.885 0.10 90);
  --gold-deep: oklch(0.66 0.12 70);
  --gold-ink: oklch(0.20 0.03 72);
  --gold-soft: oklch(0.80 0.115 84 / 0.14);
  --gold-line: oklch(0.80 0.115 84 / 0.34);

  /* type */
  --display: 'Big Shoulders Display', 'Arial Narrow', sans-serif;
  --body: 'Hanken Grotesk', system-ui, sans-serif;
  --mono: 'Martian Mono', ui-monospace, monospace;

  /* fluid scale */
  --step--1: clamp(0.79rem, 0.76rem + 0.15vw, 0.87rem);
  --step-0: clamp(1rem, 0.96rem + 0.2vw, 1.12rem);
  --step-1: clamp(1.2rem, 1.1rem + 0.5vw, 1.5rem);
  --step-2: clamp(1.6rem, 1.35rem + 1.2vw, 2.4rem);
  --step-3: clamp(2.3rem, 1.8rem + 2.5vw, 3.8rem);
  --step-4: clamp(3rem, 2rem + 5vw, 5.6rem);
  --step-5: clamp(3.6rem, 2rem + 8vw, 7.5rem);

  /* space */
  --gutter: clamp(1.25rem, 0.9rem + 1.8vw, 2.5rem);
  --section-y: clamp(4.5rem, 3rem + 7vw, 9rem);
  --maxw: 1200px;

  --radius: 14px;
  --radius-lg: 22px;
  --nav-h: 74px;

  /* z-scale */
  --z-grain: 1;
  --z-firefly: 2;
  --z-content: 5;
  --z-nav: 50;
  --z-menu: 60;
  --z-modal: 80;

  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --ease-io: cubic-bezier(0.65, 0, 0.35, 1);
}

/* ============================================================
   RESET / BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

/* The closed mobile menu is parked one screen-width to the right, which made
   every page swipe sideways into empty space on phones. `clip` kills the
   horizontal scroll without creating a scroll container, so the sticky nav
   and scroll-driven effects keep working. */
html { overflow-x: clip; }
body { overflow-x: clip; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Lenis smooth scroll (only active when the library initializes) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }

body {
  background: var(--bg);
  color: var(--ink);
  font-family: var(--body);
  font-size: var(--step-0);
  line-height: 1.65;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
  position: relative;
  min-height: 100dvh;
}

/* warm radial glow behind everything */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(120% 80% at 50% -10%, oklch(0.30 0.05 75 / 0.55), transparent 60%),
    radial-gradient(90% 60% at 100% 100%, oklch(0.24 0.04 60 / 0.4), transparent 55%);
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; background: none; border: none; }
::selection { background: var(--gold); color: var(--gold-ink); }

:focus-visible {
  outline: 2px solid var(--gold-bright);
  outline-offset: 3px;
  border-radius: 4px;
}

/* film grain */
.grain {
  position: fixed;
  inset: -50%;
  z-index: var(--z-grain);
  pointer-events: none;
  opacity: 0.05;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ============================================================
   LAYOUT
   ============================================================ */
.wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--gutter); }
.wrap-tight { max-width: 880px; }
main { position: relative; z-index: var(--z-content); }
.section { padding-block: var(--section-y); position: relative; }
.section--tight { padding-block: clamp(3rem, 2rem + 4vw, 5.5rem); }

.rule { height: 1px; background: linear-gradient(90deg, transparent, var(--line), transparent); border: 0; }

/* ============================================================
   TYPOGRAPHY
   ============================================================ */
h1, h2, h3, .display {
  font-family: var(--display);
  font-weight: 800;
  line-height: 0.92;
  letter-spacing: -0.01em;
  text-transform: uppercase;
  text-wrap: balance;
  color: var(--ink);
}
h1, .h1 { font-size: var(--step-4); }
h2, .h2 { font-size: var(--step-3); }
h3, .h3 { font-size: var(--step-2); line-height: 0.95; }
.h-hero { font-size: var(--step-5); font-weight: 900; line-height: 0.86; letter-spacing: -0.02em; }

p { text-wrap: pretty; max-width: 68ch; }
strong { color: var(--gold-bright); font-weight: 700; }
em { font-style: normal; color: var(--gold); }

.lead { font-size: var(--step-1); color: var(--ink-2); line-height: 1.5; font-weight: 400; }

.gold { color: var(--gold); }
.ink2 { color: var(--ink-2); }
.muted { color: var(--muted); }

/* mono spec label: deliberate brand system, used sparingly */
.spec {
  font-family: var(--mono);
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold);
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
}
.spec::before {
  content: "";
  width: 26px; height: 1px;
  background: var(--gold);
  opacity: 0.7;
}
.spec--plain::before { display: none; }

/* section header block */
.shead { display: flex; flex-direction: column; gap: 1rem; max-width: 720px; }
.shead .h2 { margin-top: 0.2rem; }
.shead p { color: var(--ink-2); }
.shead--center { align-items: center; text-align: center; margin-inline: auto; }

/* ============================================================
   NAV
   ============================================================ */
.nav {
  position: sticky;
  top: 0;
  z-index: var(--z-nav);
  transition: background 0.4s var(--ease), backdrop-filter 0.4s var(--ease), border-color 0.4s var(--ease);
  border-bottom: 1px solid transparent;
}
.nav.scrolled {
  background: oklch(0.16 0.008 62 / 0.72);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  border-bottom-color: var(--line);
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  height: clamp(64px, 5vw, 78px);
  transition: height 0.4s var(--ease);
}
.nav.scrolled .nav-inner { height: clamp(56px, 4vw, 64px); }

.brand { display: inline-flex; align-items: center; gap: 0.6rem; line-height: 0; }
.brand svg { width: 34px; height: 34px; display: block; flex: none; }
.brand-mark { height: 40px; width: auto; display: block; flex: none; }
.footer .brand-mark { height: 40px; }
.cred-mark img.mark-fill { width: 22px; height: auto; display: block; }
.book-mark img.mark-fill { width: 100%; height: auto; display: block; }
.brand-name {
  font-family: var(--display);
  font-weight: 800;
  font-size: 1.72rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  line-height: 1;
  display: flex;
  align-items: center;
}
.brand-name b { color: var(--gold); font-weight: 800; }

.nav-links { display: flex; align-items: center; gap: clamp(1.4rem, 2vw, 2.4rem); }
.nav-link {
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--ink-2);
  position: relative;
  padding: 0.4rem 0;
  transition: color 0.25s var(--ease);
}
.nav-link::after {
  content: "";
  position: absolute;
  left: 0; bottom: -2px;
  width: 100%; height: 1.5px;
  background: var(--gold);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s var(--ease);
}
.nav-link:hover { color: var(--ink); }
.nav-link:hover::after,
.nav-link[aria-current="page"]::after { transform: scaleX(1); }
.nav-link[aria-current="page"] { color: var(--gold); }

.nav-burger {
  display: none;
  width: 44px; height: 44px;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  z-index: var(--z-menu);
}
.nav-burger span {
  width: 24px; height: 2px;
  background: var(--ink);
  border-radius: 2px;
  transition: transform 0.35s var(--ease), opacity 0.25s var(--ease);
}
.nav-burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-burger.open span:nth-child(2) { opacity: 0; }
.nav-burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn {
  --bg-btn: var(--gold);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.6em;
  font-family: var(--body);
  font-weight: 700;
  font-size: 0.98rem;
  letter-spacing: 0.01em;
  padding: 0.95em 1.7em;
  border-radius: 999px;
  position: relative;
  isolation: isolate;
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease), background 0.3s var(--ease), color 0.3s var(--ease);
  white-space: nowrap;
}
.btn svg { width: 1.05em; height: 1.05em; }
.btn { max-width: 100%; }

.btn-primary {
  background: linear-gradient(180deg, var(--gold-bright), var(--gold) 65%, var(--gold-deep));
  color: var(--gold-ink);
  box-shadow: 0 0 0 1px oklch(0.90 0.09 92 / 0.6) inset, 0 12px 30px -12px oklch(0.80 0.115 84 / 0.75);
}
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 0 0 1px oklch(0.92 0.08 94 / 0.7) inset, 0 20px 44px -14px oklch(0.80 0.115 84 / 0.9); }
.btn-primary:active { transform: translateY(0); }

.btn-ghost {
  background: oklch(0.24 0.008 62 / 0.35);
  color: var(--ink);
  box-shadow: 0 0 0 1px oklch(0.56 0.03 76) inset;
}
.btn-ghost:hover { box-shadow: 0 0 0 1px var(--gold) inset; color: var(--gold); background: var(--gold-soft); transform: translateY(-2px); }

.btn-lg { font-size: 1.06rem; padding: 1.1em 2.1em; }
.btn-sm { font-size: 0.86rem; padding: 0.7em 1.2em; }

/* subtle breathing ring on primary CTA: animates only the outer shadow, never the fill */
.btn-pulse { animation: pulse 2.8s var(--ease) infinite; }
@keyframes pulse {
  0%   { box-shadow: 0 0 0 1px oklch(0.90 0.09 92 / 0.6) inset, 0 12px 30px -12px oklch(0.80 0.115 84 / 0.75), 0 0 0 0 oklch(0.80 0.115 84 / 0.5); }
  70%  { box-shadow: 0 0 0 1px oklch(0.90 0.09 92 / 0.6) inset, 0 12px 30px -12px oklch(0.80 0.115 84 / 0.75), 0 0 0 16px oklch(0.80 0.115 84 / 0); }
  100% { box-shadow: 0 0 0 1px oklch(0.90 0.09 92 / 0.6) inset, 0 12px 30px -12px oklch(0.80 0.115 84 / 0.75), 0 0 0 16px oklch(0.80 0.115 84 / 0); }
}

/* ============================================================
   FIREFLIES (brand signature) + hero
   ============================================================ */
.firefly-field { position: absolute; inset: 0; overflow: hidden; pointer-events: none; z-index: var(--z-firefly); }
/* page-wide ambient layer, sits behind content for the whole scroll */
.firefly-ambient { position: fixed; inset: 0; }
.firefly-ambient .firefly { opacity: 0.75; }
.firefly {
  position: absolute;
  left: 50%; top: 50%;
  width: 4px; height: 4px;
  border-radius: 50%;
  transform-origin: -22vw;
  animation: ff-orbit ease-in-out alternate infinite;
  will-change: transform;
}
.firefly::after {
  content: "";
  position: absolute; inset: 0;
  border-radius: 50%;
  background: var(--gold-bright);
  box-shadow: 0 0 10px 2px oklch(0.86 0.11 88 / 0.8);
  animation: ff-flash ease-in-out infinite;
}
@keyframes ff-orbit {
  0%   { transform: rotate(0deg) translateX(6vw) rotate(0deg) scale(0.9); }
  100% { transform: rotate(360deg) translateX(20vw) rotate(-360deg) scale(1.1); }
}
@keyframes ff-flash {
  0%, 100% { opacity: 0; }
  50% { opacity: 1; }
}

/* ============================================================
   HERO
   ============================================================ */
.hero {
  position: relative;
  overflow: hidden;
  padding-block: clamp(1.5rem, 4vh, 3.5rem);
  min-height: calc(100svh - var(--nav-h));
  display: grid;
  align-items: center;
}
.hero-grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
  width: 100%;
  position: relative;
  z-index: var(--z-content);
}
.hero .h-hero { font-size: clamp(2.7rem, min(8.4vw, 12vh), 6.4rem); }
.hero-copy { display: flex; flex-direction: column; align-items: flex-start; gap: clamp(1rem, 2.2vh, 1.6rem); }

/* hero load-entrance (deterministic, not scroll-gated) */
.js .hero .h-rise { opacity: 0; transform: translateY(28px); filter: blur(8px); animation: hrise 1.1s var(--ease) forwards; }
@keyframes hrise { to { opacity: 1; transform: none; filter: blur(0); } }
[data-parallax] { will-change: transform; }
.hero-media .frame img { transform: scale(1.06); will-change: transform; }
.js .hero-copy .h-rise:nth-child(1) { animation-delay: 0.05s; }
.js .hero-copy .h-rise:nth-child(2) { animation-delay: 0.14s; }
.js .hero-copy .h-rise:nth-child(3) { animation-delay: 0.24s; }
.js .hero-copy .h-rise:nth-child(4) { animation-delay: 0.34s; }
.js .hero-copy .h-rise:nth-child(5) { animation-delay: 0.42s; }
.js .hero-media.h-rise { animation-delay: 0.2s; animation-duration: 1.2s; }
@media (prefers-reduced-motion: reduce) {
  .js .hero .h-rise { opacity: 1; transform: none; animation: none; }
}
.hero-copy .h-hero { margin-top: 0.3rem; }
.hero-copy .lead { max-width: 46ch; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 0.3rem; }
.hero-fine { font-family: var(--mono); font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.hero-media { position: relative; display: flex; justify-content: center; }
.hero-media .frame {
  width: auto;
  height: min(calc(100svh - var(--nav-h) - 6rem), 560px);
  aspect-ratio: 3 / 4;
  max-width: 100%;
  margin-inline: auto;
}

/* founder credential: replaces the generic eyebrow pill */
.hero-cred { display: inline-flex; align-items: center; gap: 0.7rem; }
.hero-cred .cred-mark {
  width: 30px; height: 30px; flex: none;
  display: grid; place-items: center;
  border-radius: 8px;
  background: var(--gold-soft);
  box-shadow: 0 0 0 1px var(--gold-line) inset;
}
.hero-cred .cred-mark svg { width: 18px; height: 18px; }
.hero-cred .cred-text { font-size: 0.92rem; color: var(--ink-2); line-height: 1.3; }
.hero-cred .cred-text b { color: var(--ink); font-weight: 600; }
.hero-cred .cred-text i { font-style: normal; color: var(--gold); }

/* short-viewport tuning so the fold always fits */
@media (min-width: 881px) and (max-height: 820px) {
  .hero .h-hero { font-size: clamp(2.5rem, 9.5vh, 4.6rem); }
  .hero-copy .lead { font-size: 1.02rem; }
  .hero-cred { display: none; }
}

@media (max-width: 880px) {
  .hero {
    min-height: calc(100svh - var(--nav-h));
    padding-block: clamp(1rem, 3vh, 2rem) clamp(1.5rem, 4vh, 2.5rem);
  }
  .hero-grid { grid-template-columns: 1fr; gap: clamp(1.4rem, 4vh, 2.4rem); align-content: center; }
  .hero-copy { align-items: flex-start; gap: clamp(0.9rem, 2vh, 1.3rem); }
  .hero .h-hero { font-size: clamp(2.6rem, 12.5vw, 4rem); }
  .hero-media { order: -1; }
  .hero-media .frame { height: min(34svh, 320px); }
  .hero-actions .btn { flex: 1 1 auto; }
}
@media (max-width: 880px) and (max-height: 720px) {
  .hero-media { display: none; }
  .hero { min-height: auto; padding-top: clamp(2rem, 8vh, 3rem); }
}

/* very short viewports of any width, e.g. landscape phones and split-screen windows.
   Compress the hero so the headline and primary CTA stay above the fold. */
@media (max-height: 540px) {
  .hero { min-height: auto; padding-block: clamp(0.9rem, 3vh, 1.6rem); }
  .hero-media { display: none; }
  .hero-grid { grid-template-columns: 1fr; }
  .hero .h-hero { font-size: clamp(1.75rem, 8.2vh, 2.9rem); }
  .hero-copy { gap: clamp(0.55rem, 1.8vh, 0.9rem); }
  .hero-copy .lead { font-size: 0.95rem; }
  .hero-cred { display: none; }
  .hero-fine { display: none; }
}

/* ============================================================
   PAGE HEADER + PULL QUOTE
   ============================================================ */
.pagehead {
  position: relative;
  overflow: hidden;
  /* tightened so the headline sits closer to the nav; the second value keeps
     breathing room before the first content section */
  padding-block: clamp(1.9rem, 1.1rem + 3.2vw, 4.25rem) clamp(1.6rem, 1.1rem + 2.4vw, 3.25rem);
}
/* size against BOTH axes so the headline can never outgrow a short viewport */
.pagehead .h1 {
  text-wrap: balance;
  font-size: clamp(2.6rem, min(8.4vw, 11.5vh), 5.6rem);
}
.pagehead .lead { text-wrap: pretty; }
/* vh-aware rhythm inside the page header, so a short viewport compresses it
   instead of pushing the CTA below the fold */
.pagehead .ph-title { margin-block: clamp(0.5rem, 1.7vh, 1rem) clamp(0.7rem, 2.3vh, 1.4rem); }
.pagehead .ph-actions { margin-top: clamp(0.85rem, 3vh, 2rem); }
.pagehead .coaching-price { font-size: clamp(1.5rem, 4.4vh, 2.2rem) !important; }

/* mildly short viewports: laptop windows, 720p screens */
@media (max-height: 820px) {
  .pagehead { padding-block: clamp(1.4rem, 2.7vh, 2.6rem) clamp(1.2rem, 2.4vh, 2.2rem); }
  .pagehead .lead { font-size: 1.02rem; }
}
/* short viewports (landscape phones, small laptop windows, split-screen) */
@media (max-height: 640px) {
  .pagehead { padding-block: clamp(0.9rem, 2.6vh, 1.6rem) clamp(0.8rem, 2.4vh, 1.4rem); }
  .pagehead .h1 { font-size: clamp(1.95rem, 8.4vh, 3.2rem); }
  .pagehead .lead { font-size: 0.98rem; }
  .pagehead .spec { margin-bottom: 0.25rem; }
  .pagehead .ph-title { margin-block: 0.4rem 0.55rem; }
  .pagehead .ph-actions { margin-top: 0.75rem; }
}
/* very short + wide: drop the header portrait and let the copy run full width,
   so the lead wraps to fewer lines and the CTA stays above the fold */
@media (max-height: 580px) and (min-width: 881px) {
  .pagehead .split { grid-template-columns: 1fr; }
  .pagehead .split-media { display: none; }
  .pagehead .lead { max-width: 78ch !important; }
}
@media (max-height: 460px) {
  .pagehead .h1 { font-size: clamp(1.7rem, 7.6vh, 2.4rem); }
  .pagehead .lead { font-size: 0.92rem; }
  .pagehead .ph-title { margin-block: 0.3rem 0.45rem; }
  .pagehead .ph-actions { margin-top: 0.6rem; }
}

.pullquote {
  font-family: var(--display);
  font-weight: 700;
  text-transform: uppercase;
  font-size: clamp(1.7rem, 1.2rem + 2.6vw, 3.2rem);
  line-height: 1.02;
  letter-spacing: -0.01em;
  text-align: center;
  color: var(--ink);
  text-wrap: balance;
  position: relative;
  padding-top: 2.4rem;
}
.pullquote::before {
  content: "";
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 40px; height: 3px; background: var(--gold);
}
.pullquote em, .pullquote .gold { color: var(--gold); }

/* ============================================================
   PROOF STRIP + BANNER
   ============================================================ */
.proof .stats { border-block: 1px solid var(--line); padding-block: clamp(2rem, 4vw, 3rem); }

.banner {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  min-height: clamp(340px, 42vw, 520px);
  display: flex;
  align-items: flex-end;
  box-shadow: 0 0 0 1px var(--line), 0 40px 90px -50px oklch(0 0 0 / 0.9);
}
.banner-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; object-fit: cover;
  object-position: 68% 28%;
  filter: contrast(1.05) saturate(0.8) brightness(0.72);
}
/* strong scrim over the text side; physique stays visible on the right */
.banner::before {
  content: ""; position: absolute; inset: 0;
  background:
    linear-gradient(90deg,
      oklch(0.08 0.006 60 / 0.99) 0%,
      oklch(0.09 0.007 60 / 0.97) 48%,
      oklch(0.10 0.009 60 / 0.82) 62%,
      oklch(0.11 0.010 60 / 0.34) 78%,
      transparent 92%),
    linear-gradient(0deg, oklch(0.08 0.006 60 / 0.8) 0%, transparent 48%);
}
.banner-inner {
  position: relative;
  z-index: 2;
  padding: clamp(1.8rem, 4vw, 3.2rem);
  padding-right: clamp(2rem, 5vw, 4rem);
  max-width: 500px;
  display: flex; flex-direction: column; gap: 1rem;
  text-shadow: 0 1px 16px oklch(0.06 0.006 60 / 0.75);
}
.banner-inner .check-list li { max-width: 30ch; }
.banner-inner .lead { max-width: 30ch; }
.banner-inner .check-list.is-yes li { color: var(--ink); }
.banner-inner .spec { color: var(--gold-bright); }

/* ============================================================
   IMAGE / DOSSIER FRAMES + cinematic grade
   ============================================================ */
.frame {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--void);
  box-shadow: 0 0 0 1px var(--gold-line), 0 40px 80px -40px oklch(0 0 0 / 0.9);
}
.frame img {
  width: 100%; height: 100%; object-fit: cover;
  display: block;
  filter: contrast(1.02) saturate(0.96) brightness(0.95);
}
/* cinematic grade: warm push + vignette so clutter recedes, physique reads */
.frame::before {
  content: "";
  position: absolute; inset: 0; z-index: 2;
  pointer-events: none;
  background:
    linear-gradient(180deg, transparent 30%, oklch(0.15 0.02 60 / 0.35) 78%, oklch(0.13 0.02 60 / 0.92) 100%),
    radial-gradient(120% 100% at 50% 0%, transparent 45%, oklch(0.12 0.01 60 / 0.7) 100%);
  mix-blend-mode: normal;
}
.frame::after {
  content: "";
  position: absolute; inset: 0; z-index: 3;
  pointer-events: none;
  background: radial-gradient(70% 60% at 40% 45%, oklch(0.55 0.09 75 / 0.16), transparent 70%);
  mix-blend-mode: soft-light;
}
.frame-cap {
  position: absolute;
  left: 0; bottom: 0; z-index: 4;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.2rem;
  font-family: var(--mono);
  font-size: 0.66rem;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-2);
}
.frame-cap .tag { color: var(--gold); }

/* corner ticks for the "blueprint" feel */
.frame-ticks::before, .frame-ticks::after,
.frame-ticks > span::before, .frame-ticks > span::after {
  content: "";
  position: absolute; z-index: 4;
  width: 16px; height: 16px;
  border: 1.5px solid var(--gold-line);
}
.frame-ticks { position: absolute; inset: 12px; pointer-events: none; z-index: 4; }
.frame-ticks::before { top: 0; left: 0; border-right: 0; border-bottom: 0; }
.frame-ticks::after { top: 0; right: 0; border-left: 0; border-bottom: 0; }
.frame-ticks > span::before { content:""; bottom: 0; left: 0; border-right: 0; border-top: 0; }
.frame-ticks > span::after { content:""; bottom: 0; right: 0; border-left: 0; border-top: 0; }

/* ============================================================
   STATEMENT (full-bleed cinematic band)
   ============================================================ */
.statement {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-lg);
  min-height: clamp(360px, 58vh, 620px);
  display: flex;
  align-items: flex-end;
  box-shadow: 0 0 0 1px var(--gold-line), 0 40px 90px -50px oklch(0 0 0 / 0.9);
}
.statement img {
  position: absolute; inset: 0; z-index: 0;
  width: 100%; height: 100%; object-fit: cover;
  filter: contrast(1.05) saturate(0.95) brightness(0.82);
}
.statement::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background:
    linear-gradient(0deg, oklch(0.10 0.01 60 / 0.92) 0%, oklch(0.11 0.01 60 / 0.35) 40%, transparent 68%),
    radial-gradient(80% 60% at 20% 100%, oklch(0.10 0.01 60 / 0.7), transparent 70%);
}
.statement-inner {
  position: relative; z-index: 2;
  padding: clamp(1.8rem, 4vw, 3.2rem);
  max-width: 640px;
}
.statement-inner .h2 { font-size: var(--step-3); text-wrap: balance; }
.statement-inner p { color: var(--ink-2); margin-top: 1rem; }
.statement-cap {
  position: absolute; top: clamp(1.2rem, 3vw, 2rem); right: clamp(1.2rem, 3vw, 2rem); z-index: 2;
  font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--gold);
}

/* ============================================================
   GALLERY
   ============================================================ */
.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: clamp(1rem, 2vw, 1.4rem);
}
.gallery .frame { aspect-ratio: 3 / 4; }

/* ============================================================
   STAT READOUT
   ============================================================ */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: clamp(1.2rem, 3vw, 2.5rem); }
.stat { display: flex; flex-direction: column; gap: 0.4rem; align-items: center; text-align: center; }
.stat-num {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(2.6rem, 1.8rem + 3vw, 4.2rem);
  line-height: 0.9;
  color: var(--gold);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.stat-num sub { font-size: 0.4em; color: var(--ink-2); vertical-align: baseline; margin-left: 0.15em; font-family: var(--mono); font-weight: 500; }
.stat-label { font-family: var(--mono); font-size: 0.68rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); }

/* ============================================================
   PROTOCOL LIST (real numbered sequence)
   ============================================================ */
/* 2 + 2 + 1 card grid: shorter than five stacked rows, and the last card
   spans the full width so the set reads as a deliberate block */
.protocols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(0.65rem, 1.1vw, 0.9rem);
}
.protocol {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
  padding: clamp(0.95rem, 1.6vw, 1.2rem);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(180deg, var(--surface), var(--bg));
  transition: transform 0.45s var(--ease), border-color 0.45s var(--ease),
              box-shadow 0.45s var(--ease);
}
.protocol:last-child { grid-column: 1 / -1; }
.protocol:hover {
  transform: translateY(-4px);
  border-color: var(--gold-line);
  box-shadow: 0 22px 46px -30px oklch(0 0 0 / 0.9), 0 0 34px -14px oklch(0.80 0.115 84 / 0.35);
}

.protocol-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.protocol-idx {
  font-family: var(--mono);
  font-size: 0.66rem;
  letter-spacing: 0.16em;
  color: var(--muted);
  transition: color 0.4s var(--ease);
}
.protocol:hover .protocol-idx { color: var(--gold); }

.protocol-ico {
  flex: none;
  width: 36px; height: 36px;
  display: grid; place-items: center;
  border-radius: 10px;
  color: var(--gold);
  background: var(--gold-soft);
  border: 1px solid var(--gold-line);
  transition: color 0.4s var(--ease), background 0.4s var(--ease),
              border-color 0.4s var(--ease), transform 0.5s var(--ease);
}
.protocol-ico svg { width: 20px; height: 20px; }
.protocol:hover .protocol-ico {
  color: var(--gold-bright);
  transform: translateY(-2px);
  border-color: var(--gold);
}

.protocol h3 {
  font-size: clamp(1.15rem, 1rem + 0.4vw, 1.4rem);
  line-height: 1.06;
  margin-top: 0.1rem;
  transition: color 0.4s var(--ease);
}
.protocol:hover h3 { color: var(--gold); }
.protocol p { color: var(--ink-2); font-size: 0.845rem; line-height: 1.5; max-width: 54ch; }

/* the full-width card lays out horizontally so it doesn't sit half empty */
@media (min-width: 621px) {
  .protocol:last-child {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    column-gap: clamp(1.1rem, 2.4vw, 1.8rem);
    align-items: center;
  }
  .protocol:last-child .protocol-head { grid-row: 1 / 3; grid-column: 1; }
  /* keep the index pinned top-right rather than orphaned under the icon */
  .protocol:last-child .protocol-idx {
    position: absolute;
    top: clamp(0.95rem, 1.6vw, 1.2rem);
    right: clamp(0.95rem, 1.6vw, 1.2rem);
  }
  .protocol:last-child h3 { grid-column: 2; align-self: end; margin: 0; }
  .protocol:last-child p  { grid-column: 2; align-self: start; max-width: 80ch; margin-top: 0.4rem; }
}

@media (max-width: 620px) {
  .protocols { grid-template-columns: 1fr; }
  .protocol { padding: clamp(1rem, 4vw, 1.3rem); }
  .protocol-ico { width: 36px; height: 36px; }
  .protocol-ico svg { width: 20px; height: 20px; }
}

/* ============================================================
   MODULES (blueprint contents)
   ============================================================ */
.modules { display: flex; flex-direction: column; }
.module {
  display: grid;
  grid-template-columns: 0.85fr 1fr;
  gap: clamp(1.5rem, 4vw, 4rem);
  padding-block: clamp(2rem, 4vw, 3.2rem);
  border-top: 1px solid var(--line);
}
.module:last-child { border-bottom: 1px solid var(--line); }
.module-head { position: sticky; top: 100px; align-self: start; }
.module-idx { font-family: var(--mono); font-size: 0.8rem; color: var(--gold); letter-spacing: 0.1em; display: block; margin-bottom: 0.9rem; }
.module-head h3, .module-head .h3 { margin-bottom: 0.9rem; }
.module-head p { max-width: 42ch; }
@media (max-width: 760px) {
  .module { grid-template-columns: 1fr; gap: 1.4rem; }
  .module-head { position: static; }
}

/* checklists */
.check-list, .mod-list { list-style: none; display: flex; flex-direction: column; gap: 0.9rem; }
.check-list li, .mod-list li {
  position: relative;
  padding-left: 2.1rem;
  color: var(--ink-2);
  line-height: 1.5;
  max-width: 56ch;
}
.mod-list li::before, .check-list.is-yes li::before {
  content: "";
  position: absolute; left: 0; top: 0.35em;
  width: 1.15rem; height: 1.15rem;
  border-radius: 50%;
  background: var(--gold-soft);
  box-shadow: 0 0 0 1px var(--gold-line) inset;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e8c26a' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5 10 17.5 19.5 7'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 0.72rem;
}
.check-list.is-no li { color: var(--muted); }
.check-list.is-no li::before {
  content: "";
  position: absolute; left: 0; top: 0.35em;
  width: 1.15rem; height: 1.15rem;
  border-radius: 50%;
  box-shadow: 0 0 0 1px var(--line) inset;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238a8172' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M7 7 17 17M17 7 7 17'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: center; background-size: 0.66rem;
}

/* who it's for */
.who { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4vw, 3rem); }
.who-col { background: linear-gradient(180deg, var(--surface), var(--void)); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: clamp(1.5rem, 3vw, 2.4rem); }
.who-col .spec { margin-bottom: 1.4rem; }
@media (max-width: 720px) { .who { grid-template-columns: 1fr; } }

/* ============================================================
   FEATURE / CONTENT PANELS
   ============================================================ */
.split {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(2rem, 5vw, 5rem);
  align-items: center;
}
.split--rev .split-media { order: -1; }
@media (max-width: 860px) { .split { grid-template-columns: 1fr; } .split--rev .split-media { order: 0; } }

.panel {
  background: linear-gradient(180deg, var(--surface), var(--void));
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: clamp(1.6rem, 3vw, 2.6rem);
}

/* ============================================================
   BEFORE / AFTER SLIDER
   ============================================================ */
.ba {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  aspect-ratio: 3 / 4;
  max-width: 560px;
  margin-inline: auto;
  user-select: none;
  touch-action: pan-y;
  box-shadow: 0 0 0 1px var(--gold-line), 0 40px 90px -40px oklch(0 0 0 / 0.9);
  background: var(--void);
}
.ba img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: contrast(1.02) saturate(0.96) brightness(0.95); }
.ba-after { clip-path: inset(0 0 0 var(--pos, 50%)); }
.ba-label {
  position: absolute; top: 14px;
  font-family: var(--mono); font-size: 0.64rem; letter-spacing: 0.2em; text-transform: uppercase;
  padding: 0.4em 0.8em; border-radius: 999px;
  background: oklch(0.14 0.01 60 / 0.7); backdrop-filter: blur(6px);
  color: var(--ink-2); z-index: 3;
}
.ba-label.is-before { left: 14px; }
.ba-label.is-after { right: 14px; color: var(--gold); }
.ba-handle {
  position: absolute; top: 0; bottom: 0;
  left: var(--pos, 50%);
  width: 2px; margin-left: -1px;
  background: var(--gold);
  z-index: 4;
  box-shadow: 0 0 16px 1px oklch(0.80 0.115 84 / 0.7);
}
.ba-grip {
  position: absolute; top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 46px; height: 46px;
  border-radius: 50%;
  background: var(--gold);
  color: var(--gold-ink);
  display: grid; place-items: center;
  box-shadow: 0 6px 24px -6px oklch(0 0 0 / 0.8);
  cursor: ew-resize;
}
.ba-grip svg { width: 22px; height: 22px; }
.ba input[type="range"] {
  position: absolute; inset: 0; width: 100%; height: 100%;
  opacity: 0; cursor: ew-resize; z-index: 5; margin: 0;
}

/* ============================================================
   FAQ
   ============================================================ */
.faq { border-top: 1px solid var(--line); }
.faq details {
  border-bottom: 1px solid var(--line);
}
.faq summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: clamp(1.3rem, 2.5vw, 1.9rem) 0;
  font-family: var(--display);
  font-weight: 700;
  font-size: var(--step-1);
  text-transform: uppercase;
  letter-spacing: 0.01em;
  color: var(--ink);
  transition: color 0.3s var(--ease);
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary:hover { color: var(--gold); }
.faq-icon { flex: none; width: 22px; height: 22px; position: relative; }
.faq-icon::before, .faq-icon::after {
  content: ""; position: absolute; top: 50%; left: 50%;
  background: var(--gold); border-radius: 2px;
  transform: translate(-50%, -50%);
  transition: transform 0.4s var(--ease), opacity 0.3s var(--ease);
}
.faq-icon::before { width: 16px; height: 2px; }
.faq-icon::after { width: 2px; height: 16px; }
.faq details[open] .faq-icon::after { transform: translate(-50%, -50%) rotate(90deg); opacity: 0; }
.faq-answer { overflow: hidden; }
.faq details[open] .faq-answer { animation: faq-open 0.5s var(--ease); }
.faq-answer p { color: var(--ink-2); padding-bottom: clamp(1.3rem, 2.5vw, 1.9rem); max-width: 74ch; }
@keyframes faq-open { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }

/* ============================================================
   COACHING (flagship / high-ticket)
   ============================================================ */
.coaching {
  display: grid;
  grid-template-columns: 0.92fr 1.08fr;
  align-items: stretch;
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--gold-line);
  box-shadow: 0 0 0 4px oklch(0.80 0.115 84 / 0.08), 0 0 60px -12px oklch(0.80 0.115 84 / 0.22), 0 50px 100px -55px oklch(0 0 0 / 0.9);
  background: linear-gradient(180deg, var(--surface), var(--void));
}
.coaching > * { min-width: 0; }
.coaching-media { position: relative; min-height: 460px; overflow: hidden; }
.coaching-media img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  filter: contrast(1.04) saturate(0.95) brightness(0.92);
}
.coaching-media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent 55%, oklch(0.20 0.01 60 / 0.35) 82%, var(--void) 100%),
              radial-gradient(70% 50% at 30% 40%, oklch(0.55 0.09 75 / 0.14), transparent 70%);
}
.coaching-media .frame-ticks { z-index: 2; }
.coaching-body {
  padding: clamp(1.8rem, 4vw, 3.4rem);
  display: flex; flex-direction: column; justify-content: center; gap: 1.1rem;
}
.coaching-body h2 { font-size: var(--step-3); }
.coaching-body .check-list { margin-top: 0.3rem; }
.coaching-actions { display: flex; flex-wrap: wrap; gap: 0.8rem 1.2rem; align-items: center; margin-top: 0.8rem; }
.coaching-actions .btn { flex: none; }
.coaching-price { display: inline-flex; align-items: baseline; gap: 0.35em; font-family: var(--display); font-weight: 700; font-size: 1.7rem; color: var(--ink); line-height: 1; letter-spacing: -0.01em; }
.coaching-price small { font-family: var(--body); font-weight: 400; font-size: 0.8rem; color: var(--muted); letter-spacing: 0; }
.coaching-second { font-size: 0.92rem; color: var(--muted); }
.coaching-second a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }
.spots {
  display: inline-flex; align-items: center; gap: 0.55em;
  font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--gold);
}
.spots .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 9px 2px var(--gold); animation: spots-pulse 2.2s var(--ease) infinite; }
@keyframes spots-pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.35; } }
@media (prefers-reduced-motion: reduce) { .spots .dot { animation: none; } }
@media (max-width: 860px) {
  .coaching { grid-template-columns: 1fr; }
  .coaching-media { order: -1; min-height: 320px; }
  .coaching-media::after { background: linear-gradient(0deg, var(--void) 2%, transparent 40%); }
}

/* ============================================================
   HOW IT WORKS (3-step)
   ============================================================ */
.steps {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(1.2rem, 3vw, 2rem);
  counter-reset: step;
}
.step {
  position: relative;
  padding: clamp(1.6rem, 3vw, 2.4rem);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: linear-gradient(180deg, var(--surface), var(--void));
  overflow: hidden;
}
.step-n {
  font-family: var(--display);
  font-weight: 800;
  font-size: clamp(2.4rem, 4vw, 3.4rem);
  line-height: 1;
  color: var(--gold);
  letter-spacing: -0.02em;
  display: block;
  margin-bottom: 1rem;
}
.step h3 { font-size: var(--step-1); margin-bottom: 0.6rem; }
.step p { color: var(--ink-2); max-width: 34ch; }
.step::after {
  content: "";
  position: absolute; inset: auto -40% -60% auto;
  width: 60%; aspect-ratio: 1;
  background: radial-gradient(circle, var(--gold-soft), transparent 70%);
  pointer-events: none;
}
@media (max-width: 760px) { .steps { grid-template-columns: 1fr; } }

/* ============================================================
   OFFER / PRICING
   ============================================================ */
.offer {
  display: grid;
  grid-template-columns: 1fr 0.9fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}
@media (max-width: 900px) { .offer { grid-template-columns: 1fr; } }

.value-list { display: flex; flex-direction: column; }
.value-row {
  display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
  padding: 1.05rem 0;
  border-bottom: 1px solid var(--line);
}
.value-row:first-child { border-top: 1px solid var(--line); }
.value-row .v-name { color: var(--ink); font-weight: 500; }
.value-row .v-name small { display: block; color: var(--muted); font-weight: 400; font-size: 0.85rem; margin-top: 0.15rem; }
.value-row .v-price { font-family: var(--mono); font-size: 0.82rem; color: var(--gold); white-space: nowrap; }
.value-total {
  display: flex; align-items: baseline; justify-content: space-between;
  padding-top: 1.2rem; margin-top: 0.4rem;
}
.value-total .vt-label { font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.value-total .vt-num { font-family: var(--display); font-weight: 700; font-size: 1.6rem; color: var(--ink-2); text-decoration: line-through; text-decoration-color: var(--muted); }

.price-card {
  position: relative;
  border-radius: var(--radius-lg);
  padding: clamp(1.8rem, 3.5vw, 2.6rem);
  background:
    radial-gradient(120% 90% at 50% 0%, oklch(0.30 0.06 78 / 0.5), transparent 60%),
    linear-gradient(180deg, var(--surface), var(--void));
  border: 1px solid var(--gold-line);
  box-shadow: 0 40px 90px -50px oklch(0 0 0 / 0.9);
  overflow: hidden;
}
.price-badge {
  font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.16em; text-transform: uppercase;
  color: var(--gold-ink); background: var(--gold);
  padding: 0.4em 0.8em; border-radius: 999px; display: inline-block; margin-bottom: 1.3rem; font-weight: 600;
}
.price-row { display: flex; align-items: baseline; gap: 0.7rem; margin-bottom: 0.4rem; }
.price-now { font-family: var(--display); font-weight: 800; font-size: clamp(3rem, 6vw, 4.4rem); line-height: 0.9; color: var(--ink); letter-spacing: -0.02em; }
.price-was { font-family: var(--display); font-weight: 600; font-size: 1.6rem; color: var(--muted); text-decoration: line-through; }
.price-sub { color: var(--muted); font-size: 0.9rem; margin-bottom: 1.6rem; }
.price-card .btn { width: 100%; margin-bottom: 1.1rem; }
.trust-row { display: flex; flex-wrap: wrap; gap: 0.5rem 1.2rem; }
.trust-item { display: inline-flex; align-items: center; gap: 0.45em; font-size: 0.8rem; color: var(--muted); }
.trust-item svg { width: 15px; height: 15px; color: var(--gold); flex: none; }

/* ============================================================
   CTA BAND
   ============================================================ */
.cta-band {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  padding: clamp(3rem, 6vw, 6rem) var(--gutter);
  text-align: center;
  background:
    radial-gradient(90% 120% at 50% 0%, oklch(0.30 0.06 78 / 0.6), transparent 60%),
    linear-gradient(180deg, var(--surface), var(--void));
  border: 1px solid var(--gold-line);
}
.cta-band .h2 { font-size: var(--step-4); }
.cta-note { font-family: var(--mono); font-size: 0.8rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }

/* kicker label (clean, not a badge) */
.tag-pill {
  display: inline-flex; align-items: center; gap: 0.7em;
  font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.24em; text-transform: uppercase;
  color: var(--gold);
}
.tag-pill .dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); box-shadow: 0 0 9px 2px var(--gold); }

/* ============================================================
   CONTACT
   ============================================================ */
.contact-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
@media (max-width: 860px) { .contact-grid { grid-template-columns: 1fr; } }

.contact-card {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  padding: clamp(1.6rem, 3vw, 2.4rem);
  background: linear-gradient(180deg, var(--surface), var(--void));
}
.contact-card + .contact-card { margin-top: 1.2rem; }
.contact-card h3 { font-size: var(--step-1); margin-bottom: 0.6rem; }
.contact-card p { color: var(--ink-2); }
.contact-mail { font-family: var(--mono); font-size: 1.05rem; color: var(--gold); display: inline-block; margin-top: 0.6rem; }
.social-row { display: flex; gap: 0.7rem; margin-top: 1rem; flex-wrap: wrap; }
.social-row a {
  width: 44px; height: 44px; display: grid; place-items: center;
  border-radius: 12px; border: 1px solid var(--line-2); color: var(--ink-2);
  transition: color 0.25s var(--ease), border-color 0.25s var(--ease), background 0.25s var(--ease), transform 0.25s var(--ease);
}
.social-row a:hover { color: var(--gold); border-color: var(--gold); background: var(--gold-soft); transform: translateY(-2px); }
.social-row svg { width: 20px; height: 20px; }

.form { display: flex; flex-direction: column; gap: 1.1rem; }
.field { display: flex; flex-direction: column; gap: 0.5rem; }
.field label { font-family: var(--mono); font-size: 0.68rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.field input, .field textarea {
  width: 100%;
  background: var(--void);
  border: 1px solid var(--line-2);
  border-radius: 12px;
  padding: 0.9rem 1.05rem;
  color: var(--ink);
  font: inherit;
  transition: border-color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.field textarea { resize: vertical; min-height: 140px; }
.field input::placeholder, .field textarea::placeholder { color: var(--muted); }
.field input:focus, .field textarea:focus {
  outline: none;
  border-color: var(--gold);
  box-shadow: 0 0 0 3px var(--gold-soft);
}

/* ============================================================
   PROSE (legal / long-form)
   ============================================================ */
.prose article { padding-block: clamp(2rem, 4vw, 3rem); border-top: 1px solid var(--line); scroll-margin-top: 100px; }
.prose article:first-child { border-top: 0; padding-top: 0; }
.prose h3, .prose .h3 { margin-bottom: 1.4rem; color: var(--gold); }
.prose p { color: var(--ink-2); margin-bottom: 1.1rem; max-width: 70ch; }
.prose a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }

.legal-nav { display: flex; gap: 0.7rem; flex-wrap: wrap; margin-top: 2rem; }
.legal-nav a {
  font-family: var(--mono); font-size: 0.72rem; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink-2);
  padding: 0.55em 1.1em; border-radius: 999px;
  border: 1px solid var(--line-2);
  transition: color 0.25s var(--ease), border-color 0.25s var(--ease), background 0.25s var(--ease);
}
.legal-nav a:hover { color: var(--gold); border-color: var(--gold); background: var(--gold-soft); }

/* ============================================================
   PRODUCT COVER MOCKUP (tangibility)
   ============================================================ */
.book-wrap { display: flex; justify-content: center; align-items: center; padding: clamp(1rem, 3vw, 2.5rem); }
.book {
  position: relative;
  width: min(310px, 82%);
  filter: drop-shadow(0 45px 70px oklch(0 0 0 / 0.7));
}
.book::before, .book::after {
  content: ""; position: absolute; inset: 0;
  border-radius: 6px 16px 16px 6px;
  background: linear-gradient(180deg, var(--surface), var(--void));
  border: 1px solid var(--line);
}
.book::before { transform: rotate(3deg) translate(8px, 8px); z-index: 0; opacity: 0.55; }
.book::after { transform: rotate(1.5deg) translate(4px, 4px); z-index: 1; opacity: 0.8; }
.book-cover {
  position: relative;
  z-index: 2;
  aspect-ratio: 3 / 4.1;
  border-radius: 6px 16px 16px 6px;
  background:
    radial-gradient(120% 70% at 50% 0%, oklch(0.28 0.03 76 / 0.55), transparent 60%),
    linear-gradient(160deg, oklch(0.23 0.02 68), var(--void) 90%);
  border: 1px solid var(--gold-line);
  box-shadow: inset 3px 0 0 oklch(0.80 0.115 84 / 0.3), inset 0 0 0 1px oklch(0.80 0.115 84 / 0.08);
  padding: clamp(1.5rem, 3.5vw, 2.1rem);
  display: flex; flex-direction: column;
  overflow: hidden;
  transform: rotate(-1.5deg);
  transition: transform 0.6s var(--ease);
}
.book-wrap:hover .book-cover { transform: rotate(-1.5deg) translateY(-6px); }
.book-mark { width: 34px; height: 34px; margin-bottom: auto; }
.book-mark svg { width: 100%; height: 100%; }
.book-kick { font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold); margin-bottom: 0.5rem; }
.book-title { font-family: var(--display); font-weight: 800; text-transform: uppercase; font-size: clamp(1.9rem, 4vw, 2.5rem); line-height: 0.92; letter-spacing: -0.01em; color: var(--ink); }
.book-title b { color: var(--gold); font-weight: 800; }
.book-by { font-family: var(--body); font-size: 0.82rem; color: var(--ink-2); margin-top: 0.7rem; }
.book-chev { display: flex; gap: 4px; margin-top: 1.2rem; }
.book-chev i { width: 26px; height: 8px; border-radius: 2px; background: linear-gradient(90deg, var(--gold), transparent); opacity: 0.5; }
.book-chev i:nth-child(1) { opacity: 0.9; } .book-chev i:nth-child(2) { opacity: 0.65; }
.book-foot {
  display: flex; justify-content: space-between; gap: 0.5rem;
  margin-top: 1.4rem; padding-top: 1rem; border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted);
}
.book-badge {
  position: absolute; top: -12px; right: -12px; z-index: 3;
  font-family: var(--mono); font-size: 0.62rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--gold-ink); background: var(--gold);
  padding: 0.5em 0.85em; border-radius: 999px;
  box-shadow: 0 10px 24px -8px oklch(0.80 0.115 84 / 0.6);
  transform: rotate(4deg);
}

/* ============================================================
   COMPARISON TABLE
   ============================================================ */
.compare-wrap { overflow-x: auto; border-radius: var(--radius-lg); border: 1px solid var(--line); }
.compare { width: 100%; min-width: 640px; border-collapse: collapse; text-align: left; }
.compare th, .compare td { padding: clamp(0.9rem, 2vw, 1.2rem) clamp(1rem, 2.5vw, 1.6rem); border-bottom: 1px solid var(--line); }
.compare thead th { font-family: var(--mono); font-size: 0.7rem; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); font-weight: 500; vertical-align: bottom; }
.compare thead th.col-us { color: var(--gold); }
.compare tbody th { font-weight: 500; color: var(--ink); }
.compare td { text-align: center; color: var(--ink-2); }
.compare .col-us { background: linear-gradient(180deg, var(--gold-soft), transparent); }
.compare tbody tr:last-child th, .compare tbody tr:last-child td { border-bottom: 0; }
.compare .yes { color: var(--gold); }
.compare .no { color: var(--muted); opacity: 0.7; }
.compare .ico { display: inline-flex; width: 20px; height: 20px; }
.compare .ico svg { width: 100%; height: 100%; }
.compare .col-us-head {
  font-family: var(--display); font-weight: 800; font-size: 1.15rem; text-transform: uppercase;
  color: var(--gold); letter-spacing: 0; line-height: 1;
}

/* opt-in (lead magnet) */
.optin {
  position: relative; overflow: hidden;
  border-radius: var(--radius-lg);
  border: 1px solid var(--line);
  background: linear-gradient(180deg, var(--surface), var(--void));
  padding: clamp(2rem, 4vw, 3.4rem);
  display: grid; grid-template-columns: 1.1fr 0.9fr; gap: clamp(1.8rem, 4vw, 3.5rem); align-items: center;
}
@media (max-width: 820px) { .optin { grid-template-columns: 1fr; } }
.optin-form { display: flex; gap: 0.7rem; flex-wrap: wrap; }
.optin-form input {
  flex: 1 1 220px; min-width: 0;
  background: var(--void); border: 1px solid var(--line-2); border-radius: 999px;
  padding: 0.9rem 1.3rem; color: var(--ink); font: inherit;
  transition: border-color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.optin-form input:focus { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px var(--gold-soft); }
.optin-form input::placeholder { color: var(--muted); }
.optin-note { font-size: 0.8rem; color: var(--muted); margin-top: 0.9rem; }

/* ============================================================
   PEPTIDE PARTNER PROMO
   ============================================================ */
.promo {
  position: relative;
  overflow: hidden;
  display: grid;
  grid-template-columns: 1.25fr 0.75fr;
  gap: clamp(1.8rem, 4vw, 3.5rem);
  align-items: center;
  border-radius: var(--radius-lg);
  border: 1px solid var(--gold-line);
  padding: clamp(1.8rem, 4vw, 3.2rem);
  background:
    radial-gradient(90% 130% at 100% 0%, oklch(0.30 0.06 78 / 0.4), transparent 55%),
    linear-gradient(180deg, var(--surface), var(--void));
}
.promo::after {
  content: "";
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cg fill='none' stroke='%23c9a24a' stroke-width='1' opacity='0.5'%3E%3Cpath d='M60 18 96 39v42L60 102 24 81V39z'/%3E%3Ccircle cx='60' cy='18' r='3'/%3E%3Ccircle cx='96' cy='39' r='3'/%3E%3Ccircle cx='96' cy='81' r='3'/%3E%3Ccircle cx='60' cy='102' r='3'/%3E%3Ccircle cx='24' cy='81' r='3'/%3E%3Ccircle cx='24' cy='39' r='3'/%3E%3C/g%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right -30px top -30px;
  background-size: 220px;
  opacity: 0.12;
}
.promo-body { position: relative; z-index: 1; }
.promo-body h3, .promo-body .h3 { margin: 1rem 0 1rem; }
.promo-body p { max-width: 54ch; }
.promo-disc {
  font-size: 0.78rem !important;
  color: var(--muted) !important;
  max-width: 52ch;
  margin-top: 1.5rem;
  padding-top: 1.1rem;
  border-top: 1px solid var(--line);
}
@media (max-width: 820px) { .promo { grid-template-columns: 1fr; } }

.coupon {
  position: relative;
  z-index: 1;
  text-align: center;
  border: 1.5px dashed var(--gold-line);
  border-radius: 18px;
  padding: clamp(1.5rem, 3vw, 2rem);
  background: var(--gold-soft);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
}
.coupon-label { font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--muted); }
.coupon-off { font-family: var(--display); font-weight: 800; font-size: clamp(2.4rem, 5vw, 3.2rem); line-height: 0.9; color: var(--gold); letter-spacing: -0.02em; }
.coupon-code {
  display: inline-flex; align-items: center; gap: 0.6em;
  margin: 0.4rem 0 0.1rem;
  padding: 0.6em 1em;
  border-radius: 10px;
  background: var(--void);
  border: 1px solid var(--gold-line);
  font-family: var(--mono); font-weight: 600; font-size: 1.15rem; letter-spacing: 0.14em;
  color: var(--gold-bright);
  cursor: pointer;
  transition: border-color 0.25s var(--ease), background 0.25s var(--ease), transform 0.2s var(--ease);
}
.coupon-code:hover { border-color: var(--gold); transform: translateY(-1px); }
.coupon-code svg { width: 16px; height: 16px; opacity: 0.7; }
.coupon-code.copied { color: var(--gold); }
.coupon-hint { font-size: 0.74rem; color: var(--muted); margin-bottom: 0.9rem; }
.coupon .btn { width: 100%; }

/* ============================================================
   SCROLL ZOOM (images gently scale as they pass through view)
   ============================================================ */
.frame img, .banner-img { will-change: transform; }

/* ============================================================
   STICKY CONVERSION BAR
   ============================================================ */
.sticky-cta {
  position: fixed; left: 0; right: 0; bottom: 0;
  z-index: 45;
  transform: translateY(130%);
  transition: transform 0.55s var(--ease);
  padding: 0.7rem var(--gutter);
  padding-bottom: max(0.7rem, env(safe-area-inset-bottom));
  background: oklch(0.13 0.008 62 / 0.86);
  backdrop-filter: blur(16px) saturate(1.3);
  -webkit-backdrop-filter: blur(16px) saturate(1.3);
  border-top: 1px solid var(--gold-line);
}
.sticky-cta.show { transform: none; }
.sticky-inner { max-width: var(--maxw); margin-inline: auto; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.sticky-info { display: flex; align-items: center; gap: 0.85rem; min-width: 0; }
.sticky-mark {
  width: 36px; height: 36px; flex: none; border-radius: 9px;
  box-shadow: 0 0 0 1px var(--gold-line) inset;
  background: var(--gold-soft) url("../assets/logo-mark.png") center / 22px no-repeat;
}
/* partner offer: the Y&P wordmark replaces the square Roegains mark */
.sticky-mark--ynp {
  width: auto; height: 38px; aspect-ratio: 1.51;
  border-radius: 0; box-shadow: none;
  background: url("../assets/ynp-mark.png") center / contain no-repeat;
}
.sticky-text { min-width: 0; }
.sticky-text b { display: block; font-family: var(--display); font-weight: 700; font-size: 1.05rem; text-transform: uppercase; letter-spacing: 0.01em; line-height: 1; }
.sticky-text span { font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.sticky-text span b { display: inline; font-family: var(--mono); font-size: inherit; color: var(--gold); }
.sticky-actions { display: flex; align-items: center; gap: 0.4rem; flex: none; }
.sticky-close {
  width: 34px; height: 34px; flex: none; border-radius: 50%;
  display: grid; place-items: center; color: var(--muted);
  transition: color 0.25s var(--ease), background 0.25s var(--ease);
}
.sticky-close:hover { color: var(--ink); background: var(--surface-2); }
.sticky-close { font-size: 1.4rem; line-height: 1; }
@media (max-width: 560px) {
  .sticky-text b { font-size: 0.95rem; }
  .sticky-mark { display: none; }
  /* the partner wordmark stands in for the title, so it stays */
  .sticky-mark--ynp { display: block; height: 30px; }
  .sticky-info { gap: 0.6rem; }
  .sticky-text span { font-size: 0.6rem; letter-spacing: 0.04em; }
  .sticky-cta .btn { padding-inline: 1.2em; }
}
@media (max-width: 400px) {
  .sticky-mark--ynp { height: 26px; }
  .sticky-cta .btn { font-size: 0.76rem; padding-inline: 0.95em; }
  .sticky-text span { font-size: 0.56rem; }
}
@media (prefers-reduced-motion: reduce) { .sticky-cta { transition: none; } }

/* ============================================================
   FOOTER
   ============================================================ */
.footer { border-top: 1px solid var(--line); padding-block: clamp(3rem, 5vw, 5rem) 2.5rem; position: relative; z-index: var(--z-content); }
.footer-top { display: flex; flex-wrap: wrap; gap: 2rem; justify-content: space-between; align-items: flex-start; }
.footer-brand { max-width: 34ch; }
.footer-brand p { color: var(--muted); font-size: 0.9rem; margin-top: 1rem; }
.footer-cols { display: flex; gap: clamp(2.5rem, 6vw, 5rem); flex-wrap: wrap; }
.footer-col h4 { font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--muted); margin-bottom: 1rem; font-weight: 500; }
.footer-col a { display: block; color: var(--ink-2); font-size: 0.94rem; padding: 0.3rem 0; transition: color 0.25s var(--ease); }
.footer-col a:hover { color: var(--gold); }
.footer-bottom { margin-top: clamp(2.5rem, 5vw, 4rem); padding-top: 1.8rem; border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between; align-items: center; }
.footer-bottom, .footer-bottom a { color: var(--muted); font-size: 0.82rem; }
.footer-legal { display: flex; gap: 0.4rem 1.4rem; flex-wrap: wrap; align-items: center; }
/* comfortable touch height without changing the visual rhythm */
@media (pointer: coarse) {
  .footer-legal a, .footer-col a, .pep-link, .legal-nav a, .contact-mail,
  .coaching-second a, .cta-note a {
    display: inline-flex; align-items: center; min-height: 44px;
  }
}

/* ============================================================
   MOTION UTILITIES (progressive enhancement)
   Content is visible by default; .js gates the hidden state.
   ============================================================ */
.js .reveal { opacity: 0; transform: translateY(30px); filter: blur(8px); transition: opacity 1s var(--ease), transform 1.1s var(--ease), filter 1s var(--ease); }
.js .reveal.in { opacity: 1; transform: none; filter: none; }
.js .reveal-stagger > * { opacity: 0; transform: translateY(24px); filter: blur(6px); transition: opacity 0.9s var(--ease), transform 1s var(--ease), filter 0.9s var(--ease); }
.js .reveal-stagger.in > * { opacity: 1; transform: none; filter: none; }
.js .reveal-stagger.in > *:nth-child(1) { transition-delay: 0.05s; }
.js .reveal-stagger.in > *:nth-child(2) { transition-delay: 0.13s; }
.js .reveal-stagger.in > *:nth-child(3) { transition-delay: 0.21s; }
.js .reveal-stagger.in > *:nth-child(4) { transition-delay: 0.29s; }
.js .reveal-stagger.in > *:nth-child(5) { transition-delay: 0.37s; }
.js .reveal-stagger.in > *:nth-child(6) { transition-delay: 0.45s; }

.float { animation: float 6s var(--ease) infinite; }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14px); } }

/* ============================================================
   MOBILE NAV + RESPONSIVE
   ============================================================ */
@media (max-width: 800px) {
  .nav-burger { display: flex; }
  .nav-links {
    position: fixed;
    inset: 0 0 0 auto;
    width: min(80vw, 340px);
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 1.8rem;
    padding: 2rem clamp(1.5rem, 6vw, 3rem);
    background: oklch(0.15 0.008 62 / 0.96);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border-left: 1px solid var(--line);
    transform: translateX(100%);
    transition: transform 0.5s var(--ease);
    z-index: var(--z-menu);
  }
  .nav-links.open { transform: translateX(0); }
  .nav-link { font-size: 1.4rem; font-family: var(--display); text-transform: uppercase; }
  .nav-links .btn { width: 100%; margin-top: 0.5rem; }
}

/* static verification mode (?nomotion): finalizes all entrance states */
.nomotion .reveal, .nomotion .reveal-stagger > *, .nomotion .h-rise {
  opacity: 1 !important; transform: none !important; filter: none !important; animation: none !important;
}
.nomotion .hero-media .frame img { transform: none !important; }
.nomotion .firefly { animation-play-state: paused; }
html.nomotion { scroll-behavior: auto !important; }

/* ============================================================
   PEPTIDES: research primer
   ============================================================ */
:root {
  --flag: oklch(0.68 0.13 32);
  --flag-soft: oklch(0.68 0.13 32 / 0.13);
  --flag-line: oklch(0.68 0.13 32 / 0.34);
}

/* standing advisory band */
.notice {
  display: flex;
  gap: clamp(0.9rem, 2vw, 1.4rem);
  align-items: flex-start;
  border: 1px solid var(--flag-line);
  border-radius: var(--radius);
  background: var(--flag-soft);
  padding: clamp(1.1rem, 2.4vw, 1.5rem) clamp(1.2rem, 2.6vw, 1.8rem);
}
.notice-ico {
  flex: none;
  width: 34px; height: 34px;
  display: grid; place-items: center;
  border-radius: 9px;
  border: 1px solid var(--flag-line);
  color: var(--flag);
}
.notice-ico svg { width: 18px; height: 18px; }
.notice b {
  display: block;
  font-family: var(--mono);
  font-size: 0.7rem; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--flag);
  margin-bottom: 0.5rem;
}
.notice p { font-size: 0.88rem; color: var(--ink-2); max-width: 78ch; }
.notice p + p { margin-top: 0.5rem; }

/* amino-acid length chart */
.aabars { list-style: none; display: grid; gap: 0.7rem; }
.aabar {
  display: grid;
  grid-template-columns: minmax(9ch, 15ch) 1fr 5ch;
  gap: clamp(0.7rem, 2vw, 1.2rem);
  align-items: center;
}
.aabar-name { font-family: var(--mono); font-size: 0.74rem; letter-spacing: 0.04em; color: var(--ink-2); }
.aabar-track {
  position: relative;
  height: 12px;
  border-radius: 3px;
  background: var(--surface);
  border: 1px solid var(--line);
  overflow: hidden;
}
.aabar-fill {
  position: absolute; inset: 0 auto 0 0;
  width: var(--w);
  background: linear-gradient(90deg, var(--gold-deep), var(--gold));
  border-radius: 2px;
}
.aabar--protein .aabar-fill { background: linear-gradient(90deg, var(--line-2), var(--muted)); }
.aabar-num { font-family: var(--mono); font-size: 0.74rem; color: var(--gold); text-align: right; }
.aabar--protein .aabar-num { color: var(--muted); }
.aascale {
  position: relative;
  margin-top: 0.9rem;
  grid-column: 2 / 3;
}
.aakey {
  display: flex; flex-wrap: wrap; gap: 1.4rem;
  margin-top: 1.6rem; padding-top: 1.2rem;
  border-top: 1px solid var(--line);
  font-family: var(--mono); font-size: 0.68rem; letter-spacing: 0.1em;
  text-transform: uppercase; color: var(--muted);
}
.aakey span { display: inline-flex; align-items: center; gap: 0.55em; }
.aakey i { width: 22px; height: 8px; border-radius: 2px; display: inline-block; }
.aakey i.is-pep { background: linear-gradient(90deg, var(--gold-deep), var(--gold)); }
.aakey i.is-pro { background: linear-gradient(90deg, var(--line-2), var(--muted)); }
@media (max-width: 620px) {
  .aabar { grid-template-columns: minmax(8ch, 11ch) 1fr 4ch; gap: 0.6rem; }
  .aabar-name { font-size: 0.66rem; }
}

/* compound cards */
.pep-group { margin-top: clamp(2.6rem, 5vw, 4rem); }
.pep-group-head {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.6rem 1.2rem;
  padding-bottom: 1rem; margin-bottom: 1.8rem;
  border-bottom: 1px solid var(--line);
}
.pep-group-head .h3 { margin: 0; }
.pep-group-head p { font-size: 0.86rem; color: var(--muted); max-width: 60ch; flex: 1 1 22ch; }

/* flex rather than grid so a trailing partial row centres instead of orphaning left */
.pep-grid {
  --pep-gap: clamp(1rem, 2vw, 1.5rem);
  display: flex; flex-wrap: wrap; justify-content: center;
  gap: var(--pep-gap);
}
.pep {
  flex: 1 1 290px;
  max-width: calc((100% - var(--pep-gap) * 2) / 3);
  display: flex; flex-direction: column;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: linear-gradient(180deg, var(--surface), var(--bg));
  padding: clamp(1.3rem, 2.6vw, 1.7rem);
  transition: border-color 0.3s var(--ease), transform 0.3s var(--ease);
}
.pep:hover { border-color: var(--gold-line); transform: translateY(-3px); }
.pep-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.pep-top h3 { font-size: var(--step-1); line-height: 1.05; margin: 0; }
.pep-aa {
  flex: none;
  font-family: var(--mono); font-size: 0.64rem; letter-spacing: 0.1em;
  color: var(--muted); border: 1px solid var(--line);
  border-radius: 5px; padding: 0.3em 0.55em; white-space: nowrap;
}
.pep-mech { font-size: 0.9rem; color: var(--ink-2); margin: 0.9rem 0 0; }

/* peptides page header: copy left, product vial right */
.pep-hero { align-items: center; }
.pep-hero-media {
  position: relative;
  display: grid;
  place-items: center;
  min-width: 0;
}
.pep-hero-media::before {
  content: "";
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  background: radial-gradient(circle, oklch(0.80 0.115 84 / 0.16), transparent 68%);
  filter: blur(26px);
}
.pep-hero-media img {
  position: relative;
  width: 100%;
  max-width: 460px;
  height: auto;
}
@media (max-width: 860px) {
  .pep-hero { gap: clamp(0.8rem, 2.5vw, 1.6rem); }
  .pep-hero-media { order: -1; }
  .pep-hero-media img { max-width: min(250px, 50vw); }
}
@media (max-width: 430px) {
  .pep-hero-media img { max-width: min(210px, 46vw); }
}
/* small, short phones (iPhone SE class): trim further so the anchor link
   still lands above the fold */
@media (max-width: 400px) and (max-height: 700px) {
  .pep-hero-media img { max-width: min(158px, 40vw); }
  .pep-hero { gap: 0.6rem; }
  .pep-hero .ph-actions { margin-top: 0.5rem; }
}
/* wide but short (landscape phones): stay two-up so the vial doesn't push the
   headline and CTA off-screen */
@media (max-width: 860px) and (min-aspect-ratio: 1/1) {
  .pep-hero { grid-template-columns: 1.1fr 0.9fr; }
  .pep-hero-media { order: 0; }
}
@media (max-height: 700px) and (min-width: 861px) {
  .pep-hero-media img { max-width: min(360px, 34vh); }
}
/* very short viewports: the vial isn't worth the vertical budget */
@media (max-height: 560px) { .pep-hero-media { display: none; } }

/* what the compound is actually used for, the first thing you read on a card */
.pep-use {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5em;
  margin: 0.95rem 0 0;
  font-family: var(--display); font-weight: 700; font-size: 1.12rem;
  letter-spacing: 0.01em; line-height: 1.15; color: var(--gold);
}
.pep-use span {
  flex: none;
  font-family: var(--mono); font-weight: 500; font-size: 0.58rem;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--muted);
}
.pep-what { font-size: 0.9rem; color: var(--ink-2); margin: 0.85rem 0 0; }

/* evidence tier chip */
.ev {
  display: inline-flex; align-items: center; gap: 0.5em;
  align-self: flex-start;
  margin-top: 0.9rem;
  font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.13em; text-transform: uppercase;
  border-radius: 999px; padding: 0.42em 0.8em;
}
.ev::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.ev--none { color: var(--flag); background: var(--flag-soft); border: 1px solid var(--flag-line); }
.ev--thin { color: var(--gold-deep); background: oklch(0.66 0.12 70 / 0.13); border: 1px solid oklch(0.66 0.12 70 / 0.32); }
.ev--part { color: var(--gold); background: var(--gold-soft); border: 1px solid var(--gold-line); }
.ev--rct  { color: var(--gold-bright); background: var(--gold-soft); border: 1px solid var(--gold-line); }

.pep-facts { margin: 1.2rem 0 0; display: grid; gap: 0.7rem; }
.pep-facts > div { display: grid; grid-template-columns: 7.5ch 1fr; gap: 0.9rem; }
.pep-facts dt {
  font-family: var(--mono); font-size: 0.6rem; letter-spacing: 0.11em; text-transform: uppercase;
  color: var(--muted); padding-top: 0.15em;
}
.pep-facts dd { font-size: 0.84rem; color: var(--ink-2); }
.pep-facts .is-flag dd { color: var(--ink-2); }
.pep-facts .is-flag dt { color: var(--flag); }
.pep-foot { margin-top: auto; padding-top: 1.3rem; }
.pep-link {
  display: inline-flex; align-items: center; gap: 0.5em;
  font-family: var(--mono); font-size: 0.68rem; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--gold); border-bottom: 1px solid transparent; padding-bottom: 2px;
  transition: border-color 0.25s var(--ease);
}
.pep-link:hover { border-bottom-color: var(--gold-line); }
.pep-link svg { width: 13px; height: 13px; }

/* purity / COA callout rows */
.verify { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: clamp(1rem, 2vw, 1.5rem); }
.verify-card {
  border: 1px solid var(--line); border-radius: var(--radius);
  padding: clamp(1.3rem, 2.6vw, 1.7rem);
  background: var(--surface);
}
.verify-card h3 { font-size: var(--step-1); margin-bottom: 0.8rem; }
.verify-card p { font-size: 0.88rem; color: var(--ink-2); }
.verify-card .spec { margin-bottom: 0.9rem; }
.verify-card--flag { border-color: var(--flag-line); background: var(--flag-soft); }

.does { list-style: none; display: grid; gap: 0.65rem; margin-top: 1rem; }
.does li { position: relative; padding-left: 1.7rem; font-size: 0.86rem; color: var(--ink-2); }
.does li::before {
  content: ""; position: absolute; left: 0; top: 0.42em;
  width: 11px; height: 11px; border-radius: 50%;
  border: 1.5px solid var(--gold); background: var(--gold-soft);
}
.does.is-not li::before { border-color: var(--flag); background: var(--flag-soft); }

/* Y&P Labs wordmark */
.ynp-logo {
  display: block;
  width: auto;
  height: clamp(46px, 6.5vw, 66px);
  margin: 1.1rem 0 0.2rem;
}
.ynp-logo--sm { height: clamp(38px, 5vw, 48px); margin: 0 0 0.2rem; }
.promo-body .ynp-logo { margin-left: -2px; }

/* mid-page partner band */
.ynp-band {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: clamp(1.2rem, 3vw, 2.4rem);
  margin-top: clamp(2.6rem, 5vw, 4rem);
  padding: clamp(1.4rem, 3vw, 2rem) clamp(1.5rem, 3.2vw, 2.4rem);
  border: 1px solid var(--gold-line);
  border-radius: var(--radius);
  background: linear-gradient(100deg, var(--gold-soft), transparent 70%), var(--surface);
}
.ynp-band-body { flex: 1 1 32ch; }
.ynp-band .h3 { margin: 0.6rem 0 0.5rem; font-size: var(--step-1); }
.ynp-band p { font-size: 0.9rem; max-width: 62ch; }
.ynp-band .btn { flex: none; }

/* two-up panels that should top-align rather than centre */
.split--top { align-items: stretch; }
.split--top > .panel { align-self: stretch; }

@media (max-width: 1080px) { .pep { max-width: calc((100% - var(--pep-gap)) / 2); } }
@media (max-width: 700px)  { .pep { max-width: 100%; } }

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
  }
  .js .reveal, .js .reveal-stagger > *, .js .hero .h-rise { opacity: 1 !important; transform: none !important; filter: none !important; }
  .hero-media .frame img { transform: none !important; }
  .firefly { opacity: 0.5; }
}

/* ============================================================
   APPLY FORM  (apply.html)
   Ported from the Velveyta application form and re-themed. The
   markup is one ordinary <form> with three <fieldset>s: JS turns
   it into steps, and without JS every fieldset is visible, the
   step chrome is hidden and the form posts normally.
   Scoped under .apply throughout, because the contact page uses
   the plainer .field rules above and must not inherit any of this.
   ============================================================ */
.apply { padding-bottom: clamp(4rem, 8vw, 6rem); }
.apply-grid { display: grid; gap: clamp(2rem, 4vw, 3.5rem); align-items: start; }
@media (min-width: 62em) {
  .apply-grid { grid-template-columns: minmax(0, 1fr) minmax(0, 20rem); }
}

/* progress */
.apply .steps-bar { display: flex; gap: 0.5rem; margin-bottom: 2.2rem; }
.apply .steps-bar i {
  flex: 1; height: 3px; background: var(--surface-2); border-radius: 2px;
  transition: background 0.4s var(--ease);
}
.apply .steps-bar i.on { background: var(--gold); }
.apply .steps-count { display: block; margin-bottom: 0.8rem; }

/* Steps exist only when JS does. */
.apply .fs { border: 0; padding: 0; margin: 0 0 2.5rem; }
.apply .fs legend { padding: 0; margin-bottom: 0.5rem; }
.apply .fs-intro { color: var(--muted); font-size: 0.95rem; margin-bottom: 1.9rem; }
.apply .fs[hidden] { display: block; }            /* beats the UA display:none */
.apply .steps-bar, .apply .steps-count,
.apply #back, .apply #next { display: none; }

.js .apply .fs { margin-bottom: 0; }
.js .apply .fs[hidden] { display: none; }
.js .apply .steps-bar { display: flex; }
.js .apply .steps-count { display: block; }
.js .apply #back, .js .apply #next { display: inline-flex; }
/* .btn sets display:inline-flex, which outranks the UA's [hidden] rule, so
   every button the step machine hides has to be told again. The ID selectors
   are needed as well as the class one: `.js .apply #next` above is more
   specific than `.apply .form-nav .btn[hidden]` and would otherwise win. */
.apply .form-nav .btn[hidden],
.js .apply #back[hidden],
.js .apply #next[hidden],
.js .apply #send[hidden] { display: none; }

/* fields: the contact form's .field is flex column, which suits this too,
   but the labels here are sentences rather than mono spec tags */
.apply .field { margin-bottom: 1.5rem; gap: 0; }
.apply .field > label,
.apply .field > .field-label {
  display: block; margin-bottom: 0.55rem;
  font-family: var(--body); font-size: 0.95rem; font-weight: 600;
  letter-spacing: 0; text-transform: none; color: var(--ink);
}
.apply .field-req { color: var(--gold); }
.apply .field-hint {
  display: block; margin-top: 0.45rem;
  color: var(--muted); font-size: 0.82rem; line-height: 1.55;
}
.apply .field-hint a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }

.apply .field input[type=text],
.apply .field input[type=email],
.apply .field input[type=tel],
.apply .field input[type=url],
.apply .field select,
.apply .field textarea {
  width: 100%; min-height: 50px;
  padding: 0.85rem 1.05rem;
  background: var(--void);
  border: 1px solid var(--line-2);
  border-radius: 12px;
  color: var(--ink);
  font: inherit;
  font-size: 1rem;                 /* 16px: stops iOS zooming on focus */
  transition: border-color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.apply .field textarea { min-height: 8rem; resize: vertical; line-height: 1.6; }
.apply .field select {
  appearance: none; cursor: pointer; padding-right: 2.6rem;
  background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%),
                    linear-gradient(135deg, var(--muted) 50%, transparent 50%);
  background-position: calc(100% - 20px) 55%, calc(100% - 15px) 55%;
  background-size: 5px 5px, 5px 5px; background-repeat: no-repeat;
}
/* only reachable with JS off, where it is a real scrolling list */
.apply .field select[multiple] {
  background-image: none; padding: 0.5rem 0.7rem; cursor: default; min-height: 0;
}
.apply .field select[multiple] option { padding: 0.4rem 0.35rem; }
.apply .field input:focus, .apply .field select:focus, .apply .field textarea:focus {
  outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px var(--gold-soft);
}
.apply .field input::placeholder, .apply .field textarea::placeholder { color: var(--muted); }

/* two controls, one label row, one shared error */
.apply .field--split { display: grid; gap: 1rem; }
@media (min-width: 34em) { .apply .field--split { grid-template-columns: 1fr 1fr; } }
.apply .field--split .err,
.apply .field--split > .field-hint { grid-column: 1 / -1; margin-top: 0; }
.apply .field-part { min-width: 0; }
.apply .field-part > label {
  display: block; margin-bottom: 0.55rem;
  font-family: var(--body); font-size: 0.95rem; font-weight: 600;
  letter-spacing: 0; text-transform: none; color: var(--ink);
}
.apply .field-part > input[hidden], .apply .field-part > select[hidden] { display: none; }

/* City and region wait for a country, because the label depends on it.
   Without JS there is no country to wait for, so the pair is just visible. */
.apply [data-place][hidden] { display: grid; }
.js .apply [data-place][hidden] { display: none; }
.js .apply [data-place] { opacity: 0; transform: translateY(-6px); }
.js .apply [data-place].is-in {
  opacity: 1; transform: none;
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease);
}

/* date of birth: month wants the room, day and year do not */
.apply .dob { display: grid; grid-template-columns: 1.5fr 1fr 1.15fr; gap: 0.6rem; }

/* height and weight: a unit switch, then dropdowns whose shape follows
   the unit. Without JS both sets show and the radio records which was used. */
.apply .units {
  display: inline-flex; margin-bottom: 0.8rem;
  border: 1px solid var(--line-2); border-radius: 999px; overflow: hidden;
}
.apply .unit {
  position: relative; padding: 0.55rem 1.05rem;
  font-family: var(--mono); font-size: 0.66rem; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--muted); cursor: pointer;
  transition: background 0.25s var(--ease), color 0.25s var(--ease);
}
.apply .unit + .unit { border-left: 1px solid var(--line-2); }
.apply .unit input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.apply .unit:hover { color: var(--ink); }
.apply .unit:has(input:checked) { background: var(--gold); color: var(--gold-ink); }
.apply .unit:has(input:focus-visible) { outline: 2px solid var(--gold-bright); outline-offset: -2px; }

.apply .measure { display: grid; gap: 0.6rem; }
.apply .measure--2 { grid-template-columns: 1fr 1fr; }
.apply [data-unit][hidden] { display: grid; }     /* no JS: show every unit */
.js .apply .measure[hidden] { display: none; }
.apply .field.is-bad .units { border-color: var(--gold-deep); }
.apply [data-conv]:empty { display: none; }

/* checkbox groups. These labels are sentences, so they must beat the
   mono uppercase .field label rule the contact form relies on. */
.apply .opts { display: grid; gap: 0.55rem; }
@media (min-width: 34em) { .apply .opts--2 { grid-template-columns: 1fr 1fr; } }
.apply .opt {
  display: flex; align-items: flex-start; gap: 0.75rem;
  padding: 0.85rem 1rem;
  border: 1px solid var(--line-2); border-radius: 12px;
  cursor: pointer;
  font-family: var(--body); font-size: 0.94rem; font-weight: 500;
  letter-spacing: 0; text-transform: none; color: var(--ink-2);
  transition: border-color 0.25s var(--ease), color 0.25s var(--ease), background 0.25s var(--ease);
}
.apply .opt:hover { border-color: var(--line-2); color: var(--ink); background: var(--surface); }
.apply .opt input { accent-color: var(--gold); margin-top: 0.15rem; flex: none; width: 17px; height: 17px; }
.apply .opt:has(input:checked) { border-color: var(--gold-line); color: var(--ink); background: var(--gold-soft); }
.apply .opt:has(input:focus-visible) { outline: 2px solid var(--gold-bright); outline-offset: 2px; }
.apply .opt a { color: var(--gold); text-decoration: underline; text-underline-offset: 3px; }

/* errors */
.apply .field.is-bad input,
.apply .field.is-bad select,
.apply .field.is-bad textarea { border-color: var(--gold-deep); }
.apply .err {
  display: none; margin-top: 0.45rem;
  color: var(--gold-bright); font-size: 0.82rem; font-weight: 600;
}
.apply .field.is-bad .err { display: block; }

.apply .form-nav { display: flex; flex-wrap: wrap; gap: 1rem; margin-top: 2.2rem; }
.apply .form-nav .btn { flex: 1 1 auto; justify-content: center; }
@media (min-width: 34em) { .apply .form-nav .btn { flex: 0 0 auto; min-width: 11rem; } }

.apply .form-status { margin-top: 1.3rem; font-size: 0.94rem; color: var(--ink-2); }
.apply .form-status:empty { margin: 0; }
.apply .form-status[data-state="error"] { color: var(--gold-bright); }

/* success panel */
.apply .done { display: none; text-align: center; padding: clamp(2rem, 5vw, 3.5rem) 0; }
.apply .done.is-on { display: block; }
.apply .done-tick {
  width: 58px; height: 58px; margin: 0 auto 1.6rem;
  display: grid; place-items: center;
  border-radius: 50%; background: var(--gold); color: var(--gold-ink);
}
.apply .done h2 { margin-bottom: 1rem; }

/* aside */
.apply-aside {
  border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: clamp(1.4rem, 2.5vw, 1.9rem);
  background: var(--surface);
}
.apply-aside > .spec { display: block; padding-bottom: 1rem; margin-bottom: 1.1rem; border-bottom: 1px solid var(--line); }
.apply-aside ul { list-style: none; display: grid; gap: 0.95rem; }
.apply-aside li { display: grid; grid-template-columns: 1rem 1fr; gap: 0.75rem; font-size: 0.92rem; color: var(--ink-2); }
.apply-aside svg { margin-top: 0.3rem; color: var(--gold); }
.apply-aside .field-hint { margin-top: 1.3rem; padding-top: 1.1rem; border-top: 1px solid var(--line); }

/* ------------------------------------------------------------
   Styled dropdowns
   A native <select> can be styled shut but not open: the option
   list is drawn by the OS, so it arrives white on a dark page and
   cannot carry a flag. Every dropdown here stays an ordinary
   <select>, which is what actually submits, hidden behind a
   listbox built from its own options.
   ------------------------------------------------------------ */
.apply .flag {
  flex: none; width: 22px; height: 16.5px;
  object-fit: cover; border-radius: 2px;
  background: var(--surface-2);
  box-shadow: inset 0 0 0 1px oklch(1 0 0 / 0.14);
}

.apply .cbx { position: relative; }
.js .apply select.is-swapped { display: none; }

.apply .cbx-btn {
  display: flex; align-items: center; gap: 0.7rem;
  width: 100%; min-height: 50px;
  padding: 0.85rem 2.6rem 0.85rem 1.05rem;
  background: var(--void);
  border: 1px solid var(--line-2); border-radius: 12px;
  color: var(--ink); font: inherit; font-size: 1rem; text-align: left; cursor: pointer;
  transition: border-color 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.apply .cbx-btn::after {
  content: ''; position: absolute; right: 1.15rem; top: 50%;
  width: 7px; height: 7px; margin-top: -5px;
  border-right: 2px solid var(--muted); border-bottom: 2px solid var(--muted);
  transform: rotate(45deg);
  transition: transform 0.25s var(--ease), border-color 0.25s var(--ease);
}
.apply .cbx-btn:hover { border-color: var(--gold-line); }
.apply .cbx-btn:focus-visible { outline: none; border-color: var(--gold); box-shadow: 0 0 0 3px var(--gold-soft); }
.apply .cbx.is-open .cbx-btn { border-color: var(--gold); box-shadow: 0 0 0 3px var(--gold-soft); }
.apply .cbx.is-open .cbx-btn::after { transform: rotate(225deg); margin-top: -2px; border-color: var(--gold); }
.apply .cbx-val { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.apply .cbx-val.is-empty { color: var(--muted); }
.apply .field.is-bad .cbx-btn { border-color: var(--gold-deep); }

.apply .cbx-pop {
  position: absolute; z-index: 40; top: calc(100% + 5px); left: 0; right: 0;
  background: var(--surface);
  border: 1px solid var(--line-2); border-radius: 14px;
  box-shadow: 0 22px 50px oklch(0 0 0 / 0.6);
  overflow: hidden;
}
.apply .cbx-pop[hidden] { display: none; }
.apply .cbx.is-up .cbx-pop { top: auto; bottom: calc(100% + 5px); box-shadow: 0 -22px 50px oklch(0 0 0 / 0.6); }

/* three classes deep on purpose: it has to beat .apply .field input[type=text] */
.apply .field .cbx .cbx-search {
  display: block; width: 100%; min-height: 46px;
  padding: 0.75rem 1.05rem;
  background: var(--void); border: 0; border-bottom: 1px solid var(--line);
  border-radius: 0; box-shadow: none;
  color: var(--ink); font: inherit; font-size: 1rem;
}
.apply .field .cbx .cbx-search:focus { outline: none; box-shadow: none; background: var(--void); }
.apply .field .cbx .cbx-search[hidden] { display: none; }

.apply .cbx-list {
  list-style: none; padding: 0; margin: 0;
  max-height: min(19rem, 46vh); overflow-y: auto; overscroll-behavior: contain;
}
.apply .cbx-group {
  padding: 0.75rem 1.05rem 0.35rem;
  font-family: var(--mono); font-size: 0.62rem; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--muted);
}
.apply .cbx-opt {
  display: flex; align-items: center; gap: 0.7rem;
  padding: 0.62rem 1.05rem;
  font-size: 0.94rem; color: var(--ink-2); cursor: pointer;
}
.apply .cbx-opt:hover, .apply .cbx-opt.is-active { background: var(--surface-2); color: var(--ink); }
.apply .cbx-opt[aria-selected="true"] { color: var(--ink); font-weight: 700; }
.apply .cbx-opt[aria-selected="true"]::after {
  content: ''; margin-left: auto; flex: none;
  width: 6px; height: 11px; margin-top: -3px;
  border-right: 2px solid var(--gold); border-bottom: 2px solid var(--gold);
  transform: rotate(45deg);
}
.apply .cbx-opt[hidden], .apply .cbx-group[hidden] { display: none; }
.apply .cbx-none { padding: 1rem 1.05rem; font-size: 0.94rem; color: var(--muted); }
.apply .cbx-none[hidden] { display: none; }

@media (prefers-reduced-motion: reduce) {
  .js .apply [data-place] { transform: none; transition: none; }
}
