@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes heartbeat{0%{transform:scale(1)}14%{transform:scale(1.1)}28%{transform:scale(1)}42%{transform:scale(1.1)}70%{transform:scale(1)}}@keyframes shimmer{0%{background-position:-468px 0}to{background-position:468px 0}}@keyframes shimmerSlide{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}@keyframes ripple{0%{transform:scale(0);opacity:.8}to{transform:scale(4);opacity:0}}@keyframes notification{0%{transform:scale(0) rotate(45deg);opacity:0}50%{transform:scale(1.1) rotate(45deg);opacity:1}to{transform:scale(1) rotate(45deg);opacity:1}}.community-post{animation:fadeInUp .5s ease-out}.community-post:nth-child(odd){animation-delay:.1s}.community-post:nth-child(2n){animation-delay:.2s}.channel-item{animation:slideInRight .3s ease-out;transition:all .2s cubic-bezier(.4,0,.2,1)}.channel-item:hover{transform:translateX(4px)}.js-channel-highlight{background:linear-gradient(135deg,#2563eb,#1e40af);box-shadow:0 4px 15px rgba(37,99,235,.25);animation:notification .6s ease-out}.like-button{position:relative;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.like-button:active{transform:scale(.95)}.like-button.liked{animation:heartbeat .6s ease-in-out}.like-button:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:rgba(239,68,68,.3);transition:width .6s,height .6s;transform:translate(-50%,-50%)}.like-button:active:before{width:40px;height:40px}.post-creation-box{transition:all .3s cubic-bezier(.4,0,.2,1)}.post-creation-box:focus-within{transform:translateY(-2px);box-shadow:0 10px 25px rgba(69,209,255,.15)}.xp-progress-bar{background:linear-gradient(90deg,rgba(69,209,255,0),rgba(69,209,255,.3) 50%,rgba(69,209,255,0));background-size:200% 100%;animation:shimmer 2s infinite}.avatar-glow{position:relative}.avatar-glow:after{content:"";position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:50%;background:conic-gradient(from 0deg,#45d1ff,#7cf29a,#ffd166,#a855f7,#45d1ff);z-index:-1;animation:spin 3s linear infinite;opacity:0;transition:opacity .3s ease}.avatar-glow:hover:after{opacity:.7}@keyframes spin{to{transform:rotate(1turn)}}.premium-button{position:relative;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.premium-button:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.1),transparent);transition:left .5s}.premium-button:hover:before{left:100%}.premium-button:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.3)}.nav-item{position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.nav-item:before{content:"";position:absolute;left:0;top:50%;width:3px;height:0;background:#45d1ff;border-radius:0 2px 2px 0;transition:height .3s ease;transform:translateY(-50%)}.nav-item:hover:before{height:70%}.scroll-fade-in{opacity:0;transform:translateY(30px);transition:all .6s cubic-bezier(.4,0,.2,1)}.scroll-fade-in.in-view{opacity:1;transform:translateY(0)}.skeleton{background:linear-gradient(90deg,#162029 25%,#1b2229 50%,#162029 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.typing-indicator{display:flex;align-items:center;padding:8px 12px;background:rgba(69,209,255,.1);border-radius:16px;width:-moz-fit-content;width:fit-content}.typing-indicator span{height:4px;width:4px;background:#45d1ff;border-radius:50%;display:inline-block;margin-right:4px;animation:typing 1.4s ease-in-out infinite both}.typing-indicator span:first-child{animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.tab-content{animation:fadeInUp .4s ease-out}.notification-badge{animation:bounceIn .5s ease-out}.live-indicator{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}