/* ==================== CLICK RIPPLE EFFECT ==================== */
.click-ripple {
  position: fixed;
  border: 5px solid #99FFCC;
  border-radius: 50%;
  pointer-events: none;
  z-index: 999998;
  transform: translate(-50%, -50%);
  animation: bigRipple 0.8s ease-out forwards;
  box-shadow: 0 0 40px #99FFCC;
}

@keyframes bigRipple {
  0%   { width: 0; height: 0; opacity: 1; }
  100% { width: 300px; height: 150px; opacity: 0; }
}

/* ==================== SPARK PARTICLES EFFECT ==================== */
.spark {
  position: fixed;
  width: 4px;
  height: 4px;
  border-radius: 50%;
  background: #ffffff;
  pointer-events: none;
  z-index: 9997;
  box-shadow: 0 0 10px #00ffcc;
  animation: sparkFade 0.6s ease-out forwards;
}

@keyframes sparkFade {
  0% {
    opacity: 1;
    transform: translate(0, 0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(var(--tx), var(--ty)) scale(0);
  }
}

/* ==================== AUDIO SPECTRUM EFFECT ==================== */
.spectrum-orbital {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 200px; /* EFFECT: Tăng từ 150px lên 200px để có không gian cho particles bay xa */
  height: 200px; /* EFFECT: Tăng từ 150px lên 200px */
  pointer-events: none;
  z-index: 2;
  overflow: visible;
}

.spectrum-orbital canvas {
  width: 100%;
  height: 100%;
  display: block;
}