/* =============================================================
   AI Agent — Animations
   ============================================================= */

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

@keyframes ag-orb-pulse {
  0%, 100% {
    transform: scale(1);
    box-shadow:
      inset 0 0 24px rgba(255,255,255,0.30),
      0 0 24px rgba(167,139,250,0.50);
  }
  50% {
    transform: scale(1.06);
    box-shadow:
      inset 0 0 32px rgba(255,255,255,0.42),
      0 0 38px rgba(167,139,250,0.85);
  }
}

@keyframes ag-orb-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes ag-typing {
  0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
  40%           { transform: translateY(-4px); opacity: 1; }
}

@keyframes ag-msg-in-user {
  from { opacity: 0; transform: translateY(8px) translateX(8px); }
  to   { opacity: 1; transform: translateY(0) translateX(0); }
}

@keyframes ag-msg-in-ai {
  from { opacity: 0; transform: translateY(8px) translateX(-8px); }
  to   { opacity: 1; transform: translateY(0) translateX(0); }
}

@keyframes ag-flow-pulse {
  0%   { stroke-dashoffset: 20; }
  100% { stroke-dashoffset: 0; }
}

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

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

@keyframes ag-shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

@keyframes ag-neural-shift {
  0%, 100% { background-position: 0% 50%; }
  50%      { background-position: 100% 50%; }
}

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

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

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