/* utilitários de entrada — elementos com [data-reveal] começam ocultos e revelam via JS (.is-in) */
.aurora [data-reveal]{opacity:0;transform:translateY(16px);filter:blur(4px);transition:opacity .55s cubic-bezier(.2,.75,.3,1),transform .55s cubic-bezier(.2,.75,.3,1),filter .55s}
.aurora [data-reveal].is-in{opacity:1;transform:none;filter:blur(0)}
/* stagger: filhos diretos de [data-stagger] entram em sequência quando .is-in */
.aurora [data-stagger].is-in > *{animation:aur-rise .55s cubic-bezier(.2,.75,.3,1) backwards}
.aurora [data-stagger].is-in > *:nth-child(1){animation-delay:.04s}
.aurora [data-stagger].is-in > *:nth-child(2){animation-delay:.10s}
.aurora [data-stagger].is-in > *:nth-child(3){animation-delay:.16s}
.aurora [data-stagger].is-in > *:nth-child(4){animation-delay:.22s}
.aurora [data-stagger].is-in > *:nth-child(5){animation-delay:.28s}
.aurora [data-stagger].is-in > *:nth-child(6){animation-delay:.34s}
@keyframes aur-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
/* ambiente — usado por components.css (icon breathe / button pulse) */
@keyframes aur-breathe{0%,100%{transform:scale(1);opacity:.9}50%{transform:scale(1.12);opacity:1}}
@keyframes aur-pulse{0%{box-shadow:0 0 0 0 var(--glow)}100%{box-shadow:0 0 0 14px transparent}}
/* reduced motion: desliga tudo, mantém fade simples */
@media (prefers-reduced-motion:reduce){
  .aurora [data-reveal],.aurora [data-stagger].is-in > *{transition:opacity .25s !important;transform:none !important;filter:none !important;animation:none !important}
  .aurora [data-reveal]{opacity:1}
}
