/* Splash Media Ltd — animations.css v3 */

/* Hover lift utility */
.hover-lift { transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease); }
.hover-lift:hover { transform: translateY(-6px); box-shadow: var(--shadow-md); }

/* Scale in */
@keyframes scaleIn { from { opacity:0; transform:scale(0.94); } to { opacity:1; transform:scale(1); } }
.scale-in { animation: scaleIn 0.6s var(--ease) both; }

/* Rotate-in */
@keyframes rotateIn { from { opacity:0; transform:rotate(-6deg) scale(0.96); } to { opacity:1; transform:rotate(0) scale(1); } }
.rotate-in { animation: rotateIn 0.7s var(--ease) both; }

/* Blur in */
@keyframes blurIn { from { opacity:0; filter:blur(12px); } to { opacity:1; filter:blur(0); } }
.blur-in { animation: blurIn 0.8s var(--ease) both; }

/* Text shimmer */
.text-shimmer {
  background: linear-gradient(90deg, var(--fg) 0%, var(--cyan) 50%, var(--fg) 100%);
  background-size: 200% 100%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: textShimmer 3s ease-in-out infinite;
}
@keyframes textShimmer { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }

/* Stagger */
.stagger > *:nth-child(1) { animation-delay: 0.05s; }
.stagger > *:nth-child(2) { animation-delay: 0.12s; }
.stagger > *:nth-child(3) { animation-delay: 0.19s; }
.stagger > *:nth-child(4) { animation-delay: 0.26s; }
.stagger > *:nth-child(5) { animation-delay: 0.33s; }
.stagger > *:nth-child(6) { animation-delay: 0.40s; }

/* Floating tag */
@keyframes tagFloat { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-6px); } }
.tag-float { animation: tagFloat 4s ease-in-out infinite; }

/* Pulse ring */
@keyframes pulseRingAnim { 0% { transform:scale(0.85); opacity:1; } 100% { transform:scale(2.2); opacity:0; } }
.pulse-ring-anim { animation: pulseRingAnim 2s ease-out infinite; }

/* Skeleton shimmer */
.skeleton {
  background: linear-gradient(90deg, var(--bg-2) 25%, var(--bg-3) 50%, var(--bg-2) 75%);
  background-size: 200% 100%;
  animation: skelShimmer 1.5s infinite;
  border-radius: var(--r-md);
}
@keyframes skelShimmer { from { background-position: -200% 0; } to { background-position: 200% 0; } }

/* Loading spinner */
.spinner { width: 20px; height: 20px; border: 2px solid var(--border-2); border-top-color: var(--cyan); border-radius: 50%; animation: spin 0.7s linear infinite; display: inline-block; }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
