.ripple{position:relative;overflow:hidden}.ripple::after{content:"";position:absolute;left:50%;top:50%;width:100%;aspect-ratio:1/1;background:rgba(0,0,0,.1);border-radius:50%;-webkit-transform:translate(-50%, -50%) scale(0);-ms-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);-webkit-animation:ripple 1s ease-out infinite;animation:ripple 1s ease-out infinite}@-webkit-keyframes ripple{0%{-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);opacity:1}100%{-webkit-transform:translate(-50%, -50%) scale(2);transform:translate(-50%, -50%) scale(2);opacity:0}}@keyframes ripple{0%{-webkit-transform:translate(-50%, -50%) scale(0);transform:translate(-50%, -50%) scale(0);opacity:1}100%{-webkit-transform:translate(-50%, -50%) scale(2);transform:translate(-50%, -50%) scale(2);opacity:0}}.shine{position:relative;overflow:hidden}.shine::before{content:"";position:absolute;top:0;left:-75%;width:50%;height:100%;-webkit-filter:blur(4px);filter:blur(4px);background:linear-gradient(120deg, transparent, rgba(255, 255, 255, 0.4), transparent);-webkit-animation:shine 1s infinite;animation:shine 1s infinite}@-webkit-keyframes shine{100%{left:125%}}@keyframes shine{100%{left:125%}}.pulse{-webkit-animation:pulse 1.2s infinite;animation:pulse 1.2s infinite}@-webkit-keyframes pulse{0%,100%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}}@keyframes pulse{0%,100%{-webkit-transform:scale(1);transform:scale(1)}50%{-webkit-transform:scale(1.08);transform:scale(1.08)}}.shake{-webkit-animation:shake .4s infinite;animation:shake .4s infinite}@-webkit-keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-4px);transform:translateX(-4px)}40%{-webkit-transform:translateX(4px);transform:translateX(4px)}60%{-webkit-transform:translateX(-4px);transform:translateX(-4px)}80%{-webkit-transform:translateX(4px);transform:translateX(4px)}}@keyframes shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}20%{-webkit-transform:translateX(-4px);transform:translateX(-4px)}40%{-webkit-transform:translateX(4px);transform:translateX(4px)}60%{-webkit-transform:translateX(-4px);transform:translateX(-4px)}80%{-webkit-transform:translateX(4px);transform:translateX(4px)}}