/* Animation helpers */
[data-aos] {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: 0.6s;
  transition-timing-function: ease;
}

[data-aos="fade-up"] {
  transform: translateY(30px);
}

[data-aos="fade-down"] {
  transform: translateY(-30px);
}

[data-aos="fade-left"] {
  transform: translateX(30px);
}

[data-aos="fade-right"] {
  transform: translateX(-30px);
}

[data-aos="zoom-in"] {
  transform: scale(0.9);
}

[data-aos="zoom-out"] {
  transform: scale(1.1);
}

[data-aos].aos-animate {
  opacity: 1;
  transform: translate(0) scale(1);
}

/* Delay classes */
[data-aos][data-aos-delay="100"] {
  transition-delay: 0.1s;
}

[data-aos][data-aos-delay="200"] {
  transition-delay: 0.2s;
}

[data-aos][data-aos-delay="300"] {
  transition-delay: 0.3s;
}

[data-aos][data-aos-delay="400"] {
  transition-delay: 0.4s;
}

[data-aos][data-aos-delay="500"] {
  transition-delay: 0.5s;
}

/* Durations classes */
[data-aos][data-aos-duration="1000"] {
  transition-duration: 1s;
}

[data-aos][data-aos-duration="1500"] {
  transition-duration: 1.5s;
}

[data-aos][data-aos-duration="2000"] {
  transition-duration: 2s;
}

/* Custom animations */
@keyframes float {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

.float-animation {
  animation: float 3s ease-in-out infinite;
}

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}

.pulse-animation {
  animation: pulse 2s ease-in-out infinite;
}

@keyframes bounce {
  0%, 20%, 50%, 80%, 100% {
    transform: translateY(0);
  }
  40% {
    transform: translateY(-20px);
  }
  60% {
    transform: translateY(-10px);
  }
}

.bounce-animation {
  animation: bounce 2s infinite;
}

/* Timeline animation for how it works section */
.timeline-connector {
  position: absolute;
  top: 0;
  left: 1.5rem;
  width: 2px;
  height: 0;
  background-color: var(--primary);
  transition: height 1s ease;
}

.timeline-connected .timeline-connector {
  height: 100%;
}
