.o-container {
  width: min(100% - 2rem, var(--container));
  margin-inline: auto;
}

.o-stack > * + * {
  margin-top: var(--space-4);
}

.o-cluster {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.o-grid-2 {
  display: grid;
  gap: var(--space-5);
}

@media (min-width: 800px) {
  .o-grid-2 {
    grid-template-columns: 1fr 1fr;
  }
}

.o-bento {
  display: grid;
  gap: var(--space-4);
  grid-template-columns: 1fr;
}

@media (min-width: 900px) {
  .o-bento {
    grid-template-columns: repeat(12, 1fr);
  }

  .o-bento__wide {
    grid-column: span 8;
  }

  .o-bento__narrow {
    grid-column: span 4;
  }

  .o-bento__half {
    grid-column: span 6;
  }

  .o-bento__full {
    grid-column: 1 / -1;
  }
}

.o-section {
  padding-block: var(--space-7);
  position: relative;
}

.o-section--band {
  background: var(--color-band);
}

.o-section--curve {
  clip-path: ellipse(140% 100% at 50% 0%);
  padding-bottom: calc(var(--space-7) + 1.5rem);
  margin-bottom: -1rem;
}

.o-section--curve-alt {
  clip-path: ellipse(140% 100% at 50% 100%);
  padding-top: calc(var(--space-7) + 1.5rem);
  margin-top: -1rem;
}

.o-prose {
  max-width: 68ch;
}

.o-prose--wide {
  max-width: 78ch;
}

.o-media-frame {
  border: 1px solid var(--color-border);
  background: var(--color-surface);
  padding: var(--space-2);
}

.o-media-frame img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
