/* =============================================
   NEXAGE — ANIMATIONS
   ============================================= */
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.15)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes slideIn{from{transform:translateX(30px);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes fadeUp{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes shimmer{0%{background-position:-400px 0}100%{background-position:400px 0}}
@keyframes typewriter{from{width:0}to{width:100%}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
@keyframes gradient-shift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes particle-float{0%{transform:translate(0,0) scale(1);opacity:.6}25%{transform:translate(30px,-40px) scale(1.1);opacity:.8}50%{transform:translate(-20px,-80px) scale(.9);opacity:.5}75%{transform:translate(40px,-120px) scale(1.05);opacity:.7}100%{transform:translate(10px,-160px) scale(.8);opacity:0}}
@keyframes counter-pop{0%{transform:scale(.8);opacity:0}80%{transform:scale(1.05)}100%{transform:scale(1);opacity:1}}
@keyframes wave{0%{transform:translateX(0) translateZ(0) scaleY(1)}50%{transform:translateX(-25%) translateZ(0) scaleY(.8)}100%{transform:translateX(-50%) translateZ(0) scaleY(1)}}
@keyframes glow-pulse{0%,100%{box-shadow:0 0 20px rgba(37,99,235,.3)}50%{box-shadow:0 0 40px rgba(37,99,235,.6)}}
@keyframes slide-up-fade{from{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}

/* Scroll-reveal base */
.reveal{opacity:0;transform:translateY(32px);transition:opacity .6s ease,transform .6s ease}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal-left{opacity:0;transform:translateX(-32px);transition:opacity .6s ease,transform .6s ease}
.reveal-left.visible{opacity:1;transform:translateX(0)}
.reveal-right{opacity:0;transform:translateX(32px);transition:opacity .6s ease,transform .6s ease}
.reveal-right.visible{opacity:1;transform:translateX(0)}
.reveal-scale{opacity:0;transform:scale(.92);transition:opacity .6s ease,transform .6s ease}
.reveal-scale.visible{opacity:1;transform:scale(1)}

/* Stagger delays */
.delay-1{transition-delay:.1s}
.delay-2{transition-delay:.2s}
.delay-3{transition-delay:.3s}
.delay-4{transition-delay:.4s}
.delay-5{transition-delay:.5s}
.delay-6{transition-delay:.6s}

/* Typing cursor */
.typing-cursor{display:inline-block;width:3px;height:.85em;background:var(--orange-2);margin-left:2px;animation:blink .8s step-end infinite;vertical-align:middle}

/* Floating elements */
.float-anim{animation:float 4s ease-in-out infinite}
.float-anim-slow{animation:float 6s ease-in-out infinite}

/* Gradient animated bg */
.animated-gradient{background:linear-gradient(270deg,#050B18,#0A1628,#0F2044,#1A3665);background-size:400% 400%;animation:gradient-shift 12s ease infinite}

/* Page load animation */
.page-load{animation:slide-up-fade .6s ease both}
.page-load-1{animation:slide-up-fade .6s .1s ease both}
.page-load-2{animation:slide-up-fade .6s .2s ease both}
.page-load-3{animation:slide-up-fade .6s .3s ease both}
.page-load-4{animation:slide-up-fade .6s .4s ease both}

/* Hover glow */
.hover-glow:hover{animation:glow-pulse .5s ease forwards}

/* Transition helpers */
.transition-all{transition:all var(--t-med)}

/* Active nav underline */
.nav-links a.active{position:relative}
.nav-links a.active::after{content:'';position:absolute;bottom:-4px;left:.8rem;right:.8rem;height:2px;background:var(--orange-2);border-radius:2px}
