@keyframes wobble {
  0% {
    transform: translateX(0%);
  }
  15% {
    transform: translateX(-6%) rotate(-1deg);
  }
  30% {
    transform: translateX(6%) rotate(1deg);
  }
  45% {
    transform: translateX(-2%) rotate(-1deg);
  }
  60% {
    transform: translateX(2%) rotate(1deg);
  }
  75% {
    transform: translateX(-1%) rotate(-1deg);
  }
  100% {
    transform: translateX(0%);
  }
}

@keyframes flip-left {
  0% {
    opacity: 0;
    transform: perspective(400px) rotateY(90deg);
  }
  100% {
    opacity: 1;
    transform: perspective(400px) rotateY(0deg);
  }
}

@keyframes slide-up {
  0% {
    opacity: 0;
    transform: translate3d(0, 100%, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fade {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 1;
  }
}

@keyframes fade-up {
  0% {
    opacity: 0;
    transform: translate3d(0, 10%, 0);
  }
  100% {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

/* kv-deco-1, kv-deco-2 진입 모션: 회전하면서 페이드인 (1회 재생) */
@keyframes kv-deco-spin-in {
  0% {
    transform: rotate(-180deg) scale(0.4);
    opacity: 0;
  }
  100% {
    transform: rotate(0deg) scale(1);
    opacity: 1;
  }
}

/* kv-deco-1, kv-deco-2 무중력 부유 모션: 진입 후 무한 반복 */
@keyframes kv-deco-float {
  0%   { transform: translateY(0px)  rotate(0deg); }
  30%  { transform: translateY(-7px) rotate(8deg); }
  60%  { transform: translateY(3px)  rotate(-4deg); }
  100% { transform: translateY(0px)  rotate(0deg); }
}
