/* =====================================================================
   reveal.css — TOP スクロールイン（各ブロック初回のみ）フェードアップ表示
   要素が画面内に入ったら reveal.js が .is-act を付与し、下から上へ
   フェードインする（参考サイトの設定値に準拠）。KV は対象外（初期表示）。
   - [data-reveal]      : opacity + translateY（ブロック・装飾）
   - [data-reveal-fade] : opacity のみ（transform で配置済みの要素用。
                          transform を一切触らないので元の配置を保持する）
   ===================================================================== */

/* 初期状態。head 内の CSS で先に隠すため（レンダーブロッキング）チラつかない。 */
[data-reveal] {
  opacity: 0;
  transform: translate3d(0, 20px, 0);
  transition:
    opacity .5s ease,
    transform 1s cubic-bezier(.215, .61, .355, 1);
  transition-delay: 0s;
}
[data-reveal].is-act {
  opacity: 1;
  transform: translateZ(0);
}

[data-reveal-fade] {
  opacity: 0;
  transition: opacity .5s ease;
}
[data-reveal-fade].is-act {
  opacity: 1;
}

/* 中央配置(translate)を使う要素を、配置を保ったまま他と同じく下→上スライドさせる特例。
   汎用 [data-reveal] の translate3d が中央寄せを壊すため、より高い詳細度で上書きする。 */
.p-lineup__content[data-reveal] {
  transform: translate(-50%, calc(-50% + 20px));
}
.p-lineup__content[data-reveal].is-act {
  transform: translate(-50%, -50%);
}

/* 動きを減らす設定では即時表示（アニメーションなし）。
   fade 要素は transform を触らず配置を保つ。 */
@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal-fade] { opacity: 1 !important; transition: none !important; }
  [data-reveal] { transform: none !important; }
}
