@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.shimmer{animation:shimmer 2s linear infinite;background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.1) 50%,transparent);background-size:1000px 100%}@keyframes slideInFromBottom{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInFromTop{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInFromLeft{0%{transform:translateX(-100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes slideInFromRight{0%{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes spring{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes gentleBounce{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleIn{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.95);opacity:0}}@keyframes ripple{0%{transform:scale(0);opacity:.5}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;background:rgba(255,255,255,.5);border-radius:50%;transform:translate(-50%,-50%) scale(0);pointer-events:none}.ripple-effect:active:after{animation:ripple .6s ease-out}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes lift{0%{transform:translateY(0);box-shadow:0 1px 3px rgba(0,0,0,.1)}to{transform:translateY(-4px);box-shadow:0 8px 16px rgba(0,0,0,.15)}}@keyframes glow{0%,to{box-shadow:0 0 5px rgba(16,185,129,.5)}50%{box-shadow:0 0 20px rgba(16,185,129,.8)}}.animate-shimmer{animation:shimmer 2s linear infinite}.animate-fadeIn{animation:fadeIn .3s ease-out}.animate-fadeOut{animation:fadeOut .3s ease-out}.animate-scaleIn{animation:scaleIn .2s cubic-bezier(.16,1,.3,1)}.animate-scaleOut{animation:scaleOut .2s cubic-bezier(.16,1,.3,1)}.animate-slideInFromBottom{animation:slideInFromBottom .3s cubic-bezier(.16,1,.3,1)}.animate-slideInFromTop{animation:slideInFromTop .3s cubic-bezier(.16,1,.3,1)}.animate-slideInFromLeft{animation:slideInFromLeft .3s cubic-bezier(.16,1,.3,1)}.animate-slideInFromRight{animation:slideInFromRight .3s cubic-bezier(.16,1,.3,1)}.animate-bounce{animation:bounce .6s ease-in-out}.animate-spring{animation:spring .3s cubic-bezier(.34,1.56,.64,1)}.animate-gentleBounce{animation:gentleBounce .4s ease-in-out}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-glow{animation:glow 2s ease-in-out infinite}.hover-lift{transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s cubic-bezier(.16,1,.3,1)}.hover-lift:hover{transform:translateY(-4px);box-shadow:0 8px 16px rgba(0,0,0,.15)}.transition-smooth{transition:all .3s cubic-bezier(.4,0,.2,1)}.transition-spring{transition:all .3s cubic-bezier(.34,1.56,.64,1)}.transition-bounce{transition:all .4s cubic-bezier(.68,-.55,.265,1.55)}.focus-ring-enhanced:focus-visible{outline:2px solid rgb(16,185,129);outline-offset:2px;border-radius:.5rem}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}