/* FreshMart — Animations */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}
@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideDown{from{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}
@keyframes scaleIn{from{opacity:0;transform:scale(0.95)}to{opacity:1;transform:scale(1)}}
@keyframes pulse-glow{0%,100%{opacity:0.5;transform:scale(1)}50%{opacity:0.8;transform:scale(1.05)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes countUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-4px)}20%,40%,60%,80%{transform:translateX(4px)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

/* Stagger reveal */
.fm-stagger>*{opacity:0;animation:slideUp 0.5s var(--fm-ease) forwards}
.fm-stagger>*:nth-child(1){animation-delay:0.05s}
.fm-stagger>*:nth-child(2){animation-delay:0.1s}
.fm-stagger>*:nth-child(3){animation-delay:0.15s}
.fm-stagger>*:nth-child(4){animation-delay:0.2s}
.fm-stagger>*:nth-child(5){animation-delay:0.25s}
.fm-stagger>*:nth-child(6){animation-delay:0.3s}
.fm-stagger>*:nth-child(7){animation-delay:0.35s}
.fm-stagger>*:nth-child(8){animation-delay:0.4s}

/* Hover lift */
.fm-hover-lift{transition:transform var(--fm-duration) var(--fm-ease),box-shadow var(--fm-duration) var(--fm-ease)}
.fm-hover-lift:hover{transform:translateY(-3px);box-shadow:var(--fm-shadow-lg)}

/* Skeleton loading */
.fm-skeleton{background:linear-gradient(90deg,var(--fm-bg-input) 25%,var(--fm-bg-input-focus) 50%,var(--fm-bg-input) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--fm-radius-sm);height:1rem}
.fm-skeleton-circle{border-radius:50%;width:48px;height:48px}
.fm-skeleton-lg{height:2rem}

/* Spinner */
.fm-spinner{width:20px;height:20px;border:2px solid var(--fm-border);border-top-color:var(--fm-accent);border-radius:50%;animation:spin 0.6s linear infinite}
.fm-spinner-lg{width:36px;height:36px;border-width:3px}

/* Page transition */
.fm-page-enter{animation:fadeIn 0.3s var(--fm-ease),slideUp 0.3s var(--fm-ease)}

/* Counter animation helper class */
.fm-counter{display:inline-block;animation:countUp 0.6s var(--fm-ease) forwards}
