/* ============================================================
   动效：keyframes + View Transitions + 滚动揭示 + reduced-motion 兜底
   ============================================================ */

/* 脉冲 — 多处使用：nav-logo dot、hero status、project status */
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.5; transform: scale(0.85); }
}

/* 主题切换扩散效果 — View Transitions API */
::view-transition-old(root),
::view-transition-new(root) {
  animation: none;
  mix-blend-mode: normal;
}
::view-transition-new(root) {
  animation: rippleReveal 0.65s var(--ease) both;
  z-index: 1;
}
::view-transition-old(root) {
  z-index: 0;
}
@keyframes rippleReveal {
  from {
    clip-path: circle(0% at var(--ripple-x, 50%) var(--ripple-y, 50%));
  }
  to {
    clip-path: circle(150% at var(--ripple-x, 50%) var(--ripple-y, 50%));
  }
}

/* 滚动揭示 */
[data-reveal] {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.9s var(--ease-out), transform 0.9s var(--ease-out);
}

[data-reveal].in-view {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal-delay="1"] { transition-delay: 0.08s; }
[data-reveal-delay="2"] { transition-delay: 0.16s; }
[data-reveal-delay="3"] { transition-delay: 0.24s; }
[data-reveal-delay="4"] { transition-delay: 0.32s; }

/* 全局 reduced-motion 兜底 */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .orb { animation: none; }
  ::view-transition-new(root) { animation: none; }
  .hero-title .word { transform: none; animation: none; }
  .hero-tagline, .hero-actions, .hero-stats { opacity: 1; animation: none; transform: none; }
}
