/* The original homepage text owns its first-paint entrance. No splitting,
   hidden boot class, renderer handoff or layout measurement is required. */
.hero--circuit[data-home-entrance] :is(.hero__copy, .hero__title) {
  animation: none !important;
}
.hero--circuit[data-home-entrance] .hero__title::before,
.hero--circuit[data-home-entrance] .hero__title::after {
  display: none !important;
}
.hero--circuit[data-home-entrance] .hero__title-line--signal .hero__title-segment {
  /* The heading wrapper already casts depth; inherited text-shadow covers the
     clipped gradient and darkens its settled lettering. */
  text-shadow: none;
}

@media (prefers-reduced-motion: no-preference) and (forced-colors: none) {
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__title-line {
    position: relative;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__title-line:nth-child(1) .hero__title-segment {
    animation: home-title-type .72s .08s steps(12, end) backwards;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__title-line:nth-child(2) .hero__title-segment {
    animation: home-title-scan .8s .7s cubic-bezier(.16, 1, .3, 1) backwards;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__title-line--signal .hero__title-segment {
    animation: home-title-crystallize .94s 1.4s cubic-bezier(.16, 1, .3, 1) backwards;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__lede {
    animation: home-support-dissolve .66s 2.14s cubic-bezier(.16, 1, .3, 1) backwards;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__actions {
    animation: home-support-dissolve .56s 2.34s cubic-bezier(.16, 1, .3, 1) backwards;
  }
  .hero--circuit[data-home-entrance]:not([data-home-motion="settled"]) .hero__proof {
    animation: home-support-dissolve .56s 2.52s cubic-bezier(.16, 1, .3, 1) backwards;
  }

  @keyframes home-title-type {
    from { clip-path: inset(-.15em 100% -.24em -.08em); }
    to { clip-path: inset(-.15em -.08em -.24em -.08em); }
  }
  @keyframes home-title-scan {
    0% { opacity: 0; clip-path: inset(-.15em 100% -.24em -.08em); filter: brightness(1.5) blur(1px); }
    18% { opacity: 1; }
    68% { filter: brightness(1.15) blur(0); }
    100% { opacity: 1; clip-path: inset(-.15em -.08em -.24em -.08em); filter: none; }
  }
  @keyframes home-title-crystallize {
    0% { opacity: 0; transform: translate3d(0, .16em, 0) scale(.97); filter: blur(8px) brightness(1.6); }
    38% { opacity: 1; filter: blur(.6px) brightness(1.55) drop-shadow(0 0 14px #8ad8ff80); }
    72% { transform: translate3d(0, -.012em, 0) scale(1); filter: blur(0) brightness(1.08) drop-shadow(0 0 7px #76caff30); }
    100% { opacity: 1; transform: none; filter: none; }
  }
  @keyframes home-support-dissolve {
    from { opacity: 0; transform: translate3d(0, 10px, 0); filter: blur(3px) brightness(1.12); }
    to { opacity: 1; transform: none; filter: none; }
  }
}

/* The default state is the original readable markup. Ended animations have no
   forward fill; settling or focus also removes every temporary visual state. */
.hero--circuit[data-home-entrance][data-home-motion="settled"] :is(.hero__title-line, .hero__title-segment, .hero__lede, .hero__actions, .hero__proof),
.hero--circuit[data-home-entrance]:focus-within :is(.hero__title-line, .hero__title-segment, .hero__lede, .hero__actions, .hero__proof) {
  animation: none !important;
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  clip-path: none !important;
}
@media (prefers-reduced-motion: reduce), (forced-colors: active), print {
  .hero--circuit[data-home-entrance] :is(.hero__title-line, .hero__title-segment, .hero__lede, .hero__actions, .hero__proof) {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
  }
}
@media (forced-colors: active) {
  .hero--circuit[data-home-entrance] .hero__title-line--signal .hero__title-segment {
    color: CanvasText;
    background: none;
    -webkit-text-fill-color: currentColor;
  }
}
