/* home.css — THE HOMEPAGE ONLY (site/index.html), DISPATCH-2026-10-02d "stunning pass".
 *
 * ⭐ WHY A SEPARATE FILE AND NOT site/styles.css: styles.css is loaded by every marketing page and each page
 * versions it (`styles.css?v=`), so a homepage rebuild in it would be a cache-bust on twenty pages and a
 * regression surface on all of them. This file is loaded by index.html alone. Everything here is scoped under
 * `.home2` (the homepage <body>), so even a later page that loads it by mistake is untouched.
 *
 * ⚖️ THE VISUAL SOURCE OF TRUTH is wiki/design/adperch-homepage-2026-10-02.html. Layout, sizes and colours are
 * ported from it; the motion rules below are its animation rules, scoped, with every keyframe renamed `hp-*` so a
 * future `@keyframes pulse` in styles.css cannot silently take one over.
 * ⛔ KEYFRAMES ARE REFERENCED FROM CLASS RULES, NEVER FROM AN INLINE `style="animation:…"` — the dispatch's own
 * implementation note: inline references failed to run in the mockup. Inline styles in the markup carry only a
 * per-element `animation-delay` or `offset-path`.
 *
 * ⚠ THE HOOKS THE SCRIPTS NEED KEEP THEIR OLD NAMES — `.hero-scene`, `.hero-scene-inner`, `.town-drop`,
 * `.hero-drop-cap`, `#scene-replay`, `#iso-scene`, `[data-role]`, `.btn-role-action`. Their styles.css rules
 * still apply and are overridden here where the new design differs (the dashed panel is gone, for one).
 */

.home2 {
  --hp-ink: #2b2420;
  --hp-cream: #f5f2ec;
  --hp-card: #fffdf9;
  --hp-line: #e2dbd1;
  --hp-muted: #5f554d;
  --hp-terra: #c65a36;
  --hp-terra-ink: #a9472a;
  --hp-dark: #1f1a17;      /* ⚖️ both dark bands: the warm brown-black, never a cool grey */
  --hp-gold: #c49a63;
  --hp-sage: #aec493;
  --hp-mono: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, monospace;
  background: var(--hp-cream);
  color: var(--hp-ink);
}
.home2 main { font-family: Inter, system-ui, sans-serif; color: var(--hp-ink); overflow-x: clip; line-height: normal; }
.home2 main p { margin: 0; }
.home2 main h1, .home2 main h2, .home2 main h3 { margin: 0; }
.home2 main a { color: var(--hp-terra-ink); }
.home2 main a:hover { color: #7e3218; }

.home2 .hp-wrap { max-width: 1200px; margin: 0 auto; padding: 0 24px; box-sizing: border-box; position: relative; }
.home2 .hp-kick { font: 500 12px/1 var(--hp-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--hp-terra-ink); margin-bottom: 16px; }
.home2 .hp-dk .hp-kick { color: #e8906c; }
.home2 .hp-h2 { font: 600 clamp(36px, 4.4vw, 56px)/1.06 'Playfair Display', Georgia, serif; letter-spacing: -.01em; }
.home2 .hp-h2-xl { font: 600 clamp(40px, 5.6vw, 76px)/1.02 'Playfair Display', Georgia, serif; letter-spacing: -.015em; }
.home2 .hp-h2 em, .home2 .hp-h2-xl em, .home2 .hp-h1 em { font-style: italic; font-weight: 500; color: var(--hp-terra); }
.home2 .hp-section { padding: 104px 0; }
@media (max-width: 640px) { .home2 .hp-section { padding: 72px 0; } }

.home2 .lift { transition: transform .2s ease, box-shadow .2s ease; }
.home2 .lift:hover { transform: translateY(-5px); box-shadow: 0 22px 40px -22px rgba(43, 36, 32, .55); }

/* ══ 1 · HEADER ═══════════════════════════════════════════════════════════════════════════════════════════
   The live nav is kept as it is (Co-founders, the phone menu from nav-menu.js, the Sign up modal); only its
   ground matches the cream page. */
.home2 nav.nav { background: var(--hp-cream); }

/* ══ 2 · HERO ═════════════════════════════════════════════════════════════════════════════════════════════ */
.home2 .hp-hero {
  position: relative; overflow: hidden; padding: 64px 0 84px;
  background-color: var(--hp-cream);
  background-image: radial-gradient(900px 620px at 78% 52%, rgba(240, 164, 127, .28), rgba(240, 164, 127, 0) 70%),
                    radial-gradient(#e2dbd1 1.1px, transparent 1.2px);
  background-size: auto, 22px 22px;
}
.home2 .hp-hero-grid { display: flex; flex-wrap: wrap; align-items: center; gap: 40px; z-index: 1; }
.home2 .hp-hero-copy { flex: 1 1 500px; min-width: 0; position: relative; z-index: 2; }
.home2 .hp-beta { display: flex; align-items: center; margin-bottom: 22px; }
.home2 .beta-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: #6c8c54; margin-right: 10px;
  box-shadow: 0 0 0 0 rgba(108, 140, 84, .6); animation: hp-bdot 2s ease-out infinite; }
@keyframes hp-bdot { 70% { box-shadow: 0 0 0 8px rgba(108, 140, 84, 0); } 100% { box-shadow: 0 0 0 0 rgba(108, 140, 84, 0); } }
/* ⚖️ THE LIVE SIZING, NOT THE MOCKUP'S (Bret's Oct 1 ruling, restated in the dispatch): about 3.3rem, 17ch,
   balanced, which is three lines at 1280 and 1440. The mockup's clamp(40px, 4.4vw, 62px) makes four. */
.home2 .hp-h1 { font: 600 2.1rem/1.1 'Playfair Display', Georgia, serif; letter-spacing: -.015em; max-width: 18ch; text-wrap: balance; color: var(--hp-ink); }
@media (min-width: 768px) { .home2 .hp-h1 { font-size: 3.3rem; max-width: 17ch; line-height: 1.06; } }
.home2 .hp-hero-sub { font-size: 22px; line-height: 1.5; color: var(--hp-muted); margin-top: 24px; max-width: 34ch; }
@media (max-width: 640px) { .home2 .hp-hero-sub { font-size: 19px; margin-top: 18px; } }
.home2 .hp-help { margin-top: 18px; font-size: 16px; color: #6a6058; }
.home2 .hp-help + .hp-help { margin-top: 8px; font-size: 15px; }
.home2 .hp-help a { font-weight: 600; }

/* ── The doors: ONE component, two sizes ────────────────────────────────────────────────────────────────
   ⚖️ The hero's 2×2 and the closer's wide row are the same markup with the same colours per role; only the
   container class sizes them. ⚠ The buttons keep `data-role` / `data-opener` (main.js opens the modal from
   them) and `.btn-role-action` exactly (scripts/check-door-copy.mjs reads the action through that class). */
.home2 .hp-doors { display: grid; gap: 12px; }
.home2 .door {
  position: relative; display: flex; align-items: center; gap: 14px; width: 100%;
  padding: 12px 18px; border-radius: 12px; min-height: 0; box-sizing: border-box; margin: 0;
  border: 2px solid transparent; text-align: left; font: inherit; cursor: pointer;
  transition: transform .2s ease, box-shadow .2s ease;
}
.home2 .door:hover { transform: translateY(-5px); box-shadow: 0 22px 40px -22px rgba(43, 36, 32, .55); }
.home2 .door:active { transform: translateY(-1px); }
.home2 .door:focus-visible { outline: 3px solid var(--hp-terra); outline-offset: 3px; }
.home2 .door-fig { flex: none; width: 24px; display: inline-flex; justify-content: center; }
.home2 .door-fig svg { width: 100%; height: auto; display: block; }
.home2 .door-fig-wide { width: 30px; }
.home2 .door-body { display: block; min-width: 0; }
.home2 .door-word { display: block; margin-top: 6px; font: 600 23px/1.1 'Playfair Display', Georgia, serif; white-space: nowrap; }
.home2 .door .btn-role-action { display: block; margin-top: 2px; font: 500 14.5px/1.3 Inter, sans-serif; white-space: nowrap; color: inherit; }
.home2 .door-tag { position: absolute; top: 8px; right: 12px; font: 500 11.5px/1 Inter, sans-serif; opacity: .7; pointer-events: none; white-space: nowrap; }
.home2 .door-founder { background: var(--hp-gold); color: var(--hp-ink); }
.home2 .door-vc { background: #2e2421; border-color: #5a524c; color: var(--hp-cream); }
.home2 .door-vc .door-word, .home2 .door-vc .door-tag { color: var(--hp-sage); }
.home2 .door-vc .door-tag { opacity: .85; }
.home2 .door-community { background: var(--hp-sage); color: var(--hp-ink); }
.home2 .door-community .btn-role-action { color: #8a3f22; }
.home2 .door-cofounder { background: #f1e7dc; border-color: var(--hp-terra); color: var(--hp-ink); }
.home2 .door-cofounder .btn-role-action { color: #8a3f22; }

.home2 .hp-doors-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 34px; max-width: 600px; }
@media (max-width: 520px) { .home2 .hp-doors-2 { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .home2 .hp-doors-2 .door { padding: 16px 20px; } }

/* the closer's row: wide and short, ~1340px across, ~88px tall */
.home2 .hp-doors-4 {
  grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; margin-top: 48px; text-align: left; position: relative; z-index: 1;
  width: min(1340px, calc(100vw - 64px)); margin-left: 50%; transform: translateX(-50%);
}
.home2 .hp-doors-4 .door { padding: 14px 22px; gap: 16px; min-height: 88px; }
.home2 .hp-doors-4 .door-fig { width: 26px; }
.home2 .hp-doors-4 .door-fig-wide { width: 32px; }
.home2 .hp-doors-4 .door-word { font-size: 26px; }
.home2 .hp-doors-4 .btn-role-action { font-size: 15.5px; }
.home2 .hp-doors-4 .door-tag { top: 9px; right: 14px; font-size: 12.5px; }
@media (max-width: 1100px) { .home2 .hp-doors-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .home2 .hp-doors-4 { grid-template-columns: 1fr; width: calc(100vw - 32px); } }

/* ── The Pips (DISPATCH-2026-10-03d): Percy's helpers, flying the hero's top and bottom bands, behind everything.
   One canvas filling the hero, drawn by /pips.js. ⭐ The canvas IS the hero's box and every lane sits a full pip
   inside it, so nothing is cut at a corner (the old floaters were placed by percentage and drifted off the edge). */
.home2 .hp-pips { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 0; }
/* ⚖️ "They stay off the headline and copy column." Round 3 (Bret 2026-10-03): visible in the first screen at EVERY size,
   phones included — /pips.js finds the free stretches (on a phone, the band above the eyebrow) and draws at most two. */

/* ── The town: frameless, larger, bleeding off the right edge on wide screens ────────────────────────── */
.home2 .hp-town { flex: 1 1 520px; min-width: 0; position: relative; }
/* ⛔ THE DASHED PANEL IS GONE (dispatch §2: "Remove the dashed panel border"). styles.css still draws it for the
   class, so every panel property is reset here rather than renamed — `.hero-scene` is main.js's hook. */
.home2 .hero-scene { max-width: none; border: 0; padding: 0; border-radius: 0; background: none; box-shadow: none; }
.home2 .hero-scene.is-over, .home2 .hero-scene.is-hinted { border: 0; background: none; box-shadow: none; }
.home2 .hero-scene:focus-visible { outline: 2px solid var(--hp-terra); outline-offset: 6px; border-radius: 12px; }
.home2 .hp-townwrap { position: relative; width: 118%; margin-right: -18%; cursor: pointer; }
@media (max-width: 1000px) { .home2 .hp-townwrap { width: 100%; margin-right: 0; } }
.home2 .hp-stack { position: relative; }
.home2 .hp-stack #iso-scene { position: relative; z-index: 1; filter: drop-shadow(0 40px 50px rgba(43, 36, 32, .18)); }
.home2 .hp-pixels { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; pointer-events: none; }
/* ⭐ PIXEL STATE: the canvas paints the town BEHIND the SVG and the SVG shows only the drop edge, so the dotted
   edge and the chip stay sharp above the pixels. `is-px` is set by home.js while the canvas is showing. */
.home2 .hp-stack.is-px #scene-cam > :not(.dropring) { opacity: 0; }
.home2 .hp-stack.is-px #iso-scene { filter: none; }
/* ⚠ the deck-read moment dims the town (styles.css `.hero-scene.is-reading #iso-scene`); the drop shadow above
   outranks that selector, so the dim is restated here with the shadow kept */
.home2 .hero-scene.is-reading .hp-stack #iso-scene { filter: saturate(.35) brightness(.62) drop-shadow(0 40px 50px rgba(43, 36, 32, .18)); transition: filter .5s ease; }
.home2 .hero-scene.is-read .hp-stack #iso-scene { transition: filter .6s ease; }
.home2 .hp-town-foot .deck-reading { justify-content: center; }
/* the drop edge: a dotted terracotta outline on the ground edge, marching slowly */
.home2 .dropring { animation: hp-dring 3s linear infinite; transition: fill .2s; }
@keyframes hp-dring { to { stroke-dashoffset: -40; } }
.home2 .hp-townwrap:hover .dropring, .home2 .hero-scene.is-over .dropring { fill: rgba(198, 90, 54, .12); }
/* the chip floats over the fountain */
.home2 .town-drop {
  top: 60%; padding: 12px 20px; gap: 9px; border-radius: 999px; background: var(--hp-card); color: #8a3f22;
  font-size: 16px; font-weight: 700; box-shadow: 0 10px 30px rgba(43, 36, 32, .18), 0 0 0 4px rgba(198, 90, 54, .12);
  animation: hp-chipf 3.4s ease-in-out infinite;
}
@keyframes hp-chipf { 50% { transform: translate(-50%, calc(-50% - 5px)); } }
.home2 .hp-town-foot { text-align: center; margin-top: -6px; position: relative; z-index: 2; }
.home2 .hp-town-foot .hero-drop-cap { margin: 0; font-size: 16px; color: var(--hp-muted); }
.home2 .hp-town-foot .hero-drop-free { background: #e3ead8; color: #55703f; border-radius: 999px; padding: 3px 9px; font-size: 13px; white-space: nowrap; }
.home2 .scene-watch { display: inline-block; margin: 16px auto 0; border: 1.5px solid var(--hp-terra); color: var(--hp-terra); border-radius: 10px;
  padding: 11px 24px; font-weight: 600; background: rgba(255, 253, 249, .7); }
.home2 .scene-watch[hidden] { display: none; }
.home2 .scene-watch:hover { background: var(--hp-terra); color: #fff; }
/* ══ HERO FIT, ROUND 2 (Bret 2026-10-02): the hero FILLS the window, it does not merely fit inside it. Round 1
   (799266e1) shrank everything to fit 1280×720 and on a MacBook Chrome window it ended ~120px short, with the next
   section's band showing underneath. Now, from 900px wide up (phones and narrow tablets keep the layout above):
   · min-height = the window minus the sticky header, so the next section starts exactly at the fold. 100vh first, then
     100dvh, then 100svh — each line overrides the last only where the browser understands it.
   · ⭐ THE HEADER HEIGHT IS A VARIABLE, NOT A NUMBER: --hp-nav-h defaults to the header's measured 62px and home.js
     re-measures the real header on load and resize, so a header change cannot leave a gap or push the hero past the fold.
   · capped at 1100px (Bret said ~1000; 1000 would show an 18px band at 1920×1080, whose fill is 1018) so a huge monitor gets a centred hero, not a stretched one.
   · type, doors and the town scale with HEIGHT between the round-1 compact sizes (720 tall) and the large look
     (1100+ tall); the two columns are centred vertically in whatever height there is. */
.home2 { --hp-nav-h: 62px; }
@media (min-width: 900px) {
  .home2 .hp-hero {
    --hp-fill: min(calc(100vh - var(--hp-nav-h)), 1100px);
    --hp-fill: min(calc(100dvh - var(--hp-nav-h)), 1100px);
    --hp-fill: min(calc(100svh - var(--hp-nav-h)), 1100px);
    min-height: var(--hp-fill);
    display: flex; flex-direction: column; justify-content: center;
    padding: clamp(16px, 3vh, 40px) 0;
  }
  /* wider on big windows so a 72px headline keeps its three lines */
  .home2 .hp-hero .hp-hero-grid { width: 100%; max-width: clamp(1200px, 82vw, 1440px); gap: clamp(32px, 3vw, 56px); align-items: center; }
  .home2 .hp-hero-copy { flex: 1 1 420px; }
  .home2 .hp-town { flex: 1 1 360px; }
  .home2 .hp-beta { margin-bottom: clamp(10px, 2vh, 24px); }
  .home2 .hp-h1 { font-size: clamp(44px, 6.2vh, 72px); }
  .home2 .hp-hero-sub { font-size: clamp(19px, 2.2vh, 24px); margin-top: clamp(10px, 2vh, 24px); }
  .home2 .hp-doors-2 { gap: clamp(10px, 1.3vh, 16px); margin-top: clamp(16px, 3.2vh, 40px); max-width: clamp(600px, 44vw, 680px); }
  .home2 .hp-doors-2 .door { min-height: clamp(72px, 8.6vh, 96px); padding: 10px clamp(16px, 1.6vh, 22px); }
  .home2 .hp-doors-2 .door-word { font-size: clamp(22px, 2.6vh, 28px); margin-top: 4px; }
  .home2 .hp-doors-2 .btn-role-action { font-size: clamp(14px, 1.45vh, 16px); }
  .home2 .hp-doors-2 .door-tag { font-size: clamp(11.5px, 1.15vh, 13px); }
  .home2 .hp-hero .hp-help { margin-top: clamp(10px, 2vh, 24px); font-size: clamp(15.5px, 1.6vh, 17px); }
  .home2 .hp-hero .hp-help + .hp-help { margin-top: 4px; font-size: clamp(15px, 1.5vh, 16px); }
  /* ⭐ the town is sized by HEIGHT: the fill height less ~210px for the caption, the button and the padding, at the
     SVG's 760:600 ratio — and never wider than its bleed width. The same width sets the caption's pull-up (the SVG's
     ground ends ~11% of its width above its bottom edge), so the caption always lands 8px under the ground. */
  .home2 .hp-town { --hp-town-w: min(118%, calc((var(--hp-fill) - 210px) * 760 / 600)); }
  .home2 .hp-townwrap { width: var(--hp-town-w); margin-left: auto; margin-right: auto; }
  .home2 .hp-town-foot { margin-top: calc(-0.11 * var(--hp-town-w) + 8px); }
  .home2 .hp-town-foot .hero-drop-cap { font-size: clamp(15px, 1.6vh, 17px); }
  .home2 .scene-watch { margin-top: 12px; padding: clamp(9px, 1.1vh, 12px) clamp(20px, 2vh, 26px); }
}
@media (min-width: 900px) and (max-width: 1000px) {
  /* the old ≤1000 rule un-bleeds the town for a stacked layout; at 900–1000 the columns are now side by side */
  .home2 .hp-townwrap { width: min(100%, var(--hp-town-w)); }
}
@media (min-width: 900px) and (max-width: 1099px) {
  /* narrow side-by-side: the doors get the width (the town is height-capped anyway), and the 2×2 cards drop their title
     below the corner tag so "Co-founder" and "Free to start" cannot collide */
  .home2 .hp-hero-copy { flex: 1 1 470px; }
  .home2 .hp-town { flex: 1 1 300px; }
  .home2 .hp-doors-2 .door { padding-top: 22px; gap: 12px; }
  .home2 .hp-doors-2 .door-word { font-size: 21px; margin-top: 0; }
}

/* the deck-read result replaces the town in place; give it the column's room */
.home2 .hp-town .deck-card { margin: 0 auto; max-width: 520px; }

/* ══ 3 · WARM PATHS, NOT COLD LISTS ═════════════════════════════════════════════════════════════════════ */
.home2 .hp-why { background: linear-gradient(90deg, #e3e6e8 0%, #ebe5dc 48%, #f4dccd 100%); overflow: hidden; }
.home2 .hp-why .hp-cold { color: #7d858d; }
.home2 .hp-why-card { margin-top: 44px; background: rgba(255, 253, 249, .55); border: 1px solid rgba(43, 36, 32, .08); border-radius: 28px;
  padding: 18px 10px; box-shadow: 0 40px 80px -50px rgba(43, 36, 32, .45); backdrop-filter: blur(4px); }
.home2 .hp-why-card svg { display: block; width: 100%; height: auto; }
/* ⚖️ ON A PHONE THE WIDE SCENE STACKS, COLD OVER WARM (Bret 2026-10-01, the ruling the old diagram carried).
   At 390px the 1200-wide drawing shrinks its labels to ~4px. The two phone views are <use> clones of the same
   drawing cropped by viewBox, so there is one drawing to maintain. ⚠ The wide one is moved off-screen, not
   display:none'd — a gradient or filter inside a display:none SVG does not paint through <use> in Chrome. */
.home2 .hp-why-card .hp-why-phone { display: none; }
@media (max-width: 640px) {
  .home2 .hp-why-wide { position: absolute; width: 1px !important; height: 1px !important; overflow: hidden; left: -9999px; }
  .home2 .hp-why-card .hp-why-phone { display: block; }
  .home2 .hp-why-phone + .hp-why-phone { margin-top: 6px; border-top: 1px dashed rgba(43, 36, 32, .12); padding-top: 6px; }
}
.home2 .hp-points { display: flex; flex-wrap: wrap; gap: 28px; margin-top: 44px; }
.home2 .hp-point { flex: 1 1 260px; min-width: 0; border-top: 2px solid; padding-top: 16px; }
.home2 .hp-point h3 { font: 600 21px/1.25 'Playfair Display', Georgia, serif; }
.home2 .hp-point p { color: var(--hp-muted); margin-top: 8px; line-height: 1.55; }
.home2 .hp-trust { color: var(--hp-muted); margin-top: 28px; font-size: 15px; line-height: 1.55; }
.home2 .hp-trust a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

.home2 .mail { opacity: 0; animation: hp-mail 5.6s ease-in infinite; }
@keyframes hp-mail { 0% { offset-distance: 0%; opacity: 0; } 8% { opacity: 1; } 55% { offset-distance: 100%; opacity: 1; } 62%, 100% { offset-distance: 100%; opacity: 0; } }
.home2 .xmark { opacity: 0; animation: hp-xm 5.6s ease-out infinite; }
@keyframes hp-xm { 0%, 54% { opacity: 0; } 60% { opacity: 1; } 85%, 100% { opacity: 0; } }
/* ⚖️ RE-RULED 2026-10-04 (Bret), REVERSING 2026-10-03's "the top path carries no pip": BOTH paths carry a pip, and each
   launches from its MIDDLE node — Founder → Fund (top), Percy → Fund (bottom) — never from You, and travels RIGHT ONLY.
   The founder pip first, Percy's 1s later, both on the same 8s loop. Travel 0–38%, the fund glows ~42%, the pip fades into
   the fund as "Intro ✓" pops ~43% (holds to ~86%); then a new pip leaves the node (it starts hidden under the node's
   circle, which is drawn after it). Phones show the static end state (the scene is drawn through <use>) — ruled fine.
   ⛔ No backward motion on either path. Path pips are non-interactive (pips.js tickles only canvases carrying
   data-pips-interactive). Reduced motion: every .pulse is hidden and every .intro shown — both intros lit, no motion. */
.home2 .pulse { offset-rotate: 0deg; opacity: 0; animation: hp-pls 8s cubic-bezier(.45, 0, .35, 1) infinite; }
@keyframes hp-pls { 0% { offset-distance: 0%; opacity: 0; } 3% { opacity: 1; } 38% { offset-distance: 100%; opacity: 1; } 44%, 100% { offset-distance: 100%; opacity: 0; } }
/* ⚖️ Bret 2026-10-04 (amends the block above): BOTH PATHS IDENTICAL — node → Fund, the terracotta line draws BEHIND the pip on
   the pip's own clock and easing (travel 0–38%, so the line's front IS the pip), stays lit while "Intro ✓" shows, gone by
   ~95%. Each line carries the same delay as its pip. ⛔ Nothing from You, nothing backward, nothing crosses between paths.
   ⭐ The markup draws each line IN FULL by default (stroke-dashoffset="0"); only the running animation hides it first — so
   reduced motion (animation: none) and phones (<use>, where it does not run) both show the end state. */
.home2 .warmline path { stroke-dasharray: 100 100; stroke-dashoffset: 0; }
.home2 .warmline { opacity: 1; }
.home2 .warmline path { animation: hp-warm 8s cubic-bezier(.45, 0, .35, 1) infinite; }
@keyframes hp-warm { 0% { stroke-dashoffset: 100; } 38%, 100% { stroke-dashoffset: 0; } }
.home2 .warmline { animation: hp-warm-fade 8s ease-out infinite; }
@keyframes hp-warm-fade { 0%, 86% { opacity: 1; } 95%, 100% { opacity: 0; } }
.home2 .fundglow { animation: hp-fg 8s ease-out infinite; }
@keyframes hp-fg { 0%, 36% { opacity: 0; } 42% { opacity: .7; } 60% { opacity: .35; } 85%, 100% { opacity: 0; } }
.home2 .intro { animation: hp-intro 8s ease-out infinite; }
@keyframes hp-intro { 0%, 38% { opacity: 0; transform: scale(.7); } 43% { opacity: 1; transform: scale(1.06); } 46%, 86% { opacity: 1; transform: scale(1); } 93%, 100% { opacity: 0; transform: scale(1); } }
/* ⭐ BACKWARDS FILL: a delayed path (the bottom one, 1s) would otherwise show its RESTING state — line drawn, intro lit — for
   the length of its delay on first load. After the shorthands above, which reset it. */
.home2 .warmline, .home2 .warmline path, .home2 .intro, .home2 .fundglow, .home2 .pulse { animation-fill-mode: backwards; }
.home2 .ringw { transform-box: fill-box; transform-origin: center; animation: hp-ring 2.2s ease-out infinite; }
@keyframes hp-ring { 0% { transform: scale(.4); opacity: .75; } 100% { transform: scale(3.2); opacity: 0; } }

/* ══ 4 · NAME STRIP + FROM A DECK TO AN OPENED DOOR ════════════════════════════════════════════════════ */
.home2 .hp-demo { background: radial-gradient(1200px 500px at 50% 70%, #f6e3d7 0%, rgba(246, 227, 215, 0) 70%), var(--hp-cream); }
.home2 .hp-strip { display: flex; flex-wrap: wrap; gap: 28px; align-items: center; background: var(--hp-card); border: 1px solid var(--hp-line);
  border-radius: 22px; padding: 22px 30px; margin-bottom: 64px; }
.home2 .hp-strip > svg { flex: none; display: block; overflow: visible; }
.home2 .hp-strip-copy { flex: 1 1 520px; min-width: 0; }
.home2 .hp-strip-line { font: 600 24px/1.3 'Playfair Display', Georgia, serif; }
.home2 .hp-strip-line strong { font-weight: 600; color: var(--hp-terra-ink); }
.home2 .hp-defs { display: flex; flex-wrap: wrap; gap: 14px 28px; margin: 16px 0 0; padding-top: 16px; border-top: 1px solid var(--hp-line); }
.home2 .hp-defs > div { flex: 1 1 200px; min-width: 0; }
.home2 .hp-defs dt { font: 600 19px/1.2 'Playfair Display', Georgia, serif; color: var(--hp-terra-ink); }
.home2 .hp-defs dd { margin: 4px 0 0; font-size: 15px; color: var(--hp-muted); }
@media (max-width: 640px) { .home2 .hp-strip { padding: 20px; gap: 16px; } .home2 .hp-strip > svg { width: 110px; height: 110px; } .home2 .hp-strip-line { font-size: 21px; } }
.home2 .bob { animation: hp-bob 3s ease-in-out infinite; }
@keyframes hp-bob { 50% { transform: translateY(-2px); } }
.home2 .wave path { animation: hp-wave 2.2s ease-out infinite; }
@keyframes hp-wave { 0% { opacity: 0; } 30% { opacity: 1; } 100% { opacity: 0; transform: translateX(6px); } }

.home2 .hp-track { position: relative; height: 4px; margin: 56px 6% 0; border-radius: 4px; background: #e8dfd4; }
@media (max-width: 860px) { .home2 .hp-track { display: none; } }
.home2 .beam { position: absolute; inset: 0; border-radius: 4px; background: linear-gradient(90deg, #c65a36, #e8906c); transform-origin: left; animation: hp-beam 8s linear infinite; }
@keyframes hp-beam { 0% { transform: scaleX(0); } 95% { transform: scaleX(1); } 100% { transform: scaleX(1); opacity: 0; } }
.home2 .comet { position: absolute; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; background: #fff;
  box-shadow: 0 0 0 4px #c65a36, 0 0 24px 8px rgba(198, 90, 54, .55); animation: hp-comet 8s linear infinite; }
@keyframes hp-comet { 0% { left: 0; } 95% { left: 100%; opacity: 1; } 100% { left: 100%; opacity: 0; } }
.home2 .hp-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 18px; margin: 30px 0 0; padding: 0; list-style: none; }
.home2 .hp-step { background: var(--hp-card); border: 1px solid var(--hp-line); border-radius: 24px; padding: 26px; min-height: 310px; }
.home2 .hp-step-n { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 32px; border-radius: 16px; background: var(--hp-terra); color: #fff; font: 500 14px/1 var(--hp-mono); }
.home2 .hp-step h3 { font: 600 24px/1.2 'Playfair Display', Georgia, serif; margin-top: 16px; }
.home2 .hp-step > p { color: var(--hp-muted); margin-top: 6px; }
/* ⚖️ each card lifts and glows as the comet passes it — 2s per card on the comet's 8s */
.home2 .stepc { animation: hp-stepc 8s ease-in-out infinite; }
@keyframes hp-stepc {
  0% { box-shadow: 0 0 0 0 rgba(198, 90, 54, 0); border-color: #e2dbd1; transform: none; }
  6%, 22% { box-shadow: 0 30px 60px -30px rgba(198, 90, 54, .55), 0 0 0 2px #c65a36; border-color: #c65a36; transform: translateY(-8px); }
  30%, 100% { box-shadow: 0 0 0 0 rgba(198, 90, 54, 0); border-color: #e2dbd1; transform: none; }
}
.home2 .hp-dropzone { margin-top: 24px; border: 2px dashed #e0a58c; border-radius: 14px; background: #f8e9e1; height: 92px; display: flex; align-items: center; justify-content: center; }
.home2 .drop { display: flex; align-items: center; gap: 10px; background: var(--hp-card); border: 1px solid var(--hp-line); border-radius: 10px; padding: 10px 14px;
  box-shadow: 0 10px 20px -14px rgba(0, 0, 0, .4); font-size: 14px; animation: hp-drop 4.8s ease-in-out infinite; }
@keyframes hp-drop { 0% { transform: translateY(-30px) rotate(-6deg); opacity: 0; } 22%, 82% { transform: none; opacity: 1; } 100% { transform: none; opacity: 0; } }
.home2 .hp-fits { display: flex; flex-direction: column; gap: 12px; margin-top: 22px; }
.home2 .hp-fit-row { display: flex; justify-content: space-between; font-size: 14px; }
.home2 .hp-fit-row b { color: var(--hp-terra-ink); font-weight: 600; }
.home2 .hp-fit-track { background: #efe8df; border-radius: 3px; margin-top: 6px; }
.home2 .bar { height: 6px; border-radius: 3px; background: var(--hp-terra); animation: hp-bar 4.8s ease-in-out infinite; }
@keyframes hp-bar { 0% { width: 0; } 34%, 84% { width: var(--w, 60%); } 100% { width: 0; } }
.home2 .ra { offset-rotate: 0deg; opacity: 0; animation: hp-ra 4.8s cubic-bezier(.45, 0, .35, 1) infinite; }
@keyframes hp-ra { 0% { offset-distance: 0%; opacity: 0; } 4% { opacity: 1; } 30% { offset-distance: 100%; opacity: 1; } 36%, 100% { offset-distance: 100%; opacity: 0; } }
/* ⚖️ Row 3 "a mutual match" (Bret 2026-10-03): two Pips — the founder's (terracotta) from You, the fund's (ink) from the
   Fund — meet on the plate in the middle at 30%, their inner triangles flash sage once (/pips.js reads this animation's
   progress for that), and they REST SIDE BY SIDE, blinking, until the loop fades them at ~90%. The old two-triangle
   mark (mA/mB) is gone: the Pips meeting are the mark. */
.home2 .rm { offset-rotate: 0deg; opacity: 0; animation: hp-rm 4.8s cubic-bezier(.45, 0, .35, 1) infinite; }
@keyframes hp-rm { 0% { offset-distance: 0%; opacity: 0; } 4% { opacity: 1; } 30% { offset-distance: 100%; opacity: 1; } 86% { offset-distance: 100%; opacity: 1; } 94%, 100% { offset-distance: 100%; opacity: 0; } }
.home2 .mut { opacity: 0; animation: hp-mut 4.8s ease-out infinite; animation-delay: 3.2s; }
@keyframes hp-mut { 0%, 28% { opacity: 0; transform: scale(.7); } 33% { opacity: 1; transform: scale(1.08); } 36%, 70% { opacity: 1; transform: scale(1); } 78%, 100% { opacity: 0; } }
.home2 .hp-lands { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; }
.home2 .hp-land { display: flex; justify-content: space-between; align-items: center; border: 1px solid var(--hp-line); border-radius: 10px; padding: 10px 12px; font-size: 14px; }
.home2 .hp-land small { display: block; font-size: 12px; color: #8a8076; margin-top: 3px; }
.home2 .hp-opened { display: flex; align-items: center; gap: 8px; color: #55703f; font-weight: 600; }
.home2 .ping { width: 9px; height: 9px; border-radius: 50%; background: #6c8c54; animation: hp-ping 1.6s ease-out infinite; }
@keyframes hp-ping { 0% { box-shadow: 0 0 0 0 rgba(108, 140, 84, .55); } 75% { box-shadow: 0 0 0 12px rgba(108, 140, 84, 0); } 100% { box-shadow: 0 0 0 0 rgba(108, 140, 84, 0); } }
.home2 .slideup { background: var(--hp-ink); color: var(--hp-cream); border-radius: 10px; padding: 12px 14px; font-size: 14px; line-height: 1.4; animation: hp-slideup 4.8s ease-in-out infinite; }
.home2 .slideup b { color: #e8906c; }
@keyframes hp-slideup { 0%, 38% { opacity: 0; transform: translateY(12px); } 48%, 90% { opacity: 1; transform: none; } 100% { opacity: 0; } }
.home2 .hp-tag { font: 500 12px/1 var(--hp-mono); letter-spacing: .14em; text-transform: uppercase; color: #8a8076; margin-top: 22px; }
.home2 .hp-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }
.home2 main a.hp-btn { background: var(--hp-ink); color: var(--hp-cream); text-decoration: none; padding: 16px 26px; border-radius: 12px; font-weight: 600; }
.home2 main a.hp-btn:hover { background: #000; color: var(--hp-cream); }
.home2 main a.hp-btn-quiet { background: none; border: 1.5px solid #c9bfb3; color: var(--hp-ink); padding: 15px 24px; }
.home2 main a.hp-btn-quiet:hover { background: var(--hp-card); color: var(--hp-ink); }

/* ══ 5 · PIXEL LOGO STAGE + BRING YOUR OWN AGENT ═══════════════════════════════════════════════════════ */
.home2 .hp-dk { background: var(--hp-dark); color: var(--hp-cream); }
.home2 .hp-dk .hp-h2 { color: var(--hp-cream); }
.home2 .hp-stage { position: relative; max-width: 1100px; margin: 0 auto 72px; }
.home2 .hp-stage svg { display: block; width: 100%; height: auto; overflow: visible; }
.home2 .trail { stroke-dasharray: 2 8; animation: hp-dash 2.4s linear infinite; }
@keyframes hp-dash { to { stroke-dashoffset: -56; } }
.home2 .ring { transform-box: fill-box; transform-origin: center; animation: hp-ring 1.8s ease-out infinite; }
.home2 .lp { animation: hp-lp 4.5s ease-in-out infinite; }
@keyframes hp-lp { 0%, 100% { opacity: .9; } 50% { opacity: .45; } }
.home2 .tw { animation: hp-tw2 6s ease-in-out infinite; }
@keyframes hp-tw2 { 0%, 100% { opacity: 0; } 50% { opacity: .14; } }
/* ⚖️ IN ONLY (Bret 2026-10-03, reversing that morning's out-and-back): each pip starts at its door, rides that door's
   dotted line to the centre and shrinks into the centre triangle, which flashes once in the door's colour as it
   lands (`.cflash`, one per pip, on that pip's delay). 12 pips, 3 per door, the original 5.6s pacing and stagger.
   ⚖️ THE PIPS FLY ABOVE THE LOGO (Bret 2026-10-03, replacing that day's "never cross the logo body"): they are drawn
   after the body pixels and may cross over a leg on their way to the centre. */
.home2 .ag2 { offset-rotate: 0deg; opacity: 0; animation: hp-fly2 5.6s cubic-bezier(.45, .05, .35, 1) infinite; }
@keyframes hp-fly2 { 0% { offset-distance: 0%; opacity: 0; transform: none; } 6% { opacity: 1; }
  84% { offset-distance: 92%; opacity: 1; transform: none; } 95% { offset-distance: 100%; opacity: .9; transform: scale(.3); }
  100% { offset-distance: 100%; opacity: 0; transform: scale(.2); } }
.home2 .cflash { opacity: 0; animation: hp-cflash 5.6s ease-out infinite; mix-blend-mode: screen; }
@keyframes hp-cflash { 0%, 92% { opacity: 0; } 96% { opacity: .7; } 100% { opacity: 0; } }
.home2 .lcc { animation-duration: 5s; animation-timing-function: steps(1, end); animation-iteration-count: infinite; }
/* ⚖️ The BYOA Pips (Bret 2026-10-03): one canvas over the whole section, no pointer events; /pips.js keeps every pip
   right of the copy column and above the terminal body, so it never covers either's text. */
.home2 #bring-your-own-agent { position: relative; }
.home2 .hp-byoa-pips { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; z-index: 2; }
.home2 .hp-byoa { display: flex; flex-wrap: wrap; gap: 56px; align-items: center; }
.home2 .hp-byoa-copy { flex: 1 1 400px; min-width: 0; }
.home2 .hp-agents { display: flex; flex-direction: column; gap: 18px; margin-top: 30px; }
.home2 .hp-agent { border-top: 1px solid #3a322c; padding-top: 16px; }
.home2 .hp-agent h3 { font: 600 21px/1.2 'Playfair Display', Georgia, serif; color: var(--hp-cream); }
.home2 .hp-agent p { color: #c9bfb4; margin-top: 6px; line-height: 1.55; }
.home2 .hp-badge { font: 500 12px/1 Inter, sans-serif; background: #33402a; color: #c7dbb3; border-radius: 999px; padding: 4px 10px; vertical-align: 3px; white-space: nowrap; }
.home2 main .hp-agent a { display: inline-block; margin-top: 10px; color: #e8906c; font-weight: 600; text-decoration: none; }
.home2 main .hp-agent a:hover { color: #f0a47f; }
.home2 .hp-term-col { flex: 1 1 460px; min-width: 0; }
.home2 .hp-term { background: #141110; border: 1px solid #3a322c; border-radius: 18px; overflow: hidden; box-shadow: 0 40px 80px -40px rgba(0, 0, 0, .8); }
.home2 .hp-term-bar { display: flex; align-items: center; gap: 8px; padding: 12px 16px; border-bottom: 1px solid #2c2622; }
.home2 .hp-term-bar i { width: 11px; height: 11px; border-radius: 50%; }
.home2 .hp-term-bar span { margin-left: 10px; font: 400 12px/1 var(--hp-mono); color: #8a8076; }
.home2 .hp-term-body { padding: 22px 20px; font: 400 14px/1.7 var(--hp-mono); min-height: 250px; }
.home2 .hp-term-body p + p { margin-top: 12px; }
.home2 .hp-term-body .hp-o { color: #e8906c; }
.home2 .hp-dk .hp-tag { margin-top: 14px; }
.home2 .t1 { animation: hp-t1 12s infinite; }
.home2 .t2 { animation: hp-t2 12s infinite; }
.home2 .t3 { animation: hp-t3 12s infinite; }
.home2 .t4 { animation: hp-t4 12s infinite; }
@keyframes hp-t1 { 0%, 3% { opacity: 0; } 6%, 93% { opacity: 1; } 100% { opacity: 0; } }
@keyframes hp-t2 { 0%, 16% { opacity: 0; } 19%, 93% { opacity: 1; } 100% { opacity: 0; } }
@keyframes hp-t3 { 0%, 32% { opacity: 0; } 35%, 93% { opacity: 1; } 100% { opacity: 0; } }
@keyframes hp-t4 { 0%, 48% { opacity: 0; } 51%, 93% { opacity: 1; } 100% { opacity: 0; } }
.home2 .cur { display: inline-block; width: 8px; height: 15px; background: #e8906c; vertical-align: -2px; animation: hp-blink 1s steps(2) infinite; }
@keyframes hp-blink { 50% { opacity: 0; } }

/* ══ 6 · FOUR WAYS IN ════════════════════════════════════════════════════════════════════════════════════ */
.home2 .hp-sub { font-size: 19px; line-height: 1.55; color: var(--hp-muted); margin-top: 16px; max-width: 60ch; }
.home2 .hp-ways { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 18px; margin-top: 40px; }
.home2 main a.hp-way { text-decoration: none; border-radius: 22px; padding: 28px; min-height: 250px; display: flex; flex-direction: column; position: relative; overflow: hidden; }
.home2 .hp-way > svg { position: absolute; }
.home2 .hp-way-k { position: relative; font: 500 12px/1 var(--hp-mono); letter-spacing: .18em; text-transform: uppercase; opacity: .8; }
.home2 .hp-way h3 { position: relative; font: 600 30px/1.1 'Playfair Display', Georgia, serif; margin-top: 14px; color: inherit; }
.home2 .hp-way p { position: relative; font-size: 16px; line-height: 1.55; margin-top: 12px; }
.home2 .hp-way-go { margin-top: auto; padding-top: 20px; font-weight: 600; position: relative; }
.home2 main a.hp-way-raise { background: #b14d2c; color: #fff; }
.home2 main a.hp-way-cf { background: var(--hp-ink); color: var(--hp-cream); }
.home2 .hp-way-cf .hp-way-go { color: #e8906c; }
.home2 main a.hp-way-comm { background: var(--hp-sage); color: var(--hp-ink); }
.home2 main a.hp-way-vc { background: var(--hp-gold); color: var(--hp-ink); }
.home2 .triA { animation: hp-triA 4.5s ease-in-out infinite alternate; }
.home2 .triB { animation: hp-triB 4.5s ease-in-out infinite alternate; }
@keyframes hp-triA { from { transform: translateX(-16px); } to { transform: translateX(12px); } }
@keyframes hp-triB { from { transform: translateX(16px); } to { transform: translateX(-12px); } }
.home2 .rA { animation: hp-rA 4.5s ease-in-out infinite alternate; }
.home2 .rB { animation: hp-rB 4.5s ease-in-out infinite alternate; }
@keyframes hp-rA { from { transform: translateX(-7px); } to { transform: translateX(5px); } }
@keyframes hp-rB { from { transform: translateX(7px); } to { transform: translateX(-5px); } }
.home2 .march { animation: hp-march 2.4s linear infinite; }
@keyframes hp-march { to { stroke-dashoffset: -36; } }
.home2 .nd { transform-box: fill-box; transform-origin: center; animation: hp-nd 3s ease-in-out infinite; }
@keyframes hp-nd { 0%, 70%, 100% { transform: scale(1); } 80% { transform: scale(1.3); } }
.home2 .hop { offset-rotate: 0deg; animation: hp-hop 6s linear infinite; }
@keyframes hp-hop { from { offset-distance: 0%; } to { offset-distance: 100%; } }
.home2 .gl { animation: hp-gl 2.6s ease-in-out infinite; }
@keyframes hp-gl { 0%, 100% { fill: #ffd45c; } 45% { fill: #fffbe6; } }
.home2 .spark { transform-box: fill-box; transform-origin: center; animation: hp-spark 2.6s ease-in-out infinite; }
@keyframes hp-spark { 0%, 60%, 100% { opacity: 0; transform: scale(.3) rotate(0); } 75% { opacity: 1; transform: scale(1) rotate(45deg); } }
.home2 .shackle { animation: hp-shk 5s ease-in-out infinite; }
@keyframes hp-shk { 0%, 70%, 100% { transform: translateY(0); } 80%, 90% { transform: translateY(-7px); } }

/* ══ 7 · QUESTIONS ═══════════════════════════════════════════════════════════════════════════════════════ */
.home2 .hp-faq { background: #ebe5dc; padding: 96px 0; }
.home2 .hp-faq-grid { display: flex; flex-wrap: wrap; gap: 48px; }
.home2 .hp-faq-grid > :first-child { flex: 1 1 280px; }
.home2 .hp-faq-grid > :last-child { flex: 2 1 560px; min-width: 0; }
.home2 .qa { border-bottom: 1px solid #d6cdc1; padding: 20px 0; }
.home2 .qa summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 16px; font: 600 20px/1.3 'Playfair Display', Georgia, serif; }
.home2 .qa summary::-webkit-details-marker { display: none; }
.home2 .qa summary::marker { content: ''; }
.home2 .qa summary:focus-visible { outline: 2px solid var(--hp-terra); outline-offset: 4px; border-radius: 4px; }
.home2 .qa .pm { font: 400 24px/1 Inter, sans-serif; color: var(--hp-terra); transition: transform .2s; flex: none; }
.home2 .qa[open] .pm { transform: rotate(45deg); }
.home2 .qa p { margin: 12px 0 0; font-size: 17px; line-height: 1.6; color: var(--hp-muted); max-width: 62ch; }

/* ══ 8 · PICK YOUR DOOR + CITY + STREET ══════════════════════════════════════════════════════════════════ */
.home2 .hp-closer { padding: 104px 0 0; background: var(--hp-dark); color: var(--hp-cream); overflow: hidden; text-align: center; }
.home2 .hp-closer .hp-h2 { font: 600 clamp(40px, 5vw, 64px)/1.05 'Playfair Display', Georgia, serif; color: var(--hp-cream); }
.home2 .hp-closer-sub { font-size: 22px; color: #d9d2c8; margin-top: 22px; }
.home2 .hp-city { position: relative; height: 240px; margin: -110px calc(50% - 50vw) 0; opacity: .85;
  -webkit-mask-image: linear-gradient(180deg, transparent 0, #000 30%); mask-image: linear-gradient(180deg, transparent 0, #000 30%); }
.home2 .hp-city svg { display: block; width: 100%; height: 100%; }
@media (max-width: 1100px) { .home2 .hp-city { margin-top: -60px; height: 180px; } }
.home2 .win { animation: hp-win 6s ease-in-out infinite; }
@keyframes hp-win { 0%, 100% { fill-opacity: 1; } 50% { fill-opacity: .25; } }
.home2 .street { position: relative; background: linear-gradient(180deg, #4a3226 0%, #2f221c 38%, #241b17 100%);
  box-shadow: inset 0 2px 0 rgba(232, 144, 108, .55), inset 0 26px 40px -24px rgba(232, 144, 108, .45); }
.home2 .lamps { position: absolute; inset: 0; display: flex; justify-content: space-around; pointer-events: none; overflow: hidden; }
.home2 .lamps i { display: block; width: 280px; height: 200px; margin-top: -30px; flex: none;
  background: radial-gradient(closest-side, rgba(240, 164, 127, .13), rgba(240, 164, 127, 0)); animation: hp-lamp 7s ease-in-out infinite; }
.home2 .lamps i:nth-child(2) { animation-delay: 1.4s; }
.home2 .lamps i:nth-child(3) { animation-delay: 2.8s; }
.home2 .lamps i:nth-child(4) { animation-delay: 4.2s; }
.home2 .lamps i:nth-child(5) { animation-delay: 5.6s; }
@keyframes hp-lamp { 0%, 100% { opacity: .7; } 50% { opacity: 1; } }
.home2 .hp-street-in { position: relative; padding: 34px 24px 88px; }
/* ⚖️ The street's Pips (Bret 2026-10-03, round 2): crossers, the Start-free lander, and the footer perch — the
   canvas's bottom edge is the footer strip's top edge. It is BEFORE .hp-street-in in the DOM, so the text and the
   button always paint above it, and it takes no pointer events. */
.home2 .hp-street-pips { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.home2 .hp-street-help { font-size: 17px; color: #e7d3c4; }
.home2 main .hp-street-help a { color: #e0a27a; text-decoration: none; }
.home2 main .hp-street-help a:hover { color: #f0b48f; text-decoration: underline; }
.home2 .hp-slogan { font: italic 500 clamp(30px, 3.6vw, 44px)/1.1 'Playfair Display', Georgia, serif; margin-top: 44px; color: var(--hp-cream); }
.home2 .hp-start { display: inline-block; margin-top: 26px; background: var(--hp-terra); color: #fff; border: 0; cursor: pointer; padding: 16px 30px; border-radius: 12px;
  font: 600 17px Inter, sans-serif; box-shadow: 0 14px 30px -12px rgba(198, 90, 54, .7); transition: transform .2s, background .2s; }
.home2 .hp-start:hover { background: #b14d2c; transform: translateY(-2px); }
.home2 .hp-start:focus-visible { outline: 3px solid #f0b48f; outline-offset: 3px; }

/* ══ 9 · FOOTER ══════════════════════════════════════════════════════════════════════════════════════════
   ⚠ `class="footer-social"` and `class="footer-links"` are kept as exact attribute values: they are the markers
   scripts/check-social-footer.mjs keys on, and styles.css's generic rules for them are reset here. */
.home2 .foot { background: var(--hp-cream); color: var(--hp-ink); position: relative; overflow: hidden; font-size: 15px; font-family: Inter, system-ui, sans-serif; line-height: 1.5; }
.home2 .foot a { color: #4a413a; text-decoration: none; }
.home2 .foot a:hover { color: var(--hp-terra-ink); }
.home2 .pstrip { display: grid; grid-template-columns: repeat(96, 1fr); gap: 3px; padding: 0 3px; height: 6px; background: var(--hp-dark); }
.home2 .pstrip i { display: block; border-radius: 2px; opacity: .15; animation: hp-pst 5s ease-in-out infinite; }
@keyframes hp-pst { 0%, 100% { opacity: .12; } 50% { opacity: .85; } }
.home2 .hp-foot-main { display: flex; flex-wrap: wrap; gap: 48px; justify-content: space-between; padding-top: 72px; }
.home2 .hp-foot-brand { flex: 1 1 320px; max-width: 420px; }
.home2 .hp-foot-mark { display: flex; align-items: center; gap: 12px; }
.home2 .hp-foot-mark img { width: 34px; height: 34px; }
.home2 .hp-foot-mark span { font: 500 30px/1 'Playfair Display', Georgia, serif; }
.home2 .hp-foot-line { font: 500 22px/1.35 'Playfair Display', Georgia, serif; color: var(--hp-ink); margin: 22px 0 0; }
.home2 .hp-foot-line em { color: var(--hp-terra); }
.home2 .foot a.hp-foot-mail { display: inline-block; margin-top: 18px; color: var(--hp-terra-ink); border-bottom: 1px solid rgba(169, 71, 42, .35); }
.home2 .foot .footer-social { display: flex; gap: 10px; margin-top: 22px; justify-content: flex-start; white-space: normal; }
.home2 .foot .footer-social a { width: 38px; height: 38px; border-radius: 50%; border: 1px solid #d8cfc3; color: var(--hp-ink); display: flex; align-items: center; justify-content: center;
  opacity: 1; padding: 0; transition: background .2s, border-color .2s, color .2s; }
.home2 .foot .footer-social a:hover, .home2 .foot .footer-social a:focus-visible { background: var(--hp-terra); border-color: var(--hp-terra); color: #fff; opacity: 1; }
.home2 .foot .footer-social svg { width: 17px; height: 17px; fill: currentColor; }
.home2 .foot .footer-links { display: flex; flex-wrap: wrap; gap: 56px; margin: 0; padding: 0; justify-content: flex-start; font-size: 15px; }
.home2 .foot .footer-links a { opacity: 1; padding: 0; text-decoration: none; }
.home2 .fcol { display: flex; flex-direction: column; gap: 12px; min-width: 120px; }
.home2 .fh { font: 500 11px/1 var(--hp-mono); letter-spacing: .2em; text-transform: uppercase; color: var(--hp-terra-ink); margin-bottom: 6px; }
.home2 .hp-foot-base { display: flex; flex-wrap: wrap; gap: 14px; justify-content: space-between; padding: 22px 24px 30px; margin-top: 56px; border-top: 1px solid var(--hp-line); font-size: 13px; color: #8a8076; }
.home2 .hp-foot-base nav { display: flex; gap: 20px; }
@media (max-width: 640px) { .home2 .foot .footer-links { gap: 32px; } .home2 .hp-foot-main { padding-top: 48px; } }

/* ══ MOTION BUDGET ═══════════════════════════════════════════════════════════════════════════════════════
   ⭐ Off-screen loops pause: home.js marks a section `.is-off` while it is out of view. Without home.js nothing is
   marked, so nothing is paused — the failure direction is "animates", never "frozen". */
.home2 [data-live].is-off, .home2 [data-live].is-off * { animation-play-state: paused !important; }

/* ⛔ REDUCED MOTION: EVERYTHING STOPS and a still frame reads correctly — agents that only exist in motion are
   hidden, the "Intro ✓" / "Mutual ✓" / terminal lines that only exist at one moment are shown. */
@media (prefers-reduced-motion: reduce) {
  .home2 main *, .home2 .foot * { animation: none !important; }
  .home2 .lift:hover, .home2 .door:hover { transform: none; }
  .home2 .pulse, .home2 .mail, .home2 .xmark, .home2 .ra, .home2 .ag2, .home2 .cflash, .home2 .comet, .home2 .cur { opacity: 0 !important; }
  /* row 3's Pips: still, side by side on the plate, eyes open */
  .home2 .rm { opacity: 1 !important; offset-distance: 100%; }
  .home2 .intro, .home2 .mut, .home2 .slideup, .home2 .t1, .home2 .t2, .home2 .t3, .home2 .t4, .home2 .lp { opacity: 1 !important; }
  .home2 .bar { width: var(--w, 60%); }
  .home2 .beam { transform: none; }
  .home2 .tw { opacity: .08; }
  .home2 .pstrip i { opacity: .5; }
}

/* ══ THE LOGO'S INTERIOR COLOURS ══════════════════════════════════════════════════════════════════════════
   ⭐ GENERATED, NOT HAND-PICKED: 48 interior cells, each cycling (steps, 5s) through colours sampled from
   site/assets/adperch_FINAL_animated_transparent.apng — carried over unchanged from the reference page, which
   sampled them. Do not edit by hand; regenerate from the APNG. */
@keyframes hp-lc0{0.0%{fill:#3b9e7a}6.67%{fill:#4db18b}13.33%{fill:#d4e3b9}20.0%{fill:#ffc882}26.67%{fill:#ffb773}33.33%{fill:#fce154}40.0%{fill:#fce154}46.67%{fill:#d0e38b}53.33%{fill:#91f4fa}60.0%{fill:#2eb5ce}66.67%{fill:#c33f5a}73.33%{fill:#f6586f}80.0%{fill:#db6d5a}86.67%{fill:#ceac3f}93.33%{fill:#ceac3f}100%{fill:#3b9e7a}}
@keyframes hp-lc1{0.0%{fill:#7fd3b0}6.67%{fill:#89ddb9}13.33%{fill:#abc899}20.0%{fill:#fc8c52}26.67%{fill:#fd975a}33.33%{fill:#fbd32b}40.0%{fill:#fbd32b}46.67%{fill:#bdd66d}53.33%{fill:#92f5fb}60.0%{fill:#2ccae4}66.67%{fill:#e44460}73.33%{fill:#f54d68}80.0%{fill:#c9594b}86.67%{fill:#bf9d33}93.33%{fill:#bf9d33}100%{fill:#7fd3b0}}
@keyframes hp-lc2{0.0%{fill:#83e4bb}6.67%{fill:#b6ecd1}13.33%{fill:#ccdeb3}20.0%{fill:#d45b2d}26.67%{fill:#d45b2d}33.33%{fill:#d4a61a}40.0%{fill:#fce45d}46.67%{fill:#d6e993}53.33%{fill:#aefcfc}60.0%{fill:#22cce6}66.67%{fill:#e93d5d}73.33%{fill:#f44360}80.0%{fill:#de967e}86.67%{fill:#d9bb5d}93.33%{fill:#c6a333}100%{fill:#83e4bb}}
@keyframes hp-lc3{0.0%{fill:#3cb286}6.67%{fill:#3bb184}13.33%{fill:#8aa87d}20.0%{fill:#e26d39}26.67%{fill:#e16936}33.33%{fill:#e3c549}40.0%{fill:#ddbe48}46.67%{fill:#b9c97a}53.33%{fill:#61ccdc}60.0%{fill:#19a4c1}66.67%{fill:#db7481}73.33%{fill:#f07483}80.0%{fill:#e88b72}86.67%{fill:#dcbc53}93.33%{fill:#e0c15c}100%{fill:#3cb286}}
@keyframes hp-lc4{0.0%{fill:#3eaf85}6.67%{fill:#3eaf85}13.33%{fill:#74956a}20.0%{fill:#d75b2b}26.67%{fill:#d75d2d}33.33%{fill:#d8b130}40.0%{fill:#fcd736}46.67%{fill:#c2da75}53.33%{fill:#49c1d6}60.0%{fill:#16a3c1}66.67%{fill:#cc5268}73.33%{fill:#f36075}80.0%{fill:#e67a65}86.67%{fill:#d2b045}93.33%{fill:#d2b045}100%{fill:#3eaf85}}
@keyframes hp-lc5{0.0%{fill:#5fd6a8}6.67%{fill:#68daad}13.33%{fill:#8aab7c}20.0%{fill:#ef743f}26.67%{fill:#f0a868}33.33%{fill:#edc222}40.0%{fill:#cfa321}46.67%{fill:#bbd36a}53.33%{fill:#40d4e9}60.0%{fill:#37d2e8}66.67%{fill:#b63552}73.33%{fill:#c13755}80.0%{fill:#bd594b}86.67%{fill:#b4902a}93.33%{fill:#b28e26}100%{fill:#5fd6a8}}
@keyframes hp-lc6{0.0%{fill:#42b88b}6.67%{fill:#63cca4}13.33%{fill:#bed4a8}20.0%{fill:#fc9b5f}26.67%{fill:#fa8049}33.33%{fill:#fad22a}40.0%{fill:#cc9b0d}46.67%{fill:#9db552}53.33%{fill:#11a8c7}60.0%{fill:#13b1d0}66.67%{fill:#c9274b}73.33%{fill:#d7445f}80.0%{fill:#d26354}86.67%{fill:#af8b25}93.33%{fill:#b8993b}100%{fill:#42b88b}}
@keyframes hp-lc7{0.0%{fill:#23976d}6.67%{fill:#379c77}13.33%{fill:#c5d5ad}20.0%{fill:#feb976}26.67%{fill:#fd9c5e}33.33%{fill:#fcde4a}40.0%{fill:#e4be2f}46.67%{fill:#c1d973}53.33%{fill:#43cadf}60.0%{fill:#4bdff3}66.67%{fill:#f76679}73.33%{fill:#de4a64}80.0%{fill:#d76958}86.67%{fill:#c09f38}93.33%{fill:#cbad51}100%{fill:#23976d}}
@keyframes hp-lc8{0.0%{fill:#4ec598}6.67%{fill:#4ec598}13.33%{fill:#a0bd8f}20.0%{fill:#fc834a}26.67%{fill:#fd995c}33.33%{fill:#fbd32b}40.0%{fill:#e9c128}46.67%{fill:#aec466}53.33%{fill:#40dcf2}60.0%{fill:#3acbe2}66.67%{fill:#e15068}73.33%{fill:#ce3c59}80.0%{fill:#e1836c}86.67%{fill:#c1a244}93.33%{fill:#c1a244}100%{fill:#4ec598}}
@keyframes hp-lc9{0.0%{fill:#4ec497}6.67%{fill:#4ec497}13.33%{fill:#5d8056}20.0%{fill:#feb875}26.67%{fill:#fda666}33.33%{fill:#feea71}40.0%{fill:#fae670}46.67%{fill:#dbeb9d}53.33%{fill:#9ef8fc}60.0%{fill:#9cf4f9}66.67%{fill:#f5aba9}73.33%{fill:#f8acaa}80.0%{fill:#f4ba99}86.67%{fill:#dcbb51}93.33%{fill:#dbba4f}100%{fill:#4ec497}}
@keyframes hp-lc10{0.0%{fill:#42b68a}6.67%{fill:#42b68a}13.33%{fill:#c0d7a9}20.0%{fill:#fd9c5d}26.67%{fill:#ffc581}33.33%{fill:#fded7f}40.0%{fill:#ffef7f}46.67%{fill:#e4f3a9}53.33%{fill:#b0fdfd}60.0%{fill:#b0fdfd}66.67%{fill:#cd6a79}73.33%{fill:#f7818a}80.0%{fill:#c44c40}86.67%{fill:#e4c45b}93.33%{fill:#d5af37}100%{fill:#42b68a}}
@keyframes hp-lc11{0.0%{fill:#40886c}6.67%{fill:#4a8b70}13.33%{fill:#6f7d63}20.0%{fill:#915835}26.67%{fill:#915835}33.33%{fill:#917e2a}40.0%{fill:#7f681c}46.67%{fill:#646f3e}53.33%{fill:#297480}60.0%{fill:#085f72}66.67%{fill:#6b1127}73.33%{fill:#6b1127}80.0%{fill:#692622}86.67%{fill:#634f17}93.33%{fill:#634f17}100%{fill:#40886c}}
@keyframes hp-lc12{0.0%{fill:#297156}6.67%{fill:#3d7660}13.33%{fill:#56674d}20.0%{fill:#8b4b2a}26.67%{fill:#92512e}33.33%{fill:#93802e}40.0%{fill:#927817}46.67%{fill:#738342}53.33%{fill:#248694}60.0%{fill:#127b8c}66.67%{fill:#8d2236}73.33%{fill:#8f3a47}80.0%{fill:#8b4b3e}86.67%{fill:#7c6a31}93.33%{fill:#7c6a31}100%{fill:#297156}}
@keyframes hp-lc13{0.0%{fill:#216a4f}6.67%{fill:#216a4f}13.33%{fill:#41573c}20.0%{fill:#8a391c}26.67%{fill:#915431}33.33%{fill:#8f7513}40.0%{fill:#7d6210}46.67%{fill:#5b6534}53.33%{fill:#378c96}60.0%{fill:#086275}66.67%{fill:#6d1128}73.33%{fill:#6e2334}80.0%{fill:#93735f}86.67%{fill:#837139}93.33%{fill:#8b793d}100%{fill:#216a4f}}
@keyframes hp-lc14{0.0%{fill:#36715a}6.67%{fill:#246c52}13.33%{fill:#445a3e}20.0%{fill:#995d38}26.67%{fill:#984b2a}33.33%{fill:#998730}40.0%{fill:#95822f}46.67%{fill:#78844f}53.33%{fill:#499197}60.0%{fill:#428a92}66.67%{fill:#916263}73.33%{fill:#926263}80.0%{fill:#987964}86.67%{fill:#92824b}93.33%{fill:#94844a}100%{fill:#36715a}}
@keyframes hp-lc15{0.0%{fill:#528f76}6.67%{fill:#4b8d72}13.33%{fill:#65775a}20.0%{fill:#974a29}26.67%{fill:#985b37}33.33%{fill:#927d29}40.0%{fill:#98852a}46.67%{fill:#6f774c}53.33%{fill:#357a85}60.0%{fill:#39858f}66.67%{fill:#74152b}73.33%{fill:#7d1a2f}80.0%{fill:#7a372f}86.67%{fill:#7b692f}93.33%{fill:#806a21}100%{fill:#528f76}}
@keyframes hp-lc16{0.0%{fill:#060d29}6.67%{fill:#3b445e}13.33%{fill:#444663}20.0%{fill:#55496f}26.67%{fill:#55496f}33.33%{fill:#385555}40.0%{fill:#385555}46.67%{fill:#161425}53.33%{fill:#3b0b3f}60.0%{fill:#3a0a3f}66.67%{fill:#08142a}73.33%{fill:#08142a}80.0%{fill:#061420}86.67%{fill:#3b5744}93.33%{fill:#0a2c16}100%{fill:#060d29}}
@keyframes hp-lc17{0.0%{fill:#040a1e}6.67%{fill:#040a1e}13.33%{fill:#090922}20.0%{fill:#14072b}26.67%{fill:#14072b}33.33%{fill:#031412}40.0%{fill:#031412}46.67%{fill:#191e2e}53.33%{fill:#481750}60.0%{fill:#330c37}66.67%{fill:#07122a}73.33%{fill:#07122a}80.0%{fill:#061420}86.67%{fill:#05170c}93.33%{fill:#05170c}100%{fill:#040a1e}}
@keyframes hp-lc18{0.0%{fill:#070f2b}6.67%{fill:#070f2b}13.33%{fill:#0e0e30}20.0%{fill:#1e0d3c}26.67%{fill:#1e0d3c}33.33%{fill:#031412}40.0%{fill:#031412}46.67%{fill:#11101c}53.33%{fill:#3c1041}60.0%{fill:#3c1041}66.67%{fill:#091839}73.33%{fill:#091839}80.0%{fill:#1d3141}86.67%{fill:#193122}93.33%{fill:#061b0e}100%{fill:#070f2b}}
@keyframes hp-lc19{0.0%{fill:#0a153a}6.67%{fill:#0a153a}13.33%{fill:#141541}20.0%{fill:#29134f}26.67%{fill:#3a2c53}33.33%{fill:#1e3333}40.0%{fill:#1e3333}46.67%{fill:#2b3039}53.33%{fill:#462b45}60.0%{fill:#462b45}66.67%{fill:#253142}73.33%{fill:#050e20}80.0%{fill:#334349}86.67%{fill:#2f4335}93.33%{fill:#203327}100%{fill:#0a153a}}
@keyframes hp-lc20{0.0%{fill:#0a153a}6.67%{fill:#293047}13.33%{fill:#2d2e48}20.0%{fill:#3b2f51}26.67%{fill:#3f3552}33.33%{fill:#0e2e2c}40.0%{fill:#283f3f}46.67%{fill:#363e45}53.33%{fill:#4a1d50}60.0%{fill:#481c4d}66.67%{fill:#12254c}73.33%{fill:#050e20}80.0%{fill:#304048}86.67%{fill:#2c4033}93.33%{fill:#2c4033}100%{fill:#0a153a}}
@keyframes hp-lc21{0.0%{fill:#081232}6.67%{fill:#22283c}13.33%{fill:#090922}20.0%{fill:#1b0b36}26.67%{fill:#1b0b36}33.33%{fill:#203a39}40.0%{fill:#031a18}46.67%{fill:#1b2233}53.33%{fill:#481750}60.0%{fill:#350d3a}66.67%{fill:#07142e}73.33%{fill:#050e20}80.0%{fill:#091c30}86.67%{fill:#061d0f}93.33%{fill:#132c1c}100%{fill:#081232}}
@keyframes hp-lc22{0.0%{fill:#091336}6.67%{fill:#1e253f}13.33%{fill:#252544}20.0%{fill:#351865}26.67%{fill:#351865}33.33%{fill:#042724}40.0%{fill:#042724}46.67%{fill:#1c2133}53.33%{fill:#623367}60.0%{fill:#623367}66.67%{fill:#273e67}73.33%{fill:#223047}80.0%{fill:#091e33}86.67%{fill:#072110}93.33%{fill:#24422f}100%{fill:#091336}}
@keyframes hp-lc23{0.0%{fill:#788ed4}6.67%{fill:#2e4db1}13.33%{fill:#4b4cc3}20.0%{fill:#b28df5}26.67%{fill:#a786e2}33.33%{fill:#51908e}40.0%{fill:#589796}46.67%{fill:#808fa9}53.33%{fill:#a038a6}60.0%{fill:#e192db}66.67%{fill:#88aee1}73.33%{fill:#8cb7f7}80.0%{fill:#80acc1}86.67%{fill:#61a077}93.33%{fill:#5b9a71}100%{fill:#788ed4}}
@keyframes hp-lc24{0.0%{fill:#1b3aa0}6.67%{fill:#213fa2}13.33%{fill:#3738b3}20.0%{fill:#7033da}26.67%{fill:#7033da}33.33%{fill:#0d6c64}40.0%{fill:#0d6c64}46.67%{fill:#8093b0}53.33%{fill:#e393df}60.0%{fill:#f29bf0}66.67%{fill:#3b75ee}73.33%{fill:#376bd5}80.0%{fill:#1c5797}86.67%{fill:#145e30}93.33%{fill:#145e30}100%{fill:#1b3aa0}}
@keyframes hp-lc25{0.0%{fill:#495ea1}6.67%{fill:#2a3c78}13.33%{fill:#2e2d80}20.0%{fill:#6a37c2}26.67%{fill:#622bc0}33.33%{fill:#357b77}40.0%{fill:#347571}46.67%{fill:#606a8b}53.33%{fill:#ba56be}60.0%{fill:#dc68e5}66.67%{fill:#4f81e1}73.33%{fill:#4569a8}80.0%{fill:#3f667d}86.67%{fill:#0e4523}93.33%{fill:#0e4523}100%{fill:#495ea1}}
@keyframes hp-lc26{0.0%{fill:#4360be}6.67%{fill:#223f9d}13.33%{fill:#6f70c0}20.0%{fill:#8243ee}26.67%{fill:#7c3aed}33.33%{fill:#3e9793}40.0%{fill:#3d938f}46.67%{fill:#636b89}53.33%{fill:#a441a8}60.0%{fill:#a441a8}66.67%{fill:#345387}73.33%{fill:#3f70cf}80.0%{fill:#3b71a2}86.67%{fill:#0d3f20}93.33%{fill:#0d3f20}100%{fill:#4360be}}
@keyframes hp-lc27{0.0%{fill:#7389cd}6.67%{fill:#7389cd}13.33%{fill:#595ac8}20.0%{fill:#6035aa}26.67%{fill:#471b94}33.33%{fill:#2a6a66}40.0%{fill:#2a6a66}46.67%{fill:#4c4f6f}53.33%{fill:#9b34a0}60.0%{fill:#9b34a0}66.67%{fill:#0f2a5f}73.33%{fill:#113170}80.0%{fill:#11395b}86.67%{fill:#0f4623}93.33%{fill:#114826}100%{fill:#7389cd}}
@keyframes hp-lc28{0.0%{fill:#2e448c}6.67%{fill:#2e448c}13.33%{fill:#4a4a9d}20.0%{fill:#50259c}26.67%{fill:#4b1d9b}33.33%{fill:#67b1af}40.0%{fill:#67b1af}46.67%{fill:#3a3d64}53.33%{fill:#aa49ad}60.0%{fill:#a841ad}66.67%{fill:#33548e}73.33%{fill:#325084}80.0%{fill:#386fa1}86.67%{fill:#30764a}93.33%{fill:#458c5f}100%{fill:#2e448c}}
@keyframes hp-lc29{0.0%{fill:#203886}6.67%{fill:#3756b9}13.33%{fill:#7779d8}20.0%{fill:#7646cb}26.67%{fill:#5c27b9}33.33%{fill:#65a8a6}40.0%{fill:#368682}46.67%{fill:#4a5989}53.33%{fill:#de73e3}60.0%{fill:#e46def}66.67%{fill:#5188f0}73.33%{fill:#4e82e1}80.0%{fill:#477ba7}86.67%{fill:#4e9568}93.33%{fill:#4e9568}100%{fill:#203886}}
@keyframes hp-lc30{0.0%{fill:#697db9}6.67%{fill:#374b87}13.33%{fill:#1b1a67}20.0%{fill:#3b1381}26.67%{fill:#3b1381}33.33%{fill:#083e39}40.0%{fill:#377572}46.67%{fill:#6c7da1}53.33%{fill:#c841da}60.0%{fill:#a82fb5}66.67%{fill:#47679a}73.33%{fill:#7aa0d7}80.0%{fill:#79accf}86.67%{fill:#407d56}93.33%{fill:#135b2f}100%{fill:#697db9}}
@keyframes hp-lc31{0.0%{fill:#5e78c9}6.67%{fill:#4f68b9}13.33%{fill:#3536ae}20.0%{fill:#6d31d4}26.67%{fill:#5321a8}33.33%{fill:#0a514a}40.0%{fill:#19625c}46.67%{fill:#505b84}53.33%{fill:#c964cd}60.0%{fill:#bf5ec2}66.67%{fill:#5d7fb2}73.33%{fill:#a0c8fa}80.0%{fill:#5f899f}86.67%{fill:#4d9065}93.33%{fill:#40885a}100%{fill:#5e78c9}}
@keyframes hp-lc32{0.0%{fill:#516cc4}6.67%{fill:#5e78c9}13.33%{fill:#5d5ec6}20.0%{fill:#905ee8}26.67%{fill:#905ee8}33.33%{fill:#378d88}40.0%{fill:#378d88}46.67%{fill:#7b90b5}53.33%{fill:#f6a7f0}60.0%{fill:#f29bf0}66.67%{fill:#588df1}73.33%{fill:#588df1}80.0%{fill:#1e5da2}86.67%{fill:#3f8458}93.33%{fill:#156132}100%{fill:#516cc4}}
@keyframes hp-lc33{0.0%{fill:#5168b3}6.67%{fill:#7184c0}13.33%{fill:#4747a2}20.0%{fill:#7f4dd7}26.67%{fill:#6c31d2}33.33%{fill:#0d6860}40.0%{fill:#246b66}46.67%{fill:#596488}53.33%{fill:#bb4cc3}60.0%{fill:#b331c3}66.67%{fill:#1b49aa}73.33%{fill:#3a6bcb}80.0%{fill:#133c62}86.67%{fill:#11522a}93.33%{fill:#11522a}100%{fill:#5168b3}}
@keyframes hp-lc34{0.0%{fill:#516ab8}6.67%{fill:#516ab8}13.33%{fill:#686ac6}20.0%{fill:#a171f6}26.67%{fill:#945df3}33.33%{fill:#36827d}40.0%{fill:#478481}46.67%{fill:#5d6482}53.33%{fill:#aa49ad}60.0%{fill:#aa49ad}66.67%{fill:#0f2a5f}73.33%{fill:#2c54a2}80.0%{fill:#144068}86.67%{fill:#115029}93.33%{fill:#115029}100%{fill:#516ab8}}
@keyframes hp-lc35{0.0%{fill:#7f95d7}6.67%{fill:#7f95d7}13.33%{fill:#6162b4}20.0%{fill:#8a63d0}26.67%{fill:#50259c}33.33%{fill:#458683}40.0%{fill:#70b6b5}46.67%{fill:#798cad}53.33%{fill:#dc74e0}60.0%{fill:#dc74e0}66.67%{fill:#173e91}73.33%{fill:#1d48a0}80.0%{fill:#1a4b79}86.67%{fill:#196435}93.33%{fill:#488c61}100%{fill:#7f95d7}}
@keyframes hp-lc36{0.0%{fill:#5974c7}6.67%{fill:#5974c7}13.33%{fill:#4d4fc9}20.0%{fill:#884cf0}26.67%{fill:#7c3aed}33.33%{fill:#0e6c65}40.0%{fill:#0b524b}46.67%{fill:#323054}53.33%{fill:#99339f}60.0%{fill:#94219f}66.67%{fill:#133476}73.33%{fill:#3d5c90}80.0%{fill:#3a6078}86.67%{fill:#37704b}93.33%{fill:#79b88e}100%{fill:#5974c7}}
@keyframes hp-lc37{0.0%{fill:#344ea2}6.67%{fill:#556bb2}13.33%{fill:#6a6cbf}20.0%{fill:#b892fb}26.67%{fill:#7d4bd2}33.33%{fill:#0b5750}40.0%{fill:#083c37}46.67%{fill:#323054}53.33%{fill:#a340a7}60.0%{fill:#b331c3}66.67%{fill:#3f70d1}73.33%{fill:#3962ae}80.0%{fill:#31566d}86.67%{fill:#549169}93.33%{fill:#51976a}100%{fill:#344ea2}}
@keyframes hp-lc38{0.0%{fill:#0d2265}6.67%{fill:#1f326e}13.33%{fill:#6566c7}20.0%{fill:#a87cf7}26.67%{fill:#9164e3}33.33%{fill:#30857e}40.0%{fill:#3c8682}46.67%{fill:#6d7b9d}53.33%{fill:#b558b6}60.0%{fill:#c260c5}66.67%{fill:#6189c9}73.33%{fill:#2e5fc3}80.0%{fill:#285a86}86.67%{fill:#35754d}93.33%{fill:#26683e}100%{fill:#0d2265}}
@keyframes hp-lc39{0.0%{fill:#5067b4}6.67%{fill:#5067b4}13.33%{fill:#2e2e9a}20.0%{fill:#5f28bc}26.67%{fill:#7345c1}33.33%{fill:#4a8887}40.0%{fill:#2c6461}46.67%{fill:#5d678a}53.33%{fill:#ae2fbe}60.0%{fill:#ae2fbe}66.67%{fill:#1b49ac}73.33%{fill:#3d6ed0}80.0%{fill:#3c7ab8}86.67%{fill:#145a2e}93.33%{fill:#145c2f}100%{fill:#5067b4}}
@keyframes hp-lc40{0.0%{fill:#4f6ac2}6.67%{fill:#4f6ac2}13.33%{fill:#3939b9}20.0%{fill:#9564e9}26.67%{fill:#7435e0}33.33%{fill:#1c7a73}40.0%{fill:#1c7a73}46.67%{fill:#4f5a83}53.33%{fill:#b130c1}60.0%{fill:#b130c1}66.67%{fill:#1b49ac}73.33%{fill:#5277b5}80.0%{fill:#4d7a97}86.67%{fill:#38704c}93.33%{fill:#39744f}100%{fill:#4f6ac2}}
@keyframes hp-lc41{0.0%{fill:#8b9fda}6.67%{fill:#455792}13.33%{fill:#494891}20.0%{fill:#6c46ac}26.67%{fill:#744cb9}33.33%{fill:#327370}40.0%{fill:#306c69}46.67%{fill:#67708d}53.33%{fill:#c871c5}60.0%{fill:#c366c5}66.67%{fill:#2b56b1}73.33%{fill:#336eec}80.0%{fill:#2f6eb4}86.67%{fill:#7eb992}93.33%{fill:#56976d}100%{fill:#8b9fda}}
@keyframes hp-lc42{0.0%{fill:#50639f}6.67%{fill:#4a5d9a}13.33%{fill:#3d3c87}20.0%{fill:#6d42b6}26.67%{fill:#804dd6}33.33%{fill:#2b7d77}40.0%{fill:#3f7d79}46.67%{fill:#4f5271}53.33%{fill:#c36cc2}60.0%{fill:#bb52c2}66.67%{fill:#3f66ae}73.33%{fill:#5d87ce}80.0%{fill:#3c698d}86.67%{fill:#35704a}93.33%{fill:#35704a}100%{fill:#50639f}}
@keyframes hp-lc43{0.0%{fill:#6074b1}6.67%{fill:#798dc8}13.33%{fill:#8b8ed3}20.0%{fill:#bc98fc}26.67%{fill:#bc98fc}33.33%{fill:#21736d}40.0%{fill:#306a66}46.67%{fill:#322f53}53.33%{fill:#a746ab}60.0%{fill:#d280cf}66.67%{fill:#173f92}73.33%{fill:#2b529e}80.0%{fill:#123f66}86.67%{fill:#114f28}93.33%{fill:#145f30}100%{fill:#6074b1}}
@keyframes hp-lc44{0.0%{fill:#5264a2}6.67%{fill:#4c60a1}13.33%{fill:#4040a8}20.0%{fill:#713dcb}26.67%{fill:#713dcb}33.33%{fill:#0c5d56}40.0%{fill:#358783}46.67%{fill:#4c5c8b}53.33%{fill:#d048e3}60.0%{fill:#d852e7}66.67%{fill:#19459f}73.33%{fill:#224da4}80.0%{fill:#194977}86.67%{fill:#15532c}93.33%{fill:#3d7752}100%{fill:#5264a2}}
@keyframes hp-lc45{0.0%{fill:#5a74c6}6.67%{fill:#3050b6}13.33%{fill:#4d4fc8}20.0%{fill:#884cef}26.67%{fill:#7b39ec}33.33%{fill:#0e766d}40.0%{fill:#0b5c55}46.67%{fill:#434d7a}53.33%{fill:#b432c3}60.0%{fill:#94219f}66.67%{fill:#1b49ac}73.33%{fill:#769fe0}80.0%{fill:#3c6787}86.67%{fill:#397d52}93.33%{fill:#4a9063}100%{fill:#5a74c6}}
@keyframes hp-lc46{0.0%{fill:#5a74c6}6.67%{fill:#3550a5}13.33%{fill:#4d4fb5}20.0%{fill:#a171f4}26.67%{fill:#8d55f0}33.33%{fill:#0e766d}40.0%{fill:#2e7470}46.67%{fill:#5d698b}53.33%{fill:#be52c3}60.0%{fill:#b432c3}66.67%{fill:#618dd5}73.33%{fill:#365da7}80.0%{fill:#336185}86.67%{fill:#2c6742}93.33%{fill:#2b6d43}100%{fill:#5a74c6}}
@keyframes hp-lc47{0.0%{fill:#1e3273}6.67%{fill:#0e2264}13.33%{fill:#6364c8}20.0%{fill:#a474f6}26.67%{fill:#a474f6}33.33%{fill:#3f9894}40.0%{fill:#74b9b8}46.67%{fill:#9db1c6}53.33%{fill:#eda4e5}60.0%{fill:#da66e5}66.67%{fill:#6a9bf2}73.33%{fill:#2e66d9}80.0%{fill:#2966a5}86.67%{fill:#216a3c}93.33%{fill:#0f4d28}100%{fill:#1e3273}}
.home2 .lc0 { animation-name: hp-lc0; }
.home2 .lc1 { animation-name: hp-lc1; }
.home2 .lc2 { animation-name: hp-lc2; }
.home2 .lc3 { animation-name: hp-lc3; }
.home2 .lc4 { animation-name: hp-lc4; }
.home2 .lc5 { animation-name: hp-lc5; }
.home2 .lc6 { animation-name: hp-lc6; }
.home2 .lc7 { animation-name: hp-lc7; }
.home2 .lc8 { animation-name: hp-lc8; }
.home2 .lc9 { animation-name: hp-lc9; }
.home2 .lc10 { animation-name: hp-lc10; }
.home2 .lc11 { animation-name: hp-lc11; }
.home2 .lc12 { animation-name: hp-lc12; }
.home2 .lc13 { animation-name: hp-lc13; }
.home2 .lc14 { animation-name: hp-lc14; }
.home2 .lc15 { animation-name: hp-lc15; }
.home2 .lc16 { animation-name: hp-lc16; }
.home2 .lc17 { animation-name: hp-lc17; }
.home2 .lc18 { animation-name: hp-lc18; }
.home2 .lc19 { animation-name: hp-lc19; }
.home2 .lc20 { animation-name: hp-lc20; }
.home2 .lc21 { animation-name: hp-lc21; }
.home2 .lc22 { animation-name: hp-lc22; }
.home2 .lc23 { animation-name: hp-lc23; }
.home2 .lc24 { animation-name: hp-lc24; }
.home2 .lc25 { animation-name: hp-lc25; }
.home2 .lc26 { animation-name: hp-lc26; }
.home2 .lc27 { animation-name: hp-lc27; }
.home2 .lc28 { animation-name: hp-lc28; }
.home2 .lc29 { animation-name: hp-lc29; }
.home2 .lc30 { animation-name: hp-lc30; }
.home2 .lc31 { animation-name: hp-lc31; }
.home2 .lc32 { animation-name: hp-lc32; }
.home2 .lc33 { animation-name: hp-lc33; }
.home2 .lc34 { animation-name: hp-lc34; }
.home2 .lc35 { animation-name: hp-lc35; }
.home2 .lc36 { animation-name: hp-lc36; }
.home2 .lc37 { animation-name: hp-lc37; }
.home2 .lc38 { animation-name: hp-lc38; }
.home2 .lc39 { animation-name: hp-lc39; }
.home2 .lc40 { animation-name: hp-lc40; }
.home2 .lc41 { animation-name: hp-lc41; }
.home2 .lc42 { animation-name: hp-lc42; }
.home2 .lc43 { animation-name: hp-lc43; }
.home2 .lc44 { animation-name: hp-lc44; }
.home2 .lc45 { animation-name: hp-lc45; }
.home2 .lc46 { animation-name: hp-lc46; }
.home2 .lc47 { animation-name: hp-lc47; }
.home2 .nowrap { white-space: nowrap; }

/* ⚠ The "Not sure which door?" lines carry `.hero-doors-help` (the tests pin the ruled line by it) — its
   styles.css rules centre and shrink it; restated here for the new layout. */
.home2 .hp-help.hero-doors-help { margin: 18px 0 0; text-align: left; font-size: 16px; color: #6a6058; }
.home2 main .hero-doors-help a { font-weight: 600; text-decoration: underline; color: var(--hp-terra-ink); }
.home2 .hp-street-help.hero-doors-help { margin: 0; text-align: center; font-size: 17px; color: #e7d3c4; }
.home2 main .hp-street-help.hero-doors-help a { color: #e0a27a; text-decoration: none; font-weight: 400; }
.home2 main .hp-street-help.hero-doors-help a:hover { color: #f0b48f; text-decoration: underline; }
/* the glyph inks: the live ruled ones (community's mark is the deepened terracotta, single ink) */
.home2 .door-founder .door-fig { color: #2b2420; }
.home2 .door-vc .door-fig { color: var(--hp-sage); }
.home2 .door-community .door-fig { color: #743718; }
