/**
 * animations.css — Motion & Transitions
 * Aoyama Law Office | Trust & Authority Design System
 * prefers-reduced-motion は base.css のグローバルルールで制御済み
 */

/* ============================================================
   Fade In Up — スクロールアニメーション共通
   ============================================================ */

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ============================================================
   Scroll-triggered: .is-visible クラス付与で発火
   ============================================================ */

.anim-fade-up {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity var(--transition-slow),
    transform var(--transition-slow);
}

.anim-fade-up.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* 遅延バリアント */
.anim-delay-1 { transition-delay: 100ms; }
.anim-delay-2 { transition-delay: 200ms; }
.anim-delay-3 { transition-delay: 300ms; }
.anim-delay-4 { transition-delay: 400ms; }
.anim-delay-5 { transition-delay: 500ms; }

/* ============================================================
   Stat counter pulse — trustセクション
   ============================================================ */

.stat-number {
  display: inline-block;
  animation: countUp 600ms ease both;
}

/* ============================================================
   Hero — ページロード時は IntersectionObserver 不要で即発火
   ============================================================ */

.hero .anim-fade-up {
  animation: fadeInUp 700ms ease both;
}

.hero .anim-delay-1 { animation-delay: 200ms; }
.hero .anim-delay-2 { animation-delay: 380ms; }
.hero .anim-delay-3 { animation-delay: 520ms; }
.hero .anim-delay-4 { animation-delay: 650ms; }
.hero .anim-delay-5 { animation-delay: 800ms; }
