.d-flex{display: flex !important;}
.justify-content-center{justify-content: center !important;}
.align-items-center{align-items: center !important;}
.mx-auto{margin-right: auto !important; margin-left: auto !important;}
.my-3{margin-top: 1rem !important; margin-bottom: 1rem !important;}
.me-1{margin-right: .25rem !important}
.me-3{margin-right: 1rem !important;}

.spinner-border {
    --bs-spinner-width: 2rem;
    --bs-spinner-height: 2rem;
    --bs-spinner-vertical-align: -0.125em;
    --bs-spinner-border-width: 0.2em;
    --bs-spinner-animation-speed: 0.75s;
    --bs-spinner-animation-name: spinner-border;
    border: var(--bs-spinner-border-width) solid currentcolor;
    border-right-color: transparent;
}
.spinner-grow {
    --bs-spinner-width: 2rem;
    --bs-spinner-height: 2rem;
    --bs-spinner-vertical-align: -0.125em;
    --bs-spinner-animation-speed: 0.75s;
    --bs-spinner-animation-name: spinner-grow;
    background-color: currentcolor;
    opacity: 0;
}
.spinner-border, .spinner-grow {
    display: inline-block;
    width: var(--bs-spinner-width);
    height: var(--bs-spinner-height);
    vertical-align: var(--bs-spinner-vertical-align);
    border-radius: 50%;
    animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name);
}

.spinner-border.text-primary {
    color: var(--main-color) !important;
}

@keyframes spinner-border {
    to { transform: rotate(360deg); }
}
@keyframes spinner-grow {
    0% {
        transform: scale(0);
    }
    50% {
        opacity: 1;
        transform: none;
    }
}