/* Busy overlay — added to a panel while an async action is in flight.
 * Frosted-white veil + centred brand spinner. The veil inherits the
 * parent's border-radius so it doesn't square off rounded cards. */
.busy-overlay {
    position: relative;
}

.busy-overlay::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.65);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    border-radius: inherit;
    z-index: 1;
    animation: app-busy-overlay-fade 150ms ease-out;
}

.busy-overlay::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 1.5rem;
    height: 1.5rem;
    margin: -0.75rem 0 0 -0.75rem;
    border: 2px solid rgba(0, 0, 0, 0.08);
    border-top-color: var(--primary_cta_bg_color, #4c1d95);
    border-radius: 50%;
    z-index: 2;
    animation: app-busy-overlay-spin 700ms linear infinite;
}

@keyframes app-busy-overlay-spin {
    to { transform: rotate(360deg); }
}

@keyframes app-busy-overlay-fade {
    from { opacity: 0; }
    to   { opacity: 1; }
}
