*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--text-body-lh);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--color-text);margin:0;text-wrap:balance}
p{margin:0;text-wrap:pretty}
a{color:var(--color-link);text-decoration:none;text-underline-offset:3px}
a:hover{text-decoration:underline;color:var(--navy-900)}
:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}
img{max-width:100%;display:block}
::selection{background:var(--glow-100);color:var(--navy-900)}
.nl-display{font-family:var(--font-display);font-weight:700;font-size:var(--text-display-size);line-height:var(--text-display-lh);letter-spacing:var(--text-display-ls)}
.nl-h1{font-family:var(--font-display);font-weight:700;font-size:var(--text-h1-size);line-height:var(--text-h1-lh);letter-spacing:var(--text-h1-ls)}
.nl-h2{font-family:var(--font-display);font-weight:600;font-size:var(--text-h2-size);line-height:var(--text-h2-lh);letter-spacing:var(--text-h2-ls)}
.nl-h3{font-family:var(--font-display);font-weight:600;font-size:var(--text-h3-size);line-height:var(--text-h3-lh)}
.nl-h4{font-family:var(--font-display);font-weight:600;font-size:var(--text-h4-size);line-height:var(--text-h4-lh)}
.nl-eyebrow{font-family:var(--font-body);font-weight:600;font-size:var(--text-eyebrow-size);line-height:var(--text-eyebrow-lh);letter-spacing:var(--text-eyebrow-ls);text-transform:uppercase;color:var(--color-accent-text)}
.nl-body-lg{font-size:var(--text-body-lg-size);line-height:var(--text-body-lg-lh)}
.nl-body{font-size:var(--text-body-size);line-height:var(--text-body-lh)}
.nl-small{font-size:var(--text-small-size);line-height:var(--text-small-lh)}
.nl-caption{font-size:var(--text-caption-size);line-height:var(--text-caption-lh);font-weight:500;letter-spacing:var(--text-caption-ls)}
.nl-muted{color:var(--color-text-muted)}
.nl-container{max-width:calc(var(--container-max) + 2*var(--container-pad));margin:0 auto;padding:0 var(--container-pad)}
.nl-section{padding:var(--section-pad) 0}
.nl-reveal{animation:nl-rise var(--duration-slow) var(--ease-out) both}
@keyframes nl-rise{from{opacity:0;transform:translateY(var(--rise-distance))}to{opacity:1;transform:none}}
@keyframes nl-breathe{0%,100%{opacity:.8}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
