/* Custom Animations Stylesheet */

/* Pulsing SVG elements for talent graph */
@keyframes linkPulse {
  0% {
    stroke-dashoffset: 24;
    opacity: 0.3;
  }
  50% {
    opacity: 0.8;
  }
  100% {
    stroke-dashoffset: 0;
    opacity: 0.3;
  }
}

.graph-link-pulse {
  stroke-dasharray: 8, 4;
  animation: linkPulse 4s infinite linear;
}

@keyframes nodeFloat {
  0% {
    transform: translateY(0px) translateX(0px);
  }
  50% {
    transform: translateY(-5px) translateX(3px);
  }
  100% {
    transform: translateY(0px) translateX(0px);
  }
}

.graph-node-float {
  animation: nodeFloat 6s ease-in-out infinite;
}

.graph-node-float-delayed {
  animation: nodeFloat 8s ease-in-out infinite;
  animation-delay: 2s;
}

/* Micro-interaction: Shimmer indicator */
@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

.shimmer-bg {
  background: linear-gradient(90deg, #F4F1EA 25%, #E2D8C3 37%, #F4F1EA 63%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite linear;
}

/* Micro-interaction: Simple fade reveal */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-fade-in-up {
  animation: fadeInUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Hover rotation */
.hover-rotate-3d {
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}

.hover-rotate-3d:hover {
  transform: perspective(1000px) rotateX(4deg) rotateY(-4deg) translateY(-4px);
}
