/* --------------------------------------------------------------------------








   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-portfolio_grid-preload body.home .vh-front-portfolio-grid .vh-portfolio-tile,








  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 #results-portfolio .vh-portfolio-tile,








  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload .vh-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload .vh-portfolio-grid .vh-portfolio-tile,








  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-services-portfolio_grid-preload .vh-related-portfolio-grid .vh-portfolio-tile,








  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-events-portfolio_grid-preload .vh-related-portfolio-grid .vh-portfolio-tile,








  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;








    transform: none;








    transition: none;








    animation: none;








  }

















  .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;








    transform: none;








  }








}









/* R4.14: reduced-motion/mobile canonical reset without forced priority.
 * Match the active motion selectors at equal-or-greater specificity so the
 * accessibility preference wins through the normal cascade. */
@media (max-width: 991.98px), (prefers-reduced-motion: reduce) {
  html.vh-motion-enabled .vh-motion-target,
  html.vh-motion-preload .vh-motion-target,
  html.vh-motion-enabled .vh-motion-hero-target,
  html.vh-motion-preload .vh-motion-hero-target {
    opacity: 1;
    transform: none;
    transition: none;
    animation: none;
    will-change: auto;
  }

  html.vh-motion-hover-enabled .vh-motion-hover,
  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: none;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) and (min-width: 992px) {
  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-portfolio_grid-preload body.home .vh-front-portfolio-grid .vh-portfolio-tile,
  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 #results-portfolio .vh-portfolio-tile,
  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload .vh-portfolio-grid .portfolio-item,
  html.vh-motion-preload.vh-motion-portfolio-portfolio_grid-preload .vh-portfolio-grid .vh-portfolio-tile,
  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-services-portfolio_grid-preload .vh-related-portfolio-grid .vh-portfolio-tile,
  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-events-portfolio_grid-preload .vh-related-portfolio-grid .vh-portfolio-tile,
  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: 1;
    transform: none;
    transition: none;
    animation: none;
    will-change: auto;
  }
}
