/* ============================================================
   Anime.js Animations – supporting styles
   ============================================================ */

/* ── Material cards spring-bounce entrance ────────────────── */
/* Matches the entrance treatment applied to interest-card,
   project-card, clinical-card and stat-card in
   scroll-animations.css.                                       */
.materials-grid .material-card.fade-in {
  transform: translateY(46px) scale(0.94);
  transition:
    opacity   0.6s cubic-bezier(0.34, 1.56, 0.64, 1),
    transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.materials-grid .material-card.fade-in.visible {
  opacity:   1;
  transform: none;
}

/* ── CTA ripple helper ────────────────────────────────────── */
.hero-cta {
  overflow: hidden;
}

.aa-ripple {
  position:      absolute;
  border-radius: 50%;
  background:    rgba(255, 255, 255, 0.45);
  pointer-events: none;
  transform:     scale(0);
}

/* ── Hero subtitle typewriter characters ─────────────────── */
.tw-char {
  display: inline-block;
}

.tw-space {
  display: inline-block;
  width:   0.28em;
}

/* ── CTA magnetic hover – override any residual transition ── */
/* The magnetic effect sets transform directly; keep will-change
   to hint the compositor and avoid transition fights.          */
.hero-cta {
  will-change: transform;
}
