/* 
  DRISHTI (Digital Risk Intelligence & Social Threat Intelligence)
  Animation Stylesheet (css/animation.css)
*/

/* Core Keyframes */
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes pulse-ring {
  0% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
  }
  70% {
    transform: scale(1);
    box-shadow: 0 0 0 8px rgba(16, 185, 129, 0);
  }
  100% {
    transform: scale(0.95);
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
  }
}

@keyframes logo-glow {
  0% {
    filter: drop-shadow(0 0 5px rgba(0, 0, 102, 0.5)) drop-shadow(0 0 10px rgba(56, 189, 248, 0.3));
  }
  50% {
    filter: drop-shadow(0 0 12px rgba(0, 0, 102, 0.8)) drop-shadow(0 0 20px rgba(56, 189, 248, 0.6));
  }
  100% {
    filter: drop-shadow(0 0 5px rgba(0, 0, 102, 0.5)) drop-shadow(0 0 10px rgba(56, 189, 248, 0.3));
  }
}

@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@keyframes slide-in-right {
  from {
    transform: translateX(100%);
    opacity: 0;
  }
  to {
    transform: translateX(0);
    opacity: 1;
  }
}

@keyframes slide-up {
  from {
    transform: translateY(20px);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

/* Class Bindings */
.animate-fade-in {
  animation: fade-in 0.4s ease-out forwards;
}

.animate-slide-up {
  animation: slide-up 0.5s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

.animate-logo-pulse {
  animation: logo-glow 3s infinite ease-in-out;
}

.toast-slide-in {
  animation: slide-in-right 0.35s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}

/* Hover effects */
.hover-scale {
  transition: var(--transition-smooth);
}
.hover-scale:hover {
  transform: scale(1.02);
}

.hover-glow {
  transition: var(--transition-smooth);
}
.hover-glow:hover {
  box-shadow: 0 0 15px rgba(0, 0, 102, 0.25);
  border-color: rgba(56, 189, 248, 0.3) !important;
}

/* Micro-interaction for lists */
.list-item-hover {
  transition: var(--transition-smooth);
}
.list-item-hover:hover {
  transform: translateX(4px);
  background-color: rgba(255, 255, 255, 0.02) !important;
}

/* Skeleton Loading Shimmer */
.shimmer-bg {
  background: linear-gradient(90deg, rgba(255,255,255,0.03) 25%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite linear;
}
