/* ============================================================================
   Toro Taxes money effects, 2026-04.
   Reversible layer: remove the .ttx-moneyfx wrappers to fall back to legacy.
   ============================================================================ */

.ttx-moneyfx {
    position: absolute;
    inset: 0;
    overflow: hidden;
    pointer-events: none;
    isolation: isolate;
}

.ttx-moneyfx__bill {
    position: absolute;
    top: 0;
    left: 0;
    display: block;
    will-change: transform, opacity;
}

.ttx-moneyfx__motion {
    display: block;
    width: 100%;
    height: auto;
}

.ttx-moneyfx__motion--wander {
    animation: ttx-moneyfx-sway var(--ttx-sway-duration, 12s) ease-in-out infinite;
    animation-delay: var(--ttx-sway-delay, 0s);
}

.ttx-moneyfx__bill--fall {
    width: calc(var(--ttx-size, 120) * 1px);
    opacity: 0;
    animation: ttx-moneyfx-fall var(--ttx-duration, 16s) linear infinite;
    animation-delay: var(--ttx-delay, 0s);
}

.ttx-moneyfx__bill--burst {
    width: calc(var(--ttx-size, 120) * 1px);
    opacity: 0;
    animation: ttx-moneyfx-burst var(--ttx-duration, 2.6s) cubic-bezier(0.2, 0.84, 0.24, 1) 1 both;
    animation-delay: var(--ttx-delay, 0s);
}

.ttx-moneyfx__bill--accent {
    width: calc(var(--ttx-size, 150) * 1px);
    opacity: var(--ttx-opacity, 0.26);
    animation: ttx-moneyfx-float var(--ttx-duration, 11s) ease-in-out infinite;
    animation-delay: var(--ttx-delay, 0s);
}

.ttx-moneyfx__asset {
    display: block;
    width: 100%;
    height: auto;
    opacity: var(--ttx-opacity, 0.28);
    filter: blur(var(--ttx-blur, 0px));
    transform-origin: 50% 40%;
    will-change: transform, filter;
}

.ttx-moneyfx__bill--fall .ttx-moneyfx__asset {
    animation: ttx-moneyfx-tumble var(--ttx-spin-duration, 7s) ease-in-out infinite alternate;
    animation-delay: var(--ttx-spin-delay, 0s);
}

.ttx-moneyfx__bill--burst .ttx-moneyfx__asset {
    animation: ttx-moneyfx-tumble var(--ttx-spin-duration, 2.2s) ease-in-out 1 both;
    animation-delay: var(--ttx-spin-delay, 0s);
}

.ttx-moneyfx__bill--accent .ttx-moneyfx__asset {
    animation: ttx-moneyfx-hover var(--ttx-spin-duration, 8s) ease-in-out infinite alternate;
    animation-delay: var(--ttx-spin-delay, 0s);
}

@keyframes ttx-moneyfx-fall {
    0% {
        opacity: 0;
        transform: translate3d(var(--ttx-x-start), var(--ttx-y-start), 0);
    }

    4% {
        opacity: var(--ttx-opacity, 0.28);
    }

    58% {
        opacity: var(--ttx-opacity, 0.28);
        transform: translate3d(var(--ttx-x-mid), var(--ttx-y-mid), 0);
    }

    88% {
        opacity: var(--ttx-opacity, 0.28);
        transform: translate3d(var(--ttx-x-end), var(--ttx-y-end), 0);
    }

    94% {
        opacity: var(--ttx-opacity, 0.28);
        transform: translate3d(var(--ttx-x-end), var(--ttx-y-end), 0);
    }

    100% {
        opacity: 0;
        transform: translate3d(var(--ttx-x-end), var(--ttx-y-end), 0);
    }
}

@keyframes ttx-moneyfx-burst {
    0% {
        opacity: 0;
        transform: translate3d(var(--ttx-x-start), var(--ttx-y-start), 0);
    }

    6% {
        opacity: var(--ttx-opacity, 0.28);
    }

    46% {
        opacity: var(--ttx-opacity, 0.28);
        transform: translate3d(var(--ttx-x-mid), var(--ttx-y-mid), 0);
    }

    78% {
        opacity: calc(var(--ttx-opacity, 0.28) * 0.92);
    }

    100% {
        opacity: 0;
        transform: translate3d(var(--ttx-x-end), var(--ttx-y-end), 0);
    }
}

@keyframes ttx-moneyfx-tumble {
    0% {
        transform: scaleX(var(--ttx-flip, 1)) rotate(var(--ttx-rot-start, -18deg));
    }

    50% {
        transform: scaleX(var(--ttx-flip, 1)) rotate(var(--ttx-rot-mid, 8deg));
    }

    100% {
        transform: scaleX(var(--ttx-flip, 1)) rotate(var(--ttx-rot-end, 26deg));
    }
}

@keyframes ttx-moneyfx-float {
    0%,
    100% {
        transform: translate3d(var(--ttx-anchor-x), var(--ttx-anchor-y), 0) rotate(var(--ttx-float-rot-start, -8deg));
    }

    50% {
        transform: translate3d(
            calc(var(--ttx-anchor-x) + var(--ttx-float-dx)),
            calc(var(--ttx-anchor-y) + var(--ttx-float-dy)),
            0
        ) rotate(var(--ttx-float-rot-end, 8deg));
    }
}

@keyframes ttx-moneyfx-hover {
    0% {
        transform: scaleX(var(--ttx-flip, 1)) rotate(var(--ttx-rot-start, -10deg));
    }

    100% {
        transform: scaleX(var(--ttx-flip, 1)) rotate(var(--ttx-rot-end, 10deg));
    }
}

@keyframes ttx-moneyfx-sway {
    0% {
        transform: translateX(0);
    }

    18% {
        transform: translateX(var(--ttx-sway-a, 24px));
    }

    41% {
        transform: translateX(var(--ttx-sway-b, -20px));
    }

    68% {
        transform: translateX(var(--ttx-sway-c, 16px));
    }

    86% {
        transform: translateX(var(--ttx-sway-d, -10px));
    }

    100% {
        transform: translateX(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .ttx-moneyfx {
        display: none !important;
    }
}
