/* =====================================================
   NeuroHome shared design system - NeuroSage brand match
   Palette + typography sourced from neurosolutionlc.com
   ===================================================== */

:root {
  /* Surfaces */
  --bg: #FAFAFA;            /* matches --light-grey */
  --bg-warm: #F2F2F2;       /* matches --grey */
  --bg-card: #FFFFFF;
  --bg-dark: #0E0E0E;       /* matches --black */
  --bg-dark-card: #1A1A1A;
  --bg-dark-warm: #31312E;  /* matches --dark-grey */

  /* Borders + text */
  --border: rgba(14,14,14,0.08);
  --border-hover: rgba(14,14,14,0.16);
  --text: #0E0E0E;
  --text-2: #31312E;
  --text-3: #6B6B68;
  --text-inv: #FAFAFA;

  /* Brand colors */
  --brand: #00CEFD;          /* blue - primary accent on neurosolutionlc */
  --brand-light: #E6F8FE;
  --brand-glow: rgba(0,206,253,0.18);
  --brand-deep: #0099C2;
  --grad-cta: linear-gradient(135deg, var(--ink-navy) 0%, #0a0f1c 100%);
  --grad-cta-hover: linear-gradient(135deg, #1f3a63 0%, #0e1528 100%);
  --brand-text: #0A7A99;     /* darker cyan for TEXT on light backgrounds - WCAG AA ~4.7:1 */
  --ink-navy: #16294a;       /* display numbers + CTA gradient light stop (single source) */

  --accent-red: #F10433;     /* red - used sparingly, secondary CTA highlight */
  --accent-green: #0BDA51;   /* green - success / positive indicator */

  /* Aliases kept for backwards-compat so we don't have to refactor every selector */
  --teal: var(--brand);
  --teal-light: var(--brand-light);
  --teal-glow: var(--brand-glow);
  --blue: var(--brand);
  --purple: #6B5BD2;
  --amber: #F5A623;

  /* Geometry */
  --radius: 20px;
  --radius-sm: 12px;
  --radius-lg: 28px;
  --radius-pill: 100px;

  /* Vertical section rhythm - one scale, not four ad hoc clamps */
  --section-y: clamp(72px, 9vw, 112px);
  --section-y-tight: clamp(40px, 4.5vw, 64px);

  /* Shadows */
  --shadow-sm: 0 1px 3px rgba(14,14,14,0.04), 0 1px 2px rgba(14,14,14,0.02);
  --shadow-md: 0 6px 24px rgba(14,14,14,0.06), 0 2px 6px rgba(14,14,14,0.03);
  --shadow-lg: 0 16px 56px rgba(14,14,14,0.10), 0 4px 12px rgba(14,14,14,0.04);
  --shadow-brand: 0 8px 32px rgba(0,206,253,0.22);
}

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; overflow-x: hidden; }

body {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  background: var(--bg-card); color: var(--text);
  overflow-x: hidden; line-height: 1.55;
  font-feature-settings: 'cv11', 'ss01', 'ss03';
}

/* Reveal animations
   Progressive enhancement: content is visible by DEFAULT. The hidden/animated
   state applies only when JS is confirmed live (html.js, set synchronously in
   <head>). If JS is blocked, errors, or is slow to parse (common in in-app
   social browsers and with content blockers), all content still renders.
   The above-fold hero is never gated on the observer. */
.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(28px); transition: opacity 0.7s cubic-bezier(0.22,1,0.36,1), transform 0.7s cubic-bezier(0.22,1,0.36,1); }
.js .reveal.visible { opacity: 1; transform: translateY(0); }
.js .hero .reveal { opacity: 1; transform: none; transition: none; }
.reveal-d1 { transition-delay: 0.08s; }
.reveal-d2 { transition-delay: 0.16s; }
.reveal-d3 { transition-delay: 0.24s; }
.reveal-d4 { transition-delay: 0.32s; }
.reveal-d5 { transition-delay: 0.40s; }
.reveal-d6 { transition-delay: 0.48s; }

/* Nav */
/* Nav content is pinned to the viewport edges rather than being centred inside
   a 1120px column, so the brand sits top left and the links and CTA top right
   at any width. The previous formula left ~470px of dead space either side on a
   1512px screen. */
.nav { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; height: 72px; display: flex; align-items: center; justify-content: space-between; padding: 0 clamp(20px, 3vw, 44px); background: rgba(250,250,250,0.82); backdrop-filter: blur(28px) saturate(1.6); -webkit-backdrop-filter: blur(28px) saturate(1.6); border-bottom: 1px solid var(--border); transition: all 0.35s ease; }
.nav.scrolled { box-shadow: var(--shadow-sm); }
.nav-brand { font-family: 'Outfit', sans-serif; color: var(--text); text-decoration: none; display: flex; align-items: center; gap: 12px; line-height: 1.1; }
.nav-brand-mark { display: block; flex-shrink: 0; width: 44px; height: 44px; }
.nav-brand-wordmark { display: flex; flex-direction: column; gap: 2px; }
.nav-brand-name { font-size: 22px; font-weight: 800; letter-spacing: -0.5px; }
.nav-brand-name span { color: var(--teal); }
.nav-brand-tag { font-family: 'Inter', sans-serif; font-size: 10px; font-weight: 500; color: var(--text-3); letter-spacing: 0.4px; text-transform: uppercase; }
.nav-links { display: flex; align-items: center; gap: 32px; }
.nav-link { font-size: 14px; font-weight: 500; color: var(--text-3); text-decoration: none; cursor: pointer; transition: color 0.2s; position: relative; }
.nav-link:hover { color: var(--text); }
.nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; right: 0; height: 2px; background: var(--text-3); border-radius: 1px; transform: scaleX(0); transition: transform 0.25s cubic-bezier(0.22,1,0.36,1); }
.nav-link:hover::after { transform: scaleX(1); }
.nav-cta { font-family: 'Inter', sans-serif; font-size: 14px; font-weight: 600; color: #fff; background: var(--grad-cta); padding: 10px 24px; border-radius: var(--radius-pill); border: none; cursor: pointer; text-decoration: none; transition: all 0.25s; letter-spacing: -0.1px; box-shadow: 0 8px 26px rgba(12,18,38,0.28); }
.nav-cta:hover { background: var(--grad-cta-hover); color: #fff; transform: translateY(-1px); box-shadow: 0 12px 34px rgba(12,18,38,0.36); }
.nav-mobile-toggle { display: none; background: none; border: none; cursor: pointer; padding: 8px; }
.nav-mobile-toggle span { display: block; width: 22px; height: 2px; background: var(--text); margin: 5px 0; border-radius: 2px; transition: all 0.3s; }
/* This panel is a child of .nav, and .nav's backdrop-filter makes it the containing
   block for fixed-position descendants. So bottom:0 resolved against the 72px bar
   instead of the viewport: available height was 72 - 72 - 0 = 0, and box-sizing:
   border-box floored the box at padding plus border (65px) while every link
   overflowed onto the page with no background behind it. Broken since the first
   commit. Viewport units ignore the containing block, so the height is stated
   outright rather than inferred from top/bottom. dvh comes second so it wins where
   supported and vh covers the rest. The 72px here tracks .nav's height above. */
.nav-links.mobile-open { display: flex; flex-direction: column; position: fixed; top: 72px; left: 0; right: 0; bottom: auto; height: calc(100vh - 72px); height: calc(100dvh - 72px); overflow-y: auto; background: var(--bg); padding: 32px 24px; gap: 24px; z-index: 999; border-top: 1px solid var(--border); }
.nav-links.mobile-open .nav-link { font-size: 18px; }
.nav-links.mobile-open .nav-cta { text-align: center; padding: 14px 28px; font-size: 16px; }

/* No-JavaScript notice
   Only start.html renders this, inside <noscript>, so it costs every other
   page nothing. That page's country <select> is populated by JS and is
   required, so with scripting off the form can never validate and the submit
   button just silently does nothing. This strip says so.
   Sits one above .nav in the stack because the nav is position:fixed and would
   otherwise paint over the top of the notice. Horizontal padding matches the
   nav gutter so the two line up. --brand-light ground gives ~17.7:1 on --text
   and ~4.5:1 on the --brand-text link; --brand itself is never used for text
   here, it is ~1.9:1 and fails. */
.noscript-notice {
  position: relative;
  z-index: 1001;
  padding: 18px clamp(20px, 3vw, 44px);
  background: var(--brand-light);
  border-bottom: 2px solid var(--brand-text);
  color: var(--text);
  text-align: center;
}
.noscript-notice p { font-size: 15px; line-height: 1.6; }
.noscript-notice p + p { margin-top: 6px; color: var(--text-2); }
.noscript-notice a { color: var(--brand-text); text-decoration: underline; text-underline-offset: 2px; }

/* Buttons */
/* Buttons - dark pill primary, outlined secondary */
.btn-primary {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  background: var(--grad-cta);
  padding: 16px 32px;
  border-radius: var(--radius-pill);
  border: none;
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  transition: all 0.25s cubic-bezier(0.22,1,0.36,1);
  letter-spacing: -0.1px;
  box-shadow: 0 8px 26px rgba(12,18,38,0.28);
}
.btn-primary:hover {
  background: var(--grad-cta-hover);
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 12px 34px rgba(12,18,38,0.36);
}
.btn-primary svg { width: 16px; height: 16px; transition: transform 0.25s; }
.btn-primary:hover svg { transform: translateX(3px); }
.btn-secondary {
  font-family: 'Inter', sans-serif;
  font-size: 15px;
  font-weight: 500;
  color: var(--text);
  background: transparent;
  padding: 16px 28px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--border-hover);
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  transition: all 0.25s;
}
.btn-secondary:hover {
  border-color: var(--text);
  background: var(--text);
  color: var(--text-inv);
}

/* Shared keyboard-focus ring - specific components (FAQ, stepper) override below */
a:focus-visible, button:focus-visible { outline: 2px solid var(--brand-deep); outline-offset: 2px; }

/* Mid-page CTA - repeats the single existing action at the two points
   persuasion peaks (after proof, after mechanism). Desktop has no sticky
   CTA, so this captures the convinced visitor without a scroll back to nav. */
.mid-cta {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  text-align: center;
  max-width: 1320px;
  margin: 0 auto;
  padding: clamp(8px,3vw,28px) clamp(20px,4vw,56px) clamp(40px,6vw,64px);
}
.mid-cta-note { font-size: 14px; color: var(--text-3); letter-spacing: -0.1px; }

/* Reserve height for lazy-loaded Instagram embeds so proof does not reflow
   the page as it streams in (prevents layout shift / mis-taps). */
.testimonial-ig-wrap { min-height: 560px; }

/* Section primitives - NeuroSage rhythm:
   small eyebrow → big bold headline → comfortable sub */
.section { max-width: 1320px; margin: 0 auto; padding: var(--section-y) clamp(20px,4vw,56px); }
/* Full-bleed background stripe for a centered .section (alternating page rhythm).
   Uses a viewport-width pseudo behind content; body has overflow-x:hidden so 100vw is safe. */
.section-band { position: relative; z-index: 0; }
.section-band::before { content: ''; position: absolute; z-index: -1; top: 0; bottom: 0; left: 50%; width: 100vw; transform: translateX(-50%); background: var(--bg-warm); }
.section-eyebrow {
  font-family: 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.3px;
  text-transform: none;
  color: var(--text-2);
  margin-bottom: 18px;
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.section-eyebrow::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--brand);
  display: inline-block;
  box-shadow: 0 0 0 4px var(--brand-glow);
}
.section-title {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(32px,4.5vw,56px);
  font-weight: 800;
  color: var(--text);
  letter-spacing: -1.5px;
  margin-bottom: 18px;
  line-height: 1.05;
}
.section-sub {
  font-size: 17px;
  color: var(--text-2);
  max-width: 820px;
  line-height: 1.7;
  margin-bottom: 56px;
}
.section-title em {
  font-style: normal;
  color: var(--brand);
  background: none;
  -webkit-text-fill-color: var(--brand);
}

/* Hero (landing) */
.hero { position: relative; padding: clamp(92px,10vw,120px) clamp(20px,4vw,56px) clamp(44px,6vw,68px); overflow: hidden; }
.hero-bg { position: absolute; inset: 0; overflow: hidden; }
.hero-orb { position: absolute; border-radius: 50%; filter: blur(100px); pointer-events: none; animation: orbFloat 20s ease-in-out infinite; }
.hero-orb.o1 { width: 600px; height: 600px; background: rgba(0,206,253,0.08); top: -200px; right: 5%; }
.hero-orb.o2 { width: 450px; height: 450px; background: rgba(241,4,51,0.04); bottom: -100px; left: -100px; animation-delay: -7s; }
.hero-orb.o3 { width: 350px; height: 350px; background: rgba(0,206,253,0.05); top: 30%; left: 55%; animation-delay: -13s; }

/* Dotted-circle decorations (signature element from neurosolutionlc.com) */
.hero-dots { position: absolute; color: var(--text); opacity: 0.15; pointer-events: none; }
.hero-dots-tr { top: -40px; right: -80px; width: clamp(200px, 26vw, 360px); height: clamp(200px, 26vw, 360px); }
.hero-dots-bl { bottom: -60px; left: -60px; width: clamp(160px, 20vw, 260px); height: clamp(160px, 20vw, 260px); opacity: 0.10; }
@keyframes orbFloat { 0%,100% { transform: translate(0,0); } 33% { transform: translate(20px,-15px); } 66% { transform: translate(-15px,10px); } }
.hero-inner { max-width: 1320px; margin: 0 auto; position: relative; z-index: 2; }
.hero-grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: clamp(40px, 5vw, 72px);
  align-items: start;
}
.hero-photo-col { display: flex; flex-direction: column; gap: clamp(16px,1.8vw,22px); }
.hero-stats { display: flex; justify-content: space-between; gap: 10px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px 24px; box-shadow: var(--shadow-md); }
.hero-stat { flex: 1; text-align: center; }
.hero-stat-v { font-family: 'Outfit', sans-serif; font-size: clamp(20px,2.1vw,26px); font-weight: 800; color: var(--text); letter-spacing: -0.8px; line-height: 1; display: block; }
.hero-stat-l { font-size: 11px; color: var(--text-3); margin-top: 5px; display: block; line-height: 1.3; }
.hero-text { min-width: 0; }
.hero-photo-wrap {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  aspect-ratio: 1 / 1;
  box-shadow: var(--shadow-lg);
  background: var(--bg-warm);
}
.hero-photo-wrap picture, .hero-photo-wrap img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 30%;
}
/* Zoom in slightly, biased low, to crop the empty headroom above Dr. Kyle */
.hero-photo-wrap img { transform: scale(1.12); transform-origin: 50% 78%; }
.hero-photo-wrap::after {
  /* subtle bottom gradient so the photo edge doesn't compete with content below */
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(to bottom, rgba(0,0,0,0) 60%, rgba(0,0,0,0.06) 100%);
  pointer-events: none;
}

.hero-badge { display: inline-flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 500; color: var(--text); background: rgba(255,255,255,0.7); padding: 8px 18px 8px 14px; border-radius: var(--radius-pill); border: 1px solid var(--border); margin-bottom: 32px; backdrop-filter: blur(8px); }
.hero-badge .pulse { width: 8px; height: 8px; border-radius: 50%; background: var(--brand); animation: pulse 2s ease infinite; }
/* Pinned to the photo's top-right instead of sitting above the headline, so the
   credit line and the stat box read as one horizontal band. Inset matches the
   sibling .hero-stats card's own padding (18px/24px), which is the only inset
   convention this column has; .hero-photo-wrap itself carries no padding. It
   comfortably clears the wrap's 28px corner radius. The wrap is already
   position:relative and already clips with overflow:hidden, so nothing else
   changes. z-index lifts it over .hero-photo-wrap::after, the bottom-edge
   gradient, which is transparent up here but paints after children. */
.hero-photo-wrap .hero-badge { position: absolute; top: 18px; right: 24px; margin-bottom: 0; z-index: 2; }
@keyframes pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.4; transform: scale(0.85); } }
.hero-title { font-family: 'Outfit', sans-serif; font-size: clamp(36px,4.8vw,68px); font-weight: 800; line-height: 1.02; letter-spacing: -2px; color: var(--text); margin-bottom: 24px; }
.hero-title em { font-style: normal; color: var(--brand); background: none; -webkit-text-fill-color: var(--brand); }
.hero-sub { font-size: clamp(17px,1.8vw,20px); font-weight: 400; color: var(--text-2); max-width: 600px; line-height: 1.65; margin-bottom: 44px; }
.hero-actions { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.hero-proof { display: block; margin-top: 32px; padding-top: 32px; border-top: 1px solid var(--border); font-size: 14px; color: var(--text-3); line-height: 1.55; max-width: 640px; }
.hero-proof strong { color: var(--text); font-weight: 600; }

/* Sub-page hero (smaller, simpler) */

/* Stats bar */
.stats-bar { max-width: 1320px; margin: -36px auto 0; padding: 0 clamp(20px,4vw,56px); position: relative; z-index: 3; }
.stats-inner { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 36px 48px; display: flex; justify-content: space-between; box-shadow: var(--shadow-lg); }
.stat { text-align: center; flex: 1; }
.stat-value { font-family: 'Outfit', sans-serif; font-size: clamp(24px,3vw,34px); font-weight: 800; color: var(--text); letter-spacing: -1px; line-height: 1; }
.stat-label { font-size: 12px; color: var(--text-3); margin-top: 6px; font-weight: 500; letter-spacing: 0.2px; text-transform: none; }
.stat-divider { width: 1px; background: var(--border); margin: 0 16px; }

/* Trust bar */
.trust-bar { max-width: 1320px; margin: 0 auto; padding: 32px clamp(20px,4vw,56px) 0; }
.trust-inner { display: flex; align-items: center; justify-content: center; gap: 24px; flex-wrap: wrap; }
.trust-badge { display: flex; align-items: center; gap: 10px; padding: 10px 18px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-pill); transition: all 0.25s; }
.trust-badge:hover { box-shadow: var(--shadow-sm); }
.trust-badge-icon { width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; flex-shrink: 0; }
.trust-badge-icon.tb-hipaa { background: #EBF5FF; }
.trust-badge-icon.tb-tele { background: var(--teal-light); }
.trust-badge-icon.tb-lic { background: #F0EBFD; }
.trust-badge-icon.tb-safe { background: #FFF4E0; }
.trust-badge-text { font-size: 12px; font-weight: 600; color: var(--text-2); letter-spacing: 0.2px; }

/* =====================================================
   Dr. Kyle short intro (NEW for v5 - replaces old doctor section)
   ===================================================== */
.kyle-intro-section { padding: var(--section-y) 0; position: relative; overflow: hidden; }
.kyle-intro-section::before { content: ''; position: absolute; width: 500px; height: 500px; border-radius: 50%; background: var(--teal); filter: blur(200px); opacity: 0.04; top: -150px; right: -100px; pointer-events: none; }
.kyle-intro-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); display: grid; grid-template-columns: 1fr 1.3fr; gap: clamp(40px,5vw,72px); align-items: center; position: relative; z-index: 1; }
.kyle-photo-wrap { position: relative; }
.kyle-photo { width: 100%; aspect-ratio: 4/5; border-radius: var(--radius); overflow: hidden; position: relative; background: var(--bg-warm); border: 1px solid var(--border); box-shadow: var(--shadow-lg); }
.kyle-photo picture { display: block; width: 100%; height: 100%; }
.kyle-photo img { width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.kyle-content { display: flex; flex-direction: column; gap: 22px; }
.kyle-name { font-family: 'Outfit', sans-serif; font-size: clamp(28px,3.5vw,42px); font-weight: 800; color: var(--text); letter-spacing: -1px; line-height: 1.1; margin-bottom: 4px; }
.kyle-name-suffix { font-family: 'JetBrains Mono', monospace; font-size: 14px; font-weight: 600; color: var(--brand-text); letter-spacing: 1px; }
.kyle-bio { font-size: clamp(16px,1.7vw,18px); color: var(--text-2); line-height: 1.75; }
.kyle-bio strong { color: var(--text); font-weight: 600; }
.kyle-credentials { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.kyle-cred { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); transition: border-color 0.25s; }
.kyle-cred:hover { border-color: rgba(0,206,253,0.2); }
.kyle-cred-icon { width: 32px; height: 32px; border-radius: 8px; background: var(--teal-light); display: flex; align-items: center; justify-content: center; font-size: 14px; flex-shrink: 0; }
.kyle-cred-text { font-size: 13.5px; color: var(--text); font-weight: 500; line-height: 1.35; }
.kyle-cred-text strong { font-weight: 700; }
.kyle-cred-text small { display: block; font-size: 11px; color: var(--text-3); font-weight: 500; margin-top: 2px; }

/* =====================================================
   Legacy / What He's Done section
   ===================================================== */
.legacy-section { position: relative; padding: var(--section-y) 0; overflow: hidden; background: var(--bg-warm); }
/* Merged founder + practice section - text left, photo right, full-width map below */
.founder-section { position: relative; padding: var(--section-y) 0; overflow: hidden; background: var(--bg-card); }
.founder-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); position: relative; z-index: 1; }
.founder-top { display: grid; grid-template-columns: 1.05fr 0.95fr; gap: clamp(28px,4vw,56px); align-items: stretch; margin-bottom: clamp(36px,4vw,56px); }
.founder-text .section-eyebrow { margin-bottom: 16px; }
.founder-text .kyle-name { margin-bottom: 4px; }
.founder-text .kyle-name-suffix { margin-bottom: 20px; }
.founder-text .kyle-bio { margin-bottom: 26px; }
.founder-text .founder-practice-title { margin-bottom: 16px; }
.founder-text .legacy-lead { margin-bottom: 14px; }
.founder-text .legacy-lead:last-child { margin-bottom: 0; }
.founder-practice-title { font-family: 'Outfit', sans-serif; font-size: clamp(24px,3vw,34px); font-weight: 800; letter-spacing: -0.8px; line-height: 1.1; color: var(--text); }
.founder-practice-title em { font-style: normal; color: var(--brand); }
.founder-callout { margin: 22px 0 0; border-left: 4px solid var(--brand); background: var(--bg-card); border-radius: 0 var(--radius-sm) var(--radius-sm) 0; padding: 18px 22px; font-size: 16.5px; font-weight: 500; line-height: 1.6; color: var(--text); box-shadow: var(--shadow-sm); }
.founder-photo { position: relative; }
.founder-photo .kyle-photo { position: absolute; inset: 0; aspect-ratio: auto; }
.founder-photo .kyle-photo img { object-position: center 40%; }
.founder-map-card { position: relative; overflow: hidden; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: clamp(22px,3vw,32px); box-shadow: var(--shadow-lg); }
.founder-map-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--brand), var(--brand-deep)); }
.founder-map-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 6px; flex-wrap: wrap; }
.founder-map-head .clinics-card-eyebrow { margin-bottom: 0; }
.founder-map-locs { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--text-3); }
.founder-map-card .clinic-map-svg { width: 100%; height: auto; display: block; }
.founder-stats { display: grid; grid-template-columns: repeat(3,1fr); gap: 0; margin-top: 0; padding-top: 22px; border-top: 1px solid var(--border); }
.founder-stat { display: flex; gap: 14px; align-items: flex-start; padding: 0 clamp(16px,2vw,28px); }
.founder-stat:first-child { padding-left: 0; }
.founder-stat:last-child { padding-right: 0; }
.founder-stat-num { font-family: 'Outfit', sans-serif; font-size: 30px; font-weight: 800; line-height: 1; color: var(--ink-navy); letter-spacing: -1px; }
.founder-stat-text strong { font-family: 'Outfit', sans-serif; font-size: 15px; font-weight: 700; color: var(--text); display: block; }
.founder-stat-text small { font-size: 12.5px; color: var(--text-2); line-height: 1.5; display: block; margin-top: 3px; }
.founder-stat + .founder-stat { border-left: 1px solid var(--border); }
.founder-next { display: flex; align-items: center; gap: clamp(18px,2.5vw,36px); margin-top: clamp(12px,1.6vw,20px); padding-top: 22px; border-top: 1px solid var(--border); }
.founder-next-label { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--brand-text); white-space: nowrap; flex: none; }
.founder-next-text { font-size: 12.5px; color: var(--text-2); line-height: 1.5; margin: 0; flex: 1; }
.founder-next-btn { flex: none; }
@media (max-width: 760px) { .founder-next { flex-direction: column; align-items: flex-start; gap: 14px; } }
@media (max-width: 900px) {
  .founder-top { grid-template-columns: 1fr; }
  .founder-photo .kyle-photo { position: static; aspect-ratio: 4/5; height: auto; }
  .founder-stats { grid-template-columns: 1fr; gap: 0; }
  .founder-stat { padding: 16px 0 0; }
  .founder-stat:first-child { padding-top: 0; }
  .founder-stat + .founder-stat { border-left: none; border-top: 1px solid var(--border); }
}
.legacy-section::before { content: ''; position: absolute; width: 700px; height: 700px; border-radius: 50%; background: var(--teal); filter: blur(220px); opacity: 0.05; top: -300px; left: -150px; pointer-events: none; }
.legacy-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); position: relative; z-index: 1; }
.legacy-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px,5vw,80px); align-items: center; }
.legacy-title { font-family: 'Outfit', sans-serif; font-size: clamp(30px,4vw,52px); font-weight: 800; color: var(--text); letter-spacing: -1.2px; line-height: 1.08; margin-bottom: 22px; }
.legacy-title em { font-style: normal; color: var(--brand); background: none; -webkit-text-fill-color: var(--brand); }
.legacy-lead { font-size: clamp(16px,1.7vw,18px); color: var(--text-2); line-height: 1.75; margin-bottom: 28px; }
.legacy-lead strong { color: var(--text); font-weight: 600; }
.legacy-pivot { display: inline-flex; align-items: center; gap: 8px; padding: 10px 20px; background: var(--teal-light); border: 1px solid rgba(0,206,253,0.18); border-radius: var(--radius-pill); font-size: 14px; font-weight: 600; color: #0099C2; }
.legacy-pivot::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--teal); }
.clinics-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: clamp(28px,3.5vw,40px); box-shadow: var(--shadow-lg); position: relative; overflow: hidden; }
.clinics-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--brand), var(--accent-red), var(--brand)); }
.clinics-card-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--brand-text); margin-bottom: 18px; }
.clinic-map { margin: 4px 0 2px; }
.clinic-map-svg { width: 100%; height: auto; display: block; }
.clinic-map-svg text { letter-spacing: -0.3px; }
.clinics-list { display: flex; flex-direction: column; gap: 0; }
.clinic-row { display: flex; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--border); }
.clinic-row:last-child { border-bottom: none; padding-bottom: 4px; }
.clinic-pin { width: 38px; height: 38px; border-radius: 10px; background: var(--teal-light); display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; }
.clinic-info { flex: 1; min-width: 0; }
.clinic-name { font-family: 'Outfit', sans-serif; font-size: 16px; font-weight: 700; color: var(--text); line-height: 1.25; }
.clinic-region { font-size: 13px; color: var(--text-3); margin-top: 2px; }
.clinic-flag { font-size: 22px; flex-shrink: 0; align-self: center; }
.legacy-reach { display: flex; align-items: center; gap: 14px; margin-top: 22px; padding-top: 22px; border-top: 1px solid var(--border); }
.legacy-reach-num { font-family: 'Outfit', sans-serif; font-size: 38px; font-weight: 800; color: var(--teal); letter-spacing: -1px; line-height: 1; }
.legacy-reach-label { font-size: 13px; color: var(--text-2); line-height: 1.4; }
.legacy-reach-label strong { color: var(--text); font-weight: 600; display: block; font-size: 14px; }

/* =====================================================
   Testimonials
   ===================================================== */
.testimonials-section { background: var(--bg-card); padding: var(--section-y) 0; }
.testimonials-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); }
/* Carousel: show 3 reels at a time, arrows to page through the rest */
.reel-carousel { position: relative; margin-bottom: 28px; }
.testimonials-grid {
  display: flex;
  gap: 20px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;            /* Firefox */
  padding-bottom: 4px;              /* room for card focus rings */
}
.testimonials-grid::-webkit-scrollbar { display: none; } /* WebKit */
.reel-card { flex: 0 0 calc((100% - 40px) / 3); scroll-snap-align: start; }
.reel-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid var(--border); background: var(--bg-card);
  color: var(--text); font-size: 26px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-md); z-index: 5;
  transition: background 0.2s, opacity 0.2s, box-shadow 0.2s;
}
.reel-arrow:hover { background: var(--bg-warm); box-shadow: var(--shadow-lg, var(--shadow-md)); }
.reel-arrow:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; }
.reel-arrow-prev { left: -10px; }
.reel-arrow-next { right: -10px; }
.reel-arrow[disabled] { opacity: 0; pointer-events: none; }
@media (max-width: 900px) { .reel-card { flex-basis: calc((100% - 20px) / 2); } } /* 2 across */
@media (max-width: 620px) { .reel-card { flex-basis: 86%; } }                      /* 1 across, peek */
.testimonial-card-ig {
  background: var(--bg-card);
  /* A definite light grey rather than var(--border) at 8% opacity, which was
     effectively invisible against the white section behind these cards. */
  border: 1px solid #CBD5E1;
  border-radius: var(--radius);
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.25s, transform 0.25s, box-shadow 0.25s;
}
.testimonial-card-ig:hover {
  border-color: #94A3B8;
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.testimonial-card-meta { display: flex; flex-direction: column; gap: 2px; }
.testimonial-card-name {
  font-family: 'Outfit', sans-serif;
  font-size: 17px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.3px;
}
.testimonial-card-detail { font-size: 13px; color: var(--text-3); font-weight: 500; }
.testimonial-pullquote {
  font-family: 'Outfit', sans-serif;
  font-size: 16px;
  font-weight: 500;
  color: var(--text-2);
  line-height: 1.45;
  border-left: 3px solid var(--brand);
  padding-left: 14px;
  margin: 0;
  font-style: italic;
  /* Cap to 3 lines so short and long pull-quotes occupy the same vertical space */
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  min-height: calc(1.45em * 3);
}
.testimonial-ig-wrap {
  width: 100%;
  height: 620px;
  background: var(--bg-warm);
  border-radius: var(--radius-sm);
  overflow: hidden;
  position: relative;
}
/* Scroll the IG content inside the fixed-height wrap.
   Long captions become scrollable; short ones leave whitespace at the bottom. */
.testimonial-ig-wrap > iframe,
.testimonial-ig-wrap > .instagram-media,
.testimonial-ig-wrap > .instagram-media-rendered {
  margin: 0 auto !important;
  max-width: 100% !important;
  width: 100% !important;
  min-width: 0 !important;
}
.testimonial-ig-wrap > iframe {
  height: 100% !important;
  display: block;
}
/* Fade overlay at the bottom hints "there's more if you scroll" - subtle, doesn't block clicks */
.testimonial-ig-wrap::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 32px;
  background: linear-gradient(to bottom, rgba(255,255,255,0), var(--bg-card));
  pointer-events: none;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}
.testimonials-disclaimer { text-align: center; margin-top: 16px; }
.testimonials-disclaimer small { font-size: 12px; color: var(--text-3); font-style: italic; line-height: 1.5; }

/* ---- Reel cards (click-to-play) ---- */
.reel-card { text-decoration: none; color: inherit; cursor: pointer; }
.reel-card .testimonial-pullquote { margin-bottom: 2px; }
.reel-cover {
  position: relative;
  width: 100%;
  aspect-ratio: 9 / 16;
  margin-top: auto;
  border-radius: var(--radius-sm);
  overflow: hidden;
  background: var(--bg-warm);
}
.reel-cover-img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 0.45s cubic-bezier(0.22,1,0.36,1);
}
.reel-card:hover .reel-cover-img { transform: scale(1.045); }
.reel-cover::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(180deg, rgba(10,18,32,0) 52%, rgba(10,18,32,0.6) 100%);
}
.reel-cover--poster {
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(160deg, var(--reel-a,#1B3E6B) 0%, var(--reel-b,#0F294D) 155%);
}
.reel-cover-name {
  font-family: 'Outfit', sans-serif; font-weight: 800; font-size: 28px;
  letter-spacing: -0.5px; text-transform: uppercase; color: #fff; opacity: 0.96;
}
.reel-cover-handle {
  position: absolute; left: 12px; bottom: 11px; z-index: 2;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600;
  letter-spacing: 0.02em; color: rgba(255,255,255,0.92);
}
.reel-watch {
  position: absolute; right: 10px; bottom: 10px; z-index: 2;
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(255,255,255,0.94); color: #143A72;
  font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 12.5px;
  padding: 7px 12px; border-radius: 999px;
  box-shadow: 0 3px 12px rgba(9,16,28,0.34);
  transition: background 0.2s, transform 0.2s;
}
.reel-watch::before {
  content: ''; width: 0; height: 0;
  border-left: 8px solid #143A72;
  border-top: 5px solid transparent; border-bottom: 5px solid transparent;
}
.reel-card:hover .reel-watch { background: #fff; transform: translateY(-1px); }
.reel-card:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; border-radius: var(--radius); }

/* ---- Reel lightbox ---- */
.reel-lightbox {
  position: fixed; inset: 0; z-index: 1000;
  display: none; align-items: center; justify-content: center;
  gap: clamp(8px, 2vw, 22px);
  padding: clamp(14px, 3vw, 28px);
  background: rgba(9,14,24,0.92);
  -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
}
.reel-lightbox.open { display: flex; }
body.reel-lock { overflow: hidden; }
.reel-lb-stage {
  display: flex; flex-direction: column; gap: 12px;
  align-items: stretch; width: min(400px, 86vw);
}
.reel-lb-frame {
  width: 100%; aspect-ratio: 9 / 16; max-height: 82vh;
  background: #000; border-radius: 12px; overflow: hidden;
  box-shadow: 0 24px 60px rgba(0,0,0,0.5);
}
.reel-lb-frame iframe { width: 100%; height: 100%; border: 0; display: block; }
.reel-lb-cap { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.reel-lb-label { font-family: 'Outfit', sans-serif; font-weight: 700; font-size: 15px; color: #fff; }
.reel-lb-link {
  font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase; color: #7EC8FF;
  text-decoration: none; border-bottom: 1px solid rgba(126,200,255,0.4);
}
.reel-lb-nav {
  flex: none; width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.28); background: rgba(255,255,255,0.08);
  color: #fff; font-size: 26px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.2s;
}
.reel-lb-nav:hover { background: rgba(255,255,255,0.18); }
.reel-lb-close {
  position: absolute; top: 16px; right: 18px;
  width: 42px; height: 42px; border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.28); background: rgba(255,255,255,0.08);
  color: #fff; font-size: 22px; line-height: 1; cursor: pointer;
  transition: background 0.2s;
}
.reel-lb-close:hover { background: rgba(255,255,255,0.18); }
@media (max-width: 560px) {
  .reel-lb-nav { position: absolute; bottom: 18px; z-index: 3; }
  .reel-lb-prev { left: 18px; }
  .reel-lb-next { right: 18px; }
}

.testimonial-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 30px; transition: all 0.35s cubic-bezier(0.22,1,0.36,1); display: flex; flex-direction: column; }
.testimonial-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.testimonial-card.featured { grid-column: 1 / -1; background: var(--bg-dark); border-color: rgba(255,255,255,0.08); padding: clamp(36px,5vw,56px); position: relative; overflow: hidden; margin-bottom: 18px; }
.testimonial-card.featured::before { content: ''; position: absolute; width: 300px; height: 300px; border-radius: 50%; background: var(--teal); filter: blur(120px); opacity: 0.06; top: -100px; right: -50px; }
.testimonial-stars { color: var(--amber); font-size: 15px; letter-spacing: 3px; margin-bottom: 16px; }
.testimonial-quote { font-family: 'Outfit', sans-serif; font-size: 16px; font-weight: 500; color: var(--text-2); line-height: 1.6; margin-bottom: 20px; flex: 1; }
.testimonial-card.featured .testimonial-quote { font-size: clamp(20px,2.4vw,28px); font-weight: 600; color: rgba(240,240,248,0.92); line-height: 1.45; }
.testimonial-card.featured .testimonial-stars { font-size: 18px; }
.testimonial-attr { font-size: 13.5px; color: var(--text-3); }
.testimonial-card.featured .testimonial-attr { color: rgba(240,240,248,0.62); font-size: 15px; }
.testimonial-attr strong { color: var(--text-2); font-weight: 600; }
.testimonial-card.featured .testimonial-attr strong { color: rgba(240,240,248,0.7); }
/* Conditions section continued */

/* =====================================================
   Conditions
   ===================================================== */
.conditions-section { background: var(--bg-warm); padding: var(--section-y) 0; position: relative; overflow: hidden; }
.conditions-section::before { content: ''; position: absolute; width: 600px; height: 600px; border-radius: 50%; background: var(--brand); filter: blur(200px); opacity: 0.04; top: -200px; right: -100px; pointer-events: none; }
.conditions-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); position: relative; z-index: 1; }
.conditions-decorative {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(22px,2.4vw,30px);
  font-weight: 500;
  color: var(--text-3);
  letter-spacing: -0.5px;
  margin-bottom: 6px;
  line-height: 1.2;
}
.conditions-headline {
  font-family: 'Outfit', sans-serif;
  font-size: clamp(36px,5vw,64px);
  font-weight: 800;
  color: var(--text);
  letter-spacing: -1.8px;
  line-height: 1.05;
  margin-bottom: 22px;
  max-width: 880px;
}
.conditions-headline em { font-style: normal; color: var(--brand); }
#how .conditions-headline { font-size: clamp(28px,3.6vw,46px); max-width: none; }

.conditions-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  margin-top: 16px;
}
.condition-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 28px 26px;
  transition: all 0.3s cubic-bezier(0.22,1,0.36,1);
  position: relative;
  overflow: hidden;
}
.condition-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 3px;
  background: var(--brand);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.35s cubic-bezier(0.22,1,0.36,1);
}
.condition-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--border-hover);
}
.condition-card:hover::before { transform: scaleX(1); }
.condition-card-title {
  font-family: 'Outfit', sans-serif;
  font-size: 18px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.4px;
  margin-bottom: 10px;
  line-height: 1.25;
}
.condition-card-desc {
  font-size: 14px;
  color: var(--text-2);
  line-height: 1.6;
}
.conditions-belief { display: grid; grid-template-columns: 1.7fr 1fr; gap: clamp(28px,4vw,60px); align-items: center; margin: clamp(40px,5vw,64px) 0 0; padding: clamp(30px,3.6vw,48px) clamp(30px,4vw,56px); background: var(--grad-cta); border-radius: var(--radius); }
.cb-body { font-family: 'Outfit', sans-serif; font-size: clamp(16px,1.9vw,21px); font-weight: 500; line-height: 1.55; letter-spacing: -0.2px; color: rgba(234,240,246,0.72); margin: 0; }
.cb-punch { font-family: 'Outfit', sans-serif; font-size: clamp(20px,2.4vw,28px); font-weight: 800; line-height: 1.2; letter-spacing: -0.6px; color: #fff; margin: 0; }
.cb-punch span { color: var(--brand); }
@media (max-width: 760px) { .conditions-belief { grid-template-columns: 1fr; gap: 16px; } }

/* Clinical team - credibility beyond the founder */
.team-section { background: var(--bg); padding: var(--section-y) 0; position: relative; overflow: hidden; }
.team-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); position: relative; z-index: 1; }
.team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px,1fr)); gap: 16px; margin-top: 24px; }
.team-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 28px 26px;
  transition: all 0.3s cubic-bezier(0.22,1,0.36,1);
}
.team-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); border-color: var(--border-hover); }
.team-card-name { font-family: 'Outfit', sans-serif; font-size: 19px; font-weight: 700; color: var(--text); letter-spacing: -0.4px; }
.team-card-creds { font-family: 'JetBrains Mono', monospace; font-size: 12px; font-weight: 500; color: var(--brand-text); margin-top: 4px; letter-spacing: -0.2px; }
.team-card-focus { display: inline-block; font-size: 12px; font-weight: 600; color: var(--text); background: var(--brand-light); padding: 4px 12px; border-radius: var(--radius-pill); margin-top: 14px; }
.team-card-desc { font-size: 14px; color: var(--text-2); line-height: 1.6; margin-top: 14px; }

/* =====================================================
   Method section (4 steps + phase ribbon)
   ===================================================== */
/* =====================================================
   The Method - progressive-reveal sequence
   ===================================================== */
.mth-section { background: var(--bg-warm); padding: var(--section-y) 0; position: relative; }
/* Tighten doubled padding where two same-tone sections meet (no color seam to justify the gap) */
/* (Reserved) tighter top padding for same-tone seams - unused since the canvas is uniform */
.section-seam { padding-top: var(--section-y-tight); }
.mth-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); }
.mth-top { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(36px,5vw,80px); align-items: center; }
.mth-kicker { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; color: var(--brand-text); display: inline-flex; align-items: center; gap: 10px; }
.mth-kicker-num { color: var(--text-3); font-weight: 700; }
.mth-title { font-family: 'Outfit', sans-serif; font-size: clamp(32px,4.6vw,56px); font-weight: 800; line-height: 1.04; letter-spacing: -0.03em; color: var(--text); margin: 22px 0 0; }
.mth-grad { background: linear-gradient(135deg, var(--brand), var(--brand-deep)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.mth-actions { margin-top: 36px; display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.mth-dn { font-size: 17px; }
.mth-lede { font-size: 17px; line-height: 1.7; color: var(--text-2); margin: 0; max-width: 600px; }
.mth-lede strong { color: var(--text); font-weight: 600; }
.mth-qblock { border-left: 1px solid var(--border-hover); padding-left: clamp(26px,3vw,48px); }
.mth-qlabel { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand-text); }
.mth-q { font-family: 'Outfit', sans-serif; font-size: clamp(21px,2.4vw,27px); font-weight: 600; line-height: 1.32; letter-spacing: -0.022em; color: var(--text); margin: 14px 0 0; max-width: 600px; }
.mth-step { margin-top: 44px; border-top: 1px solid var(--border); padding-top: 44px; display: grid; grid-template-columns: minmax(0,600px) minmax(0,1fr); column-gap: clamp(32px,4.5vw,64px); row-gap: 0; align-items: center; }
.mth-copy { min-width: 0; }
.mth-fig { width: 600px; max-width: 100%; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); box-shadow: var(--shadow-md); padding: 20px; }
.mth-fig svg { display: block; width: 100%; height: auto; }
.mth-step-head { display: flex; align-items: center; gap: 18px; }
.mth-n { font-family: 'Outfit', sans-serif; font-size: 46px; font-weight: 800; line-height: 1; letter-spacing: -1px; color: var(--ink-navy); }
.mth-tag { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--brand-text); }
.mth-h3 { font-family: 'Outfit', sans-serif; font-size: clamp(26px,3.2vw,36px); font-weight: 800; letter-spacing: -0.03em; line-height: 1.1; color: var(--text); margin: 18px 0 0; }
.mth-p { font-size: 16.5px; line-height: 1.72; color: var(--text-2); margin: 16px 0 0; max-width: 600px; }
.mth-punch { font-family: 'Outfit', sans-serif; font-size: 19px; font-weight: 600; line-height: 1.4; color: var(--text); margin-top: 18px; }
.mth-nav { grid-column: 1 / -1; display: flex; flex-direction: row; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--border); }
.mth-next-label { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--brand-text); }
.mth-back-btn { flex: none; width: 46px; height: 46px; border-radius: 50%; background: transparent; border: 1px solid var(--border-hover); color: var(--text-2); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 20px; line-height: 1; transition: border-color 0.2s, color 0.2s, background 0.2s; }
.mth-back-btn:hover { border-color: var(--text); color: var(--text); background: rgba(14,14,14,0.03); }
.mth-back-btn:focus-visible { outline: 2px solid var(--brand-deep); outline-offset: 3px; }
.mth-next-title { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.25; color: var(--text); }
.mth-arrow-btn { width: 54px; height: 54px; border-radius: 50%; background: var(--grad-cta); color: #fff; border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-size: 22px; line-height: 1; box-shadow: 0 8px 22px rgba(12,18,38,0.30); transition: transform 0.2s, background 0.2s; }
.mth-arrow-btn:hover { background: var(--grad-cta-hover); transform: translateX(3px); }
.mth-arrow-btn:focus-visible { outline: 3px solid var(--brand-deep); outline-offset: 3px; }
.mth-closer { margin-top: 48px; padding-top: 36px; border-top: 1px solid var(--border); display: flex; flex-direction: column; align-items: flex-start; gap: 28px; }
.mth-closer-top { display: flex; align-items: center; justify-content: space-between; gap: 48px; width: 100%; }
.mth-closer-line { font-family: 'Outfit', sans-serif; font-size: clamp(22px,2.6vw,26px); font-weight: 700; letter-spacing: -0.025em; color: var(--text); }
.mth-fine { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; letter-spacing: 0.13em; text-transform: uppercase; color: var(--text-3); margin-top: 10px; }
.mth-book { flex: none; }
#method [hidden] { display: none !important; }
@media (prefers-reduced-motion: no-preference) {
  .mth-step:not([hidden]), .mth-closer:not([hidden]) { animation: mthIn 0.45s cubic-bezier(0.22,1,0.36,1); }
}
@keyframes mthIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@media (max-width: 1100px) {
  .mth-top { grid-template-columns: 1fr; gap: 28px; }
  .mth-qblock { border-left: none; border-top: 1px solid var(--border); padding-left: 0; padding-top: 24px; }
  .mth-step { grid-template-columns: 1fr; column-gap: 0; row-gap: 30px; }
  .mth-fig { width: 100%; }
  .mth-nav { margin-top: 0; }
  .mth-closer-top { flex-direction: column; align-items: flex-start; gap: 24px; }
}

.phase-ribbon-wrap { margin-top: clamp(40px,5vw,64px); padding: 0 0 clamp(72px,9vw,120px); }
.phase-ribbon { background: var(--bg-dark); border-radius: var(--radius); padding: clamp(32px,4vw,44px) clamp(28px,3.5vw,40px); position: relative; overflow: hidden; }
.phase-ribbon::before { content: ''; position: absolute; width: 400px; height: 400px; border-radius: 50%; background: var(--teal); filter: blur(160px); opacity: 0.07; top: -100px; right: -50px; pointer-events: none; }
.phase-ribbon-header { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 24px; flex-wrap: wrap; gap: 16px; position: relative; z-index: 1; }
.phase-ribbon-title { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 700; color: var(--text-inv); letter-spacing: -0.3px; }
.phase-ribbon-sub { font-size: 13px; color: rgba(240,240,248,0.68); font-family: 'JetBrains Mono', monospace; letter-spacing: 0.5px; }
.phase-ribbon-arrow { font-size: 13px; color: var(--teal); font-weight: 600; }
.phase-track { display: flex; align-items: stretch; gap: 4px; position: relative; z-index: 1; }
.phase-step { flex: 1; min-width: 0; padding: 16px 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: var(--radius-sm); transition: all 0.25s; position: relative; }
.phase-step:hover { background: rgba(0,206,253,0.10); border-color: rgba(0,206,253,0.3); transform: translateY(-2px); }
.phase-step-num { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; color: var(--teal); letter-spacing: 1px; margin-bottom: 6px; }
.phase-step-name { font-family: 'Outfit', sans-serif; font-size: 13.5px; font-weight: 600; color: rgba(240,240,248,0.92); line-height: 1.25; }
.phase-ribbon-foot { margin-top: 22px; padding-top: 20px; border-top: 1px solid rgba(255,255,255,0.08); font-size: 13px; color: rgba(240,240,248,0.6); line-height: 1.6; position: relative; z-index: 1; }
.phase-ribbon-foot strong { color: var(--teal); font-weight: 600; }

/* =====================================================
   Why NeuroHome features
   ===================================================== */
.features-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.feature-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 32px; transition: all 0.35s cubic-bezier(0.22,1,0.36,1); }
.feature-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); border-color: rgba(0,206,253,0.18); }
.feature-icon { width: 44px; height: 44px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; font-size: 20px; margin-bottom: 18px; background: var(--teal-light); }
.feature-title { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 700; color: var(--text); margin-bottom: 8px; }
.feature-desc { font-size: 14.5px; color: var(--text-2); line-height: 1.65; }

/* =====================================================
   Qualify (this is / is not for you)
   ===================================================== */
.qualify-section { max-width: 1320px; margin: 0 auto; padding: clamp(48px,6vw,80px) clamp(20px,4vw,56px) 0; }
.qualify-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.qualify-card { border-radius: var(--radius); padding: 36px 32px; }
.qualify-card.for-you { background: var(--teal-light); border: 1px solid rgba(0,206,253,0.15); }
.qualify-card.not-for { background: #FFF8F0; border: 1px solid rgba(232,150,12,0.12); }
.qualify-header { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
.qualify-icon { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 18px; }
.qualify-card.for-you .qualify-icon { background: rgba(0,206,253,0.15); }
.qualify-card.not-for .qualify-icon { background: rgba(232,150,12,0.12); }
.qualify-label { font-family: 'Outfit', sans-serif; font-size: 18px; font-weight: 700; color: var(--text); }
.qualify-list { display: flex; flex-direction: column; gap: 12px; }
.qualify-item { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; color: var(--text-2); line-height: 1.55; }
.qualify-item-icon { flex-shrink: 0; margin-top: 2px; font-size: 14px; }

/* =====================================================
   Our Methods (tools)
   ===================================================== */
.methods-section { background: var(--bg-warm); padding: var(--section-y) 0; }
.methods-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); }
.methods-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.method-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; transition: all 0.35s cubic-bezier(0.22,1,0.36,1); }
.method-card:hover { transform: translateY(-5px); box-shadow: var(--shadow-lg); }
.method-visual { height: 180px; position: relative; overflow: hidden; background: linear-gradient(135deg, var(--teal-light), #E8F1FD); }
.method-visual img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.5s cubic-bezier(0.22,1,0.36,1); }
.method-card:hover .method-visual img { transform: scale(1.05); }
.method-visual-overlay { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(0,0,0,0.5)); }
.method-badge { position: absolute; bottom: 12px; left: 14px; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; color: #fff; background: rgba(0,206,253,0.85); padding: 5px 12px; border-radius: 6px; backdrop-filter: blur(8px); }
.method-body { padding: 28px; }
.method-title { font-family: 'Outfit', sans-serif; font-size: 20px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.method-desc { font-size: 14px; color: var(--text-2); line-height: 1.7; }

/* =====================================================
   Getting Started (4 steps)
   ===================================================== */
.steps-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.step-card { position: relative; }
.step-num { font-family: 'Outfit', sans-serif; font-size: 46px; font-weight: 800; line-height: 1; letter-spacing: -1px; color: #16294a; margin-bottom: 14px; }
.step-icon { width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center; margin-bottom: 22px; font-size: 24px; }
.step-icon.i1 { background: var(--teal-light); }
.step-icon.i2 { background: #EBF2FD; }
.step-icon.i3 { background: #F0EBFD; }
.step-title { font-family: 'Outfit', sans-serif; font-size: 20px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.step-desc { font-size: 14.5px; color: var(--text-2); line-height: 1.65; }
.kit-card { position: relative; overflow: hidden; margin-top: clamp(32px,4vw,52px); background: #0E1420; border-radius: var(--radius); padding: clamp(30px,3.6vw,48px); display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(24px,3vw,48px); align-items: center; }
.kit-card::before { content: ''; position: absolute; width: 360px; height: 360px; border-radius: 50%; background: var(--brand); filter: blur(120px); opacity: 0.14; top: -120px; right: -60px; pointer-events: none; }
.kit-card-head { position: relative; z-index: 1; }
.kit-card-title { font-family: 'Outfit', sans-serif; font-size: clamp(22px,2.4vw,28px); font-weight: 800; letter-spacing: -0.5px; color: #fff; }
.kit-card-sub { font-size: 15px; color: rgba(234,240,246,0.72); line-height: 1.65; margin-top: 10px; }
.kit-list { position: relative; z-index: 1; display: grid; grid-template-columns: 1fr 1fr; gap: 14px 28px; }
.kit-item { display: flex; align-items: flex-start; gap: 11px; font-size: 14.5px; font-weight: 500; color: #EAF0F6; line-height: 1.4; }
.kit-item svg { width: 19px; height: 19px; flex-shrink: 0; color: var(--brand); margin-top: 1px; }
@media (max-width: 860px) { .kit-card { grid-template-columns: 1fr; gap: 24px; align-items: start; } }
@media (max-width: 520px) { .kit-list { grid-template-columns: 1fr; } }

/* Mini 12-week timeline (under Getting Started 3 cards) */
/* =====================================================
   12-week Program timeline
   ===================================================== */

/* =====================================================
   12-week Program timeline
   ===================================================== */
.protocol-section { padding: var(--section-y) 0; }
.protocol-inner { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px); }
.protocol-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; }
.protocol-list { display: flex; flex-direction: column; gap: 18px; }
.protocol-item { display: flex; align-items: flex-start; gap: 16px; }
.protocol-check { width: 28px; height: 28px; border-radius: 8px; background: var(--teal-light); color: var(--teal); display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 14px; margin-top: 2px; }
.protocol-text { font-size: 15px; color: var(--text-2); line-height: 1.6; }
.protocol-text strong { color: var(--text); font-weight: 600; }
.protocol-visual { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 40px; box-shadow: var(--shadow-md); position: relative; overflow: hidden; }
.protocol-visual::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--brand), var(--accent-red), var(--brand)); }
.pv-title { font-family: 'Outfit', sans-serif; font-size: 20px; font-weight: 700; color: var(--text); margin-bottom: 24px; }
.pv-timeline { display: flex; flex-direction: column; position: relative; }
.pv-week { display: flex; align-items: flex-start; gap: 16px; padding: 14px 0; position: relative; }
.pv-week:not(:last-child)::after { content: ''; position: absolute; left: 14px; top: 42px; bottom: 0; width: 1px; background: var(--border); }
.pv-dot { width: 28px; height: 28px; border-radius: 50%; background: var(--teal-light); border: 2px solid var(--teal); flex-shrink: 0; position: relative; z-index: 2; }
.pv-dot.active { background: var(--teal); }
.pv-label { font-family: 'Outfit', sans-serif; font-size: 14px; font-weight: 700; color: var(--text); margin-bottom: 2px; }
.pv-desc { font-size: 13px; color: var(--text-3); line-height: 1.5; }

/* =====================================================
   Sticky mobile CTA
   ===================================================== */
.sticky-cta { display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 998; padding: 12px 16px; padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); background: rgba(250,250,250,0.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-top: 1px solid var(--border); box-shadow: 0 -4px 20px rgba(0,0,0,0.06); }
.sticky-cta-inner { display: flex; gap: 10px; }
.sticky-cta .btn-primary { flex: 1; justify-content: center; padding: 14px 20px; font-size: 15px; }

/* =====================================================
   The NeuroSage family (#family)
   Three-tier stepper: Hub / NeuroHome / NeuroSage Centers.

   Ported from the "NeuroSage Family Section" design export, which shipped as
   React + DCLogic with 100% inline styles on its own blue-grey palette
   (#1D2939 / #667085 / #98A2B3) and three near-identical tier hues. Rebuilt
   here on the existing tokens so the site keeps one grey family, and driven by
   the shared [data-step]/[data-go] stepper in neurohome.js.

   The design's #98A2B3 micro-label grey measured 2.58:1 on white and failed
   AA in five places; --text-3 replaces it at 5.35:1. The three tier hues were
   only 1.98:1 apart from each other and the accessible fix made them closer
   still, so the active tab is one --ink-navy treatment (14.48:1) and the tier
   is identified by its own label instead of by hue.

   Panel visibility is gated on html.js rather than on [hidden] alone, so all
   three tiers stay readable with JavaScript off. See the html:not(.js) rules
   near the end of this block.
   ===================================================== */
#family .conditions-headline { font-size: clamp(28px,3.6vw,46px); max-width: none; }
/* Span the full container so the lede lines up with the panel edge below it. */
#family .section-sub { max-width: none; }

.family-panel { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow-md); overflow: hidden; display: grid; grid-template-columns: minmax(0,0.62fr) minmax(0,1fr); }
/* An author `display` declaration outranks the UA [hidden] rule, so setting
   display:grid above silently defeats the hidden attribute and every tier
   renders at once. This puts [hidden] back. */
.family-panel[hidden] { display: none; }
.family-brand { padding: clamp(28px,3vw,44px); display: flex; flex-direction: column; gap: 26px; border-right: 1px solid var(--border); background: var(--bg); }
.family-brand.is-dark { background: var(--ink-navy); border-right-color: rgba(250,250,250,0.14); }
.family-logo { min-height: 64px; display: flex; align-items: center; }
.family-logo img { display: block; width: 200px; max-width: 100%; height: auto; }
.family-wordmark { font-family: 'Outfit', sans-serif; font-size: 30px; font-weight: 800; letter-spacing: -0.02em; color: var(--text); display: inline-flex; align-items: center; gap: 14px; }
/* The committed nav mark cyan (b6b2a57), deliberately not --brand #00CEFD. */
.family-wordmark b { font-weight: inherit; color: #00C2FF; }
.family-wordmark img { width: 46px; height: 46px; display: block; flex: none; }
.family-meta { display: flex; flex-direction: column; gap: 6px; }
.family-setting { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand-text); }
.family-format { font-family: 'Outfit', sans-serif; font-size: 15px; font-weight: 600; color: var(--text-2); }
.family-brand.is-dark .family-wordmark { color: var(--text-inv); }
.family-brand.is-dark .family-setting { color: #00C2FF; }
.family-brand.is-dark .family-format { color: var(--text-inv); }
/* All three tiers now carry logo + meta + figure. justify-content:space-between
   is gone: it was compensating for tier 01 and 02 having no figure, and with the
   figures restored it stretched the panel and opened a dead gap mid-column.

   Instead the figure wrapper takes the leftover height and centres the graphic
   in it, which is what the source design did (flex:1 + align-items:center on its
   graphic slot) and what I dropped on the first port. Without it the left column
   ran 143-235px short of the right one and dumped all of it at the bottom. */
/* Figure sits directly under logo + meta at its natural height. It no longer
   takes flex:1 - the CLINICIAN TIME block below does, via margin-top:auto, so
   leftover height collects between the figure and that block instead of being
   centred around the graphic.

   240px -> 320px: the brand column content box is ~366px at 1280, so 320 fills
   it without reaching the padding edge. On the 268-unit tier 01/02 viewBoxes the
   scale goes 0.896 -> 1.194, which lifts their 10px mono labels from ~9px to
   ~12px effective and is the real reason for the change. */
.family-fig { display: flex; align-items: flex-start; }
.family-fig img { display: block; width: 100%; max-width: 320px; height: auto; }
.family-fig svg { display: block; width: 100%; max-width: 320px; height: auto; overflow: visible; }

/* Tier figure ink. Container chrome is deliberately faint, matching the four
   method figures in index.html which stroke their own chrome at 1.17-1.53:1;
   the icon strokes and labels are the parts that carry meaning and those are
   graded as text. Light-panel values first, dark-panel overrides below. */
.ffig-lab { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 600; letter-spacing: 1.4px; fill: var(--text-2); }
.ffig-lab-sm { font-size: 9px; }
.ffig-lab-xs { font-size: 8.5px; }
.ffig-box { fill: none; stroke: var(--border-hover); stroke-width: 1; }
.ffig-ico { fill: none; stroke: var(--brand-text); stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.ffig-dot { fill: var(--brand-text); stroke: none; }

/* Dark panel (tier 02). --text-inv is 13.87:1 on --ink-navy, so the source
   opacities survive: 0.75 gives 8.44:1 and 0.70 gives 7.52:1, both past AA. */
.family-brand.is-dark .ffig-box { stroke: rgba(250,250,250,0.22); }
.family-brand.is-dark .ffig-lab { fill: var(--text-inv); }
.ffig-screen { fill: rgba(0,194,255,0.10); stroke: #00C2FF; stroke-width: 1; }
.ffig-accent { fill: none; stroke: #00C2FF; stroke-width: 1.6; stroke-linecap: round; }
.ffig-live { fill: var(--accent-red); stroke: none; }
.ffig-ico-ink { fill: none; stroke: var(--text-inv); stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; opacity: 0.75; }
.ffig-dash { fill: none; stroke: rgba(250,250,250,0.22); stroke-width: 1.5; stroke-dasharray: 3 4; }
.ffig-o75 { opacity: 0.75; }
.ffig-o70 { opacity: 0.7; }

/* CLINICIAN TIME meter, ported from the source design. margin-top:auto pins it
   to the bottom of the brand column, which is what absorbs the leftover height
   the figure used to. Filled segments carry the value and are graded as UI
   indicators (>=3:1); the empty track is chrome, same precedent as the figure
   outlines and the method figures at 1.17-1.53:1. */
.family-access { margin-top: auto; border-top: 1px solid var(--border); padding-top: 22px; display: flex; flex-direction: column; gap: 10px; }
.family-brand.is-dark .family-access { border-top-color: rgba(250,250,250,0.16); }
.family-access-l { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-3); }
.family-brand.is-dark .family-access-l { color: var(--text-inv); opacity: 0.7; }
.family-access-bar { display: flex; gap: 6px; align-items: center; }
/* Intensity note under the meter. Source used a single mid grey for both the
   label and this line; --text-3 is 5.12:1 on --bg and the dark variant lands at
   7.52:1, so the pair is differentiated by type, not by contrast. */
.family-access-note { font-size: 13.5px; line-height: 1.5; color: var(--text-3); margin: 0; }
.family-brand.is-dark .family-access-note { color: var(--text-inv); opacity: 0.7; }
.family-access-seg { width: 34px; height: 5px; border-radius: 3px; background: var(--border-hover); }
.family-access-seg.on { background: var(--brand-text); }
.family-brand.is-dark .family-access-seg { background: rgba(250,250,250,0.22); }
.family-brand.is-dark .family-access-seg.on { background: #00C2FF; }

.family-body { padding: clamp(28px,3.4vw,52px); display: flex; flex-direction: column; gap: 22px; }
.family-purpose { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand-text); }
.family-h3 { font-family: 'Outfit', sans-serif; font-size: clamp(24px,2.8vw,36px); font-weight: 800; line-height: 1.12; letter-spacing: -0.02em; color: var(--text); margin: 0; }
.family-p { font-size: 16.5px; line-height: 1.72; color: var(--text-2); margin: 0; }
.family-facts { border-top: 1px solid var(--border); margin: 0; }
.family-fact { display: grid; grid-template-columns: 160px minmax(0,1fr); gap: 24px; align-items: baseline; padding: 15px 0; border-bottom: 1px solid var(--border); }
.family-fact:last-child { border-bottom: none; }
.family-fact dt { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-3); }
.family-fact dd { font-size: 16.5px; line-height: 1.5; color: var(--text); margin: 0; }

.family-foot { margin-top: auto; border-top: 1px solid var(--border); padding-top: 22px; display: flex; align-items: center; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
/* The arrows are now the only way through the tiers, so this stops reading as a
   footnote: the eyebrow takes the --brand-text accent that signals interactive
   elsewhere on the page (4.93:1 on --bg-card) and goes 10px -> 11px, and the
   destination title goes 16px -> 19px so the pair carries the same weight as the
   arrow buttons beside it. */
.family-next-l { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--brand-text); display: block; margin-bottom: 3px; }
.family-next-t { font-family: 'Outfit', sans-serif; font-size: 19px; font-weight: 700; letter-spacing: -0.015em; color: var(--text); }
.family-nav { display: flex; gap: 10px; flex: none; }

/* neurohome.css declares no global anchor styling (only a:focus-visible at :188),
   so an unstyled link in body copy renders browser-default blue. The legal pages
   solve this with their own inline rule on --brand-deep, but that measures 3.31:1
   on white and fails AA, so this uses --brand-text at 4.93:1. */
.family-p a { color: var(--brand-text); text-decoration: underline; text-underline-offset: 3px; }
.family-p a:hover { color: var(--text); }

.family-note { font-size: 15px; line-height: 1.65; color: var(--text-2); margin: 18px 0 0; max-width: 860px; }

/* JS off: there is no stepper, so show every tier stacked and drop the dead
   controls. html.js is set before first paint (index.html head), so with JS
   live the open tier is correct from the first frame and nothing flashes. */
html:not(.js) .family-panel[hidden] { display: grid; }
html:not(.js) .family-panel + .family-panel { margin-top: 18px; }
html:not(.js) .family-foot { display: none; }

/* The same fix for the older #method stepper, which had the JS-off gap this
   pattern was built to close: with neurohome.js absent nothing can advance it,
   so steps 02-04 and the closer were unreachable.

   #method already restores [hidden] at :818 with "display: none !important",
   its own answer to the same cascade problem, so overriding that needs
   !important at higher specificity:
     #method [hidden]                          (1,1,0) !important
     html:not(.js) #method .mth-step[hidden]   (1,3,1) !important  <- wins

   .mth-step is display:grid and .mth-closer is display:flex, so each needs its
   own value rather than one shared rule. The navigation goes away because with
   every step stacked the "Next" labels and arrows are dead controls. */
html:not(.js) #method .mth-step[hidden] { display: grid !important; }
html:not(.js) #method .mth-closer[hidden] { display: flex !important; }
html:not(.js) #method .mth-nav,
html:not(.js) #method .mth-closer .mth-back-btn { display: none; }

/* Matches .mth-step's collapse point so the two steppers break together. */
@media (max-width: 1100px) {
  .family-panel { grid-template-columns: 1fr; }
  .family-brand { border-right: none; border-bottom: 1px solid var(--border); }
  .family-brand.is-dark { border-bottom-color: rgba(250,250,250,0.14); }
  .family-fig { margin-top: 0; }
}
@media (max-width: 760px) {
  .family-fact { grid-template-columns: 1fr; gap: 6px; }
  .family-foot { flex-direction: column; align-items: flex-start; }
}

/* =====================================================
   FAQ
   ===================================================== */
.faq-list { display: flex; flex-direction: column; gap: 10px; max-width: 100%; }
.faq-item { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-sm); overflow: hidden; transition: border-color 0.2s; }
.faq-item.open { border-color: rgba(0,206,253,0.18); }
.faq-q { padding: 20px 24px; font-family: 'Inter', sans-serif; font-size: 15px; font-weight: 600; color: var(--text); cursor: pointer; display: flex; justify-content: space-between; align-items: center; user-select: none; transition: background 0.2s; width: 100%; background: none; border: none; text-align: left; }
.faq-q:hover { background: rgba(0,0,0,0.01); }
.faq-q:focus-visible { outline: 2px solid var(--teal); outline-offset: -2px; }
.faq-chevron { width: 20px; height: 20px; color: var(--text-3); transition: transform 0.3s cubic-bezier(0.22,1,0.36,1); flex-shrink: 0; }
.faq-item.open .faq-chevron { transform: rotate(180deg); }
.faq-a { max-height: 0; overflow: hidden; transition: max-height 0.4s cubic-bezier(0.22,1,0.36,1), padding 0.4s cubic-bezier(0.22,1,0.36,1); }
.faq-item.open .faq-a { max-height: 260px; padding: 0 24px 20px; }
.faq-a p { font-size: 14.5px; color: var(--text-2); line-height: 1.7; }

/* =====================================================
   Final CTA
   ===================================================== */
.cta-section { max-width: 1320px; margin: 0 auto; padding: 0 clamp(20px,4vw,56px) var(--section-y); }
.cta-banner { background: linear-gradient(115deg, #0f1b33 0%, #0a0e18 52%, #0a0e18 100%); border-radius: var(--radius-lg); padding: clamp(36px,5vw,60px); position: relative; overflow: hidden; }
.cta-banner::before { content: ''; position: absolute; width: 520px; height: 520px; border-radius: 50%; background: var(--teal); filter: blur(150px); opacity: 0.10; top: -240px; left: -140px; z-index: 0; pointer-events: none; }
.cta-banner::after { content: ''; position: absolute; width: 400px; height: 400px; border-radius: 50%; background: var(--purple); filter: blur(140px); opacity: 0.05; bottom: -180px; right: -80px; z-index: 0; pointer-events: none; }
.cta-book-grid { display: grid; grid-template-columns: minmax(280px,420px) minmax(0,600px); justify-content: center; gap: clamp(36px,4vw,72px); align-items: start; position: relative; z-index: 2; }
.cta-book-copy { padding-top: clamp(8px,2vw,32px); }
.cta-eyebrow { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--brand); margin-bottom: 20px; display: inline-flex; align-items: center; gap: 10px; }
.cta-eyebrow-num { color: rgba(240,240,248,0.32); font-weight: 700; }
.cta-banner h2 { font-family: 'Outfit', sans-serif; font-size: clamp(30px,3.4vw,44px); font-weight: 800; color: var(--text-inv); margin-bottom: 16px; letter-spacing: -1.2px; line-height: 1.05; }
.cta-book-copy > p:first-of-type { font-size: 16px; color: rgba(240,240,248,0.6); line-height: 1.7; margin-bottom: 26px; max-width: 40ch; }
.cta-checks { list-style: none; display: flex; flex-direction: column; gap: 13px; margin: 0 0 30px; }
.cta-checks li { display: flex; align-items: center; gap: 12px; font-size: 15px; font-weight: 500; color: rgba(240,240,248,0.9); }
.cta-checks svg { width: 18px; height: 18px; color: var(--brand); flex: none; }
.booking-embed { position: relative; z-index: 2; width: 600px; max-width: 100%; margin: 0 auto; display: flex; justify-content: center; align-items: flex-start; background: #fff; border-radius: var(--radius); overflow: hidden; box-shadow: 0 18px 60px rgba(0,0,0,0.38); }
.ghl-calendar-iframe { display: block; width: 460px; max-width: 100%; height: 480px; min-height: 480px; border: 0; background: #fff; }
.intake-link-note { font-family: 'JetBrains Mono', monospace; font-size: 12.5px; letter-spacing: 0.4px; color: rgba(240,240,248,0.5); line-height: 1.6; margin: 4px 0 0; }
.intake-link-note a { color: var(--brand); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; transition: color 0.2s; }
.intake-link-note a:hover { color: #fff; }
@media (max-width: 1120px) {
  .cta-book-grid { grid-template-columns: 1fr; gap: 30px; }
  .cta-book-copy { padding-top: 0; text-align: center; max-width: 640px; margin: 0 auto; }
  .cta-book-copy > p:first-of-type { max-width: none; }
  .cta-eyebrow { justify-content: center; }
  .cta-checks { max-width: 420px; margin: 0 auto 28px; }
  .steps-grid { grid-template-columns: repeat(2, 1fr); } /* 2-up on tablet/small-laptop; 4-up only above 1120px */
}

/* =====================================================
   Sub-page content
   ===================================================== */

/* =====================================================
   Footer
   ===================================================== */
/* =====================================================
   Footer - multi-column with clinical/legal info
   ===================================================== */
.footer { border-top: 1px solid var(--border); padding: clamp(48px, 6vw, 72px) clamp(20px,4vw,56px) 28px; max-width: 1320px; margin: 0 auto; }
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: clamp(28px, 4vw, 56px); margin-bottom: 36px; }
.footer-col { display: flex; flex-direction: column; gap: 10px; }
.footer-col-brand { gap: 14px; max-width: 380px; }
.footer-brand-name { font-family: 'Outfit', sans-serif; font-size: 22px; font-weight: 800; letter-spacing: -0.5px; color: var(--text); line-height: 1.1; }
.footer-brand-name span { color: var(--brand); }
.footer-brand-tag { font-size: 12px; color: var(--text-3); letter-spacing: 0.2px; font-weight: 500; }
.footer-clinical { font-size: 13px; color: var(--text-2); line-height: 1.6; margin-top: 6px; }
.footer-clinical strong { color: var(--text); font-weight: 600; }
.footer-disclaimer { font-size: 11.5px; color: var(--text-3); line-height: 1.55; font-style: italic; margin: 0 0 24px; }
.footer-col-title { font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 700; letter-spacing: 0.6px; text-transform: uppercase; color: var(--text); margin-bottom: 6px; }
.footer-link { font-size: 13.5px; color: var(--text-3); text-decoration: none; transition: color 0.2s; display: inline-block; }
.footer-link:hover { color: var(--text); }
.footer-link-static { cursor: default; }
.footer-link-static:hover { color: var(--text-3); }
/* Social row in the footer Contact column. .footer-col is a flex column with a
   10px gap, so these live in their own flex row and the column sees one item.
   The extra margin-top is what makes it read as its own element: at the bare 10px
   gap it scanned as a contact line. Official platform marks are solid glyphs, so
   unlike the site's other 24x24 icons these fill instead of stroke.

   Each mark carries its own brand colour, so currentColor is set per platform and
   the old --text-3 / --text pair no longer applies here. Hover moves opacity, not
   colour: darkening a brand colour on hover misreads it, and brightening needs a
   second shade of all four. Rest sits at 0.85 and hover goes to full, so the cue
   is a lift rather than a dim, which would read as disabled. */
.footer-social { display: flex; align-items: center; gap: 16px; margin-top: 10px; }
.footer-social-link { display: inline-flex; align-items: center; justify-content: center; opacity: 0.85; transition: opacity 0.2s; }
.footer-social-link:hover { opacity: 1; }
.footer-social-ig { color: #E4405F; }
.footer-social-fb { color: #1877F2; }
.footer-social-tt { color: #000000; }
.footer-social-yt { color: #FF0000; }
.footer-social-link svg { display: block; width: 20px; height: 20px; fill: currentColor; }
.footer-bottom { border-top: 1px solid var(--border); padding-top: 24px; display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; }
.footer-copy { font-size: 12px; color: var(--text-3); }
.footer-meta { font-size: 12px; color: var(--text-3); }

/* =====================================================
   Responsive
   ===================================================== */
/* The nav collapses earlier than the rest of the responsive block. With seven
   links plus the CTA, the row stops fitting the fixed 72px bar below 1126px:
   the CTA shrinks, its label wraps to two lines and the row grows to 63px inside
   a bar locked at 72px. Measured on this build, broken at 1125px and clean at
   1126px. 1170px keeps the same 44px of headroom over the measured limit that
   1140px gave when the limit was read as 1096px. The other 22 rules in the 900px
   block below are unrelated layout collapses (hero, footer, grids, sticky CTA)
   and deliberately keep their own threshold, so only the two nav rules live here. */
@media (max-width: 1170px) {
  .nav-links { display: none; }
  .nav-mobile-toggle { display: block; }
}

@media (max-width: 900px) {
  .steps-grid { grid-template-columns: 1fr; }
  .features-grid { grid-template-columns: 1fr; }
  .protocol-grid { grid-template-columns: 1fr; }
  .methods-grid { grid-template-columns: 1fr; }
  .conditions-grid { grid-template-columns: repeat(2, 1fr); }
  .kyle-intro-inner { grid-template-columns: 1fr; gap: 40px; }
  .kyle-credentials { grid-template-columns: 1fr; }
  .legacy-grid { grid-template-columns: 1fr; gap: 32px; }
  .testimonials-grid { grid-template-columns: 1fr; }
  .qualify-grid { grid-template-columns: 1fr; }
  .phase-track { flex-wrap: wrap; }
  .phase-step { flex: 1 1 calc(50% - 2px); min-width: 130px; }
  .sticky-cta { display: block; }
  body { padding-bottom: 80px; }
  .stats-inner { flex-direction: column; gap: 20px; padding: 28px 24px; }
  .stat-divider { display: none; }
  .stats-inner .stat { display: flex; align-items: center; gap: 12px; text-align: left; }
  .hero-grid { grid-template-columns: 1fr; gap: 36px; }
  .hero-photo-wrap { aspect-ratio: 16 / 11; max-height: 480px; }
  /* The columns stack here, so there is no credit-line/stat-box alignment left
     to serve, and the 16/11 crop is less than half the height of the square
     desktop one. A top-right pill therefore lands in the middle of the frame:
     measured against the source image it covers 48.7% skin-tone pixels, i.e.
     the faces. Pinned to the bottom instead, that falls to 12.4% and contrast
     stays at 11.3:1. Same 18/24 inset, same corner clearance, and it matches
     .method-badge, the page's other chip-on-an-image. NOT a revert to in-flow:
     the pill now lives inside .hero-photo-wrap, and CSS cannot move it back to
     the text column from there. See the run report before changing this. */
  .hero-photo-wrap .hero-badge { top: auto; bottom: 18px; }
  .hero-dots { display: none; }
  .footer-grid { grid-template-columns: 1fr 1fr; gap: 32px; }
  .footer-col-brand { grid-column: 1 / -1; max-width: 100%; }
  .footer-bottom { flex-direction: column; text-align: center; gap: 8px; }
}
@media (max-width: 600px) {
  .conditions-grid { grid-template-columns: 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  .hero-title { letter-spacing: -1px; }
  .hero-actions { flex-direction: column; align-items: stretch; }
  .btn-primary, .btn-secondary { justify-content: center; }
}

/* =====================================================
   Reduced motion - respect user OS preference
   ===================================================== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
  .hero-orb { animation: none; }
  .hero-badge .pulse { animation: none; }
}
