/* Movimiento complementario (ver motion.js). Lo esencial del movimiento vive en site.css junto a cada componente. */
.js-motion [data-chat] .seq{transition:opacity .45s var(--ease)}
.js-motion [data-chat].is-fading .seq{opacity:0}
/* La onda de la nota de voz avanza barra por barra */
.js-motion .voice .wave i{transition:background-color .2s}
/* Tarjetas flotantes del inicio: respiran despacio */
.js-motion .float-card{animation:floaty 7s var(--ease-io) infinite alternate}
.js-motion .fc-2{animation-delay:-3.5s}
@keyframes floaty{from{transform:translateY(0)}to{transform:translateY(-8px)}}
/* Entrada escalonada de listas con data-reveal en el contenedor */
.js-motion [data-reveal-list]>*{opacity:0;transform:translateY(14px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.js-motion [data-reveal-list].is-in>*{opacity:1;transform:none}
.js-motion [data-reveal-list].is-in>*:nth-child(2){transition-delay:.06s}
.js-motion [data-reveal-list].is-in>*:nth-child(3){transition-delay:.12s}
.js-motion [data-reveal-list].is-in>*:nth-child(4){transition-delay:.18s}
.js-motion [data-reveal-list].is-in>*:nth-child(5){transition-delay:.24s}
.js-motion [data-reveal-list].is-in>*:nth-child(6){transition-delay:.3s}
.js-motion [data-reveal-list].is-in>*:nth-child(n+7){transition-delay:.36s}
@media (prefers-reduced-motion:reduce){.js-motion .float-card{animation:none}}
