:root {
    --animation-timing: 1s;
    --dot-color: #72AD43;
    --dot-size: 10px;
    --dot-offset: calc(-1 * var(--dot-size) / 1.5);
    --dot-opacity: 0.5;
}

/* Estilos para el contenedor de carga */
.loading {
    text-align: center;
    font-size: var(--dot-size);
    padding: calc(var(--dot-size) * 4);
}

/* Estilos para los puntos */
.loading .dot {
    width: 1em;
    height: 1em;
    margin: 0 0.2em;
    display: inline-block;
    background: var(--dot-color);
    border-radius: 50%;
    position: relative;
}

/* Animaciones para los puntos */
.loading .dot:nth-child(1) {
    animation: dot1 var(--animation-timing) infinite ease-in-out;
}

.loading .dot:nth-child(2) {
    animation: dot2 var(--animation-timing) infinite ease-in-out;
}

.loading .dot:nth-child(3) {
    animation: dot3 var(--animation-timing) infinite ease-in-out;
}

.loading .dot:nth-child(4) {
    animation: dot4 var(--animation-timing) infinite ease-in-out;
}

/* Keyframes para las animaciones */
@keyframes dot1 {
    0% {
        top: 0;
    }

    20% {
        top: var(--dot-offset);
        opacity: var(--dot-opacity);
    }

    40% {
        top: 0;
    }
}

@keyframes dot2 {
    20% {
        top: 0;
    }

    40% {
        top: var(--dot-offset);
        opacity: var(--dot-opacity);
    }

    60% {
        top: 0;
    }
}

@keyframes dot3 {
    40% {
        top: 0;
    }

    60% {
        top: var(--dot-offset);
        opacity: var(--dot-opacity);
    }

    80% {
        top: 0;
    }
}

@keyframes dot4 {
    60% {
        top: 0;
    }

    80% {
        top: var(--dot-offset);
        opacity: var(--dot-opacity);
    }

    100% {
        top: 0;
    }
}
