/**
 * Scroll reveal — matsuri2026 / sound-bazaar-teaser 系
 * IntersectionObserver で .is-inview を付与。
 */
@layer lism-custom {
  [data-reveal] {
    opacity: 0;
    transform: translateY(var(--reveal-shift));
    transition:
      opacity var(--dur) var(--ease-out),
      transform var(--dur) var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
    will-change: opacity, transform;
  }

  [data-reveal].is-inview {
    opacity: 1;
    transform: none;
  }

  [data-reveal="fade"] {
    transform: none;
  }

  /* 暗闇から灯が差す — 写真向け */
  [data-reveal="glow"] {
    opacity: 0;
    transform: none;
    filter: brightness(1.85) saturate(0.85);
    transition:
      opacity var(--dur-slow) var(--ease-out),
      filter calc(var(--dur-slow) + 0.2s) var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
    will-change: opacity, filter;
  }

  [data-reveal="glow"].is-inview {
    opacity: 1;
    filter: brightness(1) saturate(1);
  }

  [data-reveal="glow"].is-settled {
    filter: none;
    will-change: auto;
  }

  /* ギャラリー（Works 一覧 / 詳細写真）— ゆるやかな灯り＋わずかな浮上 */
  .c--archiveWorks_grid [data-reveal="glow"],
  .c--workGallery_stack [data-reveal="glow"] {
    opacity: 0;
    transform: translateY(var(--reveal-shift-gallery)) scale(0.988);
    filter: brightness(1.72) saturate(0.9) contrast(0.97);
    transition:
      opacity var(--dur-gallery) var(--ease-gallery),
      transform calc(var(--dur-gallery) - 0.15s) var(--ease-gallery),
      filter calc(var(--dur-gallery) + 0.25s) cubic-bezier(0.33, 1, 0.68, 1);
    transition-delay: var(--reveal-delay, 0s);
    will-change: opacity, transform, filter;
  }

  .c--archiveWorks_grid [data-reveal="glow"].is-inview,
  .c--workGallery_stack [data-reveal="glow"].is-inview {
    opacity: 1;
    transform: none;
    filter: brightness(1) saturate(1) contrast(1);
  }

  .c--archiveWorks_grid [data-reveal="glow"].is-settled,
  .c--workGallery_stack [data-reveal="glow"].is-settled {
    filter: none;
    will-change: auto;
  }

  /* トップ Selected Works — ゆっくり灯るフェード */
  .c--frontWorks_grid [data-reveal="glow"] {
    opacity: 0;
    transform: translateY(var(--reveal-shift-portfolio)) scale(0.992);
    filter: brightness(1.55) saturate(0.88) contrast(0.98);
    transition:
      opacity var(--dur-portfolio) cubic-bezier(0.25, 1, 0.35, 1),
      transform calc(var(--dur-portfolio) - 0.35s) var(--ease-gallery),
      filter calc(var(--dur-portfolio) + 0.35s) cubic-bezier(0.33, 1, 0.68, 1);
    transition-delay: var(--reveal-delay, 0s);
    will-change: opacity, transform, filter;
  }

  .c--frontWorks_grid [data-reveal="glow"].is-inview {
    opacity: 1;
    transform: none;
    filter: brightness(1) saturate(1) contrast(1);
  }

  .c--frontWorks_grid [data-reveal="glow"].is-settled {
    filter: none;
    will-change: auto;
  }

  [data-reveal="mask"] {
    opacity: 1;
    transform: none;
    clip-path: inset(0 0 100% 0);
    transition: clip-path var(--dur-slow) var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
  }

  [data-reveal="mask"].is-inview {
    clip-path: inset(0 0 0 0);
  }

  [data-reveal="line"] {
    opacity: 1;
    transform: none;
    display: block;
    overflow: hidden;
    padding-block-end: 0.08em;
  }

  [data-reveal="line"] > * {
    display: block;
    transform: translateY(110%);
    transition: transform var(--dur-slow) var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
    will-change: transform;
  }

  [data-reveal="line"].is-inview > * {
    transform: none;
  }

  /* 横から光が差す */
  [data-reveal="light"] {
    opacity: 0;
    transform: translateX(calc(var(--s20) * -1));
    filter: brightness(0.55);
    transition:
      opacity var(--dur-slow) var(--ease-out),
      transform var(--dur-slow) var(--ease-out),
      filter var(--dur-slow) var(--ease-out);
    transition-delay: var(--reveal-delay, 0s);
  }

  [data-reveal="light"].is-inview {
    opacity: 1;
    transform: none;
    filter: none;
  }

  [data-reveal].is-settled,
  [data-reveal].is-settled > * {
    will-change: auto;
  }

  @keyframes scroll-cue {
    0%,
    100% {
      opacity: 0.85;
      transform: scaleY(1);
    }
    50% {
      opacity: 0.25;
      transform: scaleY(0.45);
    }
  }

  .c--scrollCue_line {
    animation: scroll-cue 2.8s var(--ease-in-out) infinite;
    transform-origin: center top;
  }

  /* 読み物詳細（Works / Note）— 浮上・灯り reveal なし */
  .is-reading [data-reveal],
  .is-reading [data-reveal="mask"],
  .is-reading [data-reveal="glow"],
  .is-reading .c--frontWorks_grid [data-reveal="glow"],
  .is-reading .c--workGallery_stack [data-reveal="glow"],
  .is-reading [data-reveal="light"],
  .is-reading [data-reveal="line"] > * {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    filter: none !important;
    transition: none !important;
    will-change: auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-reveal],
  [data-reveal="mask"],
  [data-reveal="glow"],
  .c--archiveWorks_grid [data-reveal="glow"],
  .c--frontWorks_grid [data-reveal="glow"],
  .c--workGallery_stack [data-reveal="glow"],
  [data-reveal="light"],
  [data-reveal="line"] > * {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    filter: none !important;
    transition: none !important;
  }

  .c--scrollCue_line {
    animation: none !important;
  }
}
