/* ============================================================
   WZSysTech — Animation System
   ============================================================ */

@keyframes fadeUp{ from{opacity:0; transform:translateY(24px);} to{opacity:1; transform:translateY(0);} }
@keyframes floaty{ 0%,100%{transform:translateY(0);} 50%{transform:translateY(-10px);} }
@keyframes spin-slow{ to{transform:rotate(360deg);} }
@keyframes dash{ to{ stroke-dashoffset:0; } }
@keyframes pulse-glow{ 0%,100%{opacity:.5;} 50%{opacity:1;} }

[data-stagger] > *:nth-child(1){transition-delay:.02s;}
[data-stagger] > *:nth-child(2){transition-delay:.08s;}
[data-stagger] > *:nth-child(3){transition-delay:.14s;}
[data-stagger] > *:nth-child(4){transition-delay:.2s;}
[data-stagger] > *:nth-child(5){transition-delay:.26s;}
[data-stagger] > *:nth-child(6){transition-delay:.32s;}
[data-stagger] > *:nth-child(7){transition-delay:.38s;}
[data-stagger] > *:nth-child(8){transition-delay:.44s;}

.node-svg .flow{ animation:dash 3s linear infinite; }
.float-el{ animation:floaty 6s ease-in-out infinite; }
.spin-el{ animation:spin-slow 40s linear infinite; }

/* Magnetic buttons handled via JS transform, keep transition here */
.magnetic{ transition:transform .35s var(--ease-out); }

/* card tilt */
.tilt{ transform-style:preserve-3d; transition:transform .25s var(--ease-out); will-change:transform; }

@media (prefers-reduced-motion: reduce){
  .float-el,.spin-el,.node-svg .flow,.infra-connector::after,.ai-connector::after,.float-wa::before{animation:none !important;}
}
