/* ==========================================================================
   ANDY STUDIO - KEYFRAME ANIMATIONS & DYNAMIC EFFECTS
   ========================================================================== */

/* 3D Floating Elements in Preloader & Background */
@keyframes floatOrb {
  0% {
    transform: translateY(0px) rotate(0deg) scale(1);
  }
  50% {
    transform: translateY(-20px) rotate(4deg) scale(1.03);
  }
  100% {
    transform: translateY(15px) rotate(-3deg) scale(0.98);
  }
}

/* Sound Wave bars in Museum video */
@keyframes soundWave {
  0% {
    height: 4px;
  }
  100% {
    height: 14px;
  }
}

/* Glitch text shimmer effect */
@keyframes glitchShimmer {
  0% {
    opacity: 0.8;
    transform: skew(0deg);
  }
  20% {
    opacity: 1;
    transform: skew(-2deg);
  }
  40% {
    opacity: 0.7;
    transform: skew(1deg);
  }
  60% {
    opacity: 0.9;
    transform: skew(-0.5deg);
  }
  80% {
    opacity: 1;
    transform: skew(1.5deg);
  }
  100% {
    opacity: 0.8;
    transform: skew(0deg);
  }
}

/* Scroll reveal helper classes */
.reveal-fade-up {
  opacity: 0;
  transform: translateY(35px);
  transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-fade-up.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-fade-in {
  opacity: 0;
  transition: opacity 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-fade-in.is-visible {
  opacity: 1;
}

/* Smooth Image hover parallax */
.img-zoom-wrap {
  overflow: hidden;
}

.img-zoom-wrap img {
  transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.img-zoom-wrap:hover img {
  transform: scale(1.05);
}

/* Kinetic ticker marquee effect */
.marquee-track {
  display: flex;
  white-space: nowrap;
  animation: marqueeScroll 25s linear infinite;
}

@keyframes marqueeScroll {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-50%);
  }
}

/* Button pulse & magnetic hover glow */
.btn-pill:active {
  transform: scale(0.97);
}

/* Section divider line animation */
.animated-line {
  width: 0%;
  height: 1px;
  background: rgba(255, 255, 255, 0.2);
  transition: width 1.2s cubic-bezier(0.16, 1, 0.3, 1);
}

.animated-line.is-visible {
  width: 100%;
}
