/* ================================================================
   ANCROVIA TECHNOLOGIES PRIVATE LIMITED
   Animations & Keyframes
   ================================================================ */

/* ---- Keyframes ---- */

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-28px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInLeft {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes fadeInRight {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.88); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes slideDown {
  from { opacity: 0; max-height: 0; transform: translateY(-8px); }
  to   { opacity: 1; max-height: 600px; transform: translateY(0); }
}

@keyframes floatGlow {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33%       { transform: translate(-20px, -30px) scale(1.05); }
  66%       { transform: translate(20px, 20px) scale(0.95); }
}

@keyframes floatCard {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-14px); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50%       { transform: scale(1.25); opacity: 0.7; }
}

@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position:  200% center; }
}

@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ---- Scroll-triggered Animation Setup ---- */

[data-animate] {
  opacity: 0;
  transition: opacity 0.7s ease, transform 0.7s ease;
}

[data-animate="fade-in"]    { transform: none; }
[data-animate="fade-up"]    { transform: translateY(36px); }
[data-animate="fade-down"]  { transform: translateY(-36px); }
[data-animate="fade-left"]  { transform: translateX(-40px); }
[data-animate="fade-right"] { transform: translateX(40px); }
[data-animate="scale-in"]   { transform: scale(0.9); }

[data-animate].is-visible {
  opacity: 1;
  transform: none !important;
}

/* ---- Stagger Delays ---- */
[data-delay="100"] { transition-delay: 0.10s; }
[data-delay="150"] { transition-delay: 0.15s; }
[data-delay="200"] { transition-delay: 0.20s; }
[data-delay="250"] { transition-delay: 0.25s; }
[data-delay="300"] { transition-delay: 0.30s; }
[data-delay="350"] { transition-delay: 0.35s; }
[data-delay="400"] { transition-delay: 0.40s; }
[data-delay="500"] { transition-delay: 0.50s; }

/* ---- Static Animation Classes ---- */
.animate-fade-in       { animation: fadeIn      0.6s ease forwards; }
.animate-fade-up       { animation: fadeInUp    0.7s ease forwards; }
.animate-fade-down     { animation: fadeInDown  0.7s ease forwards; }
.animate-fade-left     { animation: fadeInLeft  0.7s ease forwards; }
.animate-fade-right    { animation: fadeInRight 0.7s ease forwards; }
.animate-scale-in      { animation: scaleIn     0.5s ease forwards; }

/* ---- Floating Animations (decorative elements) ---- */
.float-1 { animation: floatCard 4s ease-in-out infinite; }
.float-2 { animation: floatCard 5s ease-in-out infinite 0.5s; }
.float-3 { animation: floatCard 4.5s ease-in-out infinite 1s; }

/* ---- Smooth Scroll Reveal Transition ---- */
[data-animate] {
  transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* ---- Prefers Reduced Motion ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }

  [data-animate] {
    opacity: 1;
    transform: none !important;
    transition: none;
  }
}
