/* Shared site motion. Content is visible by default, including without JS.
   Animate once on entry; no permanent transforms, layout shifts or scroll lock. */
.site-motion .site-motion-target {
  --site-enter-delay: 0ms;
}

.site-motion [data-site-stagger="1"] { --site-enter-delay: var(--motion-duration-stagger); }
.site-motion [data-site-stagger="2"] { --site-enter-delay: calc(var(--motion-duration-stagger) * 2); }
.site-motion [data-site-stagger="3"] { --site-enter-delay: calc(var(--motion-duration-stagger) * 3); }

.site-motion .hero__eyebrow-dot { animation: none; }

@media (prefers-reduced-motion: no-preference) {
  .site-motion .site-motion-enter {
    animation: site-enter var(--motion-duration-enter) var(--motion-easing) var(--site-enter-delay) backwards;
  }

  /* Keep the principal heading opaque for immediate reading and first paint. */
  .site-motion h1.site-motion-enter {
    animation-name: site-heading-enter;
  }

  .site-motion .site-motion-target.site-motion-settled,
  .site-motion .site-motion-target:focus-within {
    animation: none;
  }

  .site-motion .pulse__browser.site-motion-enter .pulse__panel.is-visible {
    animation: site-panel-enter var(--motion-duration-base) var(--motion-easing);
  }

  .site-motion .pulse__browser.site-motion-enter .pulse__panel.is-visible .pulse__hbar-fill {
    transform-origin: left center;
    animation: site-bar-horizontal var(--motion-duration-enter) var(--motion-easing);
  }

  .site-motion .pulse__browser.site-motion-enter .pulse__panel.is-visible .pulse__vbar-fill {
    transform-origin: center bottom;
    animation: site-bar-vertical var(--motion-duration-enter) var(--motion-easing);
  }

  .site-motion details[open] > :is(.faq-answer, .pulse__faq-answer) {
    animation: site-panel-enter var(--motion-duration-base) var(--motion-easing);
  }

  .site-motion :is(.button, .services__card, .content-card, .industries__card, .listing-card, .faq-item) {
    transition-duration: var(--motion-duration-hover-delay);
  }

  @keyframes site-enter {
    from { opacity: 0; transform: translateY(var(--motion-distance-enter)); }
    to { opacity: 1; transform: translateY(0); }
  }

  @keyframes site-heading-enter {
    from { transform: translateY(var(--motion-distance-enter)); }
    to { transform: translateY(0); }
  }

  @keyframes site-panel-enter {
    from { opacity: 0; }
    to { opacity: 1; }
  }

  @keyframes site-bar-horizontal {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
  }

  @keyframes site-bar-vertical {
    from { transform: scaleY(0); }
    to { transform: scaleY(1); }
  }
}

@media print {
  .site-motion .site-motion-enter { animation: none; }
}
