#contenedor #titulo span {
    color: var(--black);
    font-family: 'Dancing Script', 'Poppins', sans-serif;
    font-size: 4.7rem;
    font-weight: bold;
    background: linear-gradient(43deg, #4158D0 0%, #C850C0 46%, #ffc75f 100%);
    -webkit-text-fill-color: transparent;
    background-size: 300% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    animation: gradient 5s ease infinite;
    display: flex;
    justify-content: center;
}

@keyframes gradient {
    0% {
        background-position: 0% 50%;
    }

    50% {
        background-position: 100% 50%;
    }

    100% {
        background-position: 0% 50%;
    }
}

#contenedor #animacion {
    margin: 2em;
    text-align: center;
}

#contenedor #animacion span {
    width: max-content;
    border-right: 3px solid;
    font-family: 'Century Gothic', Arial, Helvetica, sans-serif;
    /* El valor de step deben ser los carácteres de la palabra */
    animation: code 3s steps(31), efecto 0.3s step-end infinite alternate;
    font-size: 1rem;
}

@keyframes code {
    from {
        clip-path: polygon(0 0, 0 0, 0 100%, 0 100%);
    }

    to {
        clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
    }
}

@keyframes efecto {
    50% {
        border-color: transparent;
    }
}

#contenedor #mosaico {
    display: flex;
    flex-flow: row wrap;
    width: 100%;
    margin-bottom: 1em;
}

#contenedor #mosaico img {
    flex: auto;
    height: 250px;
    min-width: 140px;
    margin: 0.3em;
    border-radius: 7px;
    object-fit: cover;
    transition: 0.4s ease;
}

#contenedor #mosaico img:hover {
    transform: scale(1.05);
    box-shadow: 0px 0px 30px rgba(0, 0, 0, 0.50);
}

/* Permite que al añadir más imágenes se adapten correctamente al mosaico */
#contenedor #mosaico img:nth-child(4n+1) {
    width: 250px;
}

#contenedor #mosaico img:nth-child(4n+1):nth-child(4n+2) {
    width: 325px;
}

#contenedor #mosaico img:nth-child(4n+1):nth-child(4n+3) {
    width: 180px;
}

#contenedor #mosaico img:nth-child(4n+1):nth-child(4n+4) {
    width: 380px;
}

#contenedor #contenedor section {
    padding: 20px;
}

#contenedor section article {
    width: 100%;
    background-color: var(--gray);
    margin-top: 0.5em;
    text-align: justify;
    border-radius: 7px;
    padding: 1em;
}

#contenedor section + h2 {
    margin: 1em 0 1em 0;
}

#contenedor #contenedor-opiniones {
    display: flex;
    justify-content: space-evenly;
}

#contenedor-opiniones .opinion {
    display: flex;
    flex-direction: column;
    align-items: center;
    max-width: 230px;
    background-color: var(--gray);
    padding: 20px;
    margin: 0.5em;
    border-radius: 7px;
}

#contenedor-opiniones .opinion figure {
    width: 100px;
    height: 100px;
    border: 2px solid #CCCCCC;
    border-radius: 50%;
    overflow: hidden;
    margin-bottom: 0.7em;
}

#contenedor-opiniones .opinion figure img {
    height: 100%;
    object-fit: cover;
}

#contenedor-opiniones .opinion div h3 {
    margin: 0;
}

#contenedor-opiniones .opinion div p {
    margin: 0;
    margin-top: 10px;
}

@media screen and (max-width: 916px) {
    #contenedor #mosaico img {
        width: 2em;
        height: 7em;
    }
    #contenedor #contenedor-opiniones {
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }
}