@keyframes slideInFromBottom{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-10px)}to{opacity:1;transform:translate(0)}}@keyframes slideInFromRight{0%{opacity:0;transform:translate(10px)}to{opacity:1;transform:translate(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes typingDot{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-10px)}}.message-enter{animation:.3s ease-out slideInFromBottom}.message-left-enter{animation:.3s ease-out slideInFromLeft}.message-right-enter{animation:.3s ease-out slideInFromRight}.modal-enter{animation:.2s ease-out scaleIn}.modal-backdrop-enter{animation:.2s ease-out fadeIn}.dropdown-enter{animation:.15s ease-out slideDown}@keyframes pageEnter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:.25s cubic-bezier(.4,0,.2,1) both pageEnter}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.tab-content-enter{animation:.2s cubic-bezier(.4,0,.2,1) both tabFadeIn}@keyframes listItemEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.list-item-enter{animation:.25s cubic-bezier(.4,0,.2,1) both listItemEnter}.smooth-hover{transition:all .2s cubic-bezier(.4,0,.2,1)}.button-press:active{transform:scale(.98)}.focus-glow:focus{outline:none;box-shadow:0 0 0 3px #3b82f680}@keyframes ripple{0%{opacity:1;transform:scale(0)}to{opacity:0;transform:scale(4)}}.ripple{pointer-events:none;background-color:#fff9;border-radius:50%;width:20px;height:20px;animation:.6s ease-out ripple;position:absolute}
