/* src/main/resources/static/css/animations.css */

@keyframes born {
  0%   { transform: scale(0.6); opacity: 0; }
  60%  { transform: scale(1.18); opacity: 1; }
  100% { transform: scale(1); }
}

@keyframes bounce {
  0%   { transform: translateY(-6px) scale(0.92); }
  50%  { transform: translateY(2px) scale(1.06); }
  100% { transform: translateY(0) scale(1); }
}

@keyframes mergeflash {
  0%   { opacity: 1; transform: scale(1); }
  100% { opacity: 0; transform: scale(2); }
}

@keyframes particle {
  0%   { transform: translate(0,0); opacity: 1; }
  100% { transform: var(--p-end); opacity: 0; }
}

@keyframes combopop {
  0%   { transform: translateY(8px) scale(0.85); opacity: 0; }
  20%  { transform: translateY(0)   scale(1.12); opacity: 1; }
  60%  { transform: translateY(-4px) scale(1);   opacity: 1; }
  100% { transform: translateY(-24px) scale(0.96); opacity: 0; }
}

@keyframes shake {
  10%, 90% { transform: translate(-1px, 0); }
  20%, 80% { transform: translate(2px, 0); }
  30%, 50%, 70% { transform: translate(-3px, 0); }
  40%, 60% { transform: translate(3px, 0); }
}

@keyframes shake-big {
  10%, 90% { transform: translate(-2px, 1px); }
  20%, 80% { transform: translate(4px, -1px); }
  30%, 50%, 70% { transform: translate(-6px, 2px); }
  40%, 60% { transform: translate(6px, -2px); }
}

@keyframes dangerblink {
  0%, 100% { opacity: 0.4; }
  50%      { opacity: 0.95; }
}

@keyframes burnflicker {
  0%, 100% { opacity: 0.06; }
  47%      { opacity: 0.05; }
  48%      { opacity: 0.09; }
  49%      { opacity: 0.04; }
  50%      { opacity: 0.07; }
}

@keyframes blink { 50% { opacity: 0; } }

@keyframes overlayin {
  from { opacity: 0; backdrop-filter: blur(0); }
  to   { opacity: 1; backdrop-filter: blur(2px); }
}

@keyframes toast {
  0%   { transform: translateY(-12px); opacity: 0; }
  10%  { transform: translateY(0); opacity: 1; }
  90%  { transform: translateY(0); opacity: 1; }
  100% { transform: translateY(-12px); opacity: 0; }
}

.shake     { animation: shake 350ms cubic-bezier(.36,.07,.19,.97) both; }
.shake-big { animation: shake-big 500ms cubic-bezier(.36,.07,.19,.97) both; }

@keyframes mergeSlide {
  0%   { transform: translate(0, 0) scale(1);     opacity: 0.95; }
  100% { transform: translate(var(--slide-x, 0), var(--slide-y, 0)) scale(0.4); opacity: 0; }
}
.fx-merge-slide {
  animation: mergeSlide 200ms ease-out forwards;
  pointer-events: none;
  z-index: 10;
}

@keyframes dying-pulse {
  0%, 100% { box-shadow: inset 0 0 60px rgba(255, 56, 112, 0.20),
                          inset 0 0 0 1px rgba(255, 56, 112, 0.45),
                          0 0 80px rgba(255, 56, 112, 0.25); }
  50%      { box-shadow: inset 0 0 100px rgba(255, 56, 112, 0.50),
                          inset 0 0 0 2px rgba(255, 56, 112, 0.85),
                          0 0 140px rgba(255, 56, 112, 0.55); }
}
.stage.dying { animation: dying-pulse 0.55s ease-in-out infinite; border-color: var(--crit); }
