/* ============================================================================
   RegWatch Landing v6 — cinematic civic dossier
   All styles scoped under .lv6 so they never collide with the rest of the app.
   Fonts pulled from Fontshare CDN (Zodiak + Satoshi, free commercial license).
   ============================================================================ */

@import url('https://api.fontshare.com/v2/css?f[]=zodiak@400,500,600&f[]=satoshi@400,500,600,700&display=swap');

/* ───────────────────────── tokens ─────────────────────────────────────── */
.lv6 {
  --display: 'Zodiak', 'Iowan Old Style', Georgia, serif;
  --sans: 'Satoshi', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
  --mono: ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, Consolas, monospace;

  --bg:          oklch(10% 0.025 258);
  --bg-elevated: oklch(14% 0.028 258);
  --bg-raised:   oklch(18% 0.03  258);
  --border:      oklch(28% 0.02  258 / 0.6);

  --text:   oklch(96% 0.01 258);
  --text-2: oklch(72% 0.02 258);
  --text-3: oklch(50% 0.02 258);

  --amber:       oklch(76% 0.14 58);
  --amber-deep:  oklch(66% 0.15 42);
  --amber-soft:  oklch(80% 0.1  64);

  --lv6-bg: var(--bg);
  --lv6-bg-2: var(--bg-elevated);
  --lv6-bg-3: var(--bg-raised);
  --lv6-border: var(--border);
  --lv6-border-2: oklch(35% 0.02 258 / 0.5);
  --lv6-text: var(--text);
  --lv6-text-2: var(--text-2);
  --lv6-text-3: var(--text-3);
  --lv6-amber: var(--amber);
  --lv6-amber-2: var(--amber-deep);
  --lv6-display: var(--display);
  --lv6-sans: var(--sans);
  --lv6-mono: var(--mono);

  color-scheme: dark;
  font-family: var(--sans);
  color: var(--text);
  background: var(--bg);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'ss01', 'cv11';
}
.lv6 * { box-sizing: border-box; }
.lv6 *:focus-visible { outline: 2px solid var(--amber); outline-offset: 3px; border-radius: 2px; }
.lv6 a { color: inherit; text-decoration: none; }
.lv6 button { font-family: inherit; border: 0; background: transparent; color: inherit; cursor: pointer; padding: 0; }
.lv6 input, .lv6 button, .lv6 textarea { font-family: inherit; font-size: inherit; }
.lv6 h1, .lv6 h2, .lv6 h3, .lv6 h4 { margin: 0; font-weight: 500; letter-spacing: -0.02em; }
.lv6 p { margin: 0; }
.lv6 ul { list-style: none; margin: 0; padding: 0; }
.lv6 ::selection { background: color-mix(in oklch, var(--amber) 30%, transparent); color: var(--text); }
.lv6 .amb { color: var(--amber); }
.lv6-shell { display: flex; flex-direction: column; min-height: 100vh; min-height: 100dvh; overflow-x: clip; }
/* Belt-and-suspenders horizontal overflow guard. `overflow-x: clip` on the
   shell prevents any rogue child (thread SVG past its bounds, absolute-
   positioned decorative elements, wide-set transforms) from introducing
   horizontal scroll on mobile. clip (vs hidden) doesn't create a new
   scroll container, so sticky/fixed children still work. */
.lv6, .lv6-main { overflow-x: clip; }
.lv6-main  { flex: 1; }

/* ───────────────────────── nav ────────────────────────────────────────── */
.lv6-nav {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; gap: 28px;
  padding: 14px 32px;
  background: color-mix(in oklch, var(--bg) 82%, transparent);
  backdrop-filter: saturate(150%) blur(14px);
  -webkit-backdrop-filter: saturate(150%) blur(14px);
  border-bottom: 1px solid color-mix(in oklch, var(--border) 60%, transparent);
}
.lv6-nav-brand { display: flex; align-items: center; gap: 10px; font-family: var(--display); font-size: 20px; font-weight: 600; letter-spacing: -0.02em; color: var(--text); }
.lv6-nav-links { display: flex; align-items: center; gap: 4px; }
/* Selector must outweigh the global `.lv6 button { padding: 0 }` reset
   (specificity 0,1,1). Without the `.lv6 ` prefix, the "Product" button
   rendered at padding 0 while the <a> nav-links got padding 8px 14px,
   making Product look out of place vs Coverage/Pricing/How-it-works.
   Also ensure line-height / display match across a and button so
   baselines align. */
.lv6 .lv6-nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
  line-height: 1;
  color: var(--text-2);
  letter-spacing: -0.002em;
  border-radius: 3px;
  transition: color 160ms, background 160ms;
}
.lv6 .lv6-nav-link:hover { color: var(--text); background: color-mix(in oklch, var(--bg-raised) 60%, transparent); }
.lv6 .lv6-nav-link[aria-expanded='true'] { color: var(--text); background: color-mix(in oklch, var(--bg-raised) 60%, transparent); }
.lv6-nav-chev { display: inline-block; margin-left: 5px; font-size: 9px; color: var(--text-3); transform: translateY(-1px); }
.lv6-nav-spacer { flex: 1; }
.lv6-nav-meta { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.12em; text-transform: uppercase; }
.lv6-nav-signin { padding: 8px 14px; font-size: 13px; font-weight: 500; color: var(--text-2); }
.lv6-nav-signin:hover { color: var(--text); }
.lv6-nav-cta { padding: 9px 16px; font-size: 13px; font-weight: 600; background: var(--amber); color: oklch(12% 0.025 258); border-radius: 3px; letter-spacing: -0.002em; transition: transform 120ms, box-shadow 200ms, background 200ms; }
.lv6-nav-cta:hover { background: color-mix(in oklch, var(--amber) 90%, white); transform: translateY(-1px); box-shadow: 0 8px 18px color-mix(in oklch, var(--amber) 35%, transparent); }

.lv6-mega { position: absolute; top: 100%; left: 0; display: none; padding: 24px; min-width: 720px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 6px; box-shadow: 0 24px 60px rgba(0,0,0,0.55); grid-template-columns: repeat(3, 1fr); gap: 22px; }
.lv6-mega[data-open='true'] { display: grid; }
.lv6-mega-col-head { font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-3); padding-bottom: 10px; margin-bottom: 4px; border-bottom: 1px solid var(--border); }
.lv6-mega-item { display: block; padding: 8px 10px; border-radius: 3px; transition: background 140ms; }
.lv6-mega-item:hover { background: color-mix(in oklch, var(--bg-raised) 70%, transparent); }
.lv6-mega-item-name { font-size: 13px; font-weight: 600; color: var(--text); letter-spacing: -0.005em; display: flex; align-items: center; gap: 8px; }
.lv6-mega-item-sub { font-size: 11px; color: var(--text-3); margin-top: 3px; line-height: 1.4; }
.lv6-mega-item-status { font-family: var(--mono); font-size: 8px; letter-spacing: 0.14em; text-transform: uppercase; padding: 2px 6px; border-radius: 2px; }
.lv6-mega-item-status[data-s='live'] { color: oklch(12% 0.025 258); background: var(--amber); }
.lv6-mega-item-status[data-s='soon'] { color: var(--text-3); border: 1px solid var(--lv6-border-2); }

.lv6-foryou { position: absolute; top: 100%; left: 0; display: none; min-width: 280px; padding: 10px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 6px; box-shadow: 0 24px 60px rgba(0,0,0,0.55); }
.lv6-foryou[data-open='true'] { display: block; }
.lv6-foryou-item { display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px; border-radius: 3px; transition: background 140ms; }
.lv6-foryou-item:hover { background: color-mix(in oklch, var(--bg-raised) 70%, transparent); }
.lv6-foryou-item-glyph { width: 28px; height: 28px; flex-shrink: 0; border-radius: 3px; background: color-mix(in oklch, var(--amber) 12%, transparent); display: grid; place-items: center; color: var(--amber); font-family: var(--mono); font-size: 11px; font-weight: 700; }
.lv6-foryou-item-name { font-size: 13px; font-weight: 600; color: var(--text); }
.lv6-foryou-item-sub { font-size: 11px; color: var(--text-3); margin-top: 2px; }

/* 44px min tap target (WCAG 2.2 AA) — the burger only shows at ≤980px so
   every user who ever sees it is on touch. */
.lv6-nav-burger { display: none; width: 44px; height: 44px; border-radius: 3px; align-items: center; justify-content: center; }
.lv6-nav-burger:hover { background: color-mix(in oklch, var(--bg-raised) 60%, transparent); }
.lv6-nav-burger svg { width: 20px; height: 20px; }

.lv6-nav-drawer { display: none; position: fixed; inset: 56px 0 0; z-index: 49; background: var(--bg); padding: 24px 20px; overflow-y: auto; }
.lv6-nav-drawer[data-open='true'] { display: block; }
/* Tap-anywhere-outside close: the drawer covers the full area under the nav
   on mobile by design (inset: 56px 0 0). The real concern the audit flagged
   was a backdrop — but because the drawer itself fills the viewport under
   the nav, there is no uncovered page behind it to mis-tap. Keeping the
   single-surface drawer — a separate overlay would only matter if we
   switched to a side-sheet, which we haven't. */
.lv6-nav-drawer-section { margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid var(--border); }
.lv6-nav-drawer-head { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-3); margin-bottom: 10px; }
/* 44px min tap target on drawer links — padding 14px + line-height 1.5 on
   15px type ≈ 50px total tap height. Comfortable on iPhone. */
.lv6-nav-drawer a { display: block; padding: 14px 0; font-size: 15px; color: var(--text); font-weight: 500; }

.lv6-skip { position: absolute; top: -40px; left: 16px; background: var(--amber); color: oklch(12% 0.025 258); padding: 8px 14px; border-radius: 3px; font-size: 12px; font-weight: 600; transition: top 160ms; z-index: 100; }
.lv6-skip:focus { top: 12px; }

/* reveal helper */
.lv6 [data-reveal] { opacity: 0; transform: translateY(14px); transition: opacity 800ms cubic-bezier(0.22, 1, 0.36, 1), transform 800ms cubic-bezier(0.22, 1, 0.36, 1); }
.lv6 [data-reveal='in'] { opacity: 1; transform: none; }

/* ══════════════════════════════════════════════════════════════
   SCENE 1 · HERO — dusk skyline, day/night cycle
   ══════════════════════════════════════════════════════════════ */
.lv6-s1 {
  position: relative;
  /* Hero fills the viewport MINUS the sticky nav that sits above it in the
     document flow. Without subtracting the nav height, the bottom of the
     hero (search bar + caption) gets pushed below the visible viewport and
     users see a cropped hero on first paint. The 56px matches the nav's
     computed height (14px vertical padding + ~24px line-height + 1px
     border-bottom ≈ 53-56px). svh = viewport minus mobile browser chrome
     so iOS address-bar resize doesn't jump the layout.
     min-height removed deliberately — it forced overflow on short windows
     and never helped; svh already caps the hero correctly on every size. */
  height: calc(100vh - 56px);
  height: calc(100svh - 56px);
  /* `overflow: hidden` clipped the autocomplete dropdown when it extended
     past the hero bottom. Horizontal containment still comes from
     `.lv6-shell { overflow-x: clip }`; all decorative children use
     `position: absolute; inset: 0` or their own overflow:hidden wrappers,
     so removing the vertical clip here just lets the dropdown escape. */
  background:
    radial-gradient(ellipse 900px 400px at 50% 64%, oklch(16% 0.05 55 / 0.14), transparent 60%),
    linear-gradient(180deg,
      oklch(4% 0.018 260) 0%,
      oklch(6% 0.022 258) 28%,
      oklch(9% 0.032 254) 52%,
      oklch(7% 0.025 256) 74%,
      oklch(3% 0.012 258) 100%);
}
.lv6-s1-sun, .lv6-s1-moon { position: absolute; inset: 0; z-index: 2; pointer-events: none; overflow: hidden; }
.lv6-s1-sun-halo, .lv6-s1-sun-core, .lv6-s1-moon-glow, .lv6-s1-moon-disk {
  position: absolute; left: 0; top: 0; transform-origin: center; will-change: transform, opacity;
}
.lv6-s1-sun-halo {
  width: 85vmin; height: 85vmin; margin: -42.5vmin 0 0 -42.5vmin;
  background: radial-gradient(circle at center,
    oklch(74% 0.13 62 / 0.38) 0%,
    oklch(66% 0.10 56 / 0.22) 14%,
    oklch(52% 0.08 50 / 0.10) 32%,
    oklch(40% 0.05 48 / 0.04) 54%,
    transparent 76%);
  filter: blur(44px);
  animation: lv6-sun-arc 12s cubic-bezier(0.45, 0, 0.55, 1) infinite, lv6-halo-fade 12s ease-in-out infinite;
}
.lv6-s1-sun-core {
  width: 20vmin; height: 20vmin; margin: -10vmin 0 0 -10vmin;
  background: radial-gradient(circle at center,
    oklch(96% 0.17 82 / 0.95) 0%,
    oklch(90% 0.18 76 / 0.6) 22%,
    oklch(78% 0.17 68 / 0.3) 48%,
    oklch(62% 0.13 58 / 0.12) 70%,
    transparent 90%);
  filter: blur(9px);
  animation: lv6-sun-arc 12s cubic-bezier(0.45, 0, 0.55, 1) infinite, lv6-core-visibility 12s ease-in-out infinite;
}
@keyframes lv6-sun-arc {
  0%   { transform: translate(-6vw, 46vh); }
  12%  { transform: translate(14vw, 30vh); }
  25%  { transform: translate(55vw, 16vh); }
  38%  { transform: translate(88vw, 30vh); }
  50%  { transform: translate(108vw, 46vh); }
  75%  { transform: translate(55vw, 80vh); }
  100% { transform: translate(-6vw, 46vh); }
}
/* Sun. Slow rise, peak at 25%, dimming starts at the final position stop (38%),
   then a fast cut as the ball actually exits the screen (47-50%). */
@keyframes lv6-core-visibility {
  0%, 10%   { opacity: 0 }
  20%       { opacity: 0.5 }
  27%       { opacity: 1 }
  38%       { opacity: 1 }      /* still full at the final descending stop (x=88vw) */
  44%       { opacity: 0.55 }   /* gentle dim as it coasts toward the edge */
  47%       { opacity: 0.25 }
  50%       { opacity: 0 }      /* quick cut once off-screen */
  100%      { opacity: 0 }
}
@keyframes lv6-halo-fade {
  0%        { opacity: 0 }
  8%        { opacity: 1 }
  38%       { opacity: 1 }      /* halo holds full at the final stop */
  46%       { opacity: 0.7 }    /* softens a beat behind the disk */
  50%       { opacity: 0.25 }
  53%       { opacity: 0 }      /* halo snuffs out just after the disk is gone */
  100%      { opacity: 0 }
}

.lv6-s1-moon-glow {
  width: 58vmin; height: 58vmin; margin: -29vmin 0 0 -29vmin;
  background: radial-gradient(circle at center,
    oklch(85% 0.035 235 / 0.28) 0%,
    oklch(78% 0.03 230 / 0.18) 18%,
    oklch(68% 0.025 225 / 0.08) 38%,
    transparent 78%);
  filter: blur(36px);
  animation: lv6-moon-arc 12s cubic-bezier(0.45, 0, 0.55, 1) infinite, lv6-moon-glow-fade 12s ease-in-out infinite;
}
.lv6-s1-moon-disk {
  width: 7vmin; height: 7vmin; margin: -3.5vmin 0 0 -3.5vmin;
  background: radial-gradient(circle at 42% 38%,
    oklch(96% 0.015 240 / 0.98) 0%,
    oklch(90% 0.02 235 / 0.85) 40%,
    oklch(78% 0.025 230 / 0.45) 70%,
    transparent 95%);
  border-radius: 50%;
  box-shadow: 0 0 16px oklch(90% 0.02 238 / 0.35), 0 0 40px oklch(85% 0.025 235 / 0.22);
  filter: blur(1.5px);
  animation: lv6-moon-arc 12s cubic-bezier(0.45, 0, 0.55, 1) infinite, lv6-moon-disk-visibility 12s ease-in-out infinite;
}
@keyframes lv6-moon-arc {
  0%, 50%  { transform: translate(-6vw, 46vh); }
  62%      { transform: translate(14vw, 30vh); }
  75%      { transform: translate(55vw, 18vh); }
  88%      { transform: translate(88vw, 30vh); }
  100%     { transform: translate(108vw, 46vh); }
}
/* Moon: same exit pattern as sun — dim at the final stop (88% = x=88vw), fast cut off-screen (97-100%). */
@keyframes lv6-moon-disk-visibility {
  0%, 58%   { opacity: 0 }
  70%       { opacity: 0.5 }
  77%       { opacity: 1 }
  88%       { opacity: 1 }      /* full at final stop */
  94%       { opacity: 0.55 }   /* gentle dim as it coasts */
  97%       { opacity: 0.25 }
  100%      { opacity: 0 }      /* quick cut once off-screen */
}
@keyframes lv6-moon-glow-fade {
  0%, 52%   { opacity: 0 }
  62%       { opacity: 1 }
  88%       { opacity: 1 }
  95%       { opacity: 0.7 }
  99%       { opacity: 0.25 }
  100%      { opacity: 0 }
}

.lv6-s1-bloom {
  position: absolute; left: -28%; top: 34%; width: 64vw; height: 30vh; z-index: 3; pointer-events: none;
  background: radial-gradient(ellipse 46% 70% at 50% 90%,
    oklch(68% 0.12 62 / 0.22) 0%,
    oklch(58% 0.09 56 / 0.12) 24%,
    transparent 74%);
  mix-blend-mode: screen; filter: blur(32px);
  animation: lv6-bloom-track 12s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}
@keyframes lv6-bloom-track {
  0% { transform: translateX(-10%) translateY(22%); opacity: 0 }
  8% { opacity: 0.4 }
  25% { transform: translateX(50%)  translateY(-6%); opacity: 0.75 }
  42% { opacity: 0.4 }
  50% { transform: translateX(120%) translateY(22%); opacity: 0 }
  50.1%, 100% { opacity: 0 }
}
.lv6-s1-moonlight {
  position: absolute; inset: 0; z-index: 3; pointer-events: none;
  background: radial-gradient(ellipse 80vw 40vh at 50% 55%, oklch(74% 0.04 235 / 0.16) 0%, oklch(62% 0.03 230 / 0.08) 30%, transparent 80%);
  mix-blend-mode: screen; opacity: 0;
  animation: lv6-moonlight-cycle 12s ease-in-out infinite;
}
@keyframes lv6-moonlight-cycle { 0%,50%,100% { opacity: 0 } 62% { opacity: 0.6 } 75% { opacity: 1 } 88% { opacity: 0.6 } }

/* Fallback SVG silhouette — always in DOM, covered by the photo when it loads.
   Flipped horizontally so its anchor building sits on the right instead of the left. */
.lv6-s1-skyline-fallback {
  position: absolute; inset: 0;
  z-index: 3; pointer-events: none;
  background-image: url('/images/nyc-skyline-harbor.png');
  background-size: 100% auto; background-position: center bottom; background-repeat: no-repeat;
  opacity: 0.85;
  transform: scaleX(-1);
  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.4) 40%, black 70%);
          mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.4) 40%, black 70%);
}
/* Primary photo — same Unsplash source as the design you approved.
   mix-blend-mode: multiply + the filter below preserves the midtown silhouette with sun bleed. */
.lv6-s1-skyline {
  position: absolute; inset: 0;
  z-index: 4; pointer-events: none;
  background-image: url('/images/nyc-midtown-dusk.jpg');
  background-size: cover; background-position: center 72%;
  filter: saturate(0.26) brightness(0.62) contrast(1.72) hue-rotate(12deg);
  mix-blend-mode: multiply;
  opacity: 1;
  animation: lv6-sky-lighting 12s ease-in-out infinite;
}
/* Day/night lighting cycle — ported from the approved design-review */
@keyframes lv6-sky-lighting {
  0%,100% { filter: saturate(0.26) brightness(0.62) contrast(1.72) hue-rotate(12deg); }
  15%     { filter: saturate(0.34) brightness(0.82) contrast(1.58) hue-rotate(2deg); }
  25%     { filter: saturate(0.42) brightness(0.96) contrast(1.48) hue-rotate(-4deg); }
  35%     { filter: saturate(0.34) brightness(0.82) contrast(1.58) hue-rotate(2deg); }
  50%     { filter: saturate(0.24) brightness(0.58) contrast(1.75) hue-rotate(14deg); }
  65%     { filter: saturate(0.22) brightness(0.68) contrast(1.68) hue-rotate(22deg); }
  75%     { filter: saturate(0.2)  brightness(0.76) contrast(1.62) hue-rotate(24deg); }
  85%     { filter: saturate(0.22) brightness(0.68) contrast(1.68) hue-rotate(22deg); }
}
.lv6-s1-rimlight {
  position: absolute; inset: 0; z-index: 5; pointer-events: none;
  background: linear-gradient(180deg, transparent 0%, transparent 42%, oklch(64% 0.09 58 / 0.09) 45%, oklch(56% 0.07 52 / 0.03) 50%, transparent 58%);
  mix-blend-mode: screen;
  animation: lv6-rim-pulse 12s ease-in-out infinite;
}
@keyframes lv6-rim-pulse { 0%,100% { opacity: 0.18 } 25% { opacity: 0.75 } 50% { opacity: 0.15 } 75% { opacity: 0.4 } }

/* Sparkles (building lights) */
.lv6-s1-sparkles { position: absolute; inset: 0; z-index: 7; pointer-events: none; overflow: hidden; animation: lv6-sparkles-cycle 12s ease-in-out infinite; }
@keyframes lv6-sparkles-cycle { 0%,100% { opacity: 0.85 } 20%,30% { opacity: 0.4 } 70%,80% { opacity: 1 } }
.lv6-sparkle { position: absolute; width: 3px; height: 3px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 5px var(--amber), 0 0 12px color-mix(in oklch, var(--amber) 40%, transparent); opacity: 0; animation: lv6-sparkle-twinkle var(--pulse, 4800ms) ease-in-out var(--delay, 1500ms) infinite; }
@keyframes lv6-sparkle-twinkle {
  0%   { opacity: 0; transform: scale(0.4) }
  6%   { opacity: 1; transform: scale(1) }
  40%  { opacity: 0.35; transform: scale(0.85) }
  58%  { opacity: 1; transform: scale(1) }
  78%  { opacity: 0.6 }
  100% { opacity: 1; transform: scale(1) }
}

/* Timeline thread */
/* Thread sits BETWEEN the two headlines. The upper headline is a
   two-line block (clamp 52-112px × 0.96 line-height ≈ 22-23% of hero
   height), so with upper top: 30%, its bottom lives around 53%.
   Thread at 55% clears the upper cleanly; italic lower at 62% sits
   just below the thread. Prior 42% had the thread cutting through
   the upper headline. */
.lv6-s1-thread { position: absolute; left: 0; right: 0; top: 55%; height: 100px; z-index: 8; overflow: visible; pointer-events: none; }
.lv6-s1-thread svg { width: 100%; height: 100%; overflow: visible; }
.lv6-s1-thread path { fill: none; stroke: var(--amber); stroke-width: 1.2; stroke-linecap: round; filter: drop-shadow(0 0 6px var(--amber)) drop-shadow(0 0 18px color-mix(in oklch, var(--amber) 40%, transparent)); opacity: 0.78; stroke-dasharray: 2400; stroke-dashoffset: 2400; animation: lv6-thread-trace 2600ms cubic-bezier(0.33, 0, 0.17, 1) 1500ms forwards; }
@keyframes lv6-thread-trace { to { stroke-dashoffset: 0 } }
.lv6-s1-thread .ev { opacity: 0; transform-box: fill-box; transform-origin: center; animation: lv6-fade-in 400ms cubic-bezier(0.22, 1, 0.36, 1) forwards; }
.lv6-s1-thread .ev:nth-child(2) { animation-delay: 1800ms }
.lv6-s1-thread .ev:nth-child(3) { animation-delay: 2150ms }
.lv6-s1-thread .ev:nth-child(4) { animation-delay: 2550ms }
.lv6-s1-thread .ev:nth-child(5) { animation-delay: 2950ms }
.lv6-s1-thread .ev:nth-child(6) { animation-delay: 3300ms }
.lv6-s1-thread .ev:nth-child(7) { animation-delay: 3700ms }
@keyframes lv6-fade-in { to { opacity: 1 } }
.lv6-s1-thread .dot { fill: var(--amber); filter: drop-shadow(0 0 6px var(--amber)); }
.lv6-s1-thread .tick { stroke: var(--amber); stroke-width: 0.8; opacity: 0.5 }
.lv6-s1-thread .ripple { fill: none; stroke: var(--amber); stroke-width: 1.2; transform-box: fill-box; transform-origin: center; animation: lv6-ripple 2400ms ease-out infinite; }
@keyframes lv6-ripple { 0% { transform: scale(1); opacity: 0.7 } 100% { transform: scale(4.5); opacity: 0 } }

/* Desktop hero stack: upper 30% → thread 55% → lower 68%. Upper headline
   is 2 lines of clamp(52-112)*0.96 ≈ 25% of hero, so top 30% + height
   25% puts its bottom at 55% — directly on the thread. Thread (100px
   tall = ~12%) ends at ~67%. Lower italic at 68% starts just below.
   Prior bug: lower at 52% sat ABOVE thread at 55% which flipped the
   intended visual order. */
.lv6-s1-headline-upper { position: absolute; top: 30%; left: 72px; right: 72px; z-index: 11; font-family: var(--display); font-weight: 500; font-size: clamp(52px, 7vw, 112px); line-height: 0.96; letter-spacing: -0.028em; color: var(--text); max-width: 960px; opacity: 0; animation: lv6-rise 900ms cubic-bezier(0.22, 1, 0.36, 1) 600ms forwards; }
.lv6-s1-headline-upper em { font-style: normal; color: var(--amber); }
.lv6-s1-headline-lower { position: absolute; top: 68%; left: 72px; right: 72px; z-index: 11; font-family: var(--display); font-weight: 500; font-style: italic; font-size: clamp(52px, 7vw, 112px); line-height: 0.96; letter-spacing: -0.025em; color: var(--amber); opacity: 0; animation: lv6-rise 900ms cubic-bezier(0.22, 1, 0.36, 1) 1100ms forwards; }
@keyframes lv6-rise { to { opacity: 1; transform: none } }

.lv6-s1-caption { position: absolute; bottom: 40px; left: 72px; right: 72px; z-index: 11; display: flex; justify-content: space-between; align-items: flex-end; color: var(--text-3); font-size: 11px; letter-spacing: 0.09em; text-transform: uppercase; font-weight: 500; opacity: 0; animation: lv6-fade 700ms ease 1600ms forwards; }

/* Hero search bar — the primary interactive element. Sits above the caption
   so the hero does immediate work: "show me this address." Delayed fade-in
   so it arrives AFTER the headlines + thread, feeling like the scene lands
   on a question the user can answer. */
.lv6-s1-search {
  position: absolute;
  bottom: 104px;
  left: 72px;
  right: 72px;
  z-index: 12;
  max-width: 640px;
  opacity: 0;
  animation: lv6-rise 900ms cubic-bezier(0.22, 1, 0.36, 1) 1800ms forwards;
}
.lv6-s1-search-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: color-mix(in oklch, var(--amber) 70%, var(--text-3));
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.lv6-s1-search-label::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--amber);
  box-shadow: 0 0 8px var(--amber);
}
/* No framing wrap around the input any more. The input (.rw-ac-bar) owns
   its own 3px sharp border + amber focus ring, and the "bar inside a bar"
   look (rounded-input-in-a-rectangle) was fighting the linear-sharp style.
   Keeping the class as a layout container only — no bg, no border, no
   padding, no backdrop-filter — so the input sits directly on the hero
   without chrome. */
.lv6-s1-search-wrap {
  background: none;
  border: none;
  border-radius: 0;
  padding: 0;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
  transition: none;
}
/* Focus state handled entirely by .rw-ac-bar:focus-within now. */
.lv6-s1-search-wrap:focus-within {
  box-shadow: none;
}

/* The SearchBar composite (.rw-search) manages its own internal spacing
   between label / slider / input via gap: var(--space-2). No extra rules
   needed here — keeping the old .lv6-s1-search-slider selector removed
   so it doesn't drift out of sync. */
@keyframes lv6-fade { to { opacity: 1 } }
.lv6-s1-caption-soon { color: color-mix(in oklch, var(--amber) 58%, var(--text-3)); font-style: italic; font-weight: 400; letter-spacing: 0.04em; text-transform: none; font-size: 0.92em; opacity: 0.82; margin-left: 6px; padding-left: 10px; border-left: 1px solid color-mix(in oklch, var(--amber) 28%, transparent); }
.lv6-s1-scroll { display: flex; align-items: center; gap: 10px; }
.lv6-s1-scrolldot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--amber); animation: lv6-scrolldot 1800ms ease-in-out infinite; }
@keyframes lv6-scrolldot {
  0%, 100% { transform: translateY(0); opacity: 0.6 }
  40% { transform: translateY(6px); opacity: 1 }
  60% { transform: translateY(6px); opacity: 1 }
}

/* ───── Short-height desktop rebalance ─────────────────────────────────
   Base hero positions headlines at `top: 30%/55%/68%` but the search bar
   at `bottom: 104px`. That mix of percent-from-top + pixels-from-bottom
   collapses when the viewport is short: on a 982px-tall Macbook Pro 15"
   the italic "We keep watch." lands on top of the state slider, and at
   1080p the gap is only ~15px. Cleanly separates only at ~1200+ tall.

   Fix: at short-to-mid heights, flip the italic to bottom-anchored so it
   keeps a fixed 30-40px gap above the search bar regardless of viewport
   height. Upper headline + thread also shift up so the overall stack
   stays balanced, and the italic drops one font-size tier so two-line
   wraps don't eat back into the search zone.

   Desktop widths only (>=981px); the 980-max mobile rule below handles
   the phone layout with its own rhythm. */
@media (min-width: 981px) and (max-height: 1100px) {
  .lv6-s1-headline-upper {
    top: 20%;
    font-size: clamp(44px, 6vw, 88px);
  }
  .lv6-s1-thread { top: 46%; }
  .lv6-s1-headline-lower {
    top: auto;
    bottom: 260px;
    font-size: clamp(40px, 5.2vw, 76px);
  }
  .lv6-s1-search { bottom: 84px; }
  .lv6-s1-caption { bottom: 22px; }
}

/* Ultra-short desktop (external 900p, half-height panels, in-car kiosks).
   Further tightens so the whole hero still fits without scroll. */
@media (min-width: 981px) and (max-height: 820px) {
  .lv6-s1-headline-upper {
    top: 14%;
    font-size: clamp(36px, 5vw, 72px);
  }
  .lv6-s1-thread { top: 42%; height: 80px; }
  .lv6-s1-headline-lower {
    bottom: 230px;
    font-size: clamp(34px, 4.4vw, 64px);
  }
  .lv6-s1-search { bottom: 68px; }
  .lv6-s1-caption { bottom: 16px; font-size: 10px; }
}

/* ══════════════════════════════════════════════════════════════
   SCENE 2 · SCALE — parcel ignition grid
   ══════════════════════════════════════════════════════════════ */
/* Edge-to-edge scene. Outer vertical-only padding keeps the headline
   breathing; horizontal is 0 so the parcel grid underneath can bleed to
   the viewport edges (the "data ocean" should feel boundless). Text
   inset is handled by .lv6-s2-content's own max-width + centering
   below, NOT by this section's padding. */
.lv6-s2 { position: relative; padding: 140px 0 120px; background: var(--bg); overflow: hidden; }
/* Grid also loses its 40px inset so tiles reach the browser edges. */
.lv6-s2-grid { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(56, 1fr); grid-template-rows: repeat(32, 1fr); gap: 1px; opacity: 0.85; pointer-events: none; }
.lv6-s2-parcel { background: oklch(18% 0.022 258 / 0.28); border-radius: 1px; }
.lv6-s2-parcel.live { animation: lv6-parcel-pulse 2800ms ease-in-out var(--d, 0ms) infinite; }
.lv6-s2-parcel.p2 { animation-name: lv6-parcel-pulse-2; }
.lv6-s2-parcel.p3 { animation-name: lv6-parcel-pulse-3; }
.lv6-s2-parcel.p4 { animation-name: lv6-parcel-pulse-4; }
@keyframes lv6-parcel-pulse   { 0%,100% { background: oklch(18% 0.022 258 / 0.28) } 50% { background: var(--amber); box-shadow: 0 0 5px var(--amber) } }
@keyframes lv6-parcel-pulse-2 { 0%,100% { background: oklch(18% 0.022 258 / 0.28) } 50% { background: oklch(68% 0.17 25); box-shadow: 0 0 5px oklch(68% 0.17 25) } }
@keyframes lv6-parcel-pulse-3 { 0%,100% { background: oklch(18% 0.022 258 / 0.28) } 50% { background: oklch(82% 0.14 90); box-shadow: 0 0 5px oklch(82% 0.14 90) } }
@keyframes lv6-parcel-pulse-4 { 0%,100% { background: oklch(18% 0.022 258 / 0.28) } 50% { background: oklch(64% 0.14 55); box-shadow: 0 0 5px oklch(64% 0.14 55) } }
/* Center spotlight: opaque core over the full text box, blurred fade out to reveal grid at the edges. */
.lv6-s2-mask {
  position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(
    ellipse 54vw 42vh at 50% 50%,
    var(--bg) 0%,
    var(--bg) 32%,
    color-mix(in oklch, var(--bg) 88%, transparent) 50%,
    color-mix(in oklch, var(--bg) 45%, transparent) 72%,
    transparent 95%
  );
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
/* Content gets a horizontal inset (previously the parent section's padding)
   so headline + body stay away from the viewport edges even though the
   scene itself is edge-to-edge. Vertical position unchanged. */
.lv6-s2-content { position: relative; z-index: 2; max-width: 1100px; margin: 0 auto; padding: 0 56px; text-align: center; }
.lv6-s2-content > * { position: relative; z-index: 1; }
.lv6-s2-eyebrow { font-family: var(--sans); font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 24px; }
.lv6-s2-headline { font-family: var(--display); font-size: clamp(40px, 6vw, 88px); line-height: 1.02; letter-spacing: -0.025em; color: var(--text); font-weight: 500; margin-bottom: 32px; }
.lv6-s2-headline .num { color: var(--amber); font-variant-numeric: tabular-nums; letter-spacing: -0.03em; }
.lv6-s2-headline em { font-style: italic; color: var(--text-2); font-weight: 400; }
.lv6 .lv6-s2-sub { font-size: clamp(14px, 3.6vw, 15px); color: var(--text-2); max-width: 64ch; margin: 0 auto 36px; line-height: 1.6; text-align: center; }
.lv6-s2-legend { display: flex; justify-content: center; gap: 28px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); flex-wrap: wrap; }
.lv6-s2-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 6px var(--amber); margin-right: 8px; vertical-align: middle; }
.lv6-s2-legend .lg-dot-2 { background: oklch(68% 0.17 25); box-shadow: 0 0 6px oklch(68% 0.17 25) }
.lv6-s2-legend .lg-dot-3 { background: oklch(82% 0.14 90); box-shadow: 0 0 6px oklch(82% 0.14 90) }
.lv6-s2-legend .lg-dot-4 { background: oklch(64% 0.14 55); box-shadow: 0 0 6px oklch(64% 0.14 55) }

/* ══════════════════════════════════════════════════════════════
   SCENE 3 · VERTICALS — six interactions
   ══════════════════════════════════════════════════════════════ */
.lv6-v5 { padding: 120px 56px 120px; background: var(--bg); max-width: 100vw; }
.lv6-v5-intro { max-width: 1200px; margin: 0 auto 72px; }
.lv6-v5-eyebrow { font-family: var(--sans); font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 18px; }
.lv6-v5-head { font-family: var(--display); font-size: clamp(34px, 4.4vw, 64px); line-height: 1.02; letter-spacing: -0.022em; color: var(--text); font-weight: 500; margin-bottom: 18px; max-width: 20ch; }
.lv6-v5-sub { font-size: clamp(14px, 3.6vw, 15px); line-height: 1.55; color: var(--text-2); max-width: 62ch; margin: 0 0 28px; }
/* Workflow-jump rail. Sharp square buttons with white-ish borders on the
   landing's dark bg so they read as obvious tappable controls instead of
   a row of inline text. Active state stays amber-filled. Min-height
   36px desktop / 44px mobile for proper tap targets. Sharp corners
   (no border-radius) per project design preference. */
.lv6-v5-jump {
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 8px;
  padding: 6px 0;
}
/* Specificity bump (.lv6 prefix): .lv6 button at line 55 sets border:0
   with specificity (0,1,1), which beats the bare .lv6-v5-jump-chip
   class (0,1,0). Using .lv6 .lv6-v5-jump-chip gives us (0,2,0) so the
   border + padding declarations actually land. */
.lv6 .lv6-v5-jump-chip {
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.01em;
  color: var(--text-2);
  padding: 9px 16px;
  min-height: 36px;
  border: 1px solid rgba(255, 255, 255, 0.85);
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  transition:
    color 160ms cubic-bezier(0.4, 0, 0.2, 1),
    border-color 160ms cubic-bezier(0.4, 0, 0.2, 1),
    background 160ms cubic-bezier(0.4, 0, 0.2, 1);
  white-space: nowrap;
}
.lv6 .lv6-v5-jump-chip:hover {
  color: var(--text);
  border-color: rgba(255, 255, 255, 1);
  background: rgba(255, 255, 255, 0.05);
}
.lv6 .lv6-v5-jump-chip:active {
  background: rgba(255, 255, 255, 0.08);
}
.lv6 .lv6-v5-jump-chip[data-active='true'] {
  color: oklch(12% 0.025 248);                /* dark ink on amber fill */
  border-color: var(--amber);
  background: var(--amber);
  font-weight: 600;
}
.lv6 .lv6-v5-jump-chip[data-active='true']:hover {
  background: var(--amber);
  border-color: var(--amber);
}
.lv6 .lv6-v5-jump-chip:focus-visible {
  outline: 2px solid var(--amber);
  outline-offset: 3px;
}
/* Stage: chips drive a single visible workflow at a time. The two edges
   peek behind the active block to suggest a dossier of more workflows
   waiting in the stack. Cuts ~3000px of vertical scroll vs. the old
   linear layout while preserving every per-block gesture. */
.lv6-v5-stage {
  position: relative;
  max-width: 1200px;
  margin: 0 auto;
  padding-right: 18px;
  padding-bottom: 18px;
}
/* Stack edges are real <button>s now: clicking either one advances to the
   next workflow. Reinforces the dossier metaphor — the deck behind the
   active card is functional, not just decoration. */
.lv6-v5-stage-edge {
  position: absolute;
  inset: 0;
  background: var(--bg-elevated);
  border: 1px solid color-mix(in oklch, var(--border) 80%, transparent);
  border-radius: 3px;
  cursor: pointer;
  padding: 0;
  z-index: 0;
  transition: opacity 200ms ease, transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
.lv6-v5-stage-edge-1 { transform: translate(8px, 8px); opacity: 0.55; }
.lv6-v5-stage-edge-2 { transform: translate(16px, 16px); opacity: 0.32; }
.lv6-v5-stage-edge-1:hover { transform: translate(11px, 11px); opacity: 0.7; }
.lv6-v5-stage-edge-2:hover { transform: translate(20px, 20px); opacity: 0.5; }
.lv6-v5-stage-edge:focus-visible { outline: 2px solid var(--amber); outline-offset: 2px; }
.lv6-v5-stack {
  position: relative;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 3px;
  z-index: 1;
}
.lv6-v5-pane { display: none; }
.lv6-v5-pane[data-active='true'] {
  display: block;
  animation: lv6-pane-in 240ms cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes lv6-pane-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* Each block now lives inside its own pane, so kill the inter-block divider
   and reset the first-of-type top-padding hack. */
.lv6-v5-pane .lv6-v5-block { border-top: 0; padding-top: 56px; padding-bottom: 56px; min-height: 600px; }
/* min-height equalizes the 6 panes — Title (flipper), Cure (queue), LL97
   (chart), Tax (chart), Broker (5-row table), Insurance (chips+card).
   Without this, navigating 04 → 05 → 06 makes the page jump because the
   broker table is taller than the insurance chip grid. The tallest pane
   sets the floor; shorter panes pad to match. Mobile resets to 0 in the
   @media (max-width: 980px) block below. */
@media (prefers-reduced-motion: reduce) {
  .lv6-v5-pane[data-active='true'] { animation: none; }
  .lv6-v5-stage-edge { transition: none; }
}

/* Pager: explicit prev/next + position. Sits below the stage; gives a
   familiar "this is a carousel" cue so users don't have to guess that
   the chip rail above is a tab control. Names reference adjacent
   workflows ("← Insurance" / "Cure →") so it's never just abstract
   arrows. */
.lv6-v5-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: 1200px;
  margin: 20px auto 0;
  padding: 0 18px 0 0;
}
.lv6-v5-pager-btn {
  background: transparent;
  border: 0;
  padding: 10px 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 500;
  color: var(--text-2);
  letter-spacing: -0.005em;
  transition: color 160ms ease, gap 160ms ease;
}
.lv6-v5-pager-btn:hover { color: var(--amber); gap: 14px; }
.lv6-v5-pager-btn:focus-visible { outline: 2px solid var(--amber); outline-offset: 4px; }
.lv6-v5-pager-name { color: var(--text); }
.lv6-v5-pager-btn:hover .lv6-v5-pager-name { color: var(--amber); }
.lv6-v5-pager-pos {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.18em;
  color: var(--text-3);
  font-weight: 600;
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
}
.lv6-v5-pager-pos-num { color: var(--amber); font-size: 13px; }
.lv6-v5-pager-pos-sep { color: var(--text-3); }
.lv6-v5-pager-pos-total { color: var(--text-3); }

.lv6-v5-filter { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lv6-v5-filter-label { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.16em; text-transform: uppercase; margin-right: 6px; }
.lv6-v5-chip { padding: 7px 14px; font-size: 12px; font-weight: 500; color: var(--text-2); border: 1px solid color-mix(in oklch, var(--border) 140%, transparent); border-radius: 0; background: color-mix(in oklch, var(--bg-raised) 60%, transparent); transition: all 180ms; box-shadow: inset 0 1px 0 rgba(255,255,255,0.03); }
.lv6-v5-chip:hover { color: var(--text); border-color: color-mix(in oklch, var(--amber) 55%, var(--border)); }
.lv6-v5-chip[aria-pressed='true'] { background: var(--amber); color: oklch(12% 0.025 258); border-color: var(--amber); box-shadow: inset 0 1px 0 rgba(255,255,255,0.25); }

.lv6-v5-block { max-width: 1200px; margin: 0 auto; padding: 72px 56px; border-top: 1px solid var(--border); }
.lv6-v5-block:first-of-type { border-top: 0; padding-top: 0; }
.lv6-v5-bh { display: flex; align-items: baseline; gap: 14px; margin-bottom: 40px; }
.lv6-v5-bh-idx { font-family: var(--mono); font-size: 11px; letter-spacing: 0.2em; color: var(--text-3); font-weight: 600; }
.lv6-v5-bh-name { font-family: var(--display); font-size: clamp(24px, 2.4vw, 32px); color: var(--text); font-weight: 500; }
.lv6-v5-bh-hint { font-family: var(--mono); font-size: 10px; color: var(--amber); letter-spacing: 0.14em; text-transform: uppercase; margin-left: auto; }
/* align-items: center — left copy (number + blurb + CTA) is shorter
   than the right data card in every workflow, so centering vertically
   lets both columns float in the middle of the pane instead of hugging
   the top with a wedge of empty space below the CTA. */
.lv6-v5-split { display: grid; grid-template-columns: 1fr 1.3fr; gap: 64px; align-items: center; }
.lv6-v5-copy { display: flex; flex-direction: column; gap: 18px; }
.lv6-v5-num { font-family: var(--display); font-size: clamp(72px, 9vw, 148px); line-height: 0.9; letter-spacing: -0.038em; color: var(--amber); font-weight: 500; }
.lv6-v5-num-sub { font-size: 11px; color: var(--text-3); letter-spacing: 0.12em; max-width: 34ch; line-height: 1.4; text-transform: uppercase; font-weight: 600; }
.lv6-v5-blurb { font-size: clamp(14px, 3.6vw, 15px); color: var(--text-2); line-height: 1.55; max-width: 44ch; }
.lv6-v5-cta { font-size: 13px; color: var(--amber); font-weight: 600; letter-spacing: -0.003em; display: inline-flex; align-items: center; gap: 6px; padding: 10px 0; border-bottom: 1px solid color-mix(in oklch, var(--amber) 40%, transparent); align-self: flex-start; transition: gap 200ms, border-bottom-color 200ms; }
.lv6-v5-cta:hover { gap: 10px; border-bottom-color: var(--amber); }

/* Cure queue */
.lv6-v5-queue { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 18px; }
.lv6-v5-queue-head { display: flex; justify-content: space-between; align-items: center; font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-3); padding-bottom: 12px; margin-bottom: 8px; border-bottom: 1px solid var(--border); }
.lv6-qrow { border-bottom: 1px solid color-mix(in oklch, var(--border) 60%, transparent); }
/* Row header type down-weighted: prior 12px+600 mono read as a heavy
   shout compared to the 11px details underneath; 11px + 500 stays
   identifiable as "the row title" without dominating the card. */
.lv6-qrow-head { display: grid; grid-template-columns: 2fr 1fr 24px; gap: 10px; padding: 14px 4px; align-items: center; cursor: pointer; font-family: var(--mono); font-size: 11px; color: var(--text); transition: background 160ms; }
.lv6-qrow-head:hover { background: color-mix(in oklch, var(--amber) 4%, transparent); }
.lv6-qrow-head:active { background: color-mix(in oklch, var(--amber) 8%, transparent); transform: scale(0.995); }
.lv6-qrow-id { font-weight: 500; color: var(--text); letter-spacing: 0.02em; }
.lv6-qrow-chev { color: var(--amber); font-size: 14px; font-weight: 400; text-align: center; transition: transform 260ms; }
.lv6-qrow[data-open='true'] .lv6-qrow-chev { transform: rotate(45deg); }
.lv6-qrow-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 340ms cubic-bezier(0.22, 1, 0.36, 1); }
.lv6-qrow[data-open='true'] .lv6-qrow-body { grid-template-rows: 1fr; }
.lv6-qrow-inner { overflow: hidden; padding: 0 4px; }
.lv6-qrow[data-open='true'] .lv6-qrow-inner { padding: 4px 4px 20px; }
.lv6-qrow-detail { display: grid; grid-template-columns: 120px 1fr; gap: 10px; padding: 6px 0; font-family: var(--mono); font-size: 11px; color: var(--text-2); }
.lv6-qrow-detail span:first-child { color: var(--text-3); text-transform: uppercase; letter-spacing: 0.1em; font-size: 9px; padding-top: 2px; }
.lv6-qrow-steps { display: flex; flex-direction: column; gap: 6px; margin: 10px 0; }
.lv6-qstep { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--text-2); }
.lv6-qstep-n { width: 20px; height: 20px; border-radius: 50%; background: color-mix(in oklch, var(--amber) 16%, transparent); color: var(--amber); font-family: var(--mono); font-size: 10px; font-weight: 600; display: grid; place-items: center; flex-shrink: 0; }

/* Title flipper */
.lv6-v5-flipper-wrap { perspective: 1400px; display: flex; align-items: center; justify-content: center; min-height: 360px; }
.lv6-v5-flipper { position: relative; width: 100%; max-width: 460px; height: 340px; transform-style: preserve-3d; cursor: pointer; }
.lv6-v5-page { position: absolute; inset: 0; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 24px 28px; display: flex; flex-direction: column; gap: 14px; backface-visibility: hidden; transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1); }
.lv6-v5-page-tag { font-family: var(--mono); font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); font-weight: 600; }
.lv6-v5-page-head { font-family: var(--display); font-size: 22px; font-weight: 500; color: var(--text); letter-spacing: -0.012em; }
.lv6-v5-page-rows { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.lv6-v5-page-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; font-family: var(--mono); font-size: 11px; color: var(--text-2); padding: 5px 0; border-bottom: 1px dotted color-mix(in oklch, var(--border) 70%, transparent); }
.lv6-v5-page-foot { font-family: var(--mono); font-size: 10px; color: var(--amber); letter-spacing: 0.14em; text-transform: uppercase; margin-top: auto; }
.lv6-v5-page[data-state='back']  { transform: rotateY(-180deg); }
.lv6-v5-page[data-state='left']  { transform: rotateY(-180deg); }

/* Tax chart */
.lv6-v5-chart-wrap { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 18px 20px 14px; }
.lv6-v5-chart-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--text-3); margin-bottom: 14px; font-weight: 600; }
.lv6-svg-chart { width: 100%; height: auto; }
.lv6-svg-chart .chart-grid line { stroke: color-mix(in oklch, var(--border) 80%, transparent); stroke-width: 0.5; }
.lv6-svg-chart .chart-path { fill: none; stroke-width: 1.4; stroke-linecap: round; }
.lv6-svg-chart .chart-path.fair { stroke: var(--text-3); stroke-dasharray: 3 3; }
.lv6-svg-chart .chart-path.actual { stroke: var(--amber); }
.lv6-svg-chart .chart-pt { r: 3; }
.lv6-svg-chart .chart-pt.fair { fill: var(--text-3); }
.lv6-svg-chart .chart-pt.actual { fill: var(--amber); filter: drop-shadow(0 0 4px var(--amber)); }
.lv6-svg-chart .chart-gap { fill: url(#lv6-gap-grad); }
.lv6-svg-chart .chart-annot { font-family: var(--mono); font-size: 9px; fill: var(--amber); letter-spacing: 0.08em; }
.lv6-svg-chart .chart-labels-x text { font-family: var(--mono); font-size: 9px; fill: var(--text-3); letter-spacing: 0.05em; }
.lv6-v5-chart-legend { display: flex; gap: 16px; margin-top: 10px; font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.1em; }
.lv6-v5-chart-legend i { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }

/* LL97 */
.lv6-v5-ll97-wrap { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 18px 20px 14px; }
.lv6-v5-ll97-input-row { display: flex; align-items: center; gap: 10px; border: 1px solid var(--border); border-radius: 2px; padding: 0 12px; margin-bottom: 14px; background: var(--bg); }
.lv6-v5-ll97-input-row:focus-within { border-color: var(--amber); }
.lv6-v5-ll97-prefix { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; }
.lv6-v5-ll97-input { flex: 1; background: transparent; border: 0; padding: 11px 0; color: var(--text); font-family: var(--mono); font-size: 13px; letter-spacing: 0.04em; outline: 0; }
.lv6-v5-ll97-status { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.1em; text-transform: uppercase; }
.lv6-v5-ll97-status[data-state='ok'] { color: oklch(70% 0.18 142); }
.lv6-v5-ll97-status[data-state='warn'] { color: var(--amber); }
.lv6-v5-ll97-status[data-state='bad'] { color: oklch(65% 0.2 25); }
.lv6-ll97-cap { fill: none; stroke: var(--text-3); stroke-width: 1; stroke-dasharray: 4 2; }
.lv6-ll97-actual { fill: none; stroke: var(--amber); stroke-width: 1.6; stroke-linecap: round; filter: drop-shadow(0 0 3px var(--amber)); transition: d 500ms ease-out; }
.lv6-ll97-marker { stroke: color-mix(in oklch, var(--border) 80%, transparent); stroke-width: 0.5; stroke-dasharray: 2 3; }
.lv6-ll97-marker-text { font-family: var(--mono); font-size: 9px; fill: var(--text-3); letter-spacing: 0.06em; }
.lv6-v5-ll97-readout { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-top: 10px; padding-top: 14px; border-top: 1px solid color-mix(in oklch, var(--border) 60%, transparent); }
.lv6-v5-ll97-readout div { display: flex; flex-direction: column; gap: 3px; }
.lv6-ro-label { font-family: var(--mono); font-size: 9px; color: var(--text-3); letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; }
.lv6-ro-val { font-family: var(--mono); font-size: 13px; color: var(--text); letter-spacing: 0.02em; }

/* Insurance chips */
.lv6-v5-ins-wrap { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 22px; position: relative; min-height: 340px; display: flex; flex-direction: column; gap: 18px; }
.lv6-v5-ins-hero { border-bottom: 1px solid color-mix(in oklch, var(--border) 70%, transparent); padding-bottom: 14px; }
.lv6-v5-ins-title { font-family: var(--display); font-size: 18px; font-weight: 500; color: var(--text); }
.lv6-v5-ins-addr { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.08em; margin-top: 2px; }
.lv6-v5-ins-sum { font-size: 12px; color: var(--text-2); margin-top: 8px; }
.lv6-v5-ins-chips { display: flex; flex-wrap: wrap; gap: 8px; }
/* Insurance chips — subtly button-like: soft raised fill, light inner highlight,
   clear hover lift, amber active state. Still minimal, still editorial. */
.lv6 .lv6-ins-chip {
  padding: 8px 14px;
  background:
    linear-gradient(180deg, color-mix(in oklch, var(--bg-raised) 80%, transparent) 0%, color-mix(in oklch, var(--bg-raised) 50%, transparent) 100%);
  border: 1px solid color-mix(in oklch, var(--border) 160%, transparent);
  border-radius: 0;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--text-2);
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: transform 160ms ease-out, box-shadow 200ms, border-color 160ms, color 160ms, background 160ms;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 1px 0 rgba(0, 0, 0, 0.22);
}
.lv6 .lv6-ins-chip:hover {
  color: var(--text);
  border-color: color-mix(in oklch, var(--amber) 55%, var(--border));
  transform: translateY(-1px);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 4px 14px color-mix(in oklch, var(--amber) 18%, transparent),
    0 1px 0 rgba(0, 0, 0, 0.24);
}
.lv6 .lv6-ins-chip:active { transform: translateY(0); }
.lv6 .lv6-ins-chip[data-active='true'] {
  background: var(--amber);
  color: oklch(12% 0.025 258);
  border-color: var(--amber);
  font-weight: 600;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 3px 12px color-mix(in oklch, var(--amber) 35%, transparent);
}
.lv6-v5-ins-card { background: var(--bg); border: 1px solid var(--border); border-radius: 2px; padding: 16px; font-family: var(--mono); font-size: 11px; display: flex; flex-direction: column; gap: 8px; }
.lv6-ins-row { display: grid; grid-template-columns: 100px 1fr; gap: 10px; }
.lv6-ins-row span:first-child { color: var(--text-3); letter-spacing: 0.1em; text-transform: uppercase; font-size: 9px; padding-top: 2px; }
.lv6-ins-row span:last-child { color: var(--text); }

/* Broker */
.lv6-v5-broker-wrap { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 22px; min-height: 320px; position: relative; }
.lv6-brk-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; padding-bottom: 16px; border-bottom: 1px solid color-mix(in oklch, var(--border) 70%, transparent); }
/* Broker chips — non-interactive labels styled like buttons (sharp,
   bordered, slightly raised) so they read as "feature toggles in the
   product UI" rather than passive text. Cursor stays `default` because
   they don't handle clicks here, but the visual weight matches the
   adjacent insurance chips so the carousel stays consistent. */
.lv6-brk-chip {
  padding: 7px 11px;
  background: linear-gradient(180deg, color-mix(in oklch, var(--bg-raised) 80%, transparent) 0%, color-mix(in oklch, var(--bg-raised) 50%, transparent) 100%);
  border: 1px solid color-mix(in oklch, var(--border) 160%, transparent);
  border-radius: 0;
  font-family: var(--mono);
  font-size: 11px;
  color: var(--text-2);
  letter-spacing: 0.02em;
  transition: color 160ms, border-color 160ms;
  cursor: default;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.04),
    0 1px 0 rgba(0, 0, 0, 0.22);
}
.lv6-v5-broker-wrap:hover .lv6-brk-chip { color: var(--text); border-color: color-mix(in oklch, var(--amber) 50%, var(--border)); }
.lv6-brk-table { display: flex; flex-direction: column; gap: 2px; font-family: var(--mono); font-size: 11px; }
.lv6-brk-table-head { display: grid; grid-template-columns: 1.6fr 1fr 0.8fr 0.7fr; gap: 10px; padding: 10px 0; color: var(--text-3); font-size: 9px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; border-bottom: 1px solid color-mix(in oklch, var(--border) 70%, transparent); }
.lv6-brk-row { display: grid; grid-template-columns: 1.6fr 1fr 0.8fr 0.7fr; gap: 10px; padding: 10px 0; color: var(--text); transition: background 160ms; }
.lv6-brk-row:hover { background: color-mix(in oklch, var(--amber) 5%, transparent); }

/* ══════════════════════════════════════════════════════════════
   SCENE 3.5 · LANDLORD SUITE
   ══════════════════════════════════════════════════════════════ */
.lv6-lsuite { background: var(--bg); padding: 120px 56px 100px; max-width: 100vw; }
.lv6-lsuite-intro { max-width: 1200px; margin: 0 auto 56px; }
.lv6-lsuite-eyebrow { font-family: var(--sans); font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 18px; }
.lv6-lsuite-head { font-family: var(--display); font-size: clamp(34px, 4.4vw, 64px); line-height: 1.02; letter-spacing: -0.022em; color: var(--text); font-weight: 500; margin-bottom: 18px; max-width: 22ch; }
.lv6-lsuite-sub { font-size: clamp(14px, 3.6vw, 15px); line-height: 1.55; color: var(--text-2); max-width: 62ch; }
.lv6-lsuite-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; max-width: 1400px; margin: 0 auto; background: var(--border); border: 1px solid var(--border); }
.lv6-lsuite-card { background: var(--bg); padding: 26px 26px 22px; display: flex; flex-direction: column; gap: 18px; min-height: 280px; transition: background 240ms; }
.lv6-lsuite-card:hover { background: color-mix(in oklch, var(--bg-elevated) 50%, var(--bg)); }
.lv6-lsuite-card:active { background: color-mix(in oklch, var(--amber) 6%, var(--bg)); transform: scale(0.995); }
.lv6-lsuite-card[data-state='roadmap'] .lv6-lsuite-tag { color: var(--text-3); }
.lv6-lsuite-card[data-state='live'] .lv6-lsuite-tag { color: var(--amber); }
.lv6-lsuite-card-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding-bottom: 14px; border-bottom: 1px solid var(--border); }
.lv6-lsuite-idx { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; color: var(--text-3); font-weight: 600; }
.lv6-lsuite-name { font-family: var(--display); font-size: 20px; font-weight: 500; color: var(--text); letter-spacing: -0.012em; flex: 1; }
.lv6-lsuite-tag { font-family: var(--mono); font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; font-weight: 600; }
.lv6-lsuite-demo { flex: 1; display: flex; flex-direction: column; gap: 6px; font-size: 12px; }
.lv6-lsuite-foot { font-size: 11px; line-height: 1.45; color: var(--text-3); font-style: italic; padding-top: 10px; border-top: 1px dotted color-mix(in oklch, var(--border) 70%, transparent); }

.lv6-lsr-row { display: flex; justify-content: space-between; padding: 7px 0; border-bottom: 1px dotted color-mix(in oklch, var(--border) 60%, transparent); font-family: var(--mono); font-size: 11px; }
.lv6-lsr-label { color: var(--text-3); letter-spacing: 0.04em; text-transform: uppercase; font-size: 9px; font-weight: 600; }
.lv6-lsr-val { color: var(--text); font-weight: 500; }
.lv6-lsl-line { display: flex; align-items: center; justify-content: space-between; position: relative; margin: 18px 0 6px; }
.lv6-lsl-line::before { content: ''; position: absolute; left: 6px; right: 6px; top: 50%; height: 1px; background: var(--border); transform: translateY(-50%); }
.lv6-lsl-dot { width: 11px; height: 11px; border-radius: 50%; background: color-mix(in oklch, var(--text-3) 30%, transparent); border: 1px solid var(--border); position: relative; z-index: 1; }
.lv6-lsl-dot-done { background: var(--text-2); border-color: var(--text-2); }
.lv6-lsl-dot-now  { background: var(--amber); border-color: var(--amber); box-shadow: 0 0 10px color-mix(in oklch, var(--amber) 60%, transparent); animation: lv6-lsl-pulse 1.8s ease-in-out infinite; }
@keyframes lv6-lsl-pulse { 0%,100% { transform: scale(1) } 50% { transform: scale(1.25) } }
.lv6-lsl-labels { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 9px; color: var(--text-3); letter-spacing: 0.04em; text-transform: uppercase; }
.lv6-lsl-labels .amb { color: var(--amber); }
.lv6-lsl-meta { font-family: var(--mono); font-size: 10px; color: var(--text-2); letter-spacing: 0.04em; margin-top: auto; }
.lv6-lsr-mini { display: flex; justify-content: space-between; padding: 8px 10px; background: color-mix(in oklch, var(--bg-elevated) 40%, transparent); font-family: var(--mono); font-size: 11px; }
.lv6-lsr-mini span:first-child { color: var(--text); }
.lv6-lsr-mini span:last-child { color: var(--text-2); }
.lv6-lsr-mini.lv6-lsr-late span:last-child { color: oklch(65% 0.18 25); }
.lv6-lsm-row { display: grid; grid-template-columns: 10px 1fr auto; gap: 10px; align-items: center; padding: 7px 0; font-family: var(--mono); font-size: 11px; color: var(--text); border-bottom: 1px dotted color-mix(in oklch, var(--border) 60%, transparent); }
.lv6-lsm-pri { width: 8px; height: 8px; border-radius: 50%; }
.lv6-lsm-p1 { background: oklch(65% 0.18 25); box-shadow: 0 0 6px oklch(65% 0.18 25); }
.lv6-lsm-p2 { background: var(--amber); }
.lv6-lsm-p3 { background: var(--text-3); }
.lv6-lsm-age { color: var(--text-3); font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; }
.lv6-lsv-card { width: 100%; background: color-mix(in oklch, var(--bg-elevated) 50%, transparent); border: 1px solid var(--border); padding: 14px 14px 12px; display: flex; flex-direction: column; gap: 6px; }
.lv6-lsv-addr { font-family: var(--display); font-size: 14px; font-weight: 500; color: var(--text); }
.lv6-lsv-price { font-family: var(--display); font-size: 22px; font-weight: 600; letter-spacing: -0.015em; color: var(--amber); }
.lv6-lsv-specs { font-size: 11px; color: var(--text-2); letter-spacing: 0.03em; }
.lv6-lsv-chans { display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
.lv6-lsv-chans span { font-family: var(--mono); font-size: 9px; padding: 3px 7px; border: 1px solid var(--border); color: var(--text-3); letter-spacing: 0.05em; text-transform: uppercase; }
.lv6-lsa-q { align-self: flex-end; max-width: 86%; background: color-mix(in oklch, var(--amber) 14%, transparent); color: var(--text); padding: 8px 12px; border-radius: 10px 10px 2px 10px; font-size: 12px; line-height: 1.4; }
.lv6-lsa-a { align-self: flex-start; max-width: 100%; background: color-mix(in oklch, var(--bg-elevated) 60%, transparent); color: var(--text-2); padding: 10px 12px; border-radius: 10px 10px 10px 2px; font-size: 12px; line-height: 1.5; border: 1px solid var(--border); }
.lv6-lsa-a em { color: var(--amber); font-style: normal; font-weight: 600; }

/* ══════════════════════════════════════════════════════════════
   SCENE 4 · PLATFORM
   ══════════════════════════════════════════════════════════════ */
.lv6-splat { padding: 120px 56px 100px; background: var(--bg); max-width: 100vw; }
.lv6-splat-intro { max-width: 1200px; margin: 0 auto 56px; }
.lv6-splat-eyebrow { font-family: var(--sans); font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 18px; }
.lv6-splat-head { font-family: var(--display); font-size: clamp(34px, 4.4vw, 64px); line-height: 1.02; letter-spacing: -0.022em; color: var(--text); font-weight: 500; margin-bottom: 18px; max-width: 22ch; }
.lv6-splat-head em { font-style: italic; color: var(--amber); font-weight: 500; }
.lv6-splat-sub { font-size: clamp(14px, 3.6vw, 15px); line-height: 1.55; color: var(--text-2); max-width: 64ch; }
.lv6-splat-demos { max-width: 1200px; margin: 0 auto 48px; }
.lv6-splat-demos-head { font-family: var(--mono); font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.lv6-splat-demos-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.lv6-splat-demo { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 22px; display: flex; flex-direction: column; gap: 14px; min-height: 280px; }
.lv6-splat-demo-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--amber); font-weight: 600; }
.lv6-splat-demo-title { font-family: var(--display); font-size: 20px; font-weight: 500; color: var(--text); letter-spacing: -0.012em; }
.lv6-splat-demo-input { display: flex; align-items: center; gap: 10px; background: var(--bg); border: 1px solid var(--border); border-radius: 2px; padding: 0 12px; }
.lv6-splat-demo-input:focus-within { border-color: var(--amber); }
.lv6-splat-demo-input input { flex: 1; border: 0; background: transparent; padding: 11px 0; color: var(--text); font-size: 13px; outline: 0; font-family: var(--sans); }
.lv6-splat-demo-input .pd-prefix { color: var(--text-3); }

.lv6-splat-demo-preview { background: var(--bg); border: 1px solid var(--border); border-radius: 2px; padding: 14px; font-family: var(--mono); font-size: 11px; }
.lv6-pd-tabs { display: flex; gap: 10px; padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--border); flex-wrap: wrap; }
.lv6-pd-tab { font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); padding: 4px 8px; border-radius: 2px; }
.lv6-pd-tab.active { color: var(--amber); background: color-mix(in oklch, var(--amber) 10%, transparent); }
.lv6-pd-count { margin-left: 4px; color: var(--amber); font-weight: 700; }
.lv6-pd-rows { display: flex; flex-direction: column; gap: 8px; }
.lv6-pd-row { display: grid; grid-template-columns: 100px 1fr; gap: 10px; padding: 6px 0; color: var(--text-2); border-bottom: 1px dotted color-mix(in oklch, var(--border) 60%, transparent); }
.lv6-pd-row span:first-child { color: var(--text-3); letter-spacing: 0.1em; text-transform: uppercase; font-size: 9px; padding-top: 2px; font-weight: 600; }
.lv6-pd-row span:last-child { color: var(--text); }
.lv6-pd-row span.amb { color: var(--amber); font-weight: 500; }

.lv6-splat-demo-chat { background: var(--bg); border: 1px solid var(--border); border-radius: 2px; padding: 14px; display: flex; flex-direction: column; gap: 10px; min-height: 150px; flex: 1; }
.lv6-ai-msg-user { align-self: flex-end; max-width: 86%; background: color-mix(in oklch, var(--amber) 14%, transparent); color: var(--text); padding: 8px 12px; border-radius: 10px 10px 2px 10px; font-size: 12px; line-height: 1.4; }
.lv6-ai-msg-bot { align-self: flex-start; max-width: 100%; background: color-mix(in oklch, var(--bg-elevated) 60%, transparent); color: var(--text-2); padding: 10px 12px; border-radius: 10px 10px 10px 2px; font-size: 12px; line-height: 1.5; border: 1px solid var(--border); }
.lv6-ai-msg-bot em { color: var(--amber); font-style: normal; font-weight: 600; }
.lv6-ai-typing { color: var(--amber); letter-spacing: 0.2em; font-family: var(--mono); font-size: 13px; animation: lv6-ai-blink 1.4s infinite ease-in-out; }
@keyframes lv6-ai-blink { 0%, 100% { opacity: 0.35 } 50% { opacity: 1 } }

.lv6-splat-demo-cta-row { display: flex; align-items: center; justify-content: space-between; margin-top: auto; }
.lv6-splat-demo-btn { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-2); padding: 6px 10px; border: 1px solid var(--border); border-radius: 2px; transition: all 160ms; }
.lv6-splat-demo-btn:hover { color: var(--amber); border-color: var(--amber); }
.lv6-splat-demo-meta { font-size: 10px; color: var(--text-3); font-style: italic; letter-spacing: 0.04em; }

.lv6-splat-demo-alerts { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.lv6-mon-alert { display: grid; grid-template-columns: 10px 1fr auto; gap: 10px; align-items: center; padding: 8px 10px; background: var(--bg); border: 1px solid var(--border); border-radius: 2px; font-family: var(--mono); font-size: 11px; opacity: 0; transform: translateY(6px); animation: lv6-mon-reveal 440ms ease-out forwards; }
.lv6-mon-alert:nth-child(1) { animation-delay: 100ms; }
.lv6-mon-alert:nth-child(2) { animation-delay: 400ms; }
.lv6-mon-alert:nth-child(3) { animation-delay: 700ms; }
.lv6-mon-alert:nth-child(4) { animation-delay: 1000ms; }
@keyframes lv6-mon-reveal { to { opacity: 1; transform: none } }
.lv6-mon-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 5px var(--amber); animation: lv6-mon-blink 1.8s ease-in-out infinite; }
@keyframes lv6-mon-blink { 0%,100% { opacity: 1 } 50% { opacity: 0.35 } }
.lv6-mon-txt { color: var(--text); font-weight: 500; }
.lv6-mon-time { color: var(--text-3); font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; }
.lv6-mon-alert-more { background: transparent; border-style: dashed; color: var(--text-3); justify-content: center; grid-template-columns: 1fr; text-align: center; font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; }

/* Catalog grid */
.lv6-splat-grid { max-width: 1200px; margin: 0 auto 56px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 24px; }
.lv6-splat-cat { border: 1px solid var(--border); border-radius: 4px; padding: 20px; background: color-mix(in oklch, var(--bg-elevated) 40%, transparent); transition: border-color 240ms, background 240ms; }
.lv6-splat-cat:hover { border-color: color-mix(in oklch, var(--amber) 25%, var(--border)); background: color-mix(in oklch, var(--bg-elevated) 70%, transparent); }
.lv6-splat-cat-head { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--border); }
.lv6-splat-cat-label { font-family: var(--display); font-size: 18px; font-weight: 600; letter-spacing: -0.01em; color: var(--text); }
.lv6-splat-cat-count { font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--text-3); }
.lv6-splat-cat-cells { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
.lv6-splat-cell { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: transparent; border: 1px solid transparent; color: var(--text-3); font-family: var(--sans); font-size: 12px; font-weight: 500; letter-spacing: -0.003em; border-radius: 2px; transition: all 180ms cubic-bezier(0.22, 1, 0.36, 1); min-height: 36px; }
.lv6-splat-cell:hover { border-color: color-mix(in oklch, var(--amber) 45%, transparent); color: var(--text); background: color-mix(in oklch, var(--amber) 6%, transparent); }
.lv6-splat-cell:active { background: color-mix(in oklch, var(--amber) 14%, transparent); }
.lv6-splat-cell-name { flex: 1; min-width: 0; }
.lv6-splat-live-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--amber); box-shadow: 0 0 5px var(--amber); flex-shrink: 0; margin-left: 8px; }
.lv6-splat-live { color: var(--text); background: color-mix(in oklch, var(--amber) 4%, transparent); border-color: color-mix(in oklch, var(--amber) 15%, transparent); }
.lv6-splat-flagship { background: color-mix(in oklch, var(--amber) 16%, transparent); border-color: color-mix(in oklch, var(--amber) 45%, transparent); color: var(--amber); font-weight: 600; }
.lv6-splat-flagship:hover { background: var(--amber); color: oklch(12% 0.025 258); border-color: var(--amber); }
.lv6-splat-roadmap { opacity: 0.72; border-style: dashed; border-color: color-mix(in oklch, var(--text-3) 40%, transparent); }
.lv6-splat-roadmap:hover { opacity: 1; border-style: solid; }
.lv6-splat-sub-hint { display: inline-block; margin-left: 8px; font-size: 10px; color: var(--text-3); font-weight: 500; letter-spacing: 0; font-style: italic; }
.lv6-splat-cell:hover .lv6-splat-sub-hint { color: var(--text-2); }
.lv6-splat-cat-ref { background: transparent; }
.lv6-splat-cat-ref .lv6-splat-cat-head { border-bottom-style: dashed; }
.lv6-splat-cat-ref-note { font-size: 12px; line-height: 1.5; color: var(--text-2); margin: 12px 0 0; max-width: 42ch; }
.lv6-splat-cat-ref-note a { color: var(--amber); border-bottom: 1px solid color-mix(in oklch, var(--amber) 45%, transparent); }
.lv6-splat-cat-ref-note a:hover { border-bottom-color: var(--amber); }

/* Landlord Suite catalog cell — each pill is its own toggle. The card is
   collapsed by default; closed-state gets a subtle amber accent + nudge
   animation on the first pill to signal interactivity. */
.lv6-splat-cat-landlord {
  position: relative;
}
.lv6-splat-cat-landlord[data-has-open='false'] {
  border-color: color-mix(in oklch, var(--amber) 28%, var(--border));
  background: color-mix(in oklch, var(--amber) 3%, var(--bg-elevated));
}
.lv6-splat-cat-landlord[data-has-open='false']:hover {
  border-color: color-mix(in oklch, var(--amber) 55%, var(--border));
  background: color-mix(in oklch, var(--amber) 6%, var(--bg-elevated));
}
.lv6-splat-cat-landlord[data-has-open='true'] {
  border-color: color-mix(in oklch, var(--amber) 45%, transparent);
  background: color-mix(in oklch, var(--amber) 5%, var(--bg-elevated));
}
.lv6-splat-cat-landlord[data-has-open='false'] .lv6-splat-cat-count {
  color: var(--amber);
}
.lv6-splat-tap-cta {
  display: inline-flex; align-items: center; gap: 6px;
  margin-left: 4px;
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--amber);
  font-weight: 600;
}
.lv6-splat-cat-landlord[data-has-open='true'] .lv6-splat-tap-cta { display: none; }
.lv6-splat-tap-arrow {
  display: inline-block;
  font-family: var(--sans);
  font-size: 13px;
  line-height: 1;
  animation: lv6-splat-arrow-bob 1.6s ease-in-out infinite;
}
@keyframes lv6-splat-arrow-bob {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(3px); }
}
@media (prefers-reduced-motion: reduce) {
  .lv6-splat-tap-arrow { animation: none; }
}

.lv6-splat-cat-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.lv6 .lv6-splat-pill {
  font-family: var(--mono);
  font-size: 10px;
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: 2px;
  color: var(--text-3);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 600;
  background: transparent;
  cursor: pointer;
  transition: all 160ms;
}
/* Closed-state pills inherit a subtle amber tint so the whole row reads as
   "interactive control" rather than "static label". Hover still lifts further. */
.lv6-splat-cat-landlord[data-has-open='false'] .lv6-splat-pill {
  color: var(--text-2);
  border-color: color-mix(in oklch, var(--amber) 28%, var(--border));
  background: color-mix(in oklch, var(--amber) 4%, transparent);
}
.lv6 .lv6-splat-pill:hover {
  color: var(--amber);
  border-color: color-mix(in oklch, var(--amber) 50%, var(--border));
  background: color-mix(in oklch, var(--amber) 4%, transparent);
}
.lv6 .lv6-splat-pill[data-active='true'] {
  background: var(--amber);
  color: oklch(12% 0.025 258);
  border-color: var(--amber);
}
/* First pill in the closed state gets a soft pulse to draw the eye to the
   interactive control. Stops the moment any pill is opened. */
.lv6 .lv6-splat-pill[data-nudge='true'] {
  animation: lv6-splat-pill-pulse 2.4s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
@keyframes lv6-splat-pill-pulse {
  0%, 100% {
    box-shadow: 0 0 0 0 color-mix(in oklch, var(--amber) 0%, transparent);
    border-color: color-mix(in oklch, var(--amber) 28%, var(--border));
  }
  50% {
    box-shadow: 0 0 0 4px color-mix(in oklch, var(--amber) 18%, transparent);
    border-color: color-mix(in oklch, var(--amber) 65%, var(--border));
  }
}
@media (prefers-reduced-motion: reduce) {
  .lv6 .lv6-splat-pill[data-nudge='true'] { animation: none; }
}

/* Expand region — full width below the catalog grid, smooth open/close */
.lv6-splat-landlord-expand {
  max-width: 1400px; margin: 0 auto 48px;
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 460ms cubic-bezier(0.22, 1, 0.36, 1), margin-bottom 460ms;
}
.lv6-splat-landlord-expand[data-open='true'] { grid-template-rows: 1fr; }
.lv6-splat-landlord-expand[data-open='false'] { margin-bottom: 0; }
.lv6-splat-landlord-inner { overflow: hidden; }
.lv6-splat-landlord-head {
  padding: 28px 0 22px;
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 24px;
}
.lv6-splat-landlord-eyebrow {
  font-family: var(--mono); font-size: 11px; letter-spacing: 0.24em;
  text-transform: uppercase; color: var(--amber); font-weight: 600;
}
.lv6 .lv6-splat-landlord-close {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--text-3); padding: 6px 12px; border: 1px solid var(--border); border-radius: 2px;
  cursor: pointer; transition: all 160ms; background: transparent;
}
.lv6 .lv6-splat-landlord-close:hover { color: var(--amber); border-color: var(--amber); }
/* Landlord cards inside the expansion: same generous sizing as standalone.
   Also widen to 2-col when only 1-2 cards open, so they feel properly sized
   instead of getting squished into a 3-col grid. */
.lv6-splat-landlord-expand .lv6-lsuite-grid:has(.lv6-lsuite-card:only-child) { grid-template-columns: 1fr; max-width: 600px; margin-left: auto; margin-right: auto; }
.lv6-splat-landlord-expand .lv6-lsuite-grid:has(.lv6-lsuite-card:nth-child(2):last-child) { grid-template-columns: 1fr 1fr; }
.lv6-splat-footer { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; padding-top: 32px; border-top: 1px solid var(--border); gap: 32px; flex-wrap: wrap; }
.lv6-splat-footer-legend { display: flex; gap: 24px; font-family: var(--mono); font-size: 10px; letter-spacing: 0.08em; color: var(--text-2); flex-wrap: wrap; }
.lv6-legend-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; vertical-align: middle; }
.lv6-legend-live { background: var(--amber); box-shadow: 0 0 4px var(--amber); }
.lv6-legend-flagship { background: var(--amber); outline: 1px solid oklch(12% 0 0); outline-offset: -2px; }
.lv6-legend-planned { border: 1px solid var(--text-3); box-sizing: border-box; background: transparent; }
.lv6-splat-footer-note { font-size: 11px; color: var(--text-3); letter-spacing: 0.04em; max-width: 44ch; line-height: 1.5; font-style: italic; }

/* ══════════════════════════════════════════════════════════════
   SCENE 5 · HOW IT WORKS
   ══════════════════════════════════════════════════════════════ */
.lv6-s6 { background: var(--bg); padding: 140px 56px 100px; }
.lv6-s6-content { max-width: 1200px; margin: 0 auto; }
.lv6-s6-eyebrow { font-family: var(--sans); font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase; color: var(--text-3); font-weight: 600; margin-bottom: 22px; }
.lv6-s6-headline { font-family: var(--display); font-size: clamp(36px, 4.8vw, 72px); line-height: 1; letter-spacing: -0.024em; color: var(--text); font-weight: 500; margin-bottom: 64px; max-width: 24ch; }
.lv6-s6-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin-bottom: 96px; border-top: 1px solid var(--border); padding-top: 48px; }
.lv6-s6-step-num { font-family: var(--mono); font-size: 11px; letter-spacing: 0.28em; color: var(--amber); font-weight: 600; margin-bottom: 14px; }
.lv6-s6-step-name { font-family: var(--display); font-size: clamp(24px, 2.4vw, 32px); line-height: 1.05; letter-spacing: -0.018em; color: var(--text); font-weight: 500; margin-bottom: 14px; }
.lv6-s6-step-body { font-size: 14px; line-height: 1.55; color: var(--text-2); max-width: 38ch; }
.lv6-s6-promises { display: grid; grid-template-columns: 1fr 1fr; gap: 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.lv6-s6-promise { padding: 36px 40px; display: flex; flex-direction: column; gap: 18px; }
.lv6-s6-promise-do { border-right: 1px solid var(--border); }
.lv6-s6-promise-label { font-family: var(--mono); font-size: 10px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--text-3); font-weight: 600; }
.lv6-s6-promise-do .lv6-s6-promise-label { color: var(--amber); }
.lv6-s6-promise-list { display: flex; flex-direction: column; gap: 10px; }
.lv6-s6-promise-list li { font-size: 14px; line-height: 1.45; color: var(--text-2); padding-left: 18px; position: relative; }
.lv6-s6-promise-do .lv6-s6-promise-list li::before { content: '✓'; position: absolute; left: 0; top: 0; color: var(--amber); font-weight: 700; font-size: 12px; }
.lv6-s6-promise-dont .lv6-s6-promise-list li::before { content: '—'; position: absolute; left: 0; top: 0; color: var(--text-3); font-weight: 700; font-size: 12px; }
.lv6-s6-line { margin-top: 56px; padding-top: 40px; border-top: 1px solid var(--border); font-family: var(--display); font-size: clamp(20px, 2.6vw, 34px); line-height: 1.3; color: var(--text-2); font-weight: 500; font-style: italic; text-align: center; max-width: 48ch; margin-left: auto; margin-right: auto; }
.lv6-s6-line em { color: var(--amber); font-weight: 600; font-style: italic; }

/* ══════════════════════════════════════════════════════════════
   SCENE 6 · CTA with live preview
   ══════════════════════════════════════════════════════════════ */
.lv6-s7 { background: radial-gradient(ellipse 900px 600px at 50% 40%, oklch(14% 0.05 55 / 0.18), transparent 65%), linear-gradient(180deg, oklch(7% 0.02 258) 0%, oklch(5% 0.015 255) 100%); padding: 96px 56px 48px; }
.lv6-s7-content { max-width: 1200px; margin: 0 auto; width: 100%; }
.lv6-s7-eyebrow { font-family: var(--mono); font-size: 11px; letter-spacing: 0.28em; text-transform: uppercase; color: var(--amber); font-weight: 600; margin-bottom: 22px; }
.lv6-s7-headline { font-family: var(--display); font-size: clamp(64px, 9vw, 140px); line-height: 0.96; letter-spacing: -0.028em; color: var(--text); font-weight: 500; margin-bottom: 48px; position: relative; z-index: 3; pointer-events: none; }
.lv6-s7-headline em { font-style: italic; color: var(--amber); }
/* State slider sits above the search form in the CTA — same shared
   component as /search and hero, so users see one consistent widget
   everywhere. Sized to the form's max-width + aligned left to match
   the left-aligned headline "Your building." */
.lv6-s7-slider { max-width: 800px; margin: 0 0 14px; }
.lv6-s7-form { max-width: 800px; margin: 0 0 40px; }
/* Wrapper for the shared AddressAutocomplete in the landing CTA. The
   component's `.rw-ac.hero` variant brings its own input chrome — we
   just need a sized container so it spans the form width and sits with
   the right rhythm relative to the state slider above + suggestion
   chips below. Kept thin so the wrapper is predictable when the
   autocomplete dropdown opens and extends beyond the wrapper bounds. */
.lv6-s7-ac-wrap { width: 100%; position: relative; }

.lv6-s7-input-wrap { display: flex; align-items: center; gap: 10px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; padding: 4px 4px 4px 18px; position: relative; }
.lv6-s7-input-wrap:focus-within { border-color: var(--amber); box-shadow: 0 0 0 4px color-mix(in oklch, var(--amber) 12%, transparent); }
.lv6-s7-prefix { color: var(--text-3); font-size: 16px; }
.lv6-s7-input { flex: 1; background: transparent; border: 0; padding: 16px 0; color: var(--text); font-family: var(--sans); font-size: 18px; outline: 0; }
.lv6-s7-input:focus, .lv6-s7-input:focus-visible { outline: none; box-shadow: none; }
.lv6-s7-input::placeholder { color: var(--text-3); }
/* Scope dropdown — inline between the address input and the Open button */
.lv6-s7-scope { position: relative; flex-shrink: 0; }
.lv6 .lv6-s7-scope-trigger {
  display: flex; align-items: center; gap: 6px;
  padding: 10px 14px;
  font-family: var(--mono); font-size: 11px; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--text);
  background: color-mix(in oklch, var(--bg) 70%, transparent);
  border: 1px solid var(--border);
  border-radius: 2px;
  cursor: pointer;
  transition: all 160ms;
  min-width: 78px;
  justify-content: center;
}
.lv6 .lv6-s7-scope-trigger:hover { border-color: color-mix(in oklch, var(--amber) 45%, var(--border)); color: var(--amber); }
.lv6 .lv6-s7-scope-trigger[aria-expanded='true'] { border-color: var(--amber); color: var(--amber); }
.lv6-s7-scope-chev { font-size: 9px; opacity: 0.7; transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1); }
.lv6 .lv6-s7-scope-trigger[aria-expanded='true'] .lv6-s7-scope-chev { transform: rotate(180deg); }

.lv6-s7-scope-menu {
  position: absolute; right: 0; top: calc(100% + 6px);
  min-width: 200px;
  background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px;
  box-shadow: 0 18px 40px rgba(0,0,0,0.5);
  padding: 4px;
  z-index: 20;
  display: flex; flex-direction: column; gap: 2px;
  /* Subtle entry animation */
  animation: lv6-scope-in 220ms cubic-bezier(0.22, 1, 0.36, 1);
}
@keyframes lv6-scope-in { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.lv6 .lv6-s7-scope-option {
  display: flex; align-items: baseline; gap: 10px;
  width: 100%; padding: 10px 12px;
  background: transparent; border: 0; border-radius: 2px;
  text-align: left; cursor: pointer;
  transition: background 140ms, color 140ms;
}
.lv6 .lv6-s7-scope-option:hover { background: color-mix(in oklch, var(--amber) 10%, transparent); }
.lv6 .lv6-s7-scope-option[data-active='true'] { background: color-mix(in oklch, var(--amber) 16%, transparent); color: var(--amber); }
.lv6-s7-scope-option-short { font-family: var(--mono); font-size: 11px; font-weight: 700; letter-spacing: 0.1em; min-width: 28px; color: inherit; }
.lv6-s7-scope-option-label { font-size: 13px; color: var(--text-2); }
.lv6 .lv6-s7-scope-option[data-active='true'] .lv6-s7-scope-option-label,
.lv6 .lv6-s7-scope-option:hover .lv6-s7-scope-option-label { color: var(--text); }
.lv6-s7-button { padding: 14px 24px; font-size: 14px; font-weight: 700; color: oklch(12% 0.025 258); background: var(--amber); border-radius: 2px; letter-spacing: -0.005em; transition: transform 120ms, box-shadow 200ms, background 200ms; }
.lv6-s7-button:hover { background: color-mix(in oklch, var(--amber) 90%, white); box-shadow: 0 8px 22px color-mix(in oklch, var(--amber) 40%, transparent); transform: translateY(-1px); }
.lv6-s7-suggestions { display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap; font-family: var(--mono); font-size: 11px; letter-spacing: 0.08em; color: var(--text-3); }
.lv6-s7-sug { padding: 6px 10px; background: transparent; border: 1px solid var(--border); border-radius: 2px; color: var(--text-2); transition: all 160ms; }
.lv6-s7-sug:hover { color: var(--amber); border-color: color-mix(in oklch, var(--amber) 50%, var(--border)); }
.lv6-s7-sub { font-size: 14px; color: var(--text-3); max-width: 64ch; line-height: 1.5; }

/* Autocomplete results */
.lv6-s7-auto { position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 3px; max-height: 320px; overflow-y: auto; z-index: 10; box-shadow: 0 20px 40px rgba(0,0,0,0.4); }
.lv6-s7-auto-item { padding: 10px 14px; font-size: 13px; color: var(--text-2); border-bottom: 1px solid color-mix(in oklch, var(--border) 50%, transparent); cursor: pointer; display: flex; justify-content: space-between; gap: 10px; transition: background 140ms; }
.lv6-s7-auto-item:hover, .lv6-s7-auto-item[aria-selected='true'] { background: color-mix(in oklch, var(--amber) 10%, transparent); color: var(--text); }
.lv6-s7-auto-item-state { font-family: var(--mono); font-size: 10px; color: var(--text-3); letter-spacing: 0.1em; text-transform: uppercase; flex-shrink: 0; }
.lv6-s7-auto-empty { padding: 14px 16px; font-size: 12px; color: var(--text-3); font-style: italic; }

/* Preview card (expands after submit) */
.lv6-s7-preview { margin-top: 40px; background: var(--bg-elevated); border: 1px solid var(--border); border-radius: 4px; padding: 0; overflow: hidden; display: grid; grid-template-rows: 0fr; transition: grid-template-rows 500ms cubic-bezier(0.22, 1, 0.36, 1); }
.lv6-s7-preview[data-open='true'] { grid-template-rows: 1fr; }
.lv6-s7-preview-inner { overflow: hidden; }
.lv6-s7-preview-body { padding: 28px 32px; display: grid; grid-template-columns: 220px 1fr; gap: 28px; align-items: start; }
/* Media column — stacks street view on top of a static map so the
   preview matches the v2 report cover (same imagery pair). Both sources
   are effectively free: staticmap uses disk-cached OSM tiles, streetview
   is server-cached. On mobile the column collapses and the images sit
   side-by-side so the card doesn't get taller than one phone screen. */
.lv6-s7-preview-media { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.lv6-s7-preview-img { background: var(--bg); border: 1px solid var(--border); border-radius: 3px; aspect-ratio: 4/3; overflow: hidden; display: grid; place-items: center; }
.lv6-s7-preview-img img { width: 100%; height: 100%; object-fit: cover; }
.lv6-s7-preview-img-placeholder { color: var(--text-3); font-family: var(--mono); font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; }
.lv6-s7-preview-meta { display: flex; flex-direction: column; gap: 14px; }
.lv6-s7-preview-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.lv6-s7-preview-addr { font-family: var(--display); font-size: 22px; font-weight: 500; color: var(--text); letter-spacing: -0.012em; }
.lv6-s7-preview-region { font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--amber); padding-top: 6px; }
/* "Also known as" — same visual rhythm as the region line but one step
   dimmer and with a small muted label prefix so users can tell it's
   extra detail, not primary identity. Matches v2-hdr-aka styling. */
.lv6-s7-preview-aka { font-family: var(--mono); font-size: 10px; letter-spacing: 0.1em; color: var(--text-3); padding-top: 4px; }
.lv6-s7-preview-aka-label { text-transform: uppercase; letter-spacing: 0.14em; color: color-mix(in oklch, var(--text-3) 60%, transparent); margin-right: 6px; font-weight: 600; }
.lv6-s7-preview-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px 20px; }
.lv6-s7-preview-row { display: flex; justify-content: space-between; font-family: var(--mono); font-size: 11px; padding: 5px 0; border-bottom: 1px dotted color-mix(in oklch, var(--border) 60%, transparent); }
.lv6-s7-preview-row span:first-child { color: var(--text-3); letter-spacing: 0.08em; text-transform: uppercase; font-size: 9px; padding-top: 2px; font-weight: 600; }
.lv6-s7-preview-row span:last-child { color: var(--text); }
/* Dual-option gate: email the preview | sign up for the full record */
.lv6-s7-preview-gate {
  padding: 20px 32px;
  background: color-mix(in oklch, var(--amber) 6%, transparent);
  border-top: 1px solid color-mix(in oklch, var(--amber) 30%, transparent);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 28px;
  align-items: center;
}
.lv6-s7-gate-email, .lv6-s7-gate-signup { display: flex; flex-direction: column; gap: 8px; }
.lv6-s7-gate-label {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--amber); font-weight: 600;
}
.lv6-s7-gate-sub { font-size: 11px; color: var(--text-2); }
.lv6-s7-gate-email-row {
  display: flex; gap: 8px; align-items: stretch;
}
.lv6 .lv6-s7-gate-email-input {
  flex: 1; min-width: 0;
  padding: 9px 12px;
  background: color-mix(in oklch, var(--bg) 80%, transparent);
  border: 1px solid var(--border);
  border-radius: 2px;
  color: var(--text);
  font-family: var(--sans);
  font-size: 13px;
  outline: 0;
  transition: border-color 160ms;
}
.lv6 .lv6-s7-gate-email-input:focus-visible {
  border-color: var(--amber);
  outline: none;
  box-shadow: 0 0 0 2px color-mix(in oklch, var(--amber) 20%, transparent);
}
.lv6 .lv6-s7-gate-email-btn {
  padding: 9px 16px; font-size: 12px; font-weight: 600;
  color: var(--text); background: transparent;
  border: 1px solid var(--amber); border-radius: 2px;
  cursor: pointer; transition: all 160ms;
  font-family: var(--sans);
}
.lv6 .lv6-s7-gate-email-btn:hover:not(:disabled) {
  background: var(--amber); color: oklch(12% 0.025 258);
}
.lv6 .lv6-s7-gate-email-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.lv6-s7-gate-sent { font-size: 13px; color: var(--amber); font-weight: 600; letter-spacing: -0.003em; padding: 8px 0; }
.lv6-s7-gate-hint { font-size: 11px; color: var(--text-3); }
.lv6-s7-gate-hint-err { color: oklch(65% 0.2 25); }
.lv6-s7-gate-divider {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-3); padding: 0 4px; justify-self: center;
}
.lv6-s7-preview-gate-cta {
  padding: 11px 18px; font-size: 13px; font-weight: 700;
  color: oklch(12% 0.025 258); background: var(--amber); border-radius: 2px;
  letter-spacing: -0.003em; transition: transform 120ms, box-shadow 200ms;
  align-self: flex-start;
}
.lv6-s7-preview-gate-cta:hover { transform: translateY(-1px); box-shadow: 0 8px 20px color-mix(in oklch, var(--amber) 40%, transparent); }
.lv6-s7-preview-err { padding: 18px 32px; color: var(--text-3); font-size: 13px; font-style: italic; }
.lv6-s7-preview-loading { padding: 18px 32px; display: flex; align-items: center; gap: 10px; color: var(--text-2); font-size: 13px; }
.lv6-s7-preview-spinner { width: 16px; height: 16px; border: 2px solid var(--border); border-top-color: var(--amber); border-radius: 50%; animation: lv6-spin 800ms linear infinite; }

/* Skeleton loader for the preview card. Same grid + row structure as the
   resolved preview body so the swap to real content is pure text-fade,
   no layout shift. The shimmer uses a background-position animation on a
   color-mixed gradient so the placeholders read as "loading" without
   being loud enough to compete with the real content when it appears. */
.lv6-s7-preview-skel { padding: 0 32px 28px; }
.lv6-s7-preview-skel .lv6-s7-preview-head { border-bottom-color: color-mix(in oklch, var(--border) 60%, transparent); }
.lv6-s7-preview-skel .lv6-s7-preview-row { border-bottom-color: color-mix(in oklch, var(--border) 40%, transparent); }
.lv6-s7-skel {
  display: inline-block;
  height: 12px;
  border-radius: 3px;
  background: linear-gradient(
    90deg,
    color-mix(in oklch, var(--border) 70%, transparent) 0%,
    color-mix(in oklch, var(--border) 95%, transparent) 50%,
    color-mix(in oklch, var(--border) 70%, transparent) 100%
  );
  background-size: 220% 100%;
  animation: lv6-skel-shimmer 1400ms ease-in-out infinite;
}
.lv6-s7-skel-img {
  background: linear-gradient(
    90deg,
    color-mix(in oklch, var(--border) 60%, transparent) 0%,
    color-mix(in oklch, var(--border) 90%, transparent) 50%,
    color-mix(in oklch, var(--border) 60%, transparent) 100%
  );
  background-size: 220% 100%;
  animation: lv6-skel-shimmer 1400ms ease-in-out infinite;
}
.lv6-s7-skel-addr { width: 58%; height: 22px; margin-bottom: 8px; }
.lv6-s7-skel-region { width: 38%; height: 10px; }
.lv6-s7-skel-label { width: 42px; height: 9px; }
.lv6-s7-skel-value { width: 68px; height: 11px; }
@keyframes lv6-skel-shimmer {
  0% { background-position: 100% 0; }
  100% { background-position: -100% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .lv6-s7-skel, .lv6-s7-skel-img { animation: none; background: color-mix(in oklch, var(--border) 80%, transparent); }
}
@keyframes lv6-spin { to { transform: rotate(360deg) } }

/* ══════════════════════════════════════════════════════════════
   FOOTER — expanded: brand + 4 nav columns + 5 SEO columns + legal/copyright
   ══════════════════════════════════════════════════════════════ */
.lv6-foot-x { padding: 64px 56px 32px; border-top: 1px solid var(--border); background: color-mix(in oklch, var(--bg) 96%, black); }
.lv6-foot-x-top {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(0, 3fr);
  gap: 64px;
  max-width: 1400px;
  margin: 0 auto 56px;
}
.lv6-foot-x-brand { max-width: 320px; }
.lv6-foot-x-logo {
  display: flex; align-items: center; gap: 10px;
  font-family: var(--display); font-size: 22px; font-weight: 600;
  color: var(--text); letter-spacing: -0.018em; margin-bottom: 14px;
}
.lv6-foot-x-tag {
  font-size: 13px; line-height: 1.55; color: var(--text-2);
  margin-bottom: 18px; max-width: 34ch;
}
.lv6-foot-x-social { display: flex; gap: 14px; align-items: center; }
.lv6-foot-x-social a {
  display: grid; place-items: center; width: 30px; height: 30px;
  border: 1px solid var(--border); border-radius: 3px;
  color: var(--text-3); transition: all 160ms;
}
.lv6-foot-x-social a:hover { color: var(--amber); border-color: var(--amber); }

.lv6-foot-x-nav {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 28px;
}
.lv6-foot-x-col-head {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--amber); font-weight: 600;
  margin-bottom: 14px;
}
.lv6-foot-x-nav ul, .lv6-foot-x-seo ul { display: flex; flex-direction: column; gap: 8px; }
.lv6-foot-x-nav a, .lv6-foot-x-seo a {
  font-size: 13px; color: var(--text-2); transition: color 140ms;
}
.lv6-foot-x-nav a:hover, .lv6-foot-x-seo a:hover { color: var(--text); }

.lv6-foot-x-seo {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 32px;
  max-width: 1400px;
  margin: 0 auto 40px;
  padding-top: 40px;
  border-top: 1px solid var(--border);
}
.lv6-foot-x-seo a { font-size: 12px; }

.lv6-foot-x-bottom {
  max-width: 1400px; margin: 0 auto;
  padding-top: 28px;
  border-top: 1px solid var(--border);
  display: flex; justify-content: space-between; align-items: center;
  gap: 24px; flex-wrap: wrap;
}
.lv6-foot-x-legal { font-size: 12px; color: var(--text-2); display: flex; flex-wrap: wrap; }
.lv6-foot-x-legal a { color: var(--text-2); transition: color 140ms; }
.lv6-foot-x-legal a:hover { color: var(--text); }
.lv6-foot-x-sep { color: var(--text-3); padding: 0 4px; }
.lv6-foot-x-copyright {
  font-family: var(--mono); font-size: 10px; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--text-3);
}

/* ══════════════════════════════════════════════════════════════
   MOTION + RESPONSIVE
   ══════════════════════════════════════════════════════════════ */
@media (prefers-reduced-motion: reduce) {
  .lv6 [data-reveal] { opacity: 1; transform: none; transition: none; }
  .lv6 *, .lv6 *::before, .lv6 *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ══════════════════════════════════════════════════════════════
   MOBILE SCROLL PERFORMANCE
   Mobile GPUs repaint expensive filters every frame while the
   backdrop content moves under a sticky element. Two classic
   culprits on landing-v6:
     1. The nav's backdrop-filter: blur(14px). Swap for a solid
        bg on touch devices — you can't see through a sticky nav
        on a 375px screen anyway.
     2. content-visibility: auto on offscreen sections lets the
        browser skip layout + paint work for anything far above
        or below the viewport. Massive CPU saving on long pages.
   ══════════════════════════════════════════════════════════════ */
@media (hover: none) and (pointer: coarse) {
  /* Drop the backdrop blur on touch devices — it was burning GPU
     cycles every scroll frame for a saturate effect nobody can see
     on a phone. Solid bg is cheaper AND more legible. */
  .lv6-nav {
    background: var(--bg);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  /* content-visibility: auto tells the browser to skip rendering
     for offscreen sections entirely. contain-intrinsic-size gives
     a rough height hint so the scroll position doesn't jitter as
     sections promote from skipped → rendered.
     Applied only to sections below the fold (s1 hero always
     renders so we skip it here). */
  .lv6-s2, .lv6-v5, .lv6-lsuite, .lv6-splat, .lv6-s6, .lv6-s7 {
    content-visibility: auto;
    contain-intrinsic-size: 1px 1200px;
  }
}

/* Smooth anchor-scroll for same-page jumps (jump chips, skip-link,
   CTAs that scroll to a section). Has to be on html (the scroll
   container), not .lv6. Applies site-wide but only matters when
   there's a hash/anchor navigation — no effect on regular wheel
   scrolling. Respects prefers-reduced-motion via the landing-v6
   override above. */
html:has(.lv6) { scroll-behavior: smooth; }

@media (max-width: 980px) {
  /* Drop backdrop-filter on mobile nav — blur(14px) + saturate(150%) on a
     sticky element is the single most expensive composite layer on this
     page and it re-rasterizes on every scroll frame, producing the
     "stop-then-scroll feels jittery" user reports on older iPhones +
     mid-tier Androids. Solid bg matches the adjacent hero color closely
     enough that the backdrop-filter effect isn't missed visibly. */
  .lv6-nav {
    padding: 10px 16px; gap: 12px;
    background: var(--bg);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  /* Promote the hero to its own compositor layer so scroll doesn't
     re-rasterize the skyline + sun/moon every frame. One-time layer
     creation on mount; after that, scroll is pure composite shift. */
  .lv6-s1 { will-change: transform; transform: translate3d(0, 0, 0); }
  .lv6-nav-links, .lv6-nav-meta, .lv6-nav-signin { display: none; }
  .lv6-nav-burger { display: inline-flex; }
  /* Nav CTA on mobile — 44px min tap target. 12px padding + 12px line-height
     + 13px font ≈ 44px total. Also bumped from 12px→13px for legibility. */
  .lv6-nav-cta { padding: 12px 16px; font-size: 13px; }
  /* Defensive: if the mega menu ever becomes visible at a tablet width
     (desktop JS still running, user resized), constrain it to the viewport
     so it can never cause horizontal overflow. Primary control is that the
     nav link that triggers it is display:none here, but this is belt-and-
     suspenders for edge cases. */
  .lv6-mega, .lv6-foryou { min-width: 0; max-width: calc(100vw - 32px); }
  /* Jump chips — 44px min tap target (WCAG 2.2 AA) in the sticky filter
     strip. Slightly smaller font than desktop so the 6-chip row stays on
     two lines instead of wrapping unpredictably. */
  .lv6 .lv6-v5-jump-chip { padding: 12px 16px; font-size: 12px; min-height: 44px; }

  /* Drop min-height on mobile so 100svh fits exactly — bottom of hero sits
     at the bottom of the visible viewport, no accidental overflow into
     the next section on iPhone SE / short Android screens. */
  .lv6-s1 { min-height: 0; }

  /* Mobile sky light reach — per 2026-04-22 user feedback: on mobile
     portrait the sun/moon glow felt trapped in the upper half of the
     hero, leaving the search bar area in near-black. Scaling the glow
     elements up so vmin-sized circles extend past the tall narrow
     viewport and ambient warmth reaches the lower third.
       - sun-halo / moon-glow: ~1.6× larger radius so the falloff tail
         carries further down the screen
       - moonlight ellipse: wider + taller + positioned slightly higher
         so its lower edge warms the search zone, not the sky
       - bloom: wider sweep so the orange highlight doesn't clip as the
         sun crosses the screen
     Desktop choreography untouched. */
  .lv6-s1-sun-halo {
    width: 140vmin; height: 140vmin;
    margin: -70vmin 0 0 -70vmin;
  }
  .lv6-s1-moon-glow {
    width: 100vmin; height: 100vmin;
    margin: -50vmin 0 0 -50vmin;
  }
  .lv6-s1-moonlight {
    background: radial-gradient(ellipse 120vw 95vh at 50% 40%,
      oklch(74% 0.04 235 / 0.22) 0%,
      oklch(62% 0.03 230 / 0.10) 35%,
      transparent 85%);
  }
  .lv6-s1-bloom {
    left: -32%; width: 110vw; height: 48vh;
  }

  /* Mobile skyline — keep the desktop day/night cycle on, just tune the
     filter values so the midtown silhouette still reads on a 375px screen.
     Prior behavior (brightness 0.88 + mix-blend-mode normal + animation
     none) rendered the photo as an opaque bright-daytime image that sat
     on top of the sun/moon layers (z-index 4 over z-index 2) and hid the
     entire hero animation. Restoring multiply + a slightly lifted but
     still-darkened baseline lets the sun/moon glow through the photo
     exactly like desktop, but with enough brightness headroom that the
     building edges don't disappear. */
  .lv6-s1-skyline {
    background-position: center 60%;
    filter: saturate(0.3) brightness(0.72) contrast(1.6) hue-rotate(10deg);
    opacity: 0.88;
    mix-blend-mode: multiply;
    /* animation stays inherited from the desktop rule — day/night cycle on */
  }
  .lv6-s1-skyline-fallback {
    opacity: 0.9;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.6) 30%, black 55%);
            mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.6) 30%, black 55%);
  }

  /* Mobile hero rhythm — mirrors desktop proportions so the layout feels
     balanced, not bottom-heavy. Prior 20/28/36% cluster sat too high
     and left a dead zone between "We keep watch." and the search bar.
     New stack: upper 26% → thread 40% → lower 50%. Headline cluster
     centers around 38-55% of viewport, search+caption sit at bottom
     with a clean visible gap between the two zones. */
  /* Lifted from 26/40/50 → 18/32/42 per user request to move all mobile
     content up. Pairs with the raised bottom stack (search bottom 140,
     caption bottom 48) so the headline cluster + search zone share the
     vertical space more evenly instead of feeling bottom-weighted. */
  .lv6-s1-headline-upper { top: 18%; left: 20px; right: 20px; font-size: clamp(36px, 10vw, 64px); }
  .lv6-s1-headline-lower { top: 42%; left: 20px; right: 20px; font-size: clamp(36px, 10vw, 64px); }
  .lv6-s1-thread { display: block; top: 32%; height: 70px; }
  .lv6-s1-thread path { stroke-width: 1; filter: drop-shadow(0 0 4px var(--amber)) drop-shadow(0 0 12px color-mix(in oklch, var(--amber) 35%, transparent)); }

  /* Keep roughly HALF the sparkles on mobile — full 20 clustered on a
     375px screen, but users liked the atmosphere the dots add. Hide
     every other sparkle so we're left with ~10 spread across the
     scene. */
  .lv6-s1-sparkles .lv6-sparkle:nth-child(2n) { display: none; }

  /* Thread timeline dots — with preserveAspectRatio=none the SVG viewBox
     (1800-unit width) is crushed down to 375px, squishing the 6 dots
     too close together. Hide dots 2 and 5 on mobile so the remaining
     4 (positions 1,3,4,6) have breathing room. */
  .lv6-s1-thread .ev:nth-child(3),
  .lv6-s1-thread .ev:nth-child(6) { display: none; }

  /* Bottom stack on mobile — further lifted + centered caption + nudge
     the orange "SEARCH 9.6M+ PARCELS" label 4px off the left edge.
     Desktop unchanged. User feedback 2026-04-21: "move search + below a
     little higher"; "push label 4px away from left"; "caption centered". */
  .lv6-s1-search {
    left: 20px; right: 20px; bottom: 180px; max-width: none;
  }
  .lv6-s1-search input { font-size: 16px; padding: 14px 16px; }  /* 16px avoids iOS zoom-on-focus */
  /* Label stays left-aligned (SearchBar's align="start" inline style wins
     specificity anyway); add 4px indent so the orange dot sits slightly
     off the input edge instead of flush against it. */
  .lv6 .rw-search-label {
    font-size: 9px;
    opacity: 0.9;
    margin-top: 2px;
    padding-left: 4px;
  }

  .lv6-s1-caption {
    left: 20px; right: 20px; bottom: 88px;
    flex-direction: column; gap: 4px;
    align-items: center;
    text-align: center;
    font-size: 10px; line-height: 1.3; color: var(--text-2);
  }
  /* "nationwide expansion soon" gets its own line on mobile: drop the
     inline border-left/padding-left from the desktop version so it
     reads as a clean second-row note, not a sidecar to the state list. */
  .lv6-s1-caption-soon {
    display: block;
    margin-left: 0;
    padding-left: 0;
    border-left: none;
    font-size: 9px;
    opacity: 0.85;
    text-align: center;
  }
  /* Hide the decorative "Scroll" text + animated dot on mobile — hero
     already fits 100svh and mobile users know to scroll. Keeping the
     DOM around only adds clutter at the viewport bottom. */
  .lv6-s1-scroll { display: none; }

  /* Mobile: match the edge-to-edge behaviour of the desktop rule — no
     horizontal section padding; .lv6-s2-content gets its own 20px gutter
     so headline breathes without clipping text on a 375px phone. */
  .lv6-s2 { padding: 80px 0 72px; }
  .lv6-s2-content { padding: 0 20px; }
  .lv6-s2-grid { grid-template-columns: repeat(28, 1fr); grid-template-rows: repeat(22, 1fr); }
  .lv6-s2-headline { font-size: clamp(30px, 8vw, 56px); }
  .lv6-s2-legend { gap: 14px; font-size: 9px; }

  .lv6-v5 { padding: 80px 20px 64px; }
  .lv6-v5-intro { margin-bottom: 40px; }
  .lv6-v5-jump { margin: 4px -20px 0; padding: 8px 20px; overflow-x: auto; flex-wrap: nowrap; scrollbar-width: none; }
  .lv6-v5-jump::-webkit-scrollbar { display: none; }
  .lv6 .lv6-v5-jump-chip { flex-shrink: 0; }
  .lv6-v5-stage { padding-right: 10px; padding-bottom: 10px; }
  .lv6-v5-stage-edge-1 { transform: translate(5px, 5px); }
  .lv6-v5-stage-edge-2 { transform: translate(10px, 10px); }
  .lv6-v5-stage-edge-1:hover { transform: translate(7px, 7px); }
  .lv6-v5-stage-edge-2:hover { transform: translate(13px, 13px); }
  .lv6-v5-pane .lv6-v5-block { padding: 32px 18px; min-height: 0; }
  .lv6-v5-pager { padding: 0 18px; gap: 8px; margin-top: 14px; }
  .lv6-v5-pager-btn { font-size: 12px; gap: 8px; }
  .lv6-v5-pager-name { max-width: 60px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .lv6-v5-pager-pos { font-size: 10px; }
  .lv6-v5-pager-pos-num { font-size: 12px; }
  .lv6-v5-bh-hint { display: none; }
  .lv6-v5-split { grid-template-columns: 1fr; gap: 28px; }
  .lv6-v5-num { font-size: clamp(56px, 16vw, 96px); }
  .lv6-v5-ll97-readout { grid-template-columns: 1fr; gap: 8px; }
  .lv6-v5-flipper-wrap { min-height: 300px; }
  .lv6-v5-flipper { max-width: 320px; height: 300px; }

  .lv6-lsuite { padding: 80px 20px 64px; }
  .lv6-lsuite-intro { margin-bottom: 40px; }
  .lv6-lsuite-grid { grid-template-columns: 1fr 1fr; }
  .lv6-lsuite-card { min-height: 240px; padding: 22px 20px 18px; }

  .lv6-splat { padding: 80px 20px 64px; }
  .lv6-splat-intro { margin-bottom: 40px; }
  .lv6-splat-demos-row { grid-template-columns: 1fr; }
  .lv6-splat-grid { grid-template-columns: 1fr; gap: 16px; }
  .lv6-splat-cat-cells { grid-template-columns: 1fr; }

  .lv6-s6 { padding: 80px 20px 64px; }
  .lv6-s6-headline { margin-bottom: 40px; }
  .lv6-s6-steps { grid-template-columns: 1fr; gap: 28px; margin-bottom: 48px; padding-top: 32px; }
  .lv6-s6-step-name { font-size: 22px; }
  .lv6-s6-step-body { font-size: 13px; }
  .lv6-s6-promises { grid-template-columns: 1fr; }
  .lv6-s6-promise { padding: 28px 20px; }
  .lv6-s6-promise-do { border-right: none; border-bottom: 1px solid var(--border); }

  .lv6-s7 { padding: 64px 20px 28px; }
  .lv6-s7-headline { font-size: clamp(52px, 16vw, 88px); margin-bottom: 32px; }
  .lv6-s7-input-wrap { flex-wrap: wrap; padding: 10px; gap: 8px; }
  .lv6-s7-input { width: 100%; padding: 12px; font-size: 15px; }
  .lv6-s7-button { flex: 1; padding: 12px 16px; }
  .lv6-s7-preview-body { grid-template-columns: 1fr; padding: 20px; gap: 16px; }
  /* Media row on mobile — flip to row layout so street view + map sit
     side-by-side instead of stacking. Keeps the card height close to
     one screen; stacked would push the address + grid below the fold. */
  .lv6-s7-preview-media { flex-direction: row; gap: 8px; }
  .lv6-s7-preview-media .lv6-s7-preview-img { flex: 1; max-width: none; }
  .lv6-s7-preview-img { max-width: 240px; }
  .lv6-s7-preview-gate { grid-template-columns: 1fr; gap: 18px; padding: 20px; }
  .lv6-s7-gate-divider { display: none; }
  .lv6-s7-gate-signup { border-top: 1px solid color-mix(in oklch, var(--amber) 30%, transparent); padding-top: 14px; }

  .lv6-foot { padding: 32px 20px 20px; flex-direction: column; align-items: flex-start; gap: 20px; }

  /* Footer (expanded) responsive */
  /* Tight mobile footer — round 2. Each link row now ~18-20px tall instead
     of ~24-28px, cutting the total footer height roughly in half. Prior
     gap 6px + line-height 1.3 left visible airy gaps between links;
     gap 3px + line-height 1.2 tightens rows without clipping descenders.
     Col-head margin + padding-top also trimmed. */
  .lv6-foot-x { padding: 20px 16px 12px; }
  .lv6-foot-x-top { grid-template-columns: 1fr; gap: 14px; margin-bottom: 18px; }
  .lv6-foot-x-brand { max-width: none; }
  .lv6-foot-x-tag { font-size: 11px; line-height: 1.35; }
  .lv6-foot-x-nav { grid-template-columns: repeat(3, 1fr); gap: 14px 10px; }
  .lv6-foot-x-seo { grid-template-columns: repeat(3, 1fr); gap: 14px 10px; padding-top: 14px; margin-top: 0; }
  .lv6-foot-x-col-head { font-size: 9px; margin-bottom: 6px; letter-spacing: 0.12em; }
  .lv6-foot-x-nav ul, .lv6-foot-x-seo ul { gap: 3px; }
  .lv6-foot-x-nav a, .lv6-foot-x-seo a { font-size: 11px; line-height: 1.2; padding: 1px 0; }
  .lv6-foot-x-bottom { flex-direction: column; align-items: flex-start; gap: 6px; padding-top: 12px; font-size: 10px; }

  /* Scope dropdown on mobile: scope + Open share the row under the input */
  .lv6-s7-scope { flex: 1; }
  .lv6 .lv6-s7-scope-trigger { width: 100%; padding: 12px 10px; font-size: 11px; min-width: unset; }
  .lv6-s7-scope-menu { left: 0; right: 0; min-width: unset; }
}

@media (max-width: 560px) {
  .lv6-v5-num { font-size: clamp(48px, 18vw, 80px); }
  .lv6-lsuite-grid { grid-template-columns: 1fr; }
  .lv6-lsuite-card { min-height: 220px; }
  .lv6-s7-headline { font-size: clamp(44px, 16vw, 72px); }
}
