.DynamicReadout {
    position: fixed;

    left: 0;
    right: 0;
    bottom: 0;

    z-index: 999999;

    display: none;
    justify-content: center;

    padding: 5px 10px;

    background: #1c2530;
    box-shadow: 0 -2px 8px rgba(0,0,0,0.2);
}

.DynamicReadoutVisible {
    display: flex;
}

.DynamicReadoutItems {
    display: flex;
    justify-content: center;
    align-items: center;

    gap: 6px;
    flex-wrap: wrap;
}

/*
 * Individual AJAX activity blocks.
 */

.DynamicReadoutItems > * {
    position: relative;
    overflow: hidden;

    padding: 4px 12px;

    background: #2271b1;
    color: #fff;

    border: 1px solid #65b7ed;
    border-radius: 4px;

    font-size: 11px;
    font-weight: 500;
    line-height: 1.4;

    white-space: nowrap;

    animation: DynamicReadoutPulse 1.5s ease-in-out infinite;
}

/*
 * Moving highlight across each block.
 */

.DynamicReadoutItems > *::after {
    content: "";

    position: absolute;
    top: 0;
    bottom: 0;
    left: -50%;

    width: 45%;

    background: linear-gradient(
        90deg,
        transparent,
        rgba(255,255,255,0.3),
        transparent
    );

    animation: DynamicReadoutSweep 1.5s linear infinite;

    pointer-events: none;
}

@keyframes DynamicReadoutPulse {
    0%, 100% {
        opacity: 0.8;
    }

    50% {
        opacity: 1;
    }
}

@keyframes DynamicReadoutSweep {
    from {
        left: -50%;
    }

    to {
        left: 110%;
    }
}

/*
 * Hide on mobile.
 */

@media(max-width: 700px) {

    .DynamicReadout {
        display: none !important;
    }

}

@media(prefers-reduced-motion: reduce) {
    .DynamicReadoutItems > *,
    .DynamicReadoutItems > *::after {
        animation: none;
    }
}

.DynamicReadoutWaiting {
    background: #555b65 !important;
    border-color: #888 !important;
}

.DynamicReadoutCancel {
    margin-left: 8px;
    padding: 0 4px;

    border: 0;
    background: transparent;
    color: #fff;

    font-size: 15px;
    font-weight: bold;

    cursor: pointer;
}

.DynamicReadoutCancel:hover {
    color: #ff8080;
}

.DynamicReadoutAbort {
    display: none;

    position: absolute;
    right: 8px;
    top: 50%;

    transform: translateY(-50%);

    padding: 4px 10px;

    background: #b32626;
    color: #fff;

    border: 1px solid #e06666;
    border-radius: 4px;

    font-size: 11px;
    font-weight: bold;

    cursor: pointer;
    z-index: 1;
}

.DynamicReadoutAbort:hover {
    background: #e03030;
}

.DynamicReadout {
    padding-right: 100px;
    padding-left: 100px;
}