@layer base {
  body {
    display: flex;
    flex-direction: column;
    min-height: 100dvh;
  }

  main {
    flex: 1;
    inline-size: 100dvw;
    max-inline-size: 100dvw;
    padding-inline: var(--main-padding);
  }
}

@layer components {
  /* Per-page width wrappers — each page chooses its own */
  .page--wide {
    max-inline-size: var(--main-width);
    margin-inline: auto;
  }

  .page--content {
    max-inline-size: min(80ch, 100%);
    margin-inline: auto;
  }

  .page--prose {
    max-inline-size: min(70ch, 100%);
    margin-inline: auto;
  }

  .margin-block-start {
    margin-block-start: var(--block-space);
  }

  /* Impersonation banner */
  .impersonation-banner {
    background-color: oklch(var(--lch-yellow-lighter));
    color: var(--color-ink);
    padding-block: var(--block-space-half);
    border-block-end: 1px solid oklch(var(--lch-yellow-light));
  }

  /* Site footer */
  .site-footer {
    margin-block-start: auto;
    padding-block: var(--block-space);
    background: var(--color-ink-darkest);
    color: var(--color-ink-light);
  }

  .site-footer__inner {
    display: flex;
    flex-direction: column-reverse;
    gap: var(--block-space-half);
    align-items: center;

    @media (min-width: 768px) {
      flex-direction: row;
      justify-content: space-between;
    }
  }

  .site-footer__links {
    display: flex;
    gap: var(--inline-space);
    font-size: var(--text-small);

    a {
      color: var(--color-ink-medium);
      text-decoration: none;

      &:hover {
        color: var(--color-ink-light);
      }
    }
  }

  .site-footer__copyright {
    color: var(--color-ink-medium);
    font-size: var(--text-x-small);
  }

  /* Simple responsive grid using CSS grid */
  .grid-row {
    display: grid;
    gap: var(--block-space);
    grid-template-columns: 1fr;

    @media (min-width: 768px) {
      grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
    }
  }

  .grid-row--2 {
    @media (min-width: 768px) {
      grid-template-columns: repeat(2, 1fr);
    }
  }

  .grid-row--3 {
    @media (min-width: 768px) {
      grid-template-columns: repeat(3, 1fr);
    }
  }

  .grid-row--4 {
    @media (min-width: 768px) {
      grid-template-columns: repeat(4, 1fr);
    }
  }
}
