/* =========================
   MAIN / STACKING
========================= */

/* Mantiene el contenido y sus widgets debajo del header. */
main#main {
    position: relative;
    z-index: 1;
}


/* =========================
   CONTAINERS
   ========================= */

/* Contenedor principal: limita ancho a 1200px y centra el contenido */
.l-container {
    max-width: var(--container-wide);
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--container-padding);
    padding-right: var(--container-padding);
    width: 100%;
}

/* Variante para contenido de lectura (artículos) más estrecho */
.l-container--narrow {
    max-width: var(--container-width);
}


/* =========================
   SECTIONS (vertical rhythm)
   ========================= */

/* Espaciado vertical entre bloques del layout */
.l-section {
    margin-top: var(--section-spacing);
    margin-bottom: var(--section-spacing);
}


/* =========================
   GRID BASE
   ========================= */

/* Grid base con gap consistente */
.l-grid {
    display: grid;
    gap: var(--space-md);
}


/* =========================
   GRID PRESETS (mobile-first)
   ========================= */

/* En mobile: todo es 1 columna */
.l-grid--2,
.l-grid--3,
.l-grid--4 {
    grid-template-columns: 1fr;
}

/* A partir de tablet: activamos columnas */
@media (min-width:768px) {

    .l-grid--2 {
        grid-template-columns: repeat(2, 1fr);
    }

    .l-grid--3 {
        grid-template-columns: repeat(3, 1fr);
    }

    .l-grid--4 {
        grid-template-columns: repeat(4, 1fr);
    }

}


/* =========================
   GRID COLUMN SPANS
   ========================= */

/* En mobile: todos los elementos ocupan ancho completo */
.l-col-3,
.l-col-4,
.l-col-6 {
    grid-column: span 12;
}

/* En tablet+: se respetan proporciones del grid */
@media (min-width:768px) {

    .l-col-6 {
        grid-column: span 6;
    }

    .l-col-4 {
        grid-column: span 4;
    }

    .l-col-3 {
        grid-column: span 3;
    }

}


/* =========================
   STACK (vertical spacing automático)
   ========================= */

/* Aplica separación vertical uniforme entre hijos */
.l-stack>*+* {
    margin-top: var(--space-md);
}


/* =========================
   RESPONSIVE ADJUSTMENTS
   ========================= */

/* Aumenta padding del container en pantallas más grandes */
@media (min-width:768px) {

    .l-container {
        padding-left: var(--space-md);
        padding-right: var(--space-md);
    }

}