/* Initial states for JS animations */
[data-animate] {
  opacity: 0;
  will-change: transform, opacity;
}

[data-animate='fade-up'] {
  transform: translateY(40px);
}

[data-animate='fade-in'] {
  opacity: 0;
}

[data-animate='scale-in'] {
  transform: scale(0.92);
}

.is-visible {
  opacity: 1 !important;
  transform: none !important;
  transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}

/* CSS Keyframes */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 0 20px rgba(0, 123, 255, 0.2); }
  50% { box-shadow: 0 0 35px rgba(0, 123, 255, 0.45); }
}

@keyframes pulse-ring {
  0% { transform: scale(0.95); opacity: 0.8; }
  50% { transform: scale(1.08); opacity: 0.3; }
  100% { transform: scale(0.95); opacity: 0.8; }
}

/* SVG Line Dash Flow */
@keyframes dashFlow {
  to {
    stroke-dashoffset: -40;
  }
}

.ecosystem-flow-line {
  stroke-dasharray: 6 6;
  animation: dashFlow 1.8s linear infinite;
}

/* Utility animation classes */
.ne-float {
  animation: float 5s ease-in-out infinite;
}

.ne-pulse-glow {
  animation: pulse-glow 3s ease-in-out infinite;
}
