* {
    box-sizing: border-box;
}


/* =========================
   CUERPO
========================= */

body {

    font-family:
        Arial,
        Helvetica,
        sans-serif;

    background: #f3f5f7;

    margin: 0;

    min-height: 100vh;

    display: flex;

    justify-content: center;

    align-items: center;

    color: #333;

}


/* =========================
   CONTENEDOR
========================= */

.login-container {

    background: #ffffff;

    width: 350px;

    padding: 30px 35px 35px;

    border-radius: 15px;

    border: 1px solid #e1e5ea;

    box-shadow:
        0 10px 30px rgba(15, 33, 61, 0.14);

    animation:
        aparecer 0.6s ease;

}


@keyframes aparecer {

    from {

        opacity: 0;

        transform:
            translateY(15px);

    }

    to {

        opacity: 1;

        transform:
            translateY(0);

    }

}


/* =========================
   LOGO
========================= */

.logo-container {

    position: relative;

    width: 110px;

    height: 110px;

    margin: 0 auto 8px;

    display: flex;

    align-items: center;

    justify-content: center;

}


.logo-ayax {

    width: 110px;

    height: 110px;

    object-fit: contain;

    display: block;

    position: relative;

    z-index: 2;

    animation:
        logoEntrada 0.9s ease;

}


@keyframes logoEntrada {

    0% {

        opacity: 0;

        transform:
            scale(0.75)
            rotate(-3deg);

    }

    70% {

        transform:
            scale(1.04)
            rotate(1deg);

    }

    100% {

        opacity: 1;

        transform:
            scale(1)
            rotate(0);

    }

}


/* =========================
   DESTELLO DORADO
========================= */

.logo-brillo {

    position: absolute;

    z-index: 3;

    width: 18px;

    height: 125px;

    background:
        linear-gradient(
            90deg,
            transparent,
            rgba(212, 175, 55, 0.75),
            transparent
        );

    transform:
        rotate(18deg)
        translateX(-80px);

    opacity: 0;

    pointer-events: none;

    animation:
        brilloLogo 1.5s ease 0.6s;

}


@keyframes brilloLogo {

    0% {

        opacity: 0;

        transform:
            rotate(18deg)
            translateX(-80px);

    }

    20% {

        opacity: 1;

    }

    70% {

        opacity: 0.8;

    }

    100% {

        opacity: 0;

        transform:
            rotate(18deg)
            translateX(80px);

    }

}


/* =========================
   NOMBRE
========================= */

.login-container h1 {

    text-align: center;

    color: #0F213D;

    margin:
        0 0 10px;

    font-size: 28px;

    font-weight: 800;

    letter-spacing: 3px;

    animation:
        aparecerTexto 0.6s ease 0.25s both;

}


@keyframes aparecerTexto {

    from {

        opacity: 0;

        transform:
            translateY(6px);

    }

    to {

        opacity: 1;

        transform:
            translateY(0);

    }

}


/* =========================
   SUBTÍTULO
========================= */

.subtitulo-login {

    text-align: center;

    color: #667085;

    font-size: 14px;

    line-height: 1.4;

    margin:
        0 0 25px;

}


/* =========================
   LABELS
========================= */

.login-container label {

    display: block;

    margin-bottom: 6px;

    font-weight: bold;

    color: #0F213D;

}


/* =========================
   INPUTS
========================= */

.login-container input {

    width: 100%;

    padding: 10px;

    margin-bottom: 18px;

    border:
        1px solid #cfd6de;

    border-radius: 8px;

    font-size: 14px;

    background: #ffffff;

    transition:
        border-color 0.2s,
        box-shadow 0.2s;

}


.login-container input:focus {

    outline: none;

    border-color: #1C3B66;

    box-shadow:
        0 0 0 3px
        rgba(28, 59, 102, 0.12);

}


/* =========================
   BOTÓN
========================= */

.btn-login {

    width: 100%;

    background: #0F213D;

    color: #E6E8EA;

    border:
        1px solid #0F213D;

    padding: 12px;

    font-size: 16px;

    font-weight: bold;

    border-radius: 8px;

    cursor: pointer;

    transition:
        background 0.2s,
        border-color 0.2s,
        color 0.2s,
        transform 0.2s;

}


.btn-login:hover {

    background: #1C3B66;

    border-color: #D4AF37;

    color: #D4AF37;

}


.btn-login:active {

    transform: scale(0.97);

}


.btn-login:disabled {

    cursor: wait;

    opacity: 0.9;

}


/* =========================
   SPINNER
========================= */

.spinner-login {

    display: none;

    width: 15px;

    height: 15px;

    margin-left: 8px;

    vertical-align: middle;

    border:
        2px solid
        rgba(230, 232, 234, 0.35);

    border-top-color: #D4AF37;

    border-radius: 50%;

    animation:
        girar 0.7s linear infinite;

}


.spinner-login.mostrar {

    display: inline-block;

}


@keyframes girar {

    to {

        transform:
            rotate(360deg);

    }

}


/* =========================
   ANIMACIÓN AL LOGIN
========================= */

.logo-login {

    animation:
        pulsoLogo 0.9s ease-in-out infinite;

}


@keyframes pulsoLogo {

    0% {

        transform: scale(1);

    }

    50% {

        transform: scale(1.05);

    }

    100% {

        transform: scale(1);

    }

}


/* =========================
   MENSAJE
========================= */

.mensaje-login {

    display: none;

    text-align: center;

    margin-top: 14px;

    color: #1C3B66;

    font-size: 13px;

    font-weight: 600;

}


.mensaje-login.mostrar {

    display: block;

    animation:
        aparecerMensaje 0.3s ease;

}


@keyframes aparecerMensaje {

    from {

        opacity: 0;

        transform:
            translateY(-5px);

    }

    to {

        opacity: 1;

        transform:
            translateY(0);

    }

}


/* =========================
   ERROR
========================= */

.alerta-error {

    display: flex;

    align-items: center;

    gap: 10px;

    background: #fff3f3;

    color: #b42318;

    border-left:
        5px solid #d92d20;

    padding: 12px 15px;

    border-radius: 8px;

    margin-bottom: 20px;

    font-size: 14px;

    font-weight: bold;

}


.icono-error {

    font-size: 20px;

}


/* =========================
   ÉXITO
========================= */

.alerta-exito {

    display: flex;

    align-items: center;

    gap: 10px;

    margin-bottom: 20px;

    padding: 12px 14px;

    background: #ecfdf5;

    border:
        1px solid #a7f3d0;

    border-radius: 8px;

    color: #047857;

    font-size: 14px;

}


.icono-exito {

    display: flex;

    align-items: center;

    justify-content: center;

    width: 22px;

    height: 22px;

    border-radius: 50%;

    background: #10b981;

    color: white;

    font-size: 14px;

    font-weight: bold;

    flex-shrink: 0;

}


/* =========================
   RECUPERAR CONTRASEÑA
========================= */

.recuperar-password {

    text-align: center;

    margin-top: 18px;

}


.recuperar-password a {

    color: #1C3B66;

    text-decoration: none;

    font-size: 14px;

}


.recuperar-password a:hover {

    color: #B38728;

    text-decoration: underline;

}


/* =========================
   RESPONSIVE
========================= */

@media (max-width: 500px) {

    body {

        padding: 15px;

    }


    .login-container {

        width: 100%;

        max-width: 350px;

        padding:
            25px;

    }


    .logo-container,
    .logo-ayax {

        width: 95px;

        height: 95px;

    }


    .login-container h1 {

        font-size: 25px;

    }

}