@keyframes load {
  to {
    transform:translateX(300%)
  }
}
@keyframes shimmer {
  0% {
    transform:translateX(-120%) rotate(15deg)
  }
  100% {
    transform:translateX(300%) rotate(15deg)
  }
}
@keyframes ticker {
  to {
    transform:translateX(-50%)
  }
}
@keyframes float {
  0%, 100% {
    transform:translate3d(0, 0, 0)
  }
  50% {
    transform:translate3d(0, -14px, 0)
  }
}
.reveal {
  opacity:0;
  transform:translateY(45px);
  transition:opacity .9s var(--ease), transform .9s var(--ease)
}
.reveal.visible {
  opacity:1;
  transform:none
}
.hero-content .eyebrow, .hero-content h1, .hero-content .hero-text, .hero-content .hero-actions {
  opacity:0;
  transform:translateY(30px);
  animation:heroIn 1s .55s var(--ease) forwards
}
.hero-content h1 {
  animation-delay:.68s
}
.hero-content .hero-text {
  animation-delay:.8s
}
.hero-content .hero-actions {
  animation-delay:.92s
}
@keyframes heroIn {
  to {
    opacity:1;
    transform:none
  }
}
.service-row:hover .service-name h3 {
  transform:translateX(5px)
}
.service-name h3 {
  transition:transform .5s var(--ease)
}
.location-item {
  transition:padding .4s var(--ease), background .4s
}
.location-item:hover {
  padding-left:12px;
  background:#ffffff05
}
.photo-slot.has-image {
  background-size:cover;
  background-position:center
}
.photo-slot.has-image:after {
  background:linear-gradient(100deg, transparent, #fff1, transparent)
}
@media (prefers-reduced-motion:reduce) {
  *, *:before, *:after {
    animation:none!important;
    transition:none!important;
    scroll-behavior:auto!important
  }
}
