/* =============================================================
   Vision-AI — Animations
   ============================================================= */

@keyframes v-scan {
  0%   { top: 0;    opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { top: 100%; opacity: 0; }
}

@keyframes v-pulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.4; }
}

@keyframes v-rec-blink {
  0%, 49%  { opacity: 1; }
  50%, 100%{ opacity: 0.2; }
}

@keyframes v-bbox-appear {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes v-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes v-fade-up {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes v-glitch {
  0%, 90%, 100% { transform: translateX(0); filter: none; }
  92%           { transform: translateX(-2px); filter: hue-rotate(20deg); }
  94%           { transform: translateX(2px);  filter: hue-rotate(-20deg); }
  96%           { transform: translateX(-1px); }
}

@keyframes v-grid-shift {
  0%   { background-position: 0 0; }
  100% { background-position: 40px 40px; }
}

@keyframes v-spin {
  to { transform: rotate(360deg); }
}

@keyframes v-pop {
  0%   { transform: scale(0.6); opacity: 0; }
  60%  { transform: scale(1.08); }
  100% { transform: scale(1); opacity: 1; }
}

@keyframes v-emerald-glow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(52,211,153,0); }
  50%      { box-shadow: 0 0 0 4px rgba(52,211,153,0.20); }
}

/* utility */
.v-anim-fade-up { animation: v-fade-up 240ms var(--ease) both; }
.v-anim-fade-in { animation: v-fade-in 240ms var(--ease) both; }
.v-anim-pop     { animation: v-pop 280ms var(--ease) both; }
.v-anim-spin    { animation: v-spin 1s linear infinite; }
