/* ================================================================
   BRANCA MESSINA — CSS de apoio
   Layout no Tailwind (CDN). Aqui: fontes, textura, animações
   e dois detalhes de assinatura (aspas + linha ondulada).
   ================================================================ */

/* --- Fontes base --- */
body {
    font-family: 'Inter', system-ui, -apple-system, sans-serif;
    font-weight: 400;
    -webkit-text-size-adjust: 100%;
}

h1, h2, h3,
.font-display {
    font-family: 'Playfair Display', Georgia, serif;
}

/* --- Lavagem de cor muito sutil no fundo claro --- */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    background:
        radial-gradient(ellipse at 14% 8%,  rgba(248, 111, 98, 0.05) 0%, transparent 55%),
        radial-gradient(ellipse at 88% 92%, rgba(99, 142, 198, 0.05) 0%, transparent 55%);
    pointer-events: none;
    z-index: 0;
}

/* Grão de papel sutilíssimo (data-URI, sem requisição extra) */
.grain::after {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0.035;
    mix-blend-mode: multiply;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* ================================================================
   ANIMAÇÕES
   ================================================================ */
/* Estado escondido SÓ quando o JS confirma suporte (classe .js no <html>,
   adicionada por um script inline no <head> antes da pintura).
   Sem JS / webview problemático = conteúdo sempre visível. */
.js .reveal {
    opacity: 0;
    transform: translateY(22px);
    transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.22, 0.61, 0.36, 1);
    will-change: opacity, transform;
}
.js .reveal.is-visible { opacity: 1; transform: none; }

/* Backstop final: revela tudo se o JS de animação não rodar a tempo */
.reveal-all .reveal { opacity: 1 !important; transform: none !important; }

/* Stagger leve entre cards */
.stagger > .reveal:nth-child(1) { transition-delay: 0.00s; }
.stagger > .reveal:nth-child(2) { transition-delay: 0.07s; }
.stagger > .reveal:nth-child(3) { transition-delay: 0.14s; }
.stagger > .reveal:nth-child(4) { transition-delay: 0.21s; }
.stagger > .reveal:nth-child(5) { transition-delay: 0.28s; }
.stagger > .reveal:nth-child(6) { transition-delay: 0.35s; }

/* Movimento orgânico discreto nas formas de fundo */
@keyframes floatSoft {
    0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
    50%      { transform: translate3d(0, -16px, 0) scale(1.03); }
}
.float-soft   { animation: floatSoft 13s ease-in-out infinite; }
.float-soft-2 { animation: floatSoft 17s ease-in-out infinite reverse; }

/* --- Trilho do carrossel: esconde a barra de rolagem --- */
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }
.no-scrollbar::-webkit-scrollbar { display: none; }

/* ================================================================
   ACESSIBILIDADE — respeita prefers-reduced-motion
   ================================================================ */
@media (prefers-reduced-motion: reduce) {
    .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; }
    .float-soft, .float-soft-2 { animation: none; }
    html { scroll-behavior: auto; }
}
