/* Structural defaults for every theme. Visual styling belongs to theme assets. */
*, *::before, *::after { box-sizing: border-box; }
body { margin: 0; }
img { max-width: 100%; height: auto; }
[hidden] { display: none !important; }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; top: -100px; left: 16px; z-index: 50; }
.skip-link:focus { top: 12px; }
:where(a, button, summary, [tabindex]):focus-visible { outline: 3px solid var(--focus, #8fa2ff); outline-offset: 3px; }
[data-menu-toggle] { display: none; min-width: 44px; min-height: 44px; }
@media (max-width: 759px) {
    .js [data-menu-toggle] { display: inline-flex; }
    .js [data-site-nav] { display: none; }
    .js [data-site-header].is-open [data-site-nav] { display: flex; }
}
[data-contact-dialog] { width: min(560px, calc(100% - 32px)); max-height: calc(100dvh - 32px); margin: auto; overflow-y: auto; }
html:has([data-contact-dialog][open]), html:has([data-lightbox][open]) { overflow: hidden; }
[data-lightbox] { max-width: 100%; max-height: 100dvh; }
[data-lightbox-image] { max-width: 100%; max-height: 80dvh; object-fit: contain; }
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}
