*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-base);
  color: var(--navy-900);
  background: #fff;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; cursor: pointer; border: none; background: none; }
.container { max-width: 1120px; margin: 0 auto; padding: 0 24px; }
.section { padding: var(--space-section) 0; }
.cta-primary {
  display: inline-block;
  background: var(--roxo);
  color: #fff;
  font-weight: 700;
  padding: 14px 28px;
  border-radius: 8px;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.cta-primary:hover { transform: translateY(-2px); box-shadow: 0 8px 24px var(--roxo-glow); }
.cta-secondary {
  display: inline-block;
  border: 1px solid var(--navy-900);
  color: var(--navy-900);
  font-weight: 600;
  padding: 13px 27px;
  border-radius: 8px;
}
/* Reveal cinematográfico: a seção em si não esconde, os filhos entram em sequência
   (blur->foco + translateY grande + easing "expo-out") pra ler como diretor de cena,
   não como fade de PowerPoint. Variantes com override próprio de [data-reveal]
   (ex: narrative-scroll) ganham precedência por especificidade e ficam intactas. */
[data-reveal] > .container > * {
  opacity: 0;
  transform: translateY(56px);
  filter: blur(6px);
  transition: opacity 0.9s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.9s cubic-bezier(0.16, 1, 0.3, 1),
              filter 0.9s cubic-bezier(0.16, 1, 0.3, 1);
}
[data-reveal].is-visible > .container > * { opacity: 1; transform: translateY(0); filter: blur(0); }
[data-reveal] > .container > *:nth-child(1) { transition-delay: 0s; }
[data-reveal] > .container > *:nth-child(2) { transition-delay: 0.12s; }
[data-reveal] > .container > *:nth-child(3) { transition-delay: 0.24s; }
[data-reveal] > .container > *:nth-child(4) { transition-delay: 0.36s; }
[data-reveal] > .container > *:nth-child(5) { transition-delay: 0.48s; }
