.btn .status {
    bottom: 0;
    height: 1.375rem;
    left: 0;
    margin: auto;
    position: absolute;
    top: 0;
    right: 0;
    width: 1.5rem;
}

.btn .status .spinner {
    left: .3125rem;
    transition: .3s ease;
    top: .1875rem;
    position: absolute;
    opacity: 0;
}

.btn .status .status-icon {
    border-radius: 50%;
    left: 0;
    opacity: 0;
    font-size: .625rem;
    padding: .25rem .4375rem;
    position: relative;
    transition: .3s ease;
    z-index: 1;
    transform: scale(0);
}

.btn .status .status-icon.valid {
    background-color: var(--green);
}

.btn .status .status-icon.invalid {
    background-color: var(--red);
}

.btn.processing span {
    opacity: .2;
}

.btn.processing .spinner {
    opacity: 1;
}

.btn.done .ts-spinner {
    opacity: 0;
}

.btn.done .status-icon {
    transform: scale(1);
    opacity: 1;
}

.fa-spin {
    -webkit-animation: fa-spin 2s linear infinite;
    animation: fa-spin 2s linear infinite;
}