@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(2deg)}75%{transform:rotate(-2deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes shimmer{0%,to{opacity:1}50%{opacity:.7}}@keyframes bounce-in{0%{transform:scale(0)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes rainbow-shift{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(360deg)}}.wiggle-title{display:inline-block;animation:float 3s ease-in-out infinite}.wiggle-occasionally{animation:wiggle .5s ease-in-out}.hoverable{transition:transform .3s ease,box-shadow .3s ease}.hoverable:hover{transform:translateY(-4px) scale(1.02);box-shadow:var(--shadow-lg)}.tappable{transition:transform .1s ease;cursor:pointer}.tappable:active{transform:scale(.95)}@keyframes letter-spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.2)}to{transform:rotate(360deg) scale(1)}}.letter-spin{display:inline-block;animation:letter-spin .6s ease-in-out}@keyframes celebrate{0%{transform:scale(1)}50%{transform:scale(1.3) rotate(5deg)}to{transform:scale(1) rotate(0)}}.celebrate{animation:celebrate .5s ease-in-out}@keyframes emoji-dance{0%,to{transform:rotate(0)}25%{transform:rotate(-10deg) scale(1.1)}75%{transform:rotate(10deg) scale(1.1)}}.emoji-dance{display:inline-block;animation:emoji-dance .5s ease-in-out}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.pulse{animation:pulse 2s ease-in-out infinite}@keyframes fade-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fade-in .4s ease-out}
