@keyframes ambient-drift {
  0%   { transform: translate(0,0) scale(1); }
  100% { transform: translate(3%, -2%) scale(1.06); }
}
@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@keyframes shimmer-sweep {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
@keyframes pulse-ring {
  0%   { transform: scale(1); opacity: .6; }
  70%  { transform: scale(2.6); opacity: 0; }
  100% { transform: scale(2.6); opacity: 0; }
}
@keyframes blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}
@keyframes spin-slow { to { transform: rotate(360deg); } }
@keyframes row-in {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes slide-down {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes toast-in {
  from { opacity: 0; transform: translateX(24px) scale(.96); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}
@keyframes toast-out {
  to { opacity: 0; transform: translateX(24px) scale(.96); }
}
@keyframes card-pop {
  0%   { opacity: 0; transform: scale(.9) translateY(10px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}
.pcard { animation: card-pop var(--dur-med) var(--ease-spring); }

@keyframes leader-flash {
  0%   { box-shadow: 0 0 0 0 rgba(124,243,209,.6); }
  100% { box-shadow: 0 0 0 14px rgba(124,243,209,0); }
}
.hero.just-won { animation: leader-flash 1s var(--ease-out); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  body::before { animation: none; }
  .ring { transition: none; }
  .live-dot::after { display: none; }
  .caret { animation: none; opacity: 1; }
  .statusbar.working::after, .thinking::before { animation: none; }
  .pcard { animation: none; }
}
