.ltx-upgrade-backdrop { animation: ltx-upgrade-backdrop-in 180ms ease-out; } .ltx-upgrade-card { animation: ltx-upgrade-card-in 260ms cubic-bezier(0.16, 1, 0.3, 1); } .ltx-upgrade-reveal { animation: ltx-upgrade-reveal 260ms cubic-bezier(0.16, 1, 0.3, 1); } .ltx-upgrade-indeterminate { position: relative; overflow: hidden; } .ltx-upgrade-indeterminate::after { content: ''; position: absolute; inset: 0; width: 40%; background: linear-gradient(90deg, transparent, rgba(191, 219, 254, 0.95), transparent); animation: ltx-upgrade-indeterminate 1.15s ease-in-out infinite; } @keyframes ltx-upgrade-backdrop-in { from { opacity: 0; } to { opacity: 1; } } @keyframes ltx-upgrade-card-in { from { opacity: 0; transform: translateY(16px) scale(0.98); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes ltx-upgrade-reveal { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } @keyframes ltx-upgrade-indeterminate { from { transform: translateX(-120%); } to { transform: translateX(320%); } }