/* 页面加载与滚动入场（参考 Apple 产品页：柔和淡入 + 自下而上交错出现） */

:root {
  --reveal-page-duration: 0.9s;
  --reveal-page-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --reveal-duration: 0.55s;
  --reveal-ease: cubic-bezier(0.25, 0.1, 0.25, 1);
  --reveal-distance: 40px;
  --reveal-distance-soft: 28px;
}

html.reveal-pending .site-header,
html.reveal-pending main {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
}

html.reveal-ready .site-header,
html.reveal-ready main {
  opacity: 1;
  transform: none;
  transition:
    opacity var(--reveal-page-duration) var(--reveal-page-ease),
    transform var(--reveal-page-duration) var(--reveal-page-ease);
}

html.reveal-ready .site-header {
  transition-delay: 0.04s;
}

html.reveal-ready main {
  transition-delay: 0.14s;
}

[data-reveal] {
  opacity: 0;
  transition-property: opacity, transform;
  transition-duration: var(--reveal-duration, 0.55s);
  transition-timing-function: var(--reveal-ease, cubic-bezier(0.25, 0.1, 0.25, 1));
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

[data-reveal].is-revealed {
  opacity: 1;
  transform: none !important;
}

[data-reveal="fade-up"] {
  transform: translate3d(0, var(--reveal-distance), 0);
}

[data-reveal="fade-up-soft"] {
  transform: translate3d(0, var(--reveal-distance-soft), 0);
}

[data-reveal="fade-down"] {
  transform: translate3d(0, calc(var(--reveal-distance) * -1), 0);
}

[data-reveal="fade-left"] {
  transform: translate3d(calc(var(--reveal-distance) * -1), 0, 0);
}

[data-reveal="fade-right"] {
  transform: translate3d(var(--reveal-distance), 0, 0);
}

[data-reveal="fade-in"] {
  transform: none;
}

[data-reveal="zoom-in"] {
  transform: scale(0.96);
}

[data-reveal-onload="1"]:not(.is-revealed) {
  transition-duration: 0.7s;
}

@media (prefers-reduced-motion: reduce) {
  :root {
    --reveal-page-duration: 0.01ms;
    --reveal-duration: 0.01ms;
  }

  html.reveal-pending .site-header,
  html.reveal-pending main {
    opacity: 1;
    transform: none;
  }

  [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
