/* =====================================================================
   VERITAS GLOBAL - ANIMATIONS STYLESHEET
   All keyframe animations, transitions & motion effects
   ===================================================================== */

/* ---------- KEYFRAMES ---------- */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes ripple { to { transform: scale(4); opacity: 0; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeInDown { from { opacity: 0; transform: translateY(-30px); } 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 floatShape {
  0%, 100% { transform: translate(0, 0) scale(1); }
  33% { transform: translate(30px, -30px) scale(1.05); }
  66% { transform: translate(-20px, 20px) scale(.95); }
}
@keyframes slowZoom {
  from { transform: scale(1.05); }
  to { transform: scale(1.15); }
}
@keyframes bounce {
  0%, 100% { transform: translateX(-50%) translateY(0); }
  50% { transform: translateX(-50%) translateY(-10px); }
}
@keyframes pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(201,162,39,.4); }
  50% { box-shadow: 0 0 0 12px rgba(201,162,39,0); }
}
@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
@keyframes gradientMove {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-12px); }
}
@keyframes glow {
  0%, 100% { box-shadow: 0 0 20px rgba(201,162,39,.3); }
  50% { box-shadow: 0 0 40px rgba(201,162,39,.6); }
}
@keyframes slideInUp {
  from { opacity: 0; transform: translateY(60px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(.85); }
  to { opacity: 1; transform: scale(1); }
}

/* ---------- ENTRANCE ANIMATIONS (applied on load) ---------- */
.animate-fade-up { animation: fadeInUp .8s ease forwards; opacity: 0; }
.animate-fade-down { animation: fadeInDown .8s ease forwards; opacity: 0; }
.animate-fade-left { animation: fadeInLeft .8s ease forwards; opacity: 0; }
.animate-fade-right { animation: fadeInRight .8s ease forwards; opacity: 0; }
.animate-scale { animation: scaleIn .7s ease forwards; opacity: 0; }
.animate-fade { animation: fadeIn 1s ease forwards; opacity: 0; }

.delay-1 { animation-delay: .1s; }
.delay-2 { animation-delay: .2s; }
.delay-3 { animation-delay: .3s; }
.delay-4 { animation-delay: .4s; }
.delay-5 { animation-delay: .5s; }
.delay-6 { animation-delay: .6s; }

/* ---------- HERO ANIMATIONS ---------- */
.hero .hero-eyebrow { animation: fadeInDown .8s ease .2s both; }
.hero .hero-title { animation: fadeInUp .9s ease .3s both; }
.hero .hero-subtitle { animation: fadeInUp .9s ease .45s both; }
.hero .hero-buttons { animation: fadeInUp .9s ease .6s both; }
.hero .hero-stats { animation: fadeInUp .9s ease .75s both; }
.hero .hero-shape { animation: floatShape 12s ease-in-out infinite; }

/* ---------- HOVER EFFECTS ---------- */
.hover-lift { transition: transform .35s ease, box-shadow .35s ease; }
.hover-lift:hover { transform: translateY(-8px); box-shadow: var(--shadow-card); }

.hover-zoom { overflow: hidden; }
.hover-zoom img { transition: transform .6s ease; }
.hover-zoom:hover img { transform: scale(1.08); }

.hover-glow:hover { animation: glow 1.5s ease infinite; }

/* ---------- GRADIENT ANIMATION ---------- */
.gradient-animated {
  background: linear-gradient(-45deg, #0a1f44, #1a3a6b, #0a1f44, #1a3a6b);
  background-size: 400% 400%;
  animation: gradientMove 12s ease infinite;
}
.gold-animated {
  background: linear-gradient(-45deg, #c9a227, #e6c75a, #a8841c, #c9a227);
  background-size: 400% 400%;
  animation: gradientMove 8s ease infinite;
}

/* ---------- PARALLAX ---------- */
.parallax-bg {
  background-attachment: fixed;
  background-position: center;
  background-size: cover;
}
@media (max-width: 767px) {
  .parallax-bg { background-attachment: scroll; }
}

/* ---------- MOUSE EFFECT (tilt) ---------- */
.tilt-card {
  transition: transform .2s ease;
  transform-style: preserve-3d;
  will-change: transform;
}

/* ---------- BUTTON RIPPLE ---------- */
.btn-ripple { position: relative; overflow: hidden; }

/* ---------- COUNTER ---------- */
.stat-number { display: inline-block; }

/* ---------- SCROLL REVEAL (JS triggered) ---------- */
.scroll-reveal { will-change: opacity, transform; }
.scroll-reveal.revealed { transition: opacity .9s cubic-bezier(.4,0,.2,1), transform .9s cubic-bezier(.4,0,.2,1); }

/* ---------- IMAGE ZOOM ON HOVER (gallery) ---------- */
.gallery-item img { transition: transform .6s cubic-bezier(.4,0,.2,1); }

/* ---------- LOADER ---------- */
.loader { animation: spin 1s linear infinite; }

/* ---------- SMOOTH PAGE TRANSITION ---------- */
.page-transition {
  animation: fadeIn .5s ease;
}

/* ---------- ACCORDION ---------- */
.faq-answer { transition: max-height .45s cubic-bezier(.4,0,.2,1), padding .45s ease; }

/* ---------- SHIMMER (loading placeholder) ---------- */
.shimmer {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

/* ---------- FLOATING ICONS ---------- */
.float-icon { animation: floatY 4s ease-in-out infinite; }
.float-icon.delay-2 { animation-delay: -2s; }
.float-icon.delay-3 { animation-delay: -1s; }

/* ---------- PULSE RING (for CTA) ---------- */
.pulse-ring { position: relative; }
.pulse-ring::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  border: 2px solid var(--gold);
  animation: pulse 2s ease-out infinite;
}

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