/* Quality floor shared by every client site. Visual identity (palette,
   type, layout) lives in site.css and must be designed per client. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; line-height: 1.55; overflow-wrap: break-word; }
img, picture, video, svg { display: block; max-width: 100%; height: auto; }
input, button, textarea, select { font: inherit; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
:target { scroll-margin-top: 5rem; }
a, button { touch-action: manipulation; }

.skip-link {
  position: absolute; left: 1rem; top: -100px; z-index: 100;
  padding: .6rem 1rem; background: #000; color: #fff;
}
.skip-link:focus { top: 1rem; }

:focus-visible { outline: 3px solid currentColor; outline-offset: 3px; }

.demo-banner {
  padding: .5rem 1rem; text-align: center; font-size: .875rem;
  background: #fff4c2; color: #3d3200; border-bottom: 1px solid #e6d58a;
}

/* Mobile nav: hidden behind the toggle below 48rem */
.nav-toggle { display: none; }
@media (max-width: 48rem) {
  .nav-toggle { display: inline-flex; min-height: 44px; min-width: 44px; align-items: center; }
  .site-header nav ul[data-open="false"] { display: none; }
}

/* Click-to-load map: no request to Google until the visitor asks for it */
.map-consent { display: grid; place-items: center; gap: .75rem; min-height: 280px; padding: 1.5rem; text-align: center; }
.map-consent iframe { width: 100%; min-height: 360px; border: 0; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
