@keyframes floating-drift{0%,to{opacity:.08;transform:translateY(0)rotate(0)}25%{opacity:.15;transform:translateY(-12px)rotate(3deg)}50%{opacity:.12;transform:translateY(-6px)rotate(-2deg)}75%{opacity:.1;transform:translateY(-15px)rotate(1deg)}}@keyframes floating-pulse{0%,to{opacity:.06;transform:scale(1)}50%{opacity:.12;transform:scale(1.15)}}@keyframes typing-cursor{0%,to{opacity:1}50%{opacity:0}}@keyframes hero-fade-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.hero-fade-up{opacity:0;animation:.6s ease-out forwards hero-fade-up}@keyframes hero-image-in{0%{transform:scale(.95)}to{transform:scale(1)}}.hero-image-in{animation:.6s ease-out .4s forwards hero-image-in}.reveal{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out;transform:translateY(24px)}.reveal-visible{opacity:1;transform:none}@keyframes device-scroll{0%{transform:translateY(0)}to{transform:translateY(var(--device-scroll-end))}}.device-scroll{animation:device-scroll var(--device-scroll-duration,28s)ease-in-out var(--device-scroll-delay,2s)infinite alternate;will-change:transform}.device-showcase:hover .device-scroll{animation-play-state:paused}@media (prefers-reduced-motion:reduce){.device-scroll{animation:none}.landing-page [style*=animation]{animation:none!important}.hero-fade-up,.hero-image-in{opacity:1!important;animation:none!important}.reveal{opacity:1;transition:none;transform:none}}