/* petzoft — animaciones compartidas por el login, el sitio público y el portal del tutor */
@keyframes pz-rise   { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes pz-fade   { from { opacity: 0; } to { opacity: 1; } }
@keyframes pz-bob    { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes pz-pulse  { 0% { transform: scale(.94); opacity: .9; } 80%, 100% { transform: scale(1.12); opacity: 0; } }
@keyframes pz-float  { 0%, 100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-16px) rotate(8deg); } }
@keyframes pz-drift  { from { transform: translate(0, 0) scale(1); } to { transform: translate(-40px, -30px) scale(1.08); } }
@keyframes pz-twinkle { 0%, 100% { transform: scale(1) rotate(0); opacity: 1; } 50% { transform: scale(1.25) rotate(15deg); opacity: .7; } }
@keyframes pz-shake  { 10%, 90% { transform: translateX(-1px); } 20%, 80% { transform: translateX(2px); } 30%, 50%, 70% { transform: translateX(-4px); } 40%, 60% { transform: translateX(4px); } }

/* entrada escalonada: .pz-stagger > * aparecen de a uno. `backwards` (no `both`) para no pisar el transform del hover. */
.pz-stagger > * { animation: pz-rise .55s cubic-bezier(.2, .8, .2, 1) backwards; }
.pz-stagger > *:nth-child(2) { animation-delay: .06s; }
.pz-stagger > *:nth-child(3) { animation-delay: .12s; }
.pz-stagger > *:nth-child(4) { animation-delay: .18s; }
.pz-stagger > *:nth-child(5) { animation-delay: .24s; }
.pz-stagger > *:nth-child(n+6) { animation-delay: .30s; }

/* accesibilidad: sin movimiento si el usuario lo pide */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important; animation-delay: 0s !important;
    transition-duration: .01ms !important; scroll-behavior: auto !important;
  }
}
