:root {
  color-scheme: light;
  --paper: #f5f3eb;
  --ink: #151714;
  --muted: #56594e;
  --line: #cbcdc0;
  --accent: #e6fa71;
  --accent-hover: #d6ee4f;
  --gutter: clamp(1.125rem, 4vw, 4rem);
  --sans: Arial, Helvetica, sans-serif;
  --mono: ui-monospace, Menlo, Consolas, monospace;
  font-family: var(--sans);
  background: var(--paper);
  color: var(--ink);
}

*, *::before, *::after { box-sizing: border-box; }

body { margin: 0; }

a { color: inherit; }

:where(a, summary):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}

::selection { background: var(--accent); color: var(--ink); }

.shell {
  width: min(100% - 2 * var(--gutter), 80rem);
  margin-inline: auto;
}

.skip-link {
  position: fixed;
  z-index: 5;
  top: 1rem;
  left: var(--gutter);
  padding: .75rem 1rem;
  transform: translateY(-200%);
  background: var(--accent);
  color: var(--ink);
  font-weight: 700;
}

.skip-link:focus { transform: none; }

.site-header { border-bottom: 1px solid var(--line); }

.header-inner, .header-actions, .wordmark {
  display: flex;
  align-items: center;
}

.header-inner {
  justify-content: space-between;
  min-height: 4.5rem;
  gap: 1rem;
}

.wordmark {
  gap: .65rem;
  font-size: 1.15rem;
  font-weight: 800;
  letter-spacing: -.05em;
  text-decoration: none;
}

.mark { display: block; width: 2rem; height: 2rem; flex: 0 0 auto; }

.wordmark-detail {
  color: var(--muted);
  font: 700 .65rem/1 var(--mono);
  letter-spacing: .04em;
}

.header-actions { gap: clamp(.5rem, 1.8vw, 1.5rem); }

.language { position: relative; }

.language > summary, .category-menu > summary {
  cursor: pointer;
  list-style: none;
}

.language > summary::-webkit-details-marker,
.category-menu > summary::-webkit-details-marker { display: none; }

.language > summary {
  display: flex;
  align-items: center;
  gap: .65rem;
  min-height: 2.75rem;
  padding: .5rem .75rem;
  border: 1px solid var(--line);
  font-size: .875rem;
  font-weight: 700;
  white-space: nowrap;
}

.language > summary .chevron, .category-menu > summary .chevron { flex: 0 0 auto; }
.language[open] > summary .chevron, .category-menu[open] > summary .chevron { transform: rotate(180deg); }

.language > summary:hover, .language[open] > summary { background: #eae9de; }

.language-list {
  position: absolute;
  z-index: 3;
  inset-inline-end: 0;
  min-width: 10.5rem;
  margin: .35rem 0 0;
  padding: .3rem;
  list-style: none;
  background: var(--paper);
  border: 1px solid var(--ink);
  box-shadow: .25rem .25rem 0 var(--ink);
}

.language-list a {
  display: flex;
  align-items: center;
  min-height: 2.5rem;
  padding: .4rem .65rem;
  text-decoration: none;
  font-size: .9rem;
}

.language-list a:hover, .language-list a[aria-current] { background: var(--accent); }
.language-list a[aria-current] { font-weight: 700; }

.header-cta {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  min-height: 2.75rem;
  font-size: .85rem;
  font-weight: 700;
  text-underline-offset: .25em;
}

.header-cta:hover { text-decoration-thickness: 2px; }

.hero {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.25rem, 4.8vw, 5rem);
  padding-block: clamp(2rem, 4.2vw, 4rem) clamp(2.75rem, 6vw, 5rem);
}

.hero-copy { padding-block: .5rem; }

.eyebrow {
  display: flex;
  align-items: center;
  gap: .65rem;
  margin: 0 0 1.15rem;
  font: 700 .75rem/1.35 var(--mono);
  letter-spacing: .075em;
  text-transform: uppercase;
}

.eyebrow > span {
  flex: 0 0 auto;
  color: var(--ink);
  background: var(--accent);
  padding: .2rem .25rem;
  line-height: 1;
}

.hero h1 {
  margin: 0;
  font-size: clamp(3.3rem, 7vw, 7rem);
  font-weight: 900;
  line-height: .9;
  letter-spacing: -.088em;
}

.hero h1 span { display: block; }

.hero-intro {
  max-width: 30rem;
  margin: clamp(1.3rem, 2.7vw, 2rem) 0 0;
  color: var(--muted);
  font-size: clamp(1.05rem, 1.45vw, 1.25rem);
  line-height: 1.52;
  text-wrap: pretty;
}

.hero-actions {
  display: flex;
  align-items: stretch;
  flex-wrap: wrap;
  gap: .65rem;
  margin-top: clamp(1.4rem, 3vw, 2.25rem);
}

.button {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  gap: .55rem;
  min-height: 3.15rem;
  padding: .65rem 1rem;
  border: 1px solid var(--ink);
  color: var(--ink);
  font-size: .92rem;
  font-weight: 700;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
}

.button.primary { background: var(--accent); }
.button.primary:hover { background: var(--accent-hover); }
.button.secondary:hover { background: #eae9de; }

.hero-image {
  position: relative;
  margin: 0;
  min-width: 0;
  background: var(--ink);
  border: 1px solid var(--ink);
}

.hero-image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
}

.hero-image figcaption {
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .25rem .75rem;
  padding: .8rem .9rem;
  color: #e8e9db;
  font: .675rem/1.45 var(--mono);
  letter-spacing: .045em;
  text-transform: uppercase;
}

.figure-index {
  position: absolute;
  inset: 0 0 auto auto;
  background: var(--accent);
  color: var(--ink);
  padding: .48rem .64rem;
  font: 700 .675rem/1.15 var(--mono);
  letter-spacing: .065em;
}

.directory {
  padding-block: clamp(2rem, 4vw, 3.75rem) clamp(2.5rem, 5.5vw, 4.5rem);
  border-top: 1px solid var(--line);
  scroll-margin-top: 1rem;
}

.section-head {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  align-items: end;
  gap: .75rem clamp(1.25rem, 4vw, 4rem);
  margin-bottom: clamp(1.25rem, 2.5vw, 2rem);
}

.section-head .eyebrow { grid-column: 1 / -1; margin: 0; }

.section-head h2, .endnote h2 {
  margin: 0;
  font-size: clamp(2.2rem, 5vw, 4.65rem);
  font-weight: 850;
  line-height: .97;
  letter-spacing: -.07em;
  text-wrap: balance;
}

.section-head p:not(.eyebrow), .endnote p {
  max-width: 34rem;
  margin: 0;
  color: var(--muted);
  font-size: 1rem;
  line-height: 1.5;
  text-wrap: pretty;
}

.category-menu {
  background: #faf9f3;
  border: 1px solid var(--ink);
}

.category-menu > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  min-height: 4rem;
  padding: .65rem clamp(.9rem, 2.2vw, 1.75rem);
  background: var(--ink);
  color: var(--paper);
  font-size: clamp(1.04rem, 1.8vw, 1.35rem);
  font-weight: 700;
}

.category-menu > summary:hover { background: #292c22; }
.category-menu > summary:focus-visible { outline-offset: -5px; }

.category-menu > summary .chevron {
  width: 2.3rem;
  height: 2.3rem;
  padding: .6rem;
  background: var(--accent);
  color: var(--ink);
}

.categories {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  margin: 0;
  padding: 0;
  background: var(--line);
  list-style: none;
}

.categories li { min-width: 0; }

.categories a {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(.45rem, 1.4vw, 1rem);
  min-height: 3.55rem;
  height: 100%;
  padding: .65rem clamp(.85rem, 2vw, 1.3rem);
  background: #faf9f3;
  font-weight: 700;
  line-height: 1.3;
  text-decoration: none;
  overflow-wrap: anywhere;
}

.categories a:hover, .categories a:focus-visible { background: var(--accent); }
.categories a:focus-visible { outline-offset: -4px; }
.category-id { color: var(--muted); font: .7rem/1 var(--mono); }
.category-arrow { font-size: 1.1rem; font-weight: 400; }

.endnote {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1.4rem;
  margin: 0 0 clamp(2rem, 5vw, 4rem);
  padding: clamp(1.25rem, 3.8vw, 2.75rem);
  background: #eae9de;
  border-inline-start: 4px solid var(--ink);
}

.endnote h2 { margin-bottom: .55rem; font-size: clamp(1.55rem, 3vw, 2.5rem); }
.endnote p.eyebrow { margin-bottom: .5rem; font: 700 .7rem/1.4 var(--mono); }
.endnote .button { flex: 0 0 auto; }

.site-footer { border-top: 1px solid var(--line); }

.footer-inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: .65rem 1.5rem;
  min-height: 4.5rem;
  padding-block: .9rem;
  color: var(--muted);
  font: .75rem/1.45 var(--mono);
}

.footer-inner p { margin: 0; }
.footer-inner a { text-underline-offset: .24em; }

@media (max-width: 61rem) {
  .categories { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 46rem) {
  .hero { grid-template-columns: minmax(0, 1fr); gap: 1.6rem; }
  .hero h1 { font-size: clamp(3.15rem, 11.1vw, 5.9rem); }
  .hero-image img { max-height: 38rem; object-position: center; }
  .section-head { grid-template-columns: minmax(0, 1fr); }
  .section-head .eyebrow { grid-column: auto; }
  .endnote { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 32rem) {
  .header-inner { min-height: 4rem; gap: .5rem; }
  .wordmark { font-size: 1rem; gap: .4rem; }
  .wordmark-detail { display: none; }
  .mark { width: 1.75rem; height: 1.75rem; }
  .header-cta { display: none; }
  .categories { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 22rem) {
  .hero h1 { font-size: clamp(2.3rem, 13vw, 3.15rem); }
  .hero-actions .button { width: 100%; }
}
