/* 02-base.css
   Mobile-first base styles that rely solely on design tokens.
   Includes a simple reset and typography defaults. */

/* reset */
*, *::before, *::after {
  box-sizing: border-box;
}
html, body, h1, h2, h3, h4, h5, h6, p, figure, blockquote, dl, dd {
  margin: 0;
  padding: 0;
}
ul[role='list'], ol[role='list'] {
  list-style: none;
}
body {
  min-height: 100vh;
  overflow-x: hidden;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
img, picture, video, canvas, svg {
  display: block;
  max-width: 100%;
}
button, input, select, textarea {
  font: inherit;
}

/* typography */
body {
  font-family: var(--site-font-body);
  font-size: var(--site-size-body);
  color: var(--site-color-text);
  background: var(--site-color-bg);
  line-height: 1.6;
}
h1 {
  font-family: var(--site-font-heading);
  font-size: var(--site-size-h1);
  font-weight: 700;
  line-height: 1.1;
}
h2 {
  font-family: var(--site-font-heading);
  font-size: var(--site-size-h2);
  font-weight: 700;
}
h3 {
  font-family: var(--site-font-heading);
  font-size: var(--site-size-h3);
  font-weight: 600;
}
h4 {
  font-family: var(--site-font-heading);
  font-size: var(--site-size-h4);
  font-weight: 600;
}
p {
  margin-bottom: var(--site-space-m);
}
.small {
  font-size: var(--site-size-small);
}
.caption {
  font-size: var(--site-size-caption);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
