/* ============================================================
   LP card motion — reveal por scroll + hover premium
   Usado na Home (/) e em /sobre-a-plataforma (mesma partial _lpSobrePlataforma)
   Inspirado nos movimentos de comunidade.maestrosdaia.com
   ============================================================ */

/* Estado inicial dos elementos revelados — só quando o JS está ativo
   (.lp-motion-on é adicionada via lp-motion.js). Sem JS, nada fica escondido.
   A transição cobre também borda/sombra/fundo para que o hover dos cards que
   também são .lp-reveal não "pule" nessas propriedades. O stagger é controlado
   pelo JS (atraso na aplicação de .is-visible), não por transition-delay,
   evitando lag no hover. */
.lp-motion-on .lp-reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .6s cubic-bezier(.4, 0, .2, 1),
                transform .55s cubic-bezier(.22, 1, .36, 1),
                border-color .4s cubic-bezier(.22, 1, .36, 1),
                box-shadow .4s cubic-bezier(.22, 1, .36, 1),
                background-color .4s cubic-bezier(.22, 1, .36, 1);
    will-change: opacity, transform;
}

.lp-motion-on .lp-reveal.is-visible {
    opacity: 1;
    transform: none;
}

/* Hover premium dos cards: elevação + borda accent + brilho.
   A transição aqui é o fallback para cards que não sejam .lp-reveal / sem JS. */
.lp-card {
    transition: transform .4s cubic-bezier(.22, 1, .36, 1),
                border-color .4s cubic-bezier(.22, 1, .36, 1),
                box-shadow .4s cubic-bezier(.22, 1, .36, 1),
                background-color .4s cubic-bezier(.22, 1, .36, 1);
}

.lp-card:hover {
    transform: translateY(-6px);
    border-color: var(--accent-color, #3b82f6) !important;
    box-shadow: 0 22px 48px -16px rgba(0, 0, 0, .6),
                0 0 36px -10px rgba(59, 130, 246, .5);
}

/* Stat cards: elevação mais sutil */
.lp-stat:hover {
    transform: translateY(-4px);
}

/* Movimento ambiente (orbs/decoração do hero e do CTA) */
@keyframes lp-float {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-16px); }
}

@keyframes lp-breathe {
    0%, 100% { opacity: .5; transform: scale(1); }
    50%      { opacity: .85; transform: scale(1.06); }
}

.lp-motion-on .lp-float   { animation: lp-float 7s ease-in-out infinite; }
.lp-motion-on .lp-breathe { animation: lp-breathe 9s ease-in-out infinite; }

/* Headline rotativo do hero (PAS) — fade leve no swap controlado por lp-hero-rotator.js */
.lp-rotator-text {
    display: inline-block;
    transition: opacity .5s ease-in-out, transform .5s ease-in-out;
}

.lp-rotator-text.is-swapping {
    opacity: 0;
    transform: translateY(6px);
}

/* Acessibilidade: respeita prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
    .lp-motion-on .lp-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
    .lp-card,
    .lp-card:hover,
    .lp-stat:hover {
        transform: none !important;
    }
    .lp-motion-on .lp-float,
    .lp-motion-on .lp-breathe {
        animation: none !important;
    }
    .lp-rotator-text {
        transition: none !important;
    }
}
