@keyframes bounce {
  0%, 20%, 50%, 80%, 100% { transform: translate(-50%, 0); }
  40% { transform: translate(-50%, -8px); }
  60% { transform: translate(-50%, -4px); }
}

.scroll-reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 600ms ease, transform 600ms ease;
}
.scroll-reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

/* Drag lift + console enter animations */
.drag-lift { box-shadow: var(--drag-lift-shadow); filter: brightness(1.04); }
@keyframes console-slide-in {
  from { opacity: 0; transform: translateX(calc(100% + 32px)); }
  to { opacity: 1; transform: translateX(0); }
}
@keyframes console-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.console-enter-fresh { animation: console-slide-in 350ms ease-out both; }
.console-enter-restore { animation: console-fade-in 200ms ease-out both; }
