/* =========================================================================
 * Brand North — Layout primitives
 * Containers + section scaffold + responsive grid helpers.
 * ========================================================================= */

/* ---------- Container variants ------------------------------------------- */
.bn-container {
  width: 100%;
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.bn-container--narrow  { max-width: var(--container-narrow); }
.bn-container--default { max-width: var(--container-default); }
.bn-container--wide    { max-width: var(--container-wide); }
.bn-container--bleed   { max-width: none; padding-inline: 0; }

/* ---------- Section scaffold --------------------------------------------- */
.bn-section {
  position: relative;
  padding-block: var(--section-pad-y);
  isolation: isolate;
}

.bn-section--md    { padding-block: var(--section-pad-y-md); }
.bn-section--sm    { padding-block: var(--section-pad-y-sm); }

.bn-section--bleed { padding-inline: 0; }

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

.bn-section--cream {
  background-color: var(--bn-bone-2);
  color: var(--bn-ink);
}

.bn-section--cream .bn-text-secondary { color: var(--bn-mute-2); }
.bn-section--cream .bn-text-tertiary  { color: var(--bn-mute); }
.bn-section--cream .bn-mono-label,
.bn-section--cream .bn-mono-micro {
  color: var(--bn-mute);
}

/* Section header: § XX / LABEL ------------------------------------------- */
.bn-section-label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
  font-family: var(--font-mono);
  font-size: var(--fs-mono-label);
  line-height: 1;
  font-weight: var(--fw-medium);
  letter-spacing: var(--tracking-wider);
  text-transform: uppercase;
  color: var(--bn-text-mono-label);
}

.bn-section-label__num,
.bn-section-label__text {
  display: inline-block;
}

.bn-section-label__divider {
  color: var(--bn-text-tertiary);
  opacity: 0.6;
}

/* Section header layout block -------------------------------------------- */
.bn-section-header {
  max-width: 720px;
  margin-bottom: var(--space-8);
}

.bn-section-header--centered {
  margin-inline: auto;
  text-align: center;
}

.bn-section-header__intro {
  margin-top: var(--space-4);
  color: var(--bn-text-secondary);
}

/* ---------- Grid helpers ------------------------------------------------- */
.bn-grid {
  display: grid;
  gap: var(--space-5);
}

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

@media (max-width: 1024px) {
  .bn-grid--4,
  .bn-grid--5 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bn-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

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

/* ---------- Stack / flow helpers ----------------------------------------- */
.bn-stack { display: flex; flex-direction: column; }
.bn-stack--xs  > * + * { margin-top: var(--space-2); }
.bn-stack--sm  > * + * { margin-top: var(--space-4); }
.bn-stack--md  > * + * { margin-top: var(--space-5); }
.bn-stack--lg  > * + * { margin-top: var(--space-7); }
.bn-stack--xl  > * + * { margin-top: var(--space-9); }

.bn-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-4);
}

.bn-row--between { justify-content: space-between; }
.bn-row--center  { justify-content: center; }

.bn-button-row {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  margin-top: var(--space-6);
}

/* ---------- Inset / measure ---------------------------------------------- */
.bn-measure     { max-width: 64ch; }
.bn-measure-md  { max-width: 52ch; }
.bn-measure-sm  { max-width: 44ch; }

/* ---------- Divider ------------------------------------------------------ */
.bn-divider {
  display: block;
  width: 100%;
  height: 1px;
  background-color: var(--bn-border-subtle);
  border: 0;
  margin-block: var(--space-7);
}

.bn-divider--brand {
  position: relative;
  background: transparent;
  height: 16px;
  margin-block: var(--space-8);
}

.bn-divider--brand::before {
  content: '';
  position: absolute;
  inset: 7px 0;
  height: 1px;
  background: var(--bn-border-subtle);
}

.bn-divider--brand::after {
  content: '';
  position: absolute;
  inset-inline: 50%;
  width: 48px;
  height: 16px;
  transform: translateX(-50%);
  background-color: var(--bn-bg);
  background-image: linear-gradient(90deg,
    var(--bn-ember) 0%, var(--bn-ember) 22%,
    transparent 22%, transparent 38%,
    var(--bn-ember) 38%, var(--bn-ember) 60%,
    transparent 60%, transparent 78%,
    var(--bn-ember) 78%, var(--bn-ember) 100%);
  -webkit-mask-image: linear-gradient(0deg, transparent 0%, black 50%, transparent 100%);
          mask-image: linear-gradient(0deg, transparent 0%, black 50%, transparent 100%);
}

/* ---------- Aspect helpers ----------------------------------------------- */
.bn-aspect-16-9 { aspect-ratio: 16 / 9; }
.bn-aspect-4-3  { aspect-ratio: 4 / 3; }
.bn-aspect-1-1  { aspect-ratio: 1 / 1; }
.bn-aspect-3-4  { aspect-ratio: 3 / 4; }
