/* Efeito de surgimento na rolagem — só vale com a classe .reveal-on (adicionada pelo reveal.js). */
:root { --rv-ease: cubic-bezier(0.23, 1, 0.32, 1); }

/* Blocos: fade + subida curta */
.reveal-on .rv { opacity: 0; transform: translateY(28px); }
.reveal-on .rv.in { opacity: 1; transform: none; transition: opacity 700ms var(--rv-ease) var(--rv-d, 0ms), transform 900ms var(--rv-ease) var(--rv-d, 0ms); }

/* Imagens e calendário: leve aproximação */
.reveal-on .rv-scale { opacity: 0; transform: scale(1.04); }
.reveal-on .rv-scale.in { opacity: 1; transform: none; transition: opacity 900ms var(--rv-ease) var(--rv-d, 0ms), transform 1200ms var(--rv-ease) var(--rv-d, 0ms); }

/* Títulos: cada palavra sobe de dentro de uma máscara */
.reveal-on .rv-w { display: inline-block; overflow: hidden; vertical-align: top; padding: .12em 0 .16em; margin: -.12em 0 -.16em; }
.reveal-on .rv-w > span { display: inline-block; transform: translateY(110%); }
.reveal-on .rv-words.in .rv-w > span { transform: none; transition: transform 950ms var(--rv-ease); transition-delay: calc(var(--rv-d, 0ms) + var(--i, 0) * 45ms); }
