/* #site-header is fixed, so anything scrolled to the top of the viewport lands behind it.
   scroll-padding-top offsets every scroll into the page — anchor links, scrollIntoView,
   scroll-margin — in one place. menu.js publishes --header-height and keeps it in sync,
   since the header has no fixed height and changes with the breakpoint. */
html {
    scroll-padding-top: calc(var(--header-height, 0px) + 1rem);
}

html.menu-open,
html.menu-open body {
    overflow: hidden;
}

/* Mobile nav open: freeze the page in place instead of scrolling it to the top.
   menu.js sets body top to -scrollY and restores the offset on close. */
/* Keep the scrollbar gutter reserved while locked so nothing changes width */
html.mobile-menu-open {
    overflow-x: hidden;
    overflow-y: scroll;
}

html.mobile-menu-open body {
    position: fixed;
    left: 0;
    right: 0;
    width: 100%;
    overflow: hidden;
}

body {
    background-color: rgb(251 250 247 / var(--tw-bg-opacity, 1));
}
