@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-shimmer{animation:2s infinite shimmer}@keyframes progress-bar{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-progress-bar{animation:1.5s ease-in-out infinite progress-bar}@keyframes toast-progress{0%{width:100%}to{width:0%}}.animate-toast-progress{animation:linear forwards toast-progress}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-in.fade-in{animation:.5s ease-out fade-in}@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-in.slide-in-from-bottom{animation:.5s ease-out slide-in-from-bottom}@keyframes slide-in-from-right-full{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.animate-in.slide-in-from-right-full{animation:.3s ease-out slide-in-from-right-full}@keyframes zoom-in-95{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.animate-in.zoom-in-95{animation:.5s ease-out zoom-in-95}@keyframes pulse-enhanced{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}.animate-pulse-enhanced{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-enhanced}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(0,0,.2,1);transform:translateY(0)}50%{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}}.animate-bounce{animation:1s infinite bounce}@keyframes gradient-shift{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}.animate-gradient{background-size:200% 200%;animation:3s infinite gradient-shift}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-10px)}20%,40%,60%,80%{transform:translate(10px)}}.animate-shake{animation:.5s ease-in-out shake}@keyframes scale-success{0%{opacity:0;transform:scale(0)}50%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.animate-scale-success{animation:.5s ease-out scale-success}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-skeleton-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite skeleton-pulse}.card-hover-lift{transition:transform .2s ease-in-out,box-shadow .2s ease-in-out}.card-hover-lift:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px #0000004d,0 10px 10px -5px #0003}.transition-all-smooth{transition:all .3s cubic-bezier(.4,0,.2,1)}[data-stagger]{animation-delay:calc(var(--stagger-index,0)*.1s)}@keyframes loading-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-spinner{border:3px solid #ffffff1a;border-top-color:#0ff;border-radius:50%;animation:.8s linear infinite loading-spinner}@keyframes draw-checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0}}.animate-checkmark{stroke-dasharray:100;animation:.5s ease-out forwards draw-checkmark}.backdrop-blur-custom{-webkit-backdrop-filter:blur(8px)}.smooth-scroll{scroll-behavior:smooth;overflow-y:auto}.hide-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.hide-scrollbar::-webkit-scrollbar{display:none}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#1e293b80;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:#64748b80;border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#94a3b8b3}@keyframes fade-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.animate-fade-up{opacity:0;animation:.8s cubic-bezier(.16,1,.3,1) forwards fade-up}@keyframes fade-in-subtle{0%{opacity:0}to{opacity:1}}.animate-fade-in{opacity:0;animation:.6s ease-out forwards fade-in-subtle}@keyframes slide-in-left{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-slide-in-left{opacity:0;animation:.6s cubic-bezier(.16,1,.3,1) forwards slide-in-left}@keyframes line-reveal{0%{transform-origin:0;transform:scaleX(0)}to{transform-origin:0;transform:scaleX(1)}}.animate-line-reveal{animation:.8s cubic-bezier(.16,1,.3,1) forwards line-reveal}.animate-fade-up[style*=animation-delay]{animation-fill-mode:both}@media (prefers-reduced-motion:reduce){.animate-fade-up,.animate-fade-in,.animate-slide-in-left,.animate-line-reveal,.animate-hero-fade-in,.animate-section-fade-in,.animate-scroll-hint{opacity:1;animation:none;transform:none}}@keyframes hero-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-hero-fade-in{opacity:0;animation:1.2s cubic-bezier(.16,1,.3,1) both hero-fade-in}@keyframes section-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.animate-section-fade-in{opacity:0;animation:.9s cubic-bezier(.16,1,.3,1) both section-fade-in}@keyframes scroll-hint{0%,to{opacity:.4;transform:translate(-50%)translateY(0)}50%{opacity:.7;transform:translate(-50%)translateY(4px)}}.animate-scroll-hint{animation:3s ease-in-out infinite scroll-hint}@keyframes point-breathe{0%,to{opacity:.5}50%{opacity:.7}}.animate-point-breathe{animation:4s ease-in-out infinite point-breathe}@keyframes topology-drift{0%{transform:translateY(0)}to{transform:translateY(-10px)}}.animate-topology-drift{animation:20s ease-in-out infinite alternate topology-drift}@keyframes panel-reveal{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-panel-reveal{opacity:0;animation:.8s cubic-bezier(.16,1,.3,1) both panel-reveal}.animate-hero-fade-in[style*=animation-delay],.animate-section-fade-in[style*=animation-delay],.animate-panel-reveal[style*=animation-delay]{animation-fill-mode:both}@keyframes vitruvian-glow{0%,to{filter:drop-shadow(0 0 30px #64b4c81a);opacity:inherit}50%{filter:drop-shadow(0 0 50px #64b4c82e);opacity:inherit}}.animate-vitruvian-glow{animation:8s ease-in-out infinite vitruvian-glow}@media (prefers-reduced-motion:reduce){.animate-vitruvian-glow{filter:drop-shadow(0 0 40px #64b4c81f);animation:none}}
