/* Efeitos leves das páginas novas (1.6.0). Só valem com body.ecv-fx. */

/* 1. Acabamento: títulos equilibrados, seleção na cor da marca, rolagem suave, foco visível. */
html:has(body.ecv-fx) { scroll-behavior:smooth; }
body.ecv-fx h1, body.ecv-fx h2, body.ecv-fx h3 { text-wrap:balance; }
body.ecv-fx p { text-wrap:pretty; }
body.ecv-fx ::selection { background:#C9F27A; color:#093D26; }
body.ecv-fx a:focus-visible, body.ecv-fx button:focus-visible, body.ecv-fx input:focus-visible, body.ecv-fx summary:focus-visible { outline:3px solid #8BC34A; outline-offset:2px; border-radius:8px; }

/* 2. Topo: o texto entra subindo devagar, um item depois do outro. */
@keyframes ecv-entra { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
body.ecv-fx .ecv-ini-topo .ecv-ini-largura > *,
body.ecv-fx .ecv-ini-topo .ecv-ini-topo-texto > *,
body.ecv-fx .ecv-topo .ecv-topo-texto > * { animation:ecv-entra .6s cubic-bezier(.2,.7,.2,1) both; }
body.ecv-fx .ecv-ini-topo .ecv-ini-topo-texto > *:nth-child(2), body.ecv-fx .ecv-topo .ecv-topo-texto > *:nth-child(2) { animation-delay:.08s; }
body.ecv-fx .ecv-ini-topo .ecv-ini-topo-texto > *:nth-child(3), body.ecv-fx .ecv-topo .ecv-topo-texto > *:nth-child(3) { animation-delay:.16s; }
body.ecv-fx .ecv-ini-topo .ecv-ini-topo-texto > *:nth-child(n+4), body.ecv-fx .ecv-topo .ecv-topo-texto > *:nth-child(n+4) { animation-delay:.24s; }
body.ecv-fx .ecv-ini-topo .ecv-ini-numeros { animation-delay:.3s; }
body.ecv-fx .ecv-ini-topo .ecv-ini-topo-texto { animation:none; }
/* 1.6.1 (auditor): título e texto de abertura só deslizam, sem sumir no início, para o Google medir a página como rápida (LCP). */
@keyframes ecv-entra-leve { from { transform:translateY(10px); } to { transform:none; } }
body.ecv-fx .ecv-ini-topo .ecv-ini-titulo, body.ecv-fx .ecv-ini-topo .ecv-ini-lead,
body.ecv-fx .ecv-topo .ecv-titulo, body.ecv-fx .ecv-topo .ecv-lead { animation-name:ecv-entra-leve; }

/* 3. Cartões e listas: sobem um pouco ao passar o mouse. Usa "translate" (não "transform") para não brigar com a animação do item 5. */
body.ecv-fx .ecv-ini-proj, body.ecv-fx .ecv-eco-base, body.ecv-fx .ecv-ini-nov, body.ecv-fx .ecv-ini-ferr,
body.ecv-fx .ecv-ini .ecv-glo-grupo li a, body.ecv-fx .ecv-ini .ecv-pr-lista a, body.ecv-fx .ecv .ecv-item,
body.ecv-fx .ecv .ecv-navegacao a, body.ecv-fx .ecv-cat, body.ecv-fx .ecv .ecv-ensinar .ens-cat, body.ecv-fx .ecv .ecv-ensinar .ens-aula {
    transition:translate .22s ease, box-shadow .22s ease, border-color .22s ease;
}
@media (hover:hover) {
    body.ecv-fx .ecv-ini-proj:hover, body.ecv-fx .ecv-eco-base:hover, body.ecv-fx .ecv-ini-nov:hover, body.ecv-fx .ecv-ini-ferr:hover,
    body.ecv-fx .ecv-cat:hover, body.ecv-fx .ecv .ecv-ensinar .ens-cat:hover { translate:0 -4px; box-shadow:0 16px 34px rgba(9,61,38,.14); }
    body.ecv-fx .ecv-ini .ecv-glo-grupo li a:hover, body.ecv-fx .ecv-ini .ecv-pr-lista a:hover, body.ecv-fx .ecv .ecv-item:hover,
    body.ecv-fx .ecv .ecv-navegacao a:hover, body.ecv-fx .ecv .ecv-ensinar .ens-aula:hover { translate:0 -2px; }
}

/* 4. Botões e chamadas "→": reação curta ao mouse e ao toque. */
body.ecv-fx .ecv-ini-bt, body.ecv-fx .ecv-ini button, body.ecv-fx .ecv-busca button, body.ecv-fx .ecv-eco-assuntos a, body.ecv-fx .ecv .ecv-chip {
    transition:scale .15s ease, translate .15s ease, filter .15s ease, background-color .15s ease;
}
body.ecv-fx .ecv-ini-bt:hover, body.ecv-fx .ecv-ini button:hover, body.ecv-fx .ecv-busca button:hover { filter:brightness(1.12); }
body.ecv-fx .ecv-ini-bt:active, body.ecv-fx .ecv-ini button:active, body.ecv-fx .ecv-busca button:active { scale:.97; }
body.ecv-fx .ecv-eco-assuntos a:hover, body.ecv-fx .ecv .ecv-chip:hover { translate:0 -1px; }
body.ecv-fx .ecv-ini-mais { display:inline-block; transition:translate .2s ease; }
body.ecv-fx a:hover > .ecv-ini-mais, body.ecv-fx .ecv-ini-mais:hover { translate:4px 0; }

/* 5. Ao rolar a página, cartões e seções aparecem suaves (só em navegadores que têm o recurso; nos outros, aparecem normais). */
@keyframes ecv-surge { from { opacity:0; transform:translateY(24px); } to { opacity:1; transform:none; } }
@supports (animation-timeline: view()) {
    body.ecv-fx .ecv-ini-proj, body.ecv-fx .ecv-eco-base, body.ecv-fx .ecv-ini-nov, body.ecv-fx .ecv-ini-ferr,
    body.ecv-fx .ecv-ini .ecv-glo-grupo, body.ecv-fx .ecv-ini .ecv-pr-base, body.ecv-fx .ecv-cat, body.ecv-fx .ecv-ini-contato {
        animation:ecv-surge linear both;
        animation-timeline:view();
        animation-range:entry 0% entry 35%;
    }
}

/* 6. Quem pediu ao aparelho para reduzir movimento não vê nada se mexer. */
@media (prefers-reduced-motion: reduce) {
    html:has(body.ecv-fx) { scroll-behavior:auto; }
    body.ecv-fx *, body.ecv-fx *::before, body.ecv-fx *::after { animation:none !important; transition:none !important; }
    body.ecv-fx .ecv-ini-proj:hover, body.ecv-fx .ecv-eco-base:hover, body.ecv-fx .ecv-ini-nov:hover, body.ecv-fx .ecv-ini-ferr:hover,
    body.ecv-fx .ecv-cat:hover, body.ecv-fx .ecv-ini .ecv-glo-grupo li a:hover, body.ecv-fx .ecv-ini .ecv-pr-lista a:hover,
    body.ecv-fx .ecv .ecv-item:hover, body.ecv-fx .ecv-ini-mais { translate:none !important; scale:none !important; }
}
