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

html {
  scroll-behavior: smooth;
  scroll-padding-top: 90px;
}

body {
  margin: 0;
  background: var(--dark-bg);
  color: var(--dark-text-primary);
  font-family: var(--font-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img {
  display: block;
  max-width: 100%;
}

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

button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
}

svg {
  display: block;
  flex-shrink: 0;
}

/* Every section frame in the design is full-bleed with a fixed inner gutter.
   `.page` is therefore never capped: backgrounds and strokes run edge to edge at
   any viewport width, and it is the section padding that centres the content
   column on the 1140px the design was drawn against. */
.page {
  width: 100%;
  display: flex;
  flex-direction: column;
  /* `clip` (not `hidden`) still prevents horizontal overflow but does NOT
     create a scroll container, so the sticky header (#nav) keeps working. */
  overflow: clip;
}

.section {
  width: 100%;
  flex-shrink: 0;
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
}
