/* Entradas discretas. Sem JavaScript o conteúdo permanece visível (a classe .js é aplicada por app.js). */
.js [data-reveal] { opacity: 0; transform: translateY(24px); transition: opacity 0.7s var(--ease), transform 0.7s var(--ease); transition-delay: var(--d, 0ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }

@keyframes hero-in { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
@keyframes arch-in { from { opacity: 0; transform: scale(1.04); } to { opacity: 1; transform: none; } }
.js .hero-copy > * { animation: hero-in 0.8s var(--ease) both; }
.js .hero-copy > :nth-child(2) { animation-delay: 80ms; }
.js .hero-copy > :nth-child(3) { animation-delay: 160ms; }
.js .hero-copy > :nth-child(4) { animation-delay: 240ms; }
.js .hero-art img { animation: arch-in 1.2s var(--ease) both; }

@keyframes drip { 0%, 100% { transform: scaleY(0.4); transform-origin: top; opacity: 0.4; } 50% { transform: scaleY(1); opacity: 1; } }
.scroll-hint span { animation: drip 2.4s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition-duration: 0.01ms !important; }
  .js [data-reveal] { opacity: 1; transform: none; }
}
