:root{--duration-instant: .1s;--duration-fast: .15s;--duration-normal: .2s;--duration-slow: .25s;--duration-slower: .3s;--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-spring: cubic-bezier(.175, .885, .32, 1.275)}.hover-scale{transition:transform var(--duration-fast) var(--ease-out)}.hover-scale:hover{transform:scale(1.05)}.hover-lift{transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.hover-lift:hover{transform:translateY(-2px);box-shadow:0 10px 25px #00000026}.hover-brighten{transition:filter var(--duration-instant) var(--ease-out)}.hover-brighten:hover{filter:brightness(1.1)}.hover-glow{transition:box-shadow var(--duration-fast) var(--ease-out)}.hover-glow:hover{box-shadow:0 0 0 3px #3b82f64d}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn var(--duration-normal) var(--ease-out)}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.animate-slide-in-right{animation:slideInRight var(--duration-slow) var(--ease-out)}@keyframes slideInBottom{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-in-bottom{animation:slideInBottom var(--duration-normal) var(--ease-out)}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.animate-scale-in{animation:scaleIn var(--duration-normal) var(--ease-bounce)}.button-press{transition:transform var(--duration-instant) var(--ease-out)}.button-press:active{transform:scale(.95)}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(4);opacity:0}}.ripple-effect{position:relative;overflow:hidden}.ripple-effect:after{content:"";position:absolute;top:50%;left:50%;width:20px;height:20px;border-radius:50%;background:#fff9;transform:translate(-50%,-50%) scale(0);pointer-events:none}.ripple-effect:active:after{animation:ripple .6s var(--ease-out)}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{height:1em;background:#e0e0e0;border-radius:4px;animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-circle{border-radius:50%;background:#e0e0e0;animation:skeleton-pulse 1.5s ease-in-out infinite}@keyframes bounceSuccess{0%,to{transform:scale(1)}25%{transform:scale(1.3) rotate(-5deg)}50%{transform:scale(1.1) rotate(5deg)}75%{transform:scale(1.2) rotate(-3deg)}}.success-bounce{animation:bounceSuccess var(--duration-slow) var(--ease-bounce)}.animate-bounce-success{animation:bounceSuccess .6s cubic-bezier(.68,-.55,.265,1.55)}@keyframes flyToCart{0%{transform:translate(0) scale(1);opacity:1}50%{transform:translate(var(--cart-x, 200px),var(--cart-y, -100px)) scale(.5);opacity:.8}to{transform:translate(var(--cart-x, 200px),var(--cart-y, -100px)) scale(0);opacity:0}}.fly-to-cart{animation:flyToCart .6s var(--ease-in-out) forwards}@keyframes toastSlideIn{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.toast-enter{animation:toastSlideIn var(--duration-slow) var(--ease-out)}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}.toast-shake{animation:shake .4s var(--ease-out)}@keyframes toastProgress{0%{width:100%}to{width:0%}}.toast-progress{animation:toastProgress var(--toast-duration, 3s) linear}.card-interactive{transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.card-interactive:hover{transform:translateY(-4px);box-shadow:0 10px 30px #0000001a,0 0 0 2px #3b82f633;border-color:#3b82f680}@keyframes badgePulse{0%,to{transform:scale(1);box-shadow:0 0 #ef4444b3}50%{transform:scale(1.05);box-shadow:0 0 0 8px #ef444400}}.badge-pulse{animation:badgePulse 2s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.transition-all{transition:all var(--duration-normal) var(--ease-out)}.transition-fast{transition:all var(--duration-fast) var(--ease-out)}.transition-slow{transition:all var(--duration-slow) var(--ease-out)}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.skeleton,.skeleton-text,.skeleton-circle{animation:none!important}}
