/* Transitions, keyframes and the utility classes that apply them.
   Three prefixed families exist because each surface animates on entry:
   pa- = Admin/Dashboard, agx- = Portal, mp- and mkt- = Marketplace. */
:root {
  --t-quick:    120ms ease;        /* @kind other */
  --t-standard: 200ms ease-out;    /* @kind other */
  --t-drawer:   300ms ease-out;    /* @kind other */
  --ease-mkt:   cubic-bezier(.2,.7,.3,1);  /* @kind other */
}

@keyframes paUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes paIn { from { opacity: 0; transform: translateX(24px); } to { opacity: 1; transform: none; } }
@keyframes paFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes toastIn { 0% { opacity: 0; transform: translateX(-50%) translateY(12px); } 15%, 85% { opacity: 1; transform: translateX(-50%) translateY(0); } 100% { opacity: 0; transform: translateX(-50%) translateY(12px); } }

@keyframes agxUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes agxPop { from { opacity: 0; transform: scale(.94) translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes agxFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes agxStamp { 0% { opacity: 0; transform: rotate(-12deg) scale(1.6); } 100% { opacity: 1; transform: none; } }
@keyframes agxToast { 0% { opacity: 0; transform: translateX(-50%) translateY(16px); } 12%, 88% { opacity: 1; transform: translateX(-50%) translateY(0); } 100% { opacity: 0; transform: translateX(-50%) translateY(16px); } }

@keyframes mpUp { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes mpPop { from { opacity: 0; transform: scale(.95); } to { opacity: 1; transform: none; } }
@keyframes mktFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } }
@keyframes mktPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.06); } }

.animate-up   { animation: paUp 0.3s both; }
.animate-in   { animation: paIn var(--t-drawer) both; }
.animate-fade { animation: paFade 0.2s both; }
.animate-pop  { animation: agxPop .22s both; }
.animate-mkt-up { animation: mpUp .5s var(--ease-mkt) both; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
