/* ==========================================================================
 * 03-layout.css — structural primitives (no color, no type, no shadows)
 * --------------------------------------------------------------------------
 * LOADED BY  : src/templates/base.html, every page (3rd of six core files).
 * OWNS       : .ax-page / .ax-shell / .ax-stack / .ax-cluster / .ax-grid /
 *              .ax-split / .ax-sticky / .ax-scroll-x and the full-bleed
 *              main-content variant used by map/canvas pages.
 * RULE       : only display/position/grid/flex/gap/inline-size/block-size —
 *              never a color, border-color, font or shadow declaration.
 *              Bootstrap's grid (container/row/col-*) remains the sanctioned
 *              choice for ordinary page layout; these exist for patterns
 *              Bootstrap doesn't cover (sidebar+main split, sticky panels).
 * ========================================================================== */


.ax-page {
  max-width: var(--ax-content-max);
  margin-inline: auto;
  padding: var(--ax-space-6) var(--ax-space-4);
}

.ax-page--bleed {
  max-width: none;
  padding: 0;
  margin: 0;
}

.ax-main-flush {
  padding: 0;
  margin: 0;
}

.ax-stack {
  display: flex;
  flex-direction: column;
  gap: var(--ax-space-4);
}

.ax-stack--sm { gap: var(--ax-space-2); }
.ax-stack--lg { gap: var(--ax-space-6); }

.ax-cluster {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--ax-space-3);
}

.ax-grid {
  display: grid;
  gap: var(--ax-space-4);
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}

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

.ax-split {
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: var(--ax-space-5);
  align-items: start;
}

.ax-sticky {
  position: sticky;
  top: var(--ax-space-4);
}

.ax-scroll-x {
  overflow-x: auto;
}

@media (max-width: 992px) {
  .ax-split {
    grid-template-columns: 1fr;
  }
  .ax-grid--cols-3,
  .ax-grid--cols-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

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