/* =========================================================
   Tesni Pharmaceuticals — Animations
   ========================================================= */

/* Elements start hidden if they use GSAP scroll reveal.
   animations.js will set inline styles / GSAP tweens on them.
   We still provide CSS fallbacks so no-JS or delayed JS won't hide content forever. */
.reveal { will-change: transform, opacity; }

/* Floating capsules on hero */
@keyframes float-y {
  0%, 100% { transform: translateY(0) rotate(0); }
  50%      { transform: translateY(-18px) rotate(2deg); }
}
@keyframes float-y-slow {
  0%, 100% { transform: translateY(0) rotate(0); }
  50%      { transform: translateY(-10px) rotate(-3deg); }
}
.float-slow  { animation: float-y-slow 6s ease-in-out infinite; }
.float-fast  { animation: float-y 4s ease-in-out infinite; }

/* Pulsing rings behind hero product */
@keyframes ring-pulse {
  0%   { transform: scale(0.95); opacity: .5; }
  100% { transform: scale(1.35); opacity: 0; }
}
.ring-pulse { animation: ring-pulse 3s ease-out infinite; }
.ring-pulse.delay-1 { animation-delay: 1s; }
.ring-pulse.delay-2 { animation-delay: 2s; }

/* Blob morph background */
@keyframes blob {
  0%,100% { border-radius: 42% 58% 60% 40% / 44% 46% 54% 56%; }
  50%     { border-radius: 60% 40% 44% 56% / 62% 38% 62% 38%; }
}
.blob { animation: blob 12s ease-in-out infinite; }

/* Shimmer effect on gold accents */
@keyframes shimmer {
  0%   { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}
.shimmer {
  background: linear-gradient(90deg, #C8A45C 25%, #E7CD8E 50%, #C8A45C 75%);
  background-size: 800px 100%;
  animation: shimmer 4s linear infinite;
  -webkit-background-clip: text; background-clip: text; color: transparent;
}

/* Card entrance animation (CSS fallback if GSAP not ready) */
@keyframes card-in {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
.card-in { animation: card-in .7s ease both; }

/* Underline draw animation for CTA on hover */
.link-underline { position: relative; }
.link-underline::after {
  content: ""; position: absolute; left: 0; bottom: -3px; height: 2px; width: 0;
  background: currentColor; transition: width .4s ease;
}
.link-underline:hover::after { width: 100%; }

/* Gentle scale in for images */
@keyframes img-in {
  from { transform: scale(1.06); filter: blur(6px); opacity: 0; }
  to   { transform: scale(1);    filter: blur(0);   opacity: 1; }
}
.img-in { animation: img-in 1s ease both; }

/* Icon hover bounce */
.icon-bounce { transition: transform .3s ease; }
.icon-bounce:hover { transform: translateY(-3px) rotate(-4deg); }

/* Progress bar sweep for hero */
@keyframes sweep {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(200%); }
}
.sweep { position: relative; overflow: hidden; }
.sweep::after {
  content: ""; position: absolute; top: 0; left: 0; height: 100%; width: 40%;
  background: linear-gradient(120deg, transparent 0%, rgba(255,255,255,.35) 50%, transparent 100%);
  transform: translateX(-100%);
  animation: sweep 3.5s ease-in-out infinite;
}
