/* ============================================================
   LAYOUT — page wrapper, section, container, grids
   ============================================================ */

.page {
  background: var(--color-bg);
  color: var(--color-primary);
  font-family: var(--font-sans);
  border: 1px solid #D7D9DF;
}

.section {
  padding: var(--section-pad);
  border-top: 1px solid var(--color-border-strong);
}

.section--surface     { background: var(--color-surface); }
.section--bg          { background: var(--color-bg); }
.section--mint        { background: var(--color-surface-mint); }

.section--compact     { padding: var(--sp-3xl) var(--sp-xl); }
.section--narrow      { padding: var(--sp-4xl) var(--sp-xl); }

.container {
  max-width: var(--container);
  margin: 0 auto;
}

/* Section header — eyebrow + meta + h2 + lead */
.section-header {
  margin-bottom: var(--sp-3xl);
  max-width: 760px;
}

.section-header__num {
  margin-bottom: var(--sp-lg);
}

.section-header__eyebrow {
  margin-bottom: var(--sp-md);
}

.section-header__title {
  margin: 0 0 var(--sp-lg);
}

.section-header__lead {
  margin: 0;
}

/* Common 2/3/4 column grids */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; }

.grid--gapped-md   { gap: var(--sp-lg); }
.grid--gapped-lg   { gap: var(--sp-xl); }

/* Hairline-bordered grid (top + bottom black, vertical thin) */
.grid--hairline {
  border-top: 1px solid var(--color-border-strong);
  border-bottom: 1px solid var(--color-border-strong);
}
.grid--hairline > * + *  { border-left: 1px solid var(--color-border); }

/* Decorative dot-grid background */
.dotgrid-subtle {
  background-color: var(--color-bg);
  background-image: radial-gradient(circle, #C8CDC4 0.6px, transparent 0.6px);
  background-size: 14px 14px;
}

.dotgrid {
  background-color: var(--color-bg);
  background-image: radial-gradient(circle, var(--color-mint) 0.8px, transparent 0.8px);
  background-size: 16px 16px;
}
