/* ============================================================
   LAYOUT — contenedores, grid, secciones
   ============================================================ */

/* ── Contenedor principal ────────────────────────────────────── */

.container {
  width: 100%;
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--container-padding);
}

.container--narrow {
  max-width: 760px;
}

.container--wide {
  max-width: 1400px;
}

/* ── Sección base ────────────────────────────────────────────── */

.section {
  padding-block: var(--section-padding);
}

.section--white  { background-color: var(--white); }
.section--light  { background-color: var(--neutral-50); }
.section--dark   { background-color: var(--dark-900); }
.section--brand  { background-color: var(--brand-primary); }

/* ── Grid system ─────────────────────────────────────────────── */

.grid {
  display: grid;
  gap: var(--space-6);
}

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

/* Auto-fill responsive grids */
.grid-auto-sm {
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}

.grid-auto-md {
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
}

/* ── Flex utilities ──────────────────────────────────────────── */

.flex        { display: flex; }
.flex-col    { flex-direction: column; }
.flex-center { align-items: center; justify-content: center; }
.flex-between{ align-items: center; justify-content: space-between; }
.flex-start  { align-items: center; justify-content: flex-start; }
.flex-wrap   { flex-wrap: wrap; }
.gap-2  { gap: var(--space-2); }
.gap-3  { gap: var(--space-3); }
.gap-4  { gap: var(--space-4); }
.gap-6  { gap: var(--space-6); }
.gap-8  { gap: var(--space-8); }
.gap-12 { gap: var(--space-12); }

/* ── Encabezado de sección ───────────────────────────────────── */

.section-header {
  margin-bottom: clamp(var(--space-10), 5vw, var(--space-16));
}

.section-header--center {
  text-align: center;
  max-width: 640px;
  margin-inline: auto;
  margin-bottom: clamp(var(--space-10), 5vw, var(--space-16));
}

.section-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  color: var(--brand-primary);
}

.section-label::before {
  content: '';
  display: inline-block;
  width: 1.5rem;
  height: 1px;
  background-color: currentColor;
}

/* ── Responsive breakpoints ──────────────────────────────────── */
/*
  Mobile:  < 640px   (base, sin media query)
  Tablet:  >= 640px  (sm)
  Tablet+: >= 768px  (md)
  Desktop: >= 1024px (lg)
  Wide:    >= 1280px (xl)
*/

@media (max-width: 639px) {
  .grid-2,
  .grid-3,
  .grid-4 {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 640px) and (max-width: 1023px) {
  .grid-3,
  .grid-4 {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ── Utilidades de visibilidad responsive ────────────────────── */

.hide-mobile  { display: none; }
.hide-desktop { display: block; }

@media (min-width: 1024px) {
  .hide-mobile  { display: block; }
  .hide-desktop { display: none; }
}

/* ── Separador decorativo ────────────────────────────────────── */

.divider {
  width: 3rem;
  height: 2px;
  background-color: var(--brand-primary);
  border: none;
  margin-block: var(--space-6);
}

.divider--center {
  margin-inline: auto;
}
