.processing-widget {
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    z-index: 1080;
    opacity: 0;
    transform: translateY(16px) scale(.98);
    pointer-events: none;
    transition: opacity .24s ease, transform .24s ease;
}

.processing-widget.is-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.processing-widget-shell {
    position: relative;
    overflow: hidden;
    min-width: 220px;
    max-width: min(88vw, 360px);
    border-radius: .9rem;
    border: 1px solid var(--color4);
    background: color-mix(in srgb, var(--color5) 88%, black 12%);
    backdrop-filter: blur(7px);
}

.processing-widget-pulse {
    position: absolute;
    inset: -40% auto auto -30%;
    width: 160px;
    height: 160px;
    border-radius: 50%;
    background: radial-gradient(circle, color-mix(in srgb, var(--color1) 45%, transparent 55%) 0%, transparent 72%);
    animation: pwPulse 2.4s ease-in-out infinite;
}

.processing-widget-body {
    position: relative;
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .65rem .8rem;
}

.processing-widget-dots {
    display: inline-flex;
    align-items: center;
    gap: .26rem;
}

.processing-widget-dots span {
    width: .46rem;
    height: .46rem;
    border-radius: 999px;
    background: var(--color1);
    opacity: .35;
    animation: pwDot 1s ease-in-out infinite;
}

.processing-widget-dots span:nth-child(2) {
    animation-delay: .16s;
}

.processing-widget-dots span:nth-child(3) {
    animation-delay: .32s;
}

.processing-widget-text {
    font-size: .92rem;
    line-height: 1.2;
    color: var(--color2);
    letter-spacing: .01em;
}

@keyframes pwDot {
    0%, 80%, 100% {
        transform: translateY(0);
        opacity: .35;
    }
    40% {
        transform: translateY(-2px);
        opacity: 1;
    }
}

@keyframes pwPulse {
    0%, 100% {
        transform: scale(.9);
        opacity: .6;
    }
    50% {
        transform: scale(1.1);
        opacity: 1;
    }
}

@media (max-width: 576px) {
    .processing-widget {
        right: .75rem;
        left: .75rem;
        bottom: .75rem;
    }

    .processing-widget-shell {
        max-width: 100%;
    }
}
