/* ============================================================
   STEADY — Scroll reveal + micro animations
   ============================================================ */

[data-animate]{
  opacity:0;
  transform:translateY(34px);
  transition:opacity .8s var(--ease), transform .8s var(--ease);
  transition-delay:var(--d, 0s);
  will-change:opacity, transform;
}
[data-animate="left"]{transform:translateX(-44px);}
[data-animate="right"]{transform:translateX(44px);}
[data-animate="zoom"]{transform:scale(.92);}
[data-animate].in-view{opacity:1;transform:none;}

@media (prefers-reduced-motion: reduce){
  [data-animate]{opacity:1;transform:none;transition:none;}
  *{animation-duration:.01ms !important;animation-iteration-count:1 !important;}
}

@keyframes pulse{
  0%,100%{box-shadow:0 0 0 0 rgba(40,166,184,.5);}
  50%{box-shadow:0 0 0 9px rgba(40,166,184,0);}
}
@keyframes floaty{
  0%,100%{transform:translateY(0);}
  50%{transform:translateY(-14px);}
}
@keyframes spinSlow{to{transform:rotate(360deg);}}
@keyframes gradientShift{
  0%{background-position:0% 50%;}
  50%{background-position:100% 50%;}
  100%{background-position:0% 50%;}
}
@keyframes shimmer{
  0%{background-position:-468px 0;}
  100%{background-position:468px 0;}
}

.animate-float{animation:floaty 6s ease-in-out infinite;}
.hero .accent{background-size:200% 200%;animation:gradientShift 6s ease infinite;}

/* Loading shimmer on photo placeholders */
.member-photo .placeholder .initials{text-shadow:0 4px 20px rgba(0,0,0,.3);}
