/* =====================================================
   SITESTAR SECURITY SERVICES LIMITED
   Animations Stylesheet - Keyframes & Scroll Reveal
   ===================================================== */

/* -----------------------------------------------------
   KEYFRAMES
   ----------------------------------------------------- */
@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes scroll-wheel {
  0% { opacity: 1; top: 8px; }
  70% { opacity: 0; top: 24px; }
  100% { opacity: 0; top: 8px; }
}

@keyframes pulse-ring {
  0% { box-shadow: 0 0 0 0 rgba(240, 180, 41, 0.45); }
  70% { box-shadow: 0 0 0 14px rgba(240, 180, 41, 0); }
  100% { box-shadow: 0 0 0 0 rgba(240, 180, 41, 0); }
}

@keyframes ripple-effect {
  to { transform: scale(3); opacity: 0; }
}

@keyframes sweep {
  0% { transform: translateX(-10%) rotate(-8deg); }
  100% { transform: translateX(60%) rotate(-8deg); }
}

@keyframes float-y {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}

@keyframes blink-caret {
  50% { border-color: transparent; }
}

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes shimmer {
  0% { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}

/* -----------------------------------------------------
   SCROLL REVEAL - driven by JS toggling .is-visible
   ----------------------------------------------------- */
[data-reveal] {
  opacity: 0;
  transition: opacity 0.8s cubic-bezier(0.4, 0, 0.2, 1), transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
}

[data-reveal='fade-up'] { transform: translateY(40px); }
[data-reveal='fade-down'] { transform: translateY(-40px); }
[data-reveal='fade-left'] { transform: translateX(60px); }
[data-reveal='fade-right'] { transform: translateX(-60px); }
[data-reveal='scale'] { transform: scale(0.85); }
[data-reveal='rotate'] { transform: rotate(-6deg) scale(0.9); }

[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* Stagger children with data-reveal-group */
[data-reveal-group] > [data-reveal]:nth-child(1) { transition-delay: 0s; }
[data-reveal-group] > [data-reveal]:nth-child(2) { transition-delay: 0.1s; }
[data-reveal-group] > [data-reveal]:nth-child(3) { transition-delay: 0.2s; }
[data-reveal-group] > [data-reveal]:nth-child(4) { transition-delay: 0.3s; }
[data-reveal-group] > [data-reveal]:nth-child(5) { transition-delay: 0.4s; }
[data-reveal-group] > [data-reveal]:nth-child(6) { transition-delay: 0.5s; }
[data-reveal-group] > [data-reveal]:nth-child(7) { transition-delay: 0.6s; }
[data-reveal-group] > [data-reveal]:nth-child(8) { transition-delay: 0.7s; }

/* Hero parallax float accents */
.floating-accent {
  animation: float-y 5s ease-in-out infinite;
}

/* Typing effect cursor */
.typing-text::after {
  content: '|';
  display: inline-block;
  margin-left: 2px;
  color: var(--color-gold);
  animation: blink-caret 0.8s step-end infinite;
}

/* Card lift utility (reused across cards) */
.lift-on-hover {
  transition: transform var(--transition-base), box-shadow var(--transition-base);
}

.lift-on-hover:hover {
  transform: translateY(-8px);
  box-shadow: var(--shadow-lg);
}

/* Image lazy-load fade */
img[loading='lazy'] {
  opacity: 0;
  transition: opacity 0.5s ease;
}

img[loading='lazy'].is-loaded,
img.is-loaded {
  opacity: 1;
}

/* Skeleton shimmer for images loading */
.img-skeleton {
  background: linear-gradient(90deg, var(--color-bg-alt) 25%, #eceef2 37%, var(--color-bg-alt) 63%);
  background-size: 800px 100%;
  animation: shimmer 1.6s linear infinite;
}

/* Number counter pop */
.stat__number.is-counting {
  animation: fade-in 0.3s ease;
}

/* Reduced motion accessibility */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }
}
