*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--font-sans); font-size: 16px; line-height: 1.55;
  color: var(--text); background: var(--surface-bg);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4 { margin: 0; color: var(--text); letter-spacing: -0.02em; }
h1 { font-size: clamp(36px, 5vw, 56px); font-weight: 800; line-height: 1.05; }
h2 { font-size: clamp(28px, 3vw, 40px); font-weight: 800; line-height: 1.1; }
h3 { font-size: 22px; font-weight: 700; line-height: 1.2; }
h4 { font-size: 18px; font-weight: 700; line-height: 1.25; }
p  { margin: 0; }

a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px; }

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }

:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px; border-radius: var(--r-1);
}

.skip-link {
  position: absolute; left: -9999px; top: 0;
  background: var(--brand); color: var(--brand-fg);
  padding: var(--s-3) var(--s-4); border-radius: var(--r-2);
  font-weight: 700;
}
.skip-link:focus { left: var(--s-3); top: var(--s-3); z-index: 100; }

.tabular { font-variant-numeric: tabular-nums; }
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}
