@keyframes button-loading-spin {
    to {
        transform: rotate(360deg);
    }
}

button.is-loading,
a.btn.is-loading,
[role="button"].btn.is-loading,
input[type="submit"].is-loading,
input[type="button"].is-loading,
button.is-loading-locked,
a.btn.is-loading-locked,
[role="button"].btn.is-loading-locked,
input[type="submit"].is-loading-locked,
input[type="button"].is-loading-locked {
    cursor: wait;
    opacity: 0.82;
}

button.is-loading::before,
a.btn.is-loading::before,
[role="button"].btn.is-loading::before {
    content: "";
    display: inline-block;
    width: 0.95em;
    height: 0.95em;
    margin-right: 0.45em;
    border: 0.16em solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    vertical-align: -0.12em;
    animation: button-loading-spin 0.65s linear infinite;
}

button.btn-sm.is-loading::before,
a.btn-sm.is-loading::before,
[role="button"].btn-sm.is-loading::before {
    width: 0.85em;
    height: 0.85em;
}

button.btn-lg.is-loading::before,
a.btn-lg.is-loading::before,
[role="button"].btn-lg.is-loading::before {
    width: 1.05em;
    height: 1.05em;
}

button.btn-icon.is-loading::before,
a.btn-icon.is-loading::before,
[role="button"].btn-icon.is-loading::before,
button.close.is-loading::before,
button.btn-close.is-loading::before {
    margin-right: 0;
}
