/* Reset, base typography, layout primitives and accessibility helpers */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + 16px); }
body {
  margin: 0; background: var(--white); color: var(--navy);
  font: 400 var(--fs-md)/var(--lh-body) var(--font-body);
  -webkit-font-smoothing: antialiased; overflow-x: clip;
}
h1, h2, h3, h4, p, ul, ol, figure, dl, dd { margin: 0; padding: 0; }
ul, ol { list-style: none; }
img, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4 { font-family: var(--font-heading); letter-spacing: var(--track-h); line-height: var(--lh-tight); text-wrap: balance; }
h1 { font-size: var(--fs-h1); font-weight: var(--fw-h1); }
h2 { font-size: var(--fs-h2); font-weight: var(--fw-h2); }
h3 { font-size: var(--fs-h3); font-weight: 700; letter-spacing: -.012em; line-height: var(--lh-snug); }
p { text-wrap: pretty; }

.wrap { width: min(100%, calc(var(--wrap) + var(--gutter) * 2)); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--section-y); }

.sec-head { max-width: 720px; }
.sec-head > .eyebrow { margin-bottom: var(--s-3); }
.sec-head > p:not(.eyebrow) { margin-top: var(--s-4); color: var(--slate); font-size: var(--fs-lg); }
.on-dark .sec-head > p:not(.eyebrow) { color: var(--slate-300); }

.eyebrow { display: block; font: 700 var(--fs-sm)/1.3 var(--font-heading); color: var(--gold-ink); }
.on-dark .eyebrow { color: var(--gold); }
.on-dark { background: var(--navy); color: var(--white); }
.on-dark strong { color: var(--white); }

.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.skip-link {
  position: fixed; left: 16px; top: -64px; z-index: 200; padding: 12px 20px;
  background: var(--gold); color: var(--navy); font-weight: 700; border-radius: var(--r-sm);
  transition: top var(--t-fast);
}
.skip-link:focus { top: 16px; }

:focus { outline: none; }
:focus-visible { outline: none; box-shadow: var(--focus); border-radius: 4px; }
.on-dark :focus-visible, .site-header--dark :focus-visible { box-shadow: 0 0 0 3px var(--navy), 0 0 0 5px var(--gold); }

/* Reveal on scroll, gated by .js so content is never hidden without scripting */
.js [data-reveal] { opacity: 0; transform: translateY(20px); transition: opacity var(--t-reveal) var(--ease), transform var(--t-reveal) var(--ease); transition-delay: var(--d, 0ms); }
.js [data-reveal].is-in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; transition-delay: 0ms !important; }
  .js [data-reveal] { opacity: 1; transform: none; }
}
