@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .2s ease-out forwards}@keyframes springIn{0%{opacity:0;transform:scale(.8) translateY(20px)}50%{opacity:1;transform:scale(1.05) translateY(-2px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideInFromBottom{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideInFromTop{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes pulseGlow{0%,to{opacity:1;box-shadow:0 0 20px currentColor}50%{opacity:.8;box-shadow:0 0 40px currentColor}}@keyframes ripple{0%{transform:scale(0);opacity:.8}to{transform:scale(4);opacity:0}}@keyframes bounce{0%,20%,53%,80%,to{transform:translateZ(0)}40%,43%{transform:translate3d(0,-8px,0)}70%{transform:translate3d(0,-4px,0)}90%{transform:translate3d(0,-2px,0)}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-4px)}20%,40%,60%,80%{transform:translateX(4px)}}@keyframes morphShape{0%{border-radius:50%}50%{border-radius:20%}to{border-radius:50%}}*{-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important;user-select:none!important;outline:none!important}[contenteditable=true],input,textarea{-webkit-user-select:text!important;-moz-user-select:text!important;-ms-user-select:text!important;user-select:text!important}:active,:focus{outline:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent!important}.animate-springIn{animation:springIn .6s cubic-bezier(.68,-.55,.265,1.55) forwards}.animate-slideInFromBottom{animation:slideInFromBottom .4s cubic-bezier(.25,.46,.45,.94) forwards}.animate-slideInFromTop{animation:slideInFromTop .3s cubic-bezier(.25,.46,.45,.94) forwards}.animate-pulseGlow{animation:pulseGlow 2s ease-in-out infinite}.animate-ripple{animation:ripple .6s ease-out}.animate-bounce{animation:bounce 1s ease-in-out}.animate-shake{animation:shake .5s ease-in-out}.animate-morphShape{animation:morphShape 3s ease-in-out infinite}.touch-active{transform:scale(.95);transition:transform .1s ease-out}.touch-feedback{position:relative;overflow:hidden}.touch-feedback:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(255,255,255,.3);transform:translate(-50%,-50%);transition:width .3s,height .3s}.touch-feedback:active:before{width:200px;height:200px}.ease-bounce,.ease-spring{transition-timing-function:cubic-bezier(.68,-.55,.265,1.55)}.ease-fluid{transition-timing-function:cubic-bezier(.3,0,0,1)}.safe-area-inset-top{padding-top:env(safe-area-inset-top)}.safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.safe-area-inset-left{padding-left:env(safe-area-inset-left)}.safe-area-inset-right{padding-right:env(safe-area-inset-right)}.backdrop-blur-native,.glass{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%)}.glass{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2)}.glass-dark{background:rgba(17,17,17,.8);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.1)}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.animate-gradient{background-size:200% 200%;animation:gradientShift 3s ease infinite}.shape-organic-1{border-radius:60% 40% 30% 70%/60% 30% 70% 40%}.shape-organic-2{border-radius:40% 60% 70% 30%/40% 70% 30% 60%}.shape-organic-3{border-radius:30% 70% 40% 60%/70% 40% 60% 30%}@keyframes fabPulse{0%{transform:scale(1);box-shadow:0 8px 25px rgba(118,179,157,.4)}50%{transform:scale(1.05);box-shadow:0 12px 35px rgba(118,179,157,.6)}to{transform:scale(1);box-shadow:0 8px 25px rgba(118,179,157,.4)}}.fab-pulse{animation:fabPulse 2s ease-in-out infinite}.hover-lift{transition:transform .2s ease-out,box-shadow .2s ease-out}.hover-lift:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,.15)}@keyframes skeleton{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200px 100%}.skeleton,.skeleton-dark{animation:skeleton 1.5s linear infinite}.skeleton-dark{background:linear-gradient(90deg,#2a2a2a 25%,#3a3a3a 50%,#2a2a2a 75%);background-size:200px 100%}