/* Base styles for floating buttons */
.qcb-button {
  position: fixed;
  border-radius: 50%;
  text-align: center;
  z-index: 1000;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transition: transform 0.3s ease, opacity 0.3s ease;
}
.qcb-button:hover {
  transform: scale(1.1);
  opacity: 0.9;
}

/* Animation: Pulse */
@keyframes qcb-pulse {
  0%   { transform: scale(1) translateZ(0); }
  50%  { transform: scale(1.1) translateZ(0); }
  100% { transform: scale(1) translateZ(0); }
}
.qcb-animate-pulse {
  animation: qcb-pulse 2s infinite ease-in-out;
}

/* Animation: Bounce */
@keyframes qcb-bounce {
  0%, 100% { transform: translateY(0) translateZ(0); }
  50%      { transform: translateY(-8px) translateZ(0); }
}
.qcb-animate-bounce {
  animation: qcb-bounce 1.5s infinite ease-in-out;
}

/* Animation: Rotate */
@keyframes qcb-rotate {
  0%   { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.qcb-animate-rotate {
  animation: qcb-rotate 4s infinite linear;
}

/* Animation: Shake */
@keyframes qcb-shake {
  0%   { transform: translateX(0) translateZ(0); }
  20%  { transform: translateX(-4px) translateZ(0); }
  40%  { transform: translateX(4px) translateZ(0); }
  60%  { transform: translateX(-4px) translateZ(0); }
  80%  { transform: translateX(4px) translateZ(0); }
  100% { transform: translateX(0) translateZ(0); }
}
.qcb-animate-shake {
  animation: qcb-shake 0.8s infinite ease-in-out;
}
