/*
 * ========================================================================
 * ANALYTIC ENDEAVORS - SHARED ANIMATIONS
 * Copyright (c) 2024-2025 Havens Consulting Inc. All Rights Reserved.
 * Origin: analyticendeavors.com | havens-consulting.com
 * ========================================================================
 */

/* ===== CUSTOM CSS PROPERTIES FOR ANIMATIONS ===== */
@property --border-angle {
  syntax: '<angle>';
  initial-value: 0deg;
  inherits: false;
}

/* ===== SCROLL INDICATOR BOUNCE ===== */
@keyframes bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(10px); }
}

/* Alternate bounce without translateX (for non-centered elements) */
@keyframes bounceSimple {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-10px); }
  60% { transform: translateY(-5px); }
}

/* ===== FLOATING PARTICLES ===== */
@keyframes float {
  0% { transform: translateY(100vh) scale(0); opacity: 0; }
  10% { opacity: 0.3; }
  90% { opacity: 0.3; }
  100% { transform: translateY(-100vh) scale(1); opacity: 0; }
}

/* ===== PULSE GLOW (buttons, cards, logos) ===== */
@keyframes pulseGlow {
  0%, 100% { opacity: 0.5; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.2); }
}

/* Simpler pulse without translate (for box-shadow animations) */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

/* ===== ROTATING BORDER (conic-gradient animation) ===== */
@keyframes rotateBorder {
  0% { --border-angle: 0deg; }
  100% { --border-angle: 360deg; }
}

/* ===== LOGO ANIMATIONS ===== */
@keyframes logoFloat {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-10px) scale(1.02); }
}

@keyframes logoGlow {
  0%, 100% {
    filter: drop-shadow(0 0 15px rgba(0, 153, 153, 0.25));
  }
  50% {
    filter: drop-shadow(0 0 25px rgba(0, 184, 184, 0.4)) drop-shadow(0 0 45px rgba(0, 153, 153, 0.15));
  }
}

@keyframes logoGlowLight {
  0%, 100% {
    filter: drop-shadow(0 0 15px rgba(0, 153, 153, 0.2));
  }
  50% {
    filter: drop-shadow(0 0 25px rgba(0, 184, 184, 0.3)) drop-shadow(0 0 40px rgba(0, 153, 153, 0.15));
  }
}

/* ===== SHIMMER SWEEP ===== */
@keyframes shimmerSweep {
  0% { left: -100%; }
  50%, 100% { left: 200%; }
}

/* ===== ARROW/BUTTON ANIMATIONS ===== */
@keyframes arrowBounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(3px); }
}

@keyframes arrowPulse {
  0%, 100% { transform: translateX(0); }
  50% { transform: translateX(5px); }
}

/* ===== CARD ANIMATIONS ===== */

/* Diagonal shimmer sweep (for feature cards) */
@keyframes shimmer {
  0% { transform: translateX(-100%) rotate(45deg); }
  100% { transform: translateX(100%) rotate(45deg); }
}

/* Counter bump (for stat displays) */
@keyframes counterBump {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.2); }
}

/* Shake animation (for interactive elements) */
@keyframes shake {
  0%, 100% { transform: scale(1.1) rotate(0deg); }
  25% { transform: scale(1.1) rotate(-5deg); }
  75% { transform: scale(1.1) rotate(5deg); }
}

/* Path pulse (for indicators) */
@keyframes pathPulse {
  0%, 100% { transform: translateX(-50%) scaleY(1); opacity: 0.5; }
  50% { transform: translateX(-50%) scaleY(1.5); opacity: 1; }
}

/* Danger shake (status animation) */
@keyframes dangerShake {
  0%, 100% { transform: scale(1.15) translateX(0); }
  20%, 60% { transform: scale(1.15) translateX(-5px); }
  40%, 80% { transform: scale(1.15) translateX(5px); }
}

/* Safe glow (status animation) */
@keyframes safeGlow {
  0%, 100% { filter: drop-shadow(0 4px 12px rgba(0, 153, 153, 0.4)); }
  50% { filter: drop-shadow(0 8px 20px rgba(0, 153, 153, 0.8)); }
}

/* ===== REDUCED MOTION ===== */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
