/* Framer "appear" effect, replacing the inline appear scripts Framer emitted.
   Elements tagged data-framer-appear-id fade in and rise 40px into place on load.
   The curve approximates Framer's spring (stiffness 500, damping 60, mass 1).
   The resting state (opacity 1, transform none, will-change transform) is the base
   style, so once the animation ends the element is in exactly the state Framer's
   runtime leaves it in. */
@keyframes framer-appear {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
}

[data-framer-appear-id] {
  opacity: 1;
  transform: none;
  will-change: transform;
  animation: framer-appear 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

@media (prefers-reduced-motion: reduce) {
  [data-framer-appear-id] {
    animation: none;
  }
}
