.link {
    --tw-text-opacity: 1;
    color:             rgb(33 171 210 / var(--tw-text-opacity));
    text-decoration:   none;
    transition:        all 0.3s;
}

.link:hover {
    text-decoration: underline;
}

.input-error {
    border-color: #e53e3e;
    box-shadow:   0 0 0 1px #e53e3e;
}

.error-message {
    color:       #e53e3e;
    font-size:   0.875rem;
    margin-top:  0.25rem;
    margin-left: 0.5rem;
}

#primeras-paginas-video-modal, #primeras-paginas-epub-modal {
    position:         fixed;
    inset:            0;
    background-color: rgba(0, 0, 0, 0.6);
    justify-content:  center;
    align-items:      center;
    z-index:          9999;
    overflow-y:       auto;
}

.spinner {
    border: 4px solid rgba(0, 0, 0, 0.1);
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border-left-color: #09f;
    animation: spin 1s ease infinite;
}

@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}


#contenedor-resumen.resumen-loading #contenido-resumen {
    filter: blur(1px);
    pointer-events: none;
    user-select: none;
}

#contenedor-resumen .spinner {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 20;
    display: none;
}

#contenedor-resumen.resumen-loading .spinner {
    display: block;
}

body.loading #contenedor-app {
    filter: blur(1px);
    pointer-events: none;
    user-select: none;
}

body .spinner {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 99999999999999;
    display: none;
}

body.loading .spinner {
    display: block;
}

.bg-morado {
    --tw-bg-opacity: 1;
    background-color: rgb(150 11 120 / var(--tw-bg-opacity));
}

.border-rojo {
    --tw-border-opacity: 1;
    border-color: rgb(239 68 68 / var(--tw-text-opacity));
}
