@keyframes profileSlideIn{0%{opacity:0;transform:translateY(20px) scale(.95)}15%{opacity:1;transform:translateY(0) scale(1)}35%{opacity:1;transform:translateY(0) scale(1)}50%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:0;transform:translateY(-20px) scale(.95)}}@keyframes equityShrink{0%{width:100%}33%{width:75%}66%{width:55%}to{width:40%}}@keyframes slideInLine{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes costPulse{0%,to{color:#ff462e}50%{color:#d4342c}}@keyframes barCrawl{0%{width:8%}to{width:22%}}@keyframes totalSlideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes messageSend{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes typingAppear{0%,15%{opacity:0}20%,60%{opacity:1}65%,to{opacity:0}}@keyframes typingDot{0%,20%{opacity:.3;transform:translateY(0)}50%{opacity:1;transform:translateY(-3px)}80%,to{opacity:.3;transform:translateY(0)}}@keyframes statusDegrade{0%,20%{background:#4ac382}21%,50%{background:#f5a623}51%,to{background:#ccc}}@keyframes statusTextCycle1{0%,20%{opacity:1}21%,to{opacity:0}}@keyframes statusTextCycle2{0%,20%{opacity:0}21%,50%{opacity:1}51%,to{opacity:0}}@keyframes statusTextCycle3{0%,50%{opacity:0}51%,to{opacity:1}}@keyframes progressStuck{0%{width:35%}40%{width:42%}60%{width:42%}80%{width:38%}to{width:35%}}@keyframes blockAppear{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes ceilingPulse{0%,to{opacity:.4}50%{opacity:1}}@keyframes blockBounce{0%{opacity:0;transform:translateY(30px)}30%{opacity:1;transform:translateY(-6px)}45%{transform:translateY(2px)}55%{transform:translateY(-2px)}65%{transform:translateY(0)}to{opacity:1;transform:translateY(0)}}@keyframes xFlash{0%,to{opacity:1}50%{opacity:.4}}