.spinner {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
    width: 4em;
    height: 4em;
    padding: 7px;
    border-radius: 50%;
    transform: scale(.7);
    background: #fff;
    box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12)
}

.spinner-wrapper {
    position: relative;
    width: 4em;
    height: 4em;
    border-radius: 100%;
    left: calc(50% - 2em)
}

.spinner-wrapper::after {
    content: "";
    background: #fff;
    border-radius: 50%;
    width: 3em;
    height: 3em;
    position: absolute;
    top: .5em;
    left: .5em
}

.rotator {
    position: relative;
    width: 4em;
    border-radius: 4em;
    overflow: hidden;
    animation: rotate 2000ms infinite linear
}

.rotator:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: #3f51b5;
    border: 3px solid #fff;
    border-radius: 100%
}

.inner-spin {
    background: #fff;
    height: 4em;
    width: 2em
}

.inner-spin {
    animation: rotate-left 2500ms infinite cubic-bezier(.445, .05, .55, .95);
    border-radius: 2em 0 0 2em;
    transform-origin: 2em 2em
}

.inner-spin:last-child {
    animation: rotate-right 2500ms infinite cubic-bezier(.445, .05, .55, .95);
    margin-top: -4em;
    border-radius: 0 2em 2em 0;
    float: right;
    transform-origin: 0 50%
}

@keyframes rotate-left {

    60%,
    75%,
    100% {
        transform: rotate(360deg)
    }
}

@keyframes rotate {
    0% {
        transform: rotate(0)
    }

    100% {
        transform: rotate(360deg)
    }
}

@keyframes rotate-right {

    0%,
    25%,
    45% {
        transform: rotate(0)
    }

    100% {
        transform: rotate(360deg)
    }
}