/* ── Typography & Element Reset ────────────────────────────────────────── */
* {
  box-sizing: border-box;
}

html {
  scroll-behavior: smooth;
}

/* ── Lenis ────────────────────────────────────────────────────────────────
 * The CSS half of js/smooth-scroll.js. Only ever applies when the library
 * actually loaded and started, because it sets these classes on <html>
 * itself — if the CDN is down none of this matches and the native smooth
 * scroll above is what you get.
 *
 * The `scroll-behavior` override is not optional: with both live, an anchor
 * click has the browser and Lenis animating the same scroll position against
 * each other. It is keyed to `lenis`, which is present for as long as the
 * library is mounted — not to the `lenis-smooth` the vendor snippet uses,
 * which is only on the element mid-animation and would leave the two smooth
 * behaviours fighting over every anchor click except those already in flight. */
html.lenis,
html.lenis body {
  height: auto;
}

html.lenis {
  scroll-behavior: auto !important;
}

html.lenis [data-lenis-prevent] {
  overscroll-behavior: contain;
}

html.lenis-stopped {
  overflow: hidden;
}

body {
  margin: 0;
  background: var(--page);
  color: var(--ink);
  font-family: var(--body);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--display);
  letter-spacing: -.015em;
  line-height: 1.1;
  margin: 0;
  color: var(--ink);
}

p {
  margin: 0 0 16px;
  color: var(--ink-soft);
}

a {
  color: inherit;
  text-decoration: none;
}

.lead {
  font-size: clamp(17px, 1.8vw, 20px);
  color: var(--ink-soft);
  max-width: 60ch;
  line-height: 1.5;
}

.meta {
  font-family: var(--mono);
  font-size: 13px;
  color: var(--muted);
}
