/* Reset */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--header-h) + var(--sp-5)); }
body, h1, h2, h3, h4, h5, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
img, picture, svg, video, iframe { display: block; max-width: 100%; }
img { height: auto; }
input, button, textarea, select { font: inherit; color: inherit; }
button { cursor: pointer; }
table { border-collapse: collapse; }
[hidden] { display: none !important; }

/* Typography */
body {
  font-family: var(--ff-sans);
  font-size: var(--fs-base);
  font-weight: var(--fw-regular);
  line-height: var(--lh-body);
  color: var(--c-text);
  background: var(--c-white);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4 { font-family: var(--ff-serif); font-weight: var(--fw-semibold); color: var(--c-navy); line-height: var(--lh-snug); text-wrap: balance; }
h1 { font-size: var(--fs-4xl); line-height: var(--lh-tight); letter-spacing: -0.01em; }
h2 { font-size: var(--fs-3xl); line-height: 1.12; }
h3 { font-size: var(--fs-2xl); }
h4 { font-size: var(--fs-xl); }
p, li { text-wrap: pretty; }
strong, b { font-weight: var(--fw-bold); }
small { font-size: var(--fs-sm); }

a { color: var(--c-navy); text-decoration-thickness: 1px; text-underline-offset: 0.2em; transition: color var(--t-fast) var(--ease), text-decoration-color var(--t-fast) var(--ease); }
a:hover { color: var(--c-navy-deep); text-decoration-color: var(--c-brass); }

:focus-visible { outline: 2px solid var(--c-focus); outline-offset: 3px; border-radius: var(--r-1); }
.is-dark :focus-visible, .l-section--navy :focus-visible { outline-color: var(--c-focus-on-dark); }

::selection { background: var(--c-bluegrey-light); color: var(--c-navy-deep); }

/* Layout primitives */
.l-container { width: 100%; max-width: calc(var(--w-wide) + 2 * var(--gutter)); margin-inline: auto; padding-inline: var(--gutter); }
.l-narrow { max-width: calc(var(--w-content) + 2 * var(--gutter)); }
.l-section { padding-block: var(--sp-section); }
.l-section--tight { padding-block: calc(var(--sp-section) * 0.6); }
.l-section--flush-top { padding-top: 0; }
.l-section--white { background: var(--c-white); }
.l-section--ice { background: var(--c-ice); }
.l-section--navy { background: var(--c-navy); color: var(--c-text-on-dark); }
.l-section--navy h1, .l-section--navy h2, .l-section--navy h3, .l-section--navy h4 { color: var(--c-white); }
.l-section--navy a:not(.c-btn) { color: var(--c-white); }
.l-section + .l-section--white, .l-section--white + .l-section--white { border-top: var(--bw-hair) solid var(--c-line-soft); }

.l-stack > * + * { margin-top: var(--stack, var(--sp-5)); }
.l-grid { display: grid; gap: var(--grid-gap, var(--sp-6)); }
.l-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.l-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); }
.l-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.l-split { display: grid; gap: var(--sp-7); }
@media (min-width: 64em) {
  .l-split { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--sp-9); }
  .l-split--reverse { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
  .l-split--aside { grid-template-columns: minmax(0, 1fr) 20rem; gap: var(--sp-8); }
  .l-split--toc { grid-template-columns: 16rem minmax(0, 1fr); gap: var(--sp-8); }
}

/* Utilities */
.u-visually-hidden { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.u-measure { max-width: 70ch; }
.u-lead { font-size: var(--fs-lg); line-height: 1.6; }
.u-muted { color: var(--c-text-muted); }
.u-center { text-align: center; margin-inline: auto; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; }
}

@media print {
  [data-template-part="header"], .c-mobile-bar, .c-map, .c-cta-band { display: none !important; }
  body { color: #000; }
  a { color: #000; }
}
