/* Honest HVAC and Plumbing: showpiece styles for the Elementor build.
   Loaded by the hidden HTML widget in the Xpro header template. Holds no content.
   Standard styling (fonts, colors, spacing, borders, hovers) is set on the widgets themselves;
   this file only covers what Elementor has no control for: the hand-drawn layer, the
   load-in reveal, masks, clamps, sticky columns and state classes set by honest.js.
   Containers are targeted by their element ID; widgets by the CSS class set in Advanced. */

:root {
  --ink: var(--e-global-color-primary, #000);
  --ink-soft: var(--e-global-color-secondary, #3b3b38);
  --paper: var(--e-global-color-paper, #fff);
  --stone: var(--e-global-color-stone, #ededea);
  --stone-line: var(--e-global-color-stoneline, #cfcfc9);
  --flame: var(--e-global-color-accent, #2342e8);
  --flame-deep: var(--e-global-color-flamedeep, #1a31b8);
  --ease-out: cubic-bezier(.2, .7, .2, 1);
  --header-h: 68px;
}
html { scroll-padding-top: calc(var(--header-h) + 16px); }
body { overflow-x: clip; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
:focus-visible { outline: 3px solid var(--flame); outline-offset: 3px; border-radius: 2px; }
::selection { background: var(--flame); color: var(--paper); }
.showpiece-code { position: absolute !important; width: 0; height: 0; overflow: hidden; z-index: -1; pointer-events: none; }

/* ---------- Brand marks inside text ---------- */
.stop { color: var(--flame); }
#emergency .stop, #cta .stop, [id$="-cta"] .stop { color: var(--paper); }
.logo-word {
  font-family: var(--e-global-typography-primary-font-family), serif; font-weight: 600;
  font-size: 1.14em; line-height: 1; letter-spacing: -0.01em; color: var(--ink); white-space: nowrap;
}
.elementor-heading-title .logo-word { font-size: 1em; line-height: inherit; }
.elementor-heading-title { text-wrap: balance; }

/* "see ..." cross-reference link */
.see-link .elementor-heading-title a { text-decoration: none; display: inline-flex; align-items: center; gap: .35em; min-height: 44px; }
.see-link em { color: var(--ink-soft); }
.see-link span { color: var(--flame); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; }
.see-link a:hover span { text-decoration-thickness: 2px; }

/* ---------- Buttons: press feedback, never wrap, 52px tall ---------- */
.elementor-button { min-height: 52px; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap;
  transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), border-color 160ms var(--ease-out), transform 160ms var(--ease-out); }
.elementor-button:active { transform: scale(.97); }
.elementor-button .elementor-button-icon svg { width: 20px; height: 20px; }
.elementor-widget-button.elementor-align-justify .elementor-button { width: 100%; }

/* ---------- Hero: dictionary entry ---------- */
.entry-headword .elementor-heading-title { white-space: nowrap; margin-left: -0.04em; }
.entry-subword .elementor-heading-title { white-space: nowrap; margin-left: -0.02em; letter-spacing: -0.005em; }
.entry-pron .elementor-heading-title { display: flex; flex-wrap: wrap; gap: .25em 1em; }
.entry-defs { margin: 0; padding: 0; list-style: none; counter-reset: def; display: flex; flex-direction: column; gap: 12px; max-width: 30em; }
.entry-defs li { counter-increment: def; display: flex; gap: .6em; }
.entry-defs li::before { content: counter(def) "."; flex: none; min-width: 1.1em; }
@media (max-width: 599px) { .entry-defs { gap: 4px; line-height: 1.26; } }
.hero-proof a { color: var(--ink); text-underline-offset: 3px; }
.service-note .elementor-heading-title { text-wrap: balance; }

/* Home hero services index: whole row is the link */
[id^="svc-"] { text-decoration: none; color: inherit; }
[id^="svc-"] .svc-word .elementor-heading-title { transition: color 160ms var(--ease-out); }
[id^="svc-"] .svc-chev { transition: transform 160ms var(--ease-out); }
[id^="svc-"]:hover .svc-word .elementor-heading-title { color: var(--flame); }
[id^="svc-"]:hover .svc-chev { transform: translateX(3px); }
[id^="svc-"]:hover .svc-chev svg, [id^="svc-"]:hover .svc-chev i { fill: var(--flame); color: var(--flame); }

/* Load-in reveal (honest.js splits the headword into letters and adds .is-revealed) */
@media (prefers-reduced-motion: no-preference) {
  .js [data-entry] .entry-headword .elementor-heading-title:not(.is-split) { opacity: 0; }
  .js [data-entry] .entry-letter { display: inline-block; opacity: 0; transform: translateY(.18em); }
  .js [data-entry] .entry-subword, .js [data-entry] .entry-pron, .js [data-entry] .entry-defs li,
  .js [data-entry] .entry-after { opacity: 0; transform: translateY(10px); }
  .js [data-entry] .entry-rule { transform: scaleX(0); transform-origin: left center; }
  .js [data-entry].is-revealed .entry-letter, .js [data-entry].is-revealed .entry-subword,
  .js [data-entry].is-revealed .entry-pron, .js [data-entry].is-revealed .entry-defs li,
  .js [data-entry].is-revealed .entry-after, .js [data-entry].is-revealed .entry-rule {
    opacity: 1; transform: none;
    transition: opacity 520ms var(--ease-out), transform 620ms var(--ease-out);
    transition-delay: var(--delay, 0ms);
  }
  .js [data-entry].is-revealed .entry-rule { transition: transform 700ms cubic-bezier(.65,0,.35,1) var(--delay, 0ms); }
}
.entry-letter { display: inline-block; }

/* Short screens: keep Call / Book on the first screen */
@media (min-width: 960px) and (max-height: 860px) {
  #hero { padding-top: 24px !important; }
  #hero .entry-headword .elementor-heading-title { font-size: min(var(--e-global-typography-headword-font-size), 21vh); }
  #hero .entry-subword .elementor-heading-title { font-size: calc(min(var(--e-global-typography-headword-font-size), 21vh) * .33); }
}
@media (max-width: 599px) and (max-height: 620px) {
  #hero .entry-headword .elementor-heading-title { font-size: min(clamp(5rem, 31vw, 13rem), 25vw); }
  #hero .entry-subword .elementor-heading-title { font-size: calc(min(clamp(5rem, 31vw, 13rem), 25vw) * .33); }
  #hero .entry-defs { font-size: 1.0625rem; line-height: 1.22; }
}
/* Service-page heroes: size the long headwords by screen height too */
@media (min-width: 960px) {
  body .entry--page.e-con .entry-headword .elementor-heading-title { font-size: min(var(--e-global-typography-headwordpage-font-size), 12vh); }
  body .entry--page.e-con .entry-defs { font-size: clamp(1.25rem, 1rem + .6vw, 1.5rem); }
}
.entry--page .entry-headword .elementor-heading-title { white-space: normal; }

/* Phones and tablets: the hero drawing is a small figure strip under the buttons */
.plate-caption i { color: var(--ink); }

/* ---------- Troubleshooter ---------- */
@media (min-width: 960px) { #ts-intro { position: sticky; top: calc(var(--header-h) + 32px); align-self: flex-start; } }
.ts-filter .elementor-button { min-height: 44px; }
.ts-filter.is-active .elementor-button { background-color: var(--ink); color: var(--paper); }
.ts-group-label .elementor-heading-title { text-transform: none; }
[id^="ts-"][hidden] { display: none !important; }
.ts-accordion .e-n-accordion-item-title, .faq-accordion .e-n-accordion-item-title { min-height: 64px; align-items: center; gap: 16px; }
.ts-accordion .e-n-accordion-item-title-header, .faq-accordion .e-n-accordion-item-title-header { flex: 1 1 auto; justify-content: flex-start; text-align: left; }
.ts-accordion .e-n-accordion-item-title-text, .faq-accordion .e-n-accordion-item-title-text { transition: color 160ms var(--ease-out); }
.ts-accordion .e-n-accordion-item-title-icon {
  width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--ink); flex: none;
  display: inline-flex; align-items: center; justify-content: center;
  transition: background-color 160ms var(--ease-out), transform 280ms var(--ease-out);
}
.ts-accordion .e-n-accordion-item[open] > .e-n-accordion-item-title .e-n-accordion-item-title-icon { background: var(--ink); }
#troubleshooter .e-n-accordion-item { border-color: #c4c4be !important; }
.ts-accordion .e-n-accordion-item > [role="region"] { max-width: 40em; }
.ts-urgency p { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0; }
.ts-why strong { color: var(--ink); }
.ts-checks .elementor-icon-list-items { display: flex; flex-direction: column; gap: 4px; }
.ts-checks .elementor-icon-list-icon { display: none !important; }
.ts-check label { display: flex; gap: 12px; align-items: flex-start; padding: 8px 0; cursor: pointer; min-height: 44px; position: relative; }
.ts-check input {
  appearance: none; -webkit-appearance: none; flex: none; width: 24px; height: 24px; margin: 1px 0 0;
  border: 1.5px solid var(--ink); border-radius: 4px; background: var(--paper);
}
.ts-check input:checked { background: var(--flame); border-color: var(--flame); }
.ts-check--drawn input { position: absolute; left: -3px; top: 5px; z-index: 1; width: 32px; height: 32px; margin: 0; opacity: 0; cursor: pointer; }
.ts-check--drawn .ts-box { width: 28px; height: 28px; flex: none; margin: -2px -2px 0 -2px; overflow: visible; transition: transform 260ms cubic-bezier(.3,1.6,.5,1); }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .ts-check--drawn label:hover .ts-box { transform: rotate(-6deg) scale(1.08); }
}
.ts-check--drawn input:focus-visible + .ts-box { outline: 3px solid var(--flame); outline-offset: 1px; border-radius: 6px; }
.ts-check--drawn label > .elementor-icon-list-text { position: relative; transition: color 280ms var(--ease-out); }
.ts-check--drawn input:checked ~ .elementor-icon-list-text { color: var(--ink-soft); }
.ts-strike { position: absolute; left: -4px; top: -3px; overflow: visible; pointer-events: none; }
.ts-meter { display: inline-flex; }
.ts-meter svg { width: 72px; height: 14px; overflow: visible; display: block; }

/* ---------- Reviews carousel ---------- */
[id$="-track"] { scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
[id$="-track"]::-webkit-scrollbar { display: none; }
[id^="review-card-"] { scroll-snap-align: start; }
.review-text:not(.review-text--full) { display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.is-expanded .review-text { display: block; -webkit-line-clamp: unset; overflow: visible; }
.review-text p { margin: 0; }
.review-more .elementor-button { min-height: 44px; text-decoration: underline; text-underline-offset: 3px; }
.review-more[hidden], .review-less, .is-expanded .review-more { display: none !important; }
.is-expanded .review-less { display: block !important; }
.review-more .elementor-button, .review-less .elementor-button { background: none !important; }
.carousel-prev, .carousel-next { cursor: pointer; }
.carousel-prev.is-disabled, .carousel-next.is-disabled { opacity: .3; pointer-events: none; }
[id$="-controls"][hidden] { display: none !important; }
.review-avatar .elementor-heading-title { line-height: 22px; }

/* ---------- Final call-to-action ---------- */
.cta-kicker .elementor-heading-title { display: flex; flex-wrap: wrap; align-items: baseline; gap: .15em .7em; font-family: var(--e-global-typography-primary-font-family), serif; }
.cta-word { font-weight: 500; font-size: clamp(2.5rem, 2rem + 2vw, 3.5rem); line-height: 1; letter-spacing: -0.02em; }
.cta-def { flex-basis: 100%; opacity: .92; }
/* Hover: a hand-drawn pencil underline sketches in under the number */
.phone-display .elementor-heading-title a { position: relative; text-decoration: none; display: inline-block; }
.phone-display .elementor-heading-title a::before {
  content: ""; position: absolute; left: -2%; right: -3%; bottom: -.16em; height: .2em; background: currentColor; pointer-events: none;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 14' preserveAspectRatio='none'%3E%3Cpath d='M3 8.5C38 6 62 10 98 7.6S168 5.2 206 8.2 262 9.4 297 5.8' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3Cpath d='M30 11.2C80 9.6 140 11.8 200 10.2S260 9.4 284 10.8' fill='none' stroke='%23000' stroke-width='1.3' stroke-linecap='round' opacity='.6'/%3E%3C/svg%3E") no-repeat left center / 100% 100%;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 14' preserveAspectRatio='none'%3E%3Cpath d='M3 8.5C38 6 62 10 98 7.6S168 5.2 206 8.2 262 9.4 297 5.8' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3Cpath d='M30 11.2C80 9.6 140 11.8 200 10.2S260 9.4 284 10.8' fill='none' stroke='%23000' stroke-width='1.3' stroke-linecap='round' opacity='.6'/%3E%3C/svg%3E") no-repeat left center / 100% 100%;
  clip-path: inset(0 100% 0 0); transition: clip-path 160ms ease-in;
}
@media (hover: hover) and (pointer: fine) {
  .phone-display .elementor-heading-title a:hover::before, .phone-display .elementor-heading-title a:focus-visible::before {
    clip-path: inset(0 0 0 0); transition: clip-path 650ms cubic-bezier(.45,.05,.35,1);
  }
}

/* ---------- Town index, facts ---------- */
.towns .elementor-icon-list-items { row-gap: 8px; }
.towns .elementor-icon-list-icon { display: none !important; }
.elementor-widget-icon-box .elementor-icon-box-title { margin-top: 0; }

/* ---------- "What we work on" boxes, notebook style ---------- */
[id^="box-"] { position: relative; }
[id^="box-"]::after {
  content: ""; position: absolute; inset: -2px; pointer-events: none; background: var(--ink);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 200' preserveAspectRatio='none'%3E%3Cpath d='M7 9C90 4 230 10 393 5 397 62 392 138 395 194 280 198 120 192 5 196 8 130 3 62 9 4L48 8' fill='none' stroke='%23000' stroke-width='1.8' vector-effect='non-scaling-stroke' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 200' preserveAspectRatio='none'%3E%3Cpath d='M7 9C90 4 230 10 393 5 397 62 392 138 395 194 280 198 120 192 5 196 8 130 3 62 9 4L48 8' fill='none' stroke='%23000' stroke-width='1.8' vector-effect='non-scaling-stroke' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
}
.box-title .elementor-heading-title { position: relative; display: inline-block; padding-bottom: 10px; }
.box-title .elementor-heading-title::after {
  content: ""; position: absolute; left: -2px; right: -6px; bottom: 0; height: 9px; background: var(--flame);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 14' preserveAspectRatio='none'%3E%3Cpath d='M3 8.5C38 6 62 10 98 7.6S168 5.2 206 8.2 262 9.4 297 5.8' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 14' preserveAspectRatio='none'%3E%3Cpath d='M3 8.5C38 6 62 10 98 7.6S168 5.2 206 8.2 262 9.4 297 5.8' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat 0 0 / 100% 100%;
}
.box-list .elementor-icon-list-icon { display: none !important; }
.box-list .elementor-icon-list-item { display: flex; gap: 8px; align-items: flex-start; }
.box-list .elementor-icon-list-item::before {
  content: ""; flex: none; width: 17px; height: 15px; margin-top: .3em; background: var(--flame);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 15'%3E%3Cpath d='M2 8.6C3.6 9.9 4.7 11.4 5.8 13.2 7.9 8.9 10.8 5 15.2 1.8' fill='none' stroke='%23000' stroke-width='2.1' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 17 15'%3E%3Cpath d='M2 8.6C3.6 9.9 4.7 11.4 5.8 13.2 7.9 8.9 10.8 5 15.2 1.8' fill='none' stroke='%23000' stroke-width='2.1' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center / contain;
}
.box-list .elementor-icon-list-item:nth-child(2n)::before { transform: rotate(-7deg) scale(.95); }
.box-list .elementor-icon-list-item:nth-child(3n)::before { transform: rotate(5deg) scaleX(1.08); }

/* ---------- Pencil doodles (drawn by honest.js) ---------- */
.has-doodle { position: relative; }
.doodle { position: absolute; pointer-events: none; overflow: visible; max-width: none !important; height: auto; }
.doodle--behind { z-index: -1; }
#hero-actions { isolation: isolate; }
.sketching .rating-stars .elementor-star-rating, .sketching .hero-stars .elementor-star-rating { visibility: hidden; animation: sketch-fallback 0s linear 3s forwards; }
.stars--sketched .elementor-star-rating { visibility: hidden !important; animation: none !important; }
.sketching .sketch-img img, .sketching img[data-sketch], .sketching svg[data-sketch] { visibility: hidden; animation: sketch-fallback 0s linear 3s forwards; }
@keyframes sketch-fallback { to { visibility: visible; } }
.sketch-img svg.sketch { display: block; max-width: 100%; height: auto; }
[id$='-plate'] .sketch-img svg.sketch { width: 100%; }

/* ---------- Header (Xpro Theme Builder template) ---------- */
#site-header { transition: border-color 280ms var(--ease-out); }
#site-header.is-scrolled { border-bottom-color: var(--stone-line) !important; }
.js .home-page #header-logo { opacity: 0; transform: translateY(6px); transition: opacity 280ms var(--ease-out), transform 280ms var(--ease-out); }
.js .home-page.show-logo #header-logo, .js .home-page #header-logo:focus-within { opacity: 1; transform: none; }
.header-phone .elementor-heading-title a { display: inline-flex; flex-direction: column; align-items: flex-end; text-decoration: none; line-height: 1.2; }
.header-phone .elementor-heading-title a:hover .num { color: var(--flame); }
.header-phone .lbl { font-size: .9375rem; font-weight: 400; color: var(--ink-soft); }
.header-phone .num { font-weight: 600; font-size: 1.125rem; font-variant-numeric: tabular-nums; transition: color 160ms var(--ease-out); }
.header-social a { transition: transform 280ms var(--ease-out); display: inline-flex; }
.header-social a:hover { transform: rotate(-6deg); }

/* ---------- Mobile action bar (footer template) ---------- */
#action-bar { transition: transform 280ms var(--ease-out); -webkit-backdrop-filter: saturate(1.4) blur(10px); backdrop-filter: saturate(1.4) blur(10px);
  padding-bottom: calc(12px + env(safe-area-inset-bottom)) !important; }
.bar-hidden #action-bar, .js body.has-bar-anchor:not(.bar-ready) #action-bar { transform: translateY(110%); }
@media (max-width: 959px) { body { padding-bottom: calc(76px + env(safe-area-inset-bottom)); } }

/* ---------- Footer ---------- */
#site-footer a { text-decoration: none; }
.footer-links a:hover .elementor-icon-list-text { text-decoration: underline; text-underline-offset: 3px; }
.footer-area .elementor-heading-title a, .footer-text-link a { text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(255,255,255,.4); }
.footer-area .elementor-heading-title a:hover, .footer-text-link a:hover { text-decoration-color: currentColor; }
.footer-info .elementor-icon-list-icon svg, .footer-info .elementor-icon-list-icon img { width: 26px; height: 26px; }
/* Doodle icons draw with currentColor: give them the text color of where they sit. */
#site-footer .elementor-icon-list-icon { color: rgba(255,255,255,.92); }
#contact-list .elementor-icon-list-icon, .social-doodles .elementor-icon-list-icon { color: inherit; }
.social-doodles .elementor-icon-list-icon svg { width: 40px; height: 40px; transition: transform 280ms var(--ease-out); }
.social-doodles .elementor-icon-list-item:hover .elementor-icon-list-icon svg { transform: rotate(-6deg) scale(1.06); }
#site-footer .social-doodles .elementor-icon-list-item { color: #fff; }
.elementor-widget-image.elementor-widget { text-align: inherit; }
.footer-info svg path { transform-box: view-box; transform-origin: 20px 20px; }
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .footer-info--pin:hover svg path:not(.pin-ground) { animation: pin-drop 620ms cubic-bezier(.3,.7,.3,1); }
  .footer-info--clock:hover svg path:nth-child(2) { animation: clock-tick 900ms steps(1, end); }
  .footer-info--phone:hover svg { animation: phone-buzz 520ms linear; }
}
@keyframes pin-drop { 0% { transform: translateY(-9px); } 55% { transform: translateY(1.5px); } 75% { transform: translateY(-2px); } 100% { transform: translateY(0); } }
@keyframes clock-tick { 0% { transform: rotate(0deg); } 33% { transform: rotate(30deg); } 66% { transform: rotate(60deg); } 100% { transform: rotate(0deg); } }
@keyframes phone-buzz { 0%, 100% { transform: rotate(0deg); } 10% { transform: rotate(-12deg); } 20% { transform: rotate(10deg); } 30% { transform: rotate(-10deg); } 40% { transform: rotate(8deg); } 50% { transform: rotate(-6deg); } 60% { transform: rotate(4deg); } 70% { transform: rotate(0deg); } }

/* ---------- Service-area lookup (form + map are HTML widgets; answers are native containers) ---------- */
#area-yes, #area-no { display: none !important; }
.js #area-idle:not(.is-shown) { display: none !important; }
#area-yes.is-shown, #area-no.is-shown { display: flex !important; }
.area-form { display: flex; flex-direction: column; gap: 12px; margin: 0 0 24px; }
.area-label { font-weight: 600; font-size: 1rem; }
.area-field { display: flex; gap: 8px; }
.area-input { flex: 1 1 auto; min-width: 0; min-height: 54px; padding: 12px 16px; font: inherit; font-size: 1.0625rem; color: var(--ink);
  background: var(--paper); border: 1.5px solid #8a8a84; border-radius: 4px; transition: border-color 160ms var(--ease-out), box-shadow 160ms var(--ease-out); }
.area-input:focus { outline: none; border-color: var(--flame); box-shadow: 0 0 0 3px rgba(35,66,232,.25); }
.area-check { min-height: 54px; padding: 0 24px; border: 2px solid var(--flame); border-radius: 999px; background: var(--flame); color: var(--paper);
  font: 600 1.0625rem/1.1 var(--e-global-typography-accent-font-family), sans-serif; cursor: pointer; transition: background-color 160ms var(--ease-out); }
.area-check:hover { background: var(--flame-deep); border-color: var(--flame-deep); }
.area-chip.is-active .elementor-button { background: var(--ink) !important; color: var(--paper) !important; border-color: var(--ink) !important; }
.area-map { width: 100%; max-width: 560px; margin-inline: auto; }
.area-map svg { width: 100%; height: auto; overflow: visible; }
.area-map .ring { fill: none; stroke: #bdbdb6; stroke-width: 1; stroke-dasharray: 2 5; }
.area-map .ring-label { font: 12px var(--e-global-typography-text-font-family), sans-serif; fill: var(--ink-soft); }
.area-map .hub { fill: var(--ink); }
.area-map .town-dot { fill: var(--paper); stroke: var(--ink); stroke-width: 2; transition: r 280ms var(--ease-out), fill 160ms var(--ease-out); }
.area-map .town-label { font: 500 15px var(--e-global-typography-text-font-family), sans-serif; fill: var(--ink); transition: fill 160ms var(--ease-out); }
.area-map .hub-label { font: 600 15px var(--e-global-typography-text-font-family), sans-serif; fill: var(--ink); }
.area-map .town { cursor: pointer; }
.area-map .town.is-active .town-dot { fill: var(--flame); stroke: var(--flame); r: 9; }
.area-map .town.is-active .town-label, .area-map .town.is-active .hub-label { fill: var(--flame); font-weight: 700; }
.area-map .town.is-active .hub { fill: var(--flame); }
.area-map .town:focus { outline: none; }
.area-map .town:focus-visible .town-dot, .area-map .town:focus-visible .hub { stroke: var(--flame); stroke-width: 4; }
[id^="town-"] { scroll-margin-top: calc(var(--header-h) + 24px); transition: background-color 280ms var(--ease-out); }
[id^="town-"].is-active { background: var(--e-global-color-flametint, #e7ebfd); box-shadow: -12px 0 0 var(--e-global-color-flametint, #e7ebfd), 12px 0 0 var(--e-global-color-flametint, #e7ebfd); }
.area-places strong, .area-zips strong { color: var(--ink); }
.area-place { border-radius: 3px; transition: color 160ms var(--ease-out), background-color 160ms var(--ease-out); scroll-margin-top: calc(var(--header-h) + 24px); }
.area-place.is-active { color: var(--flame); font-weight: 700; background: var(--e-global-color-flametint, #e7ebfd); padding: 1px 4px; }
.area-footnote { padding-top: 12px; max-width: 36em; background: linear-gradient(#a3a39d, #a3a39d) no-repeat top left / 72px 1px; }

/* ---------- Contact ---------- */
.contact-sms a, .contact-sms-link a { color: var(--ink-soft); text-underline-offset: 3px; display: inline-flex; align-items: center; min-height: 44px; }
.contact-sms a:hover, .contact-sms-link a:hover, .contact-address a:hover { color: var(--flame); }
.contact-address a { text-decoration: none; }
.contact-link a { text-decoration: underline; text-underline-offset: 3px; }
.contact-link a:hover { color: var(--flame); }

/* ---------- WPForms (styled on the widget; these cover the parts it has no control for) ---------- */
.honest-wpforms .wpforms-container { margin: 0 !important; }
.honest-wpforms .wpforms-field { padding: 0 0 24px !important; }
.honest-wpforms .wpforms-field input[type=text], .honest-wpforms .wpforms-field input[type=email], .honest-wpforms .wpforms-field select { min-height: 54px; max-width: 100% !important; }
.honest-wpforms .wpforms-field textarea { min-height: 132px; max-width: 100% !important; }
.honest-wpforms .wpforms-field input:focus, .honest-wpforms .wpforms-field select:focus, .honest-wpforms .wpforms-field textarea:focus { box-shadow: 0 0 0 3px rgba(35,66,232,.25) !important; }
.honest-wpforms .wpforms-required-label { color: var(--flame) !important; }
.honest-wpforms .wpforms-field-radio ul { display: flex !important; flex-wrap: wrap; gap: 8px; }
.honest-wpforms .wpforms-field-radio li { position: relative; margin: 0 !important; padding: 0 !important; }
.honest-wpforms .wpforms-field-radio li input { position: absolute !important; opacity: 0 !important; width: 1px !important; height: 1px !important; margin: 0 !important; }
.honest-wpforms .wpforms-field-radio li label { display: inline-flex !important; align-items: center; min-height: 48px; padding: 0 16px !important; margin: 0 !important;
  border: 1.5px solid #8a8a84; border-radius: 999px; cursor: pointer; transition: background-color 160ms var(--ease-out), color 160ms var(--ease-out), border-color 160ms var(--ease-out); }
.honest-wpforms .wpforms-field-radio li.wpforms-selected label, .honest-wpforms .wpforms-field-radio li input:checked + label { background: var(--ink); color: var(--paper); border-color: var(--ink); }
.honest-wpforms .wpforms-field-radio li input:focus-visible + label { outline: 3px solid var(--flame); outline-offset: 2px; }
.honest-wpforms .wpforms-submit-container { padding: 0 !important; }
.honest-wpforms button.honest-submit, .honest-wpforms .wpforms-submit { width: 100%; min-height: 54px; cursor: pointer; transition: background-color 160ms var(--ease-out); }
.honest-wpforms .wpforms-error { color: #b42318 !important; font-weight: 600; font-size: .9375rem !important; }
.honest-wpforms .wpforms-confirmation-container-full { background: none !important; border: 0 !important; border-top: 4px solid var(--ink) !important; padding: 24px 0 0 !important; }
.honest-wpforms .wpforms-confirmation-container-full h3 { font-family: var(--e-global-typography-secondary-font-family), serif; font-weight: 500; font-size: var(--e-global-typography-secondary-font-size); margin: 0 0 12px; }
@media (max-width: 639px) { .honest-wpforms .wpforms-one-half { width: 100% !important; margin-left: 0 !important; } }

/* ---------- FAQ answers ---------- */
.faq-accordion .e-n-accordion-item-title-icon {
  width: 32px; height: 32px; border-radius: 50%; border: 1.5px solid var(--ink); flex: none;
  display: inline-flex; align-items: center; justify-content: center; transition: background-color 160ms var(--ease-out);
}
.faq-accordion .e-n-accordion-item[open] > .e-n-accordion-item-title .e-n-accordion-item-title-icon { background: var(--ink); }

/* ---------- Plates on phones and tablets: a small figure strip under the buttons ---------- */
@media (max-width: 959px) { [id$="-plate"]:not([id="about-plate"]) { border-top: 1px solid var(--stone-line); } }

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