body
{
    margin: 0;
    padding: 0;
    height: 100vh;
    background: url(../images/bg.jpg);
    background-size: cover;
    animation: animateBg 60s linear infinite;
}
.pulse
{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    width: 200px;
    height: 200px;
    background: url(../images/earth.png);
    background-size: cover;
    animation: animateEarth 12s linear infinite;
    border-radius: 50%;
    box-shadow: inset 0 0 40px rgba(255,255,255,.5);
}
.pulse span
{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    display: block;
    border-radius: 50%;
    background: transparent;
    border: 2px solid #fff;
    box-sizing: border-box;
    animation: animate 6s linear infinite;
}
.pulse span:nth-child(1)
{
    animation-delay: 0s;
}
.pulse span:nth-child(2)
{
    animation-delay: 2s;
}
.pulse span:nth-child(3)
{
    animation-delay: 4s;
}

@keyframes animate
{
    0%
    {
        width: 200px;
        height: 200px;
        opacity: 1;
    }
    50%
    {
        opacity: 1;
    }
    100%
    {
        width: 400px;
        height: 400px;
        opacity: 0;
    }
}
@keyframes animateEarth
{
    0%
    {
        background-position: 0 0;
    }
    100%
    {
        background-position: 719px 0;
    }
}
@keyframes animateBg
{
    0%
    {
        background-position: 0 0;
    }
    100%
    {
        background-position: 1600px 0;
    }
}
