* { box-sizing: border-box; }
html { font-size: var(--font-base); scroll-behavior: smooth; scroll-padding-top: calc(var(--header-height) + var(--space-4)); -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--font-body); font-size: var(--text-md); line-height: var(--line-body); overflow-x: clip; -webkit-font-smoothing: antialiased; }
h1, h2, h3, p, dl, dd, figure { margin: 0; }
h1, h2, h3 { font-family: var(--font-display); font-weight: var(--weight-semibold); line-height: var(--line-tight); letter-spacing: var(--tracking-display); text-wrap: balance; }
p { text-wrap: pretty; }
a { color: inherit; text-underline-offset: .2em; }
a, button, input, textarea, select, summary { -webkit-tap-highlight-color: var(--transparent); }
button, input, textarea, select { font: inherit; }
button, summary, select { cursor: pointer; }
button { color: inherit; }
button:disabled { cursor: not-allowed; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
ul, ol { margin: 0; padding: 0; list-style: none; }
sup { font-family: var(--font-mono); font-size: .62em; font-weight: var(--weight-normal); letter-spacing: 0; vertical-align: super; line-height: 0; margin-left: .15em; color: var(--muted); }
:focus-visible { outline: var(--focus-width) solid var(--accent); outline-offset: var(--focus-offset); animation: focus-in 200ms var(--easing); }
@keyframes focus-in { from { outline-color: transparent; outline-offset: 8px; } }
::selection { background: var(--accent); color: var(--accent-contrast); }
[hidden] { display: none !important; }
.meta { font-family: var(--font-mono); font-size: var(--text-xs); font-weight: var(--weight-normal); letter-spacing: var(--tracking-mono); color: var(--muted); }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link { position: fixed; inset: var(--space-4) auto auto var(--space-4); transform: translateY(-200%); z-index: 100; background: var(--accent); color: var(--accent-contrast); padding: var(--space-3) var(--space-5); font-family: var(--font-mono); }
.skip-link:focus { transform: translateY(0); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { transition-duration: 1ms !important; animation: none !important; } }
