/* Zajedničko pulsiranje SignalR statusa u tabelama.
   Animacija koristi trenutnu boju statusa, pa svaka tema zadržava svoju paletu. */
html body :is(.content, .bm-hoteli-info-modal)
    .bm-connection-status.bm-status-pill--online {
    --bm-online-neon-glow: currentColor;
    animation: bm-online-neon-text 2.4s ease-in-out infinite !important;
}

/* HoteliTable status sadrži tekst u unutrašnjem span-u. Animacija mora biti
   postavljena i na taj element, jer se text-shadow ne nasljeđuje sa roditelja. */
html body :is(.content, .bm-hoteli-info-modal)
    .bm-connection-status.bm-status-pill--online .bm-connection-status__text {
    --bm-online-neon-glow: currentColor;
    animation: bm-online-neon-text 2.4s ease-in-out infinite !important;
}

html body :is(.content, .bm-hoteli-info-modal)
    .bm-connection-status.bm-status-pill--online::before {
    filter: drop-shadow(0 0 1px var(--bm-online-neon-glow));
    animation: bm-online-neon-icon 2.4s ease-in-out infinite !important;
}

@keyframes bm-online-neon-text {
    0%, 100% {
        text-shadow: 0 0 1px transparent;
    }

    50% {
        text-shadow: 0 0 3px var(--bm-online-neon-glow),
            0 0 8px var(--bm-online-neon-glow);
    }
}

@keyframes bm-online-neon-icon {
    0%, 100% {
        filter: drop-shadow(0 0 1px var(--bm-online-neon-glow));
    }

    50% {
        filter: drop-shadow(0 0 3px var(--bm-online-neon-glow))
            drop-shadow(0 0 7px var(--bm-online-neon-glow));
    }
}
