/* 本地 AOS 兼容层（离线替代 cdn.jsdelivr.net/npm/aos） */
[data-aos] {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: .7s;
  transition-timing-function: cubic-bezier(.2, .6, .2, 1);
  will-change: opacity, transform;
}
[data-aos="fade-up"] { transform: translateY(26px); }
[data-aos="fade-down"] { transform: translateY(-26px); }
[data-aos="fade-left"] { transform: translateX(26px); }
[data-aos="fade-right"] { transform: translateX(-26px); }
[data-aos].aos-animate { opacity: 1; transform: none; }
html:not(.aos-ready) [data-aos] { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  [data-aos] { transition: none; }
}
