@media (prefers-reduced-motion: no-preference) {
    .desktop-hero-copy {
        animation: desktop-copy-enter 520ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .desktop-download {
        animation: desktop-download-enter 600ms 90ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .app-visual {
        animation: app-card-float 560ms 180ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .qr-canvas-wrap::after {
        animation: qr-scan 4.8s 1.2s ease-in-out infinite;
    }

    .mobile-app-logo {
        animation: mobile-brand-enter 440ms 70ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .mobile-app-copy,
    .mobile-trust-list {
        animation: mobile-copy-enter 440ms 150ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .mobile-download-sheet {
        animation: mobile-sheet-enter 500ms 180ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .primary-download-cta {
        animation: mobile-cta-enter 460ms 260ms cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    @keyframes desktop-copy-enter {
        from { opacity: 0; transform: translateY(12px); }
        to { opacity: 1; transform: translateY(0); }
    }

    @keyframes desktop-download-enter {
        from { transform: translateX(18px); }
        to { transform: translateX(0); }
    }

    @keyframes app-card-float {
        from { opacity: 0; transform: translateY(12px) rotate(7deg); }
        to { opacity: 1; transform: translateY(0) rotate(4deg); }
    }

    @keyframes mobile-brand-enter {
        from { opacity: 0; transform: translateY(12px) scale(0.9); }
        to { opacity: 1; transform: translateY(0) scale(1); }
    }

    @keyframes mobile-copy-enter {
        from { opacity: 0; transform: translateY(8px); }
        to { opacity: 1; transform: translateY(0); }
    }

    @keyframes mobile-sheet-enter {
        from { transform: translateY(18px); }
        to { transform: translateY(0); }
    }

    @keyframes mobile-cta-enter {
        from { transform: translateY(10px); }
        to { transform: translateY(0); }
    }

    @keyframes qr-scan {
        0%, 12% { transform: translateY(0); opacity: 0; }
        22% { opacity: 0.64; }
        68% { opacity: 0.64; }
        82%, 100% { transform: translateY(208px); opacity: 0; }
    }

    @keyframes button-sheen {
        from { transform: translateX(-100%); }
        to { transform: translateX(100%); }
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }

    .mobile-app-intro,
    .mobile-app-logo,
    .mobile-download-sheet,
    .primary-download-cta {
        animation: none !important;
    }
}
