/* Animaciones livianas: solo opacity/transform, duraciones cortas, ease-out */
:root{--ease:cubic-bezier(.22,.8,.3,1)}
.home-campaign{animation:m-fade .5s var(--ease) both}
@keyframes m-fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* Aparecer al hacer scroll */
.rv-pre{opacity:0;transform:translateY(16px)}
.rv-in{opacity:1;transform:none;transition:opacity .45s var(--ease),transform .45s var(--ease);transition-delay:calc(var(--i,0)*55ms)}
/* Respuesta al toque */
button:not(:disabled):active,.primary:active,.campaign-cta:active,.stepper button:active{transform:scale(.97)}
button,.primary,.campaign-cta{transition:transform .12s var(--ease),background-color .15s,box-shadow .15s,opacity .15s}
.card .fav:active,[data-fav]:active{transform:scale(.85)}
/* Ventanas */
dialog[open]{animation:m-pop .24s var(--ease)}
dialog[open]::backdrop{animation:m-backdrop .24s ease-out}
@keyframes m-pop{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
@keyframes m-backdrop{from{opacity:0}to{opacity:1}}
/* Contador del carrito y favoritos */
.bump{animation:m-bump .35s var(--ease)}
@keyframes m-bump{0%{transform:scale(1)}40%{transform:scale(1.5)}100%{transform:scale(1)}}
#cart-count,#fav-count{display:inline-block}
/* Fila del carrito al aparecer */
.cart-row{animation:m-fade .3s var(--ease) both}
.toast{transition:opacity .2s,transform .25s var(--ease)}
@media(prefers-reduced-motion:reduce){
 .home-campaign,.cart-row,dialog[open],dialog[open]::backdrop,.bump{animation:none!important}
 .rv-pre{opacity:1;transform:none}.rv-in{transition:none}
 button:active,.primary:active{transform:none!important}
}
