.game .card.throw-left {
  transform: translateX(-120vw) rotate(var(--card-throw-rotation, -20deg)) !important;
  opacity: 1 !important;
  transition:
    transform var(--card-throw-duration, 280ms) cubic-bezier(0.4, 0, 1, 1) !important;
  will-change: transform;
}

.game .card.throw-right {
  transform: translateX(120vw) rotate(var(--card-throw-rotation, 20deg)) !important;
  opacity: 1 !important;
  transition:
    transform var(--card-throw-duration, 280ms) cubic-bezier(0.4, 0, 1, 1) !important;
  will-change: transform;
}

.game .card.entering {
  animation: card-enter 0.25s ease-out both;
}

.game .card.waiting-for-toast {
  opacity: 0.42;
  transform: scale(0.985);
  filter: saturate(0.82) brightness(0.88);
  pointer-events: none;
  transition: opacity 0.18s ease, transform 0.18s ease, filter 0.18s ease;
}

.game .card.death-fade-out {
  opacity: 0.12 !important;
  transform: translateY(-12px) scale(0.98) !important;
  filter: grayscale(0.6) blur(1.2px);
  transition: opacity 0.45s ease, transform 0.45s ease, filter 0.45s ease !important;
}

/* Card hidden below viewport before reveal animation. */
.game .card.hidden-below {
  opacity: 0 !important;
  transform: translateY(100px) scale(0.95) !important;
  pointer-events: none;
}

/* Card reveal animation from below after choice resolution. */
.game .card.animate-from-bottom {
  animation: card-slide-up 0.52s cubic-bezier(0.2, 0.75, 0.25, 1) both !important;
  will-change: transform, opacity;
}

@keyframes card-slide-up {
  0% {
    opacity: 0;
    transform: translateY(140px) scale(0.93);
  }
  75% {
    opacity: 1;
    transform: translateY(-8px) scale(1.01);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes card-enter {
  from {
    opacity: 0;
    transform: scale(0.95) translateY(10px);
  }
  to {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes card-enter-from-bottom {
  0% {
    opacity: 0;
    transform: translateY(100px) scale(0.95);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

.game .card.entering-from-bottom {
  animation: card-enter-from-bottom 0.5s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}
