@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes elegantGlow{0%{box-shadow:0 0 0 0 rgba(0,0,0,.4)}50%{box-shadow:0 0 0 8px rgba(0,0,0,0)}to{box-shadow:0 0 0 0 rgba(0,0,0,0)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes iconBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@keyframes checkmarkAnimation{0%{transform:scale(0) rotate(-45deg);opacity:0}50%{transform:scale(1.1)}to{transform:scale(1) rotate(0);opacity:1}}.btn-primary-animated{position:relative;overflow:hidden;transition:all .35s cubic-bezier(.4,0,.2,1)}.btn-primary-animated:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);transition:left .6s cubic-bezier(.4,0,.2,1)}.btn-primary-animated:hover:before{left:100%}.btn-primary-animated:hover{transform:translateY(-3px);box-shadow:0 12px 24px rgba(0,0,0,.25)}.btn-primary-animated:hover:not(:disabled){animation:elegantGlow 2s ease-in-out}.btn-primary-animated:active{transform:translateY(-1px)}.btn-outline-animated{position:relative;transition:all .25s ease;border-width:2px}.btn-outline-animated:hover{transform:translateY(-2px);border-color:#3dff9a;color:#3dff9a;box-shadow:0 6px 18px rgba(61,255,154,.25);background-color:rgba(61,255,154,.12)}.dark .btn-outline-animated:hover{color:#3dff9a;border-color:#3dff9a;background-color:rgba(61,255,154,.14);box-shadow:0 6px 18px rgba(61,255,154,.35)}.btn-outline-animated:active{transform:translateY(-1px)}.btn-icon-animated{display:inline-flex;align-items:center;gap:.5rem}.btn-outline-animated:hover .btn-icon-animated svg,.btn-primary-animated:hover .btn-icon-animated svg{animation:iconBounce .5s cubic-bezier(.4,0,.2,1)}.btn-success-state{animation:scaleIn .35s cubic-bezier(.4,0,.2,1)}.btn-success-state svg{animation:checkmarkAnimation .5s cubic-bezier(.4,0,.2,1)}.btn-loading-state{animation:slideInUp .3s cubic-bezier(.4,0,.2,1)}.btn-disabled{opacity:.5;cursor:not-allowed}.quantity-btn{transition:all .25s cubic-bezier(.4,0,.2,1)}.quantity-btn:hover:not(:disabled){background-color:rgba(0,0,0,.08);transform:scale(1.08)}.quantity-btn:active:not(:disabled){transform:scale(.96)}.mobile-btn-animated{animation:slideInUp .4s cubic-bezier(.4,0,.2,1)}@keyframes ripple{0%{transform:scale(0);opacity:.8}to{transform:scale(4);opacity:0}}.btn-ripple{position:relative;overflow:hidden}.btn-ripple:after{content:"";position:absolute;top:50%;left:50%;width:4px;height:4px;background:rgba(255,255,255,.6);opacity:0;border-radius:100%;transform:translate(-50%,-50%) scale(1);pointer-events:none}.btn-ripple:active:after{animation:ripple .6s cubic-bezier(.4,0,.2,1)}