:root {
    --blue: #285db7;
    --blue-dark: #204e9d;
    --navy: #172a48;
    --pale: #edf3fa;
    --paper: #fff;
    --ink: #475569;
    --line: #dce4ef;
    --heading-font: 'Poppins', sans-serif;
    --body-font: 'Montserrat', sans-serif;
    --header-height: 92px;
}
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--header-height) + 17px); }
body { margin: 0; color: var(--ink); background: var(--paper); font: 400 15px/1.8 var(--body-font); -webkit-font-smoothing: antialiased; }
body.dialog-open { overflow: hidden; }
body:not(.inner-page):not(:has(main > .hero:first-child)) main { padding-top: var(--header-height); }
::selection { color: #fff; background: var(--blue); }
*, *::before, *::after { box-sizing: border-box; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; text-underline-offset: 5px; }
a:hover { color: var(--blue); }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
button { cursor: pointer; }
button:disabled { cursor: default; opacity: .5; }
:focus-visible { outline: 3px solid #81acff; outline-offset: 5px; }
h1, h2, h3, h4 { margin: 0; color: var(--navy); font-family: var(--heading-font); font-weight: 500; line-height: 1.2; letter-spacing: -.035em; text-wrap: balance; }
h2 { font-size: clamp(32px, 3.35vw, 48px); }
p { margin: 0 0 20px; }
section[id], .category-card[id] { scroll-margin-top: calc(var(--header-height) + 17px); }
.container-xl { padding-inline: 28px; }
.section-space { padding-block: 106px; }
.scroll-reveal.scroll-reveal { transition: opacity .45s cubic-bezier(.16, 1, .3, 1), transform .45s cubic-bezier(.16, 1, .3, 1); transition-delay: var(--reveal-delay, 0ms); }
.scroll-reveal.reveal-pending { opacity: 0; transform: translateY(14px); }
@media (max-width: 767.98px) { .scroll-reveal.reveal-pending { transform: translateY(8px); } }
@media print { .scroll-reveal.reveal-pending { opacity: 1; transform: none; } }
.skip-link { position: fixed; top: 12px; left: 12px; z-index: 2000; padding: 10px 20px; background: #fff; color: var(--navy); transform: translateY(-150%); }
.skip-link:focus { transform: translateY(0); }
@media (min-width: 1400px) { .container-xl { max-width: 1280px; } }
@media (max-width: 767.98px) {
    :root { --header-height: 78px; }
    body { font-size: 14px; }
    .container-xl { padding-inline: 22px; }
    .section-space { padding-block: 68px; }
}
@media (prefers-reduced-motion: reduce) {
    .scroll-reveal.reveal-pending { opacity: 1; transform: none; }
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}
