/* ===== Scroll Reveal Animations ===== */
.reveal{opacity:0;transform:translateY(40px);transition:all .8s cubic-bezier(.4,0,.2,1);}
.reveal.active{opacity:1;transform:translateY(0);}
.reveal-left{opacity:0;transform:translateX(-60px);transition:all .8s cubic-bezier(.4,0,.2,1);}
.reveal-left.active{opacity:1;transform:translateX(0);}
.reveal-right{opacity:0;transform:translateX(60px);transition:all .8s cubic-bezier(.4,0,.2,1);}
.reveal-right.active{opacity:1;transform:translateX(0);}
.reveal-scale{opacity:0;transform:scale(.8);transition:all .8s cubic-bezier(.4,0,.2,1);}
.reveal-scale.active{opacity:1;transform:scale(1);}

/* ===== Floating Animation ===== */
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-15px)}}
.float{animation:float 4s ease-in-out infinite;}

/* ===== Hero entrance animations ===== */
@keyframes heroFadeUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
.hero-badge{animation:heroFadeUp .8s .5s both;}
.hero-title{animation:heroFadeUp .8s .7s both;}
.hero-subtitle{animation:heroFadeUp .8s .9s both;}
.hero-description{animation:heroFadeUp .8s 1.1s both;}
.hero-cta{animation:heroFadeUp .8s 1.3s both;}
.hero-stats{animation:heroFadeUp .8s 1.5s both;}

/* ===== Card tilt hover (3D effect via CSS) ===== */
.skill-card,.project-card,.service-card{transform-style:preserve-3d;perspective:1000px;}
.skill-card:hover{transform:translateY(-10px) rotateX(2deg) rotateY(-2deg);}
.project-card:hover{transform:translateY(-8px) rotateX(1deg) rotateY(-1deg);}
.service-card:hover{transform:translateY(-8px) rotateX(2deg) rotateY(2deg);}

/* ===== Gradient border animation ===== */
@keyframes borderGlow{0%{border-color:var(--cyan)}50%{border-color:var(--magenta)}100%{border-color:var(--cyan)}}
.skill-card:hover,.project-card:hover,.service-card:hover{animation:borderGlow 2s infinite;}

/* ===== Section parallax layers ===== */
.section::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 0%,rgba(0,240,255,.03) 0%,transparent 70%);pointer-events:none;}

/* ===== Navbar link underline slide ===== */
.nav-link::before{content:'';position:absolute;bottom:-2px;left:0;width:100%;height:1px;background:var(--magenta);transform:scaleX(0);transform-origin:right;transition:transform .4s;}
.nav-link:hover::before{transform:scaleX(1);transform-origin:left;}

/* ===== Button ripple on click ===== */
.btn::after{content:'';position:absolute;width:300%;height:300%;top:50%;left:50%;background:radial-gradient(circle,rgba(255,255,255,.15),transparent 60%);transform:translate(-50%,-50%) scale(0);border-radius:50%;transition:transform .5s;}
.btn:active::after{transform:translate(-50%,-50%) scale(1);transition:transform 0s;}

/* ===== Social icon spin on hover ===== */
.social-link:hover i{animation:iconPop .4s ease;}
@keyframes iconPop{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}
