/* Shared loading state for buttons, submit inputs, and busy links (E-shop / retail). */
@keyframes aq-busy-spin {
    to {
        transform: rotate(360deg);
    }
}

button.is-loading,
a.is-loading {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    position: relative;
    pointer-events: none;
    opacity: 0.92;
}

input[type="submit"].is-loading {
    position: relative;
    pointer-events: none;
    opacity: 0.92;
    color: transparent;
}

button.is-loading > *,
a.is-loading > * {
    visibility: visible;
}

button.is-loading::after,
input[type="submit"].is-loading::after,
a.is-loading::after {
    content: "";
    flex-shrink: 0;
    order: -1;
    width: 1.1rem;
    height: 1.1rem;
    box-sizing: border-box;
    border: 2px solid rgba(128, 128, 128, 0.35);
    border-top-color: rgba(55, 55, 55, 0.9);
    border-radius: 50%;
    animation: aq-busy-spin 0.65s linear infinite;
}

/* input[type=submit] pseudo-elements are unreliable — keep centered overlay */
input[type="submit"].is-loading::after {
    position: absolute;
    left: 50%;
    top: 50%;
    margin: -0.55rem 0 0 -0.55rem;
    order: unset;
}

/* Light spinner on dark / colored primary buttons (shop save, confirm, dispatch, etc.) */
button.is-loading.pd-btn-save::after,
button.is-loading.prm-prod-foot-btn--save::after,
button.is-loading.partner-retail-returns__btn--approve::after,
button.is-loading.partner-retail-returns__btn-approve::after,
button.is-loading.fin-ord-filter-btn:not(.fin-ord-filter-btn--ghost)::after,
button.is-loading[class*="bg-slate-"]::after,
button.is-loading[class*="bg-violet-"]::after,
button.is-loading[class*="bg-emerald-"]::after,
#eshop-confirm-ok.is-loading::after,
a.is-loading.fin-boc__btn--primary::after,
a.is-loading.finance-btn--primary::after,
a.is-loading.fin-ord-action-btn--pay::after,
a.is-loading.fin-cg-checkout-btn::after {
    border-color: rgba(255, 255, 255, 0.35);
    border-top-color: #fff;
}

/* Above all e-shop dialogs (z-[100], retail-loc-modal 100000, headers ~100000) */
#eshop-confirm-modal {
    z-index: 100010;
}

.eshop-confirm-modal.eshop-confirm-locked {
    pointer-events: auto;
}

/* Locked e-shop dialog: dim dismiss controls while POST is in flight */
[role="dialog"][data-aq-modal-locked="1"] button[id$="-backdrop"],
[role="dialog"][data-aq-modal-locked="1"] [id*="btn-close"],
[role="dialog"][data-aq-modal-locked="1"] [id*="btn-cancel"],
[role="dialog"][data-aq-modal-locked="1"] [id*="modal-close"],
[role="dialog"][data-aq-modal-locked="1"] [id*="modal-cancel"] {
    pointer-events: none;
    opacity: 0.55;
    cursor: not-allowed;
}
