/* CSS Start: card-hover */
.icon-info-box .rounded-2xl {
  --scale-size: 1.1;
  --shake-degree: 15deg;
  --shake-speed: 0.5s;
  --scale-delay: 0.3s;
}
/* 鼠标悬停动画 */
.icon-info-box .rounded-2xl {
  transform-origin: center center;
  transition: transform 0.3s ease;
}

.icon-info-box .rounded-2xl:hover {
  transform: scale(var(--scale-size, 1));
}

.icon-info-box .rounded-2xl:hover {
  animation: info-shake-bounce var(--shake-speed, 0.5s) var(--scale-delay, 0s) ease-in-out forwards;
}

@keyframes info-shake-bounce {
  0%, 100% {
    transform: scale(var(--scale-size, 1)) rotate(0);
  }
  25% {
    transform: scale(var(--scale-size, 1)) rotate(var(--shake-degree, 15deg));
  }
  50% {
    transform: scale(var(--scale-size, 1)) rotate(calc(var(--shake-degree, 15deg) * -1));
  }
  75% {
    transform: scale(var(--scale-size, 1)) rotate(calc(var(--shake-degree, 15deg) * 0.25));
  }
  85% {
    transform: scale(var(--scale-size, 1)) rotate(calc(var(--shake-degree, 15deg) * -0.25));
  }
}

/* 小图标的动画保持不变 */
.icon-small-box .rounded-2xl:hover {
  -webkit-animation: small-shake-bounce .5s alternate !important;
  -moz-animation: small-shake-bounce .5s alternate !important;
  -o-animation: small-shake-bounce .5s alternate !important;
  animation: small-shake-bounce .5s alternate !important;
}

@keyframes small-shake-bounce {
  0%, 100% {
    transform: rotate(0);
  }
  25% {
    transform: rotate(15deg);
  }
  50% {
    transform: rotate(-15deg);
  }
  75% {
    transform: rotate(5deg);
  }
  85% {
    transform: rotate(5deg);
  }
}
/* CSS End: card-hover */

/* CSS Start: gradient-bg */
body {
  height: 100vh;
  background: linear-gradient(45deg, #2C3E50, #2980B9, #8E44AD, #E74C3C);
  background-size: 400% 400%;
  animation: gradientBg 30s ease-in-out infinite;
}

@keyframes gradientBg {
  0% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
  100% {
    background-position: 0% 50%;
  }
}
/* CSS End: gradient-bg */
