﻿/* ======================================================================
   AULA SEGURA · FORMULARIO AISLADO
   Referencias visuales de la landing:
   #020617, #061323, #55d8ff, tipografía gridlite + avant-garde.
   Ningún selector de esta hoja modifica la landing u otras vistas.
   ====================================================================== */

.acceso-pagina,
.acceso-modal-documentos,
.acceso-toast-contenedor {
    --acceso-fondo: #020617;
    --acceso-fondo-secundario: #061323;
    --acceso-panel: #0c223b;
    --acceso-cian: #55d8ff;
    --acceso-verde: #4dff62; /* Acento de progreso de la landing */
    --acceso-cian-claro: #dffbff;
    --acceso-azul: #17659b;
    --acceso-blanco: #ffffff;
    --acceso-texto: #f2f9ff;
    --acceso-texto-suave: #a8c4d7;
    --acceso-borde: rgba(85, 216, 255, 0.27);
    --acceso-error: #ff9b9b;
    --acceso-fuente-pixel: "gridlite-pe-variable", "Silkscreen", monospace;
    --acceso-fuente-cuerpo: "itc-avant-garde-gothic-pro", "Segoe UI", Arial, sans-serif;
}

    .acceso-pagina,
    .acceso-pagina *,
    .acceso-pagina *::before,
    .acceso-pagina *::after,
    .acceso-modal-documentos,
    .acceso-modal-documentos *,
    .acceso-modal-documentos *::before,
    .acceso-modal-documentos *::after,
    .acceso-toast-contenedor,
    .acceso-toast-contenedor * {
        box-sizing: border-box;
    }

/* =========================== ESCENARIO =========================== */

.acceso-pagina {
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 100vh;
    min-height: 100dvh;
    margin: 0;
    padding: clamp(32px, 5vh, 68px) 20px;
    overflow: hidden;
    background: #020617;
    color: var(--acceso-texto);
    font-family: var(--acceso-fuente-cuerpo);
}

    .acceso-pagina::before {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 0;
        pointer-events: none;
        background: radial-gradient(ellipse 48% 54% at 50% 49%, rgba(16, 81, 130, .24), transparent 81%), radial-gradient(ellipse 60% 35% at 14% 20%, rgba(0, 80, 155, .11), transparent 80%), radial-gradient(ellipse 52% 34% at 85% 88%, rgba(4, 70, 132, .15), transparent 80%), linear-gradient(120deg, #020617 0%, #06152a 54%, #020617 100%);
    }

    .acceso-pagina::after {
        content: "";
        position: absolute;
        inset: 0;
        z-index: 1;
        pointer-events: none;
        background: linear-gradient(90deg, rgba(2, 6, 23, .24), transparent 22%, transparent 78%, rgba(2, 6, 23, .24)), linear-gradient(180deg, rgba(2, 6, 23, .38), transparent 23%, transparent 80%, rgba(2, 6, 23, .20));
    }

.acceso-particulas-canvas {
    position: absolute;
    inset: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    pointer-events: none;
    user-select: none;
    opacity: .96;
    filter: drop-shadow(0 0 2px rgba(85, 216, 255, .26));
}

/* ============================ PANEL ============================ */

.acceso-form-container {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 560px;
    margin: auto;
    padding: clamp(30px, 3.5vw, 43px);
    border: 1px solid rgba(85, 216, 255, .32);
    border-radius: 21px;
    background: linear-gradient(145deg, rgba(13, 35, 59, .96), rgba(5, 19, 36, .975));
    box-shadow: 0 26px 92px rgba(0, 0, 0, .58), 0 0 60px rgba(30, 143, 219, .10), inset 0 1px 0 rgba(216, 250, 255, .07);
    backdrop-filter: blur(9px);
    -webkit-backdrop-filter: blur(9px);
}

    .acceso-form-container::before {
        content: "";
        position: absolute;
        top: -1px;
        left: 17%;
        right: 17%;
        height: 2px;
        pointer-events: none;
        background: linear-gradient(90deg, transparent, #55d8ff, transparent);
        box-shadow: 0 0 13px rgba(85, 216, 255, .63);
    }

/* =========================== ENCABEZADO =========================== */

.acceso-form-header {
    margin-bottom: 26px;
    text-align: center;
}

.acceso-form-eyebrow {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin-bottom: 19px;
    color: #62dbff;
    font-family: var(--acceso-fuente-pixel);
    font-variation-settings: "wght" 700, "BACK" 1, "RECT" 1, "ELSH" 3;
    font-size: 12px;
    line-height: 1.5;
    letter-spacing: .10em;
    text-transform: uppercase;
    text-shadow: 0 0 9px rgba(85, 216, 255, .40);
}

    .acceso-form-eyebrow::before,
    .acceso-form-eyebrow::after {
        content: "";
        width: clamp(13px, 4vw, 33px);
        height: 1px;
        background: rgba(85, 216, 255, .48);
    }

.acceso-eyebrow-separador {
    color: rgba(255, 255, 255, .60);
}

.acceso-form-header h1 {
    margin: 0;
    color: #f6fdff;
    font-family: var(--acceso-fuente-pixel);
    font-size: clamp(28px, 3vw, 34px);
    font-weight: 900;
    font-variation-settings: "wght" 900, "BACK" 1, "RECT" 1, "ELSH" 3;
    line-height: 1.33;
    letter-spacing: .065em;
    text-transform: uppercase;
    text-shadow: 0 0 7px rgba(250, 255, 255, .36), 0 0 24px rgba(85, 216, 255, .25);
    -webkit-font-smoothing: antialiased;
}

    .acceso-form-header h1 span {
        color: var(--acceso-verde);
        text-shadow: 0 0 8px rgba(77, 255, 98, .75), 0 0 23px rgba(77, 255, 98, .38);
    }

.acceso-form-subtitulo {
    max-width: 385px;
    margin: 14px auto 0;
    color: #bdd5e4;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: 13px;
    line-height: 1.65;
}

.acceso-form-divider {
    height: 1px;
    margin: 0 0 27px;
    background: linear-gradient(90deg, transparent, rgba(85, 216, 255, .28), transparent);
}

/* ============================ FORMULARIO ============================ */

.acceso-form {
    width: 100%;
}

    .acceso-form .acceso-form-group {
        margin-bottom: 19px;
    }

        .acceso-form .acceso-form-group > label {
            display: block;
            margin-bottom: 9px;
            color: #e4f6ff;
            font-family: var(--acceso-fuente-cuerpo);
            font-size: 13px;
            font-weight: 600;
            letter-spacing: .02em;
        }

    .acceso-form .acceso-form-control {
        display: block;
        width: 100%;
        max-width: 100%;
        height: 50px;
        margin: 0;
        padding: 0 15px;
        border: 1px solid rgba(147, 207, 239, .28);
        border-radius: 9px;
        background: rgba(1, 10, 23, .72);
        color: #f8fcff;
        font-family: var(--acceso-fuente-cuerpo);
        font-size: 15px;
        font-weight: 400;
        line-height: normal;
        outline: none;
        box-shadow: none;
        -webkit-appearance: none;
        appearance: none;
        transition: border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
    }

        .acceso-form .acceso-form-control::placeholder {
            color: #8aa9bc;
            opacity: .75;
        }

        .acceso-form .acceso-form-control:hover {
            border-color: rgba(85, 216, 255, .55);
        }

        .acceso-form .acceso-form-control:focus {
            border-color: #55d8ff;
            background: rgba(4, 21, 39, .95);
            box-shadow: 0 0 0 3px rgba(85, 216, 255, .11), 0 0 18px rgba(85, 216, 255, .12);
        }

        .acceso-form .acceso-form-control.input-validation-error {
            border-color: var(--acceso-error);
        }

    .acceso-form .field-validation-error,
    .acceso-form .field-validation-error span {
        display: block;
        margin-top: 7px;
        color: var(--acceso-error);
        font-size: 12px;
        line-height: 1.5;
    }

    .acceso-form .field-validation-valid,
    .acceso-form .validation-summary-valid {
        display: none;
    }

    .acceso-form .validation-summary-errors {
        margin-bottom: 16px;
        padding: 12px 14px;
        border: 1px solid rgba(255, 155, 155, .32);
        border-radius: 8px;
        background: rgba(255, 100, 100, .08);
        color: #ffc5c5;
        font-size: 12px;
    }

        .acceso-form .validation-summary-errors ul {
            margin: 0;
            padding-left: 18px;
        }

/* ======================== TARJETAS DE ACEPTACIÓN ======================== */

.acceso-checkbox-group {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin: 25px 0 25px;
}

.acceso-checkbox-item {
    display: flex;
    align-items: center;
    gap: 13px;
    width: 100%;
    min-height: 71px;
    padding: 14px 15px;
    border: 1px solid rgba(85, 216, 255, .19);
    border-radius: 10px;
    background: rgba(2, 14, 27, .58);
    transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}

.acceso-documento-card {
    cursor: pointer;
}

    .acceso-documento-card:hover,
    .acceso-documento-card:focus-visible {
        background: rgba(11, 44, 70, .70);
        border-color: rgba(85, 216, 255, .60);
        box-shadow: 0 0 22px rgba(85, 216, 255, .07);
    }

    .acceso-documento-card:focus-visible {
        outline: 2px solid #55d8ff;
        outline-offset: 3px;
    }

.acceso-checkbox-item input[type="checkbox"] {
    flex: 0 0 auto;
    width: 19px;
    height: 19px;
    margin: 0;
    accent-color: var(--acceso-verde);
    cursor: pointer;
}

    .acceso-checkbox-item input[type="checkbox"]:disabled {
        opacity: .43;
        cursor: not-allowed;
        pointer-events: none;
    }

.acceso-checkbox-content {
    flex: 1;
    min-width: 0;
    color: #e4f4ff;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: 13px;
    font-weight: 400;
    line-height: 1.5;
}

    .acceso-checkbox-content label {
        display: block;
        width: 100%;
        margin: 0;
        color: inherit;
        font: inherit;
        cursor: pointer;
    }

.acceso-documento-ayuda {
    display: block;
    margin-top: 5px;
    color: #73c4de;
    font-size: 11px;
    line-height: 1.35;
}

.acceso-documento-flecha {
    flex: 0 0 auto;
    align-self: center;
    color: #55d8ff;
    font-family: Arial, sans-serif;
    font-size: 26px;
    line-height: 1;
    opacity: .8;
    transition: transform .2s ease;
}

.acceso-documento-card:hover .acceso-documento-flecha {
    transform: translateX(3px);
}

.acceso-documento-habilitado .acceso-documento-flecha {
    display: none;
}

.acceso-documento-habilitado {
    border-color: rgba(85, 216, 255, .30);
}

    .acceso-documento-habilitado .acceso-documento-ayuda {
        color: #94e9a0;
    }

.acceso-documento-card:has(input[type="checkbox"]:checked) {
    border-color: rgba(77, 255, 98, .70);
    background: rgba(38, 132, 70, .13);
    box-shadow: inset 0 0 0 1px rgba(77, 255, 98, .08);
}

.acceso-checkbox-item.acceso-checkbox-error {
    border-color: rgba(255, 155, 155, .58);
    background: rgba(255, 100, 100, .06);
}

/* ========================== BOTÓN PRINCIPAL ========================== */

.acceso-form .acceso-btn-submit {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 53px;
    margin: 0;
    padding: 14px 19px;
    border: 1px solid var(--acceso-verde);
    border-radius: 11px;
    background: var(--acceso-verde);
    color: #062517;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.25;
    letter-spacing: .065em;
    text-transform: uppercase;
    cursor: pointer;
    box-shadow: 0 0 11px rgba(77, 255, 98, .40), 0 0 29px rgba(77, 255, 98, .18);
    transition: background-color .2s ease, transform .2s ease, box-shadow .2s ease;
}

    .acceso-form .acceso-btn-submit:hover:not(:disabled) {
        background: #8cff97;
        transform: translateY(-2px);
        box-shadow: 0 0 18px rgba(77, 255, 98, .55), 0 0 38px rgba(77, 255, 98, .27);
    }

    .acceso-form .acceso-btn-submit:focus-visible {
        outline: 2px solid #55d8ff;
        outline-offset: 4px;
    }

    .acceso-form .acceso-btn-submit:disabled {
        border-color: rgba(155, 181, 203, .26);
        background: #647a90;
        color: #d1d9e2;
        opacity: .58;
        cursor: not-allowed;
        transform: none;
        box-shadow: none;
    }

/* ============================= PIE ============================= */

.acceso-form-footer {
    margin-top: 22px;
    text-align: center;
}

    .acceso-form-footer p {
        margin: 0;
        color: #9bb3c7;
        font-family: var(--acceso-fuente-cuerpo);
        font-size: 11px;
        line-height: 1.65;
    }

/* ======================== MODAL DE LECTURA HTML ======================== */

.acceso-modal-documentos {
    display: none;
    flex-direction: column;
    width: min(850px, calc(100vw - 28px));
    max-width: 850px;
    height: min(90dvh, 850px);
    max-height: calc(100dvh - 28px);
    margin: auto;
    padding: clamp(16px, 2.2vw, 27px);
    overflow: hidden;
    border: 1px solid rgba(85, 216, 255, .40);
    border-radius: 18px;
    background: linear-gradient(145deg, #102b46, #061527);
    color: var(--acceso-texto);
    font-family: var(--acceso-fuente-cuerpo);
    box-shadow: 0 35px 95px rgba(0, 0, 0, .60), 0 0 33px rgba(85, 216, 255, .12);
}

    .acceso-modal-documentos[open] {
        display: flex;
    }

    .acceso-modal-documentos::backdrop {
        background: rgba(0, 5, 16, .40);
        backdrop-filter: blur(1px);
        -webkit-backdrop-filter: blur(1px);
    }

.acceso-modal-header {
    flex: 0 0 auto;
    text-align: center;
    margin-bottom: 14px;
}

.acceso-modal-eyebrow {
    margin-bottom: 8px;
    color: #62dbff;
    font-family: var(--acceso-fuente-pixel);
    font-size: 10px;
    letter-spacing: .11em;
}

.acceso-modal-header h2 {
    margin: 0;
    color: #f5fcff;
    font-family: var(--acceso-fuente-pixel);
    font-variation-settings: "wght" 900, "BACK" 1, "RECT" 1, "ELSH" 3;
    font-size: clamp(18px, 3vw, 23px);
    line-height: 1.35;
    letter-spacing: .045em;
    text-shadow: 0 0 14px rgba(85, 216, 255, .27);
}

.acceso-modal-header p {
    margin: 0;
    color: #b2d0e1;
    font-size: 12px;
    line-height: 1.45;
}

.acceso-modal-body {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    margin-bottom: 13px;
}
/* La barra de lectura mide el desplazamiento dentro de este contenedor. */
.acceso-modal-visor {
    flex: 1 1 auto;
    min-height: 170px;
    width: 100%;
    overflow: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: #55d8ff #06182a;
    border: 1px solid rgba(85, 216, 255, .29);
    border-radius: 10px;
    background: #172333;
    outline: none;
}

    .acceso-modal-visor:focus-visible {
        border-color: #55d8ff;
        box-shadow: 0 0 0 2px rgba(85, 216, 255, .17);
    }

    .acceso-modal-visor::-webkit-scrollbar {
        width: 10px;
        height: 10px;
    }

    .acceso-modal-visor::-webkit-scrollbar-track {
        background: #06182a;
    }

    .acceso-modal-visor::-webkit-scrollbar-thumb {
        background: #387a97;
        border-radius: 8px;
    }

        .acceso-modal-visor::-webkit-scrollbar-thumb:hover {
            background: #55d8ff;
        }

.acceso-modal-paginas {
    min-height: 100%;
    padding: clamp(12px, 2vw, 20px);
}

.acceso-modal-contenido[hidden] {
    display: none !important;
}

.acceso-modal-contenido {
    display: block;
    width: 100%;
}

/* Documento HTML de ejemplo: aspecto de contrato impreso y texto adaptable. */
.acceso-contrato {
    width: 100%;
    max-width: 760px;
    margin: 0 auto;
    padding: clamp(20px, 3vw, 38px);
    border: 1px solid rgba(12, 41, 70, .12);
    border-radius: 3px;
    background: #f8fafc;
    color: #24354a;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: clamp(13px, 1.5vw, 15px);
    font-weight: 400;
    line-height: 1.75;
    overflow-wrap: anywhere;
    box-shadow: 0 4px 20px rgba(0, 0, 0, .28);
}

.acceso-contrato-encabezado {
    margin: 0 0 24px;
    padding-bottom: 16px;
    border-bottom: 1px solid #c8d6e1;
    text-align: center;
}

.acceso-contrato-leyenda {
    display: inline-block;
    margin: 0 0 12px;
    padding: 5px 9px;
    border: 1px solid #b27625;
    border-radius: 4px;
    background: #fff5dc;
    color: #7d4c16;
    font-size: 10px;
    font-weight: 800;
    line-height: 1.4;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.acceso-contrato h3 {
    margin: 0 0 9px;
    color: #122a48;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: clamp(17px, 2vw, 23px);
    font-weight: 800;
    line-height: 1.35;
    text-align: center;
}

.acceso-contrato-entradilla {
    margin: 0;
    color: #52677d;
    font-size: 12px;
    line-height: 1.6;
}

.acceso-contrato h4 {
    margin: 24px 0 9px;
    color: #174a6b;
    font-family: var(--acceso-fuente-cuerpo);
    font-size: 14px;
    font-weight: 800;
    line-height: 1.4;
}

.acceso-contrato p {
    margin: 0 0 12px;
}

.acceso-contrato ul {
    margin: 0 0 15px;
    padding-left: 23px;
}

.acceso-contrato li {
    margin: 0 0 7px;
}

.acceso-contrato-cierre {
    margin-top: 25px;
    padding-top: 18px;
    border-top: 1px solid #c8d6e1;
    font-size: 12px;
    color: #53687d;
}

.acceso-modal-progreso {
    flex: 0 0 auto;
    width: 100%;
    height: 3px;
    margin-top: 8px;
    overflow: hidden;
    border-radius: 99px;
    background: rgba(85, 216, 255, .18);
}

    .acceso-modal-progreso span {
        display: block;
        width: 0;
        height: 100%;
        background: #4dff62;
        box-shadow: 0 0 6px rgba(77, 255, 98, .4);
        transition: width .12s linear;
    }

.acceso-modal-estado {
    flex: 0 0 auto;
    min-height: 25px;
    margin: 8px 0 0;
    color: #9ccce0;
    font-size: 11.5px;
    line-height: 1.45;
}

.acceso-modal-acciones {
    flex: 0 0 auto;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

    .acceso-modal-acciones button {
        min-height: 46px;
        padding: 12px;
        border-radius: 9px;
        font-family: var(--acceso-fuente-cuerpo);
        font-size: 12px;
        font-weight: 800;
        letter-spacing: .035em;
        cursor: pointer;
        transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
    }

.acceso-modal-btn-aceptar {
    border: 1px solid #4dff62;
    background: #4dff62;
    color: #062517;
}

    .acceso-modal-btn-aceptar:hover:not(:disabled) {
        background: #91ff9b;
        box-shadow: 0 0 16px rgba(77, 255, 98, .35);
    }

    .acceso-modal-btn-aceptar:disabled {
        opacity: .37;
        cursor: not-allowed;
        box-shadow: none;
    }

.acceso-modal-btn-cerrar {
    border: 1px solid rgba(85, 216, 255, .50);
    background: transparent;
    color: #edfaff;
}

    .acceso-modal-btn-cerrar:hover {
        background: rgba(85, 216, 255, .13);
    }

.acceso-modal-acciones button:focus-visible {
    outline: 2px solid #55d8ff;
    outline-offset: 3px;
}

/* ============================== TOAST ============================== */

.acceso-toast-contenedor {
    position: fixed;
    top: 24px;
    right: 24px;
    z-index: 99999;
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: min(420px, calc(100vw - 32px));
    pointer-events: none;
}

.acceso-mensaje {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    width: 100%;
    padding: 17px 18px;
    border: 1px solid rgba(85, 216, 255, .30);
    border-radius: 13px;
    background: #102c45;
    color: #eaf7ff;
    font-family: var(--acceso-fuente-cuerpo);
    box-shadow: 0 15px 40px rgba(0, 0, 0, .35);
    pointer-events: auto;
    opacity: 0;
    transform: translateX(calc(100% + 48px));
    transition: transform .5s cubic-bezier(.22, 1, .36, 1), opacity .4s ease;
}

    .acceso-mensaje.acceso-toast-visible {
        opacity: 1;
        transform: translateX(0);
    }

    .acceso-mensaje.acceso-toast-saliendo {
        opacity: 0;
        transform: translateX(calc(100% + 48px));
    }

.acceso-mensaje-icono {
    flex-shrink: 0;
    display: flex;
    justify-content: center;
    align-items: center;
    width: 25px;
    height: 25px;
    border-radius: 50%;
    font-size: 14px;
    font-weight: 700;
}

.acceso-mensaje-contenido {
    flex: 1;
    min-width: 0;
}

.acceso-mensaje-titulo {
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.5;
}

.acceso-mensaje-texto {
    margin: 0;
    font-size: 12px;
    line-height: 1.65;
}

.acceso-mensaje--exito {
    background: #10382f;
    border-color: rgba(42, 186, 140, .45);
    color: #d5fae8;
}

    .acceso-mensaje--exito .acceso-mensaje-icono {
        background: rgba(42, 186, 140, .20);
        color: #74e8ad;
    }

.acceso-mensaje--error {
    background: #35212e;
    border-color: rgba(255, 155, 155, .4);
    color: #ffd5d5;
}

    .acceso-mensaje--error .acceso-mensaje-icono {
        background: rgba(255, 100, 100, .18);
        color: #ff9b9b;
    }

.acceso-mensaje--advertencia {
    background: #3a3020;
    border-color: rgba(255, 185, 70, .4);
    color: #ffe5b2;
}

    .acceso-mensaje--advertencia .acceso-mensaje-icono {
        background: rgba(255, 185, 70, .18);
        color: #ffd077;
    }

.acceso-mensaje--informativo {
    background: #10304a;
    border-color: rgba(85, 216, 255, .4);
    color: #dffbff;
}

    .acceso-mensaje--informativo .acceso-mensaje-icono {
        background: rgba(85, 216, 255, .18);
        color: #55d8ff;
    }

/* ========================== RESPONSIVE ========================== */

@media (min-width: 768px) and (max-width: 1199px) {
    .acceso-form-container {
        max-width: 550px;
        padding: 38px;
    }
}

@media (max-width: 767px) {
    .acceso-pagina {
        align-items: center;
        padding: max(24px, env(safe-area-inset-top)) 14px max(24px, env(safe-area-inset-bottom));
    }

    .acceso-form-container {
        max-width: 540px;
        padding: clamp(22px, 5vw, 30px);
        border-radius: 16px;
    }

    .acceso-form-eyebrow {
        gap: 5px;
        margin-bottom: 14px;
        font-size: 10px;
        letter-spacing: .045em;
    }

    .acceso-form-header h1 {
        font-size: clamp(21px, 5.7vw, 30px);
    }

    .acceso-form-subtitulo {
        font-size: 12px;
        margin-top: 10px;
    }

    .acceso-form-header {
        margin-bottom: 21px;
    }

    .acceso-form-divider {
        margin-bottom: 23px;
    }

    .acceso-form .acceso-form-control {
        height: 49px;
        font-size: 16px;
    }

    .acceso-checkbox-item {
        padding: 13px 11px;
        min-height: 66px;
        gap: 10px;
    }

    .acceso-checkbox-content {
        font-size: 12px;
    }

    .acceso-documento-ayuda {
        font-size: 10px;
    }

    .acceso-form .acceso-btn-submit {
        font-size: 13px;
        min-height: 50px;
    }

    .acceso-modal-documentos {
        padding: 25px 19px;
    }

    .acceso-modal-header h2 {
        font-size: 19px;
    }

    .acceso-toast-contenedor {
        top: max(16px, env(safe-area-inset-top));
        right: 12px;
        width: calc(100vw - 24px);
    }

    .acceso-mensaje {
        padding: 14px 15px;
        border-radius: 11px;
    }
}

@media (max-width: 380px) {
    .acceso-form-container {
        padding: 23px 17px;
    }

    .acceso-form-header h1 {
        font-size: 20px;
    }

    .acceso-form-eyebrow {
        font-size: 9.5px;
        gap: 4px;
        letter-spacing: .025em;
    }

        .acceso-form-eyebrow::before,
        .acceso-form-eyebrow::after {
            width: 12px;
        }

    .acceso-modal-acciones {
        grid-template-columns: 1fr;
    }

        .acceso-modal-acciones button {
            width: 100%;
        }
}

@media (max-height: 690px) {
    .acceso-pagina {
        align-items: flex-start;
        padding-top: 20px;
        padding-bottom: 20px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .acceso-pagina *,
    .acceso-pagina *::before,
    .acceso-pagina *::after,
    .acceso-modal-documentos *,
    .acceso-mensaje {
        transition: none !important;
        animation: none !important;
    }

    .acceso-particulas-canvas {
        opacity: .60;
    }
}


/* ======================================================================
   PULSO CENTRAL · Exito, error, advertencia e informacion.
   Reutiliza el diseño de exito; solo varian tono, icono y mensajes.
   Sin cambios en los selectores de la tarjeta/formulario.
   ====================================================================== */

.acceso-pulso-modal,
.acceso-pulso-modal *,
.acceso-pulso-modal *::before,
.acceso-pulso-modal *::after {
    box-sizing: border-box;
}

.acceso-pulso-modal {
    --pulso-cian: #55d8ff;
    --pulso-verde: #4dff62;
    --pulso-acento: #4dff62;
    --pulso-acento-rgb: 77, 255, 98;
    --pulso-texto: #effaff;
    --pulso-fuente-pixel: "gridlite-pe-variable", "Silkscreen", monospace;
    --pulso-fuente-cuerpo: "itc-avant-garde-gothic-pro", "Segoe UI", Arial, sans-serif;
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    margin: 0;
    padding: max(14px, env(safe-area-inset-top)) 16px max(14px, env(safe-area-inset-bottom));
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--pulso-texto);
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    font-family: var(--pulso-fuente-cuerpo);
}

    .acceso-pulso-modal[open] {
        display: grid;
        place-items: center;
    }

    .acceso-pulso-modal::backdrop {
        background: rgba(1, 7, 19, .79);
        backdrop-filter: blur(6px);
        -webkit-backdrop-filter: blur(6px);
    }

.acceso-pulso-escena {
    position: relative;
    display: grid;
    place-items: center;
    width: min(550px, 100%);
    min-height: 515px;
    margin: auto;
    isolation: isolate;
    animation: acceso-pulso-entrada .48s cubic-bezier(.2, .9, .2, 1) both;
}

.acceso-pulso-halo {
    position: absolute;
    inset: 7%;
    z-index: -1;
    border-radius: 50%;
    pointer-events: none;
    background: radial-gradient(circle, rgba(8, 49, 75, .70) 0%, rgba(6, 33, 58, .50) 45%, rgba(2, 6, 23, 0) 72%);
    filter: blur(9px);
}

.acceso-pulso-anillos {
    position: absolute;
    top: 50%;
    left: 50%;
    width: min(500px, 98%);
    aspect-ratio: 1;
    transform: translate(-50%, -50%);
    pointer-events: none;
}

.acceso-pulso-orbita {
    position: absolute;
    inset: 0;
    display: block;
    border-radius: 50%;
}

.acceso-pulso-orbita--uno {
    border: 1px solid rgba(85, 216, 255, .47);
    box-shadow: 0 0 28px rgba(85, 216, 255, .11), inset 0 0 25px rgba(85, 216, 255, .07);
    animation: acceso-pulso-respirar 3.6s ease-in-out infinite;
}

.acceso-pulso-orbita--dos {
    inset: 5%;
    border: 1px dashed rgba(85, 216, 255, .28);
    border-left-color: transparent;
    border-right-color: transparent;
    animation: acceso-pulso-girar 29s linear infinite;
}

.acceso-pulso-orbita--tres {
    inset: -2%;
    border: 2px solid transparent;
    border-top-color: rgba(85, 216, 255, .94);
    border-bottom-color: rgba(var(--pulso-acento-rgb), .70);
    filter: drop-shadow(0 0 6px rgba(85, 216, 255, .7));
    animation: acceso-pulso-girar 17s linear infinite reverse;
}

.acceso-pulso-cifra {
    position: absolute;
    font: 400 10px/1 var(--pulso-fuente-pixel);
    letter-spacing: .32em;
    color: rgba(85, 216, 255, .55);
    text-shadow: 0 0 9px rgba(85, 216, 255, .3);
}

.acceso-pulso-cifra--a {
    top: 12%;
    left: 6%;
    transform: rotate(-44deg);
}

.acceso-pulso-cifra--b {
    right: 4%;
    bottom: 15%;
    transform: rotate(-42deg);
}

.acceso-pulso-contenido {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: min(410px, 86%);
    padding: 35px 3px 43px;
    text-align: center;
}

.acceso-pulso-emblema {
    position: relative;
    width: 101px;
    height: 101px;
    margin-bottom: 17px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(var(--pulso-acento-rgb), .09), transparent 72%);
    filter: drop-shadow(0 0 13px rgba(var(--pulso-acento-rgb), .22));
}

    .acceso-pulso-emblema::after {
        content: "";
        position: absolute;
        inset: 7px;
        border: 1px solid rgba(var(--pulso-acento-rgb), .18);
        border-radius: 50%;
        animation: acceso-pulso-respirar 2.6s ease-in-out infinite;
    }

    .acceso-pulso-emblema svg {
        width: 100%;
        height: 100%;
        display: block;
    }

.acceso-pulso-circulo {
    stroke: rgba(85, 216, 255, .85);
    stroke-width: 1.35;
}

.acceso-pulso-check {
    stroke: #4dff62;
    stroke-width: 5;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 54;
    stroke-dashoffset: 54;
    animation: acceso-pulso-check .62s .26s ease-out forwards;
    filter: drop-shadow(0 0 5px rgba(77, 255, 98, .7));
}

.acceso-pulso-etiqueta {
    margin-bottom: 13px;
    color: #73dfff;
    font-family: var(--pulso-fuente-pixel);
    font-size: 9px;
    line-height: 1.5;
    letter-spacing: .12em;
}

.acceso-pulso-contenido h2 {
    margin: 0 0 15px;
    color: #f8fdff;
    font-family: var(--pulso-fuente-pixel);
    font-size: clamp(18px, 3vw, 25px);
    font-weight: 900;
    line-height: 1.35;
    letter-spacing: .065em;
    text-shadow: 0 0 13px rgba(85, 216, 255, .5);
}

    .acceso-pulso-contenido h2 span {
        color: var(--pulso-acento);
        text-shadow: 0 0 13px rgba(var(--pulso-acento-rgb), .5);
    }

.acceso-pulso-contenido p {
    max-width: 355px;
    margin: 0 0 25px;
    color: #d8edfb;
    font-family: var(--pulso-fuente-cuerpo);
    font-size: clamp(13px, 1.5vw, 15px);
    font-weight: 400;
    line-height: 1.65;
    overflow-wrap: anywhere;
}

.acceso-pulso-continuar {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 188px;
    min-height: 46px;
    padding: 11px 25px;
    border: 1px solid #55d8ff;
    border-radius: 26px;
    color: #ffffff;
    background: rgba(4, 28, 51, .62);
    box-shadow: 0 0 17px rgba(85, 216, 255, .24), inset 0 0 12px rgba(85, 216, 255, .07);
    font-family: var(--pulso-fuente-cuerpo), sans-serif;
    font-size: 14px;
    font-weight: 800;
    line-height: 1.3;
    font-variation-settings: normal;
    letter-spacing: .10em;
    text-transform: uppercase;
    text-shadow: none;
    cursor: pointer;
    transition: color .2s ease, background .2s ease, box-shadow .2s ease, transform .2s ease;
}

    .acceso-pulso-continuar:hover {
        color: #020617;
        background: #55d8ff;
        text-shadow: none;
        box-shadow: 0 0 16px rgba(85, 216, 255, .45), 0 0 28px rgba(85, 216, 255, .20);
        transform: translateY(-1px);
    }

    .acceso-pulso-continuar:focus-visible {
        outline: 2px solid var(--pulso-acento);
        outline-offset: 4px;
    }

.acceso-pulso-saliendo .acceso-pulso-escena {
    animation: acceso-pulso-salida .26s ease-in both;
}

@keyframes acceso-pulso-entrada {
    from {
        opacity: 0;
        transform: scale(.86);
        filter: blur(5px);
    }

    to {
        opacity: 1;
        transform: scale(1);
        filter: blur(0);
    }
}

@keyframes acceso-pulso-salida {
    from {
        opacity: 1;
        transform: scale(1);
    }

    to {
        opacity: 0;
        transform: scale(.94);
    }
}

@keyframes acceso-pulso-girar {
    to {
        transform: rotate(360deg);
    }
}

@keyframes acceso-pulso-respirar {
    0%, 100% {
        opacity: .6;
        box-shadow: 0 0 15px rgba(85, 216, 255, .08);
    }

    50% {
        opacity: 1;
        box-shadow: 0 0 25px rgba(85, 216, 255, .20);
    }
}

@keyframes acceso-pulso-check {
    to {
        stroke-dashoffset: 0;
    }
}

@media (max-width: 520px) {
    .acceso-pulso-escena {
        min-height: 440px;
    }

    .acceso-pulso-anillos {
        width: min(390px, 100%);
    }

    .acceso-pulso-contenido {
        width: 85%;
        padding: 44px 0;
    }

    .acceso-pulso-emblema {
        width: 79px;
        height: 79px;
        margin-bottom: 13px;
    }

    .acceso-pulso-etiqueta {
        font-size: 8px;
        letter-spacing: .06em;
    }

    .acceso-pulso-contenido h2 {
        font-size: clamp(17px, 5.2vw, 21px);
    }

    .acceso-pulso-contenido p {
        font-size: 13px;
        max-width: 290px;
    }

    .acceso-pulso-continuar {
        min-width: 170px;
        min-height: 44px;
    }
}

@media (max-height: 540px) {
    .acceso-pulso-escena {
        min-height: 405px;
    }

    .acceso-pulso-anillos {
        width: min(370px, 85%);
    }

    .acceso-pulso-contenido {
        padding: 16px 4px;
    }

    .acceso-pulso-emblema {
        width: 64px;
        height: 64px;
        margin-bottom: 8px;
    }
}

@media (prefers-reduced-motion: reduce) {
    .acceso-pulso-modal *,
    .acceso-pulso-modal *::before,
    .acceso-pulso-modal *::after {
        animation: none !important;
        transition: none !important;
    }

    .acceso-pulso-check {
        stroke-dashoffset: 0;
    }
}

/* ================== VARIANTES DEL PULSO ================== */
/* Éxito mantiene exactamente el esquema original cian + verde. */
.acceso-pulso--exito {
    --pulso-acento: #4dff62;
    --pulso-acento-rgb: 77, 255, 98;
}

/* Error: señal roja/rosada, cruz y órbita roja. */
.acceso-pulso--error {
    --pulso-acento: #ff647d;
    --pulso-acento-rgb: 255, 100, 125;
}

/* Advertencia: advertencia ámbar, sin comunicar fallo total. */
.acceso-pulso--advertencia {
    --pulso-acento: #ffd067;
    --pulso-acento-rgb: 255, 208, 103;
}

/* Información: cian, sin semántica de éxito confirmado. */
.acceso-pulso--informativa {
    --pulso-acento: #55d8ff;
    --pulso-acento-rgb: 85, 216, 255;
}

/* Cambian luces del aro exterior y del emblema, no el formulario de fondo. */
.acceso-pulso-modal:not(.acceso-pulso--exito) .acceso-pulso-orbita--tres {
    filter: drop-shadow(0 0 6px rgba(var(--pulso-acento-rgb), .55));
}

.acceso-pulso-modal:not(.acceso-pulso--exito) .acceso-pulso-circulo {
    stroke: rgba(var(--pulso-acento-rgb), .85);
}

.acceso-pulso-modal:not(.acceso-pulso--exito) .acceso-pulso-orbita--uno {
    border-color: rgba(var(--pulso-acento-rgb), .38);
    box-shadow: 0 0 28px rgba(var(--pulso-acento-rgb), .09), inset 0 0 24px rgba(var(--pulso-acento-rgb), .05);
}

/* Ícono vectorial exclusivo para estados distintos del éxito. */
.acceso-pulso-simbolo {
    stroke: var(--pulso-acento);
    stroke-width: 4.5;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-dasharray: 100;
    stroke-dashoffset: 100;
    animation: acceso-pulso-check .68s .26s ease-out forwards;
    filter: drop-shadow(0 0 5px rgba(var(--pulso-acento-rgb), .65));
}

.acceso-pulso--advertencia .acceso-pulso-simbolo {
    stroke-width: 3.5;
}

.acceso-pulso--informativa .acceso-pulso-simbolo {
    stroke-width: 5.5;
}

/* La luz interior de los estados de atención es deliberadamente moderada. */
.acceso-pulso-modal:not(.acceso-pulso--exito) .acceso-pulso-halo {
    background: radial-gradient(circle, rgba(var(--pulso-acento-rgb), .065) 0%, rgba(6, 33, 58, .48) 45%, rgba(2, 6, 23, 0) 72%);
}

.acceso-pulso-modal:not(.acceso-pulso--exito) .acceso-pulso-continuar:hover {
    border-color: var(--pulso-acento);
    background: var(--pulso-acento);
    color: #051423;
    box-shadow: 0 0 24px rgba(var(--pulso-acento-rgb), .45);
}

@media (prefers-reduced-motion: reduce) {
    .acceso-pulso-simbolo {
        stroke-dashoffset: 0;
    }
}

/* Ajustes exclusivos del texto de contratos en pantallas estrechas o de poca altura. */
@media (max-width: 767px) {
    .acceso-modal-documentos {
        width: calc(100vw - 18px);
        height: calc(100dvh - 24px);
        max-height: calc(100dvh - 24px);
        padding: 17px 13px;
    }

    .acceso-modal-header {
        margin-bottom: 9px;
    }

        .acceso-modal-header p {
            font-size: 11px;
        }

    .acceso-modal-paginas {
        padding: 10px;
    }

    .acceso-contrato {
        padding: 18px 16px;
        font-size: 13px;
        line-height: 1.65;
    }

    .acceso-modal-estado {
        font-size: 11px;
    }
}

@media (max-height: 550px) {
    .acceso-modal-documentos {
        height: calc(100dvh - 14px);
        max-height: calc(100dvh - 14px);
        padding-top: 11px;
        padding-bottom: 11px;
    }

    .acceso-modal-eyebrow {
        display: none;
    }

    .acceso-modal-header {
        margin-bottom: 8px;
    }

        .acceso-modal-header h2 {
            margin-bottom: 3px;
        }
}
