/* Standalone navigation, media loading and accessible image viewer. */
html { scroll-behavior: smooth; }
button { font: inherit; color: inherit; }
.hamburger-click-area, .close-responsive-click-area { border: 0; background: transparent; }
.project-module-image img { display: block; width: 100%; height: auto; }
.logo-image img { width: auto; height: auto; }
.js-lightbox { cursor: zoom-in; }
a:focus-visible, button:focus-visible, [role="button"]:focus-visible { outline: 2px solid #649ff2; outline-offset: 5px; }
.image-viewer { position: fixed; inset: 0; width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 60px; border: 0; background: rgba(255,255,255,.96); }
.image-viewer::backdrop { background: rgba(255,255,255,.9); }
.image-viewer[open] { display: grid; place-items: center; }
.image-viewer img { max-width: 100%; max-height: calc(100dvh - 120px); width: auto; height: auto; object-fit: contain; }
.viewer-control { position: absolute; border: 0; background: white; color: #012b55; cursor: pointer; width: 44px; height: 44px; font-size: 28px; line-height: 1; }
.viewer-close { top: 15px; right: 18px; }
.viewer-prev { top: calc(50% - 22px); left: 8px; }
.viewer-next { top: calc(50% - 22px); right: 8px; }
.back-to-top-fixed { visibility: hidden; }
.back-to-top-fixed.is-visible { visibility: visible; }
@media(max-width: 540px) {
  .image-viewer { padding: 50px 35px; }
  .image-viewer img { max-height: calc(100dvh - 100px); }
  .module-text { overflow-wrap: anywhere; }
}
@media(prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } * { transition-duration: 0s !important; } }
