*{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation}.safe-bottom-80{bottom:80px;bottom:calc(80px + env(safe-area-inset-bottom))}.pt-safe{padding-top:env(safe-area-inset-top)}.pb-safe{padding-bottom:env(safe-area-inset-bottom)}@media screen and (max-width:768px){input[type=text],input[type=number],input[type=email],input[type=password],input[type=search],select,textarea{font-size:16px}}@keyframes popIn{0%{opacity:0;transform:scale(.9) translateY(10px)}70%{transform:scale(1.02)}to{opacity:1;transform:scale(1)}}.animate-pop-in{animation:popIn .4s cubic-bezier(.34,1.56,.64,1) forwards}.ripple-container{position:relative;overflow:hidden;transform:translateZ(0)}.ripple-circle{position:absolute;border-radius:50%;background-color:#fff9;width:20px;height:20px;margin-top:-10px;margin-left:-10px;animation:ripple .6s linear;pointer-events:none}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(15);opacity:0}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:fadeSlideUp .4s ease-out forwards}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-4px)}20%,40%,60%,80%{transform:translate(4px)}}.animate-shake{animation:shake .5s cubic-bezier(.36,.07,.19,.97) both}
