@charset "UTF-8";
/* ==========================================================================
   utility — 単機能ヘルパー
   ========================================================================== */

/* スクリーンリーダー専用テキスト */
.u-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* --------------------------------------------------------------------------
   スクロール表示アニメーション
   JS が有効な場合のみ初期状態を隠し、未対応環境では通常表示を維持する。
   translate / scale の個別プロパティを使い、既存の transform と競合させない。
   -------------------------------------------------------------------------- */
.has-scroll-reveal .u-scroll-reveal {
  opacity: 0;
  translate: 0 26px;
  transition:
    opacity 0.85s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms),
    translate 1s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms),
    scale 1.15s cubic-bezier(0.22, 1, 0.36, 1) var(--reveal-delay, 0ms);
}

.has-scroll-reveal .u-scroll-reveal--soft {
  translate: 0 16px;
}

.has-scroll-reveal .u-scroll-reveal--image {
  translate: 0 20px;
  scale: 1.025;
}

.has-scroll-reveal .u-scroll-reveal.is-revealed {
  opacity: 1;
  translate: 0 0;
  scale: 1;
}

@media (prefers-reduced-motion: reduce) {
  .has-scroll-reveal .u-scroll-reveal,
  .has-scroll-reveal .u-scroll-reveal--soft,
  .has-scroll-reveal .u-scroll-reveal--image {
    opacity: 1;
    translate: none;
    scale: 1;
    transition: none;
  }
}
