/* Sitewide launch shell: footer, mobile contact actions, nav, and shared focus affordances. */
body > nav.site-nav .nav-right { gap:24px; }
.service-area { display:flex; align-items:center; min-height:48px; padding:12px 16px; border:1px solid #e7e1d7; border-radius:10px; color:#33424f; }
.policy-page { max-width:760px; margin:0 auto; padding:56px 24px 80px; color:#182430; font:17px/1.75 'Instrument Sans',system-ui,sans-serif; }
.policy-page h1 { font:500 clamp(32px,6vw,52px)/1.15 Georgia,serif; margin:20px 0; }
.policy-page h2 { font-size:24px; margin:32px 0 12px; }
.policy-page a { color:#805014; }
.policy-page .btn { display:inline-flex; padding:12px 20px; background:#f2a93b; color:#182430; border-radius:8px; font-weight:700; }
.site-footer .site-footer__legal-card p, .site-footer .site-footer__housing p { font-size:14px; color:#c6d2dc; }
.site-footer .site-footer__legal-card h2, .site-footer .site-footer__group h2 { font-size:12px; }
.mobile-nav .mobile-nav__cta { color:#172936 !important; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior:auto !important; animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}
html,
body {
  max-width: 100%;
  overflow-x: clip;
}

/* ---------- global brand lockup ---------- */
.brand,
a.brand,
.site-footer__brand {
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  font-family: Georgia, 'Times New Roman', serif;
  font-weight: 600;
  font-size: 30px;
  letter-spacing: -.055em;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  color: #172936;
}

.brand .mark,
a.brand .mark {
  display: none;
}

.brand .brand-the,
.brand .brand-offer,
a.brand .brand-the,
a.brand .brand-offer {
  color: inherit;
}

.brand em,
a.brand em,
.site-footer__brand em {
  font-style: normal;
  font-weight: 500;
  color: #a87521;
  -webkit-text-stroke: 0;
  background: none;
  -webkit-text-fill-color: currentColor;
}

.brand em::before,
.brand em::after,
a.brand em::before,
a.brand em::after {
  content: none;
  display: none;
}

.site-footer__brand {
  color: #fff;
}

.site-footer__brand .brand-the,
.site-footer__brand .brand-offer {
  color: #fff;
}

.site-footer__brand em {
  color: var(--sf-sun, #f2a93b);
}

@media (max-width: 960px) {
  .brand,
  a.brand {
    font-size: 24px;
    gap: 0;
  }
}

@media (max-width: 600px) {
  .brand,
  a.brand {
    font-size: 22px;
    gap: 0;
  }
}

/* ---------- global header (Towns We Serve is the design reference) ---------- */
body > nav.site-nav {
  position: relative;
  top: auto;
  z-index: 100;
  background: #fcfbf7;
  border-bottom: 1px solid #e7e1d7;
  box-shadow: none;
  backdrop-filter: none;
  font-family: 'Instrument Sans', system-ui, sans-serif;
  font-size: 17px;
  line-height: 1.65;
}

body > nav.site-nav .wrap { width: min(1080px, 92vw); margin: 0 auto; }
body > nav.site-nav .nav-in {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 80px;
  padding: 0;
}
body > nav.site-nav .nav-right {
  display: flex;
  align-items: center;
  gap: 44px;
  font-size: 16px;
  color: #172936;
}
body > nav.site-nav .nav-link,
body > nav.site-nav .nav-tel,
body > nav.site-nav .nav-cta {
  display: inline;
  font-family: 'Instrument Sans', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  text-decoration: none;
  white-space: nowrap;
  color: #172936;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  box-shadow: none;
  transform: none;
  transition: color .2s;
}
body > nav.site-nav .nav-tel { font-weight: 400; }
body > nav.site-nav .nav-tel b { color: #172936; font-weight: 700; }
body > nav.site-nav .nav-cta { padding: 5px 0; border-bottom: 1px solid #b7832e; }
body > nav.site-nav .nav-link:hover,
body > nav.site-nav .nav-tel:hover b,
body > nav.site-nav .nav-cta:hover { color: #a56814; }
body > nav.site-nav .brand { font-size: 30px; }
body > nav.site-nav .brand em { font-size: 1em; padding: 0; }

@media (max-width: 960px) {
  body > nav.site-nav .nav-in { min-height: 66px; }
  body > nav.site-nav .brand { font-size: 24px; }
  body > nav.site-nav .nav-link,
  body > nav.site-nav .nav-tel { display: none; }
}
@media (max-width: 600px) {
  body > nav.site-nav .brand { font-size: 22px; }
}
@media (max-width: 520px) {
  body > nav.site-nav .nav-cta { display: none; }
}

/* ---------- mobile hamburger nav ---------- */
.nav-toggle {
  display: none;
  flex: none;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  margin: 0;
  padding: 0;
  border: 1px solid #d8d1c5;
  border-radius: 10px;
  background: #fff;
  color: #172936;
  cursor: pointer;
  transition: border-color .15s, background .15s;
}

.nav-toggle:hover {
  border-color: #c99435;
  background: #fffcf5;
}

.nav-toggle__bars,
.nav-toggle__bars::before,
.nav-toggle__bars::after {
  display: block;
  width: 18px;
  height: 2px;
  border-radius: 1px;
  background: currentColor;
  transition: transform .2s ease, opacity .2s ease;
}

.nav-toggle__bars {
  position: relative;
}

.nav-toggle__bars::before,
.nav-toggle__bars::after {
  content: "";
  position: absolute;
  left: 0;
}

.nav-toggle__bars::before { top: -6px; }
.nav-toggle__bars::after { top: 6px; }

body.nav-open .nav-toggle__bars {
  background: transparent;
}

body.nav-open .nav-toggle__bars::before {
  top: 0;
  transform: rotate(45deg);
}

body.nav-open .nav-toggle__bars::after {
  top: 0;
  transform: rotate(-45deg);
}

.mobile-nav {
  display: none;
  position: absolute;
  z-index: 95;
  top: 100%;
  right: 0;
  left: 0;
  padding: 10px 0 16px;
  border-bottom: 1px solid #e7e1d7;
  background: #fcfbf7;
  box-shadow: 0 18px 40px rgba(24, 36, 48, .12);
}

.mobile-nav__in {
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: min(1200px, 92vw);
  margin: 0 auto;
}

.mobile-nav a {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 10px 14px;
  border-radius: 10px;
  color: #172936;
  font-family: 'Instrument Sans', system-ui, sans-serif;
  font-size: 16px;
  font-weight: 600;
  text-decoration: none;
}

.mobile-nav a:hover,
.mobile-nav a[aria-current='page'] {
  background: rgba(242, 169, 59, .12);
  color: #a56814;
}

.mobile-nav__cta {
  margin-top: 6px;
  justify-content: center;
  border: 1px solid #c99435;
  background: #c99435;
  color: #fff !important;
}

.mobile-nav__cta:hover {
  background: #b8832e !important;
  border-color: #b8832e;
  color: #fff !important;
}

@media (max-width: 960px) {
  .nav-toggle { display: inline-flex; }
  .nav-link,
  .nav-tel { display: none; }

  body.nav-open {
    overflow: hidden;
  }

  body.nav-open .mobile-nav {
    display: block;
  }

  /* Ensure the site header can host the dropdown even if page CSS is flat. */
  body > nav,
  nav.site-nav,
  nav#nav {
    position: relative;
    z-index: 100;
  }
}

@media (max-width: 520px) {
  .nav-cta { display: none; }
}

body > footer.site-footer {
  --sf-ink: #182430;
  --sf-navy: #142534;
  --sf-paper: #fdfcf8;
  --sf-sun: #f2a93b;
  background: var(--sf-navy);
  color: #c6d2dc;
  padding: 56px 0 42px;
  font-family: 'Instrument Sans', system-ui, sans-serif;
  font-size: 14px;
  line-height: 1.65;
}

/* Homepage footer layout, isolated from page-level section and wrap styles. */
.site-footer > .wrap { width: min(1200px, 92vw); margin: 0 auto; }
.site-footer .site-footer__group { padding: 0; }

.site-footer a { color: inherit; }

.site-footer__top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  padding-bottom: 24px;
  border-bottom: 1px solid rgba(255, 255, 255, .14);
}

.site-footer .site-footer__brand {
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  color: #fff;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -.055em;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
}

.site-footer__brand .brand-the,
.site-footer__brand .brand-offer { color: #fff; }

.site-footer__brand em {
  color: var(--sf-sun);
  font-size: 1em;
  font-style: normal;
  font-weight: 500;
}

.site-footer__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.site-footer .site-footer__action {
  display: inline-flex;
  min-height: 48px;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 10px;
  color: #fff;
  font-weight: 800;
  text-decoration: none;
}

.site-footer .site-footer__action--primary {
  border-color: var(--sf-sun);
  background: var(--sf-sun);
  color: var(--sf-ink);
}

.site-footer__directory {
  display: grid;
  grid-template-columns: 1.05fr 1.55fr .9fr;
  gap: 30px;
  padding: 26px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .14);
}

.site-footer__group h2,
.site-footer__legal-card h2 {
  margin: 0 0 10px;
  color: #fff;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .12em;
  line-height: 1.4;
  text-transform: uppercase;
}

.site-footer__links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}

.site-footer nav.site-footer__links {
  position: static;
  z-index: auto;
  min-height: 0;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}

.site-footer__links a {
  color: #d7e0e6;
  line-height: 1.55;
  text-decoration: none;
}

.site-footer__links a:hover,
.site-footer__links a[aria-current='page'] { color: #ffc65c; }

.site-footer__housing {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  align-items: center;
  gap: 12px;
}

.site-footer__housing-mark {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, .28);
  border-radius: 50%;
  color: #ffc65c;
}

.site-footer__housing-mark svg {
  width: 26px;
  height: 26px;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.8;
}

.site-footer__housing p {
  margin: 0;
  color: #aebcc6;
  font-size: 12px;
  line-height: 1.6;
}

.site-footer__housing a { color: #e5edf2; }

.site-footer__legal-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  padding-top: 24px;
}

.site-footer .site-footer__legal-card {
  min-width: 0;
  padding: 16px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 10px;
  background: rgba(255, 255, 255, .035);
}

.site-footer__legal-card p {
  margin: 0;
  color: #9eafbb;
  font-size: 11.5px;
  line-height: 1.65;
}

.site-footer__legal-card a { color: #dce6ec; }

.mobile-contact-bar { display: none; }
.mobile-contact-bar[hidden] { display: none !important; }

.skip-link {
  position: fixed;
  z-index: 200;
  top: 12px;
  left: 12px;
  transform: translateY(-160%);
  padding: 10px 14px;
  border-radius: 8px;
  background: #fff;
  color: #182430;
  font-weight: 800;
  text-decoration: none;
  box-shadow: 0 8px 30px rgba(24, 36, 48, .2);
}

.skip-link:focus { transform: translateY(0); }

:where(a, button, input, textarea, select):focus-visible {
  outline: 3px solid #f2a93b;
  outline-offset: 3px;
}

@media (max-width: 900px) {
  .site-footer__directory { grid-template-columns: 1fr 1.4fr; }
  .site-footer__directory .site-footer__group:last-child { grid-column: 1 / -1; }
  .site-footer__legal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
  body { padding-bottom: 84px; }

  body > footer.site-footer { position: relative; z-index: 95; padding: 42px 0 28px; }
  .site-footer__top { align-items: flex-start; flex-direction: column; }
  .site-footer__brand { font-size: 26px; }
  .site-footer__directory { grid-template-columns: 1fr; gap: 24px; }
  .site-footer__directory .site-footer__group:last-child { grid-column: auto; }
  .site-footer__legal-grid { grid-template-columns: 1fr; }

  .mobile-contact-bar {
    position: fixed;
    z-index: 90;
    right: 12px;
    bottom: max(10px, env(safe-area-inset-bottom));
    left: 12px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    padding: 8px;
    border: 1px solid rgba(24, 36, 48, .16);
    border-radius: 14px;
    background: rgba(253, 252, 248, .96);
    box-shadow: 0 12px 36px rgba(24, 36, 48, .24);
    backdrop-filter: blur(14px);
  }

  .mobile-contact-bar a {
    min-height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    font-family: 'Instrument Sans', system-ui, sans-serif;
    font-weight: 800;
    text-decoration: none;
  }

  .mobile-contact-bar__call { background: #182430; color: #fff; }
  .mobile-contact-bar__text { background: #f2a93b; color: #182430; }
}

@media (max-width: 380px) {
  .site-footer__actions { width: 100%; }
  .site-footer__action { flex: 1; padding-inline: 12px; }
  .site-footer__links { flex-direction: column; align-items: flex-start; }
}

body > nav.site-nav .nav-right { gap:24px; }
.btn.btn-p { color:#172936; }
.person .role { color:#855215; }
.comparison-foot p, .ledger-fine, .ledger-disclosure { font-size:14px; }
.cost-key { margin:24px 0 12px; padding:20px; border:1px solid #d2a25b; background:#fffaf0; color:#33424f; font:15px/1.65 'Instrument Sans',system-ui,sans-serif; }
.hero-comparison, .comparison-paper { min-width:0; max-width:100%; }
.comparison-table { min-width:0; }
.comparison-table th { white-space:normal; }
@media (min-width:601px) and (max-width:1100px) {
  .hero-grid { grid-template-columns:1fr; min-height:0; }
  .hero-in { top:0; max-width:720px; }
  .hero-comparison { width:min(760px,100%); min-height:0; }
}
.cost-key b { display:block; margin-bottom:6px; color:#172936; }
.sheet .li { align-items:baseline; font-size:13px; }
.sheet .li .lbl { min-width:0; }
.sheet .li .amt { flex-shrink:0; }
.sheet .k-formula small, .comparison-table .net small { display:block; font:600 15px/1.6 'Instrument Sans',system-ui,sans-serif; }
.comparison-foot a, .resource-card a, .resource-next a { color:#805014; text-underline-offset:3px; }
.county-guide { padding:64px 0; }
.resource-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; margin:28px 0 40px; }
.resource-card { border:1px solid #e7e1d7; border-radius:14px; background:#fcfbf7; padding:24px; }
.resource-card h3 { font:500 23px/1.25 Georgia,serif; margin-bottom:12px; }
.resource-card p, .resource-next { font-size:16px; line-height:1.7; }
.resource-card a { display:inline-block; padding:8px 0; }
.local-photo { aspect-ratio:auto; }
.local-photo img { height:auto; aspect-ratio:4/3; }
.local-photo figcaption { padding:12px 16px; color:#4a5966; }
/* Retain the warm palette with readable small text and financial deductions. */
.page-town { --warm-gold:#805014; --sun-deep:#805014; }
.brand em, a.brand em { color:#805014; }
body .eyebrow, body .sec-eyebrow, .housing-link, .ev-crumb a { color:#805014; }
.page-towns-we-serve .eyebrow, .page-towns-we-serve .sec-eyebrow { color:#805014; }
.crumbs a { text-decoration:underline; text-underline-offset:3px; }
.cta-strip .cta-strip-actions .btn-p { color:#172936; }
.sheet .li .amt.minus { color:#ad3e2b; }
.sheet .keep-row .k-amt { color:#19754e; }
.page-town .cta-strip .btn-p { color:#172936; }
.ev-empty h2 { color:#ad3e2b; }
.faq .a ul { padding-left:20px; margin-bottom:16px; }
summary:focus-visible { outline:3px solid #805014; outline-offset:-4px; }
.site-footer .site-footer__legal-card p, .site-footer .site-footer__housing p { color:#c6d2dc; font-size:14px; }
.site-footer__links a { display:inline-block; padding-block:4px; }
body > nav.site-nav .nav-link, body > nav.site-nav .nav-cta { padding-block:12px; }
@media (max-width:960px) { .resource-grid { grid-template-columns:1fr; } }
@media (min-width:961px) and (max-width:1100px) { .sheet .li { flex-wrap:wrap; gap:4px 12px; } }
@media (max-width: 760px) {
  body > nav.mobile-contact-bar {
    position:fixed; width:auto; max-width:calc(100% - 24px); top:auto;
    grid-template-columns:minmax(0, 3fr) minmax(0, 1fr);
    box-sizing:border-box;
  }
  .mobile-contact-bar a { min-width:0; font-size:14px; padding:8px; text-align:center; }
}

@media (prefers-reduced-motion: reduce) {
  .skip-link,
  .site-footer *,
  .mobile-contact-bar *,
  .nav-toggle__bars,
  .nav-toggle__bars::before,
  .nav-toggle__bars::after {
    scroll-behavior: auto;
    transition: none !important;
  }
}
