/* Three distinct entrances, with reserved line geometry and a static fallback. */
:is(.ma-hero-copy,.cs-hero-copy,.rc-hero-copy,.iv-hero-copy):has(.hero-title-ready), h1[data-hero-title].hero-title-ready { animation:none; }
h1[data-hero-title].hero-title-ready .hero-title-line {
  display:block; position:relative; width:max-content; max-width:100%;
  color:inherit; background:none; -webkit-text-fill-color:currentColor;
  white-space:normal; text-wrap:initial; padding:0; margin:0; filter:none;
}
h1[data-hero-title].hero-title-ready .hero-title-letter {
  display:inline-block; position:relative; padding:0; margin:0; color:inherit; background:none; -webkit-text-fill-color:currentColor;
}
.hero-title-line--type .hero-title-letter {
  opacity:0; animation:hero-title-type 1ms calc(var(--hero-type-start, .3s) + var(--letter) * var(--hero-type-step, .105s)) forwards;
}
.hero-title-line--type .hero-title-letter::after {
  content:""; position:absolute; width:.025em; height:.72em; margin-left:.055em; top:.16em;
  background:#b8e5ff; box-shadow:0 0 12px #8cccff80; opacity:0;
  animation:hero-title-caret .105s calc(var(--hero-type-start, .3s) + var(--letter) * var(--hero-type-step, .105s)) linear;
}
h1[data-hero-title].hero-title-ready .hero-title-line--brush {
  padding-bottom:.16em; margin-bottom:-.16em;
  /* Clip only during the reveal. Tight letter spacing can paint the final
     glyph outside the line box, so the settled heading must be unclipped. */
  clip-path:none;
  animation:hero-title-brush 1.1s var(--hero-brush-start, 1.75s) cubic-bezier(.32,.02,.18,1) backwards;
}
h1[data-hero-title].hero-title-ready .hero-title-line--finale { color:var(--hero-title-accent, #a9dcff); isolation:isolate; }
.hero-title-line--finale .hero-title-letter {
  opacity:0; transform:translateY(.32em) scale(.86); filter:blur(9px);
  animation:hero-title-crystallize 1.15s calc(var(--hero-finale-start, 2.95s) + var(--letter) * .065s) cubic-bezier(.16,1,.3,1) forwards;
}
.hero-title-line--finale::after {
  content:""; position:absolute; pointer-events:none; z-index:-1;
  left:-3%; right:-3%; top:15%; height:100%; opacity:0;
  background:radial-gradient(ellipse at 50% 55%,#5dbdff55, #4679fa18 45%,transparent 72%);
  filter:blur(16px); transform:scaleX(.3);
  animation:hero-title-bloom 2.2s calc(var(--hero-finale-start, 2.95s) + .3s) ease-out both;
}
.hero-title-line--finale::before {
  content:""; pointer-events:none; position:absolute; left:0; right:0; bottom:-.12em; height:2px;
  background:linear-gradient(90deg,transparent,#539ddd88,#e0f5ff,#539ddd88,transparent);
  box-shadow:0 0 16px #71c7ff88; transform:scaleX(0); opacity:0;
  animation:hero-title-horizon 1.6s calc(var(--hero-finale-start, 2.95s) + .65s) cubic-bezier(.16,1,.3,1) both;
}
@keyframes hero-title-type { to { opacity:1; } }
@keyframes hero-title-caret { 0%,99% { opacity:1; } 100% { opacity:0; } }
@keyframes hero-title-brush {
  0% { clip-path:polygon(0 2%,0 0,0 100%,0 97%,0 75%,0 50%,0 25%); }
  45% { clip-path:polygon(0 2%,56% 0,51% 100%,0 97%,0 75%,0 50%,0 25%); }
  75% { clip-path:polygon(0 0,91% 0,84% 100%,0 100%,0 75%,0 50%,0 25%); }
  100% { clip-path:polygon(0 0,100% 0,100% 100%,0 100%,0 75%,0 50%,0 25%); }
}
@keyframes hero-title-crystallize {
  0% { opacity:0; transform:translateY(.32em) scale(.86); filter:blur(9px); text-shadow:0 0 0 transparent; }
  42% { opacity:1; filter:blur(0); color:#f3fcff; text-shadow:var(--hero-heading-shadow, 0 2px 4px #0009),0 0 24px #8bd2ff,0 0 50px #468aff88; }
  100% { opacity:1; transform:none; filter:blur(0); color:var(--hero-title-accent, #a9dcff); text-shadow:var(--hero-heading-shadow, 0 2px 4px #0009),0 0 25px #62b6ff25; }
}
@keyframes hero-title-bloom { 0% { opacity:0; transform:scaleX(.3); } 35% { opacity:1; } 100% { opacity:.3; transform:scaleX(1); } }
@keyframes hero-title-horizon { 0% { opacity:0; transform:scaleX(0); } 35% { opacity:1; } 100% { opacity:.45; transform:scaleX(1); } }
h1[data-hero-title].hero-title-ready[data-title-centered] .hero-title-line { margin-inline:auto; }
.hero-title-static .hero-title-line,.hero-title-static .hero-title-letter { animation:none!important; opacity:1!important; transform:none!important; filter:none!important; clip-path:none!important; }
.hero-title-static .hero-title-line::before,.hero-title-static .hero-title-line::after,.hero-title-static .hero-title-letter::after { display:none!important; }
@media (prefers-reduced-motion:reduce) {
  .hero-title-ready .hero-title-line,.hero-title-ready .hero-title-letter { animation:none!important; opacity:1!important; transform:none!important; filter:none!important; clip-path:none!important; }
  .hero-title-ready .hero-title-line::before,.hero-title-ready .hero-title-line::after,.hero-title-ready .hero-title-letter::after { display:none!important; }
}

/* Whole words wrap together, without changing the reserved heading height. */
h1[data-hero-title].hero-title-ready .hero-title-word { display:inline-block; white-space:nowrap; padding:0; margin:0; filter:none; color:inherit; background:none; -webkit-text-fill-color:currentColor; }
h1[data-hero-title].hero-title-ready .hero-title-line { font-size:inherit; font-weight:inherit; letter-spacing:inherit; line-height:inherit; }
/* Existing page motion controls also finish the shared entrance immediately. */
:is(.product-motion-paused,.cs-motion-paused,.iv-motion-paused,.rc-motion-paused,.ma-motion-paused) .hero-title-ready :is(.hero-title-line,.hero-title-letter) { animation:none!important; opacity:1!important; transform:none!important; filter:none!important; clip-path:none!important; }
:is(.product-motion-paused,.cs-motion-paused,.iv-motion-paused,.rc-motion-paused,.ma-motion-paused) .hero-title-ready :is(.hero-title-line,.hero-title-letter)::after,
:is(.product-motion-paused,.cs-motion-paused,.iv-motion-paused,.rc-motion-paused,.ma-motion-paused) .hero-title-ready .hero-title-line::before { display:none!important; }
