/* Elementor owns entrance triggers, delay and editable animation controls. */
@keyframes clean-rise {
  from { opacity: 0; transform: translate3d(0, 24px, 0); }
  to { opacity: 1; transform: none; }
}
.clean-site-page .clean-reveal.animated {
  animation-timing-function: cubic-bezier(.22,.61,.36,1);
  /* Release transform after entry so the existing card hover still works. */
  animation-fill-mode: backwards;
}
.clean-site-page .clean-reveal.animated-fast { animation-duration: .65s; }
.clean-site-page .clean-reveal.fadeInUp { animation-name: clean-rise; }
.clean-site-page .clean-reveal:focus-within {
  animation: none !important;
  visibility: visible !important;
  opacity: 1 !important;
  transform: none !important;
}
@media (max-width: 767px) {
  .clean-site-page .clean-reveal.animated-fast { animation-duration: .45s; }
}
@media (prefers-reduced-motion: reduce) {
  .clean-site-page .clean-reveal {
    animation: none !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
@media print {
  .clean-site-page .clean-reveal { animation: none !important; visibility: visible !important; opacity: 1 !important; transform: none !important; }
}
