/* --------------------------------------------------------------------------
   Motion & Transitions
   Desktop only. Server-rendered hero targets start hidden before paint so the
   hero never appears fully rendered and then begins moving afterward.
   -------------------------------------------------------------------------- */

@media (min-width: 992px) {
  html.vh-motion-enabled,
  html.vh-motion-preload {
    --vh-motion-duration: 460ms;
    --vh-motion-ease: cubic-bezier(.2, .65, .28, 1);
    --vh-motion-distance: 26px;
    --vh-motion-scale: .955;
  }

  html.vh-motion-enabled.vh-motion-duration-fast { --vh-motion-duration: 280ms; }
  html.vh-motion-enabled.vh-motion-duration-standard { --vh-motion-duration: 460ms; }
  html.vh-motion-enabled.vh-motion-duration-slow { --vh-motion-duration: 680ms; }
  html.vh-motion-enabled.vh-motion-intensity-moderate,
  html.vh-motion-preload.vh-motion-intensity-moderate {
    --vh-motion-distance: 44px;
    --vh-motion-scale: .92;
  }

  /* Special grids receive a server-side first frame. The footer script only
     adds the visible state; it no longer creates the starting state late. */
  html.vh-motion-preload[class*="-entry-fade"] { --vh-motion-preload-transform: none; }
  html.vh-motion-preload[class*="-entry-fade-up"] { --vh-motion-preload-transform: translate3d(0, var(--vh-motion-distance), 0); }
  html.vh-motion-preload[class*="-entry-slide-left"] { --vh-motion-preload-transform: translate3d(calc(var(--vh-motion-distance) * -1.65), 0, 0); }
  html.vh-motion-preload[class*="-entry-slide-right"] { --vh-motion-preload-transform: translate3d(calc(var(--vh-motion-distance) * 1.65), 0, 0); }
  html.vh-motion-preload[class*="-entry-scale-in"] { --vh-motion-preload-transform: scale(var(--vh-motion-scale)); }

  html.vh-motion-preload.vh-motion-home-portfolio_grid-preload body.home .vh-front-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-home-services_grid-preload body.home .vh-services-grid .service-card,
  html.vh-motion-preload.vh-motion-home-services_grid-preload body.home .vh-services-band .service-card,
  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload #results-portfolio .portfolio-item,
  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload .vh-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-services-services_grid-preload #results-services .vh-service-card-link,
  html.vh-motion-preload.vh-motion-services-services_grid-preload .vh-services-grid .service-card,
  html.vh-motion-preload.vh-motion-services-portfolio_grid-preload .vh-related-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-events-events_grid-preload #results-events .vh-event-card,
  html.vh-motion-preload.vh-motion-events-portfolio_grid-preload .vh-related-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-faq-faq_cards-preload #results-faq .vh-faq-card,
  html.vh-motion-preload.vh-motion-faq-faq_cards-preload .vh-hero-taxonomy-tile {
    opacity: 0;
    transform: var(--vh-motion-preload-transform, translate3d(0, var(--vh-motion-distance), 0));
    will-change: transform, opacity;
    transition:
      opacity var(--vh-motion-duration) var(--vh-motion-ease),
      transform var(--vh-motion-duration) var(--vh-motion-ease);
  }

  html.vh-motion-enabled .vh-motion-target,
  html.vh-motion-preload .vh-motion-hero-target {
    opacity: 0;
    will-change: transform, opacity;
    transition:
      opacity var(--vh-motion-duration) var(--vh-motion-ease),
      transform var(--vh-motion-duration) var(--vh-motion-ease);
    transition-delay: var(--vh-motion-delay, 0ms);
  }

  html.vh-motion-enabled .vh-motion-reveal--fade,
  html.vh-motion-preload .vh-motion-reveal--fade { transform: none; }
  html.vh-motion-enabled .vh-motion-reveal--fade-up,
  html.vh-motion-preload .vh-motion-reveal--fade-up { transform: translate3d(0, var(--vh-motion-distance), 0); }
  html.vh-motion-enabled .vh-motion-reveal--slide-left,
  html.vh-motion-preload .vh-motion-reveal--slide-left { transform: translate3d(calc(var(--vh-motion-distance) * -1.35), 0, 0); }
  html.vh-motion-enabled .vh-motion-reveal--slide-right,
  html.vh-motion-preload .vh-motion-reveal--slide-right { transform: translate3d(calc(var(--vh-motion-distance) * 1.35), 0, 0); }
  html.vh-motion-enabled .vh-motion-reveal--scale-in,
  html.vh-motion-preload .vh-motion-reveal--scale-in { transform: scale(var(--vh-motion-scale)); }

  html.vh-motion-enabled .vh-motion-target.is-vh-motion-visible {
    opacity: 1;
    transform: none;
    will-change: auto;
  }

  @media (hover: hover) and (pointer: fine) {
    html.vh-motion-hover-enabled .vh-motion-hover {
      transition:
        transform 240ms var(--vh-motion-ease),
        box-shadow 240ms var(--vh-motion-ease),
        filter 240ms var(--vh-motion-ease);
    }

    html.vh-motion-hover-enabled .vh-motion-hover img,
    html.vh-motion-hover-enabled .vh-motion-hover .vh-media-card__bg,
    html.vh-motion-hover-enabled .vh-motion-hover .vh-event-card__media img,
    html.vh-motion-hover-enabled .vh-motion-hover .vh-service-card-media img,
    html.vh-motion-hover-enabled .vh-motion-hover .image-frame img {
      transition: transform 320ms var(--vh-motion-ease), filter 240ms var(--vh-motion-ease);
      transform-origin: center;
    }

    html.vh-motion-hover-enabled .vh-motion-hover--lift:hover,
    html.vh-motion-hover-enabled .vh-motion-hover--lift-zoom:hover {
      transform: translate3d(0, -6px, 0);
    }

    html.vh-motion-hover-enabled .vh-motion-hover--image-zoom:hover img,
    html.vh-motion-hover-enabled .vh-motion-hover--lift-zoom:hover img,
    html.vh-motion-hover-enabled .vh-motion-hover--image-zoom:hover .vh-media-card__bg,
    html.vh-motion-hover-enabled .vh-motion-hover--lift-zoom:hover .vh-media-card__bg {
      transform: scale(1.045);
    }

    html.vh-motion-hover-enabled .vh-motion-hover--overlay-fade { position: relative; isolation: isolate; }
    html.vh-motion-hover-enabled .vh-motion-hover--overlay-fade::after {
      content: '';
      position: absolute;
      inset: 0;
      z-index: 1;
      pointer-events: none;
      background: rgba(8, 11, 26, .18);
      opacity: 0;
      transition: opacity 240ms var(--vh-motion-ease);
    }
    html.vh-motion-hover-enabled .vh-motion-hover--overlay-fade:hover::after { opacity: 1; }
  }
}

@media (max-width: 991.98px), (prefers-reduced-motion: reduce) {
  .vh-motion-target,
  .vh-motion-hero-target {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }

  .vh-motion-hover,
  .vh-motion-hover img,
  .vh-motion-hover .vh-media-card__bg,
  .vh-motion-hover .vh-event-card__media img,
  .vh-motion-hover .vh-service-card-media img,
  .vh-motion-hover .image-frame img {
    transition: none !important;
    transform: none !important;
  }
}
