        /* Hide ALL children of <e-page-transition> except our injected Lottie player.
         * This catches the .e-page-transition--preloader SVG that Elementor injects at
         * runtime, regardless of class naming changes between Elementor versions. */
        e-page-transition > *:not(.ngs-loader-lottie):not([data-ngs-keep]) {
            display: none !important;
        }
        /* Fully opaque navy background (no underlying page bleed-through). */
        e-page-transition[preloader-type] {
            background: #0E1A33 !important; /* brand deep navy, fully opaque */
        }
        /* Belt-and-suspenders: ensure the [disabled] hide rule is respected even if
         * any other plugin/theme tries to force display on the wrapper. */
        e-page-transition[disabled] {
            display: none !important;
        }
        /* Suppress the entrance "fade-out" replay on the NEW page after navigation.
         * Elementor's lifecycle is exit (loader fades IN over outgoing page) →
         * navigation → entrance (loader fades OUT to reveal incoming page). The
         * exit is what the user wants — feedback that their click registered.
         * The entrance is redundant: by the time it plays, the new page is ready
         * and the loader appearing one more time reads as a glitch. We make the
         * --entering state instantly invisible so the new page renders cleanly. */
        e-page-transition.e-page-transition--entering {
            opacity: 0 !important;
            visibility: hidden !important;
            animation-duration: 0s !important;
            animation-delay: 0s !important;
        }
        .ngs-loader-lottie {
            width: 280px;
            height: 280px;
            display: block;
            /* Radial-gradient mask fades the player's edges so scattering dots
             * dissolve into the navy background instead of clipping at a hard
             * rectangular boundary. */
            -webkit-mask-image: radial-gradient(circle at center, black 10%, transparent 75%);
                    mask-image: radial-gradient(circle at center, black 10%, transparent 75%);
        }
        @media (max-width: 480px) {
            .ngs-loader-lottie {
                width: 200px;
                height: 200px;
            }
        }
        @media (prefers-reduced-motion: reduce) {
            /* Respect motion preference: skip the dot animation, show a static gold dot pattern */
            .ngs-loader-lottie { display: none !important; }
            e-page-transition[preloader-type]::before {
                content: "";
                display: block;
                width: 24px;
                height: 24px;
                border-radius: 50%;
                background: #C9A449;
                opacity: 0.85;
                animation: ngs-pulse 1.4s ease-in-out infinite;
            }
            @keyframes ngs-pulse {
                0%, 100% { transform: scale(0.85); opacity: 0.6; }
                50%      { transform: scale(1.15); opacity: 1; }
            }
        }
    