
@font-face{font-family:'Oswald M';font-style:normal;font-weight:400;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/cgaIrkaP9Empe8_PwXbajFtXRa8TVwTICgirnJhmVJw.woff2) format('woff2')}
@font-face{font-family:'Oswald M';font-style:normal;font-weight:700;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/dI-qzxlKVQA6TUC5RKSb31tXRa8TVwTICgirnJhmVJw.woff2) format('woff2')}
@font-face{font-family:'Helvetica L';font-style:normal;font-weight:400;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/helvetica-w01-light.woff2) format('woff2')}
@font-face{font-family:'Helvetica B';font-style:normal;font-weight:700;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/helvetica-w01-bold.woff2) format('woff2')}
@font-face{font-family:'DIN Next L';font-style:normal;font-weight:400;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/din-next-w01-light.woff2) format('woff2')}
@font-face{font-family:'Avenir L';font-style:normal;font-weight:400;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/avenir-lt-w01_35-light1475496.woff2) format('woff2')}
@font-face{font-family:'Playfair B';font-style:normal;font-weight:700;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/UC3ZEjagJi85gF9qFaBgIIWMvkC5IXg8PD2cMeMDjBI.woff2) format('woff2')}
@font-face{font-family:'Praise';font-style:normal;font-weight:400;font-display:swap;src:url(https://media.beargrassai.com/silcoplumbingmt/fonts/qkBUXvUZ-cnFXcFCBvm7zrxHmDzC.woff2) format('woff2')}
/* Silco brand system (BRAND-GUIDE.md, 2026-07-05): navy ground, lime primary
   vivid on navy, magenta CTAs, blue structural accent. Base values do not move;
   token names kept so the whole cascade re-grounds from this block. */
:root{
/* Brand base — LOCKED (BRAND-GUIDE v1.0) */
--navy:#0B1B4D;--lime:#B8EF0C;--magenta:#FF008C;--blue:#0333E2;
--red:var(--magenta);--teal:var(--blue); /* legacy aliases — do not extend */
/* Legacy navy-ground aliases (retired as templates move off navy grounds) */
--warm:#0B1B4D;--mauve:#0B1B4D;--pinkgray:#E7ECF5;
/* Neutrals */
--ground:#F1F4FA;--paper:#F1F4FA;--card:#FFFFFF;--ink:#1A1A1A;--text:#1A1A1A;--on-navy:#FFFFFF;
--panel:#E7ECF5;--star:#F0B12B;--line:#DFE5F0;--ice:#D9E0EF;
--gray-soft:#97A3C2;--gray:#7887AB;--gray-deep:#57648C;
/* Radii — 8px language */
--radius-btn:8px;--radius-card:12px;--radius-chip:8px;--radius-pill:999px;
/* Spacing — 8px grid */
--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;
/* Containers — three, collapses the six drifting maxes */
--container-max:1200px;--wide-max:1080px;--content-max:720px;
/* Elevation — navy-tinted, not black */
--shadow-card:0 2px 10px rgba(11,27,77,.08);--shadow-card-hover:0 6px 20px rgba(11,27,77,.12);--shadow-cta:0 4px 14px rgba(255,0,140,.35);
/* Type scale */
--fs-h1:clamp(2rem,4vw,3rem);--fs-h2:clamp(1.6rem,2.6vw,2.1rem);--fs-h3:1.3rem;--fs-body:1.0625rem;--fs-small:.85rem;--fs-kicker:.75rem;
/* Motion */
--dur-fast:120ms;--dur:180ms;--dur-slow:280ms;--ease:cubic-bezier(.2,.7,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);
/* Fonts */
--display:'Oswald M',Helvetica,Arial,sans-serif;--body:'Helvetica L',Helvetica,Arial,sans-serif;
--bold:'Helvetica B',Helvetica,Arial,sans-serif;--small:'DIN Next L',Helvetica,Arial,sans-serif;
--avenir:'Avenir L',Helvetica,Arial,sans-serif;--script:'Praise',cursive;--serif:'Playfair B',Georgia,serif}
*{box-sizing:border-box}
body{margin:0;font:17px/1.55 var(--body);color:var(--text);background:var(--ground)}
body.dark{background:var(--warm);color:#E6EAF3}
img{max-width:100%;height:auto}
a{color:var(--teal)}
body.dark a{color:#fff}
h1:where(:not([class*="was-h"])),h2:where(:not([class*="was-h"])),h3:where(:not([class*="was-h"])),:is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-family:var(--display);font-weight:400;line-height:1.3;margin:0 0 .6em}

/* ---------- header (source chrome: ONE compact ~117px bar — Mark's desktop
   review 2026-06-12. Logo + phone + Book Online sit left, vertically centered;
   the nav tabs ride the TOP-right (red active pill) with the letter-spaced
   areas tagline + social icons tucked under them. The mascot does NOT live in
   the bar — the original uses it in the hero panel's white chip.) ---------- */
header.site{background:var(--navy);color:#fff;padding:21px 26px 19px;position:sticky;top:0;z-index:100}
header.site .bar{display:flex;align-items:center;gap:26px;max-width:1240px;margin:0 auto}
header.site .lockup{display:flex;align-items:center;gap:18px}
header.site .logo{display:block;width:116px;height:64px}
header.site .logo img{height:64px;width:auto;display:block}
header.site .phone{color:#fff;text-decoration:none;font-family:var(--display);font-size:2rem;letter-spacing:.01em;white-space:nowrap}
.book{display:inline-block;background:var(--red);color:#fff;border-radius:var(--radius-btn);padding:14px 20px;text-decoration:none;font-family:var(--bold);font-weight:700;font-size:1.5rem;line-height:1;white-space:nowrap;box-shadow:0 4px 16px rgba(255,0,140,.45)}
.book .bl-short{display:none}
header.site .grow{flex:1}
/* A2 (2026-07-12): pink-shirt mascot centered in the header bar, flanked by the two
   .grow spacers. Decorative (logo carries the name), so alt="" aria-hidden. Hidden
   below full desktop where the nav compacts and the bar has no room. */
header.site .hmascot{flex:none;height:78px;width:auto;display:block}
@media(max-width:1180px){header.site .hmascot{display:none}}
header.site .right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
header.site nav{display:flex;align-items:center;background:rgba(255,255,255,.08);border-radius:var(--radius-chip);overflow:visible}
header.site nav>a,header.site nav>.more{display:flex;align-items:center}
header.site nav .drop,header.site nav .more>span:first-child{display:flex;align-items:center;line-height:1.2}
header.site nav a{color:#fff;text-decoration:none;font-size:.95rem;font-family:var(--body);padding:8px 16px;border-radius:var(--radius-chip);white-space:nowrap}
header.site nav a.active{background:var(--red)}
header.site nav .more{position:relative}
header.site nav .more span{display:block;color:#fff;font-size:.95rem;padding:8px 16px;cursor:default}
header.site nav .more .menu{display:none;position:absolute;right:0;top:100%;background:var(--navy);min-width:170px;z-index:50;border-radius:0 0 var(--radius-chip) var(--radius-chip);box-shadow:0 8px 22px rgba(0,0,0,.4)}
header.site nav .more[open] .menu,header.site nav .more .dd[open] .menu{display:block}
/* A3 v3.2 (2026-07-12, Mark): dropdowns open on BOTH hover AND caret-click. Hover is a
   pointer-only convenience (no aria change); the caret button drives .open + aria-expanded
   and is the touch + keyboard path (hover does nothing on touch, so this must not regress).
   Escape + click-outside still clear .open. Mobile burger path (static submenu) unaffected. */
header.site nav .more:hover .menu{display:block}
header.site nav .more .menu a{display:block;border-radius:0;text-align:left;padding:10px 16px}
/* A3 Part 1 (2026-07-12): lime hover for top-level AND dropdown items (one shared
   rule, per Anali — the old rgba(255,255,255,.12) tint read near-invisible). A lime
   fill needs navy text (white-on-lime fails contrast); active items keep the red. */
header.site nav .more .menu a:hover,header.site nav a:not(.active):hover{background:var(--lime);color:var(--navy)}
/* A3 Part 2: click-open trigger button (replaces the removed :hover rule). For
   Services / Locations it is a caret-only button beside the .drop hub link; for
   "More" it carries the label text. Caret moved off .drop onto the button. */
header.site nav .more .nav-trigger{display:inline-flex;align-items:center;background:none;border:0;color:#fff;font-family:var(--body);cursor:pointer}
header.site nav .more .nav-trigger,header.site nav .more>.nav-trigger{font-size:.95rem;padding:8px 16px;line-height:1.2}
header.site nav .nav-drop .nav-trigger{padding:8px 12px 8px 2px}
header.site nav .more .nav-trigger::after{content:'⌄';margin-left:6px;font-size:.8em;opacity:.85;display:inline-block;transition:transform .15s ease}
header.site nav .more[open] .nav-trigger::after,header.site nav .more .dd[open] .nav-trigger::after{transform:rotate(180deg)}
header.site nav .more .nav-trigger:focus-visible{outline:2px solid var(--lime);outline-offset:2px;border-radius:var(--radius-chip)}
@media(prefers-reduced-motion:reduce){header.site nav .more .nav-trigger::after{transition:none}}
header.site nav .more .menu{min-width:214px}
/* Services/Locations menus open under their own label (left-aligned); only the
   rightmost "More" stays right-anchored. Fixes the migration mis-alignment. */
header.site nav .nav-drop{position:relative}
header.site nav .nav-drop .menu{left:0;right:auto}
header.site nav .more .menu a{white-space:nowrap}
header.site .areasrow{display:flex;align-items:center;gap:16px}
/* A1 (2026-07-12): brighten the "band under the top logo/nav" — the areas line read
   dim in --ice (#D9E0EF) against navy; lift to a crisp near-white so it pops. */
header.site .areas{color:#EEF3FF;font-family:var(--small);font-size:.84rem;letter-spacing:.32em;text-transform:uppercase;white-space:nowrap}
header.site .soc{display:flex;gap:12px;align-items:center}
header.site .soc svg{width:24px;height:24px;fill:#9DB0D6}
header.site .soc [class^="icon--"]{width:24px;height:24px;background-color:#9DB0D6}
#navtoggle,.burger{display:none}

/* tablet widths (769-1180): the desktop bar compacts so nothing overflows
   (the clone only handled 1440/320; this range ran the nav offscreen) */
@media(max-width:1180px) and (min-width:769px){
  header.site{padding:16px 18px 15px}
  header.site .bar{gap:14px}
  header.site .lockup{gap:12px}
  header.site .logo{width:94px;height:52px}
  header.site .logo img{height:52px}
  header.site .phone{font-size:1.45rem}
  .book{font-size:1.15rem;padding:11px 14px}
  header.site nav a{padding:8px 10px;font-size:.88rem}
  header.site nav .more span{padding:8px 10px;font-size:.88rem}
  header.site .areas{font-size:.74rem;letter-spacing:.2em}
}

/* ---------- shared dark tail (source: EVERY page ends in the #4B4444 band:
   CTA + the Google-map region + dashed rule + link columns + #242424 legal.
   The map region now LOOKS like the map (Mark's 2026-06-12 review): the
   original's own dark-themed embed, shipped as a capture-derived static
   (site/assets/chrome/footer-map-static*.png, provenance in MANIFEST — the
   approved MPS treatment) with the red GET DIRECTIONS chip overlaid; the
   whole region links to Google Maps directions.) */
.tail{background:var(--warm);color:var(--ice)}
.cta-band{padding:46px 24px 0;text-align:center}
.cta-band .serving{font-family:var(--avenir);font-size:1.4rem;color:var(--lime);margin:0 0 10px}
.cta-band h2:where(:not([class*="was-h"])){font-family:var(--bold);font-weight:700;font-size:2.5rem;letter-spacing:-.01em;margin:0 0 16px;color:#F4F7FC}
.cta-band .appt{font-family:var(--avenir);font-size:1.2rem;margin:0 0 6px}
.cta-band .appt a,.cta-band .mail a{color:inherit}
.cta-band .appt a.plain,.cta-band .mail a{text-decoration:none}
.cta-band .mail{font-family:var(--avenir);font-size:1.2rem;margin:0 0 18px}
.cta-band .soc svg{width:30px;height:30px;fill:var(--gray-soft);margin:0 10px}
.cta-band .soc [class^="icon--"]{width:30px;height:30px;background-color:var(--gray-soft);margin:0 10px}
/* Coverage panel — replaces the footer map (service-area business, no storefront pin) */
.coverage{max-width:var(--wide-max);margin:0 auto;padding:var(--space-7) var(--space-5) var(--space-6);text-align:center}
.cov-kicker{font-family:var(--small);text-transform:uppercase;letter-spacing:.2em;font-size:var(--fs-kicker);color:var(--lime);margin:0 0 var(--space-2)}
.cov-head{font-family:var(--display);font-weight:700;font-size:var(--fs-h2);color:#fff;margin:0 0 var(--space-5)}
/* .cov-map removed (B5, 2026-07-12): homepage service-area map embed dropped per Anali;
   the coverage section text + city chips remain. */
.cov-chips{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3)}
.cov-chips .chip{font-family:var(--small);font-size:.92rem;color:var(--on-navy);text-decoration:none;border:1.5px solid var(--lime);border-radius:var(--radius-pill);padding:8px 18px;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}
.cov-chips .chip:hover{background:var(--lime);color:var(--navy)}
footer{padding:0 24px}
footer .rule{border-top:2px dashed var(--teal);max-width:1130px;margin:0 auto 20px}
footer .cols{display:flex;gap:60px;max-width:1130px;margin:0 auto;padding-bottom:22px;flex-wrap:wrap}
footer .group{flex:1;min-width:300px}
footer .group h2:where(:not([class*="was-h"])){font-family:var(--small);font-size:.95rem;letter-spacing:.05em;text-transform:uppercase;text-align:center;text-decoration:underline;margin:0 0 12px;font-weight:400}
footer .group ul{list-style:none;margin:0;padding:0;columns:3;column-gap:28px}
footer .group li{padding:2px 0;break-inside:avoid;font-family:var(--small);font-size:.92rem}
footer a{color:inherit;text-decoration:underline}
.legal{background:var(--navy);color:#fff;font-family:var(--small);font-size:.9rem;padding:12px 80px}
.legal a{color:inherit;text-decoration:underline}
/* source mobile master chrome below the legal strip (hidden on desktop) */
.below{display:none}

/* ---------- home (live-original composition, Mark's 2026-06-12 deltas):
   the hero is ONE grid composition — the truck photo, the white badge CARD
   center-left ON the photo (badge row on a rounded white card + the straight
   notched ribbon with the script/serif truth lines), and the warm panel
   (mascot chip + dark heading + red-text Call Us pill + body) pulled up to
   overlap the photo's gravel bottom. The Google pill floats fixed
   bottom-left (fix 5), out of the flow. ---------- */
.home-hero{display:grid}
.home-hero>*{grid-area:1/1}
.home-hero picture{z-index:0;width:100%;display:block}
.home-hero img.truck{width:100%;display:block;height:620px;object-fit:cover;object-position:center 58%;z-index:0}
.badge-card{z-index:3;justify-self:end;align-self:start;margin:318px 4.2% 0 0;width:470px}
.badge-card .badges{display:block;background:#fff;border-radius:var(--radius-chip);box-shadow:0 4px 14px rgba(0,0,0,.3);width:305px;height:auto;margin:0 auto 10px}
.badge-card .strip{background:#fff;box-shadow:0 4px 14px rgba(0,0,0,.35);padding:9px 30px 11px;text-align:center;clip-path:polygon(0 0,100% 0,calc(100% - 16px) 50%,100% 100%,0 100%,16px 50%)}
.badge-card .script{font-family:var(--script);font-size:1.7rem;color:var(--text);white-space:nowrap;display:block;line-height:1.25}
.badge-card .serif{font-family:var(--serif);font-size:1.55rem;color:var(--text);white-space:nowrap;display:block;line-height:1.3}
.hero-panel{z-index:2;margin-top:520px;background:var(--warm);padding:36px 24px 28px}
.hero-panel .inner{max-width:920px;margin:0 auto}
.hero-panel .lead{display:flex;align-items:center;gap:22px;margin:0 0 14px 56px;position:relative}
.hero-panel .chip{flex:none;background:#fff;border-radius:var(--radius-chip);width:118px;height:118px;display:flex;align-items:center;justify-content:center;padding:8px}
.hero-panel .chip img{height:100px;width:auto;display:block}
.hero-panel h1:where(:not([class*="was-h"])){font-size:2.5rem;color:#FFFFFF;margin:0;flex:1;line-height:1.25;padding-right:225px}
.callus{position:absolute;right:0;bottom:4px;background:var(--red);color:#fff;border-radius:var(--radius-btn);padding:15px 46px;text-decoration:none;font-family:var(--avenir);font-size:1.7rem;line-height:1;white-space:nowrap;box-shadow:0 4px 16px rgba(255,0,140,.45)}
body.dark .callus{color:#fff}
.hero-panel p{font-family:var(--body);font-size:1.05rem;line-height:1.6;color:var(--ice);text-align:left;margin:.6em 0}
.hero-panel .sched{display:inline-block;margin-top:10px;color:var(--lime);font-family:var(--display);font-size:1.05rem;text-decoration:underline}
.gpill{display:inline-flex;align-items:center;gap:12px;background:#fff;color:var(--text);border-radius:var(--radius-chip);box-shadow:0 6px 18px rgba(0,0,0,.35);padding:9px 16px;font-family:var(--small);text-decoration:none}
.gpill img{width:30px;height:30px;padding-right:12px;border-right:1px solid var(--line)}
.gpill .col{display:flex;flex-direction:column;align-items:flex-start;gap:1px}
.gpill .stars{color:var(--star);font-size:1.05rem;letter-spacing:.12em;line-height:1.1}
.gpill .lbl{font-size:.78rem;color:var(--gray-deep);letter-spacing:.06em;text-transform:uppercase}
.gfix{position:fixed;left:16px;bottom:16px;z-index:90;margin:0}
.review-band{position:relative;background-size:cover;background-position:32% 68%;padding:155px 0}
.review-strip{background:rgba(255,255,255,.94);padding:26px 24px 22px;text-align:center}
.review-strip .qmark{font-family:var(--serif);font-size:4rem;line-height:.5;color:var(--red);display:block;margin-bottom:18px}
.review-strip .stars{color:var(--star);font-size:1.15rem;letter-spacing:.45em;margin-bottom:10px}
.review-strip blockquote{margin:0 0 14px;font-family:var(--bold);font-weight:700;font-size:1.35rem;color:var(--text)}
.review-strip .who{font-family:var(--small);color:var(--gray-deep);font-size:1rem}
.review-strip .when{font-family:var(--small);color:var(--gray);font-size:.9rem;margin-top:4px}
/* rotating testimonial gallery (restores the original's rotating reviews) */
.review-band[data-rotate] .review-strip{display:grid;max-width:760px;margin:0 auto}
.rev-slide{grid-area:1/1;margin:0;opacity:0;visibility:hidden;transition:opacity var(--dur-slow) var(--ease)}
.rev-slide.is-active{opacity:1;visibility:visible}
.rev-slide figcaption{display:flex;flex-direction:column;gap:2px;margin-top:12px}
.rev-slide .who{font-family:var(--small);color:var(--gray-deep);font-size:1rem;font-weight:700}
.rev-slide .when{font-family:var(--small);color:var(--gray);font-size:.9rem}
.rev-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;display:flex;align-items:center;justify-content:center;width:46px;height:46px;border:0;border-radius:var(--radius-pill);background:rgba(11,27,77,.55);color:#fff;font-size:1.7rem;line-height:1;cursor:pointer;transition:background var(--dur) var(--ease)}
.rev-arrow:hover{background:var(--magenta)}
.rev-prev{left:18px}.rev-next{right:18px}
.rev-dots{position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:center;gap:10px;z-index:3}
.rev-dot{width:10px;height:10px;padding:0;border:0;border-radius:var(--radius-pill);background:rgba(255,255,255,.55);cursor:pointer;transition:background var(--dur) var(--ease)}
.rev-dot.is-active{background:var(--lime)}
.svc-band{padding:0 24px 44px}
.svc-band .kicker{text-align:center;font-family:var(--small);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--navy);margin:0 0 12px}
.svc-panelbg{background:transparent;max-width:var(--wide-max);margin:0 auto;padding:28px 24px 30px}
.svc-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:repeat(3,1fr);gap:24px;justify-items:center}
.svc-grid .pos4{grid-column:1 / span 1;justify-self:end}
.svc-grid .pos5{grid-column:2 / span 1;justify-self:start}
@media(min-width:769px){.svc-grid .pos4{transform:translateX(55%)}.svc-grid .pos5{transform:translateX(55%)}.svc-grid .pos4:hover,.svc-grid .pos5:hover{transform:translateX(55%) translateY(-3px)}}
.svc-card{background:var(--card);color:var(--text);width:100%;max-width:345px;padding:12px 12px 16px;box-shadow:0 3px 12px rgba(0,0,0,.22)}
.svc-card img{width:100%;height:118px;object-fit:cover;display:block;margin-bottom:10px}
.svc-card h3:where(:not([class*="was-h"])),
.svc-card :is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-size:1.02rem;margin:0 0 6px;border-bottom:1px solid var(--gray-soft);display:inline-block;padding-bottom:2px}
.svc-card h3:where(:not([class*="was-h"])) a,
.svc-card :is(h1,h2,h3,h4,h5,h6):where(.was-h3) a{color:var(--text);text-decoration:none}
.svc-card ul{margin:0;padding-left:22px;font-family:var(--avenir);font-size:.9rem;line-height:1.45}
.svc-card li{padding:0}
.svc-card ul ul{padding-left:20px;list-style:circle}

/* ---------- services page (/services/) ---------- */
.svp-hero{position:relative;padding:46px 0 52px}
.svp-hero .photo{width:74%;min-height:430px;background-image:url('https://media.beargrassai.com/silcoplumbingmt/home/gallery-repair-24fd0b44.jpg');background-size:cover;background-position:center}
.svp-hero .card{position:absolute;right:13%;top:104px;width:46%;min-width:340px;background:rgba(249,248,248,.97);padding:34px 40px;box-shadow:0 8px 26px rgba(0,0,0,.3);z-index:4;border-top:3px solid var(--lime)}
.svp-hero .card h1:where(:not([class*="was-h"])){font-size:1.95rem;margin:0 0 12px}
.svp-hero .card h1:where(:not([class*="was-h"])) .t{color:var(--navy)}
.svp-hero .card p{font-family:var(--small);font-size:.98rem;line-height:1.75;margin:0;text-align:justify}
.svp-cat{padding:28px 24px 44px}
.svp-cat.alt-a,.svp-cat.alt-b{background:transparent;color:var(--text)}
.svp-cat .inner{max-width:1080px;margin:0 auto}
.svp-cat h2:where(:not([class*="was-h"])){font-family:var(--display);font-size:1.25rem;margin:0 0 6px;font-weight:700;color:var(--navy)}
.svp-cat .sched{display:inline-block;margin:0 0 20px 12px;font-family:var(--display);font-size:1rem;color:var(--blue);text-decoration:underline;font-weight:700}
.svp-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:38px;justify-items:center}
.svp-card{background:var(--card);color:var(--text);width:100%;max-width:400px;padding:20px 24px 26px;box-shadow:0 3px 14px rgba(0,0,0,.25)}
.svp-card h3:where(:not([class*="was-h"])),
.svp-card :is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-family:var(--display);font-size:1.05rem;font-weight:700;border-bottom:1px solid var(--gray-soft);padding-bottom:10px;margin:0 0 16px}
.svp-card h3:where(:not([class*="was-h"])) a,
.svp-card :is(h1,h2,h3,h4,h5,h6):where(.was-h3) a{color:var(--text);text-decoration:none}
.svp-card img{width:100%;height:205px;object-fit:cover;display:block;margin-bottom:14px}
.svp-card p{font-family:var(--small);font-size:.95rem;line-height:1.6;text-align:justify;margin:.6em 0}
.svp-card ul{margin:.4em 0;padding-left:22px;font-family:var(--small);font-size:.95rem;line-height:1.55}

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="big-fork-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="bookingthankyou"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="catalog"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="eureka-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="lakeside-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="meet-silco"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="plumber-columbia-falls-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="plumber-in-hungry-horse-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="plumber-kalispell-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="plumber-marion-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="polson-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="reviews-kalispell-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="rollins-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="service-areas-plumber-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="whitefish-mt"] main,

/* ---------- light content pages (areas, about, reviews) ----------
   source metrics (originals capture): 17px body at 25.4px line pitch (1.5),
   paragraphs contiguous (Wix margin-0 text blocks), big Oswald section h2s */
[data-page="404"] main{max-width:900px;margin:0 auto;padding:56px 24px 40px}
[data-page="big-fork-mt"] main::after,
[data-page="bookingthankyou"] main::after,
[data-page="catalog"] main::after,
[data-page="eureka-mt"] main::after,
[data-page="lakeside-mt"] main::after,
[data-page="meet-silco"] main::after,
[data-page="plumber-columbia-falls-mt"] main::after,
[data-page="plumber-in-hungry-horse-mt"] main::after,
[data-page="plumber-kalispell-mt"] main::after,
[data-page="plumber-marion-mt"] main::after,
[data-page="polson-mt"] main::after,
[data-page="reviews-kalispell-mt"] main::after,
[data-page="rollins-mt"] main::after,
[data-page="service-areas-plumber-mt"] main::after,
[data-page="whitefish-mt"] main::after,
[data-page="404"] main::after{content:"";display:block;clear:both}
[data-page="big-fork-mt"] main h1:where(:not([class*="was-h"])),
[data-page="bookingthankyou"] main h1:where(:not([class*="was-h"])),
[data-page="catalog"] main h1:where(:not([class*="was-h"])),
[data-page="eureka-mt"] main h1:where(:not([class*="was-h"])),
[data-page="lakeside-mt"] main h1:where(:not([class*="was-h"])),
[data-page="meet-silco"] main h1:where(:not([class*="was-h"])),
[data-page="plumber-columbia-falls-mt"] main h1:where(:not([class*="was-h"])),
[data-page="plumber-in-hungry-horse-mt"] main h1:where(:not([class*="was-h"])),
[data-page="plumber-kalispell-mt"] main h1:where(:not([class*="was-h"])),
[data-page="plumber-marion-mt"] main h1:where(:not([class*="was-h"])),
[data-page="polson-mt"] main h1:where(:not([class*="was-h"])),
[data-page="reviews-kalispell-mt"] main h1:where(:not([class*="was-h"])),
[data-page="rollins-mt"] main h1:where(:not([class*="was-h"])),
[data-page="service-areas-plumber-mt"] main h1:where(:not([class*="was-h"])),
[data-page="whitefish-mt"] main h1:where(:not([class*="was-h"])),
[data-page="404"] main h1:where(:not([class*="was-h"])){font-size:2.55rem;font-weight:700;color:var(--text);margin:0 0 .45em;line-height:1.2}
[data-page="big-fork-mt"] main h2:where(:not([class*="was-h"])),
[data-page="bookingthankyou"] main h2:where(:not([class*="was-h"])),
[data-page="catalog"] main h2:where(:not([class*="was-h"])),
[data-page="eureka-mt"] main h2:where(:not([class*="was-h"])),
[data-page="lakeside-mt"] main h2:where(:not([class*="was-h"])),
[data-page="meet-silco"] main h2:where(:not([class*="was-h"])),
[data-page="plumber-columbia-falls-mt"] main h2:where(:not([class*="was-h"])),
[data-page="plumber-in-hungry-horse-mt"] main h2:where(:not([class*="was-h"])),
[data-page="plumber-kalispell-mt"] main h2:where(:not([class*="was-h"])),
[data-page="plumber-marion-mt"] main h2:where(:not([class*="was-h"])),
[data-page="polson-mt"] main h2:where(:not([class*="was-h"])),
[data-page="reviews-kalispell-mt"] main h2:where(:not([class*="was-h"])),
[data-page="rollins-mt"] main h2:where(:not([class*="was-h"])),
[data-page="service-areas-plumber-mt"] main h2:where(:not([class*="was-h"])),
[data-page="whitefish-mt"] main h2:where(:not([class*="was-h"])),
[data-page="404"] main h2:where(:not([class*="was-h"])){font-size:2.3rem;font-weight:700;color:var(--text);line-height:1.25;margin:1em 0 .3em}
[data-page="big-fork-mt"] main h3:where(:not([class*="was-h"])),
[data-page="bookingthankyou"] main h3:where(:not([class*="was-h"])),
[data-page="catalog"] main h3:where(:not([class*="was-h"])),
[data-page="eureka-mt"] main h3:where(:not([class*="was-h"])),
[data-page="lakeside-mt"] main h3:where(:not([class*="was-h"])),
[data-page="meet-silco"] main h3:where(:not([class*="was-h"])),
[data-page="plumber-columbia-falls-mt"] main h3:where(:not([class*="was-h"])),
[data-page="plumber-in-hungry-horse-mt"] main h3:where(:not([class*="was-h"])),
[data-page="plumber-kalispell-mt"] main h3:where(:not([class*="was-h"])),
[data-page="plumber-marion-mt"] main h3:where(:not([class*="was-h"])),
[data-page="polson-mt"] main h3:where(:not([class*="was-h"])),
[data-page="reviews-kalispell-mt"] main h3:where(:not([class*="was-h"])),
[data-page="rollins-mt"] main h3:where(:not([class*="was-h"])),
[data-page="service-areas-plumber-mt"] main h3:where(:not([class*="was-h"])),
[data-page="whitefish-mt"] main h3:where(:not([class*="was-h"])),
[data-page="404"] main h3:where(:not([class*="was-h"])),
[data-page="big-fork-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="bookingthankyou"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="catalog"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="eureka-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="lakeside-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="meet-silco"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="plumber-columbia-falls-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="plumber-in-hungry-horse-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="plumber-kalispell-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="plumber-marion-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="polson-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="reviews-kalispell-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="rollins-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="service-areas-plumber-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="whitefish-mt"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3),
[data-page="404"] main :is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-size:1.1rem}
[data-page="big-fork-mt"] main p,
[data-page="bookingthankyou"] main p,
[data-page="catalog"] main p,
[data-page="eureka-mt"] main p,
[data-page="lakeside-mt"] main p,
[data-page="meet-silco"] main p,
[data-page="plumber-columbia-falls-mt"] main p,
[data-page="plumber-in-hungry-horse-mt"] main p,
[data-page="plumber-kalispell-mt"] main p,
[data-page="plumber-marion-mt"] main p,
[data-page="polson-mt"] main p,
[data-page="reviews-kalispell-mt"] main p,
[data-page="rollins-mt"] main p,
[data-page="service-areas-plumber-mt"] main p,
[data-page="whitefish-mt"] main p,
[data-page="404"] main p{font-family:var(--body);font-size:1.02rem;line-height:1.5;margin:.15em 0}
[data-page="big-fork-mt"] main ul,
[data-page="bookingthankyou"] main ul,
[data-page="catalog"] main ul,
[data-page="eureka-mt"] main ul,
[data-page="lakeside-mt"] main ul,
[data-page="meet-silco"] main ul,
[data-page="plumber-columbia-falls-mt"] main ul,
[data-page="plumber-in-hungry-horse-mt"] main ul,
[data-page="plumber-kalispell-mt"] main ul,
[data-page="plumber-marion-mt"] main ul,
[data-page="polson-mt"] main ul,
[data-page="reviews-kalispell-mt"] main ul,
[data-page="rollins-mt"] main ul,
[data-page="service-areas-plumber-mt"] main ul,
[data-page="whitefish-mt"] main ul,
[data-page="404"] main ul{font-family:var(--body);font-size:1.02rem;line-height:1.5;margin:.25em 0;padding-left:28px}
[data-page="big-fork-mt"] main li,
[data-page="bookingthankyou"] main li,
[data-page="catalog"] main li,
[data-page="eureka-mt"] main li,
[data-page="lakeside-mt"] main li,
[data-page="meet-silco"] main li,
[data-page="plumber-columbia-falls-mt"] main li,
[data-page="plumber-in-hungry-horse-mt"] main li,
[data-page="plumber-kalispell-mt"] main li,
[data-page="plumber-marion-mt"] main li,
[data-page="polson-mt"] main li,
[data-page="reviews-kalispell-mt"] main li,
[data-page="rollins-mt"] main li,
[data-page="service-areas-plumber-mt"] main li,
[data-page="whitefish-mt"] main li,
[data-page="404"] main li{padding:0}
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="big-fork-mt"][data-page="big-fork-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="eureka-mt"][data-page="eureka-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="lakeside-mt"][data-page="lakeside-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="polson-mt"][data-page="polson-mt"] main h2:where(:not([class*="was-h"])),
/* the 9 dense-style area pages (source uses the compact heading scale there) */
[data-page="rollins-mt"][data-page="rollins-mt"] main h2:where(:not([class*="was-h"])){font-size:1.7rem;margin:.85em 0 .25em}
[data-page="big-fork-mt"][data-page="big-fork-mt"] main p,
[data-page="eureka-mt"][data-page="eureka-mt"] main p,
[data-page="lakeside-mt"][data-page="lakeside-mt"] main p,
[data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main p,
[data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main p,
[data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main p,
[data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main p,
[data-page="polson-mt"][data-page="polson-mt"] main p,
[data-page="rollins-mt"][data-page="rollins-mt"] main p{margin:.1em 0}
[data-page="big-fork-mt"][data-page="big-fork-mt"] main ul,
[data-page="eureka-mt"][data-page="eureka-mt"] main ul,
[data-page="lakeside-mt"][data-page="lakeside-mt"] main ul,
[data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main ul,
[data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main ul,
[data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main ul,
[data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main ul,
[data-page="polson-mt"][data-page="polson-mt"] main ul,
[data-page="rollins-mt"][data-page="rollins-mt"] main ul{margin:.2em 0}
.hero-img{width:100%;max-height:460px;object-fit:cover;display:block;margin:0 0 1.6rem}
/* the LICENSED/LOCAL/INSURED row floats beside the text (source position) */
.badge-float{float:right;width:260px;height:auto;margin:6px 0 16px 30px}
/* confidence band — Licensed/Local/Insured, foot of service + location pages */
.confidence{max-width:var(--wide-max);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-4);text-align:center}
.confidence img{max-width:600px;width:100%;height:auto}
.h1-mascot{height:60px;width:auto;vertical-align:-12px;margin-left:8px}
/* service-areas: centered link list with house glyphs (source pattern) */
[data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main h1:where(:not([class*="was-h"])){font-size:2.8rem}
[data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main h2:where(:not([class*="was-h"])){text-align:center;margin:1.4em 0 .6em}
[data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main ul{list-style:none;padding:0;text-align:center}
[data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main li{display:inline-block;margin:10px 18px}
[data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main li::before{content:'\2302';color:var(--teal);margin-right:7px}

/* reviews: bold lead bullets + spotlight treatment (widget region is waivered) */
[data-page="reviews-kalispell-mt"][data-page="reviews-kalispell-mt"] main ul.lead{padding-left:30px;margin:.8em 0 1.4em}
[data-page="reviews-kalispell-mt"][data-page="reviews-kalispell-mt"] main ul.lead li{font-family:var(--bold);font-weight:700;font-size:1.22rem;line-height:1.45;padding:4px 0}
.leave-btn{display:inline-block;background:var(--magenta);color:#fff;border:0;border-radius:var(--radius-btn);font-family:var(--bold);font-weight:700;font-size:.82rem;letter-spacing:.08em;padding:11px 22px;margin-left:14px;text-decoration:none;vertical-align:1px;white-space:nowrap;box-shadow:var(--shadow-cta)}
.badges-inline{width:150px;height:auto;vertical-align:middle;margin-left:14px}
.spotlight{text-align:center;margin:1.6em 0 2em}
.spotlight h2:where(:not([class*="was-h"])){font-family:var(--avenir);font-weight:400;color:var(--navy);font-size:1.9rem;letter-spacing:.06em;text-align:center;margin:0 0 24px}
.spotlight .gpill{margin:0 0 18px}
.spotlight .leave-btn{display:block;width:max-content;margin:0 auto}
/* static 3-card spotlight — Anali's restored hand-picked reviews (A3) */
.review-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:1000px;margin:0 auto 30px;text-align:left}
.rev-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);box-shadow:0 3px 12px rgba(0,0,0,.08);padding:22px 22px 20px;margin:0}
.rev-card .stars{color:var(--star);font-size:1.05rem;letter-spacing:.18em;margin:0 0 12px}
.rev-card blockquote{flex:1;margin:0 0 16px;font-family:var(--body);font-size:1rem;line-height:1.55;color:var(--text)}
.rev-card figcaption{display:flex;flex-direction:column;border-top:1px solid var(--line);padding-top:12px}
.rev-card .who{font-family:var(--bold);font-weight:700;font-size:.98rem;color:var(--text)}
.rev-card .meta{font-family:var(--small);font-size:.82rem;color:var(--gray-deep);margin-top:2px}
.hp-reviews{display:block;width:100%;max-width:900px;height:1500px;border:0;margin:0 auto 22px}

/* article pages (source: white card on light gray, recent-posts band) */
.artbg{background:var(--paper)}
[data-page="bathroom-remodel-plumbing"] main,
[data-page="clogged-drain-causes"] main,
[data-page="hidden-plumbing-leak"] main,
[data-page="low-water-pressure-kalispell"] main,
[data-page="replace-plumbing-pipes"] main,
[data-page="running-toilet-fix"] main,
[data-page="water-heater-maintenance-guide"] main,
[data-page="water-softener-maintenance"] main,
[data-page="when-to-call-a-plumber"] main{max-width:808px;margin:0 auto;padding:26px 24px 40px}
.crumbs{font-family:var(--small);font-size:.85rem;margin:0 0 16px}
.crumbs a{color:var(--text);text-decoration:none}
.artcard{background:#fff;border:1px solid var(--line);padding:32px 72px 26px}
.authbar{display:flex;align-items:center;gap:10px;font-family:var(--small);font-size:.85rem;color:var(--gray-deep);margin:0 0 18px}
.authbar img{width:34px;height:34px;border-radius:50%;object-fit:contain;background:var(--navy);padding:4px}
.artcard h1:where(:not([class*="was-h"])){font-family:var(--bold);font-size:1.85rem;line-height:1.3;margin:0 0 22px;color:var(--text)}
.art-hero{width:100%;max-height:420px;object-fit:cover;display:block;margin:0 0 22px}
/* 2026-10-04 — family-glacier.jpg is a portrait. The shared banner crop cut the family in half. */
[data-page="consulting-fee"] .art-hero{height:auto;max-height:none;object-fit:contain;object-position:center center}
/* portrait heroes float left with the lede wrapped (the source post pattern) */
.art-hero.portrait{width:45%;max-height:none;float:left;margin:0 24px 14px 0}
.artcard::after{content:"";display:block;clear:both}
.artcard p{font-family:var(--body);font-size:1.05rem;line-height:1.53;margin:.6em 0}
.artcard h2:where(:not([class*="was-h"])){font-family:var(--bold);font-size:1.25rem;line-height:1.35;margin:1.9em 0 .5em;color:var(--text);border-top:1px solid var(--line);padding-top:24px;clear:both}
.artcard h1:where(:not([class*="was-h"]))+h2:where(:not([class*="was-h"])),.art-hero+h2:where(:not([class*="was-h"])){border-top:0;padding-top:0}
.artcard ul{font-family:var(--body);font-size:1.05rem;line-height:1.53;margin:.6em 0;padding-left:26px}
/* two posts use the source's roomier section rhythm (per-post Wix styling) */
@media(min-width:769px){
.artcard.roomy h2:where(:not([class*="was-h"])){padding-top:30px;margin:2.3em 0 .6em}
.artcard.roomy p{margin:.75em 0}
}
.artcard .comments{border-top:1px solid var(--line);margin-top:24px;padding-top:18px}
.artcard .comments h2:where(:not([class*="was-h"])){font-size:1rem;margin:0 0 12px}
.artcard .comments p{border:1px solid var(--line);color:var(--gray-soft);padding:12px 14px;font-family:var(--small)}
.artcard .share{display:flex;gap:20px;border-top:1px solid var(--line);margin-top:28px;padding-top:16px}
.artcard .share svg{width:16px;height:16px;fill:var(--gray-deep)}
.artcard .share [class^="icon--"]{width:16px;height:16px;background-color:var(--gray-deep)}
.recent .rhead{display:flex;justify-content:space-between;align-items:baseline;margin:30px 0 14px;font-family:var(--small);color:var(--text)}
.recent .rhead h2:where(:not([class*="was-h"])){font-size:1rem;font-weight:400;margin:0}
.recent .rhead a{color:inherit;text-decoration:none}
.rcards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;list-style:none;margin:0;padding:0}
.rcards li{background:#fff;border:1px solid var(--line)}
.rcards img{width:100%;height:185px;object-fit:cover;display:block}
.rcards .t{font-family:var(--bold);font-size:.92rem;line-height:1.4;padding:14px 14px 18px;display:block;color:var(--text);text-decoration:none}

/* blog index (source: full-width horizontal feed cards) */
[data-page="blog"] main{max-width:1080px;margin:0 auto;padding:26px 24px 30px}
[data-page="blog"] main .sr{position:absolute;left:-9999px}
.bloglist{list-style:none;margin:0;padding:0}
.bloglist li{display:flex;border:1px solid var(--line);background:#fff;margin:0 0 28px}
.bloglist .imglink{width:48%;display:block}
.bloglist .imglink img{width:100%;height:312px;object-fit:cover;display:block}
.bloglist .txt{padding:26px 30px;flex:1}
.bloglist .auth{font-family:var(--small);font-size:.8rem;color:var(--gray);margin:0 0 12px}
.bloglist h2:where(:not([class*="was-h"])){font-family:var(--bold);font-size:1.3rem;line-height:1.35;margin:0 0 12px}
.bloglist h2:where(:not([class*="was-h"])) a{color:var(--text);text-decoration:none}
.bloglist .txt p{font-family:var(--small);font-size:.92rem;line-height:1.5;color:var(--gray-deep)}

/* about (meet-silco) */
[data-page="meet-silco"] main{max-width:1000px}
[data-page="meet-silco"] main h1:where(:not([class*="was-h"])){color:var(--navy);text-align:center;font-size:2.1rem;line-height:1.35}
[data-page="meet-silco"] main .strap{text-align:center;font-family:var(--bold);font-weight:700;letter-spacing:.14em;font-size:1.02rem;margin:0 0 1.2em}
[data-page="meet-silco"] main .centered p{text-align:center;max-width:860px;margin:.5em auto}
.team{display:grid;grid-template-columns:1fr 1fr;gap:48px;max-width:880px;margin:32px auto 8px}
/* Portrait Meet cards (~2:3). Waist-up sources are already a matched pair framed at
   1000x1500; keep the full portrait visible — do not force a landscape crop height.
   Prior nth-child(2) object-position nudge was for full-standing sources (2026-07-29);
   retired with the waist-up swap (2026-08-03). */
.team .member img{width:100%;aspect-ratio:2/3;height:auto;object-fit:cover;object-position:center top;display:block}
.team .member .panel{background:var(--panel);padding:24px 26px 30px;margin-top:-6px}
.team .member .role{font-family:var(--bold);font-weight:700;font-size:.95rem;margin:0 0 4px}
.team .member h3:where(:not([class*="was-h"])),
.team .member :is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-size:1.3rem;margin:0 0 12px}
.team .member p{font-family:var(--small);font-size:.98rem;line-height:1.6;text-align:justify}
[data-page="meet-silco"] main h2:where(:not([class*="was-h"])){color:var(--navy);text-align:center;font-size:1.6rem;margin:1.5em 0 .55em}
.about-photo{display:block;max-width:680px;width:100%;margin:1.5rem auto;object-fit:cover}

/* faq */
[data-page="faq"] main{max-width:900px;margin:0 auto;padding:30px 24px}
[data-page="faq"] main h1:where(:not([class*="was-h"])){text-align:center;font-size:3.4rem;margin:.5em 0 .8em}
[data-page="faq"] main .sub{font-family:var(--bold);font-weight:700;font-size:1.05rem;margin:0 0 18px}
[data-page="faq"] main details{border:1px solid var(--line);border-radius:0;margin:0 0 16px;padding:0}
[data-page="faq"] main summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;padding:20px 22px;font-family:var(--body);font-size:1.05rem}
[data-page="faq"] main summary::after{content:'⌄';color:var(--gray);font-size:1.2rem}
[data-page="faq"] main details[open] summary::after{content:'⌃'}
[data-page="faq"] main details p{font-family:var(--small);font-size:.98rem;padding:0 22px 18px;margin:0}
[data-page="faq"] main .sharerow{color:var(--gray-soft);letter-spacing:1.2em;padding:0 22px 16px;font-size:.8rem}

/* contact (dark) */
[data-page="contact"] main{max-width:600px;margin:0 auto;padding:44px 24px 36px}
[data-page="contact"] main h1:where(:not([class*="was-h"])){font-size:2rem;color:var(--navy);font-family:var(--avenir);font-weight:400;text-transform:none;margin-bottom:1.1em}
[data-page="contact"] main form{display:grid;grid-template-columns:1fr 1fr;gap:22px 40px;background:var(--card);padding:var(--space-6);border-radius:var(--radius-card);border-top:3px solid var(--lime);box-shadow:var(--shadow-card)}
[data-page="contact"] main .field{display:flex;flex-direction:column}
[data-page="contact"] main .full{grid-column:1 / -1}
[data-page="contact"] main label{font-family:var(--small);font-size:.95rem;color:var(--navy);margin-bottom:10px}
[data-page="contact"] main input,[data-page="contact"] main textarea{background:transparent;border:0;border-bottom:1px solid var(--line);color:var(--ink);font-family:var(--small);font-size:1rem;padding:6px 2px;outline:none}
[data-page="contact"] main textarea{min-height:84px;resize:vertical}
[data-page="contact"] main button{grid-column:1 / -1;justify-self:start;background:var(--red);color:#fff;border:0;border-radius:var(--radius-btn);padding:12px 42px;font-family:var(--small);font-size:1.05rem;cursor:pointer}
[data-page="contact"] main button[disabled]{opacity:.6;cursor:default}
[data-page="contact"] main .cform-status{margin:4px 0 0;min-height:1.2em;font-family:var(--small);font-size:.95rem;color:var(--gray-deep)}
[data-page="contact"] main .cform-status.is-ok{color:#7CC6B4}
[data-page="contact"] main .cform-status.is-err{color:#E89B8B}

/* record pages */
.subnav{background:#fff;border-bottom:1px solid var(--line);padding:10px 26px;display:flex;align-items:center;gap:18px}
.subnav .brand{font-family:var(--display);font-weight:700;color:var(--red);letter-spacing:.04em;text-transform:uppercase;font-size:1.05rem;text-decoration:none}
.subnav img{height:40px;width:auto}
.subnav .bo{background:var(--red);color:#fff;font-family:var(--bold);font-size:.78rem;padding:8px 16px;text-decoration:none;border-radius:var(--radius-btn)}
.subnav .cur{font-family:var(--display);text-transform:uppercase;font-size:1rem;color:var(--text);letter-spacing:.05em;margin-left:auto}
body.rec{background:var(--paper)}
[data-page="catalog/appliance-installation"] main,
[data-page="catalog/camera-inspection"] main,
[data-page="catalog/drain-cleaning"] main,
[data-page="catalog/fixture-installation"] main,
[data-page="catalog/leak-repair"] main,
[data-page="catalog/plumbing-maintenance"] main,
[data-page="catalog/plumbing-repair"] main,
[data-page="catalog/repipe"] main,
[data-page="catalog/water-heaters"] main,
[data-page="catalog/water-softeners"] main{max-width:980px;margin:0 auto;padding:36px 24px 30px}
[data-page="catalog/appliance-installation"] main section,
[data-page="catalog/camera-inspection"] main section,
[data-page="catalog/drain-cleaning"] main section,
[data-page="catalog/fixture-installation"] main section,
[data-page="catalog/leak-repair"] main section,
[data-page="catalog/plumbing-maintenance"] main section,
[data-page="catalog/plumbing-repair"] main section,
[data-page="catalog/repipe"] main section,
[data-page="catalog/water-heaters"] main section,
[data-page="catalog/water-softeners"] main section{background:#fff;box-shadow:0 2px 10px rgba(0,0,0,.07);padding:34px 42px;margin:0 0 32px}
[data-page="catalog/appliance-installation"] main .intro,
[data-page="catalog/camera-inspection"] main .intro,
[data-page="catalog/drain-cleaning"] main .intro,
[data-page="catalog/fixture-installation"] main .intro,
[data-page="catalog/leak-repair"] main .intro,
[data-page="catalog/plumbing-maintenance"] main .intro,
[data-page="catalog/plumbing-repair"] main .intro,
[data-page="catalog/repipe"] main .intro,
[data-page="catalog/water-heaters"] main .intro,
[data-page="catalog/water-softeners"] main .intro{display:flex;gap:36px;align-items:flex-start}
[data-page="catalog/appliance-installation"] main .intro .txt,
[data-page="catalog/camera-inspection"] main .intro .txt,
[data-page="catalog/drain-cleaning"] main .intro .txt,
[data-page="catalog/fixture-installation"] main .intro .txt,
[data-page="catalog/leak-repair"] main .intro .txt,
[data-page="catalog/plumbing-maintenance"] main .intro .txt,
[data-page="catalog/plumbing-repair"] main .intro .txt,
[data-page="catalog/repipe"] main .intro .txt,
[data-page="catalog/water-heaters"] main .intro .txt,
[data-page="catalog/water-softeners"] main .intro .txt{flex:1.4}
[data-page="catalog/appliance-installation"] main .intro img,
[data-page="catalog/camera-inspection"] main .intro img,
[data-page="catalog/drain-cleaning"] main .intro img,
[data-page="catalog/fixture-installation"] main .intro img,
[data-page="catalog/leak-repair"] main .intro img,
[data-page="catalog/plumbing-maintenance"] main .intro img,
[data-page="catalog/plumbing-repair"] main .intro img,
[data-page="catalog/repipe"] main .intro img,
[data-page="catalog/water-heaters"] main .intro img,
[data-page="catalog/water-softeners"] main .intro img{flex:1;max-width:330px;object-fit:cover}
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/appliance-installation"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/camera-inspection"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/drain-cleaning"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/fixture-installation"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/leak-repair"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/plumbing-maintenance"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/plumbing-repair"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/repipe"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/water-heaters"] main .rec-hero,
/* D11 (2026-07-12): the leaf-page top reads as a proper hero — the title chunk
   (kicker + h1 + lede) lifts into a navy band with the lime top-stripe, matching
   the location page-hero (E12). Scoped under main.record so the .rec-hero <section>
   beats main.record section{background:#fff}. */
[data-page="catalog/water-softeners"] main .rec-hero{background:var(--navy);box-shadow:none;border-top:4px solid var(--lime);padding:42px 0;margin:0 0 32px}
[data-page="catalog/appliance-installation"] main .rec-hero .ph-inner,
[data-page="catalog/camera-inspection"] main .rec-hero .ph-inner,
[data-page="catalog/drain-cleaning"] main .rec-hero .ph-inner,
[data-page="catalog/fixture-installation"] main .rec-hero .ph-inner,
[data-page="catalog/leak-repair"] main .rec-hero .ph-inner,
[data-page="catalog/plumbing-maintenance"] main .rec-hero .ph-inner,
[data-page="catalog/plumbing-repair"] main .rec-hero .ph-inner,
[data-page="catalog/repipe"] main .rec-hero .ph-inner,
[data-page="catalog/water-heaters"] main .rec-hero .ph-inner,
[data-page="catalog/water-softeners"] main .rec-hero .ph-inner{max-width:none;margin:0;padding:0 42px}
[data-page="catalog/appliance-installation"] main .rec-hero .kicker,
[data-page="catalog/camera-inspection"] main .rec-hero .kicker,
[data-page="catalog/drain-cleaning"] main .rec-hero .kicker,
[data-page="catalog/fixture-installation"] main .rec-hero .kicker,
[data-page="catalog/leak-repair"] main .rec-hero .kicker,
[data-page="catalog/plumbing-maintenance"] main .rec-hero .kicker,
[data-page="catalog/plumbing-repair"] main .rec-hero .kicker,
[data-page="catalog/repipe"] main .rec-hero .kicker,
[data-page="catalog/water-heaters"] main .rec-hero .kicker,
[data-page="catalog/water-softeners"] main .rec-hero .kicker{color:var(--lime);margin:0 0 .7em}
[data-page="catalog/appliance-installation"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/camera-inspection"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/drain-cleaning"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/fixture-installation"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/leak-repair"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-maintenance"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-repair"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/repipe"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/water-heaters"] main .rec-hero h1:where(:not([class*="was-h"])),
[data-page="catalog/water-softeners"] main .rec-hero h1:where(:not([class*="was-h"])){color:#fff;font-size:2.2rem;margin:0}
[data-page="catalog/appliance-installation"] main .rec-hero .lede,
[data-page="catalog/camera-inspection"] main .rec-hero .lede,
[data-page="catalog/drain-cleaning"] main .rec-hero .lede,
[data-page="catalog/fixture-installation"] main .rec-hero .lede,
[data-page="catalog/leak-repair"] main .rec-hero .lede,
[data-page="catalog/plumbing-maintenance"] main .rec-hero .lede,
[data-page="catalog/plumbing-repair"] main .rec-hero .lede,
[data-page="catalog/repipe"] main .rec-hero .lede,
[data-page="catalog/water-heaters"] main .rec-hero .lede,
[data-page="catalog/water-softeners"] main .rec-hero .lede{color:rgba(255,255,255,.9);margin:.55em 0 0}
/* E12 (2026-07-12): location / area page hero band — navy ground, lime top stripe.
   No location hero photo today (source badge retired), so it is a clean designed band. */
.page-hero{background:var(--navy);border-top:4px solid var(--lime);padding:42px 0;margin:0 0 12px}
.page-hero .ph-inner{max-width:980px;margin:0 auto;padding:0 24px}
.page-hero h1:where(:not([class*="was-h"])){color:#fff;margin:0;font-size:2.2rem}
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="big-fork-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="bookingthankyou"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="catalog"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="eureka-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="lakeside-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="meet-silco"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="plumber-columbia-falls-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="plumber-in-hungry-horse-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="plumber-kalispell-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="plumber-marion-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="polson-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="reviews-kalispell-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="rollins-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="service-areas-plumber-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="whitefish-mt"] main .page-hero h1:where(:not([class*="was-h"])),
/* main.page h1{color:var(--text)} (0,1,2) was overriding the band's white h1
   (0,1,1) on the 10 location pages + service-areas — dark-on-navy. Re-assert white
   at higher specificity. Bands are h1-only here (no kicker/lede to recolor). */
[data-page="404"] main .page-hero h1:where(:not([class*="was-h"])){color:#fff}
/* Mascot in hero (Rebecca review 2026-07-13, Mark approved): pink-shirt mascot set into
   the navy band, right-anchored, mirroring the approved services-hero mascot (.svp-hero
   .mascot). Decorative (aria-hidden). Hidden below 1100px like the header mascot so it
   never crowds a long location/leaf h1 on narrow widths. */
.page-hero{position:relative}
/* G15 (2026-07-12): Meet Silco family-photo split hero (portrait shot beside heading). */
.meet-hero{background:var(--navy);border-top:4px solid var(--lime);margin:0 0 14px}
.meet-hero .mh-inner{max-width:980px;margin:0 auto;padding:30px 24px;display:flex;gap:36px;align-items:center}
.meet-hero .mh-txt{flex:1.3}
.meet-hero .mh-txt h1:where(:not([class*="was-h"])){color:#fff;margin:0 0 .35em}
.meet-hero .mh-txt .strap{color:var(--lime);margin:0;letter-spacing:.08em;font-family:var(--small);font-size:1rem}
.meet-hero img{flex:1;max-width:300px;height:360px;object-fit:cover;object-position:center top;border-radius:6px;display:block}
@media(max-width:768px){.meet-hero .mh-inner{flex-direction:column;text-align:center}.meet-hero img{max-width:100%;width:100%;height:300px}}
/* E13 (2026-07-12): center the service-area cities list (the city-link paragraphs). */
[data-page="service-areas-plumber-mt"] main p:has(a[href$="-mt"]){text-align:center;line-height:2.2}
[data-page="catalog/appliance-installation"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/camera-inspection"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/drain-cleaning"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/fixture-installation"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/leak-repair"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-maintenance"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-repair"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/repipe"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/water-heaters"] main h1:where(:not([class*="was-h"])),
[data-page="catalog/water-softeners"] main h1:where(:not([class*="was-h"])){font-size:1.9rem;margin:0 0 .4em}
[data-page="catalog/appliance-installation"] main .lede,
[data-page="catalog/camera-inspection"] main .lede,
[data-page="catalog/drain-cleaning"] main .lede,
[data-page="catalog/fixture-installation"] main .lede,
[data-page="catalog/leak-repair"] main .lede,
[data-page="catalog/plumbing-maintenance"] main .lede,
[data-page="catalog/plumbing-repair"] main .lede,
[data-page="catalog/repipe"] main .lede,
[data-page="catalog/water-heaters"] main .lede,
[data-page="catalog/water-softeners"] main .lede{font-family:var(--bold);font-weight:700;font-size:1.15rem;margin:0 0 1em}
[data-page="catalog/appliance-installation"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/camera-inspection"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/drain-cleaning"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/fixture-installation"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/leak-repair"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-maintenance"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/plumbing-repair"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/repipe"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/water-heaters"] main h2:where(:not([class*="was-h"])),
[data-page="catalog/water-softeners"] main h2:where(:not([class*="was-h"])){font-size:1.5rem;margin:0 0 .8em}
[data-page="catalog/appliance-installation"] main p,
[data-page="catalog/camera-inspection"] main p,
[data-page="catalog/drain-cleaning"] main p,
[data-page="catalog/fixture-installation"] main p,
[data-page="catalog/leak-repair"] main p,
[data-page="catalog/plumbing-maintenance"] main p,
[data-page="catalog/plumbing-repair"] main p,
[data-page="catalog/repipe"] main p,
[data-page="catalog/water-heaters"] main p,
[data-page="catalog/water-softeners"] main p{font-family:var(--small);font-size:1rem;line-height:1.75;margin:.8em 0}
[data-page="catalog/appliance-installation"] main ul,
[data-page="catalog/camera-inspection"] main ul,
[data-page="catalog/drain-cleaning"] main ul,
[data-page="catalog/fixture-installation"] main ul,
[data-page="catalog/leak-repair"] main ul,
[data-page="catalog/plumbing-maintenance"] main ul,
[data-page="catalog/plumbing-repair"] main ul,
[data-page="catalog/repipe"] main ul,
[data-page="catalog/water-heaters"] main ul,
[data-page="catalog/water-softeners"] main ul{font-family:var(--small);font-size:1rem;line-height:1.65;margin:.8em 0;padding-left:26px}
[data-page="catalog/appliance-installation"] main .kicker,
[data-page="catalog/camera-inspection"] main .kicker,
[data-page="catalog/drain-cleaning"] main .kicker,
[data-page="catalog/fixture-installation"] main .kicker,
[data-page="catalog/leak-repair"] main .kicker,
[data-page="catalog/plumbing-maintenance"] main .kicker,
[data-page="catalog/plumbing-repair"] main .kicker,
[data-page="catalog/repipe"] main .kicker,
[data-page="catalog/water-heaters"] main .kicker,
[data-page="catalog/water-softeners"] main .kicker{font-family:var(--small);letter-spacing:.18em;text-transform:uppercase;font-size:.8rem;color:var(--gray);margin:0 0 .8em}

/* cards (catalog listing, blog) */
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:26px;padding:0;list-style:none}
.card{background:#fff;border:1px solid var(--line);overflow:hidden}
.card a{text-decoration:none;color:inherit;display:block}
.card img{width:100%;height:175px;object-fit:cover;display:block}
.card .pad{padding:16px 18px}
.card h2:where(:not([class*="was-h"])),.card h3:where(:not([class*="was-h"])),.card :is(h1,h2,h3,h4,h5,h6):where(.was-h3){font-size:1.02rem;margin:.2rem 0;color:var(--text)}
.card p{font-family:var(--small);font-size:.9rem;margin:.4rem 0;color:var(--gray-deep)}
.cta{display:inline-block;background:var(--red);color:#fff;padding:12px 28px;border-radius:var(--radius-btn);text-decoration:none;font-family:var(--small);font-size:.95rem;margin:1rem 0}
table.specs{border-collapse:collapse;width:100%;margin:1.2rem 0}
table.specs th,table.specs td{border:1px solid var(--line);padding:10px;text-align:left;vertical-align:top}

/* ============ DESIGN-SYSTEM LAYER (UX spec 2026-07-08) ============
   One accent rule: lime tops every card; navy-tinted elevation; hover lift.
   Retires the muddy black card shadows. */
.svc-card,.svp-card,.card,.rev-card,.rcards li,.bloglist li{
  border-top:3px solid var(--lime);
  box-shadow:var(--shadow-card);
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease);
}
.svc-card:hover,.svp-card:hover,.card:hover,.rev-card:hover,.rcards li:hover,.bloglist li:hover{
  transform:translateY(-3px);box-shadow:var(--shadow-card-hover);
}
/* Buttons — press-and-lift (magenta CTAs). */
.book,.callus,.cta,.leave-btn,.subnav .bo,[data-page="contact"] main button{transition:background var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}
.callus:hover,.cta:hover,.leave-btn:hover,.subnav .bo:hover,[data-page="contact"] main button:hover{background:#E6007E;box-shadow:var(--shadow-cta);transform:translateY(-1px)}
/* A4 (2026-07-12): only the header Book Online turns lime on hover — split OUT of the
   shared CTA rule above so no other CTA regresses to lime. Lime fill + navy text (contrast). */
.book:hover{background:var(--lime);color:var(--navy);box-shadow:var(--shadow-cta);transform:translateY(-1px)}
.book:active,.callus:active,.cta:active,.leave-btn:active,.subnav .bo:active,[data-page="contact"] main button:active{transform:translateY(0);box-shadow:0 2px 6px rgba(255,0,140,.3)}
/* One deliberate hero accent — the magenta breathe (Mark-approved 2026-07-08; AA to sign off before ship). */
@keyframes breathe{0%,100%{box-shadow:0 4px 16px rgba(255,0,140,.35)}50%{box-shadow:0 8px 26px rgba(255,0,140,.6)}}
.home-hero .callus{animation:breathe 3.2s var(--ease-in-out) 10}
/* Accessibility gate — suppress movement; color/shadow states still resolve (AA). */
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition-duration:.01ms!important}}

/* ---------- mobile (source: fixed-320 Wix mobile master) ---------- */
@media(max-width:768px){
  header.site{padding:8px 12px}
  header.site .bar{flex-direction:column;align-items:center;gap:6px;text-align:center}
  header.site .lockup{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px}
  header.site .lockup .logo{flex-basis:100%;display:flex;justify-content:center;margin-bottom:2px}
  header.site .logo{width:94px;height:52px}
  header.site .logo img{height:52px}
  header.site .phone{font-size:1.4rem}
  .book{font-size:1.15rem;padding:10px 18px}
  .book .bl-full{display:none}
  .book .bl-short{display:inline}
  header.site .right{align-items:center;width:100%}
  #navtoggle{display:block}
  .burger{display:block;color:#fff;font-size:1.7rem;cursor:pointer;position:absolute;top:14px;right:16px;line-height:1;padding:4px}
  header.site{position:sticky;top:0}
  header.site nav{display:none;flex-direction:column;background:var(--navy);width:100%}
  #navtoggle[open] ~ .bar nav{display:flex;max-height:calc(100dvh - 132px);overflow-y:auto;-webkit-overflow-scrolling:touch}
  header.site nav a{padding:12px;border-radius:0}
  header.site nav .more .menu{position:static;box-shadow:none;flex-basis:100%}
  /* A3 mobile (2026-07-17 fix): submenus COLLAPSE by default inside the burger and
     open on tapping the caret / "More" button, reusing the desktop .open toggle
     (line 75 + navToggleScript, which binds .nav-trigger at EVERY width). Replaces
     the old force-open static stack (display:block + hidden triggers) that pushed
     the items after Services — including Meet Silco under "More" — off-screen with
     no way to scroll. Pairs with the scrollable nav (max-height/overflow above) as
     a backstop for a long expanded submenu (e.g. the 10 Locations). */
  header.site nav .more{flex-flow:row wrap;justify-content:center;align-items:center;width:100%}
  header.site nav .more .nav-trigger{display:inline-flex;align-items:center;color:#fff;padding:12px 10px}
  header.site nav .nav-drop>.drop{width:auto;padding:12px 4px 12px 10px}
  /* service-area line + socials live inside the hamburger, not the top bar */
  header.site .areasrow{display:none}
  #navtoggle[open] ~ .bar .areasrow{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;padding:16px 12px 6px;border-top:1px solid rgba(255,255,255,.12)}
  header.site .areas{letter-spacing:.14em;white-space:normal;font-size:.72rem;text-align:center}
  header.site .soc{gap:24px}
  header.site .soc svg{width:26px;height:26px}
  header.site .soc [class^="icon--"]{width:26px;height:26px}
  /* mobile hero: tall 4:5 <picture> source, then the white badge card pulled
     up over the photo edge (centered), then the panel — single stack.
     Band raised from 230px (short landscape crop) to natural 4:5 so owners
     stay in frame on the dedicated mobile WebP (2026-08-03). */
  .home-hero{display:block}
  .home-hero picture{display:block;width:100%}
  .home-hero img.truck{height:auto;aspect-ratio:4/5;object-fit:cover;object-position:center 42%}
  .badge-card{width:94%;max-width:300px;margin:-34px auto 0;position:relative;z-index:1}
  .badge-card .badges{width:225px;margin:0 auto 10px}
  .badge-card .strip{padding:7px 18px 9px}
  .badge-card .script,.badge-card .serif{white-space:normal}
  .badge-card .script{font-size:1.25rem}
  .badge-card .serif{font-size:1.1rem}
  .hero-panel{margin-top:0;padding:18px 16px 24px}
  .hero-panel .lead{flex-direction:column;text-align:center;gap:12px;margin:0 0 8px}
  .hero-panel .chip{width:100px;height:100px}
  .hero-panel .chip img{height:82px}
  .hero-panel h1:where(:not([class*="was-h"])){font-size:1.6rem;padding-right:0}
  .hero-panel p{font-size:.92rem;line-height:1.5;margin:.45em 0}
  .callus{position:static;align-self:center;padding:11px 30px;font-size:1.05rem}
  .gpill{padding:7px 12px;gap:9px}
  .gpill img{width:24px;height:24px;padding-right:9px}
  .gfix{left:10px;bottom:10px}
  .svc-band{padding:0 14px 34px}
  .svc-panelbg{padding:20px 14px 22px}
  .svc-grid{grid-template-columns:1fr;gap:18px}
  .svc-grid .pos4,.svc-grid .pos5{grid-column:auto;justify-self:center}
  .svc-card{padding:10px 10px 14px}
  .svc-card img{height:110px}
  .svc-card ul{font-size:.85rem;line-height:1.4}
  .svp-hero{padding:0}
  .svp-hero .photo{width:100%;min-height:200px}
  .svp-hero .card{position:static;width:100%;min-width:0;margin:-30px 0 0;padding:22px 20px}
  .svp-hero .card h1:where(:not([class*="was-h"])){font-size:1.5rem}
  .svp-cat{padding:22px 14px 36px}
  .svp-cards{grid-template-columns:1fr;gap:28px}
  .svp-card{padding:18px 18px 24px}
  .svp-card img{height:170px}
  .svp-card p,.svp-card ul{font-size:.9rem;line-height:1.55}
  .svp-hero .card{padding:26px 20px}
  .review-band{padding:42px 0}
  .review-strip blockquote{font-size:1.05rem}
  .svc-panelbg{padding:18px 12px 18px}
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="big-fork-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="bookingthankyou"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="catalog"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="eureka-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="lakeside-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="meet-silco"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="plumber-columbia-falls-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="plumber-in-hungry-horse-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="plumber-kalispell-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="plumber-marion-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="polson-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="reviews-kalispell-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="rollins-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="service-areas-plumber-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="whitefish-mt"] main,
  /* Anali round 2026-07-08 (A1+A2): content pages match DESKTOP on mobile —
     light ground + near-black ink. Was: navy ground with lime/ice text (the
     clone-faithful Wix mobile theme) which Anali flagged as unreadable and
     inconsistent with the light desktop interiors. Header, hero, and the
     tail/footer bands keep their own navy grounds (brand). */
  [data-page="404"] main{padding:30px 16px 26px}
  [data-page="big-fork-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="bookingthankyou"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog"] main h1:where(:not([class*="was-h"])),
  [data-page="eureka-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="lakeside-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="meet-silco"] main h1:where(:not([class*="was-h"])),
  [data-page="plumber-columbia-falls-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="plumber-in-hungry-horse-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="plumber-kalispell-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="plumber-marion-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="polson-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="reviews-kalispell-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="rollins-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="service-areas-plumber-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="whitefish-mt"] main h1:where(:not([class*="was-h"])),
  [data-page="404"] main h1:where(:not([class*="was-h"])){font-size:2rem}
  [data-page="big-fork-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="bookingthankyou"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog"] main h2:where(:not([class*="was-h"])),
  [data-page="eureka-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="lakeside-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="meet-silco"] main h2:where(:not([class*="was-h"])),
  [data-page="plumber-columbia-falls-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="plumber-in-hungry-horse-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="plumber-kalispell-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="plumber-marion-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="polson-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="reviews-kalispell-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="rollins-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="service-areas-plumber-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="whitefish-mt"] main h2:where(:not([class*="was-h"])),
  [data-page="404"] main h2:where(:not([class*="was-h"])){font-size:1.55rem}
  [data-page="big-fork-mt"] main p,
  [data-page="bookingthankyou"] main p,
  [data-page="catalog"] main p,
  [data-page="eureka-mt"] main p,
  [data-page="lakeside-mt"] main p,
  [data-page="meet-silco"] main p,
  [data-page="plumber-columbia-falls-mt"] main p,
  [data-page="plumber-in-hungry-horse-mt"] main p,
  [data-page="plumber-kalispell-mt"] main p,
  [data-page="plumber-marion-mt"] main p,
  [data-page="polson-mt"] main p,
  [data-page="reviews-kalispell-mt"] main p,
  [data-page="rollins-mt"] main p,
  [data-page="service-areas-plumber-mt"] main p,
  [data-page="whitefish-mt"] main p,
  [data-page="404"] main p,[data-page="big-fork-mt"] main ul,[data-page="bookingthankyou"] main ul,[data-page="catalog"] main ul,[data-page="eureka-mt"] main ul,[data-page="lakeside-mt"] main ul,[data-page="meet-silco"] main ul,[data-page="plumber-columbia-falls-mt"] main ul,[data-page="plumber-in-hungry-horse-mt"] main ul,[data-page="plumber-kalispell-mt"] main ul,[data-page="plumber-marion-mt"] main ul,[data-page="polson-mt"] main ul,[data-page="reviews-kalispell-mt"] main ul,[data-page="rollins-mt"] main ul,[data-page="service-areas-plumber-mt"] main ul,[data-page="whitefish-mt"] main ul,[data-page="404"] main ul{font-size:.88rem;line-height:1.45;margin:.15em 0}
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="big-fork-mt"][data-page="big-fork-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="eureka-mt"][data-page="eureka-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="lakeside-mt"][data-page="lakeside-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="polson-mt"][data-page="polson-mt"] main h2:where(:not([class*="was-h"])),
  /* the dense pages keep the larger mobile scale (source per-page mobile type) */
  [data-page="rollins-mt"][data-page="rollins-mt"] main h2:where(:not([class*="was-h"])){font-size:1.7rem}
  [data-page="big-fork-mt"][data-page="big-fork-mt"] main p,
  [data-page="eureka-mt"][data-page="eureka-mt"] main p,
  [data-page="lakeside-mt"][data-page="lakeside-mt"] main p,
  [data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main p,
  [data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main p,
  [data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main p,
  [data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main p,
  [data-page="polson-mt"][data-page="polson-mt"] main p,
  [data-page="rollins-mt"][data-page="rollins-mt"] main p,[data-page="big-fork-mt"][data-page="big-fork-mt"] main ul,[data-page="eureka-mt"][data-page="eureka-mt"] main ul,[data-page="lakeside-mt"][data-page="lakeside-mt"] main ul,[data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main ul,[data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main ul,[data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main ul,[data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main ul,[data-page="polson-mt"][data-page="polson-mt"] main ul,[data-page="rollins-mt"][data-page="rollins-mt"] main ul{font-size:.94rem;line-height:1.52}
  [data-page="big-fork-mt"][data-page="big-fork-mt"] main p,
  [data-page="eureka-mt"][data-page="eureka-mt"] main p,
  [data-page="lakeside-mt"][data-page="lakeside-mt"] main p,
  [data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main p,
  [data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main p,
  [data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main p,
  [data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main p,
  [data-page="polson-mt"][data-page="polson-mt"] main p,
  [data-page="rollins-mt"][data-page="rollins-mt"] main p{margin:.15em 0}
  [data-page="big-fork-mt"][data-page="big-fork-mt"] main ul,
  [data-page="eureka-mt"][data-page="eureka-mt"] main ul,
  [data-page="lakeside-mt"][data-page="lakeside-mt"] main ul,
  [data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main ul,
  [data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main ul,
  [data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main ul,
  [data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main ul,
  [data-page="polson-mt"][data-page="polson-mt"] main ul,
  [data-page="rollins-mt"][data-page="rollins-mt"] main ul{margin:.3em 0}
  [data-page="big-fork-mt"][data-page="big-fork-mt"] main li,
  [data-page="eureka-mt"][data-page="eureka-mt"] main li,
  [data-page="lakeside-mt"][data-page="lakeside-mt"] main li,
  [data-page="plumber-columbia-falls-mt"][data-page="plumber-columbia-falls-mt"] main li,
  [data-page="plumber-in-hungry-horse-mt"][data-page="plumber-in-hungry-horse-mt"] main li,
  [data-page="plumber-kalispell-mt"][data-page="plumber-kalispell-mt"] main li,
  [data-page="plumber-marion-mt"][data-page="plumber-marion-mt"] main li,
  [data-page="polson-mt"][data-page="polson-mt"] main li,
  [data-page="rollins-mt"][data-page="rollins-mt"] main li{padding:1px 0 0}
  .badge-float{float:none;display:block;width:112px;margin:12px auto}
  .h1-mascot{height:40px;vertical-align:-8px}
  [data-page="reviews-kalispell-mt"][data-page="reviews-kalispell-mt"] main ul.lead li{font-size:1.05rem}
  .review-cards{grid-template-columns:1fr;gap:16px;margin:0 auto 22px}
  .hp-reviews{height:1700px}
  .leave-btn,.badges-inline{display:block;margin:10px 0}
  body.light[data-page="faq"] main{background:#fff;color:var(--text);margin:20px 10px;border-radius:0;max-width:none;padding:20px 16px}
  body.light[data-page="faq"] main h1:where(:not([class*="was-h"])){color:var(--text);font-size:1.7rem}
  [data-page="bathroom-remodel-plumbing"] main,
  [data-page="clogged-drain-causes"] main,
  [data-page="hidden-plumbing-leak"] main,
  [data-page="low-water-pressure-kalispell"] main,
  [data-page="replace-plumbing-pipes"] main,
  [data-page="running-toilet-fix"] main,
  [data-page="water-heater-maintenance-guide"] main,
  [data-page="water-softener-maintenance"] main,
  [data-page="when-to-call-a-plumber"] main{padding:18px 12px 30px}
  .artcard{padding:20px 16px}
  .artcard h1:where(:not([class*="was-h"])){font-size:1.35rem}
  .artcard p,.artcard ul{font-size:.93rem;line-height:1.48;margin:.5em 0}
  .artcard h2:where(:not([class*="was-h"])){margin:1.4em 0 .45em;padding-top:12px}
  .art-hero{max-height:300px}
  .art-hero.portrait{width:100%;float:none;margin:0 0 18px;max-height:300px;object-fit:cover}
  /* (A2) articles keep their light paper ground + ink crumbs on mobile too,
     matching desktop — the navy-mobile overrides here are retired. */
  .bloglist li{flex-direction:column;margin:0 0 16px}
  .bloglist .imglink{width:100%}
  .bloglist .imglink img{height:140px}
  .bloglist .txt{padding:12px 14px}
  .bloglist h2:where(:not([class*="was-h"])){font-size:.95rem;margin:0 0 8px}
  .bloglist .auth{margin:0 0 8px}
  .bloglist .txt p{font-size:.8rem;line-height:1.45}
  .rcards{grid-template-columns:1fr}
  .rcards img{height:130px}
  .cta-band{padding:28px 18px 0}
  .cta-band h2:where(:not([class*="was-h"])){font-size:1.18rem;letter-spacing:0;margin:0 0 10px}
  .cta-band .appt,.cta-band .mail{font-size:.9rem}
  .cta-band .mail{margin:0 0 12px}
  .cta-band .serving{display:none}
  .coverage{padding:var(--space-6) var(--space-4)}
  footer{padding:0 18px}
  footer .rule{margin:0 auto 14px}
  footer .cols{gap:10px;padding-bottom:14px}
  footer .group{min-width:260px}
  footer .group ul{columns:1}
  footer .group h2:where(:not([class*="was-h"])){text-align:left;font-size:.9rem;margin:0 0 8px}
  footer .group li{padding:1px 0;font-size:.85rem;line-height:1.4}
  .team{grid-template-columns:1fr;gap:24px;margin:20px auto 6px}
  .team .member .panel{padding:16px 14px 20px}
  .team .member p{font-size:.9rem;line-height:1.5}
  [data-page="meet-silco"] main h1:where(:not([class*="was-h"])){font-size:1.6rem}
  [data-page="meet-silco"] main h2:where(:not([class*="was-h"])){font-size:1.4rem;margin:1.3em 0 .5em}
  [data-page="meet-silco"] main .strap{font-size:1rem;margin:0 0 1em}
  [data-page="meet-silco"] main p,[data-page="meet-silco"] main ul{font-size:.92rem;line-height:1.5}
  [data-page="meet-silco"] main .centered p{margin:.4em auto}
  .team .member img{aspect-ratio:2/3;height:auto}
  .about-photo{margin:1rem auto}
  [data-page="catalog/appliance-installation"] main .intro,
  [data-page="catalog/camera-inspection"] main .intro,
  [data-page="catalog/drain-cleaning"] main .intro,
  [data-page="catalog/fixture-installation"] main .intro,
  [data-page="catalog/leak-repair"] main .intro,
  [data-page="catalog/plumbing-maintenance"] main .intro,
  [data-page="catalog/plumbing-repair"] main .intro,
  [data-page="catalog/repipe"] main .intro,
  [data-page="catalog/water-heaters"] main .intro,
  [data-page="catalog/water-softeners"] main .intro{flex-direction:column}
  [data-page="catalog/appliance-installation"] main .intro img,
  [data-page="catalog/camera-inspection"] main .intro img,
  [data-page="catalog/drain-cleaning"] main .intro img,
  [data-page="catalog/fixture-installation"] main .intro img,
  [data-page="catalog/leak-repair"] main .intro img,
  [data-page="catalog/plumbing-maintenance"] main .intro img,
  [data-page="catalog/plumbing-repair"] main .intro img,
  [data-page="catalog/repipe"] main .intro img,
  [data-page="catalog/water-heaters"] main .intro img,
  [data-page="catalog/water-softeners"] main .intro img{width:100%;max-width:none;height:240px;object-fit:cover}
  [data-page="catalog/appliance-installation"] main,
  [data-page="catalog/camera-inspection"] main,
  [data-page="catalog/drain-cleaning"] main,
  [data-page="catalog/fixture-installation"] main,
  [data-page="catalog/leak-repair"] main,
  [data-page="catalog/plumbing-maintenance"] main,
  [data-page="catalog/plumbing-repair"] main,
  [data-page="catalog/repipe"] main,
  [data-page="catalog/water-heaters"] main,
  [data-page="catalog/water-softeners"] main{padding:20px 12px 18px}
  [data-page="catalog/appliance-installation"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/camera-inspection"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/drain-cleaning"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/fixture-installation"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/leak-repair"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-maintenance"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-repair"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/repipe"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/water-heaters"] main h1:where(:not([class*="was-h"])),
  [data-page="catalog/water-softeners"] main h1:where(:not([class*="was-h"])){font-size:1.6rem}
  [data-page="catalog/appliance-installation"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/camera-inspection"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/drain-cleaning"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/fixture-installation"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/leak-repair"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-maintenance"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-repair"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/repipe"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/water-heaters"] main h2:where(:not([class*="was-h"])),
  [data-page="catalog/water-softeners"] main h2:where(:not([class*="was-h"])){font-size:1.3rem;margin:0 0 .65em}
  [data-page="catalog/appliance-installation"] main section,
  [data-page="catalog/camera-inspection"] main section,
  [data-page="catalog/drain-cleaning"] main section,
  [data-page="catalog/fixture-installation"] main section,
  [data-page="catalog/leak-repair"] main section,
  [data-page="catalog/plumbing-maintenance"] main section,
  [data-page="catalog/plumbing-repair"] main section,
  [data-page="catalog/repipe"] main section,
  [data-page="catalog/water-heaters"] main section,
  [data-page="catalog/water-softeners"] main section{padding:22px 16px;margin:0 0 24px}
  [data-page="catalog/appliance-installation"] main .rec-hero,
  [data-page="catalog/camera-inspection"] main .rec-hero,
  [data-page="catalog/drain-cleaning"] main .rec-hero,
  [data-page="catalog/fixture-installation"] main .rec-hero,
  [data-page="catalog/leak-repair"] main .rec-hero,
  [data-page="catalog/plumbing-maintenance"] main .rec-hero,
  [data-page="catalog/plumbing-repair"] main .rec-hero,
  [data-page="catalog/repipe"] main .rec-hero,
  [data-page="catalog/water-heaters"] main .rec-hero,
  [data-page="catalog/water-softeners"] main .rec-hero{padding:26px 0;margin:0 0 22px}
  [data-page="catalog/appliance-installation"] main .rec-hero .ph-inner,
  [data-page="catalog/camera-inspection"] main .rec-hero .ph-inner,
  [data-page="catalog/drain-cleaning"] main .rec-hero .ph-inner,
  [data-page="catalog/fixture-installation"] main .rec-hero .ph-inner,
  [data-page="catalog/leak-repair"] main .rec-hero .ph-inner,
  [data-page="catalog/plumbing-maintenance"] main .rec-hero .ph-inner,
  [data-page="catalog/plumbing-repair"] main .rec-hero .ph-inner,
  [data-page="catalog/repipe"] main .rec-hero .ph-inner,
  [data-page="catalog/water-heaters"] main .rec-hero .ph-inner,
  [data-page="catalog/water-softeners"] main .rec-hero .ph-inner{padding:0 16px}
  [data-page="catalog/appliance-installation"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/camera-inspection"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/drain-cleaning"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/fixture-installation"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/leak-repair"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-maintenance"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/plumbing-repair"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/repipe"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/water-heaters"] main .rec-hero h1:where(:not([class*="was-h"])),
  [data-page="catalog/water-softeners"] main .rec-hero h1:where(:not([class*="was-h"])){font-size:1.6rem}
  [data-page="catalog/appliance-installation"] main p,
  [data-page="catalog/camera-inspection"] main p,
  [data-page="catalog/drain-cleaning"] main p,
  [data-page="catalog/fixture-installation"] main p,
  [data-page="catalog/leak-repair"] main p,
  [data-page="catalog/plumbing-maintenance"] main p,
  [data-page="catalog/plumbing-repair"] main p,
  [data-page="catalog/repipe"] main p,
  [data-page="catalog/water-heaters"] main p,
  [data-page="catalog/water-softeners"] main p{font-size:.95rem;line-height:1.66;margin:.65em 0}
  [data-page="catalog/appliance-installation"] main ul,
  [data-page="catalog/camera-inspection"] main ul,
  [data-page="catalog/drain-cleaning"] main ul,
  [data-page="catalog/fixture-installation"] main ul,
  [data-page="catalog/leak-repair"] main ul,
  [data-page="catalog/plumbing-maintenance"] main ul,
  [data-page="catalog/plumbing-repair"] main ul,
  [data-page="catalog/repipe"] main ul,
  [data-page="catalog/water-heaters"] main ul,
  [data-page="catalog/water-softeners"] main ul{font-size:.95rem;line-height:1.6;margin:.65em 0}
  .subnav{padding:8px 12px;gap:10px}
  [data-page="contact"] main{padding:18px 18px 18px}
  [data-page="contact"] main h1:where(:not([class*="was-h"])){font-size:1.25rem;margin-bottom:.45em}
  [data-page="contact"] main form{grid-template-columns:1fr;gap:8px}
  [data-page="contact"] main label{margin-bottom:4px;font-size:.8rem}
  [data-page="contact"] main textarea{min-height:64px}
  [data-page="contact"] main button{padding:10px 32px}
  [data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main h1:where(:not([class*="was-h"])){font-size:1.8rem}
  [data-page="service-areas-plumber-mt"][data-page="service-areas-plumber-mt"] main li{margin:2px 8px}
  .legal{padding:20px 22px;text-align:center}
  .below{display:block;background:var(--warm);padding:10px 18px 26px}
  .below a{display:block;color:var(--ice);font-family:var(--small);font-size:.9rem;padding:5px 0}
  .below p{text-align:center;color:var(--ice);font-family:var(--avenir);font-size:.95rem;margin:14px 0 0}
}

/* ══ ADDITIONS, silcoplumbingmt build 1, 2026-09-05 ═══════════════════════════════════════════════════════
   Written by mkcss.py. Every rule restores something v1 drew with markup the closed v2 vocabulary cannot
   carry. Nothing here is new design and nothing here is a client preference. */

/* THE CURRENT-PAGE MARKER. v1 writes class="active" on the nav link whose href equals the page's own path,
   and declares exactly ONE rule for it (`header.site nav a.active { background: var(--red) }`, in no @media
   block — checked). A v2 shell is one static string per shape and cannot know which page it draws, so the
   core's own script (src/artifacts.ts SITE_JS) sets aria-current="page" by that same exact-path rule and
   this is v1's declaration restated for it, declaration for declaration, at the same specificity (0,2,2).
   P-23 "An open-state instrument must record": v1 declares this at no breakpoint, so there is one to write. */
/* SCOPED TO THE LINKS v1 ACTUALLY MARKS, which is not every nav link. Measured on all 39 documents: v1 writes
   class="active" on a TOP-LEVEL nav link (home, Reviews) or on a `.drop` hub link (Services, Locations) and
   NEVER on a link inside a dropdown menu. The core's script has no such rule -- it marks any nav link whose
   href equals the path -- so on the ten city pages it marked "Whitefish, MT" INSIDE the Locations menu and an
   unscoped rule painted it with the red pill that v1 does not have. Invisible until a visitor opens that menu,
   which is exactly why the open-state instrument exists. Found 2026-09-05 by navsweep.mjs. */
header.site nav > a[aria-current="page"],
header.site nav .drop[aria-current="page"] { background:var(--red) }
/* AND THE SECTION MATCH, which the script's exact-path rule cannot make. v1 marks the Services HUB link on
   /services/ AND on all ten /catalog/* pages -- measured on all 39 -- so ten of them are a SECTION match, not
   an exact one. `data-page` is on <body> for the <main> class already, so the same attribute answers this with
   no script at all and no per-page markup. */
[data-page^="catalog/"] header.site nav a.drop[href="/services"] { background:var(--red) }
/* v1's hover rule is `header.site nav a:not(.active):hover`, so the CURRENT link keeps its red on hover and
   does not turn lime. `:not()` cannot reach an ancestor's attribute, so the two current-link forms restate the
   resting colour at hover instead -- same outcome, no third state. */
header.site nav > a[aria-current="page"]:hover,
header.site nav .drop[aria-current="page"]:hover,
[data-page^="catalog/"] header.site nav a.drop[href="/services"]:hover { background:var(--red); color:#fff }

/* THE THREE NAV DROPDOWNS AND THE PHONE BURGER ARE <details>. Four resets and one ordering rule.
   A <summary> must be a <details>'s FIRST child; v1 drew the caret button SECOND, after the hub link, so
   the visual order is restored with flex `order` on the three children. `header.site nav > .more` is already
   display:flex in v1, at both breakpoints, so no display is set here. */
summary { list-style:none }
summary::-webkit-details-marker { display:none }
summary::marker { content:'' }
/* the disclosure element itself draws NO BOX, so the caret and the menu lay out exactly where v1's <button>
   and <span class="menu"> did — direct flex children of `.more` in every respect except the selector, which
   transformation 3 above handles. `details` toggling is DOM behaviour and does not depend on its display. */
header.site nav .more .dd { display:contents }

/* THE 13 TESTIMONIALS, ALL REACHABLE WITH NO SCRIPT. Ruled 2026-09-05, under [MARK] 2026-09-05 (a client's
   function is never dropped): the band stays IDENTICAL AT LOAD — slide 1 visible, same height — and the other
   twelve become reachable rather than merely present. v1 stacks all 13 in ONE grid cell and shows only
   `.rev-slide.is-active` (`opacity:0;visibility:hidden`), which needs review-rotator.js to ever show a
   second one. Here the same 13 lie in a horizontal scroll-snap strip at v1's own slide size, and v1's own
   arrows and dots are <a href="#rev-N"> that reach them. WHAT IS NOT RESTORED is the 6-second AUTOPLAY —
   that is the declared circle, and it comes back with a core module.

   Every declaration below either replaces one of v1's or is required by the strip:
     .review-strip   grid -> flex + scroll-snap. v1's `display:grid;max-width:760px;margin:0 auto` is on
                     `.review-band[data-rotate] .review-strip`; the max-width and centring are unchanged, so
                     the box is the same box. `align-items:stretch` is the flex default and the grid default,
                     so a slide's box is still the full height of the tallest.
     .rev-slide      the opacity/visibility pair is REPLACED by `flex:0 0 100%` + `scroll-snap-align:start`.
                     All 13 are painted; twelve of them are outside the 760px box and clipped by the scroll
                     container, which is exactly where v1's hidden ones were.
     scrollbar       hidden, because v1 has none. */
.review-band[data-rotate] .review-strip {
  display:flex; flex-flow:row nowrap; overflow-x:auto; overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory; scrollbar-width:none;
  /* THE HORIZONTAL PADDING MOVES FROM THE STRIP ONTO THE SLIDE, and both halves of that are needed.
     v1: `.review-strip{padding:26px 24px 22px}` and every slide stacked in one grid cell.
     Left it on the strip and two things went wrong, each measured:
       1. `scroll-snap-align:start` aligns with the SCROLLPORT start edge, which is the PADDING box, so the
          browser scrolled the strip 24px on load and the whole quote landed at x=260 instead of v1's x=284
          (pixdiff-6, 35,942 px). `scroll-padding` fixes that.
       2. overflow clips at the PADDING box too, so at 390 the strip is 390 wide, a slide is 342, slide 2
          began at x=366 and 24px of its first letter showed at the right edge of the viewport
          (pixdiff-7, 96 px at x=381..390). No scroll property fixes that one.
     With the padding on the SLIDE, a slide is the full width of the strip, slide 2 begins exactly at the
     right edge, and the text box is byte-for-byte where v1 put it: 284..996 at 1280, 24..366 at 390. */
  padding-left:0; padding-right:0;
}
.review-band[data-rotate] .review-strip::-webkit-scrollbar { display:none }
.rev-slide { opacity:1; visibility:visible; flex:0 0 100%; scroll-snap-align:start; min-width:0;
             padding-left:24px; padding-right:24px }

/* THE CONTROLS. v1 draws them as <button>s, and a <button> outside a form resolves by none of JS-20's four
   rules — it would be a DEAD CONTROL. An <a> with a real href resolves by the first rule and actually works.
   A <button> also does not inherit the page font: Chrome's UA sheet gives it Arial and text-align:center,
   and `.rev-arrow` sets a size (1.7rem) but no family, so v1's two chevrons are drawn in Arial while an
   inherited font gives a visibly different glyph — measured 2026-09-05, identical 46x46 boxes at identical
   positions and 768 differing pixels. The UA <button> defaults are restated here, not chosen. */
.rev-dots .rev-dot { display:block }

/* THE ARROWS AND THE ACTIVE DOT FOLLOW THE SLIDE, with no script. v1's rotator moved RELATIVELY and lit the dot
   for the slide on screen; a single static pair of hrefs cannot do either, and the first version of this build
   shipped exactly that — from slide 7, Next went to slide 2 and Previous to slide 13, and dot 1 stayed lime on
   every slide (Validator report 1, HARD-2 and HARD-3).
   Each slide now has its OWN arrow pair (`#prev-N` / `#next-N`, wrapping at both ends, emitted outside the
   scroll container so `position:absolute` still resolves against `.review-band`), and `:target` + `:has()`
   choose which pair is shown and which dot is lit. Exactly two arrows are ever displayed, so exactly two are
   ever focusable — the same two v1 had. */
.rev-arrow { display:none }
.review-band:has(#rev-1:target) #prev-1,
.review-band:has(#rev-1:target) #next-1 { display:flex }
.review-band:has(#rev-2:target) #prev-2,
.review-band:has(#rev-2:target) #next-2 { display:flex }
.review-band:has(#rev-3:target) #prev-3,
.review-band:has(#rev-3:target) #next-3 { display:flex }
.review-band:has(#rev-4:target) #prev-4,
.review-band:has(#rev-4:target) #next-4 { display:flex }
.review-band:has(#rev-5:target) #prev-5,
.review-band:has(#rev-5:target) #next-5 { display:flex }
.review-band:has(#rev-6:target) #prev-6,
.review-band:has(#rev-6:target) #next-6 { display:flex }
.review-band:has(#rev-7:target) #prev-7,
.review-band:has(#rev-7:target) #next-7 { display:flex }
.review-band:has(#rev-8:target) #prev-8,
.review-band:has(#rev-8:target) #next-8 { display:flex }
.review-band:has(#rev-9:target) #prev-9,
.review-band:has(#rev-9:target) #next-9 { display:flex }
.review-band:has(#rev-10:target) #prev-10,
.review-band:has(#rev-10:target) #next-10 { display:flex }
.review-band:has(#rev-11:target) #prev-11,
.review-band:has(#rev-11:target) #next-11 { display:flex }
.review-band:has(#rev-12:target) #prev-12,
.review-band:has(#rev-12:target) #next-12 { display:flex }
.review-band:has(#rev-13:target) #prev-13,
.review-band:has(#rev-13:target) #next-13 { display:flex }
/* nothing targeted yet: the strip rests on slide 1, so slide 1's pair is the visible one */
.review-band:not(:has(.rev-slide:target)) #prev-1,
.review-band:not(:has(.rev-slide:target)) #next-1 { display:flex }

/* THE ACTIVE DOT. v1 marks dot 1 `is-active` in the markup and its script moved the class; here the
   markup keeps v1's class (so the page at load is v1's page) and CSS moves the highlight. */
.review-band:has(.rev-slide:target) .rev-dots .rev-dot.is-active { background:rgba(255,255,255,.55) }
.review-band:has(#rev-1:target) .rev-dots a[href="#rev-1"] { background:var(--lime) }
.review-band:has(#rev-2:target) .rev-dots a[href="#rev-2"] { background:var(--lime) }
.review-band:has(#rev-3:target) .rev-dots a[href="#rev-3"] { background:var(--lime) }
.review-band:has(#rev-4:target) .rev-dots a[href="#rev-4"] { background:var(--lime) }
.review-band:has(#rev-5:target) .rev-dots a[href="#rev-5"] { background:var(--lime) }
.review-band:has(#rev-6:target) .rev-dots a[href="#rev-6"] { background:var(--lime) }
.review-band:has(#rev-7:target) .rev-dots a[href="#rev-7"] { background:var(--lime) }
.review-band:has(#rev-8:target) .rev-dots a[href="#rev-8"] { background:var(--lime) }
.review-band:has(#rev-9:target) .rev-dots a[href="#rev-9"] { background:var(--lime) }
.review-band:has(#rev-10:target) .rev-dots a[href="#rev-10"] { background:var(--lime) }
.review-band:has(#rev-11:target) .rev-dots a[href="#rev-11"] { background:var(--lime) }
.review-band:has(#rev-12:target) .rev-dots a[href="#rev-12"] { background:var(--lime) }
.review-band:has(#rev-13:target) .rev-dots a[href="#rev-13"] { background:var(--lime) }

.rev-arrow, .rev-dot { font-family:Arial, sans-serif; text-align:center; text-decoration:none }

/* THE ARROWS SIT ON THE WORDS BELOW 1000px, AND THEY DO ON v1 TOO. Measured 2026-09-05 at 390, 700 and 760 on
   BOTH sides: the quote runs the full width of the strip (24..366 at 390) and the two 46px discs are at x=18
   and x=326, so both overlap the text a visitor is trying to read. At 1280 the strip is 760px wide inside a
   1280px band and there is no overlap. MeatCheck FIX-FIRST, inherited from v1 and FIXED here under the
   2026-09-05 defects ruling, declared with before and after.
   The words do not move: narrowing the text column to make room would change the band's height and stop the
   page being v1's page. The ARROWS move, into the band's own bottom padding beside the dot row — which at 390
   is 42px of clear photograph between the white card (ends y=2051) and the band's edge (2093), with the 13
   centred dots occupying only x=70..320. Nothing else changes. */
@media(max-width:1000px){
  .rev-arrow { top:auto; bottom:4px; transform:none; width:34px; height:34px; font-size:1.3rem }
  .rev-prev { left:6px }
  .rev-next { right:6px }
}
/* AND THE DOT STRIP MUST NOT SWALLOW THE TAP. `.rev-dots` is `position:absolute; left:0; right:0` — a
   full-width invisible bar at the same z-index as the arrows — so once the arrows moved down beside it, a tap
   on an arrow landed on the CONTAINER instead: Playwright reported `<div class="rev-dots"> intercepts pointer
   events` and the click timed out, at 390 only. The arrows were visible and looked fine; only a click found it.
   Caught 2026-09-05 by re-running strip-check.mjs after the move — the same lesson as P-44 one step over.
   The container carries no pixels of its own, so it should carry no clicks of its own either. */
.rev-dots { pointer-events:none }
.rev-dots a { pointer-events:auto }

/* THE MASKED ICON ITSELF. extract-v1.py writes one `--glyph` per distinct inline SVG (icons.css); this is the
   one rule that turns that custom property into a picture. `contain` keeps the SVG's own aspect ratio inside
   whatever box v1's own rule gives it, and `background-color` is what the twin rules above set from v1's
   `fill`. `aria-hidden` is not needed: every glyph on this site replaced an <svg aria-hidden="true">. */
[class^="icon--"] {
  display:inline-block;
  -webkit-mask:var(--glyph) center / contain no-repeat;
          mask:var(--glyph) center / contain no-repeat;
}

/* THE HOUSECALL PRO REVIEWS, SERVER-RENDERED. [MARK] 2026-09-03 refused client.housecallpro.com as an embed
   and kept the FUNCTION: the reviews are content and are drawn from the store. v1's iframe was a 1500px
   (1700px at 390) block; the snapshot is a column of this page's OWN `.rev-card` figures, which is the shape
   v1 already uses for its three spotlight reviews, so nothing here is new design. Only the note and the
   owner's replies need a rule, and both take the type already in use beside them. */
.hp-reviews-snapshot {
  /* v1's `.hp-reviews` box, declaration for declaration, so the page's geometry does not move: the widget was
     a 1500px scrolling region (1700px at 390) and this is a 1500px scrolling region. Left as a free-flowing
     column it was 2,876px and pushed everything below it down 1,376px. The reviews are all in the document
     either way; what this keeps is the page. */
  display:block; width:100%; max-width:900px; height:1500px; overflow-y:auto; border:0; margin:0 auto 22px;
  text-align:left; background:#fff; padding:20px 22px
}
.hp-reviews-snapshot .rev-card { margin:0 0 20px }
.hp-snap-note { font-family:var(--small); font-size:.9rem; color:var(--gray-deep); text-align:center; margin:0 }
.hp-reply { font-family:var(--small); font-size:.88rem; color:var(--gray-deep); border-top:1px solid var(--line);
            margin:10px 0 0; padding-top:10px }
@media(max-width:768px){ .hp-reviews-snapshot { height:1700px } }

/* GLYPHS, generated by extract-v1.py 2026-09-05. Every inline SVG v1 carried, keyed by content hash and
   drawn as a mask so the element that carries it holds no markup. Decoration is stylesheet, not content. */
.icon--2ec0f487{--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 aria-hidden=%22true%22%3E%3Cpath d=%22M14 8.5V6.8c0-.8.5-1 .9-1H17V2.6h-2.9c-2.7 0-3.6 2-3.6 3.9v2H8v3.4h2.5V22H14v-10h2.6l.4-3.5H14z%22/%3E%3C/svg%3E")}
.icon--91caefca{--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 aria-hidden=%22true%22%3E%3Cpath d=%22M18.9 2H22l-6.8 7.8L23.2 22h-6.3l-4.9-6.4L6.4 22H3.3l7.3-8.3L1.6 2H8l4.4 5.9L18.9 2zm-1.1 18.1h1.7L7.1 3.8H5.3l12.5 16.3z%22/%3E%3C/svg%3E")}
.icon--b868cbab{--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 aria-hidden=%22true%22%3E%3Cpath d=%22M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5zM3 9h4v12H3zM9 9h3.8v1.7h.1c.5-1 1.8-2 3.7-2 4 0 4.7 2.6 4.7 6V21h-4v-5.5c0-1.3 0-3-1.9-3s-2.2 1.4-2.2 2.9V21H9z%22/%3E%3C/svg%3E")}
.icon--1188bdfa{--glyph:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 aria-hidden=%22true%22%3E%3Cpath d=%22M10.6 13.4a1 1 0 0 0 1.4 0l4.5-4.5a3 3 0 0 0-4.2-4.2L10 6.9l1.4 1.4 2.3-2.2a1 1 0 0 1 1.4 1.4L10.6 12a1 1 0 0 0 0 1.4zm2.8-2.8a1 1 0 0 0-1.4 0l-4.5 4.5a3 3 0 1 0 4.2 4.2l2.3-2.2-1.4-1.4-2.3 2.2a1 1 0 0 1-1.4-1.4l4.5-4.5a1 1 0 0 0 0-1.4z%22/%3E%3C/svg%3E")}

/* INLINE STYLES, generated by extract-v1.py 2026-09-05. v1 wrote these as style="" attributes; H-13 forbids the
   attribute, so each distinct declaration list is one utility class, named by hash, carried by the same element. */
.u-846b5d{background-image:url('https://media.beargrassai.com/silcoplumbingmt/home/gallery-warehouse-92693392.jpg') !important}
