*
{
    margin: 0;
    padding: 0;
    box-sizing:  border-box;
}
body {
    border: 2px solid red;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: #222;
}
.loading {
    position: relative;
    display: flex;
    gap: 15px;
}
.loading span {
    position: relative;
    width: 5px;
    height: 20px;
    /* background: #000; */
}
.loading span::before {
content: '';
position: absolute;
inset: 0;
animation: animate 8s linear infinite;
animation-delay: calc(var(--i) * 0.1s);
}
@keyframes animate {
    0% {
        background: #0f0;
        box-shadow: 0 0 5px #0f0,
        0 0 15px #0f0,
        0 0 30px #0f0,
        0 0 50px #0f0;
        rotate: 0deg;
    }
    20% {
        background: #0f0;
        box-shadow: 0 0 5px #0f0,
        0 0 15px #0f0,
        0 0 30px #0f0,
        0 0 50px #0f0;
        rotate: 0deg;
    }
    40% {
        background: #0f0;
        box-shadow: 0 0 5px #0f0,
        0 0 15px #0f0,
        0 0 30px #0f0,
        0 0 50px #0f0;
        rotate: 90deg;
        transform-origin: bottom;
        filter: hue-rotate(0deg);
    }
    80% {
        background: #0f0;
        box-shadow: 0 0 5px #0f0,
        0 0 15px #0f0,
        0 0 30px #0f0,
        0 0 50px #0f0;
        rotate: 90deg;
        transform-origin: bottom;
        filter: hue-rotate(360deg);
    }
    90% {
        background: #000;
        box-shadow: none;
        rotate: 0deg;
    }
    90.1%, 100% {
        background: #000;
        box-shadow: none;

    }
}