/* Animações contínuas do site (decisão do dono: o site tem de ter vida, como antes).
   Tudo aqui some só com prefers-reduced-motion (a11y-motion.css e o bloco no fim)
   ou com o botão "Efeitos visuais" desligado (body.particles-off). */

/* ---------- Chat flutuante: pulso de atenção e ícone que balança ---------- */
.n8n-chat-btn:not(.is-open) .n8n-chat-brand {
    animation: n8n-chat-chamada 2.6s ease-out 1s infinite;
}

.n8n-chat-btn:not(.is-open) .n8n-chat-brand__icon--abrir {
    animation: vn-icone-balanca 1.6s ease-in-out infinite;
}

@keyframes vn-icone-balanca {
    0%, 50%, 100% { transform: scale(1) rotate(0deg); }
    25% { transform: scale(1.07) rotate(-4deg); }
    75% { transform: scale(1.07) rotate(4deg); }
}

/* ---------- Carrossel: botão principal pulsando e brilho passando ---------- */
.swiper-slide-active :is(.mc-btn--primario, .hor-btn--primario) {
    overflow: hidden;
    animation: vn-pulso-cta 2.4s ease-out 1.2s infinite;
}

.swiper-slide-active :is(.mc-btn--primario, .hor-btn--primario)::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(110deg, transparent 30%, rgba(255, 255, 255, 0.28) 50%, transparent 70%);
    transform: translateX(-120%);
    animation: vn-brilho 3.6s ease-in-out 1.5s infinite;
    pointer-events: none;
}

@keyframes vn-pulso-cta {
    0% { box-shadow: 0 0 0 0 rgba(255, 140, 2, 0.55); }
    70% { box-shadow: 0 0 0 14px rgba(255, 140, 2, 0); }
    100% { box-shadow: 0 0 0 0 rgba(255, 140, 2, 0); }
}

@keyframes vn-brilho {
    0%, 55% { transform: translateX(-120%); }
    100% { transform: translateX(120%); }
}

/* Card lateral do slide flutuando devagar. */
.swiper-slide-active :is(.mc-painel__card, .hor-painel__card) {
    animation: vn-flutua 6s ease-in-out 1s infinite;
}

@keyframes vn-flutua {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

/* Destaque do título com um brilho suave. */
.swiper-slide-active :is(.mc-titulo__destaque, .hor-titulo__destaque) {
    animation: vn-neon 3s ease-in-out infinite;
}

@keyframes vn-neon {
    0%, 100% { text-shadow: 0 0 8px currentColor; }
    50% { text-shadow: 0 0 18px currentColor, 0 0 30px currentColor; }
}

/* ---------- Planos e vitrine: card em destaque respirando ---------- */
.plano-card.featured-plan,
.plano-card.plano-card--outubro-rosa {
    animation: vn-respira 4s ease-in-out infinite;
}

@keyframes vn-respira {
    0%, 100% { filter: drop-shadow(0 0 10px rgba(255, 77, 29, 0.25)); }
    50% { filter: drop-shadow(0 0 22px rgba(255, 77, 29, 0.5)); }
}

.plano-card.plano-card--outubro-rosa {
    animation-name: vn-respira-rosa;
}

@keyframes vn-respira-rosa {
    0%, 100% { filter: drop-shadow(0 0 10px rgba(255, 79, 154, 0.25)); }
    50% { filter: drop-shadow(0 0 22px rgba(255, 79, 154, 0.55)); }
}

/* ---------- Desligar ---------- */
body.particles-off .n8n-chat-btn .n8n-chat-brand,
body.particles-off .n8n-chat-brand__icon--abrir,
body.particles-off :is(.mc-btn--primario, .hor-btn--primario),
body.particles-off :is(.mc-btn--primario, .hor-btn--primario)::after,
body.particles-off :is(.mc-painel__card, .hor-painel__card),
body.particles-off :is(.mc-titulo__destaque, .hor-titulo__destaque),
body.particles-off .plano-card {
    animation: none !important;
}

@media (prefers-reduced-motion: reduce) {
    .n8n-chat-btn .n8n-chat-brand,
    .n8n-chat-brand__icon--abrir,
    :is(.mc-btn--primario, .hor-btn--primario),
    :is(.mc-btn--primario, .hor-btn--primario)::after,
    :is(.mc-painel__card, .hor-painel__card),
    :is(.mc-titulo__destaque, .hor-titulo__destaque),
    .plano-card {
        animation: none !important;
    }
}

/* No slide Outubro Rosa o pulso do botão é rosa. */
.swiper-slide-active .hor-btn--primario {
    animation-name: vn-pulso-cta-rosa;
}

@keyframes vn-pulso-cta-rosa {
    0% { box-shadow: 0 0 0 0 rgba(255, 79, 154, 0.55); }
    70% { box-shadow: 0 0 0 14px rgba(255, 79, 154, 0); }
    100% { box-shadow: 0 0 0 0 rgba(255, 79, 154, 0); }
}
