@-webkit-keyframes spin {
    0% { -webkit-transform: rotate(0deg); }
    100% { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loader {
    display: none;
    width: 1rem;
    height: 1rem;
    margin-right: 0.2rem;
}
.loader.show {
    display: inline-block;
}
.loader:after {
    content: " ";
    display: block;
    width: 1rem;
    height: 1rem;
    border-width: 3px;
    border-style: solid;
    border-color: #fff transparent #fff transparent;
    border-radius: 50%;
    -webkit-animation: spin 1.5s linear infinite;
    animation: spin 1.5s linear infinite;
}
.loader.dark:after {
    border-color: #212529 transparent #212529 transparent;
}
.loader.grey:after {
    border-color: #6c757d transparent #6c757d transparent;
}
.loader.white:after {
    border-color: #fff transparent #fff transparent;
}