/* Animations & micro-interactions */

@keyframes toastIn {
  from { opacity: 0; transform: translateY(-12px); }
  to { opacity: 1; transform: translateY(0); }
}
@keyframes toastOut {
  from { opacity: 1; transform: translateY(0); }
  to { opacity: 0; transform: translateY(-12px); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

@keyframes badgePop {
  0% { transform: scale(0); }
  60% { transform: scale(1.2); }
  100% { transform: scale(1); }
}

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

.animate-pulse { animation: pulse 2s var(--ease) infinite; }
.animate-badge-pop { animation: badgePop 0.3s var(--ease) forwards; }
.animate-fade-in { animation: fadeIn var(--duration-slow) var(--ease) forwards; }
.animate-count-up { animation: countUp 0.3s var(--ease) forwards; }

/* Drink button ripple */
.drink-btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at center, var(--accent-glow) 0%, transparent 70%);
  opacity: 0;
  transition: opacity 0.3s;
  border-radius: inherit;
}
.drink-btn.flash::after { opacity: 1; }

/* Status badge pulse */
.status-badge.status-critical .status-dot { animation: pulse 1.5s var(--ease) infinite; }
.status-badge.status-impaired .status-dot { animation: pulse 2.5s var(--ease) infinite; }

/* Tab transitions */
.tab-panel.active { animation: fadeIn 0.2s var(--ease) forwards; }
