/* 未訪問の章だけを隠し、一度表示した章はスワイプ中も表示を維持する。 */
.section-reveal-ready .swipe-section:not(.is-reveal-visited) {
  visibility:hidden;
  pointer-events:none;
}
.section-reveal-ready .reveal-item {
  opacity:0;
  --reveal-delay:0ms;
}
.section-reveal-ready [data-reveal-step="1"] { --reveal-delay:75ms; }
.section-reveal-ready [data-reveal-step="2"] { --reveal-delay:150ms; }
.section-reveal-ready [data-reveal-step="3"] { --reveal-delay:225ms; }
.section-reveal-ready [data-reveal-step="4"] { --reveal-delay:300ms; }
.section-reveal-ready [data-reveal-step="5"] { --reveal-delay:375ms; }
.section-reveal-ready [data-reveal-step="6"] { --reveal-delay:450ms; }
.section-reveal-ready [data-reveal-step="7"] { --reveal-delay:525ms; }
.section-reveal-ready .reveal-item.is-revealed {
  animation:section-copy-enter 850ms cubic-bezier(.16,1,.3,1) var(--reveal-delay) both;
}
.section-reveal-ready .reveal-item[data-reveal-kind="title"].is-revealed {
  animation-name:section-title-enter;
  animation-duration:1000ms;
}
.section-reveal-ready .reveal-item[data-reveal-kind="line"].is-revealed {
  animation-name:section-line-enter;
  animation-duration:950ms;
}
.section-reveal-ready .reveal-item[data-reveal-kind="frame"].is-revealed {
  animation-name:section-frame-enter;
  animation-duration:1200ms;
}
.section-reveal-ready .reveal-item[data-reveal-kind="visual"].is-revealed {
  animation-name:section-visual-enter;
  animation-duration:1100ms;
}
.section-reveal-ready .reveal-item[data-reveal-kind="ambient"].is-revealed {
  animation-name:section-ambient-enter;
  animation-duration:1000ms;
  pointer-events:none;
}
/* フォーカスされた入力欄は、演出の完了を待たずに操作できる。 */
.section-reveal-ready .reveal-item.is-revealed.is-reveal-immediate {
  animation:none;
  opacity:1;
}
@keyframes section-title-enter {
  from { opacity:0; translate:0 24px; clip-path:inset(0 0 100% 0); }
  to { opacity:1; translate:none; clip-path:inset(0); }
}
@keyframes section-copy-enter {
  from { opacity:0; translate:0 18px; filter:blur(3px); }
  to { opacity:1; translate:none; filter:blur(0); }
}
@keyframes section-line-enter {
  from { opacity:0; clip-path:inset(0 100% 0 0); }
  to { opacity:1; clip-path:inset(0); }
}
@keyframes section-frame-enter {
  from { opacity:0; clip-path:inset(0 0 100% 0); }
  to { opacity:1; clip-path:inset(0); }
}
@keyframes section-visual-enter {
  from { opacity:0; translate:0 22px; filter:blur(2px); }
  to { opacity:1; translate:none; filter:blur(0); }
}
@keyframes section-ambient-enter {
  from { opacity:0; }
  to { opacity:1; }
}
@media (prefers-reduced-motion:reduce) {
  .section-reveal-ready .swipe-section .reveal-item.is-revealed { animation:none; opacity:1; }
}
