@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    50%       { transform: translateY(-28px); }
}
.bounce {
    animation: bounce 2s infinite ease-in-out;
}

@keyframes pulse {
    0%, 100% { transform: scale(1); box-shadow: 0 10px 0 var(--green-dark); }
    50%       { transform: scale(1.04); box-shadow: 0 14px 0 var(--green-dark); }
}
.pulse {
    animation: pulse 1.2s infinite ease-in-out;
}

@keyframes slideIn {
    from { transform: translateX(60px); opacity: 0; }
    to   { transform: translateX(0);    opacity: 1; }
}
.slide-in {
    animation: slideIn 0.4s cubic-bezier(0.22, 1, 0.36, 1) forwards;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(16px); }
    to   { opacity: 1; transform: translateY(0); }
}
.fade-in {
    animation: fadeIn 0.5s ease-out forwards;
}

@keyframes popIn {
    0%   { transform: scale(0);    opacity: 0; }
    75%  { transform: scale(1.1);              }
    100% { transform: scale(1);    opacity: 1; }
}

@keyframes floatStar {
    0%   { transform: translateY(0px) rotate(0deg); }
    50%  { transform: translateY(-18px) rotate(12deg); }
    100% { transform: translateY(0px) rotate(0deg); }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

@keyframes shuffleWiggle {
    0%, 100% { transform: rotate(0deg) scale(1); }
    20%       { transform: rotate(-12deg) scale(1.08); }
    40%       { transform: rotate(10deg) scale(1.08); }
    60%       { transform: rotate(-7deg) scale(1.04); }
    80%       { transform: rotate(6deg) scale(1.04); }
}

.btn-shuffle--wiggle {
    animation: shuffleWiggle 0.7s ease-in-out infinite;
    transform-origin: center center;
}

/* ── Bouton mute menu (global pré-jeu) ── */
.btn-menu-mute {
  position: absolute;
  top: 48px;
  right: 48px;
  z-index: 300;
  width: 88px;
  height: 88px;
  border-radius: 50%;
  border: none;
  background: rgba(0,0,0,0.35);
  color: var(--accent-lime);
  font-size: 42px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s, color 0.2s;
}
.btn-menu-mute:active {
  background: rgba(0,0,0,0.55);
}
.btn-menu-mute.muted {
  color: rgba(255,255,255,0.30);
  position: absolute;
}
.btn-menu-mute.muted::after {
  content: '';
  position: absolute;
  inset: 0;
  margin: auto;
  width: 50%;
  height: 3px;
  background: rgba(255,255,255,0.45);
  transform: rotate(-45deg);
  pointer-events: none;
}

/* ── Toast musique ── */
@keyframes toastIn {
  from { opacity: 0; transform: translateY(-20px); }
  to   { opacity: 1; transform: translateY(0); }
}

.music-toast {
  position: absolute;
  top: 180px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0,0,0,0.72);
  border: 2px solid var(--accent-lime);
  border-radius: var(--radius-pill);
  padding: 18px 48px;
  display: flex;
  align-items: center;
  gap: 20px;
  color: #fff;
  font-size: 36px;
  font-family: 'Fredoka', sans-serif;
  font-weight: 600;
  white-space: nowrap;
  z-index: 200;
  animation: toastIn 0.35s ease-out;
  transition: opacity 0.4s;
}
.music-toast.hidden {
  display: none;
}
.music-toast .fa-music {
  color: var(--accent-lime);
  font-size: 40px;
}

/* ── Bouton mute musique ── */
#btn-music-mute {
  color: var(--accent-lime);
}
#btn-music-mute.muted {
  color: rgba(255,255,255,0.35);
  position: relative;
}
#btn-music-mute.muted::after {
  content: '';
  position: absolute;
  inset: 0;
  margin: auto;
  width: 60%;
  height: 3px;
  background: rgba(255,255,255,0.5);
  transform: rotate(-45deg);
}

@keyframes skipPulse {
  0%, 100% { opacity: 0.75; }
  50%       { opacity: 0.35; }
}
