@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{opacity:0;animation:.3s ease-out forwards fadeIn}.animated-gradient{background:linear-gradient(90deg,#667eea 0%,#764ba2 25%,#f093fb 50%,#4facfe 75%,#667eea 100%) 0 0/200%;-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;animation:3s infinite gradient-shift;display:inline-block}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-gradient{background-size:200%;animation:4s infinite premium-gradient}@keyframes premium-gradient{0%{background-position:0%}25%{background-position:50%}50%{background-position:100%}75%{background-position:50%}to{background-position:0%}}.animate-slide-in-right{animation:.2s ease-out slide-in-right}@keyframes slide-in-right{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-slide-up{animation:.3s ease-out slide-up}@keyframes slide-up{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.animate-scale-in{animation:.2s ease-out scale-in}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes badge-pop{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes slide-up-subtle{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-typing-dot{animation:1.4s ease-in-out infinite typing-dot}@keyframes typing-dot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-8px)}}.animate-message-in-left{animation:.3s ease-out message-in-left}@keyframes message-in-left{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-message-in-right{animation:.3s ease-out message-in-right}@keyframes message-in-right{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.animate-like-burst-pop{opacity:0;will-change:transform, opacity;animation:.8s ease-out forwards like-burst-pop}@keyframes like-burst-pop{0%{opacity:0;transform:scale(.5)}25%{opacity:1;transform:scale(1.1)}to{opacity:0;transform:scale(1.5)}}.animate-like-ring{opacity:0;will-change:transform, opacity;animation:.65s ease-out forwards like-ring}@keyframes like-ring{0%{opacity:0;transform:scale(.5)}10%{opacity:.8}50%{opacity:.3}to{opacity:0;transform:scale(2)}}.animate-like-particle{opacity:0;will-change:transform, opacity;animation:.65s cubic-bezier(.22,1,.36,1) forwards like-particle}@keyframes like-particle{0%{opacity:0;transform:translate(0)scale(0)}12%{opacity:1}20%{transform:translate(calc(var(--like-particle-tx) * .2), calc(var(--like-particle-ty) * .2)) scale(1.4)}50%{transform:translate(calc(var(--like-particle-tx) * .5), calc(var(--like-particle-ty) * .5)) scale(1);opacity:.9}to{transform:translate(var(--like-particle-tx), var(--like-particle-ty)) scale(0);opacity:0}}@keyframes feed-logo-bounce{0%{transform:scale(1)translateY(0)}18%{transform:scale(1.14)translateY(-5px)}36%{transform:scale(.92)translateY(0)}54%{transform:scale(1.08)translateY(-3px)}72%{transform:scale(.97)translateY(0)}to{transform:scale(1)translateY(0)}}.animate-feed-logo-bounce{transform-origin:50%;will-change:transform;animation:.7s cubic-bezier(.34,1.45,.64,1) both feed-logo-bounce}@keyframes whistlr-loader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.whistlr-loader-spin{transform-origin:50%;will-change:transform;animation:1.2s linear infinite whistlr-loader-spin}.mood-intro-pop{animation:.62s cubic-bezier(.34,1.45,.64,1) both mood-intro-pop}@keyframes mood-intro-pop{0%{opacity:0;transform:translateY(12px)scale(.5)}60%{opacity:1}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes mood-intro-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.mood-intro-bob{animation:2.4s ease-in-out infinite alternate both mood-intro-bob}@keyframes mood-intro-bob{0%{transform:translateY(calc(-1 * var(--mood-drift,3.5px)))}to{transform:translateY(var(--mood-drift,3.5px))}}@media (prefers-reduced-motion:reduce){.mood-intro-pop,.mood-intro-bob{animation:none}}.va-badge-base{animation:2.8s ease-in-out infinite va-badge-base}.va-badge-alt{animation:2.8s ease-in-out infinite va-badge-alt}@keyframes va-badge-base{0%,to{opacity:1}50%{opacity:0}}@keyframes va-badge-alt{0%,to{opacity:0}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.va-badge-base,.va-badge-alt{animation:none}.va-badge-alt{opacity:0}}
