.reveal { opacity: 1; transform: none; }
.js .reveal { opacity: 0; transform: translateY(22px); transition: opacity .72s ease, transform .72s cubic-bezier(.16, 1, .3, 1); }
.js .reveal.is-visible { opacity: 1; transform: none; }
.service-card.reveal, .gallery-item.reveal { transition-delay: calc(var(--card-index, var(--gallery-index, 0)) * 48ms); }
.hero-copy.reveal.is-visible > .eyebrow,
.hero-copy.reveal.is-visible > h1,
.hero-copy.reveal.is-visible > .hero-intro,
.hero-copy.reveal.is-visible > .hero-actions { animation: hero-copy-in .72s cubic-bezier(.16, 1, .3, 1) both; }
.hero-copy.reveal.is-visible > .eyebrow { animation-delay: .06s; }
.hero-copy.reveal.is-visible > h1 { animation-delay: .14s; }
.hero-copy.reveal.is-visible > .hero-intro { animation-delay: .22s; }
.hero-copy.reveal.is-visible > .hero-actions { animation-delay: .3s; }
.hero-visual.reveal.is-visible .hero-image-frame { animation: hero-image-in 1s cubic-bezier(.16, 1, .3, 1) both; }
.hero-visual.reveal.is-visible .hero-secondary-image { animation: mini-image-in .72s .38s cubic-bezier(.16, 1, .3, 1) both; }
.hero-visual.reveal.is-visible .hero-image-note { animation: note-in .55s .5s ease both; }
.video-choice:focus-visible, .gallery-item:focus-visible { outline: 3px solid var(--accent); outline-offset: 3px; }
.service-image-arrow { transition: background .2s ease, color .2s ease, transform .35s cubic-bezier(.16, 1, .3, 1); }
.service-image:hover .service-image-arrow { transform: rotate(45deg); background: var(--accent); color: #241800; }
.price-content .price-panel-heading { animation: price-panel-in .35s cubic-bezier(.16, 1, .3, 1) both; }
.price-content .price-row { animation: price-row-in .34s cubic-bezier(.16, 1, .3, 1) both; }
.price-content .price-row:nth-child(2) { animation-delay: 35ms; }
.price-content .price-row:nth-child(3) { animation-delay: 70ms; }
.price-content .price-row:nth-child(4) { animation-delay: 105ms; }
.price-content .price-row:nth-child(5) { animation-delay: 140ms; }
.price-content .price-row:nth-child(6) { animation-delay: 175ms; }
.price-content .price-row:nth-child(7) { animation-delay: 210ms; }
.lightbox[open] { animation: lightbox-in .32s cubic-bezier(.16, 1, .3, 1) both; }
.lightbox[open]::backdrop { animation: backdrop-in .28s ease both; }

@keyframes loader { from { transform: translateX(-110%); } to { transform: translateX(110%); } }
@keyframes hero-copy-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@keyframes hero-image-in { from { opacity: 0; clip-path: inset(7% 7% 7% 7% round 18px); transform: scale(1.03); } to { opacity: 1; clip-path: inset(0 round 18px); transform: scale(1); } }
@keyframes mini-image-in { from { opacity: 0; transform: translate(-12px, 16px) rotate(-4deg); } to { opacity: 1; transform: none; } }
@keyframes note-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }
@keyframes price-panel-in { from { opacity: 0; transform: translateY(7px); } to { opacity: 1; transform: none; } }
@keyframes price-row-in { from { opacity: 0; transform: translateX(-8px); } to { opacity: 1; transform: none; } }
@keyframes lightbox-in { from { opacity: 0; transform: scale(.97) translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes backdrop-in { from { opacity: 0; } to { opacity: 1; } }

@media (max-width: 760px) {
  .main-navigation > a { opacity: 0; transform: translateX(-12px); transition: opacity .28s ease, transform .36s cubic-bezier(.16, 1, .3, 1); }
  .main-navigation.is-open > a { opacity: 1; transform: none; }
  .main-navigation.is-open > a:nth-child(1) { transition-delay: 35ms; }
  .main-navigation.is-open > a:nth-child(2) { transition-delay: 70ms; }
  .main-navigation.is-open > a:nth-child(3) { transition-delay: 105ms; }
  .main-navigation.is-open > a:nth-child(4) { transition-delay: 140ms; }
  .main-navigation.is-open > a:nth-child(5) { transition-delay: 175ms; }
  .main-navigation.is-open > a:nth-child(6) { transition-delay: 210ms; }
  .main-navigation.is-open > a:nth-child(7) { transition-delay: 245ms; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-delay: 0s !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .reveal { opacity: 1; transform: none; }
}
