/* Custom (non-Tailwind) helpers for the React->Twig conversion */

/* Reveal-on-scroll (replaces AnimatedSection / whileInView) */
[data-reveal="true"]{
  opacity: 0;
  transform: translate3d(0,40px,0);
  transition: opacity .6s ease-out, transform .6s ease-out;
  will-change: opacity, transform;
}
[data-reveal="true"][data-direction="left"]{ transform: translate3d(-40px,0,0); }
[data-reveal="true"][data-direction="right"]{ transform: translate3d(40px,0,0); }
[data-reveal="true"].is-visible{
  opacity: 1;
  transform: translate3d(0,0,0);
}

/* Floating blobs (replaces simple framer-motion loops) */
@keyframes df-float-y {
  0%,100% { transform: translate3d(0,0,0); }
  50% { transform: translate3d(0,-20px,0); }
}
@keyframes df-float-y2 {
  0%,100% { transform: translate3d(0,0,0); }
  50% { transform: translate3d(0,15px,0); }
}
@keyframes df-spin-slow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

.df-float-y{ animation: df-float-y 8s ease-in-out infinite; }
.df-float-y2{ animation: df-float-y2 10s ease-in-out infinite; }
.df-spin-slow{ animation: df-spin-slow 20s linear infinite; }

/* Header states */
[data-header].is-scrolled{
  background: rgba(255,255,255,.85);
  backdrop-filter: blur(16px);
  box-shadow: 0 10px 30px rgba(0,0,0,.08);
  padding-top: .5rem;
  padding-bottom: .5rem;
}

/* Mobile menu transitions */
[data-mobile-menu]{
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transition: max-height .35s ease, opacity .25s ease;
}
[data-mobile-menu].is-open{
  max-height: 80vh;
  opacity: 1;
}

/* Services dropdown */
[data-services-dropdown]{
  opacity: 0;
  transform: translateY(10px) scale(.98);
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
}
[data-services].is-open [data-services-dropdown]{
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}

/* Testimonial carousel */
[data-testimonial-slide]{ display:none; }
[data-testimonial-slide].is-active{ display:block; }

.freeform-form-errors, 
.freeform-errors {
  display: none;
}
.freeform-has-errors {
  border-color: red;
}