/* OBSIDIAN Pro Motion — Webflow-grade */
:root{--ease: cubic-bezier(0.16,1,0.3,1); --dur: 520ms}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Page transition — fade + slight lift */
@keyframes pageIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
body{animation:pageIn var(--dur) var(--ease) both}
.page-out{animation:pageOut 320ms var(--ease) forwards}
@keyframes pageOut{to{opacity:0;transform:translateY(-6px)}}

/* Scroll reveal */
.reveal{opacity:0;transform:translateY(18px);transition:opacity 600ms var(--ease), transform 600ms var(--ease)}
.reveal.in{opacity:1;transform:translateY(0)}
.reveal.delay1{transition-delay:80ms}.reveal.delay2{transition-delay:160ms}.reveal.delay3{transition-delay:240ms}

/* Hover lift + arrow */
.lift{transition:transform 200ms var(--ease), box-shadow 200ms var(--ease), border-color 200ms var(--ease)}
.lift:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(0,0,0,.08);border-color:#898989}
.arrow{transition:transform 200ms var(--ease); display:inline-block}
a:hover .arrow{transform:translateX(6px)}

/* Nav underline */
.nav-links a{position:relative}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;background:#146ef5;transform:scaleX(0);transform-origin:left;transition:transform 220ms var(--ease)}
.nav-links a:hover::after{transform:scaleX(1)}

/* Button magnetic */
.btn{position:relative;overflow:hidden}
.btn::before{content:"";position:absolute;inset:0;background:radial-gradient(600px circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.18), transparent 40%);opacity:0;transition:opacity 200ms}
.btn:hover::before{opacity:1}

/* Hero parallax */
.hero-visual{transform:translateZ(0); will-change:transform}
