/* ── Keyframes ─────────────────────────────────────────── */
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.3;transform:scale(.55);}}
@keyframes float{0%,100%{transform:translateY(0)rotate(-.4deg);}50%{transform:translateY(-16px)rotate(.4deg);}}
@keyframes drift{0%,100%{transform:translate(0,0)scale(1);}33%{transform:translate(22px,-14px)scale(1.04);}66%{transform:translate(-14px,22px)scale(.97);}}
@keyframes grid-move{0%{background-position:0 0;}100%{background-position:72px 72px;}}
@keyframes scan{0%{top:-40px;opacity:0;}15%{opacity:1;}85%{opacity:1;}100%{top:110%;opacity:0;}}
@keyframes marquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}
@keyframes ring{0%{box-shadow:0 6px 24px rgba(99,102,241,.35),0 0 0 0 rgba(99,102,241,.4);}65%{box-shadow:0 6px 24px rgba(99,102,241,.35),0 0 0 14px rgba(99,102,241,0);}100%{box-shadow:0 6px 24px rgba(99,102,241,.35),0 0 0 0 rgba(99,102,241,0);}}
@keyframes fade-up{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:translateY(0);}}
@keyframes fade-in{from{opacity:0;}to{opacity:1;}}
@keyframes shimmer{0%{transform:translateX(-100%) skewX(-15deg);}100%{transform:translateX(220%) skewX(-15deg);}}
@keyframes spin-slow{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
@keyframes border-dance{0%{background-position:0% 50%;}50%{background-position:100% 50%;}100%{background-position:0% 50%;}}

/* ── Scroll reveal ──────────────────────────────────────── */
.reveal{opacity:0;transform:translateY(36px);transition:opacity .85s var(--e1),transform .85s var(--e1);}
.reveal.on{opacity:1;transform:translateY(0);}
.reveal--left{transform:translateX(-36px);}
.reveal--left.on{transform:translateX(0);}
.reveal--right{transform:translateX(36px);}
.reveal--right.on{transform:translateX(0);}
.d1{transition-delay:.07s;}.d2{transition-delay:.14s;}.d3{transition-delay:.21s;}
.d4{transition-delay:.28s;}.d5{transition-delay:.36s;}

/* ── Hero entry ─────────────────────────────────────────── */
.ain{opacity:0;animation:fade-up .75s var(--e1) forwards;}
.ad1{animation-delay:.05s;}.ad2{animation-delay:.17s;}.ad3{animation-delay:.29s;}
.ad4{animation-delay:.41s;}.ad5{animation-delay:.53s;}

/* ── Shimmer overlay on hover ───────────────────────────── */
.shim{position:relative;overflow:hidden;}
.shim::after{content:'';position:absolute;top:0;left:0;width:50%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.06),transparent);transform:translateX(-100%) skewX(-15deg);pointer-events:none;}
.shim:hover::after{animation:shimmer .65s var(--e1) forwards;}

/* ── Reduced motion ─────────────────────────────────────── */
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}}
