/* ═══════════════════════════════════════════════════════════
   animations.css — reveal / stagger / char-split
   (was referenced in index.html but missing — now restored)
═══════════════════════════════════════════════════════════ */

/* ── Generic reveal ── */
.reveal{
  opacity:0;transform:translateY(48px);
  transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform .9s cubic-bezier(.2,.8,.2,1);
}
.reveal.in{opacity:1;transform:none}

/* ── Staggered children ── */
.reveal-stagger>*{
  opacity:0;transform:translateY(40px);
  transition:opacity .7s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1);
}
.reveal-stagger.in>*{opacity:1;transform:none}
.reveal-stagger.in>*:nth-child(1){transition-delay:.04s}
.reveal-stagger.in>*:nth-child(2){transition-delay:.10s}
.reveal-stagger.in>*:nth-child(3){transition-delay:.16s}
.reveal-stagger.in>*:nth-child(4){transition-delay:.22s}
.reveal-stagger.in>*:nth-child(5){transition-delay:.28s}
.reveal-stagger.in>*:nth-child(6){transition-delay:.34s}

/* ── Character split (titles) ── */
/* char-reveal also carries .reveal — neutralise the block-level fade
   so only the per-character motion plays. */
.char-reveal{opacity:1!important;transform:none!important}
.char-reveal .char{
  display:inline-block;
  transform:translateY(115%) rotate(4deg);
  opacity:0;
  transition:transform .85s cubic-bezier(.2,.85,.25,1),opacity .85s ease;
}
.char-reveal.in .char{transform:translateY(0) rotate(0);opacity:1}

/* keep italic ems coloured through the split */
.char-reveal em .char,.char-reveal .char em{font-family:var(--serif);font-style:italic}

@media(prefers-reduced-motion:reduce){
  .reveal,.reveal-stagger>*,.char-reveal .char{
    opacity:1!important;transform:none!important;transition:none!important;
  }
}
