@keyframes loaderPulse{0%,100%{opacity:.4;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}
@keyframes loaderLine{0%{transform:scaleX(.2)}50%{transform:scaleX(1)}100%{transform:scaleX(.2)}}
@keyframes fadeUp{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes shine{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.25)}100%{transform:scale(1)}}

.reveal{opacity:0;transform:translateY(28px);transition:opacity .8s var(--t),transform .8s var(--t)}
.reveal.in{opacity:1;transform:translateY(0)}

.float{animation:float 6s ease-in-out infinite}
.pop{animation:pop .35s ease}

.skeleton{background:linear-gradient(90deg,#eee,#f7f5ee,#eee);background-size:200% 100%;animation:shine 1.5s infinite}

a,button,.product-card,.cat-card{transition-property:background-color,color,border-color,transform,box-shadow,opacity}
