@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-14px); }
}
@keyframes spinSlow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
@keyframes pulseGlow {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 0.9; }
}
@keyframes gradientShift {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

.tz-chip { animation: floatY 5s ease-in-out infinite; }
.tz-chip.c2 { animation-delay: 0.6s; }
.tz-chip.c3 { animation-delay: 1.2s; }
.tz-chip.c4 { animation-delay: 1.8s; }

.tz-hero-bg { background-size: 200% 200%; animation: gradientShift 14s ease infinite; }

.aos-init [data-aos] { transition-property: transform, opacity; }

.hover-lift { transition: transform var(--dur-mid) var(--ease-out); }
.hover-lift:hover { transform: translateY(-6px); }

/* Skeleton shimmer, reserved for future loading states */
.tz-skeleton {
  background: linear-gradient(90deg, #EEF0F5 25%, #F6F7FA 37%, #EEF0F5 63%);
  background-size: 400% 100%;
  animation: shimmer 1.4s ease infinite;
}
@keyframes shimmer {
  0% { background-position: 100% 50%; }
  100% { background-position: 0 50%; }
}
