.foutfm-party-layer {
    position: fixed;
    inset: 0;
    z-index: 9998;
    pointer-events: none;
    overflow: hidden;
}

.foutfm-party-items {
    position: absolute;
    inset: 0;
}

.foutfm-party-item {
    position: absolute;
    top: -80px;
    left: var(--foutfm-x, 50%);
    font-size: var(--foutfm-size, 34px);
    opacity: .9;
    animation: foutfm-fall var(--foutfm-duration, 14s) linear infinite;
    animation-delay: var(--foutfm-delay, 0s);
    filter: drop-shadow(0 0 10px rgba(167,43,139,.45));
    will-change: transform;
}

.foutfm-party-layer[data-mode="disco"] .foutfm-party-item:nth-child(3n),
.foutfm-party-layer[data-mode="carnaval"] .foutfm-party-item:nth-child(4n) {
    animation-name: foutfm-float;
}

.foutfm-shout {
    position: fixed;
    right: 18px;
    bottom: 20px;
    max-width: min(420px, calc(100vw - 36px));
    padding: 13px 44px 13px 16px;
    border-radius: 18px;
    color: #fff;
    background: linear-gradient(135deg, rgba(87,21,72,.96), rgba(167,43,139,.94));
    border: 1px solid rgba(255,255,255,.20);
    box-shadow: 0 10px 28px rgba(0,0,0,.32), 0 0 24px rgba(167,43,139,.35);
    pointer-events: auto;
    animation: foutfm-shout-in .7s ease both;
    font-family: inherit;
}

.foutfm-shout-label {
    display: block;
    margin-bottom: 3px;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: .9px;
    text-transform: uppercase;
    opacity: .82;
}

.foutfm-shout-text {
    display: block;
    font-size: 15px;
    font-weight: 750;
    line-height: 1.25;
}

.foutfm-shout-close {
    position: absolute;
    top: 8px;
    right: 10px;
    width: 26px;
    height: 26px;
    border: 0;
    border-radius: 999px;
    background: rgba(255,255,255,.14);
    color: #fff;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    pointer-events: auto;
}

.foutfm-shout-close:hover {
    background: rgba(255,255,255,.24);
}

@keyframes foutfm-fall {
    0% { transform: translate3d(0, -100px, 0) rotate(0deg); opacity: 0; }
    8% { opacity: .95; }
    100% { transform: translate3d(var(--foutfm-drift, 30px), calc(100vh + 120px), 0) rotate(360deg); opacity: 0; }
}

@keyframes foutfm-float {
    0% { transform: translate3d(0, 110vh, 0) rotate(0deg); opacity: 0; }
    10% { opacity: .9; }
    100% { transform: translate3d(var(--foutfm-drift, -40px), -140px, 0) rotate(-360deg); opacity: 0; }
}

@keyframes foutfm-shout-in {
    from { transform: translateY(18px) scale(.96); opacity: 0; }
    to { transform: translateY(0) scale(1); opacity: 1; }
}

@media (max-width: 768px) {
    .foutfm-party-item {
        font-size: calc(var(--foutfm-size, 30px) * .76);
        opacity: .68;
    }

    .foutfm-shout {
        left: 10px;
        right: 10px;
        bottom: 12px;
        max-width: none;
        padding: 11px 42px 11px 14px;
    }

    .foutfm-shout-text {
        font-size: 13px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .foutfm-party-item {
        display: none;
    }

    .foutfm-shout {
        animation: none;
    }
}
