/* ==========================================================
   REPORTES AsEp
   HOME.CSS
   Composición y distribución exclusiva de la página de inicio
   ========================================================== */

@import "../components/hero.css";
@import "../components/portal-card.css";


/* ==========================================================
   ESTRUCTURA DE PÁGINA
   El Home comparte la altura disponible con el footer.
   ========================================================== */

html,
body {
    min-height: 100%;
}

body:has(.home-page) {
    overflow-x: hidden;
}

body:has(.home-page) .app {
    height: 100dvh;
    min-height: 100dvh;

    display: flex;
    flex-direction: column;

    overflow: hidden;
}

body:has(.home-page) .app-main {
    position: relative;
    isolation: isolate;

    flex: 1 1 auto;

    min-height: 0;
    height: auto;

    overflow: hidden;
}

body:has(.home-page) .app-footer {
    position: relative;
    z-index: 20;

    flex: 0 0 auto;
}


/* ==========================================================
   HOME
   ========================================================== */

.home-page {
    position: relative;
    z-index: var(--z-normal);

    display: flex;
    align-items: center;
    justify-content: center;

    width: 100%;
    height: 100%;
    min-height: 0;

    padding:
        clamp(.55rem, 1.4vh, 1.1rem)
        clamp(.65rem, 1.5vw, 1.5rem);

    overflow: hidden;
}


/* ==========================================================
   HERO CARD
   ========================================================== */

/*
   El hero card debe sentirse como una superficie de vidrio.

   - No es una tarjeta opaca.
   - El fondo espacial debe poder percibirse.
   - Tiene suficiente borde para saber que existe.
   - No debe cortar las portal cards.
*/

.home-card {
    position: relative;
    z-index: var(--z-normal);

    display: flex;
    flex-direction: column;
    align-items: center;

    width: min(100%, 1240px);

    max-height: 100%;
    min-height: 0;

    margin: 0 auto;

    padding:
        clamp(.55rem, 1.5vh, 1.15rem)
        clamp(.75rem, 1.8vw, 1.5rem)
        clamp(.55rem, 1.3vh, 1rem);

    /*
       IMPORTANTE:
       No cortar las cards cuando sus elementos internos
       necesitan unos píxeles adicionales.
    */
    overflow: visible;

    border:
        1px solid
        var(--home-hero-border);

    border-radius:
        var(--home-hero-radius);

    background:
        var(--home-hero-background);

    box-shadow:
        var(--home-hero-shadow);

    backdrop-filter:
        blur(var(--home-hero-blur));

    -webkit-backdrop-filter:
        blur(var(--home-hero-blur));
}


/* ==========================================================
   HERO CARD — CAPA SUPERIOR
   ========================================================== */

.home-card::before {
    content: "";

    position: absolute;
    inset: 0;

    pointer-events: none;

    border-radius: inherit;

    background:
        var(--home-hero-highlight);

    opacity:
        var(--home-hero-highlight-opacity);
}

.home-card > * {
    position: relative;
    z-index: 1;
}


/* ==========================================================
   TEMA CLARO — HERO TRANSPARENTE
   ========================================================== */

/*
   Esta es la corrección importante.

   El fondo exterior debe poder verse claramente a través
   del hero card. La capa blanca es mínima y el blur también
   se reduce para no convertir el fondo en una mancha blanca.
*/

[data-theme="light"] .home-card {
    background:
        rgba(255, 255, 255, .045);

    border-color:
        rgba(255, 255, 255, .52);

    box-shadow:
        0 18px 45px rgba(15, 23, 42, .07),
        inset 0 1px 0 rgba(255, 255, 255, .16);

    backdrop-filter:
        blur(4px);

    -webkit-backdrop-filter:
        blur(4px);
}

[data-theme="light"] .home-card::before {
    background:
        linear-gradient(
            180deg,
            rgba(255, 255, 255, .055),
            transparent 38%
        );

    opacity: .35;
}


/* ==========================================================
   TEMA OSCURO
   ========================================================== */

[data-theme="dark"] .home-card {
    background:
        var(--home-hero-background);

    border:
        1px solid
        var(--home-hero-border);

    box-shadow:
        var(--home-hero-shadow);

    backdrop-filter:
        blur(var(--home-hero-blur));

    -webkit-backdrop-filter:
        blur(var(--home-hero-blur));
}


/* ==========================================================
   HERO
   ========================================================== */

.hero-section {
    position: relative;

    display: flex;
    flex: 0 0 auto;

    flex-direction: column;
    align-items: center;
    justify-content: flex-start;

    width: 100%;
    min-width: 0;

    padding: 0;

    text-align: center;
}


/* ==========================================================
   SEPARADOR
   ========================================================== */

.home-divider {
    flex: 0 0 auto;

    width:
        min(
            100%,
            1120px
        );

    height:
        var(--home-divider-width);

    margin:
        clamp(.3rem, .7vh, .6rem)
        auto
        clamp(.55rem, 1vh, .85rem);

    background:
        var(--home-divider);
}


/* ==========================================================
   GRID DE PORTALES
   ========================================================== */

.options-grid {
    display: grid;

    flex: 0 1 auto;

    grid-template-columns:
        repeat(
            2,
            minmax(0, 1fr)
        );

    align-items: stretch;

    width:
        min(
            100%,
            1100px
        );

    min-height: 0;

    gap:
        clamp(
            1rem,
            1.8vw,
            1.8rem
        );
}


/* ==========================================================
   ESCRITORIO CON POCA ALTURA
   ========================================================== */

@media (min-width: 769px) and (max-height: 850px) {

    .home-page {
        padding-block:
            .4rem;
    }

    .home-card {
        padding-top:
            .45rem;

        padding-bottom:
            .55rem;
    }

    .home-divider {
        margin-top:
            .2rem;

        margin-bottom:
            .45rem;
    }
}


/* ==========================================================
   ESCRITORIO MUY BAJO
   ========================================================== */

@media (min-width: 769px) and (max-height: 760px) {

    .home-card {
        padding-top:
            .35rem;

        padding-bottom:
            .45rem;
    }

    .hero-logo {
        margin-top:
            0;
    }

    .company-desc {
        margin-top:
            .3rem;
    }

    .option-link {
        padding-top:
            .95rem;

        padding-bottom:
            .8rem;
    }
}


/* ==========================================================
   TABLET
   ========================================================== */

@media (max-width: 1100px) {

    .home-card {
        width:
            min(
                100%,
                1000px
            );
    }

    .options-grid {
        width: 100%;

        gap:
            var(--portal-grid-gap-tablet);
    }
}


/* ==========================================================
   MÓVIL / TABLET
   ========================================================== */

@media (max-width: 768px) {

    body:has(.home-page) .app {
        height: auto;
        min-height: 100dvh;

        overflow: visible;
    }

    body:has(.home-page) .app-main {
        overflow-y: auto;
        overflow-x: hidden;
    }

    .home-page {
        height: auto;
        min-height: 100%;

        padding:
            .65rem
            .6rem
            1rem;

        overflow: visible;
    }

    .home-card {
        width: 100%;

        max-height: none;

        padding:
            .8rem
            .7rem
            1rem;
    }

    .options-grid {
        flex: 0 0 auto;

        grid-template-columns:
            1fr;

        width: 100%;

        gap:
            var(--portal-grid-gap-mobile);
    }
}


/* ==========================================================
   MÓVIL
   ========================================================== */

@media (max-width: 576px) {

    .home-page {
        padding-inline:
            .4rem;
    }

    .home-card {
        padding-inline:
            .55rem;

        border-radius:
            var(--home-hero-radius-mobile);
    }

    .home-divider {
        margin-bottom:
            .7rem;
    }
}


/* ==========================================================
   MÓVIL MUY PEQUEÑO
   ========================================================== */

@media (max-width: 380px) {

    .home-card {
        padding-inline:
            .35rem;
    }
}


/* ==========================================================
   REDUCCIÓN DE MOVIMIENTO
   ========================================================== */

@media (prefers-reduced-motion: reduce) {

    .hero-bg::before,
    .hero-bg::after,
    .hero-light,
    .hero-noise {
        animation: none !important;
    }
}