/* Movimento aplicado apenas quando cada seção entra na tela. */
.reveal { transition: opacity .72s ease var(--delay,0ms), transform .72s cubic-bezier(.2,.7,.2,1) var(--delay,0ms); }
.hero-visual, .performance-graphic { transform:translateY(var(--scroll-shift,0)); transition:transform .18s linear; will-change:transform; }
.hero-visual.is-visible .visual-frame { animation:focus-in 1s cubic-bezier(.2,.7,.2,1) both; }
.tech-card.is-visible:nth-child(1) { animation:rise .65s .04s both; }
.tech-card.is-visible:nth-child(2) { animation:rise .65s .17s both; }
.tech-card.is-visible:nth-child(3) { animation:rise .65s .30s both; }
.pillar.is-visible { animation:rise .65s var(--delay,0ms) both; }
.tech-card:hover, .pillar:hover { transform:translateY(-7px); border-color:rgba(226,28,37,.75); transition:transform .28s ease,border-color .28s ease; }
.visual-badge { animation:badge-pulse 3.4s ease-in-out infinite; }
.ring-one { animation:spin 18s linear infinite; }.ring-two { animation:spin 11s linear infinite reverse; }
.core { animation:breathe 3s ease-in-out infinite; }
@keyframes rise { from {opacity:0;transform:translateY(32px)} to {opacity:1;transform:translateY(0)} }
@keyframes focus-in { from {transform:scale(.94);filter:brightness(.72)} to {transform:scale(1);filter:brightness(1)} }
@keyframes badge-pulse { 50% {transform:translateY(-5px);box-shadow:0 12px 26px rgba(226,28,37,.28)} }
@keyframes spin { to {transform:rotate(360deg)} }
@keyframes breathe { 50% {transform:scale(1.08);color:#e21c25} }
@media (prefers-reduced-motion:reduce) { *,*:before,*:after { animation:none!important;transition:none!important;scroll-behavior:auto!important; } }
