/* =========================================================================
   KEYFRAMES — animações reutilizáveis
   Apenas transform e opacity: propriedades compostas pela GPU, sem reflow.
   ====================================================================== */

/* Pulso do indicador "agenda aberta". */
@keyframes pulse-ring {
    0%   { opacity: 0.75; transform: scale(1); }
    70%  { opacity: 0;    transform: scale(2.6); }
    100% { opacity: 0;    transform: scale(2.6); }
}

/* Flutuação suave dos ícones que orbitam o retrato. */
@keyframes float-soft {
    0%, 100% { transform: translate3d(0, 0, 0); }
    50%      { transform: translate3d(0, -12px, 0); }
}

/* Entrada dos itens do menu mobile, em cascata. */
@keyframes menu-item-in {
    from { opacity: 0; transform: translate3d(0, 16px, 0); }
    to   { opacity: 1; transform: none; }
}

/* Traço do sublinhado manuscrito do título. */
@keyframes draw-stroke {
    from { stroke-dashoffset: 1; }
    to   { stroke-dashoffset: 0; }
}

/* Aparição do painel de mega-menu (o deslocamento horizontal fica no
   contêiner .megamenu; aqui só entra o movimento vertical + escala). */
@keyframes panel-in {
    from { opacity: 0; transform: translate3d(0, -8px, 0) scale(0.98); }
    to   { opacity: 1; transform: none; }
}

/* Reentrada dos cards de curso a cada troca de filtro. */
@keyframes card-in {
    from { opacity: 0; transform: translate3d(0, 14px, 0) scale(0.98); }
    to   { opacity: 1; transform: none; }
}

/* Brilho que percorre a faixa de prova social ao entrar em tela. */
@keyframes shimmer {
    from { background-position: 200% 0; }
    to   { background-position: -200% 0; }
}
