/* ==========================================================================
   layout.css — page frame
   --------------------------------------------------------------------------
   1. Container and 12-column grid
   2. Sections
   3. Site header and navigation
   4. Site footer
   5. Breakpoints: 768px, 1024px, 1320px (mobile first)
   ========================================================================== */

/* 1. Container and grid --------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--max-width);
  margin-inline: auto;
  padding-inline: var(--page-pad);
}

/* Children span the full width on mobile; components place them on wider screens. */
.grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: var(--gutter);
  row-gap: var(--s4);
}

.grid > * { grid-column: 1 / -1; }

/* 2. Sections ------------------------------------------------------------- */
.section { padding-block: var(--section-pad); }

.section--ruled { border-top: var(--rule-thin) solid var(--rule); }

.section--tight-top { padding-top: 0; }

.section-head {
  display: grid;
  gap: var(--s2);
  margin-bottom: var(--s4);
}

.section-head p {
  max-width: var(--measure);
  color: var(--muted-text);
}

.section-foot { margin-top: var(--s4); }

/* Page title block used on inner pages */
.page-title {
  padding-top: var(--s5);
  padding-bottom: var(--s4);
  border-bottom: var(--rule-thin) solid var(--ink);
}

.page-title h1 { max-width: 16ch; }

.page-title p {
  max-width: var(--measure);
  margin-top: var(--s2);
  color: var(--muted-text);
}

/* 3. Site header ---------------------------------------------------------- */
.site-header { border-bottom: var(--rule-thin) solid var(--rule); }

.site-header--masthead { border-bottom: var(--rule-heavy) solid var(--ink); }

.site-header__inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--s2);
  padding-block: var(--s2);
}

.wordmark {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s1);
  font-family: var(--font-serif);
  font-size: var(--fs-h3);
  font-weight: 600;
  text-decoration: none;
}

.wordmark__sub {
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 400;
  color: var(--muted-text);
}

.nav-toggle {
  display: none;
  padding: var(--s1) var(--s2);
  border: var(--rule-thin) solid var(--ink);
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: var(--fs-small);
  cursor: pointer;
}

.site-nav ul {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s1) var(--s3);
  list-style: none;
}

.site-nav a {
  display: inline-block;
  padding-block: var(--s1);
  font-size: var(--fs-small);
  text-decoration: none;
}

.site-nav a[aria-current="page"] {
  text-decoration: underline;
  text-decoration-thickness: var(--rule-thin);
  text-underline-offset: 0.35em;
}

/* With JavaScript the menu collapses behind a button on small screens. */
.js .nav-toggle { display: inline-block; }

.js .site-nav {
  display: none;
  width: 100%;
}

.js .site-nav.is-open { display: block; }

.js .site-nav.is-open ul {
  flex-direction: column;
  gap: var(--s2);
  padding-block: var(--s2);
}

.js .site-nav.is-open a {
  font-family: var(--font-serif);
  font-size: var(--fs-h3);
}

/* 4. Site footer ---------------------------------------------------------- */
.site-footer {
  margin-top: var(--s6);
  border-top: var(--rule-heavy) solid var(--ink);
  padding-top: var(--s5);
  padding-bottom: var(--s4);
}

.site-footer__grid { row-gap: var(--s4); }

.site-footer__lead {
  font-family: var(--font-serif);
  font-size: var(--fs-h2);
  line-height: var(--lh-heading);
}

.site-footer h2 {
  margin-bottom: var(--s2);
  font-family: var(--font-sans);
  font-size: var(--fs-small);
  font-weight: 600;
}

.site-footer ul {
  display: grid;
  gap: var(--s1);
  list-style: none;
  font-size: var(--fs-small);
}

.site-footer address {
  font-size: var(--fs-small);
  font-style: normal;
}

.site-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--s2);
  margin-top: var(--s5);
  padding-top: var(--s3);
  border-top: var(--rule-thin) solid var(--rule);
  color: var(--muted-text);
  font-size: var(--fs-small);
}

/* 5. Breakpoints ---------------------------------------------------------- */
@media (min-width: 768px) {
  :root { --section-pad: var(--s6); }

  .page-title {
    padding-top: var(--s6);
    padding-bottom: var(--s5);
  }

  .js .nav-toggle { display: none; }

  .js .site-nav {
    display: block;
    width: auto;
  }

  .site-footer__grid > :nth-child(2) { grid-column: 1 / 5; }
  .site-footer__grid > :nth-child(3) { grid-column: 5 / 9; }
  .site-footer__grid > :nth-child(4) { grid-column: 9 / 13; }
}

@media (min-width: 1024px) {
  :root { --page-pad: calc(var(--s3) * 2); }

  .site-footer__grid > :nth-child(1) { grid-column: 1 / 6; }
  .site-footer__grid > :nth-child(2) { grid-column: 7 / 9; }
  .site-footer__grid > :nth-child(3) { grid-column: 9 / 11; }
  .site-footer__grid > :nth-child(4) { grid-column: 11 / 13; }

  .site-header__inner { padding-block: var(--s3); }
}

@media (min-width: 1320px) {
  .site-nav ul { gap: var(--s1) var(--s4); }
}
