/* ============================================
   VWA Libre — Animations Library
   ============================================ */

/* ---------- Text Glow Pulse (disabled) ---------- */
.text-glow {
  animation: none;
}

/* ---------- Float (disabled) ---------- */
.float { animation: none; }

/* ---------- Shimmer Text ---------- */
.shimmer {
  color: var(--brand);
}

/* ---------- Stagger Children (disabled — show immediately) ---------- */
.stagger-in > * {
  opacity: 1; transform: none;
}

/* ---------- Bounce In ---------- */
.bounce-in {
  animation: bounceIn .6s cubic-bezier(.34, 1.56, .64, 1);
}
@keyframes bounceIn {
  0% { opacity: 0; transform: scale(.3); }
  60% { opacity: 1; transform: scale(1.08); }
  100% { transform: scale(1); }
}

/* ---------- Slide Up ---------- */
.slide-up {
  animation: slideUp .5s ease forwards;
}
@keyframes slideUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ---------- Ripple Background ---------- */
.ripple-bg {
  position: relative; overflow: hidden;
}
.ripple-bg::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle 200px at var(--mx, 50%) var(--my, 50%),
    rgba(37,99,235,.08), transparent); /* functional hover effect, not decorative gradient */
  pointer-events: none; transition: background .15s;
}

/* ---------- Gradient Border ---------- */
.gradient-border {
  position: relative;
}
.gradient-border::before {
  content: ''; position: absolute; inset: -2px;
  border-radius: inherit;
  background: var(--brand);
  z-index: -1;
}

/* ---------- Morph Shape (disabled) ---------- */
.morph {
  animation: none;
  border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%;
}

/* ---------- Count Up ---------- */
.count-up {
  font-variant-numeric: tabular-nums;
}

/* ---------- Skeleton Loader ---------- */
.skeleton {
  background: var(--bg-alt);
  animation: skeleton 1.5s ease infinite;
  border-radius: var(--radius-sm);
}
@keyframes skeleton { 0%{opacity:.6} 50%{opacity:1} 100%{opacity:.6} }

/* ---------- Spin ---------- */
.spin { animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- Pulse Scale ---------- */
.pulse-scale { animation: pulseScale 2s ease-in-out infinite; }
@keyframes pulseScale {
  0%,100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

/* ---------- Marquee ---------- */
.marquee-wrap { overflow: hidden; white-space: nowrap; }
.marquee-track {
  display: inline-flex; animation: marquee 30s linear infinite;
}
.marquee-track > * { flex-shrink: 0; }
@keyframes marquee { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
