/* tokens.css is linked from the document before this sheet */

/* ============================================================
   RESET / BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nav-h) + 8px);
  background: var(--well);
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

body {
  background: var(--well);
  color: var(--text);
  font-family: var(--f-body);
  font-size: var(--t-base);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

img, svg, canvas { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button, a, select, summary, label[for] { cursor: pointer; }

/* One house grade for every photograph */
.photo { filter: saturate(0.6) contrast(1.06) brightness(0.84); }

/* --- Browser surfaces --- */
::selection { background: var(--copper); color: var(--well); }
:focus-visible { outline: 2px solid var(--copper-2); outline-offset: 3px; }
html { scrollbar-color: var(--scroll) var(--well); scrollbar-width: thin; }
::-webkit-scrollbar { width: 11px; }
::-webkit-scrollbar-track { background: var(--well); }
::-webkit-scrollbar-thumb { background: var(--scroll); border: 3px solid var(--well); border-radius: 6px; }
::-webkit-scrollbar-thumb:hover { background: var(--scroll-2); }
input:-webkit-autofill, input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--text);
  box-shadow: 0 0 0 1000px var(--well) inset;
  caret-color: var(--text);
}
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ============================================================
   TYPE
   ============================================================ */
h1, h2, h3 {
  font-family: var(--f-display);
  font-weight: 700;
  letter-spacing: -0.025em;
  line-height: 1.02;
  color: var(--text);
  text-wrap: balance;
}
h2 { font-size: var(--t-2xl); }
h3 { font-size: var(--t-h3); font-weight: 600; letter-spacing: -0.02em; }
p { text-wrap: pretty; }
.lede { font-size: var(--t-md); line-height: 1.55; color: var(--text-2); max-width: 56ch; }
.body-follow { margin-top: var(--s-4); font-size: var(--t-m); color: var(--text-2); max-width: 54ch; line-height: 1.65; }
.fine { font-size: var(--t-xs); color: var(--text-3); line-height: 1.55; }
.fine a { color: var(--text-2); text-decoration: underline; text-decoration-color: var(--line-2); text-underline-offset: 3px; padding-block: 0.6em; margin-block: -0.6em; transition: color var(--d-fast) linear, text-decoration-color var(--d-fast) linear; }
.fine a:hover { color: var(--copper-2); text-decoration-color: var(--copper); }
.mono { font-family: var(--f-mono); font-variant-numeric: tabular-nums; letter-spacing: 0; }
.lab { font-size: var(--t-s); font-weight: 600; color: var(--text-2); }

/* Section head: heading, a plain lead, hairline */
.head {
  display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s-5);
  margin-bottom: clamp(var(--s-6), 5vw, var(--s-8));
  padding-bottom: var(--s-4);
  border-bottom: 1px solid var(--line);
}
.head__lead { font-size: var(--t-sm); color: var(--text-2); padding-bottom: 0.5em; max-width: 40ch; text-align: right; }

/* ============================================================
   SHELL
   ============================================================ */
.shell { width: 100%; max-width: var(--shell); margin-inline: auto; padding-inline: var(--gutter); }
section { position: relative; }
.band { padding-block: clamp(var(--s-8), 10vw, var(--s-10)); }

/* Copper lamp: one warm light source per section, breathing slowly */
.lamp {
  --lo: 1;
  position: absolute; border-radius: 50%; pointer-events: none;
  mix-blend-mode: screen; opacity: var(--lo);
  width: 70vw; height: 70vw; max-width: 1000px; max-height: 1000px;
  background: radial-gradient(circle at center, rgba(200,120,60,0.36) 0%, rgba(200,120,60,0.12) 34%, rgba(200,120,60,0) 64%);
}
@media (prefers-reduced-motion: no-preference) {
  .lamp { animation: breathe 10s ease-in-out infinite; will-change: transform, opacity; }
  @keyframes breathe {
    0%, 100% { transform: translate3d(0,0,0) scale(1);        opacity: calc(0.85 * var(--lo)); }
    50%      { transform: translate3d(2%,-3%,0) scale(1.07);  opacity: var(--lo); }
  }
}

/* ============================================================
   SKIP LINK
   ============================================================ */
.skip {
  position: absolute; left: var(--s-4); top: -100px; z-index: 300;
  background: var(--copper); color: var(--well);
  padding: var(--s-3) var(--s-5);
  font-family: var(--f-display); font-weight: 700;
  border-radius: var(--radius-s);
  transition: top var(--d-fast) var(--ease-out);
}
.skip:focus { top: var(--s-4); }

/* ============================================================
   NAV
   ============================================================ */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  border-bottom: 1px solid transparent;
  transition: background var(--d-base) var(--ease-out), border-color var(--d-base) var(--ease-out);
}
.nav[data-stuck="true"], .nav[data-open="true"] {
  background: rgba(8, 17, 26, 0.82);
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  border-bottom-color: var(--line);
}
.nav__in { display: flex; align-items: center; justify-content: space-between; gap: var(--s-5); height: var(--nav-h); }
.mark { display: inline-flex; flex-direction: column; justify-content: center; min-height: 44px; line-height: 1.05; white-space: nowrap; }
.mark__a { font-family: var(--f-display); font-weight: 700; font-size: var(--t-md); letter-spacing: -0.02em; color: var(--text); }
.mark__b { font-size: var(--t-xs); color: var(--text-3); margin-top: 2px; }
.nav__links { display: flex; align-items: center; gap: var(--s-4); }
.nav__links a {
  font-size: var(--t-sm); font-weight: 500; white-space: nowrap; color: var(--text-2);
  min-height: 44px; display: inline-flex; align-items: center; position: relative;
  transition: color var(--d-fast) linear;
}
.nav__links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 8px; height: 1px; background: var(--copper);
  transform: scaleX(0); transform-origin: left; transition: transform var(--d-base) var(--ease-out);
}
.nav__links a:hover { color: var(--text); }
.nav__links a:hover::after { transform: scaleX(1); }
.nav__cta { display: flex; align-items: center; gap: var(--s-4); }
.burger {
  display: none; width: 44px; height: 44px; align-items: center; justify-content: center;
  background: none; border: 1px solid var(--line-2); border-radius: var(--radius-s);
}
.burger span { display: block; width: 18px; height: 2px; background: var(--text); position: relative; transition: background var(--d-fast) linear; }
.burger span::before, .burger span::after { content: ""; position: absolute; left: 0; width: 18px; height: 2px; background: var(--text); transition: transform var(--d-base) var(--ease-out); }
.burger span::before { top: -6px; }
.burger span::after { top: 6px; }
.burger[aria-expanded="true"] span { background: transparent; }
.burger[aria-expanded="true"] span::before { transform: translateY(6px) rotate(45deg); }
.burger[aria-expanded="true"] span::after { transform: translateY(-6px) rotate(-45deg); }

/* ============================================================
   BUTTONS
   ============================================================ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--s-2);
  min-height: 50px; padding: 0 var(--s-6);
  font-family: var(--f-display); font-weight: 600; font-size: var(--t-r); letter-spacing: -0.01em;
  white-space: nowrap; border-radius: 999px; border: 1px solid transparent;
  transition: transform var(--d-fast) var(--ease-mech), box-shadow var(--d-base) var(--ease-out),
              background var(--d-fast) linear, border-color var(--d-fast) linear, color var(--d-fast) linear;
}
.btn:active { transform: translateY(1px); }
.btn--copper { background: var(--copper); color: var(--well); box-shadow: 0 8px 24px -12px rgba(0,0,0,0.6); }
.btn--copper:hover { background: var(--copper-2); }
.btn--ghost { background: rgba(236,231,221,0.04); color: var(--text); border-color: var(--line-2); }
.btn--ghost:hover { border-color: rgba(236,231,221,0.45); background: rgba(236,231,221,0.08); }
.btn--wide { width: 100%; }
.btn:disabled, .btn[aria-busy="true"] { opacity: 0.7; cursor: progress; transform: none; pointer-events: none; }
.btn .mono { font-weight: 500; }

/* ============================================================
   HERO (split: copy left, photo panel right, water light behind)
   ============================================================ */
.hero {
  position: relative; overflow: hidden; isolation: isolate;
  padding-top: calc(var(--nav-h) + clamp(var(--s-6), 6vw, var(--s-9)));
  padding-bottom: clamp(var(--s-7), 7vw, var(--s-9));
  min-height: 100svh;
  display: flex; align-items: center;
}
/* Page-wide water light: fixed behind everything, sections let it through */
.caustics { position: fixed; inset: 0; z-index: 0; width: 100%; height: 100%; pointer-events: none; }
main, .foot { position: relative; z-index: 1; }
.hero__grade {
  position: absolute; inset: 0; z-index: -2;
  background:
    radial-gradient(80% 60% at 15% 30%, rgba(8,17,26,0.85), rgba(8,17,26,0.3) 60%, rgba(8,17,26,0) 100%),
    linear-gradient(180deg, rgba(8,17,26,0.6) 0%, rgba(8,17,26,0.1) 40%, rgba(8,17,26,0.55) 100%);
}
.hero .lamp { left: -28vw; bottom: -30vw; z-index: -1; --lo: 0.8; }
.hero__grid {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap: clamp(var(--s-6), 5vw, var(--s-9)); align-items: center;
}
.hero__h {
  font-size: var(--t-3xl); line-height: 0.98; letter-spacing: -0.035em; color: var(--text-hi);
  text-shadow: 0 2px 30px rgba(0,0,0,0.35);
}
.hero__h .line { display: block; overflow: hidden; padding-bottom: 0.08em; margin-bottom: -0.08em; }
.hero__h .line > span { display: inline-block; }
.hero__h em { font-style: normal; color: var(--copper-2); }
.hero__p { margin-top: var(--s-5); font-size: var(--t-md); line-height: 1.55; color: var(--text-soft); max-width: 48ch; }
.hero__acts { margin-top: var(--s-6); display: flex; align-items: center; gap: var(--s-4); flex-wrap: wrap; }
.hero__trust { margin-top: var(--s-5); font-size: var(--t-sm); color: var(--text-2); display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-4); }
.hero__trust span::before { content: ""; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--copper); margin-right: 10px; vertical-align: 2px; }

/* Photo panel: a tall rounded frame with the photo drifting inside it */
.panel {
  position: relative; border-radius: var(--radius); overflow: hidden;
  aspect-ratio: 4 / 5; max-height: 78svh;
  border: 1px solid var(--line-2);
  box-shadow: 0 40px 90px -40px rgba(0,0,0,0.9);
  background: var(--basin);
}
.panel__media { position: absolute; inset: -12% 0; }
.panel__media img { width: 100%; height: 100%; object-fit: cover; object-position: center; }
.panel__grade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,17,26,0) 45%, rgba(8,17,26,0.85) 100%); }
.panel__cap {
  position: absolute; left: var(--s-5); right: var(--s-5); bottom: var(--s-5);
  display: flex; justify-content: space-between; align-items: flex-end; gap: var(--s-4);
}
.panel__cap .mono { font-size: var(--t-xs); color: var(--text-2); line-height: 1.7; }
.panel__cap b { color: var(--text); font-weight: 500; display: block; }

/* Pre-hide for the entrance only when motion is on and JS is present */
.motion .hero__h .line > span { transform: translateY(112%); }
.motion .hero__p, .motion .hero__acts, .motion .hero__trust { opacity: 0; }
.motion .panel { opacity: 0; }

/* ============================================================
   TRUST ROW
   ============================================================ */
.trust { background: rgba(12,22,32,0.66); border-block: 1px solid var(--line); }
.trust__row { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.trust__cell { padding: var(--s-5) var(--s-5) var(--s-5) 0; border-left: 1px solid var(--line); padding-left: var(--s-5); }
.trust__cell:first-child { border-left: 0; padding-left: 0; }
.trust__v { font-family: var(--f-display); font-weight: 700; font-size: var(--t-lg); letter-spacing: -0.02em; color: var(--text-hi); }
.trust__v .mono { font-family: var(--f-mono); font-weight: 500; font-size: var(--t-md); }
.trust__k { margin-top: var(--s-1); font-size: var(--t-sm); color: var(--text-2); }

/* ============================================================
   WHAT'S GOING ON (symptom picker, native details)
   ============================================================ */
.picker { list-style: none; padding: 0; }
.picker > li { border-top: 1px solid var(--line); }
.picker > li:last-child { border-bottom: 1px solid var(--line); }
.picker details > summary { list-style: none; }
.picker details > summary::-webkit-details-marker { display: none; }
.picker summary {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--s-5);
  padding: var(--s-5) 0; min-height: 64px;
  font-family: var(--f-display); font-weight: 600; font-size: var(--t-h3); letter-spacing: -0.02em; color: var(--text);
  transition: color var(--d-fast) linear;
}
.picker summary:hover { color: var(--copper-2); }
.picker summary .chev { width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--line-2); display: grid; place-items: center; flex: none; transition: transform var(--d-base) var(--ease-out), border-color var(--d-fast) linear, background var(--d-fast) linear; }
.picker summary .chev svg { width: 12px; height: 12px; color: var(--text-2); }
.picker details[open] summary .chev { transform: rotate(45deg); background: var(--copper); border-color: var(--copper); }
.picker details[open] summary .chev svg { color: var(--well); }
.picker__body { padding: 0 0 var(--s-6); display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr); gap: var(--s-6); align-items: start; }
.picker__body p { color: var(--text-2); font-size: var(--t-m); line-height: 1.65; max-width: 56ch; }
.picker__body p + p { margin-top: var(--s-3); }
.picker__do { padding: var(--s-4) var(--s-5); border-left: 2px solid var(--copper); background: rgba(200,120,60,0.06); border-radius: 0 var(--radius-s) var(--radius-s) 0; }
.picker__do .lab { display: block; margin-bottom: var(--s-2); color: var(--copper-2); }
.picker__do p { color: var(--text); font-size: var(--t-m); }
.picker__do .btn { margin-top: var(--s-4); }
.picker .now { display: inline-block; font-family: var(--f-mono); font-size: var(--t-2xs); color: var(--copper-2); margin-left: var(--s-3); letter-spacing: 0.04em; vertical-align: middle; }

/* ============================================================
   SERVICES LEDGER
   ============================================================ */
.ledger { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(var(--s-6), 5vw, var(--s-9)); }
.ledger h3 { padding-bottom: var(--s-3); border-bottom: 1px solid var(--line-2); margin-bottom: var(--s-3); }
.ledger ul { list-style: none; padding: 0; }
.ledger li { padding-block: var(--s-2); border-bottom: 1px solid var(--line); font-size: var(--t-m); color: var(--text-2); }
.ledger li b { color: var(--text); font-weight: 500; }

/* ============================================================
   WATER HEATERS AND GAS (photo left, copy right)
   ============================================================ */
.heaters { background: rgba(12,22,32,0.6); border-block: 1px solid var(--line); overflow: hidden; }
.heaters .lamp { right: -30vw; top: -20vw; --lo: 0.55; }
.heaters__grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(var(--s-6), 5vw, var(--s-9)); align-items: center; }
.frame { position: relative; border-radius: var(--radius); overflow: hidden; aspect-ratio: 4 / 3; border: 1px solid var(--line-2); background: var(--basin); }
.frame__media { position: absolute; inset: -12% 0; }
.frame__media img { width: 100%; height: 100%; object-fit: cover; }
.frame__grade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(8,17,26,0) 60%, rgba(8,17,26,0.7) 100%); }
.spec { list-style: none; padding: 0; margin-top: var(--s-5); display: grid; gap: 0; }
.spec > div { display: grid; grid-template-columns: 10rem 1fr; gap: var(--s-4); padding-block: var(--s-3); border-top: 1px solid var(--line); font-size: var(--t-m); }
.spec > div:last-child { border-bottom: 1px solid var(--line); }
.spec dt { color: var(--text-2); font-weight: 500; }
.spec dd { color: var(--text); }

/* ============================================================
   HOW A CALL GOES (the pipe fills as you scroll)
   ============================================================ */
.steps__grid { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: clamp(var(--s-6), 5vw, var(--s-8)); }
.pipe { position: sticky; top: calc(var(--nav-h) + var(--s-6)); align-self: start; height: min(70svh, 560px); }
.pipe svg { width: 100%; height: 100%; overflow: visible; }
.pipe .wall { fill: none; stroke: var(--copper); stroke-width: 3; }
.pipe .inside { fill: var(--basin); }
.pipe .water { fill: var(--water); }
.pipe .cap { fill: var(--copper); }
.pipe .joint { fill: none; stroke: var(--copper-2); stroke-width: 2; }
.step { display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: var(--s-4); padding-block: clamp(var(--s-6), 5vw, var(--s-8)); border-top: 1px solid var(--line); }
.step:first-child { border-top: 0; padding-top: 0; }
.step__n { font-family: var(--f-mono); font-weight: 500; font-size: var(--t-md); color: var(--copper-2); padding-top: 0.35em; }
.step h3 { margin-bottom: var(--s-3); }
.step p { color: var(--text-2); font-size: var(--t-m); line-height: 1.65; max-width: 56ch; }

/* ============================================================
   REVIEWS (pull quotes over water)
   ============================================================ */
.reviews { overflow: hidden; isolation: isolate; }
.reviews__bg { position: absolute; inset: 0; z-index: -3; }
.reviews__bg img { width: 100%; height: 100%; object-fit: cover; opacity: 0.22; }
.bubbles { position: absolute; inset: 0; z-index: -1; width: 100%; height: 100%; pointer-events: none; }
.reviews__grade { position: absolute; inset: 0; z-index: -2; background: linear-gradient(180deg, var(--well) 0%, rgba(8,17,26,0.5) 30%, rgba(8,17,26,0.5) 70%, var(--well) 100%); }
.reviews .lamp { left: -30vw; top: 0; z-index: -1; --lo: 0.5; }
.quotes { display: grid; gap: clamp(var(--s-6), 5vw, var(--s-8)); }
.quote { display: grid; grid-template-columns: minmax(0, 1fr) 16rem; gap: var(--s-6); align-items: end; padding-top: clamp(var(--s-5), 4vw, var(--s-7)); border-top: 1px solid var(--line); }
.quote:first-child { border-top: 0; padding-top: 0; }
.quote p { font-family: var(--f-display); font-weight: 600; font-size: var(--t-quote); line-height: 1.2; letter-spacing: -0.02em; color: var(--text-hi); text-wrap: pretty; }
.quote p::before { content: "\201C"; color: var(--copper-2); margin-right: 0.1em; }
.quote p::after { content: "\201D"; color: var(--copper-2); margin-left: 0.05em; }
.quote cite { font-style: normal; font-size: var(--t-sm); color: var(--text-2); line-height: 1.6; }
.quote cite b { color: var(--text); font-weight: 600; display: block; }
.reviews__sum { margin-top: clamp(var(--s-6), 5vw, var(--s-8)); padding-top: var(--s-5); border-top: 1px solid var(--line); display: flex; flex-wrap: wrap; gap: var(--s-3) var(--s-6); }
.reviews__sum span { font-size: var(--t-sm); color: var(--text-2); }
.reviews__sum b { color: var(--text); font-weight: 600; }

/* ============================================================
   WHERE WE WORK
   ============================================================ */
.area__grid { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(var(--s-6), 5vw, var(--s-9)); align-items: start; }
.towns { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 var(--s-5); }
.towns li { padding-block: var(--s-3); border-bottom: 1px solid var(--line); font-size: var(--t-m); color: var(--text-2); }
.towns li.home { color: var(--text); font-weight: 600; }
.towns li.home::after { content: " · home"; color: var(--copper-2); font-weight: 500; font-size: var(--t-xs); }

/* ============================================================
   CONTACT
   ============================================================ */
.contact { background: rgba(12,22,32,0.6); border-top: 1px solid var(--line); overflow: hidden; }
.contact .lamp { right: -25vw; bottom: -30vw; --lo: 0.7; }
.contact__grid { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr); gap: clamp(var(--s-6), 6vw, var(--s-9)); align-items: start; position: relative; }
.info { display: grid; }
.info__row { display: grid; grid-template-columns: 7.5rem 1fr; gap: var(--s-4); align-items: baseline; padding-block: var(--s-4); border-bottom: 1px solid var(--line); }
.info__row:first-child { padding-top: 0; }
.info__row:last-child { border-bottom: 0; }
.info__row dt { font-size: var(--t-s); font-weight: 600; color: var(--text-2); }
.info__row dd { color: var(--text); line-height: 1.5; }
.info__tel { display: inline-flex; align-items: center; min-height: 44px; font-family: var(--f-display); font-weight: 700; font-size: var(--t-xl); letter-spacing: -0.03em; color: var(--text-hi); transition: color var(--d-fast) linear; }
.info__tel:hover { color: var(--copper-2); }
.info__note { margin-top: var(--s-1); }
.info__note a { display: inline-flex; align-items: center; min-height: 44px; padding-block: 0; margin-block: 0; }

.form {
  background: rgba(17,29,41,0.85);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
  border: 1px solid var(--line-2); border-radius: var(--radius);
  padding: clamp(var(--s-5), 4vw, var(--s-7));
  box-shadow: 0 40px 90px -40px rgba(0,0,0,0.9);
}
.frow { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s-4); }
.field { display: grid; gap: var(--s-2); margin-bottom: var(--s-4); }
.field > label { font-size: var(--t-s); font-weight: 600; color: var(--text-2); }
.field .req { color: var(--copper-2); }
.field input, .field select, .field textarea {
  background-color: var(--well); border: 1px solid var(--line-2); border-radius: var(--radius-s);
  padding: var(--s-3) var(--s-4); min-height: 50px; font-size: var(--t-r); color: var(--text); width: 100%;
  transition: border-color var(--d-fast) linear, box-shadow var(--d-fast) linear;
}
.field textarea { min-height: 110px; resize: vertical; line-height: 1.5; }
.field input::placeholder, .field textarea::placeholder { color: var(--text-3); opacity: 1; }
.field input:hover, .field select:hover, .field textarea:hover { border-color: rgba(236,231,221,0.4); }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--copper); box-shadow: 0 0 0 2px var(--copper); }
.field select {
  appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23a7b2bd' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right var(--s-4) center; background-size: 12px; padding-right: var(--s-7);
}
.field__err { font-size: var(--t-xs); color: var(--err); display: none; }
.field[data-invalid="true"] input, .field[data-invalid="true"] select { border-color: var(--err); }
.field[data-invalid="true"] .field__err { display: block; }
.form__status { margin-top: var(--s-4); font-size: var(--t-sm); min-height: 1px; }
.form__status[data-state] { padding: var(--s-3) var(--s-4); border-radius: var(--radius-s); border: 1px solid; }
.form__status[data-state="ok"] { background: var(--copper-dim); border-color: rgba(200,120,60,0.5); color: var(--copper-2); }
.form__status[data-state="err"] { background: rgba(255,159,122,0.1); border-color: rgba(255,159,122,0.4); color: var(--err-2); }
.form__gas { margin-top: var(--s-4); color: var(--text-2); }

/* ============================================================
   FOOTER
   ============================================================ */
.foot { border-top: 1px solid var(--line); padding-block: var(--s-7) var(--s-5); background: rgba(8,17,26,0.7); }
.foot__grid { display: grid; grid-template-columns: minmax(0, 1.4fr) repeat(2, minmax(0, 1fr)); gap: var(--s-6); padding-bottom: var(--s-6); border-bottom: 1px solid var(--line); }
.foot__blurb { margin-top: var(--s-3); max-width: 40ch; }
.foot__list { list-style: none; padding: 0; margin-top: var(--s-2); }
.foot__list li { font-size: var(--t-sm); color: var(--text-2); min-height: 36px; display: flex; align-items: center; }
.foot__list a { min-height: 44px; display: inline-flex; align-items: center; color: var(--text-2); transition: color var(--d-fast) linear; }
.foot__list a:hover { color: var(--copper-2); }
.foot__bot { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--s-4); padding-top: var(--s-5); }
.foot__id { font-family: var(--f-mono); font-size: var(--t-xs); color: var(--text-3); }

/* ============================================================
   MOBILE CALL BAR
   ============================================================ */
.callbar {
  display: none; position: fixed; inset: auto 0 0 0; z-index: 250;
  background: var(--copper); color: var(--well);
  font-family: var(--f-display); font-weight: 700; font-size: var(--t-base);
  align-items: center; justify-content: center; gap: var(--s-3);
  min-height: 56px; padding-inline: var(--s-4); padding-bottom: env(safe-area-inset-bottom, 0px);
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1100px) {
  .nav__links, .nav__cta .btn { display: none; }
  .burger { display: inline-flex; }
  .nav__in { height: var(--nav-h-m); }
  .hero { padding-top: calc(var(--nav-h-m) + var(--s-6)); }
  html { scroll-padding-top: calc(var(--nav-h-m) + 8px); }
  .nav__links[data-open="true"] {
    display: flex; flex-direction: column; align-items: stretch; gap: 0;
    position: absolute; inset: var(--nav-h-m) 0 auto 0;
    background: rgba(8,17,26,0.97); border-bottom: 1px solid var(--line);
    padding: var(--s-3) var(--gutter) var(--s-5);
  }
  .nav__links[data-open="true"] a { padding-block: var(--s-3); border-bottom: 1px solid var(--line); font-size: var(--t-base); }
  .nav__links[data-open="true"] a::after { display: none; }
  html:not(.js) .nav__links { display: flex; flex-wrap: wrap; gap: var(--s-4); }
  .pipe { top: calc(var(--nav-h-m) + var(--s-5)); }
}
@media (max-width: 1000px) {
  .hero__grid { grid-template-columns: minmax(0, 1fr); }
  .hero { min-height: 0; }
  .panel { aspect-ratio: 16 / 10; max-height: none; }
  .trust__row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .trust__cell:nth-child(3) { border-left: 0; padding-left: 0; }
  .trust__cell:nth-child(n+3) { border-top: 1px solid var(--line); }
  .ledger { grid-template-columns: minmax(0, 1fr); gap: var(--s-6); }
  .heaters__grid, .area__grid, .contact__grid { grid-template-columns: minmax(0, 1fr); }
  .picker__body { grid-template-columns: minmax(0, 1fr); }
  .quote { grid-template-columns: minmax(0, 1fr); gap: var(--s-4); }
  .towns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  body { padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)); }
  .callbar { display: flex; }
  .hero__acts .btn { width: 100%; }
  .frow { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .head { flex-direction: column; align-items: flex-start; gap: var(--s-2); }
  .head__lead { text-align: left; max-width: none; }
  .trust__row { grid-template-columns: minmax(0, 1fr); }
  .trust__cell { border-left: 0; padding-left: 0; border-top: 1px solid var(--line); }
  .trust__cell:first-child { border-top: 0; }
  .picker summary { font-size: var(--t-lg); }
  .steps__grid { grid-template-columns: 40px minmax(0, 1fr); gap: var(--s-5); }
  .step { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); }
  .spec li { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); }
  .info__row { grid-template-columns: minmax(0, 1fr); gap: var(--s-1); }
  .towns { grid-template-columns: minmax(0, 1fr); }
}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  .btn, .nav__links a::after, .picker summary .chev { transition: none; }
}

/* ============================================================
   PRINT
   ============================================================ */
@media print {
  :root { --text-hi: #000; --text: #000; --text-soft: #222; --text-2: #222; --text-3: #444; --line: #999; --line-2: #777;
          --basin: #fff; --well: #fff; --well-2: #fff; --copper: #7a4a20; --copper-2: #7a4a20; }
  body { background: #fff; color: #000; }
  .nav, .callbar, .caustics, .bubbles, .lamp, .hero__grade, .panel, .frame, .reviews__bg, .reviews__grade, .form, .btn, .skip, .burger, .pipe { display: none !important; }
  .hero { min-height: 0; }
  .hero__h, .quote p { text-shadow: none; }
  .picker__body { display: grid; }
  .fine a::after { content: " (" attr(href) ")"; font-size: var(--t-2xs); word-break: break-all; }
}
