/* ═══════════════════════════════════════════════════════════
   ANIMAÇÕES — sutis, orgânicas, sem exibicionismo
═══════════════════════════════════════════════════════════ */

/* Revelação por scroll — suave, sem bounce */
.reveal-fade-in {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 1s var(--ease-out), transform 1s var(--ease-out);
    will-change: transform, opacity;
}
.reveal-scale-up {
    opacity: 0;
    transform: scale(0.97) translateY(12px);
    transition: opacity 1.1s var(--ease-out), transform 1.1s var(--ease-out);
    will-change: transform, opacity;
}
.reveal-fade-in.active,
.reveal-scale-up.active {
    opacity: 1;
    transform: translateY(0) scale(1);
}

/* delays escalonados para grids */
.grid-3 .reveal-fade-in:nth-child(2),
.pain-grid .reveal-fade-in:nth-child(2) { transition-delay: 0.1s; }
.grid-3 .reveal-fade-in:nth-child(3),
.pain-grid .reveal-fade-in:nth-child(3) { transition-delay: 0.2s; }
.pain-grid .reveal-fade-in:nth-child(4) { transition-delay: 0.3s; }

/* Pulsação do FAB — calma, quase respirando */
@keyframes breathe {
    0%, 100% { box-shadow: 0 6px 24px rgba(110, 132, 111, 0.40); }
    50%       { box-shadow: 0 6px 36px rgba(110, 132, 111, 0.65); }
}
.animate-pulse-glow { animation: breathe 4s ease-in-out infinite; }

/* Respeita preferência por movimento reduzido */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; }
    .reveal-fade-in, .reveal-scale-up { opacity: 1; transform: none; }
}
