/* ============================================================
   LAYER 3 — OBJECTS
   Structure only: wrappers, bands, inset panels and the bento
   mosaic. No cosmetics beyond what the layout needs.
   ============================================================ */

.o-wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: var(--sp-5);
}

.o-prose { max-width: var(--wrap-narrow); }

/* Full-width tinted band -------------------------------------- */
.o-band {
  padding-block: var(--sp-8);
}

.o-band--tint { background: var(--c-band); }
.o-band--soft { background: linear-gradient(180deg, #f9f9fc 0%, var(--c-band) 100%); }
.o-band--ink { background: var(--c-band-deep); color: var(--c-on-dark); }
.o-band--tight { padding-block: var(--sp-7); }

.o-band--ink h2,
.o-band--ink h3 { color: var(--c-on-dark); }

.o-band--ink p { color: var(--c-on-dark-dim); }

.o-band + .o-band { border-top: var(--hairline); }
.o-band--ink + .o-band,
.o-band + .o-band--ink { border-top: 0; }

/* Inset panel that sits within a band ------------------------- */
.o-panel {
  min-width: 0;
  background: var(--c-tile);
  border: var(--hairline);
  border-radius: var(--radius-tile);
  padding: var(--sp-6);
}

.o-panel--flush { padding: var(--sp-5); }

.o-band--ink .o-panel {
  background: #1d1d25;
  border-color: #32323d;
}

/* Bento mosaic ------------------------------------------------ */
.o-bento {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: var(--sp-4);
}

.o-bento > * { grid-column: span 6; }

/* Simple grids ------------------------------------------------ */
.o-grid {
  display: grid;
  gap: var(--sp-4);
  grid-template-columns: 1fr;
}

.o-split {
  display: grid;
  gap: var(--sp-6);
  grid-template-columns: 1fr;
  align-items: start;
}

.o-stack > * + * { margin-top: var(--sp-4); }

.o-cluster {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2);
  align-items: center;
}

/* Section head ------------------------------------------------ */
.o-head {
  max-width: 68ch;
  margin-bottom: var(--sp-6);
}

.o-head p { color: var(--c-ink-70); font-size: var(--fs-lead); margin-bottom: 0; }

.o-band--ink .o-head p { color: var(--c-on-dark-dim); }

/* Hairline rule used as the site's divider -------------------- */
.o-rule {
  border: 0;
  border-top: var(--hairline);
  margin: var(--sp-6) 0;
}

@media (min-width: 640px) {
  .o-grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .o-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 900px) {
  .o-wrap { padding-inline: var(--sp-6); }
  .o-band { padding-block: var(--sp-9); }
  .o-band--tight { padding-block: var(--sp-8); }
  .o-panel { padding: var(--sp-7); }
  .o-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .o-grid--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .o-split--sidebar { grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); }
  .o-split--even { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .o-split--media { grid-template-columns: minmax(0, 1fr) minmax(0, 0.7fr); gap: var(--sp-7); align-items: center; }

  .o-bento > .u-span-1 { grid-column: span 1; }
  .o-bento > .u-span-2 { grid-column: span 2; }
  .o-bento > .u-span-3 { grid-column: span 3; }
  .o-bento > .u-span-4 { grid-column: span 4; }
  .o-bento > .u-span-6 { grid-column: span 6; }
}
