/* Shared by all public templates: reset, a11y helpers and the components whose markup is shared
   (consent banner, mobile action bar, preview bar, map, forms plumbing). Templates style the rest. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,picture,svg,iframe{display:block;max-width:100%}
img{height:auto}
h1,h2,h3,h4,p,figure,blockquote,ul,ol,dl{margin:0}
ul[class],ol[class]{list-style:none;padding:0}
a{color:inherit}
button,input,textarea,select{font:inherit;color:inherit}
address{font-style:normal}
:focus-visible{outline:3px solid var(--accent-ink,#1d4ed8);outline-offset:3px;border-radius:4px}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:12px;top:-60px;z-index:1000;background:#111827;color:#fff;padding:10px 16px;border-radius:8px;text-decoration:none}
.skip-link:focus{top:12px}
.icon{flex:none}
.hp-field{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}

.preview-bar{position:sticky;top:0;z-index:900;display:flex;gap:16px;justify-content:center;align-items:center;flex-wrap:wrap;padding:8px 16px;background:#111827;color:#f9fafb;font:500 13px/1.4 system-ui,sans-serif}
.preview-bar a{color:#fde68a}

/* Map (click to load) */
.map{position:relative;min-height:320px;border-radius:var(--map-radius,16px);overflow:hidden;background:rgba(var(--brand-rgb),.07)}
.map iframe{width:100%;height:100%;min-height:320px;border:0}
.map__placeholder{min-height:320px;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;text-align:center;padding:24px;color:var(--brand-ink)}
.map__placeholder small{opacity:.7;font-size:12px}

/* Mobile action bar */
.mobile-bar{display:none}
@media (max-width:767px){
  .mobile-bar{position:fixed;inset:auto 0 0 0;z-index:800;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;background:#fff;border-top:1px solid rgba(15,23,42,.1);box-shadow:0 -6px 24px rgba(15,23,42,.08);padding-bottom:env(safe-area-inset-bottom)}
  .mobile-bar__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:9px 4px 8px;font-size:12px;font-weight:600;text-decoration:none;color:var(--brand-ink)}
  .mobile-bar__item+.mobile-bar__item{border-left:1px solid rgba(15,23,42,.08)}
  .mobile-bar__item:last-child{background:var(--brand);color:var(--on-brand)}
  body.has-mobile-bar{padding-bottom:calc(58px + env(safe-area-inset-bottom))}
}

/* Consent banner – equal-weight choices, no dark patterns */
.consent{position:fixed;z-index:950;left:16px;right:16px;bottom:16px;max-width:560px;margin-inline:auto 0;background:#fff;color:#111827;border:1px solid rgba(15,23,42,.12);border-radius:16px;box-shadow:0 20px 60px rgba(15,23,42,.22);font:400 14px/1.5 var(--font-body)}
.consent[hidden]{display:none}
.consent__inner{padding:20px}
.consent__title{font:700 16px/1.3 var(--font-body);margin-bottom:6px}
.consent__text a{color:var(--brand-ink)}
.consent__options{display:grid;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid rgba(15,23,42,.1)}
.consent__options[hidden]{display:none}
.consent__options label{display:flex;gap:10px;align-items:flex-start}
.consent__options input{margin-top:3px;width:18px;height:18px;accent-color:var(--brand)}
.consent__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.consent__btn{flex:1 1 140px;padding:10px 14px;border-radius:10px;border:1px solid #111827;background:#111827;color:#fff;font-weight:600;cursor:pointer}
.consent__btn--ghost{background:#fff;color:#111827}
.consent__btn[hidden]{display:none}
@media (max-width:767px){.consent{bottom:calc(70px + env(safe-area-inset-bottom))}}

/* Notices + form errors (structure shared, look refined per template) */
.notice{padding:14px 16px;border-radius:12px;margin-bottom:16px}
.notice--success{background:#ecfdf3;color:#05603a;border:1px solid #a6f4c5}
.notice--error{background:#fef3f2;color:#b42318;border:1px solid #fecdca}
.notice ul{margin:0;padding-left:18px}
.field__error{display:block;color:#b42318;font-size:13px;margin-top:4px}
