/* ========================================================================
   Scroll Reveal — Benners準拠のフェードイン
   duration別3種（fast/base/hero）＋ stagger（--d1〜--d5）
   ======================================================================== */

/* JS読み込み前は必ず可視（SSR崩れ防止）— .js-reveal-ready が body に付いた時のみ非表示化 */
.js-reveal-ready .reveal,
.js-reveal-ready .reveal-fast,
.js-reveal-ready .reveal-hero {
  opacity: 0;
  transform: translateY(24px);
  will-change: opacity, transform;
}

/* 画像・装飾: サッと */
.js-reveal-ready .reveal-fast {
  transition:
    opacity 0.15s cubic-bezier(0.4, 0.4, 0, 1),
    transform 0.4s cubic-bezier(0.4, 0.4, 0, 1);
  transform: translateY(16px);
}

/* テキスト・カード等（標準） */
.js-reveal-ready .reveal {
  transition:
    opacity 0.6s cubic-bezier(0.4, 0.4, 0, 1),
    transform 0.7s cubic-bezier(0.06, 0.95, 0.5, 1);
}

/* 大ブロック・見出し（ゆったり、遅延イージング） */
.js-reveal-ready .reveal-hero {
  transition:
    opacity 0.8s cubic-bezier(0.06, 0.95, 0.5, 1) 0.1s,
    transform 0.9s cubic-bezier(0.06, 0.95, 0.5, 1) 0.1s;
  transform: translateY(32px);
}

/* 発火時の状態 */
.reveal.is-visible,
.reveal-fast.is-visible,
.reveal-hero.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger（子要素の順次表示用）— 親に .reveal-group を付けて、子要素に .reveal を付ける */
.js-reveal-ready .reveal-group > .reveal:nth-child(1),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(1) { transition-delay: 0s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(2),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(2) { transition-delay: 0.08s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(3),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(3) { transition-delay: 0.16s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(4),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(4) { transition-delay: 0.24s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(5),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(5) { transition-delay: 0.32s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(6),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(6) { transition-delay: 0.4s; }
.js-reveal-ready .reveal-group > .reveal:nth-child(n+7),
.js-reveal-ready .reveal-group > .reveal-fast:nth-child(n+7) { transition-delay: 0.48s; }

/* 明示的な遅延指定（stagger以外で使いたい時） */
.js-reveal-ready .reveal--d1 { transition-delay: 0.1s; }
.js-reveal-ready .reveal--d2 { transition-delay: 0.2s; }
.js-reveal-ready .reveal--d3 { transition-delay: 0.3s; }
.js-reveal-ready .reveal--d4 { transition-delay: 0.4s; }
.js-reveal-ready .reveal--d5 { transition-delay: 0.5s; }

/* アクセシビリティ: 動きを控えたいユーザー向け */
@media (prefers-reduced-motion: reduce) {
  .js-reveal-ready .reveal,
  .js-reveal-ready .reveal-fast,
  .js-reveal-ready .reveal-hero {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* 印刷時は全部表示 */
@media print {
  .reveal, .reveal-fast, .reveal-hero {
    opacity: 1 !important;
    transform: none !important;
  }
}
