/* ===========================================================================
   1. CSS VARIABLES
   =========================================================================== */
:root {
  /* Dark surfaces — sampled from luckydark.JPG */
  --slate:        #1b1f2b;
  --slate-card:   #272a39;
  --slate-card-2: #2f3344;
  --slate-line:   #353a4b;
  --slate-line-2: #404557;

  /* Light surfaces — sampled from light mode screenshots */
  --off-white:    #f7f7f8;
  --white:        #ffffff;
  --light-line:   #e8e8eb;
  --light-line-2: #d8d9dc;

  /* Type colors */
  --text:         #f5f5f7;
  --text-soft:    #c8cad0;
  --muted-d:      #898d99;
  --ink:          #1a1d24;
  --muted-l:      #6b6f78;

  /* Accent */
  --amber:        #f4c542;
  --amber-warm:   #e8b939;
  --amber-soft:   rgba(244, 197, 66, 0.12);
  --amber-bord:   rgba(244, 197, 66, 0.28);

  --font: "General Sans", -apple-system, system-ui, sans-serif;
  --max:    1240px;
  --gutter: clamp(20px, 4vw, 56px);
  --radius: 20px;
  --radius-sm: 12px;
  --radius-lg: 28px;
}

/* ===========================================================================
   2. RESET + BASE
   =========================================================================== */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
  font-family: var(--font);
  background: var(--slate);
  color: var(--text);
  line-height: 1.55;
  overflow-x: hidden;
  font-weight: 400;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
::selection { background: var(--amber); color: var(--slate); }

/* ===========================================================================
   3. NAV — sticky, blurs on scroll, anchor-linked
   =========================================================================== */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 9999;
  backdrop-filter: blur(20px) saturate(140%);
  -webkit-backdrop-filter: blur(20px) saturate(140%);
  background: rgba(27, 31, 43, 0.78);
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.nav__inner {
  max-width: var(--max);
  margin: 0 auto;
  padding: 16px var(--gutter);
  display: flex; align-items: center; justify-content: space-between;
  gap: 32px;
}
.nav__brand {
  display: flex; align-items: center; gap: 10px;
  font-weight: 600; font-size: 20px; letter-spacing: -0.01em;
}
.nav__brand-mark {
  width: 28px; height: 28px;
  border-radius: 8px;
  object-fit: contain;
}
.nav__links { display: flex; gap: 24px; font-size: 14px; color: var(--muted-d); font-weight: 500; align-items: center; }
.nav__links a { transition: color .25s ease; }
.nav__links a:hover { color: var(--text); }
.nav__links a.active { color: var(--amber); }

/* --- Dropdown --- */
.nav__dropdown { position: relative; }
.nav__dropdown-toggle {
  display: flex; align-items: center; gap: 5px;
  background: none; border: none; cursor: pointer;
  font: inherit; font-size: 14px; font-weight: 500;
  color: var(--muted-d); padding: 0;
  transition: color .25s ease;
}
.nav__dropdown-toggle:hover { color: var(--text); }
.nav__dropdown-toggle.active { color: var(--amber); }
.nav__dropdown-toggle svg { width: 14px; height: 14px; transition: transform .25s ease; }
.nav__dropdown.is-open .nav__dropdown-toggle { color: var(--text); }
.nav__dropdown.is-open .nav__dropdown-toggle svg { transform: rotate(180deg); }
.nav__dropdown-menu {
  position: absolute; top: calc(100% + 14px); left: 50%; transform: translateX(-50%);
  min-width: 220px; padding: 8px 0;
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-sm);
  box-shadow: 0 12px 40px rgba(0,0,0,.35);
  opacity: 0; visibility: hidden;
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
  transform: translateX(-50%) translateY(6px);
}
.nav__dropdown.is-open .nav__dropdown-menu {
  opacity: 1; visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.nav__dropdown-menu a {
  display: block; padding: 10px 20px;
  font-size: 14px; font-weight: 500;
  color: var(--text-soft);
  transition: background .15s ease, color .15s ease;
}
.nav__dropdown-menu a:hover {
  background: rgba(255,255,255,.05); color: var(--text);
}
.nav__dropdown-menu a.active { color: var(--amber); }

/* --- CTA button --- */
.nav__cta {
  background: var(--amber);
  color: #000;
  font-weight: 600; font-size: 14px;
  padding: 10px 18px;
  border-radius: 999px;
  transition: background .25s ease, transform .25s ease;
}
.nav__cta:hover { background: var(--amber-warm); transform: translateY(-1px); }

/* --- Hamburger button --- */
.nav__hamburger {
  display: none;
  -webkit-appearance: none; appearance: none;
  background: none; border: none; cursor: pointer;
  width: 40px; height: 40px; padding: 8px;
  flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  z-index: 10000;
  flex-shrink: 0;
}
.nav__hamburger span {
  display: block; width: 24px; height: 2.5px;
  background: var(--text); border-radius: 2px;
  transition: transform .3s ease, opacity .3s ease;
  pointer-events: none;
}
.nav__hamburger.is-open span:nth-child(1) { transform: translateY(8.5px) rotate(45deg); }
.nav__hamburger.is-open span:nth-child(2) { opacity: 0; }
.nav__hamburger.is-open span:nth-child(3) { transform: translateY(-8.5px) rotate(-45deg); }

/* --- Mobile drawer overlay --- */
.nav__overlay {
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  z-index: 9997;
  background: rgba(0, 0, 0, 0.4);
  opacity: 0;
  visibility: hidden;
  transition: opacity .3s ease, visibility .3s;
}
.nav__overlay.is-open { opacity: 1; visibility: visible; }

/* --- Mobile drawer nav (slides from right) --- */
.nav__mobile {
  display: none; position: fixed;
  top: 0; right: 0; bottom: 0;
  width: 280px;
  z-index: 9998;
  background: var(--slate-card);
  border-left: 1px solid var(--slate-line);
  flex-direction: column;
  align-items: stretch;
  padding: 100px var(--gutter) 40px;
  gap: 0;
  transform: translateX(100%);
  transition: transform .35s cubic-bezier(0.4, 0, 0.2, 1);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.nav__mobile.is-open { transform: translateX(0); }
.nav__mobile a {
  font-size: 14px; font-weight: 500;
  padding: 16px 0;
  color: var(--text-soft);
  transition: color .2s ease;
  text-align: left;
  border-bottom: 1px solid var(--slate-line);
}
.nav__mobile a:hover { color: var(--text); }
.nav__mobile a.active { color: var(--amber); }
.nav__mobile-divider { display: none; }
.nav__mobile-group-label {
  font-size: 11px; font-weight: 600;
  text-transform: uppercase; letter-spacing: .1em;
  color: var(--muted-d);
  padding: 24px 0 8px;
  text-align: left;
}
.nav__mobile .nav__cta {
  margin-top: 28px; font-size: 14px;
  padding: 14px 24px;
  text-align: center;
  border-bottom: none;
  background: var(--white);
  color: var(--ink);
  font-weight: 600;
  border-radius: 999px;
}
.nav__mobile .nav__cta:hover {
  background: var(--amber);
  color: #000;
}

/* --- Responsive breakpoints --- */
@media (max-width: 900px) {
  .nav__links { display: none; }
  .nav__hamburger { display: flex; }
  .nav__mobile { display: flex; }
  .nav__cta.nav__cta--desktop { display: none; }
}

/* ===========================================================================
   4. HERO
   =========================================================================== */
.hero {
  padding: 140px var(--gutter) 100px;
  max-width: var(--max);
  margin: 0 auto;
  position: relative;
}
.hero__grid {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 80px;
  align-items: center;
}
@media (max-width: 960px) { .hero__grid { grid-template-columns: 1fr; gap: 60px; } }

.pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 14px;
  background: var(--amber-soft);
  border: 1px solid var(--amber-bord);
  color: var(--amber);
  font-size: 12px; font-weight: 500;
  border-radius: 999px;
  margin-bottom: 24px;
}
.pill::before { content: ""; width: 6px; height: 6px; background: var(--amber); border-radius: 50%; }

.hero h1 {
  font-size: clamp(40px, 6vw, 76px);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.035em;
  margin-bottom: 24px;
}
.hero h1 .accent {
  background: linear-gradient(120deg, var(--amber) 0%, var(--amber-warm) 100%);
  -webkit-background-clip: text; background-clip: text;
  color: transparent;
}
.hero__sub {
  font-size: 19px;
  line-height: 1.55;
  color: var(--text-soft);
  max-width: 520px;
  margin-bottom: 36px;
}
.hero__ctas { display: flex; gap: 12px; flex-wrap: wrap; }

.btn {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 24px;
  border-radius: 999px;
  font-weight: 600; font-size: 15px;
  cursor: pointer;
  transition: all .25s ease;
  border: none;
  text-decoration: none;
}
.btn--primary { background: var(--amber); color: #000; }
.btn--primary:hover { background: var(--amber-warm); transform: translateY(-1px); }
.btn--ghost { background: transparent; color: var(--text); border: 1px solid var(--slate-line-2); }
.btn--ghost:hover { border-color: var(--muted-d); background: rgba(255,255,255,0.03); }
.btn--dark { background: var(--ink); color: var(--white); }
.btn--dark:hover { background: #2c3038; transform: translateY(-1px); }

/* Phone frame — used in many sections */
.phone {
  position: relative;
  width: 100%;
  aspect-ratio: 9 / 19.5;
  background: #000;
  border-radius: 44px;
  padding: 8px;
  box-shadow:
    0 0 0 2px var(--slate-line-2),
    0 60px 120px -40px rgba(244, 197, 66, 0.18),
    0 30px 80px -20px rgba(0,0,0,0.5);
}
.phone img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: top;
  border-radius: 36px;
}
/* Phone with a scrollable viewport overrides the image rules above. */
.phone--scroll img {
  border-radius: 0;
  height: auto !important;
  object-fit: unset !important;
}
.phone::before {
  content: "";
  position: absolute;
  top: 14px; left: 50%;
  transform: translateX(-50%);
  width: 100px; height: 26px;
  background: #000;
  border-radius: 999px;
  z-index: 2;
}

/* Hero phone wrap with floating annotation cards */
.hero__phone-wrap { position: relative; width: 100%; max-width: 360px; margin-left: auto; }

.float-card {
  position: absolute;
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: 14px;
  padding: 12px 16px;
  display: flex; align-items: center; gap: 10px;
  box-shadow: 0 20px 50px -20px rgba(0,0,0,0.5);
  font-size: 13px;
  animation: float 5s ease-in-out infinite;
  z-index: 5;
}
.float-card__icon {
  width: 28px; height: 28px;
  border-radius: 8px;
  background: var(--slate-line);
  color: var(--amber);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.float-card__title { font-weight: 600; }
.float-card__sub { color: var(--muted-d); font-size: 11px; }
.float-card--1 { top: 12%; left: -40px; animation-delay: 0s; }
.float-card--2 { top: 50%; right: -50px; animation-delay: 1.5s; }
.float-card--3 { bottom: 14%; left: -30px; animation-delay: 3s; }

@keyframes float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}
@media (max-width: 1100px) { .float-card { display: none; } }

/* ===========================================================================
   5. SECTION GENERICS
   =========================================================================== */
section { scroll-margin-top: 80px; } /* offset for sticky nav on anchor scroll */
.section { padding: 120px var(--gutter); }
@media (max-width: 760px) { .section { padding: 80px var(--gutter); } }
.section__inner { max-width: var(--max); margin: 0 auto; }
.section__inner--narrow { max-width: 760px; margin: 0 auto; }
.section--light { background: var(--off-white); color: var(--ink); }

.eyebrow {
  display: inline-block;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--amber);
  margin-bottom: 18px;
}
.section--light .eyebrow { color: var(--ink); }

h2 {
  font-size: clamp(34px, 4.5vw, 56px);
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin-bottom: 18px;
}

h3 {
  font-size: clamp(20px, 2.5vw, 26px);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.02em;
}

h4 {
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.section__lead {
  font-size: 18px;
  color: var(--text-soft);
  max-width: 640px;
  line-height: 1.55;
}
.section--light .section__lead { color: var(--muted-l); }
.section__head { margin-bottom: 64px; max-width: 720px; }
.section__head--center { margin-left: auto; margin-right: auto; text-align: center; }
.section__head--center .section__lead { margin-left: auto; margin-right: auto; }

/* ===========================================================================
   6. OCR / HOW IT WORKS — three steps
   =========================================================================== */
.steps {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 20px;
  align-items: stretch;
}
@media (max-width: 900px) { .steps { grid-template-columns: 1fr; } }

.step {
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-lg);
  padding: 32px;
  transition: transform .35s ease, border-color .35s ease;
  position: relative;
  display: flex; flex-direction: column;
}
.step:hover { transform: translateY(-4px); border-color: var(--amber-bord); }
.step__num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--slate);
  background: var(--amber);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin-bottom: 10px;
  padding: 4px 14px;
  border-radius: 999px;
}
.step__title {
  font-size: 22px; font-weight: 600;
  letter-spacing: -0.02em; margin-bottom: 12px;
  text-align:center; 
}
.step__desc { font-size: 14px; var(--text-soft); margin-bottom: 24px; line-height: 1.55; flex: 1; }

.step__art {
  aspect-ratio: 1.5/1;
  background: var(--slate);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  position: relative;
}

/* Step 2 video variant — when the OCR demo video is available, it covers
   the .step__art area and the SVG fallback fades out. The fallback stays
   visible until JS detects video.readyState >= 2 and adds .has-video. */
.step__art--video .step__video {
  position: absolute;
  inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: top;
  opacity: 0;
  transition: opacity .5s ease;
}
.step__art--video.has-video .step__video { opacity: 1; }
.step__art--video.has-video .step__art-fallback { opacity: 0; }
.step__art-fallback {
  transition: opacity .5s ease;
  position: relative;
  z-index: 1;
}
@media (prefers-reduced-motion: reduce) {
  .step__video { display: none; }
}

/* ─── Features 2-column layout (How It Works) ───────────────────────────── */
.features-layout {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: start;
}
.features-layout__steps .section__head {
  margin-bottom: 28px;
  max-width: none;
}
.features-layout__steps .steps {
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
}
.features-layout__steps .step {
  padding: 16px 14px;
}
.features-layout__steps .step__art {
  aspect-ratio: 1.4/1;
}
.features-layout__steps .step__title {
  font-size: 15px;
}
.features-layout__steps .step__desc {
  font-size: 13px;
  line-height: 1.5;
}
.features-layout__video {
  display: flex;
  justify-content: center;
  position: sticky;
  top: 88px;
}
.features-layout__video .ocr-demo__frame {
  width: clamp(240px, 90%, 320px);
}
@media (max-width: 900px) {
  .features-layout {
    grid-template-columns: 1fr;
    gap: 40px;
  }
  .features-layout__steps .steps {
    grid-template-columns: 1fr;
  }
  .features-layout__video {
    position: static;
    order: -1;
  }
}

/* ─── OCR demo: featured phone-frame video ───────────────────────────────── */
.ocr-demo {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 56px auto 72px;
}
.ocr-demo__frame {
  width: 264px;
  background: #080a0f;
  border-radius: 50px;
  border: 1.5px solid rgba(255,255,255,0.07);
  padding: 14px 10px 10px;
  position: relative;
  box-shadow:
    0 0 0 1px rgba(0,0,0,0.7),
    0 40px 80px rgba(0,0,0,0.65),
    0 0 100px rgba(244,197,66,0.07);
}
.ocr-demo__notch {
  width: 68px;
  height: 5px;
  background: rgba(255,255,255,0.1);
  border-radius: 999px;
  margin: 0 auto 10px;
}
.ocr-demo__video {
  width: 100%;
  border-radius: 38px;
  display: block;
  background: #000;
}
.ocr-demo__caption {
  margin-top: 20px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted-l);
  text-align: center;
}
@media (prefers-reduced-motion: reduce) { .ocr-demo__video { display: none; } }

/* Animated extraction lines (step 2) */
.extract-lines path {
  stroke: var(--amber);
  stroke-width: 1.4;
  stroke-dasharray: 4 4;
  fill: none;
  opacity: 0;
  animation: dashflow 2.5s ease-in-out infinite;
}
.extract-lines path:nth-child(1) { animation-delay: 0s; }
.extract-lines path:nth-child(2) { animation-delay: 0.4s; }
.extract-lines path:nth-child(3) { animation-delay: 0.8s; }
@keyframes dashflow {
  0%, 100% { opacity: 0; stroke-dashoffset: 0; }
  50%      { opacity: 1; stroke-dashoffset: -16; }
}

/* Records breadth grid (under steps) */
.records-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-top: 60px;
}
@media (max-width: 900px) { .records-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px) { .records-grid { grid-template-columns: repeat(2, 1fr); } }

.record-tile {
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-sm);
  padding: 22px 20px;
  transition: all .25s ease;
}
.record-tile:hover {
  border-color: var(--amber);
  background: var(--slate-card-2);
  transform: translateY(-2px);
}
.record-tile__icon {
  width: 36px; height: 36px;
  color: var(--amber);
  background: var(--slate-line);
  border-radius: 10px;
  padding: 6px;
  margin-bottom: 14px;
}
.record-tile__title { font-weight: 600; font-size: 14px; margin-bottom: 4px; }
.record-tile__sub { font-size: 12px; color: var(--muted-d); }

/* ===========================================================================
   7. ORGANIZE — Documents & Directory three-level diagram (LIGHT section)
   =========================================================================== */
.organize-grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 80px;
  align-items: center;
}
@media (max-width: 900px) { .organize-grid { grid-template-columns: 1fr; gap: 50px; } }

.organize__copy h3 {
  font-size: 17px;
  font-weight: 600;
  margin: 32px 0 16px;
  letter-spacing: -0.01em;
  color: var(--ink);
}

.levels { display: flex; flex-direction: column; gap: 12px; }
.level {
  display: flex; align-items: start; gap: 14px;
  padding: 18px 20px;
  background: var(--white);
  border: 1px solid var(--light-line);
  border-radius: var(--radius-sm);
  transition: all .25s ease;
}
.level:hover {
  border-color: var(--ink);
  transform: translateX(4px);
}
.level__num {
  width: 26px; height: 26px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--white);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 600;
  flex-shrink: 0;
  font-family: var(--font);
}
.level__body strong { display: block; font-size: 15px; font-weight: 600; color: var(--ink); margin-bottom: 2px; }
.level__body span { font-size: 13px; color: var(--muted-l); line-height: 1.5; }

/* Directory phone mockup with floating annotation tags
   - The phone shows the real Directory screen (proof, not abstraction)
   - Floating tags float OUT from the phone and point at the relevant example
   - Each tag matches the numbered scope card on the left (3 = household, 2 = profile-scoped) */
.organize__phone-wrap {
  position: relative;
  max-width: 320px;
  margin: 0 auto;
  width: 100%;
}

/* Stacked phones layout: Documents on top, Directory below.
   Each block is its own positioning context for floating tags. */
.organize__phones {
  display: flex;
  flex-direction: row;        /* SIDE BY SIDE — Documents on left, Directory on right */
  gap: 28px;
  width: 100%;
  align-items: flex-start;
  justify-content: center;
}
.organize__phone-block {
  position: relative;        /* anchor for floating .org-tag elements */
  flex: 1;
  min-width: 0;
  max-width: 240px;
}
@media (max-width: 760px) {
  /* On narrow screens, fall back to stacked so phones don't get crushed */
  .organize__phones { flex-direction: column; align-items: center; gap: 50px; }
  .organize__phone-block { max-width: 280px; width: 100%; }
}
.organize__phone-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted-l);
  margin-bottom: 14px;
  text-align: center;
}

.org-tag {
  position: absolute;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px 8px 8px;
  background: var(--white);
  border: 1px solid var(--light-line);
  border-radius: 999px;
  box-shadow: 0 8px 24px -8px rgba(0,0,0,0.15), 0 2px 6px rgba(0,0,0,0.04);
  font-size: 12px;
  font-weight: 500;
  color: var(--ink);
  white-space: nowrap;
  z-index: 3;
  animation: tag-float 4s ease-in-out infinite;
}
.org-tag__num {
  width: 22px; height: 22px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--white);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 600;
  flex-shrink: 0;
}
.org-tag__label { letter-spacing: -0.005em; }

/* Tag positions — anchored to where the example appears on the screenshot.
   In the side-by-side layout phones are narrower and adjacent, so tags must
   stay close to their own phone (mostly inside or just barely outside the
   phone bounds) to avoid colliding with the neighbor. */
.org-tag--household {
  /* Joe's Plumbers — top portion of the screen, no profile link */
  top: 14%;
  left: -8%;
  animation-delay: 0s;
}
.org-tag--profile {
  /* Sarah Chen → Olivia Hart — middle of screen */
  top: 52%;
  right: -6%;
  animation-delay: 1.3s;
}
.org-tag--multi {
  /* Maria Santos → Lucky, Phoebe — toward top-middle */
  top: 32%;
  right: -4%;
  animation-delay: 2.6s;
}
.org-tag--docs-1 {
  top: 22%;
  left: -8%;
  animation-delay: 0.6s;
}
.org-tag--docs-2 {
  top: 58%;
  left: -8%;
  animation-delay: 1.8s;
}

@keyframes tag-float {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-5px); }
}

@media (prefers-reduced-motion: reduce) {
  .org-tag { animation: none; }
}

/* On narrow viewports, tuck tags inside the phone container so they don't escape the page */
@media (max-width: 600px) {
  .org-tag--household { left: 0; top: 8%; }
  .org-tag--profile   { right: 0; top: 50%; }
  .org-tag--multi     { right: 0; top: 26%; }
  .org-tag           { font-size: 11px; padding: 6px 10px 6px 6px; }
  .org-tag__num      { width: 18px; height: 18px; font-size: 10px; }
}

/* ===========================================================================
   8. SHARE — split with PDF preview, on dark
   =========================================================================== */
.share-grid {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 60px;
  align-items: center;
}
@media (max-width: 900px) { .share-grid { grid-template-columns: 1fr; } }

/* Side-by-side phone pair in share section */
.share__phone-pair {
  display: flex;
  flex-direction: row;
  gap: 16px;
  align-items: flex-start;
  width: 100%;
}
.share__phone-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.share__phone-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted-l);
  text-align: center;
}
@media (max-width: 520px) {
  .share__phone-pair { flex-direction: column; align-items: center; }
  .share__phone-col { width: 100%; max-width: 280px; }
}

.scenarios { display: flex; flex-direction: column; gap: 12px; margin-top: 40px; }
.scenario {
  display: flex; align-items: center; gap: 16px;
  padding: 18px 20px;
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-sm);
  transition: all .25s ease;
}
.scenario:hover {
  border-color: var(--amber);
  transform: translateX(4px);
}
.scenario__icon {
  width: 40px; height: 40px;
  border-radius: 10px;
  background: var(--slate-line);
  color: var(--amber);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.scenario__text strong { display: block; font-size: 14px; font-weight: 600; color: var(--text); }
.scenario__text span { font-size: 13px; color: var(--text-soft); }

.share__preview {
  display: flex;
  align-items: center;
  justify-content: center;
}
.share__preview .phone {
  max-width: 280px;
  width: 100%;
}

/* On mobile, stack the hands-PDF below the phone instead of absolute overlap */
@media (max-width: 900px) {
  .share__preview {
    flex-direction: column;
    margin-top: 40px !important;
  }
  .share__preview > img {
    position: static !important;
    width: 90% !important;
    max-width: 400px !important;
    transform: rotate(-2deg) !important;
    margin-top: -40px;
    right: auto !important;
    bottom: auto !important;
    z-index: 0 !important;
  }
}

/* ===========================================================================
   9. HOUSEHOLD — three profile cards (LIGHT section)
   =========================================================================== */
.household {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px;
}
@media (max-width: 900px) { .household { grid-template-columns: 1fr; } }

.household-card {
  background: var(--white);
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--light-line);
  transition: all .35s ease;
}
.household-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 30px 60px -25px rgba(26,29,36,0.18);
  border-color: var(--light-line-2);
}
.household-card__img { aspect-ratio: 9/14; background: #000; overflow: hidden; }
.household-card__img img { width: 100%; height: 100%; object-fit: cover; object-position: top; }
.household-card__body { padding: 24px 26px 28px; }
.household-card__tag {
  display: inline-flex;
  background: var(--ink);
  color: var(--white);
  font-size: 11px;
  font-weight: 500;
  padding: 4px 10px;
  border-radius: 999px;
  margin-bottom: 12px;
}
.household-card__name { font-size: 22px; font-weight: 600; letter-spacing: -0.02em; margin-bottom: 6px; }
.household-card__desc { font-size: 14px; color: var(--muted-l); line-height: 1.55; }

/* Featured home card — split layout above the 3 person/pet cards.
   The home is structurally different (it's a place, not a person) so it
   gets its own visual treatment to emphasize the breadth of what it tracks. */
.home-feature {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 60px;
  align-items: center;
  background: var(--white);
  border: 1px solid var(--light-line);
  border-radius: var(--radius-lg);
  padding: 56px;
  margin-bottom: 28px;
  transition: all .35s ease;
}
.home-feature:hover {
  border-color: var(--light-line-2);
  box-shadow: 0 30px 60px -25px rgba(26,29,36,0.12);
}
@media (max-width: 900px) { .home-feature { grid-template-columns: 1fr; gap: 40px; padding: 36px; } }

.home-feature__tag {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--ink);
  color: var(--white);
  font-size: 11px;
  font-weight: 500;
  padding: 4px 10px 4px 8px;
  border-radius: 999px;
  margin-bottom: 16px;
}
.home-feature__tag svg { width: 12px; height: 12px; }
.home-feature__name {
  font-size: 36px;
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin-bottom: 12px;
  color: var(--ink);
}
.home-feature__lead {
  font-size: 16px;
  color: var(--muted-l);
  line-height: 1.55;
  margin-bottom: 28px;
}
.home-feature__chips {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.home-chip {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  background: var(--off-white);
  border: 1px solid var(--light-line);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
  color: var(--ink);
  transition: all .2s ease;
}
.home-chip:hover {
  border-color: var(--ink);
  transform: translateY(-1px);
}
.home-chip svg {
  width: 14px; height: 14px;
  color: var(--muted-l);
}

.home-feature__phone-wrap {
  display: flex; justify-content: center;
}
.home-feature__phone-wrap .phone {
  max-width: 280px;
}

/* Scrolling-phone variant — used for the featured Hart Household card.
   The phone frame stays fixed; the screenshot inside scrolls vertically
   on a CSS keyframe loop. Conveys depth: "look at everything one profile
   holds" — without the user having to scroll the page.

   Trick: the source screenshot is a long scroll-capture (~8000px tall).
   We size the inner image at full natural height then animate translateY
   from 0 to -(image height - phone visible height). Pauses on hover so
   users can stop and read. Top/bottom gradient masks hide the loop seam.

   *** UPDATED ***: replaced auto-scroll with a USER-CONTROLLED scrollable
   viewport. Hover the phone (or touch on mobile) and the screenshot scrolls
   with the user's wheel/finger. Move away and the page resumes scrolling
   normally. overscroll-behavior: contain keeps the page from scrolling while
   the phone has more content to reveal. */
.phone--scroll {
  position: relative;
  overflow: hidden;
}

/* The viewport: a div inside the phone that holds the long image and is
   itself scrollable. Padding-aware so the screenshot lives inside the bezel. */
.phone__viewport {
  position: absolute;
  top: 8px;
  left: 8px;
  right: 8px;
  bottom: 8px;
  border-radius: 36px;
  overflow-y: auto;
  overflow-x: hidden;
  /* Keep page scroll responsive: only this viewport scrolls when hovered,
     and the page takes back over once the user reaches the top/bottom. */
  overscroll-behavior: contain;
  /* Smooth momentum on iOS */
  -webkit-overflow-scrolling: touch;
  /* Hide the scrollbar — the phone shouldn't look like a webpage */
  scrollbar-width: none;
}
.phone__viewport::-webkit-scrollbar { display: none; }

/* The image inside the viewport flows naturally at its full height, so
   the user can scroll through every pixel of the long screenshot. */
.phone__viewport img {
  width: 100%;
  height: auto;
  display: block;
  border-radius: 0;
  object-fit: unset;
}


/* Subtle scroll affordance — a soft gradient hint at the bottom of each
   phone that says "there's more here, you can scroll". Fades on hover when
   the user has clearly engaged. */
.phone--scroll .scroll-hint {
  position: absolute;
  bottom: 18px; left: 50%;
  transform: translateX(-50%);
  z-index: 4;
  display: flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  background: rgba(27, 31, 43, 0.78);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  letter-spacing: 0.02em;
  pointer-events: none;
  opacity: 1;
  transition: opacity .35s ease;
  animation: hintBob 2.4s ease-in-out infinite;
}
.phone--scroll .scroll-hint svg {
  width: 12px; height: 12px;
  color: var(--amber);
}
/* Once a user actually scrolls or hovers, hint fades out — they get it. */
.phone--scroll:hover .scroll-hint,
.phone--scroll.has-scrolled .scroll-hint { opacity: 0; }

@keyframes hintBob {
  0%, 100% { transform: translate(-50%, 0); }
  50%      { transform: translate(-50%, 4px); }
}

@media (prefers-reduced-motion: reduce) {
  .phone--scroll .scroll-hint { animation: none; }
}

/* ===========================================================================
   9a. DUAL-SKIN PHONES — every phone in the Household section can have BOTH
   a dark and a light screenshot stacked on top of each other. The active one
   is opacity:1, inactive is 0. When the parent .household-section gets the
   .is-light class (from clicking the segmented toggle below), the swap is
   pure CSS opacity transition — smooth and zero-jank.

   *** UPDATED ***: instead of two stacked <img> tags with their own animation,
   we now have two <div class="phone__viewport"> stacked, each containing one
   image. They scroll INDEPENDENTLY but can be sync'd via JS so flipping
   modes preserves scroll position. (See JS at the bottom of this file.)
   =========================================================================== */
.phone--dual { position: relative; }
.phone--dual .phone__viewport {
  /* Both viewports stack on top of each other in the same position */
  transition: opacity .55s ease;
}
.phone--dual .phone__viewport--light { opacity: 0; pointer-events: none; }
.household-section.is-light .phone--dual .phone__viewport--dark  { opacity: 0; pointer-events: none; }
.household-section.is-light .phone--dual .phone__viewport--light { opacity: 1; pointer-events: auto; }

/* Card-variant scrolling phone — used inside the 3 household triptych cards. */
.phone--card { max-width: 100%; }

/* ===========================================================================
   9b. TRIPTYCH HEADER — segmented dark/light toggle that controls all four
   phones in the section at once. Sits between the featured Hart Household
   card and the 3 profile cards.
   =========================================================================== */
.triptych-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  padding: 32px 0 28px;
  margin-top: 8px;
  border-top: 1px solid var(--slate-line);
  flex-wrap: wrap;
}
.triptych-copy h3 {
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.02em;
  margin-bottom: 6px;
  color: var(--text);
}
.triptych-copy p {
  font-size: 14px;
  color: var(--text-soft);
  max-width: 460px;
  line-height: 1.55;
}

/* Segmented toggle — two pill buttons with a sliding amber pill behind them.
   Pure CSS, JS only adds .is-active to the chosen button. */
.theme-seg {
  position: relative;
  display: inline-flex;
  background: var(--off-white);
  border: 1px solid var(--light-line);
  border-radius: 999px;
  padding: 4px;
  flex-shrink: 0;
}
.theme-seg__btn {
  position: relative;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 18px;
  background: transparent;
  border: 0;
  border-radius: 999px;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 500;
  color: var(--muted-l);
  cursor: pointer;
  transition: color .35s ease;
}
.theme-seg__btn svg { width: 14px; height: 14px; }
.theme-seg__btn.is-active { color: var(--ink); }

/* The pill that slides behind the active button. Position is set inline by JS
   (left + width) but defaults to the dark side. Smooth ease for delight. */
.theme-seg__pill {
  position: absolute;
  top: 4px; bottom: 4px;
  left: 4px;
  width: 86px;                                /* will be set by JS */
  background: var(--white);
  border-radius: 999px;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08), 0 1px 2px rgba(0,0,0,0.04);
  transition: left .42s cubic-bezier(.4,0,.2,1), width .42s cubic-bezier(.4,0,.2,1);
  z-index: 1;
}

/* ===========================================================================
   9c. HOUSEHOLD-SECTION LIGHT/DARK FLIP — when .is-light is on the section,
   the surrounding card surfaces and text colors shift too. Subtle but
   makes the section feel like it actually changes mode, not just the phones.
   =========================================================================== */
.household-section {
  transition: background-color .55s ease, color .55s ease;
}
.household-section.is-light {
  background: #1b1f2b;     /* slate-dark — section flips dark when "light" mode is shown */
  color: var(--text);
}
.household-section.is-light .home-feature {
  background: var(--slate-card);
  border-color: var(--slate-line);
  color: var(--text);
}
.household-section.is-light .home-feature__name { color: var(--text); }
.household-section.is-light .home-feature__lead { color: var(--text-soft); }
.household-section.is-light .home-feature__tag {
  background: var(--text);
  color: var(--ink);
}
.household-section.is-light .home-chip {
  background: var(--slate);
  border-color: var(--slate-line-2);
  color: var(--text);
}
.household-section.is-light .home-chip svg { color: var(--text-soft); }

.household-section.is-light .triptych-head { border-top-color: var(--slate-line); }
.household-section.is-light .triptych-copy h3 { color: var(--text); }
.household-section.is-light .triptych-copy p  { color: var(--text-soft); }

.household-section.is-light .theme-seg {
  background: var(--slate);
  border-color: var(--slate-line);
}
.household-section.is-light .theme-seg__btn { color: var(--text-soft); }
.household-section.is-light .theme-seg__btn.is-active { color: var(--ink); }
.household-section.is-light .theme-seg__pill { background: var(--text); }

.household-section.is-light .household-card {
  background: var(--slate-card);
  border-color: var(--slate-line);
}
.household-section.is-light .household-card__name { color: var(--text); }
.household-section.is-light .household-card__desc { color: var(--text-soft); }
.household-section.is-light .household-card__tag {
  background: var(--text);
  color: var(--ink);
}

/* The section header text also flips with the toggle */
.household-section.is-light .section__head .eyebrow { color: var(--amber); }
.household-section.is-light .section__head h2 { color: var(--text); }
.household-section.is-light .section__head .section__lead { color: var(--text-soft); }

/* ===========================================================================
   9d. HOUSEHOLD CARD — updated to host a scrolling phone instead of a static
   image. The phone sits in a fixed-aspect container so the cards align cleanly.
   =========================================================================== */
.household-card__phone {
  aspect-ratio: 1 / 1.15;
  padding: 30px 30px 0;
  background: var(--off-white);
  display: flex;
  align-items: flex-start;
  justify-content: center;
  overflow: hidden;
  transition: background .55s ease;
}
.household-section.is-light .household-card__phone {
  background: var(--slate);
}
.household-card__phone .phone {
  width: 80%;
  max-width: 220px;
}

/* ===========================================================================
   9e. AUDIENCES — "Who LifeVault is for"
   5 cards in an asymmetric grid: featured card spans 2 rows on desktop,
   the other 4 sit in a 2x2 grid beside it. Stacks vertically on mobile.

   The featured card has a subtle amber accent border + slightly different
   background to make it visually weighted without being garish.
   =========================================================================== */
.audiences {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 22px;
  margin-top: 64px;
}
@media (max-width: 900px) {
  .audiences {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
  }
}
@media (max-width: 600px) {
  .audiences { grid-template-columns: 1fr; }
}

.audiences__card {
  position: relative;
  background: var(--white);
  border: 1px solid var(--light-line);
  border-radius: var(--radius);
  padding: 28px 28px 32px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  transition: all .3s ease;
}
.audiences__card:hover {
  transform: translateY(-3px);
  border-color: var(--light-line-2);
  box-shadow: 0 30px 60px -25px rgba(26,29,36,0.12);
}

/* Featured card spans 2 rows on desktop — gets visual emphasis */
.audiences__card--featured {
  grid-row: span 2;
  border-color: var(--amber);
  border-width: 1.5px;
  background: linear-gradient(180deg, rgba(244, 197, 66, 0.04) 0%, var(--white) 70%);
  padding: 36px 32px 40px;
}
@media (max-width: 900px) {
  .audiences__card--featured { grid-row: auto; grid-column: span 2; }
}
@media (max-width: 600px) {
  .audiences__card--featured { grid-column: auto; }
}

.audiences__featured-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  background: var(--amber);
  color: var(--ink);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 999px;
  margin-bottom: 4px;
}

.audiences__icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--off-white);
  border: 1px solid var(--light-line);
  color: var(--ink);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  margin-bottom: 4px;
}
.audiences__icon svg { width: 22px; height: 22px; }

.audiences__card--featured .audiences__icon {
  background: var(--amber);
  border-color: var(--amber);
  color: var(--slate);
}

.audiences__card h3 {
  font-size: 18px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 0;
}
.audiences__card--featured h3 {
  font-size: 26px;
  letter-spacing: -0.02em;
  line-height: 1.15;
}

.audiences__card p {
  font-size: 14px;
  color: var(--muted-l);
  line-height: 1.6;
  margin: 0;
}
.audiences__card--featured p {
  font-size: 15px;
  line-height: 1.65;
}

/* ===========================================================================
   9b. THEME-TOGGLE MOMENT — small interactive wink between household and
   customize sections. Two stacked phone screenshots cross-fade when the
   user clicks the iOS-style mode toggle. The whole section's background
   also flips light <-> dark for emphasis.

   Implementation note:
   - Wrapper has data-theme="dark" by default (matching the slate page bg)
   - Click .theme-toggle to add/remove .is-light on the wrapper
   - .is-light flips wrapper colors AND swaps which <img> is opacity:1
   ============================================================================ */
.theme-moment {
  padding: 100px var(--gutter);
  transition: background .6s ease, color .6s ease;
  background: var(--slate);
  color: var(--text);
  position: relative;
  overflow: hidden;
}
.theme-moment.is-light {
  background: var(--off-white);
  color: var(--ink);
}
.theme-moment__inner {
  max-width: 920px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 60px;
  align-items: center;
}
@media (max-width: 760px) {
  .theme-moment { padding: 70px var(--gutter); }
  .theme-moment__inner { grid-template-columns: 1fr; gap: 40px; text-align: center; }
}

.theme-moment__copy h3 {
  font-size: clamp(28px, 3.5vw, 42px);
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.1;
  margin-bottom: 14px;
}
.theme-moment__copy h3 em {
  font-style: normal;
  color: var(--amber);
}
.theme-moment__copy p {
  font-size: 16px;
  color: var(--text-soft);
  margin-bottom: 28px;
  max-width: 380px;
  transition: color .6s ease;
}
.theme-moment.is-light .theme-moment__copy p { color: var(--muted-l); }
@media (max-width: 760px) { .theme-moment__copy p { margin-left: auto; margin-right: auto; } }

/* iOS-style theme toggle button — bigger than the row switches above */
.theme-toggle {
  position: relative;
  width: 64px; height: 34px;
  background: var(--slate-card-2);
  border: 1px solid var(--slate-line-2);
  border-radius: 999px;
  cursor: pointer;
  transition: background .4s ease, border-color .4s ease;
  padding: 0;
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
}
.theme-toggle::after {
  content: "";
  position: absolute;
  top: 3px; left: 3px;
  width: 26px; height: 26px;
  background: var(--slate);
  border-radius: 50%;
  transition: transform .4s cubic-bezier(.4,0,.2,1), background .4s ease;
  display: flex;
  align-items: center; justify-content: center;
  box-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
/* Sun & moon icons inside the knob, swap based on state */
.theme-toggle__icon {
  position: absolute;
  top: 50%; left: 16px;
  transform: translate(-50%, -50%);
  width: 14px; height: 14px;
  color: var(--amber);
  transition: transform .4s cubic-bezier(.4,0,.2,1), color .4s ease;
  pointer-events: none;
  z-index: 1;
}
.theme-moment.is-light .theme-toggle {
  background: var(--amber);
  border-color: var(--amber-warm);
}
.theme-moment.is-light .theme-toggle::after { transform: translateX(30px); background: var(--white); }
.theme-moment.is-light .theme-toggle__icon { transform: translate(30px, -50%); color: var(--amber-warm); }

.theme-toggle-row {
  display: inline-flex; align-items: center; gap: 14px;
  font-size: 13px;
  font-weight: 500;
  color: var(--muted-d);
  transition: color .4s ease;
}
.theme-moment.is-light .theme-toggle-row { color: var(--muted-l); }
.theme-toggle-row__hint { letter-spacing: 0.02em; }
@media (max-width: 760px) { .theme-toggle-row { justify-content: center; } }

/* The two stacked phones that cross-fade */
.theme-phones {
  position: relative;
  width: 100%;
  max-width: 280px;
  margin: 0 auto;
  aspect-ratio: 9 / 19.5;
}
.theme-phones .phone {
  position: absolute;
  inset: 0;
  width: 100%;
  transition: opacity .6s ease, transform .6s ease;
}
.theme-phones .phone--dark { opacity: 1; }
.theme-phones .phone--light {
  opacity: 0;
  transform: scale(0.97);
  /* light-mode phone needs a brighter shadow ring */
  box-shadow:
    0 0 0 2px var(--light-line-2),
    0 60px 120px -40px rgba(244, 197, 66, 0.18),
    0 30px 80px -20px rgba(26, 29, 36, 0.18);
}
.theme-moment.is-light .phone--dark { opacity: 0; transform: scale(0.97); }
.theme-moment.is-light .phone--light { opacity: 1; transform: scale(1); }

/* ===========================================================================
   10. CUSTOMIZE — interactive toggle demo + phone screenshot
   =========================================================================== */
.customize-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  align-items: center;
}
@media (max-width: 900px) { .customize-grid { grid-template-columns: 1fr; gap: 50px; } }

.toggle-list {
  margin-top: 36px;
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius);
  padding: 8px;
  box-shadow: 0 20px 50px -25px rgba(0,0,0,0.4);
}
.toggle-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  transition: background .2s ease;
  user-select: none;
}
.toggle-row:hover { background: var(--slate-card-2); }
.toggle-row__left { display: flex; align-items: center; gap: 14px; }
.toggle-row__icon {
  width: 32px; height: 32px;
  border-radius: 8px;
  background: var(--slate);
  color: var(--text-soft);
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  border: 1px solid var(--slate-line);
}
.toggle-row.is-on .toggle-row__icon {
  background: var(--amber-soft);
  color: var(--amber);
  border-color: var(--amber-bord);
}
.toggle-row__label { font-size: 15px; font-weight: 600; color: var(--text); }
.toggle-row__sub   { font-size: 12px; color: var(--muted-d); margin-top: 2px; }

/* iOS-style switch */
.switch {
  position: relative;
  width: 44px; height: 26px;
  background: #4a4d5a;
  border-radius: 999px;
  transition: background .25s ease;
  flex-shrink: 0;
  border: none;
  cursor: pointer;
  padding: 0;
}
.switch::after {
  content: "";
  position: absolute;
  top: 2px; left: 2px;
  width: 22px; height: 22px;
  background: white;
  border-radius: 50%;
  transition: transform .25s ease;
  box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}
.toggle-row.is-on .switch { background: var(--amber); }
.toggle-row.is-on .switch::after { transform: translateX(18px); }

.customize__phone-wrap {
  background: var(--slate-card);
  border-radius: var(--radius-lg);
  padding: 50px 30px 0;
  display: flex; align-items: end; justify-content: center;
  aspect-ratio: 4/5;
  border: 1px solid var(--slate-line);
  overflow: hidden;
  position: relative;
}
.customize__phone-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(244,197,66,0.06) 1px, transparent 1px);
  background-size: 20px 20px;
  pointer-events: none;
}
.customize__phone-wrap .phone {
  max-width: 280px;
  position: relative;
  z-index: 1;
}

/* ===========================================================================
   11. SUPPORT — features + phone (DARK feature section, slightly lifted)
   =========================================================================== */
.support-section {
  background: var(--off-white);
  border-top: 1px solid var(--light-line);
  border-bottom: 1px solid var(--light-line);
}
/* ===========================================================================
   SUPPORT GUIDE — two phones side-by-side: builder on the left, summary
   on the right. The summary phone uses the scrolling-phone trick to
   demonstrate the killer artifact (a tall, plain-language summary that
   caregivers actually hand off).

   Mobile: stacks vertically with arrow rotated 90deg.
   =========================================================================== */
.support-pair {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 40px;
  align-items: center;
  margin: 60px 0 80px;
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}
@media (max-width: 760px) {
  .support-pair { grid-template-columns: 1fr; gap: 30px; }
  .support-pair__arrow svg { transform: rotate(90deg); }
}

.support-pair__col {
  display: flex;
  flex-direction: column;
  gap: 18px;
  align-items: center;
}
.support-pair__col .phone {
  max-width: 280px;
  width: 100%;
}
.support-pair__caption {
  width: 100%;
  max-width: 280px;
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.support-pair__step {
  flex-shrink: 0;
  width: 28px; height: 28px;
  border-radius: 999px;
  background: var(--amber);
  color: #1b1f2b !important;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
  font-family: var(--font);
}
.support-pair__caption strong {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 2px;
}
.support-pair__caption span {
  font-size: 13px;
  color: var(--muted-l);
  line-height: 1.5;
}

.support-pair__arrow {
  color: var(--muted-l);
  display: flex; align-items: center; justify-content: center;
}
.support-pair__arrow svg {
  width: 36px; height: 36px;
  transition: transform .3s ease;
}

/* ===========================================================================
   CUSTOMIZE before/after pair — same shape as support-pair: cause | arrow | effect.
   Toggle modal on the left, the resulting customized profile on the right.
   Uses its own classnames so we can tweak independently in the future.
   =========================================================================== */
.customize-pair {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 40px;
  align-items: center;
  margin: 60px 0 50px;
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}
@media (max-width: 760px) {
  .customize-pair { grid-template-columns: 1fr; gap: 30px; }
  .customize-pair__arrow svg { transform: rotate(90deg); }
}

.customize-pair__col {
  display: flex;
  flex-direction: column;
  gap: 18px;
  align-items: center;
}
.customize-pair__col .phone {
  max-width: 280px;
  width: 100%;
}
.customize-pair__caption {
  width: 100%;
  max-width: 280px;
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.customize-pair__step {
  flex-shrink: 0;
  width: 28px; height: 28px;
  border-radius: 999px;
  background: var(--amber);
  color: #1b1f2b !important;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
  font-family: var(--font);
}
.customize-pair__caption strong {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}
.customize-pair__caption span {
  font-size: 13px;
  color: var(--text-soft);
  line-height: 1.5;
}
.customize-pair__arrow {
  color: var(--text-soft);
  display: flex; align-items: center; justify-content: center;
}
.customize-pair__arrow svg {
  width: 36px; height: 36px;
}

/* Reassuring-but-quiet note beneath the pair, generalizing the pattern */
.customize-note {
  max-width: 720px;
  margin: 0 auto;
  text-align: center;
  padding: 28px 24px;
  border-top: 1px solid var(--slate-line);
}
.customize-note p {
  font-size: 14px;
  color: var(--text-soft);
  line-height: 1.65;
}
.customize-note strong {
  color: var(--text);
  font-weight: 600;
}

/* Summary phone — slightly different from the household scroll: faster,
   no top-pause, just a smooth continuous scroll through the artifact */
.phone--summary {
  max-width: 280px;
  margin: 0 auto;
}

/* Three callouts beneath the phones — what makes this section different */
.support-callouts {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
  margin-top: 30px;
  padding-top: 50px;
  border-top: 1px solid var(--light-line);
}
@media (max-width: 760px) { .support-callouts { grid-template-columns: 1fr; gap: 22px; } }

.support-callout {
  display: flex; align-items: flex-start; gap: 12px;
}
.support-callout > svg {
  width: 20px; height: 20px;
  color: var(--amber);
  flex-shrink: 0;
  margin-top: 2px;
  padding: 4px;
  background: rgba(244, 197, 66, 0.12);
  border-radius: 999px;
  box-sizing: content-box;
  width: 14px; height: 14px;
}
.support-callout strong {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 4px;
}
.support-callout span {
  font-size: 13px;
  color: var(--muted-l);
  line-height: 1.55;
}

/* ===========================================================================
   FOUNDER LINE — quiet italic moment between Support Guide and Privacy.
   Centered, light, no card, no box. Just text on the page background.
   The amber color on the cite anchors it to the brand.
   =========================================================================== */
.founder-line {
  padding: 90px var(--gutter) 90px;
  background: var(--slate);
  text-align: center;
}
.founder-line__inner {
  max-width: 680px;
  margin: 0 auto;
}
.founder-line blockquote {
  margin: 0;
}
.founder-line blockquote p {
  font-size: 18px;
  line-height: 1.55;
  font-style: italic;
  color: var(--text-soft);
  letter-spacing: -0.005em;
  margin: 0 0 18px;
}
.founder-line blockquote cite {
  font-style: normal;
  font-size: 13px;
  font-weight: 600;
  color: var(--amber);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.founder-line__story-link {
  display: inline-block;
  margin-top: 16px;
  padding: 10px 4px;
  font-size: 9px;
  font-weight: 600;
  color: var(--text-soft);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  transition: color .2s ease;
}
.founder-line__story-link:hover { color: var(--text); }
@media (max-width: 600px) {
  .founder-line { padding: 60px var(--gutter); }
  .founder-line blockquote p { font-size: 19px; }
}

/* Legacy support-grid + support__visual + support__features kept commented
   out so we have a record, but they're no longer used. The page is leaner now. */

/* ===========================================================================
   12. PRIVACY — light section, simple grid
   =========================================================================== */
.privacy-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 60px;
}
@media (max-width: 900px) { .privacy-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .privacy-grid { grid-template-columns: 1fr; } }

.privacy-tile {
  padding: 28px 24px;
  background: var(--white);
  border-radius: var(--radius);
  border: 1px solid var(--light-line);
  transition: all .25s ease;
}
.privacy-tile:hover {
  border-color: var(--ink);
  transform: translateY(-3px);
}
.privacy-tile__icon {
  width: 36px; height: 36px;
  color: var(--ink);
  background: var(--off-white);
  border: 1px solid var(--light-line);
  border-radius: 10px;
  padding: 6px;
  margin-bottom: 16px;
}
.privacy-tile h4 { font-size: 17px; font-weight: 600; margin-bottom: 6px; letter-spacing: -0.01em; }
.privacy-tile p { font-size: 14px; color: var(--muted-l); line-height: 1.55; }

/* ===========================================================================
   12b. FAQ — accessible <details>/<summary> pattern.
   Uses the browser's native disclosure widget for accessibility wins
   (screen reader support, keyboard nav, no JS needed).
   We just style it to fit the rest of the page.
   =========================================================================== */
.faq-section { padding: 100px var(--gutter); background: #e8e9ec; }

.faq {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 56px;
}

.faq__item {
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius);
  overflow: hidden;
  transition: border-color .2s ease, background-color .2s ease;
}
.faq__item:hover { border-color: var(--slate-line-2); }
.faq__item[open] {
  background: linear-gradient(180deg, rgba(244, 197, 66, 0.03) 0%, var(--slate-card) 60%);
  border-color: var(--slate-line-2);
}

.faq__item summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 22px 26px;
  cursor: pointer;
  font-size: 16px;
  font-weight: 500;
  color: var(--text);
  letter-spacing: -0.005em;
  list-style: none;            /* hide default disclosure marker */
  user-select: none;
}
/* Hide the default disclosure triangle in all browsers */
.faq__item summary::-webkit-details-marker { display: none; }
.faq__item summary::marker { display: none; }

.faq__chevron {
  flex-shrink: 0;
  color: var(--text-soft);
  transition: transform .25s ease, color .2s ease;
}
.faq__item[open] .faq__chevron {
  transform: rotate(180deg);
  color: var(--amber);
}

.faq__item p {
  padding: 0 26px 24px;
  margin: 0;
  font-size: 15px;
  line-height: 1.65;
  color: var(--text-soft);
}
.faq__item p em {
  color: var(--text);
  font-style: italic;
}

@media (max-width: 600px) {
  .faq__item summary { padding: 18px 20px; font-size: 15px; }
  .faq__item p { padding: 0 20px 20px; font-size: 14px; }
}

/* ===========================================================================
   13. FINAL CTA
   =========================================================================== */
.cta {
  text-align: center;
  padding: 140px var(--gutter);
  background:
    radial-gradient(ellipse at center, rgba(244,197,66,0.06) 0%, transparent 60%),
    var(--slate);
}
.cta h2 { font-size: clamp(36px, 5.5vw, 64px); max-width: 800px; margin: 0 auto 20px; }
.cta__lead { color: var(--text-soft); font-size: 18px; max-width: 540px; margin: 0 auto 40px; }
.cta__actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
@media (max-width: 520px) { .cta__actions { flex-direction: column; align-items: stretch; } .cta__actions .btn { justify-content: center; } }

/* Footer */
footer {
  border-top: 1px solid var(--slate-line);
  padding: 48px var(--gutter) 36px;
  font-size: 13px;
  color: var(--muted-d);
}
footer .inner {
  max-width: var(--max); margin: 0 auto;
  display: flex; flex-direction: column; align-items: center; gap: 20px; text-align: center;
}
footer .footer__links {
  display: flex; gap: 24px; flex-wrap: wrap; justify-content: center;
}
footer .footer__email {
  color: var(--muted-l); font-weight: 500;
}
footer .footer__legal {
  padding-top: 16px;
  border-top: 1px solid var(--slate-line);
  width: 100%; max-width: 480px;
  font-size: 12px;
  color: var(--muted-d);
}
footer a:hover { color: var(--text); }

/* ===========================================================================
   14. SCROLL REVEAL
   =========================================================================== */
.reveal { opacity: 0; transform: translateY(20px); transition: opacity .7s ease, transform .7s ease; }
.reveal.in { opacity: 1; transform: none; }

/* ===========================================================================
   15. CONTACT FORM
   =========================================================================== */
.contact-section {
  padding: 100px var(--gutter) 80px;
}
.contact-section .section__inner {
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
}
.contact-form {
  max-width: 480px;
  margin: 40px auto 0;
  background: var(--slate-card);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius);
  padding: 32px 28px;
  text-align: left;
}
.contact-form__group {
  margin-bottom: 16px;
}
.contact-form__label {
  display: block;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-soft);
  margin-bottom: 6px;
}
.contact-form__input,
.contact-form__select,
.contact-form__textarea {
  width: 100%;
  padding: 12px 14px;
  background-color: var(--slate);
  border: 1px solid var(--slate-line);
  border-radius: var(--radius-sm);
  color: var(--text);
  font-family: var(--font);
  font-size: 15px;
  transition: border-color 0.2s;
}
.contact-form__input::placeholder,
.contact-form__textarea::placeholder {
  color: var(--muted-d);
}
.contact-form__input:focus,
.contact-form__select:focus,
.contact-form__textarea:focus {
  outline: none;
  border-color: var(--amber);
}
.contact-form__select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23898d99' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m2 4 4 4 4-4'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 12px 12px;
  padding-right: 36px;
  cursor: pointer;
}
.contact-form__textarea {
  resize: vertical;
  min-height: 80px;
}
.contact-form__upload {
  position: relative;
  overflow: hidden;
  border: 1px dashed var(--slate-line);
  border-radius: var(--radius-sm);
  background: var(--slate);
  transition: border-color 0.2s, background-color 0.2s;
  cursor: pointer;
}
.contact-form__upload:hover {
  border-color: var(--amber);
}
.contact-form__upload.is-dragover {
  border-color: var(--amber);
  background: rgba(245, 158, 11, 0.06);
}
.contact-form__file-input {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0;
  cursor: pointer;
  z-index: 1;
  font-size: 0;
  -webkit-appearance: none;
  appearance: none;
}
.contact-form__upload-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 24px 14px;
  color: var(--muted-d);
  font-size: 14px;
  pointer-events: none;
  text-align: center;
}
.contact-form__upload-placeholder svg {
  flex-shrink: 0;
  opacity: 0.5;
}
.contact-form__upload-placeholder span {
  font-size: 13px;
}
.contact-form__upload-file {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px;
  font-size: 14px;
  color: var(--text);
  pointer-events: none;
}
.contact-form__upload-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
  font-weight: 500;
}
.contact-form__upload-remove {
  flex-shrink: 0;
  background: none;
  border: none;
  color: var(--muted-d);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 4px;
  pointer-events: auto;
  position: relative;
  z-index: 2;
  transition: color 0.15s, background-color 0.15s;
}
.contact-form__upload-remove:hover {
  color: #f87171;
  background: rgba(220, 38, 38, 0.08);
}
.contact-form__hint {
  font-size: 12px;
  color: var(--muted-d);
  margin-top: 8px;
  line-height: 1.5;
}
.contact-form__file-error {
  display: none;
  margin-top: 8px;
  padding: 8px 12px;
  background: rgba(220, 38, 38, 0.1);
  border: 1px solid rgba(220, 38, 38, 0.25);
  border-radius: var(--radius-sm);
  color: #f87171;
  font-size: 13px;
  line-height: 1.5;
}
.contact-form__file-error.is-visible {
  display: block;
}
.contact-form__hp {
  display: none;
}
.contact-form__submit {
  display: flex;
  width: 100%;
  margin-top: 8px;
  justify-content: center;
}
.contact-form__note {
  text-align: center;
  font-size: 12px;
  color: var(--muted-d);
  margin-top: 14px;
}
.contact-form__error {
  display: none;
  margin-top: 12px;
  padding: 10px 14px;
  background: rgba(220, 38, 38, 0.1);
  border: 1px solid rgba(220, 38, 38, 0.25);
  border-radius: var(--radius-sm);
  color: #f87171;
  font-size: 13px;
  line-height: 1.5;
}
.contact-form__error.is-visible {
  display: block;
}
.contact-form__success {
  display: none;
  text-align: center;
  padding: 48px 24px;
}
.contact-form__success.is-visible {
  display: block;
}
.contact-form__success i,
.contact-form__success svg {
  color: var(--amber);
  margin-bottom: 12px;
}
.contact-form__success p {
  font-size: 17px;
  font-weight: 600;
  color: var(--text);
}
.contact-form__success span {
  display: block;
  font-size: 14px;
  color: var(--text-soft);
  margin-top: 6px;
}
.contact-form.is-sending .contact-form__input,
.contact-form.is-sending .contact-form__select,
.contact-form.is-sending .contact-form__textarea,
.contact-form.is-sending .contact-form__upload,
.contact-form.is-sending .contact-form__submit {
  opacity: 0.6;
  pointer-events: none;
}

/* Light-theme overrides */
.section--light .contact-form {
  background: var(--white);
  border-color: var(--light-line);
}
.section--light .contact-form__label {
  color: var(--muted-l);
}
.section--light .contact-form__input,
.section--light .contact-form__select,
.section--light .contact-form__textarea {
  background-color: var(--off-white);
  border-color: var(--light-line);
  color: var(--ink);
}
.section--light .contact-form__input::placeholder,
.section--light .contact-form__textarea::placeholder {
  color: var(--muted-l);
}
.section--light .contact-form__select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%236b6f78' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m2 4 4 4 4-4'/%3E%3C/svg%3E");
}
.section--light .contact-form__upload {
  background-color: var(--off-white);
  border-color: var(--light-line);
}
.section--light .contact-form__upload:hover {
  border-color: var(--amber-warm);
}
.section--light .contact-form__upload.is-dragover {
  border-color: var(--amber-warm);
  background-color: rgba(245, 158, 11, 0.04);
}
.section--light .contact-form__upload-placeholder {
  color: var(--muted-l);
}
.section--light .contact-form__upload-file {
  color: var(--ink);
}
.section--light .contact-form__hint {
  color: var(--muted-l);
}
.section--light .contact-form__note {
  color: var(--muted-l);
}
.section--light .contact-form__success p {
  color: var(--ink);
}
.section--light .contact-form__success span {
  color: var(--muted-l);
}
.section--light .contact-form__success i,
.section--light .contact-form__success svg {
  color: var(--amber-warm);
}

/* ===========================================================================
   16. EMAIL SIGNUP FORM
   =========================================================================== */
.signup-section {
  text-align: center;
  padding: 100px var(--gutter) 80px;
}
.signup-form {
  max-width: 480px;
  margin: 32px auto 0;
}
.signup-form__row {
  display: flex;
  gap: 10px;
}
.signup-form__input {
  flex: 1;
  min-width: 0;
}
.signup-form__btn {
  white-space: nowrap;
  flex-shrink: 0;
}
.signup-form .contact-form__note {
  text-align: center;
}
.signup-form .contact-form__success {
  padding: 32px 24px;
}
.signup-form.is-sending .signup-form__input,
.signup-form.is-sending .signup-form__btn {
  opacity: 0.6;
  pointer-events: none;
}
@media (max-width: 480px) {
  .signup-form__row {
    flex-direction: column;
  }
  .signup-form__btn {
    width: 100%;
    justify-content: center;
  }
}