:root {


    /* =====================================================
       COLORES PRINCIPALES
    ===================================================== */

    --primary: #173d68;
    --primary-dark: #0d2f54;
    --primary-light: #2b73c7;


    /* Fondos de apoyo */

    --accent: #e9f2fc;
    --accent-strong: #dceafa;


    /* Colores de texto */

    --text: #18324f;
    --text-dark: #0f2d4d;

    --muted: #5f738a;
    --light: #71859a;


    /* Fondos */

    --bg: #f6f9fc;
    --white: #ffffff;


    /* Bordes */

    --border: #d7e2ee;


    /* Estados */

    --success: #1d9b62;
    --success-bg: #edf9f3;



    /* =====================================================
       SOMBRAS
    ===================================================== */

    --shadow-sm:
        0 4px 14px rgba(15, 45, 77, .07);

    --shadow-md:
        0 10px 30px rgba(15, 45, 77, .10);

    --shadow-lg:
        0 18px 45px rgba(15, 45, 77, .13);



    /* =====================================================
       RADIOS / BORDES REDONDEADOS
    ===================================================== */

    --radius-sm: 8px;
    --radius-md: 14px;
    --radius-lg: 20px;



    /* =====================================================
       CONTENEDOR GENERAL
    ===================================================== */

    --container: 1180px;



    /* =====================================================
       ALTURA DEL HEADER
    ===================================================== */

    --header-height: 78px;



    /* =====================================================
       TIPOGRAFÍA PRINCIPAL
    ===================================================== */

    --font:
        "Segoe UI",
        Roboto,
        Arial,
        sans-serif;

}


/* =========================================================
   02. RESET / CONFIGURACIÓN BASE
   ========================================================= */

/* Ajuste universal del modelo de caja */

*,
*::before,
*::after {

    box-sizing: border-box;

}


/* =====================================================
   CONFIGURACIÓN HTML
   ===================================================== */

html {

    font-size: 16px;

    scroll-behavior: smooth;

    overflow-x: hidden;

}


/* =====================================================
   CONFIGURACIÓN BODY
   ===================================================== */

body {

    margin: 0;

    min-width: 320px;

    overflow-x: hidden;

    background: var(--white);

    color: var(--text);

    font-family: var(--font);

    font-size: 1rem;

    line-height: 1.65;

    -webkit-font-smoothing: antialiased;

    text-rendering: optimizeLegibility;

}


/* =====================================================
   IMÁGENES
   ===================================================== */

img {

    display: block;

    max-width: 100%;

    height: auto;

}


/* =====================================================
   ENLACES
   ===================================================== */

a {

    color: inherit;

    text-decoration: none;

}


/* =====================================================
   ELEMENTOS DE FORMULARIO
   ===================================================== */

button,
input,
select,
textarea {

    font: inherit;

}


button {

    cursor: pointer;

}


/* =====================================================
   TÍTULOS
   ===================================================== */

h1,
/* h2, */
h3,
h4,
h5,
h6 {

    margin-top: 0;

    color: var(--text-dark);

    font-weight: 700;

    line-height: 1.2;

    overflow-wrap: break-word;

    /*
       Evita que las palabras normales
       se rompan letra por letra.
    */

    word-break: normal;

}

h2{
    margin-top: 0;

    color: var(--text-dark);

    font-weight: 640;

    line-height: 1.0;

    overflow-wrap: break-word;

    /*
       Evita que las palabras normales
       se rompan letra por letra.
    */

    word-break: normal;
}

/* =====================================================
   PÁRRAFOS
   ===================================================== */

p {

    margin-top: 0;

    color: var(--muted);

    font-size: 1rem;

    line-height: 1.65;

    overflow-wrap: break-word;

    word-break: normal;

}


/* =====================================================
   PREVENCIÓN DE DESBORDAMIENTOS
   ===================================================== */

main,
section,
article,
aside,
form,
div {

    min-width: 0;

}


input,
select,
textarea {

    min-width: 0;

}


/* =========================================================
   03. CONTENEDOR GENERAL
   ========================================================= */

.container {

    width: min(
        calc(100% - 40px),
        var(--container)
    );

    margin-inline: auto;

}


/* =========================================================
   04. HEADER
   =========================================================

   El header permanece fijo mientras el usuario
   se desplaza por la página.

   Características:

   - position: fixed
   - ocupa todo el ancho
   - permanece visible al hacer scroll
   - mantiene el menú estable
   - permite desplazamiento horizontal del menú
   - adapta su tamaño en dispositivos pequeños
   ========================================================= */

.header {

    position: fixed;

    top: 0;
    left: 0;
    right: 0;

    z-index: 1000;

    width: 100%;

    height: var(--header-height);
    min-height: var(--header-height);

    background: rgba(255, 255, 255, .98);

    border-bottom: 1px solid var(--border);

    box-shadow:
        0 2px 14px rgba(15, 45, 77, .06);

    backdrop-filter: blur(10px);

    -webkit-backdrop-filter: blur(10px);

}


/* =====================================================
   ESPACIO RESERVADO PARA EL HEADER
   =====================================================

   Como el header utiliza position: fixed,
   deja de ocupar espacio dentro del flujo normal.

   Este padding evita que el contenido quede
   escondido detrás del header.
   ===================================================== */

body {

    padding-top: var(--header-height);

}


/* =====================================================
   CONTENEDOR DEL HEADER
   ===================================================== */

.header .container.nav {

    width: min(
        calc(100% - 40px),
        var(--container)
    );

    height: var(--header-height);
    min-height: var(--header-height);

    margin-inline: auto;

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 18px;

}


/* =========================================================
   LOGO
   ========================================================= */

.logo {

    display: inline-flex;

    align-items: center;

    gap: 10px;

    flex: 0 0 auto;

    color: var(--primary);

    font-size: 1.35rem;

    font-weight: 750;

    white-space: nowrap;

}


/* =====================================================
   ICONO DEL LOGO
   ===================================================== */

.logo-icon {
    width: 50px;
    height: 50px;
    flex: 0 0 50px;
    display: block;
    border-radius: 50%;
    object-fit: cover;
}

/* .logo-icon {

    width: 42px;
    height: 42px;

    flex: 0 0 42px;

    display: grid;

    place-items: center;

    background: var(--primary);

    color: #fff;

    border-radius: 10px;

    font-size: 1.2rem;

    font-weight: 800;

} */


/* =========================================================
   MENÚ DE NAVEGACIÓN
   ========================================================= */

.menu {

    min-width: 0;

    flex: 1 1 auto;

    display: flex;

    align-items: center;

    justify-content: center;

    gap: 3px;

    /*
       Cuando el espacio disponible disminuye,
       el menú puede desplazarse horizontalmente.
    */

    overflow-x: auto;

    overflow-y: hidden;

    /*
       Oculta la barra de desplazamiento.
    */

    scrollbar-width: none;

    /*
       Evita que los enlaces se deformen.
    */

    white-space: nowrap;

}


/* =====================================================
   OCULTAR SCROLLBAR EN CHROME / EDGE / SAFARI
   ===================================================== */

.menu::-webkit-scrollbar {

    display: none;

}


/* =========================================================
   ENLACES DEL MENÚ
   ========================================================= */

.menu a {

    position: relative;

    flex: 0 0 auto;

    padding: 10px 12px;

    color: var(--muted);

    border-radius: 8px;

    font-size: .96rem;

    font-weight: 550;

    white-space: nowrap;

    transition:
        color .2s ease,
        background-color .2s ease;

}


/* Hover */

.menu a:hover {

    color: var(--primary);

    background: var(--accent);

}


/* Página activa */

.menu a.active {

    color: var(--primary);

    font-weight: 700;

}


/* Línea inferior de la página activa */

.menu a.active::after {

    content: "";

    position: absolute;

    left: 12px;
    right: 12px;

    bottom: 3px;

    height: 2px;

    background: var(--primary);

    border-radius: 999px;

}


/* =========================================================
   05. BOTONES
   ========================================================= */

.btn,
.btn-primary,
.btn-secondary,
.btn-light {

    min-height: 48px;

    display: inline-flex;

    align-items: center;

    justify-content: center;

    padding: 12px 22px;

    border: 1px solid transparent;

    border-radius: 10px;

    font-size: 1rem;

    font-weight: 700;

    line-height: 1.2;

    text-align: center;

    transition:
        transform .2s ease,
        box-shadow .2s ease,
        background-color .2s ease,
        color .2s ease;

}


/* =====================================================
   BOTÓN PRINCIPAL
   ===================================================== */

.btn-primary {

    background: var(--primary);

    color: #fff;

    box-shadow: var(--shadow-sm);

}


.btn-primary:hover {

    background: var(--primary-dark);

    box-shadow: var(--shadow-md);

    transform: translateY(-1px);

}


/* =====================================================
   BOTÓN SECUNDARIO
   ===================================================== */

.btn-secondary {

    background: #fff;

    color: var(--primary);

    border-color: var(--border);

}


.btn-secondary:hover {

    background: var(--accent);

}


/* =====================================================
   BOTÓN CLARO
   ===================================================== */

.btn-light {

    background: #fff;

    color: var(--primary);

}


/* =====================================================
   BOTÓN DEL HEADER
   ===================================================== */

.header .btn {

    flex: 0 0 auto;

    white-space: nowrap;

}


/* =========================================================
   HEADER — TABLETS
   ========================================================= */

@media (max-width: 900px) {

    :root {

        --header-height: 70px;

    }


    .header .container.nav {

        height: 70px;

        min-height: 70px;

        gap: 10px;

    }


    .logo {

        font-size: 1.18rem;

    }


    .logo-icon {

        width: 38px;
        height: 38px;

        flex-basis: 38px;

    }


    .menu {

        justify-content: flex-start;

    }


    .menu a {

        padding: 9px 8px;

        font-size: .90rem;

    }


    .header .btn {

        min-height: 44px;

        padding: 10px 13px;

        font-size: .86rem;

    }

}


/* =========================================================
   HEADER — MÓVILES
   ========================================================= */

@media (max-width: 560px) {

    :root {

        --header-height: 64px;

    }


    .header .container.nav {

        width: calc(100% - 20px);

        height: 64px;

        min-height: 64px;

        gap: 8px;

    }


    .logo {

        font-size: 1.05rem;

        gap: 7px;

    }


    .logo-icon {

        width: 34px;
        height: 34px;

        flex-basis: 34px;

        border-radius: 8px;

    }


    /*
       En teléfonos pequeños se oculta
       el botón CTA del header para evitar
       comprimir el menú.
    */

    .header .btn {

        display: none;

    }


    .menu {

        justify-content: flex-start;

        overflow-x: auto;

        overflow-y: hidden;

    }


    .menu a {

        padding: 8px 7px;

        font-size: .90rem;

    }

}


/* =========================================================
   HEADER — TELÉFONOS MUY PEQUEÑOS
   ========================================================= */

@media (max-width: 380px) {

    .header .container.nav {

        width: calc(100% - 14px);

        gap: 5px;

    }


    .logo {

        font-size: 1rem;

    }


    .logo-icon {

        width: 32px;
        height: 32px;

        flex-basis: 32px;

    }


    .menu a {

        padding-inline: 6px;

        font-size: .86rem;

    }

}


/* =========================================================
   06. ETIQUETAS Y TÍTULOS DE SECCIÓN
   ========================================================= */

.tag,
.hero-badge,
.section-label {

    display: inline-flex;

    align-items: center;

    padding: 7px 14px;

    margin-bottom: 18px;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 999px;

    font-size: .88rem;

    font-weight: 700;

    line-height: 1.25;

}


/* Contenedor del título */

.section-title,
.section-heading {

    max-width: 760px;

    margin: 0 auto 34px;

    text-align: center;

}


/* Título */

.section-title h2,
.section-heading h2 {

    margin-bottom: 12px;

    color: var(--primary);

    font-size: clamp(
        1.9rem,
        3.5vw,
        2.7rem

    );

    line-height: 1.18;

}


/* Descripción */

.section-title p,
.section-heading p {

    margin-bottom: 0;

    font-size: 1.02rem;

}


/* =========================================================
   07. INDEX — HERO
   ========================================================= */

.hero {

    width: min(
        calc(100% - 40px),
        var(--container)
    );

    margin-inline: auto;

    padding: 68px 0 62px;

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    align-items: center;

    gap: clamp(
        38px,
        6vw,
        72px
    );

}


/* Contenido */

.hero-content {

    max-width: 600px;

}


/* Título */

.hero h1 {

    margin-bottom: 24px;

    color: var(--primary);

    font-size: clamp(
        2.6rem,
        5vw,
        4.4rem
    );

    letter-spacing: -.04em;

    line-height: 1.03;

}


/* Palabra destacada */

.hero h1 span {

    color: var(--primary-light);

}


/* Descripción */

.hero-content > p {

    max-width: 570px;

    margin-bottom: 30px;

    font-size: 1.12rem;

}


/* Botones */

.hero-buttons {

    display: flex;

    flex-wrap: wrap;

    gap: 14px;

}


.hero-buttons > a {

    min-width: 170px;

}


/* =====================================================
   IMAGEN DEL HERO
   ===================================================== */

.hero-image {

    position: relative;

    min-width: 0;

}


.hero-image > img {

    width: 100%;

    aspect-ratio: 1 / .86;

    object-fit: cover;

    border-radius: 24px;

    box-shadow: var(--shadow-lg);

}


/* Tarjeta superpuesta */

.hero-image-card {

    position: absolute;

    left: -35px;

    bottom: 35px;

    width: min(
        310px,
        calc(100% - 20px)
    );

    display: flex;

    align-items: center;

    gap: 14px;

    padding: 20px;

    background: #fff;

    border-radius: 16px;

    box-shadow: var(--shadow-lg);

}


.hero-image-card strong {

    display: block;

    margin-bottom: 4px;

    color: var(--primary);

}


.hero-image-card span {

    color: var(--muted);

    font-size: .92rem;

}


/* Icono */

.card-icon {

    width: 44px;
    height: 44px;

    flex: 0 0 44px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


/* =========================================================
   08. SERVICES / PROCESS / ABOUT HOME
   ========================================================= */

.services,
.process,
.about-home {

    padding: 68px 0;

}


/* Fondo de servicios */

.services {

    background: var(--bg);

}


/* =====================================================
   SERVICES GRID
   ===================================================== */

.services-grid {

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 24px;

}


/* Tarjeta */

.service-card {

    overflow: hidden;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 18px;

    box-shadow: var(--shadow-sm);

}


/* Imagen */

.service-image {

    overflow: hidden;

    aspect-ratio: 16 / 9;

}


.service-image img {

    width: 100%;

    height: 100%;

    object-fit: cover;

}


/* Contenido */

.service-content {

    padding: 26px;

}


.service-number {

    display: inline-block;

    margin-bottom: 14px;

    color: var(--primary-light);

    font-weight: 800;

}


.service-content h3 {

    margin-bottom: 10px;

    color: var(--primary);

    font-size: 1.3rem;

}


.service-content p {

    margin-bottom: 18px;

}


.service-content a {

    color: var(--primary-light);

    font-weight: 700;

}


/* =========================================================
   PROCESS
   ========================================================= */

.process-grid {

    display: grid;

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    gap: 20px;

    width: 100%;

}


/* Tarjeta del proceso */

.process-card {

    min-width: 0;

    width: 100%;

    min-height: 220px;

    padding: 28px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 16px;

    box-shadow: var(--shadow-sm);

    overflow: hidden;

}


/* Número */

.process-card > span {

    width: 44px;
    height: 44px;

    display: grid;

    place-items: center;

    margin-bottom: 20px;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


/* Título */

.process-card h3 {

    margin-bottom: 10px;

    color: var(--primary);

    font-size: 1.2rem;

    line-height: 1.3;

    overflow-wrap: break-word;

    word-break: normal;

}


/* Texto */

.process-card p {

    margin-bottom: 0;

    overflow-wrap: break-word;

    word-break: normal;

}


/* =====================================================
   ABOUT HOME
   ===================================================== */

.about-home-content {

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    align-items: center;

    gap: clamp(
        40px,
        7vw,
        80px
    );

}


/* Imagen */

.about-home-image img {

    width: 100%;

    aspect-ratio: 1 / .82;

    object-fit: cover;

    border-radius: 20px;

    box-shadow: var(--shadow-lg);

}


/* Título */

.about-home-text h2 {

    margin-bottom: 18px;

    color: var(--primary);

    font-size: clamp(
        2rem,
        4vw,
        3rem
    );

}


/* Beneficios */

.benefits {

    display: grid;

    gap: 18px;

    margin: 28px 0;

}


.benefit {

    display: grid;

    grid-template-columns:
        36px
        minmax(0, 1fr);

    gap: 12px;

    align-items: start;

}


.benefit > span {

    width: 36px;
    height: 36px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


.benefit strong {

    color: var(--primary);

}


.benefit p {

    margin: 2px 0 0;

    font-size: .95rem;

}


/* =====================================================
   CTA FINAL
   ===================================================== */

.cta {

    padding: 64px 0;

    background: var(--primary-dark);

}


.cta-content {

    max-width: 820px;

    text-align: center;

}


.cta h2 {

    color: #fff;

    font-size: clamp(
        2rem,
        4vw,
        3rem
    );

}


.cta p {

    max-width: 650px;

    margin: 0 auto 25px;

    color: rgba(255, 255, 255, .82);

}


/* =========================================================
   FOOTER
   ========================================================= */

footer {

    padding: 34px 0;

    background: var(--primary-dark);

    border-top:
        1px solid rgba(255, 255, 255, .12);

    color: #fff;

}


.footer-content {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 20px;

}


.footer-content p {

    margin: 0;

    color: rgba(255, 255, 255, .76);

    font-size: .92rem;

}


.footer-logo {

    color: #fff;

}


.footer-logo .logo-icon {

    background: #fff;

    color: var(--primary);

}


/* =========================================================
   09. WHATSAPP
   ========================================================= */

.whatsapp-float {

    position: fixed;

    right: 20px;

    bottom: 20px;

    z-index: 950;

    display: flex;

    align-items: center;

    gap: 12px;

    max-width: calc(100vw - 28px);

    padding: 12px 18px;

    background: #20c96b;

    color: #fff;

    border-radius: 14px;

    box-shadow:
        0 10px 30px rgba(0, 0, 0, .18);

    font-weight: 700;

}


/* Icono */

.whatsapp-icon {

    width: 42px;
    height: 42px;

    flex: 0 0 42px;

    display: grid;

    place-items: center;

    background: #fff;

    color: #20c96b;

    border-radius: 50%;

}


.whatsapp-icon svg {

    width: 24px;
    height: 24px;

    fill: currentColor;

}


/* Texto */

.whatsapp-text {

    display: grid;

    gap: 1px;

}


.whatsapp-text small {

    color: rgba(255, 255, 255, .9);

    font-weight: 500;

}


/* =========================================================
   10. NOSOTROS / REQUISITOS / CONTACTO
   ========================================================= */

.about-hero,
.requirements-hero,
.contact-hero {

    padding: 64px 0;

    background: var(--bg);

}


/* Grid principal */

.about-hero-grid,
.requirements-hero-grid,
.contact-hero-grid {

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    align-items: center;

    gap: clamp(
        40px,
        7vw,
        80px
    );

}


/* Títulos */

.about-hero-content h1,
.requirements-hero-content h1,
.contact-hero-content h1 {

    margin-bottom: 20px;

    color: var(--primary);

    font-size: clamp(
        2.4rem,
        5vw,
        4rem
    );

    line-height: 1.06;

}


.about-hero-content h1 span,
.contact-hero-content h1 span {

    color: var(--primary-light);

}


/* Párrafos */

.about-hero-content p,
.requirements-hero-content p,
.contact-hero-content p {

    max-width: 620px;

    font-size: 1.08rem;

}


/* =====================================================
   IMÁGENES DE HERO INTERNAS
   ===================================================== */

.about-hero-image,
.requirements-hero-image,
.contact-hero-image,
.about-main-image,
.before-image,
.about-cta-image {

    position: relative;

    min-width: 0;

}


.about-hero-image > img,
.requirements-hero-image > img,
.contact-hero-image > img,
.about-main-image > img,
.before-image img,
.about-cta-image > img {

    width: 100%;

    object-fit: cover;

    border-radius: 20px;

    box-shadow: var(--shadow-lg);

}


.about-hero-image > img,
.requirements-hero-image > img,
.contact-hero-image > img {

    aspect-ratio: 1 / .84;

}


/* =====================================================
   TARJETAS FLOTANTES
   ===================================================== */

.about-floating-card,
.requirements-floating-card,
.contact-hero-card {

    position: absolute;

    left: -30px;

    bottom: 28px;

    width: min(
        300px,
        calc(100% - 20px)
    );

    display: flex;

    align-items: center;

    gap: 12px;

    padding: 18px;

    background: #fff;

    border-radius: 15px;

    box-shadow: var(--shadow-lg);

}


/* Iconos */

.about-card-icon,
.requirements-check,
.contact-hero-icon {

    width: 42px;
    height: 42px;

    flex: 0 0 42px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}

/* Imagenes Requisitos */

.requirement-image {
    width: 100%;
    height: 180px;
    object-fit: cover;
    display: block;
    border-radius: 10px;
}

/* Texto */

.about-floating-card strong,
.requirements-floating-card strong,
.contact-hero-card strong {

    display: block;

    color: var(--primary);

}


.about-floating-card span,
.requirements-floating-card span,
.contact-hero-card span {

    color: var(--muted);

    font-size: .9rem;

}


/* =========================================================
   ABOUT SECTIONS
   ========================================================= */

.about-section,
.values-section,
.before-section {

    padding: 70px 0;

}


/* Grid */

.about-main-grid,
.before-grid {

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(0, 1fr);

    align-items: center;

    gap: clamp(
        40px,
        7vw,
        80px
    );

}


/* Imágenes */

.about-main-image img,
.before-image img {

    aspect-ratio: 1 / .82;

}


/* Títulos */

.about-main-content h2,
.before-content h2 {

    margin-bottom: 18px;

    color: var(--primary);

    font-size: clamp(
        2rem,
        4vw,
        3rem
    );

}


/* Listas */

.about-check-list,
.before-list {

    display: grid;

    gap: 12px;

    margin-top: 25px;

}


.about-check,
.before-item {

    display: grid;

    grid-template-columns:
        34px
        minmax(0, 1fr);

    gap: 10px;

    align-items: center;

}


.about-check > span,
.before-item > span {

    width: 34px;
    height: 34px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


.about-check p,
.before-item p {

    margin: 0;

    color: var(--text);

    font-size: .96rem;

}


/* =========================================================
   VALUES
   ========================================================= */

.values-section {

    background: var(--bg);

}


.values-grid {

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 22px;

}


.value-card {

    padding: 28px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 16px;

    box-shadow: var(--shadow-sm);

}


.value-icon {

    width: 44px;
    height: 44px;

    display: grid;

    place-items: center;

    margin-bottom: 18px;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


.value-card h3 {

    margin-bottom: 10px;

    color: var(--primary);

}


.value-card p {

    margin-bottom: 0;

}


/* =========================================================
   ABOUT CTA
   ========================================================= */

.about-cta {

    padding: 68px 0;

}


.about-cta-box {

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(300px, .8fr);

    align-items: center;

    gap: 40px;

    padding: 42px;

    background: var(--bg);

    border: 1px solid var(--border);

    border-radius: 20px;

}


.about-cta-content h2 {

    color: var(--primary);

    font-size: clamp(
        2rem,
        4vw,
        2.8rem
    );

}


.about-cta-image img {

    aspect-ratio: 16 / 10;

}


/* =========================================================
   11. REQUISITOS
   ========================================================= */

.requirements-section,
.requirements-process,
.requirements-cta {

    padding: 68px 0;

}


/* Grid de requisitos */

.requirements-grid {

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap:20px;

    width: 100%;

}


/* Tarjeta */

.requirement-card {

    min-width: 0;

    width: 100%;

    padding: 26px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 16px;

    box-shadow: var(--shadow-sm);

    overflow: hidden;

}


/* Parte superior */

.requirement-top {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 12px;

    margin-bottom: 20px;

}


/* Elementos centrados */

.requirement-number,
.requirement-icon {

    display: grid;

    place-items: center;

}


/* Número */

.requirement-number {

    width: 42px;
    height: 42px;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


/* Icono */

.requirement-icon {

    min-width: 42px;

    height: 42px;

    padding-inline: 10px;

    background: var(--primary);

    color: #fff;

    border-radius: 50%;

    font-size: .9rem;

    font-weight: 800;

}


.requirement-card h3 {

    margin-bottom: 10px;

    color: var(--primary);

    font-size: 1.15rem;

    line-height: 1.3;

}


.requirement-card p {

    margin-bottom: 0;

}


/* =========================================================
   REQUISITOS — PROCESO
   ========================================================= */

.requirements-process {

    background: var(--bg);

}


/* En escritorio permanecen cuatro columnas */

.requirements-process .process-grid {

    grid-template-columns:
        repeat(4, minmax(0, 1fr));

    width: 100%;

}


/*
   Regla específica para evitar que
   otro .process-grid imponga columnas.
*/

.requirements-process .process-card {

    min-width: 0;

    width: 100%;

}


/* Línea */

.process-line {

    height: 1px;

    width: 100%;

    margin: 0 0 18px;

    background: var(--border);

}


/* =====================================================
   CTA DE REQUISITOS Y CONTACTO
   ===================================================== */

.requirements-cta-box,
.contact-cta-box {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 30px;

    padding: 40px;

    background: var(--bg);

    border: 1px solid var(--border);

    border-radius: 20px;

}


.requirements-cta-box h2,
.contact-cta-box h2 {

    margin-bottom: 10px;

    color: var(--primary);

}


/* =========================================================
   12. CONTACTO
   ========================================================= */

.contact-hero-buttons {

    display: flex;

    flex-wrap: wrap;

    gap: 14px;

    margin-top: 28px;

}


.contact-info-section,
.contact-form-section,
.contact-faq,
.contact-cta {

    padding: 68px 0;

}


/* =====================================================
   TARJETAS DE CONTACTO
   ===================================================== */

.contact-cards {

    display: grid;

    grid-template-columns:
        repeat(3, minmax(0, 1fr));

    gap: 20px;

}


.contact-info-card {

    min-width: 0;

    padding: 28px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 16px;

    box-shadow: var(--shadow-sm);

}


.contact-card-icon {

    width: 46px;
    height: 46px;

    display: grid;

    place-items: center;

    margin-bottom: 18px;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


.contact-card-label {

    display: block;

    margin-bottom: 7px;

    color: var(--light);

    font-size: .9rem;

    font-weight: 700;

}


.contact-info-card h3 {

    margin-bottom: 10px;

    color: var(--primary);

    font-size: 1.12rem;

    overflow-wrap: anywhere;

}


.contact-info-card p {

    margin-bottom: 18px;

}


.contact-info-card > a {

    color: var(--primary-light);

    font-weight: 700;

}


.contact-schedule {

    display: inline-block;

    color: var(--primary);

    font-weight: 700;

}


/* =====================================================
   FORMULARIO DE CONTACTO
   ===================================================== */

.contact-form-section {

    background: var(--bg);

}


.contact-form-layout {

    display: grid;

    grid-template-columns:
        minmax(0, .85fr)
        minmax(0, 1.15fr);

    align-items: start;

    gap: 36px;

}


.contact-form-info h2 {

    margin-bottom: 16px;

    color: var(--primary);

    font-size: clamp(
        2rem,
        4vw,
        2.8rem
    );

}


.contact-form-benefits {

    display: grid;

    gap: 12px;

    margin: 25px 0;

}


.contact-form-benefits > div {

    display: grid;

    grid-template-columns:
        30px
        minmax(0, 1fr);

    align-items: center;

    gap: 10px;

}


.contact-form-benefits span {

    width: 30px;
    height: 30px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 50%;

    font-weight: 800;

}


.contact-form-benefits p {

    margin: 0;

    color: var(--text);

}


/* =====================================================
   WHATSAPP — CONTACTO
   ===================================================== */

.whatsapp-contact {

    display: grid;

    grid-template-columns:
        44px
        minmax(0, 1fr)
        auto;

    align-items: center;

    gap: 12px;

    margin-top: 25px;

    padding: 16px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 14px;

}


.whatsapp-contact strong {

    display: block;

    color: var(--primary);

}


.whatsapp-contact span {

    color: var(--muted);

    font-size: .9rem;

}


.whatsapp-contact b {

    color: var(--primary-light);

}


/* =====================================================
   TARJETA DEL FORMULARIO
   ===================================================== */

.contact-form-card {

    min-width: 0;

    padding: 32px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 18px;

    box-shadow: var(--shadow-md);

}


/* =====================================================
   FAQ
   ===================================================== */

.faq-grid {

    max-width: 900px;

    margin-inline: auto;

    display: grid;

    gap: 12px;

}


.faq-item {

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 12px;

    overflow: hidden;

}


.faq-item summary {

    padding: 18px 20px;

    color: var(--primary);

    font-weight: 700;

    cursor: pointer;

    list-style: none;

}


.faq-item summary::-webkit-details-marker {

    display: none;

}


.faq-item p {

    margin: 0;

    padding: 0 20px 20px;

}


/* =========================================================
   13. FORMULARIOS GENERALES
   =========================================================

   contacto.html
       utiliza .form-group

   solicitud.html
       utiliza .input-group

   Las dos estructuras se mantienen separadas.
   ========================================================= */


/* Filas */

.form-row {

    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 20px;

}


/* Grupo */

.form-group,
.input-group {

    min-width: 0;

    margin-bottom: 20px;

}


/* Etiquetas */

.form-group label,
.input-group label {

    display: block;

    margin-bottom: 8px;

    color: var(--text-dark);

    font-size: .95rem;

    font-weight: 650;

}


/* =====================================================
   CAMPOS
   ===================================================== */

.form-group input,
.form-group select,
.form-group textarea,
.input-group input,
.input-group select,
.input-group textarea {

    width: 100%;

    min-height: 50px;

    padding: 12px 14px;

    background: #fff;

    color: var(--text-dark);

    border: 1px solid #cbd9e7;

    border-radius: 9px;

    outline: none;

    font-size: 1rem;

    line-height: 1.4;

    transition:
        border-color .2s,
        box-shadow .2s;

}


/* Textarea */

.form-group textarea,
.input-group textarea {

    min-height: 140px;

    resize: vertical;

}


/* Placeholder */

.form-group input::placeholder,
.form-group textarea::placeholder,
.input-group input::placeholder,
.input-group textarea::placeholder {

    color: #8295aa;

    opacity: 1;

}


/* Focus */

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus,
.input-group input:focus,
.input-group select:focus,
.input-group textarea:focus {

    border-color: var(--primary-light);

    box-shadow:
        0 0 0 3px rgba(43, 115, 199, .12);

}


/* =====================================================
   AYUDAS DE FORMULARIO
   ===================================================== */

.form-note,
.input-help {

    display: block;

    margin-top: 8px;

    color: var(--light);

    font-size: .88rem;

    line-height: 1.5;

}


/* Botón de ancho completo */

.btn-full {

    width: 100%;

}


/* =========================================================
   14. SOLICITUD
   ========================================================= */


/* =====================================================
   ENCABEZADO DE SOLICITUD
   ===================================================== */

.application-header {

    padding: 52px 0 32px;

    background: var(--bg);

}


/* Contenedor del encabezado */

.application-heading {

    display: flex;

    align-items: flex-end;

    justify-content: space-between;

    gap: 30px;

}


/* Título */

.application-heading h1 {

    margin-bottom: 10px;

    color: var(--primary);

    font-size: clamp(
        2rem,
        4vw,
        3.2rem
    );

}


/* Descripción */

.application-heading p {

    margin-bottom: 0;

    max-width: 680px;

    font-size: 1.05rem;

}


/* Estado */

.application-status {

    flex: 0 0 auto;

    display: inline-flex;

    align-items: center;

    gap: 8px;

    padding: 10px 14px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 999px;

    color: var(--primary);

    font-size: .92rem;

    font-weight: 700;

    white-space: nowrap;

}


/* Punto de estado */

.status-dot {

    width: 9px;
    height: 9px;

    display: block;

    background: var(--success);

    border-radius: 50%;

}


/* =====================================================
   ÁREA GENERAL DEL FORMULARIO
   ===================================================== */

.application {

    padding: 46px 0 72px;

    background: var(--bg);

}


/* =====================================================
   LAYOUT:

   FORMULARIO + SIDEBAR
   ===================================================== */

.application-layout {

    display: grid;

    grid-template-columns:
        minmax(0, 1fr)
        minmax(280px, .36fr);

    align-items: start;

    gap: 28px;

}


/* =====================================================
   TARJETA PRINCIPAL DEL FORMULARIO
   ===================================================== */

.application-form {

    width: 100%;

    min-width: 0;

    padding: 36px;

    background: #fff;

    border: 1px solid var(--border);

    border-radius: 20px;

    box-shadow: var(--shadow-sm);

}


/* =====================================================
   SECCIONES INTERNAS DEL FORMULARIO
   ===================================================== */

.application-form .form-section {

    padding-bottom: 34px;

    margin-bottom: 34px;

    border-bottom: 1px solid var(--border);

}


/* Última sección */

.application-form .form-section:last-of-type {

    margin-bottom: 0;

    padding-bottom: 0;

    border-bottom: none;

}


/* =====================================================
   ENCABEZADO DE CADA SECCIÓN
   ===================================================== */

.form-section-title {

    display: flex;

    align-items: flex-start;

    gap: 14px;

    margin-bottom: 26px;

}


/* Número */

.form-number {

    width: 42px;
    height: 42px;

    flex: 0 0 42px;

    display: grid;

    place-items: center;

    background: var(--accent);

    color: var(--primary-light);

    border-radius: 10px;

    font-size: .9rem;

    font-weight: 800;

}


/* Título */

.form-section-title h2 {

    margin: 0 0 4px;

    color: var(--primary);

    font-size: 1.3rem;

    line-height: 1.25;

}


/* Descripción */

.form-section-title p {

    margin: 0;

    color: var(--muted);

    font-size: .93rem;

    line-height: 1.5;

}


/* =====================================================
   GRID DE CAMPOS
   ===================================================== */

.application-form .form-grid {

    display: grid;

    grid-template-columns:
        repeat(2, minmax(0, 1fr));

    gap: 20px;

}


/* =====================================================
   CAMPOS DEL FORMULARIO
   ===================================================== */

.input-group {

    min-width: 0;

    margin-bottom: 0;

}


.input-group label {

    display: block;

    margin-bottom: 8px;

    color: var(--text-dark);

    font-size: .95rem;

    font-weight: 650;

}


.input-group input,
.input-group select,
.input-group textarea {

    width: 100%;

    min-width: 0;

    min-height: 50px;

    padding: 12px 14px;

    background: #fff;

    color: var(--text-dark);

    border: 1px solid #cbd9e7;

    border-radius: 9px;

    outline: none;

    font-size: 1rem;

    line-height: 1.4;

    transition:
        border-color .2s ease,
        box-shadow .2s ease;

}


.input-group textarea {

    min-height: 140px;

    resize: vertical;

}


/* Placeholder */

.input-group input::placeholder,
.input-group textarea::placeholder {

    color: #8295aa;

    opacity: 1;

}


/* Focus */

.input-group input:focus,
.input-group select:focus,
.input-group textarea:focus {

    border-color: var(--primary-light);

    box-shadow:
        0 0 0 3px
        rgba(43, 115, 199, .12);

}


/* =====================================================
   CAMPO DE DINERO
   ===================================================== */

.input-money {

    position: relative;

}


.input-money > span {

    position: absolute;

    left: 14px;

    top: 50%;

    z-index: 1;

    transform: translateY(-50%);

    color: var(--light);

    pointer-events: none;

}


.input-money input {

    padding-left: 32px;

}


/* =====================================================
   CONFIRMACIÓN
   ===================================================== */

.form-confirmation {

    margin-top: 28px;

    padding: 16px;

    background: var(--bg);

    border: 1px solid var(--border);

    border-radius: 12px;

}


/* Checkbox */

.checkbox {

    display: grid;

    grid-template-columns:
        20px
        minmax(0, 1fr);

    gap: 10px;

    align-items: start;

    color: var(--text);

    font-size: .95rem;

    line-height: 1.55;

}


.checkbox input {

    width: 18px;

    height: 18px;

    margin-top: 3px;

}


/* =====================================================
   BOTÓN FINAL DEL FORMULARIO
   ===================================================== */

.form-submit {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 22px;

    margin-top: 26px;

}


.form-submit strong {

    display: block;

    color: var(--primary);

}


.form-submit > div > span {

    color: var(--muted);

    font-size: .9rem;

}


.submit-button {

    flex: 0 0 auto;

}


.button-arrow {

    margin-left: 8px;

}


/* =========================================================
   15. RESPONSIVE — TABLET GRANDE
   ========================================================= */

@media (max-width: 1100px) {


    /* =====================================================
       HEADER
    ===================================================== */

    .menu {

        justify-content: flex-start;

    }


    .menu a {

        padding-inline: 8px;

        font-size: .91rem;

    }


    .header .btn {

        padding-inline: 14px;

        font-size: .91rem;

    }


    /* =====================================================
       TARJETAS
    ===================================================== */

    .services-grid,
    .values-grid,
    .contact-cards {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }


    /* =====================================================
       SOLICITUD
    ===================================================== */

    .application-layout {

        grid-template-columns:
            minmax(0, 1fr)
            300px;

    }


    /* =====================================================
       REQUISITOS
    ===================================================== */

    .requirements-grid,
    .requirements-process .process-grid {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

        gap: 18px;

    }


    /* =====================================================
       PROCESS GENERAL
    ===================================================== */

    .process-grid {

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

        gap: 18px;

    }


    .process-card {

        min-width: 0;

        width: 100%;

    }

}


/* =========================================================
   16. RESPONSIVE — TABLET
   ========================================================= */

@media (max-width: 900px) {

    :root {

        --header-height: 70px;

    }


    /* =====================================================
       HEADER
    ===================================================== */

    .header .container.nav {

        min-height: 70px;

        gap: 10px;

    }


    .logo {

        font-size: 1.18rem;

    }


    .logo-icon {

        width: 38px;
        height: 38px;

        flex-basis: 38px;

    }


    .menu {

        justify-content: flex-start;

        /*
           Los enlaces nunca deben aplastarse.
        */

        flex: 1 1 0;

        min-width: 0;

    }


    .menu a {

        padding: 9px 8px;

        font-size: .9rem;

    }


    .header .btn {

        min-height: 44px;

        padding: 10px 13px;

        font-size: .86rem;

    }


    /* =====================================================
       HEROES
    ===================================================== */

    .hero,
    .about-hero-grid,
    .about-home-content,
    .about-main-grid,
    .requirements-hero-grid,
    .before-grid,
    .contact-hero-grid {

        grid-template-columns: 1fr;

        gap: 42px;

    }


    .hero-content,
    .about-hero-content,
    .requirements-hero-content,
    .contact-hero-content {

        max-width: 760px;

    }


    .hero-image,
    .about-hero-image,
    .requirements-hero-image,
    .contact-hero-image,
    .before-image,
    .about-main-image {

        width: min(
            100%,
            720px
        );

        margin-inline: auto;

    }


    /* Tarjetas flotantes */

    .hero-image-card,
    .about-floating-card,
    .requirements-floating-card,
    .contact-hero-card {

        left: 20px;

    }


    /* =====================================================
       SOLICITUD
    ===================================================== */

    .application-layout {

        grid-template-columns: 1fr;

        gap: 24px;

    }


    .application-sidebar {

        position: static;

        display: grid;

        grid-template-columns:
            repeat(2, minmax(0, 1fr));

    }


    .sidebar-security {

        grid-column: 1 / -1;

    }


    /* =====================================================
       CONTACTO
    ===================================================== */

    .contact-form-layout {

        grid-template-columns: 1fr;

    }

}


/* =========================================================
   17. RESPONSIVE — TABLET PEQUEÑA
   ========================================================= */

@media (max-width: 760px) {


    /*
       PROCESO

       Los cuatro elementos pasan a una sola
       columna para evitar compresión.
    */

    .process-grid,
    .requirements-process .process-grid {

        grid-template-columns: 1fr !important;

        gap: 16px;

        width: 100%;

    }


    .process-card {

        width: 100%;

        min-width: 0;

        min-height: auto;

        padding: 24px 22px;

    }


    /* =====================================================
       REQUISITOS
    ===================================================== */

    .requirements-grid {

        grid-template-columns: 1fr;

        gap: 16px;

    }


    .requirement-card {

        width: 100%;

        min-width: 0;

    }

}


/* =========================================================
   18. RESPONSIVE — MÓVIL
   ========================================================= */

@media (max-width: 700px) {


    /* =====================================================
       CONTENEDORES
    ===================================================== */

    .container,
    .header .container.nav,
    .hero {

        width: min(
            calc(100% - 28px),
            var(--container)
        );

    }


    /* =====================================================
       SECCIONES
    ===================================================== */

    .hero,
    .about-hero,
    .about-section,
    .values-section,
    .requirements-hero,
    .requirements-section,
    .requirements-process,
    .before-section,
    .contact-hero,
    .contact-info-section,
    .contact-form-section,
    .contact-faq,
    .contact-cta,
    .requirements-cta,
    .about-cta,
    .services,
    .process {

        padding-top: 52px;

        padding-bottom: 52px;

    }


    /* =====================================================
       TÍTULOS
    ===================================================== */

    .hero h1,
    .about-hero-content h1,
    .requirements-hero-content h1,
    .contact-hero-content h1 {

        font-size: clamp(
            2.25rem,
            10vw,
            3.25rem
        );

    }


    /* =====================================================
       TEXTOS
    ===================================================== */

    .hero-content > p,
    .about-hero-content p,
    .requirements-hero-content p,
    .contact-hero-content p {

        font-size: 1.05rem;

    }


    /* =====================================================
       BOTONES
    ===================================================== */

    .hero-buttons,
    .contact-hero-buttons {

        display: grid;

        grid-template-columns: 1fr;

    }


    .hero-buttons > a,
    .contact-hero-buttons > a {

        width: 100%;

    }


    /* =====================================================
       GRIDS DE TARJETAS
    ===================================================== */

    .services-grid,
    .values-grid,
    .contact-cards,
    .process-grid,
    .requirements-process .process-grid,
    .requirements-grid {

        grid-template-columns: 1fr !important;

    }


    /* =====================================================
       TARJETAS
    ===================================================== */

    .service-content,
    .value-card,
    .requirement-card,
    .contact-info-card,
    .sidebar-card {

        padding: 24px;

    }


    /* =====================================================
       CTA
    ===================================================== */

    .about-cta-box,
    .requirements-cta-box,
    .contact-cta-box {

        display: grid;

        grid-template-columns: 1fr;

        padding: 28px;

    }


    .requirements-cta-box .btn,
    .contact-cta-box .btn {

        width: 100%;

    }


    /* =====================================================
       SOLICITUD
    ===================================================== */

    .application-header {

        padding: 36px 0 24px;

    }


    .application-heading {

        display: grid;

        gap: 20px;

    }


    .application-status {

        justify-self: start;

    }


    .application {

        padding: 30px 0 52px;

    }


    /*
       Se conserva el espacio interno
       del formulario.
    */

    .application-form {

        width: 100%;

        padding: 26px 20px;

        border-radius: 16px;

    }


    /* Campos en una sola columna */

    .application-form .form-grid,
    .form-row {

        grid-template-columns: 1fr;

        gap: 0;

    }


    .application-form .form-section {

        padding-bottom: 28px;

        margin-bottom: 28px;

    }


    /* Botón */

    .form-submit {

        align-items: stretch;

        flex-direction: column;

    }


    .submit-button {

        width: 100%;

    }


    /* Sidebar */

    .application-sidebar {

        grid-template-columns: 1fr;

    }


    .sidebar-security {

        grid-column: auto;

    }


    /* Formulario de contacto */

    .contact-form-card {

        padding: 24px 20px;

    }


    /* =====================================================
       FOOTER
    ===================================================== */

    .footer-content {

        align-items: flex-start;

        flex-direction: column;

    }

}


/* =========================================================
   19. MÓVILES PEQUEÑOS
   ========================================================= */

@media (max-width: 560px) {

    :root {

        --header-height: 64px;

    }


    /* =====================================================
       HEADER
    ===================================================== */

    .header .container.nav {

        min-height: 64px;

        width: calc(100% - 20px);

        gap: 8px;

    }


    .logo {

        font-size: 1.05rem;

        gap: 7px;

    }


    .logo-icon {

        width: 34px;
        height: 34px;

        flex-basis: 34px;

        border-radius: 8px;

    }


    /*
       Oculta el CTA del header para evitar
       comprimir el menú.
    */

    .header .btn {

        display: none;

    }


    .menu {

        justify-content: flex-start;

        overflow-x: auto;

        flex: 1 1 0;

        min-width: 0;

    }


    .menu a {

        padding: 8px 7px;

        font-size: .9rem;

        flex: 0 0 auto;

    }


    /* =====================================================
       TIPOGRAFÍA
    ===================================================== */

    body,
    p {

        font-size: 1rem;

    }


    .tag,
    .hero-badge,
    .section-label {

        font-size: .86rem;

    }


    /* =====================================================
       IMÁGENES Y TARJETAS FLOTANTES
    ===================================================== */

    .hero-image-card,
    .about-floating-card,
    .requirements-floating-card,
    .contact-hero-card {

        position: relative;

        left: auto;

        bottom: auto;

        width: calc(100% - 24px);

        margin: -28px auto 0;

    }


    .hero-image > img,
    .about-hero-image > img,
    .requirements-hero-image > img,
    .contact-hero-image > img {

        aspect-ratio: 1 / .78;

    }


    /* =====================================================
       CTA
    ===================================================== */

    .about-cta-box,
    .requirements-cta-box,
    .contact-cta-box {

        padding: 24px 20px;

    }


    /* =====================================================
       FORMULARIO SOLICITUD
    ===================================================== */

    .application-form {

        padding: 22px 16px;

    }


    .form-section-title {

        gap: 11px;

    }


    .form-number {

        width: 38px;
        height: 38px;

        flex-basis: 38px;

    }


    .form-section-title h2 {

        font-size: 1.18rem;

        line-height: 1.3;

    }


    .form-section-title p {

        font-size: .95rem;

    }


    .form-group input,
    .form-group select,
    .form-group textarea,
    .input-group input,
    .input-group select,
    .input-group textarea {

        min-height: 50px;

        font-size: 1rem;

    }


    .contact-form-card {

        padding: 22px 16px;

    }


    /* =====================================================
       WHATSAPP
    ===================================================== */

    .whatsapp-float {

        right: 14px;

        bottom: 14px;

        width: 58px;

        height: 58px;

        max-width: 58px;

        justify-content: center;

        padding: 7px;

        border-radius: 50%;

    }


    .whatsapp-text {

        display: none;

    }

}


/* =========================================================
   20. TELÉFONOS MUY PEQUEÑOS
   ========================================================= */

@media (max-width: 380px) {


    .container,
    .hero {

        width: calc(100% - 22px);

    }


    .menu a {

        font-size: .86rem;

        padding-inline: 6px;

    }


    .hero h1,
    .about-hero-content h1,
    .requirements-hero-content h1,
    .contact-hero-content h1 {

        font-size: 2.15rem;

    }


    .application-form {

        padding-inline: 14px;

    }


    /*
       Evita que los títulos del proceso
       se vuelvan demasiado pequeños.
    */

    .process-card h3 {

        font-size: 1.15rem;

        line-height: 1.35;

    }


    .process-card p {

        font-size: 1rem;

        line-height: 1.6;

    }

}


/* =========================================================
   21. ACCESIBILIDAD — FOCUS
   ========================================================= */

:focus-visible {

    outline:
        3px solid rgba(43, 115, 199, .35);

    outline-offset: 2px;

}


/* =========================================================
   22. REDUCIR ANIMACIONES
   ========================================================= */

@media (prefers-reduced-motion: reduce) {

    html {

        scroll-behavior: auto;

    }


    *,
    *::before,
    *::after {

        animation-duration: .01ms !important;

        animation-iteration-count: 1 !important;

        transition-duration: .01ms !important;

        scroll-behavior: auto !important;

    }

}


/* =========================================================
   23. IMPRESIÓN
   ========================================================= */

@media print {

    .header,
    .whatsapp-float,
    .hero-buttons,
    .contact-hero-buttons {

        display: none !important;

    }


    body {

        background: #fff;

    }


    section,
    .hero {

        padding: 20px 0 !important;

    }

}


/* =========================================================
   24. ENLACE DE CONTACTO — SIDEBAR
   ========================================================= */

.sidebar-link {

    display: flex;

    align-items: center;

    justify-content: space-between;

    gap: 16px;

    width: 100%;

    margin-top: 22px;

    padding: 15px 16px;

    color: var(--primary);

    background: var(--accent);

    border: 1px solid var(--accent-strong);

    border-radius: 10px;

    font-size: .95rem;

    font-weight: 700;

    line-height: 1.3;

    transition:
        background-color .2s ease,
        border-color .2s ease,
        transform .2s ease,
        box-shadow .2s ease;

}


/* =====================================================
   FLECHA DEL ENLACE
   ===================================================== */

.sidebar-link span {

    display: flex;

    align-items: center;

    justify-content: center;

    width: 30px;

    height: 30px;

    flex: 0 0 30px;

    background: #fff;

    border-radius: 50%;

    color: var(--primary-light);

    font-size: 1.1rem;

    line-height: 1;

    transition:
        transform .2s ease,
        background-color .2s ease;

}


/* Hover */

.sidebar-link:hover {

    background: var(--accent-strong);

    border-color: #c8dced;

    transform: translateY(-1px);

    box-shadow: var(--shadow-sm);

}


.sidebar-link:hover span {

    background: var(--primary);

    color: #fff;

    transform: translateX(3px);

}


/* =========================================================
   25. MENSAJES Y ERRORES DE FORMULARIOS
   ========================================================= */


/* =====================================================
   MENSAJE GENERAL
   ===================================================== */

.form-message {

    display: none;

    width: 100%;

    margin-top: 20px;

    padding: 15px 18px;

    border-radius: 10px;

    font-size: 15px;

    line-height: 1.5;

    font-weight: 600;

    box-sizing: border-box;

}


/* =====================================================
   MENSAJE DE ÉXITO
   ===================================================== */

.form-message.success {

    display: block;

    background: #eaf7ef;

    border: 1px solid #b9e5c8;

    color: #176b35;

}


/* =====================================================
   MENSAJE DE ERROR
   ===================================================== */

.form-message.error {

    display: block;

    background: #fff1f1;

    border: 1px solid #f0c2c2;

    color: #a52828;

}


/* =====================================================
   ERROR DE UN CAMPO
   ===================================================== */

.input-error {

    display: block;

    margin-top: 7px;

    color: #b42318;

    font-size: 13px;

    line-height: 1.4;

    font-weight: 600;

}


/* =====================================================
   CAMPO CON ERROR
   ===================================================== */

.input-error-field {

    border-color: #d92d20 !important;

    box-shadow:
        0 0 0 3px rgba(217, 45, 32, .08) !important;

}


/* =====================================================
   FOCUS DE CAMPO CON ERROR
   ===================================================== */

.input-error-field:focus {

    border-color: #d92d20 !important;

    box-shadow:
        0 0 0 3px rgba(217, 45, 32, .12) !important;

    outline: none;

}


/* =====================================================
   RESPONSIVE — MENSAJES
   ===================================================== */

@media (max-width: 560px) {

    .form-message {

        margin-top: 18px;

        padding: 14px 15px;

        font-size: 14px;

    }


    .input-error {

        font-size: 12.5px;

    }

}


/* =========================================================
   26. MENSAJE DEL FORMULARIO
   =========================================================

   Esta última regla mantiene el mensaje
   separado del contenido inferior del formulario.
   ========================================================= */

.form-message {

    display: none;

    width: 100%;

    margin-bottom: 24px;

    padding: 16px 18px;

    border-radius: 12px;

    font-size: 15px;

    line-height: 1.5;

    font-weight: 600;

}


/* Mensaje mostrado correctamente */

.form-message.success {

    display: block;

    color: #155724;

    background: #e9f7ef;

    border: 1px solid #b7e4c7;

}
.form-honeypot { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); }
