@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes pulse-gentle{0%,to{opacity:1}50%{opacity:.7}}@keyframes bounce-small{0%,20%,53%,80%,to{transform:translateY(0)}40%,43%{transform:translateY(-4px)}70%{transform:translateY(-2px)}90%{transform:translateY(-1px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes progress-ring{0%{stroke-dashoffset:251.2}to{stroke-dashoffset:0}}.animate-shimmer{animation:shimmer 2s ease-in-out infinite}.animate-gradient{animation:gradient 3s ease infinite}.animate-pulse-gentle{animation:pulse-gentle 2s ease-in-out infinite}.animate-bounce-small{animation:bounce-small 1s ease infinite}.animate-fade-in{animation:fadeIn .5s ease-out}.bg-size-200{background-size:200% 200%}.phase-indicator{transition:all .3s ease}.phase-indicator.active{transform:scale(1.2);box-shadow:0 0 15px currentColor}.phase-indicator.completed{transform:scale(1.1)}.spinner-slow{animation:spin 3s linear infinite}.spinner-fast{animation:spin .5s linear infinite}.progress-ai{transition:width .5s ease-out}.progress-files{transition:width .2s ease-in-out}.code-ready-indicator{animation:bounce-small 1s ease infinite;background:linear-gradient(45deg,#10b981,#059669)}.preview-preparing-indicator{animation:pulse-gentle 1.5s ease infinite;background:linear-gradient(45deg,#8b5cf6,#7c3aed)}.loading-container{animation:fadeIn .3s ease-out}.loading-spinner{position:relative;animation:spin 2s linear infinite}.loading-spinner:before{content:"";position:absolute;inset:-4px;border-radius:50%;background:linear-gradient(45deg,rgba(59,130,246,.2),rgba(147,51,234,.2));animation:spin 3s linear infinite reverse;z-index:-1}.progress-phases{display:flex;justify-content:space-between;position:relative}.progress-phases:before{content:"";position:absolute;top:50%;left:0;right:0;height:1px;background:rgba(148,163,184,.3);z-index:0}.progress-phase{position:relative;z-index:1;background:#1e293b;padding:2px 4px;border-radius:4px;transition:all .3s ease}.progress-phase.completed{color:#10b981;background:rgba(16,185,129,.1)}.progress-phase.active{color:#3b82f6;background:rgba(59,130,246,.1);animation:pulse-gentle 1.5s ease infinite}.contextual-info{animation:fadeIn .4s ease-out;transition:all .3s ease}.error-shake{animation:shake .5s ease-in-out}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-4px)}20%,40%,60%,80%{transform:translateX(4px)}}.success-celebration{animation:celebration .6s ease-out}@keyframes celebration{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@media (max-width:768px){.animate-shimmer,.loading-spinner{animation-duration:1.5s}.progress-ai{transition-duration:.3s}}