/* Menu and drawer panels are rendered into the page (they must be, or Google
   sees nothing) but hidden until the header JS marks them [data-open].
   Claude Design's runtime removes the <sc-if> wrapper during rendering, so the
   hook is the panel's own class, not the wrapper. */
.desk .menu,
.drawer { display: none; }
.desk .menu[data-open] { display: grid; }
.drawer[data-open] { display: block; }

/* site.js toggles form steps, FAQ answers and review panels with the hidden
   attribute. Several of those elements carry inline display:grid from the
   design, which would beat the browser's own [hidden] rule. */
[hidden] { display: none !important; }

/* Phone header. The artboard has no rule below 1000px, so at 390px the logo
   lockup (312px, nowrap tagline) + the call button (198px) + the burger force
   the page to 596px and phones zoom out to 65%. Same bug in the Claude Design
   preview. Below 640px: the call button is icon-only (aria-label carries the
   number), the tagline may wrap, gaps shrink. Nothing else changes. */
@media (max-width: 640px) {
  header > div { gap: 12px; }
  header > div > a[href="/"] { flex: 0 1 auto !important; min-width: 0; }   /* inline style says flex:0 0 auto — it must be allowed to shrink */
  header > div > a[href="/"] > span { min-width: 0; }
  header > div > a[href="/"] > span > span:last-child { white-space: normal; font-size: 10px; letter-spacing: .06em; line-height: 1.3; }
  header > div > a[href^="tel:"] { padding: 0 !important; width: 44px; justify-content: center; }
  header > div > a[href^="tel:"] .lbl { display: none; }
}

/* Homepage trust row on phones. The design goes 4 → 3 → 2 columns and stops at
   900px; at 390px "★ 5.0 Google · 24 reviews" (nowrap) plus the Schedule button
   overflow to 465px. One column below 600px. */
@media (max-width: 600px) {
  .trust-row { grid-template-columns: 1fr !important; }
  .trust-row .trust-col { width: auto !important; height: auto !important; }
}

/* the full logo mark in the header: 60px on desktop, 48px on phones so the row stays short */
@media (max-width: 640px) {
  header > div > a[href="/"] > img { height: 48px !important; width: auto !important; }
}

/* ---- per-city verified fact list (data/cities/page-blocks.json) ---- */
.city-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
              gap: 1px; margin: 20px 0 0; padding: 0; background: rgba(10,37,64,.09);
              border: 1px solid rgba(10,37,64,.09); border-radius: 10px; overflow: hidden; }
.city-facts > div { background: #fff; padding: 12px 14px; display: grid; gap: 3px; align-content: start; }
.city-facts dt { margin: 0; font: 600 11px/1.2 var(--body); letter-spacing: .06em;
                 text-transform: uppercase; color: #5b6b80; }   /* was navy at 60% opacity = 4.08:1; #5b6b80 is 5.4:1 (WCAG 1.4.3) */
.city-facts dd { margin: 0; font: 500 14px/1.35 var(--body); color: var(--navy); }
@media (max-width: 420px) { .city-facts { grid-template-columns: 1fr; } }

/* ---- coverage map (tools/render/coverage-map.mjs) ---------------------------------------------
   A service-area business has no storefront to pin, so this answers "do you come to my city".
   Soft coverage shape behind the dots, distance rings from each crew base, a searchable list that
   stays in sync with the map, and a card that shows the verified facts for whatever is selected. */
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
           clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.cm { position:absolute; inset:0; display:grid; grid-template-rows:auto 1fr auto;
      background:linear-gradient(170deg,#fbfdff 0%,#f2f7fc 100%); border-radius:10px; overflow:hidden; }
.cm-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px;
           padding:10px 14px; border-bottom:1px solid rgba(10,37,64,.08); background:rgba(255,255,255,.7); }
.cm-title { margin:0; font:400 13px/1.2 var(--body); color:var(--navy); opacity:.8; }
.cm-title strong { font-weight:700; opacity:1; }
.cm-find { position:relative; display:flex; align-items:center; gap:8px; }
.cm-find-in { width:150px; min-height:34px; padding:0 12px; border:1px solid rgba(10,37,64,.18);
              border-radius:999px; font:500 13px/1 var(--body); color:var(--navy); background:#fff; }
.cm-find-in:focus { outline:2px solid #ff9046; outline-offset:1px; }
.cm-find-out { font:600 12px/1.3 var(--body); max-width:190px; }
.cm-find-out.ok { color:#17663a; } .cm-find-out.no { color:#8a4b13; }
.cm-body { position:relative; min-height:0; display:grid; grid-template-columns:1fr 216px; }
.cm-svg { width:100%; height:100%; min-height:0; display:block; }
.cm-side { border-left:1px solid rgba(10,37,64,.08); background:rgba(255,255,255,.55);
           display:grid; grid-template-rows:auto 1fr; min-height:0; }
.cm-list { margin:0; padding:4px; list-style:none; overflow:auto; min-height:0; }
.cm-row { width:100%; display:flex; justify-content:space-between; align-items:baseline; gap:8px;
          padding:6px 9px; border:0; border-radius:7px; background:none; cursor:pointer; text-align:left;
          font:500 12.5px/1.3 var(--body); color:var(--navy); }
.cm-row:hover, .cm-row:focus-visible { background:rgba(255,144,70,.13); outline:none; }
.cm-row.on { background:#0a2540; color:#fff; }
.cm-row.hide { display:none; }
.cm-row-mi { font-size:11px; opacity:.6; font-variant-numeric:tabular-nums; white-space:nowrap; }
.cm-row.on .cm-row-mi { opacity:.75; }
.cm-card { padding:12px 12px 10px; border-bottom:1px solid rgba(10,37,64,.08); background:#fff; }
.cm-card-name { margin:0 0 8px; font:700 15px/1.2 var(--body); color:var(--navy); }
.cm-card-facts { margin:0 0 10px; display:grid; gap:5px; }
.cm-card-facts div { display:flex; justify-content:space-between; gap:10px; font:400 11.5px/1.35 var(--body); color:var(--navy); }
.cm-card-facts dt { opacity:.58; } .cm-card-facts dd { margin:0; font-weight:600; text-align:right; }
.cm-card-go { font:600 12px/1 var(--body); color:var(--navy); }
.cm-note { margin:0; padding:9px 14px; border-top:1px solid rgba(10,37,64,.08);
           background:rgba(255,255,255,.7); font:400 11.5px/1.45 var(--body); color:var(--navy); opacity:.85; }
.cm-note a { color:inherit; }
@media (max-width:760px) {
  .cm-body { grid-template-columns:1fr; grid-template-rows:1fr auto; }
  .cm-side { border-left:0; border-top:1px solid rgba(10,37,64,.08); max-height:38%; }
  .cm-list { display:flex; flex-wrap:wrap; gap:2px; }
  .cm-row { width:auto; }
  .cm-find-in { width:120px; }
  .cm-note { font-size:10.5px; }
}

/* ---- coverage map v2: real outlines (tools/render/coverage-map-v2.mjs) ----------------------
   Replaces the v1 dot/blob rules below the .cm-find rules. Cities are filled shapes: neutral at
   rest, warm on hover, navy when selected; a dashed route draws from the nearest crew base to the
   selected city. Shapes rise in one after another on first paint (reduced-motion: static). */
.cm-v2 .cm-svg { background:linear-gradient(180deg,#f7faff 0%,#eef4fb 100%); }
.cm-shape { fill:#d6e2f2; stroke:#fff; stroke-width:1.4; stroke-linejoin:round;
            transition:fill .16s ease, stroke .16s ease; transform-box:fill-box; transform-origin:center; }
.cm-city:hover .cm-shape, .cm-city:focus-visible .cm-shape { fill:#ffd2b5; stroke:#ff9046; }
.cm-city.on .cm-shape { fill:#122a48; stroke:#fff; }
.cm-v2 .cm-city.dim { opacity:.62; }
.cm-city.dim .cm-shape { fill:#e6edf7; }
.cm-city.dim .cm-label { opacity:0 !important; }
.cm-v2 .cm-label { font:600 12px/1 var(--body); fill:var(--navy); text-anchor:middle; dominant-baseline:middle;
                   opacity:0; transition:opacity .14s ease; pointer-events:none;
                   paint-order:stroke; stroke:#fff; stroke-width:3.5px; stroke-linejoin:round; }
.cm-city:hover .cm-label, .cm-city:focus-visible .cm-label { opacity:1; }
.cm-city.on .cm-label { opacity:1; fill:#fff; stroke:#122a48; }
.cm-v2 .cm-city:focus-visible { outline:none; }
.cm-v2 .cm-base-halo { fill:rgba(255,144,70,.18); stroke:#ff9046; stroke-width:1.5; }
.cm-v2 .cm-base-dot { fill:#ff9046; stroke:#fff; stroke-width:2.5; }
.cm-v2 .cm-base-label { font:700 10.5px/1 var(--body); fill:var(--navy); text-anchor:middle;
                        letter-spacing:.08em; text-transform:uppercase; opacity:.8;
                        paint-order:stroke; stroke:#fff; stroke-width:3px; }
.cm-route { stroke:#ff9046; stroke-width:2.2; stroke-linecap:round; stroke-dasharray:6 6; opacity:0; }
.cm-route.on { opacity:1; }
.cm-credit { display:block; margin-top:4px; opacity:.6; font-size:10.5px; }
@media (prefers-reduced-motion:no-preference) {
  .cm-v2 .cm-shape { animation:cmRise .55s cubic-bezier(.2,.8,.3,1) both; animation-delay:calc(var(--i) * 18ms); }
  @keyframes cmRise { from { opacity:0; transform:translateY(6px) scale(.96) } to { opacity:1; transform:none } }
  .cm-v2 .cm-base-halo { animation:cmPulse 2.6s ease-in-out infinite; transform-box:fill-box; transform-origin:center; }
  @keyframes cmPulse { 0%,100% { transform:scale(1); opacity:.9 } 50% { transform:scale(1.35); opacity:.35 } }
  .cm-route.on { animation:cmDash .9s linear infinite; }
  @keyframes cmDash { to { stroke-dashoffset:-24 } }
}
@media (max-width:760px) { .cm-v2 .cm-label { font-size:15px; } }
@media (max-width:760px) {
  /* phone: keep the map readable when the fact card opens; list scrolls, map does not shrink below 190px */
  .cm-v2 .cm-body { grid-template-rows:minmax(190px,1fr) auto; }
  .cm-v2 .cm-side { max-height:52%; }
  .cm-v2 .cm-card-facts div { font-size:11px; }
}

/* the map's own full-width stage on /service-areas/ (render.mjs 4c-map) */
.svc-map { padding: 0 clamp(20px,4vw,48px) clamp(40px,5vw,72px); }
.svc-map-stage { position:relative; height:clamp(460px, 50vw, 680px); border-radius:10px; box-shadow:var(--shadow); }
@media (max-width:760px) {
  .svc-map-stage { height:640px; }
  .cm-v2 .cm-body { grid-template-rows:minmax(300px,1fr) auto; }
  .cm-v2 .cm-note { font-size:10.5px; padding:7px 12px; }
  .cm-credit { font-size:9.5px; }   /* CC BY attribution stays visible at every width */
}

/* inside the design's small photo box (the home page): map only, no side list, so the outlines get the width */
.pic > .cm-v2 .cm-body { grid-template-columns:1fr; }
.pic > .cm-v2 .cm-side { display:none; }
.pic > .cm-v2 .cm-credit { display:none; }   /* the full attribution is on /service-areas/; the home box has no room */

/* service-area pages: the facts-driven sections (tools/render/city-enrich.mjs) */
.city-more { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:var(--s3, 24px); align-items:start; padding-top:0; }
.city-more-col { grid-column:span 6; max-width:62ch; }
.city-more-col p { margin:0 0 14px; } .city-more-col p:last-child { margin-bottom:0; }
.city-more-col a, .city-more-card a { color:var(--navy); text-decoration:underline; text-underline-offset:3px; }
.city-more-grid { grid-column:1 / -1; display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:16px; }
.city-more-card { padding:24px; }
.city-more-card p { margin:8px 0 0; }
.city-near { list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.city-near li { display:flex; justify-content:space-between; gap:12px; }
.city-near a { text-decoration:none; font-weight:600; }
@media (max-width:900px) { .city-more-col { grid-column:1 / -1; } }

/* Menu group labels were <h4>s, so every page's first heading was "Air Conditioning" inside the
   nav, ahead of the real h1 — 231 pages, one template. They are now <p class="nav-h"> and keep
   the h4 look. The rules below mirror the design's h4 exactly. */
.nav-h { font-family: var(--font); font-weight: 700; color: var(--navy); letter-spacing: -.01em; line-height: 1.02; margin: 0; font-size: var(--t-lg); }

/* Brands we service (26 service pages): the manufacturers' logos in ONE horizontal line.
   The row layout is also inline on the <ul> (render.mjs step 3), so a stale copy of this file can
   never turn it into a vertical bulleted list. On phones the line swipes sideways; nothing is
   duplicated. Files: assets/brand/partners/. */
.brand-strip { overflow: hidden; }
.brand-logo img { max-width: 150px; object-fit: contain; }
.brand-note { margin: 0; max-width: 62ch; color: var(--slate); }
@media (max-width: 900px) {
  .brand-strip { overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; scroll-snap-type: x proximity;
    -webkit-mask-image: linear-gradient(90deg, #000 88%, transparent); mask-image: linear-gradient(90deg, #000 88%, transparent); }
  .brand-strip::-webkit-scrollbar { display: none; }
  .brand-tiles { justify-content: flex-start !important; gap: 32px !important; width: max-content; }
  /* a real flex item, not padding: padding at the end of a scroller is dropped by some engines, and
     the last logo (York) sat under the fade, cut in half, at the end of the swipe */
  .brand-tiles::after { content: ''; flex: 0 0 48px; }
  .brand-logo { scroll-snap-align: start; }
}
/* The visit-checklist card sticks beside the symptoms column instead of leaving a hole under it. */
@media (min-width: 901px) { .svc-card { position: sticky; top: 96px; } }

/* Service-page sections added by tools/render/service-pages.mjs (2026-09-18). Built from the design's
   own pieces (.wrap .sec .card .kicker .h2 .h3 .small) so they sit in the page like the rest. */
.svc-intro { padding-top: clamp(40px, 5vw, 64px); padding-bottom: 8px; }
.svc-intro-in { max-width: 72ch; }
.svc-intro-in p { margin: 0 0 14px; }
.svc-head { max-width: 60ch; margin-bottom: 28px; }
.svc-intro a, .svc-faq a, .svc-expect a { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.svc-rel { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; }
.svc-rel-card { display: flex; flex-direction: column; padding: 0; overflow: hidden; text-decoration: none; color: inherit; transition: transform .2s ease, box-shadow .2s ease; }
.svc-rel-card:hover, .svc-rel-card:focus-visible { transform: translateY(-3px); box-shadow: var(--shadow); }
.svc-rel-pic { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border-radius: 0; }
.svc-rel-body { padding: 20px 22px 24px; display: grid; gap: 8px; }
.svc-rel-body .h3 { margin: 0; font-size: var(--t-lg); }
.svc-rel-body p { margin: 0; }
.svc-review { padding-bottom: clamp(40px, 5vw, 72px); }
.svc-quote { margin: 0; padding: 28px 32px; max-width: 760px; }
.svc-quote blockquote { margin: 12px 0 10px; font-size: var(--t-lg); color: var(--navy); }
.svc-stars { color: var(--orange-t, #e85818); letter-spacing: .1em; font-size: 13px; }
/* what to expect: prose + one real job photo */
.svc-expect { padding-top: clamp(24px, 3vw, 40px); }
.svc-expect .h2 { margin-bottom: 16px; }
.svc-expect-body { max-width: 62ch; }
.svc-notes-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px 28px; }
.svc-note { padding: 18px 0 0; border-top: 1px solid rgba(18,42,72,.12); }
.svc-note .h3 { margin: 0 0 6px; font-size: var(--t-lg); }
.svc-note p { margin: 0; }
.svc-note a, .svc-notes a { color: var(--navy); text-decoration: underline; text-underline-offset: 3px; }
.svc-expect-body p { margin: 0 0 14px; }
.svc-expect-body p:last-child { margin-bottom: 0; }
.svc-expect-pic { position: relative; margin: 0; aspect-ratio: 4 / 3; border-radius: 10px; overflow: hidden; }
@media (max-width: 900px) { .svc-expect > * { grid-column: 1 / -1 !important; } .svc-expect-side { margin-top: 20px; } }
@media (prefers-reduced-motion: reduce) { .svc-rel-card { transition: none; } }
/* phones: related cards become compact rows, so three tall photos do not cost three screens */
@media (max-width: 600px) {
  .svc-rel-card { flex-direction: row; align-items: stretch; }
  .svc-rel-pic { flex: 0 0 112px; aspect-ratio: auto; min-height: 112px; }
  .svc-rel-body { padding: 14px 16px; }
}

/* group pages: the animated how-it-works diagram (tools/render/static/diagrams/*.svg) */
.svc-diagram { padding-top: clamp(24px, 3vw, 40px); }
.svc-diagram .svc-head p { margin: 12px 0 0; max-width: 62ch; }
.svc-diagram-stage { background: #fff; border: 1px solid rgba(18,42,72,.10); border-radius: 12px; padding: clamp(12px, 2vw, 28px); box-shadow: var(--shadow); }
.svc-diagram-stage svg { display: block; width: 100%; height: auto; }
@media (max-width: 700px) { .svc-diagram-stage { overflow-x: auto; } .svc-diagram-stage svg { min-width: 640px; } }

/* ---- home review cards v2 (2026-09-23): Google G + Yelp burst, Yelp card back beside Google ---- */
#reviews .rv-logo{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#fff;border:1px solid #dfe6f0;flex:0 0 auto;align-self:center;transition:transform .2s ease,box-shadow .2s ease}
#reviews .rv-logo:hover,#reviews .rv-logo:focus-visible{transform:translateY(-1px);box-shadow:0 4px 12px rgba(18,42,72,.12)}
#reviews .rv-logo svg{width:24px;height:24px;display:block}
#reviews .rv-head{padding:24px 24px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
#reviews .rv-score{display:flex;align-items:baseline;gap:12px}
#reviews .rv-quotes{display:grid;gap:0;padding:8px 24px 8px}
#reviews .rvq{padding:14px 0}
#reviews .rvq-stars{color:var(--orange-t);font-size:12px;letter-spacing:.1em}
#reviews .rvq p{margin:8px 0 6px;color:var(--navy)}
#reviews .rv-more{display:inline-block;margin:0 24px 24px}
#reviews .rv-yelp .rvq-stars{color:#FF1A1A}
@media (max-width:860px){#reviews .rv-grid>.card{grid-column:1/-1!important}}

/* ---- /maintenance-plan/ tiers (2026-09-28) ---- */
.plans-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:28px}
.plans-intro{margin:12px 0 0;max-width:56ch}
.plan-toggle{display:inline-flex;background:#eef3fa;border:1px solid #d9e2ee;border-radius:999px;padding:4px;gap:4px}
.plan-toggle button{border:0;background:transparent;font:inherit;font-weight:600;font-size:14px;color:var(--navy);padding:8px 16px;border-radius:999px;cursor:pointer}
.plan-toggle button small{font-weight:600;font-size:11px;color:#b3470f;margin-left:4px}
.plan-toggle button[aria-pressed="true"]{background:#fff;box-shadow:0 2px 6px rgba(18,42,72,.12)}
.plan-toggle button:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;align-items:stretch}
.plan-card{position:relative;background:#fff;border:1px solid #d9e2ee;border-radius:16px;padding:28px 24px 24px;display:flex;flex-direction:column;gap:10px;transition:transform .25s ease,box-shadow .25s ease}
.plan-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(18,42,72,.12)}
.plan-pop{border:2px solid var(--orange);box-shadow:0 18px 40px rgba(232,88,24,.16);transform:translateY(-8px)}
.plan-pop:hover{transform:translateY(-11px)}
.plan-badge{position:absolute;top:-13px;left:50%;transform:translateX(-50%);background:var(--orange);color:var(--navy);font:700 12px/1 var(--body);letter-spacing:.06em;text-transform:uppercase;padding:7px 12px;border-radius:999px;white-space:nowrap}
.plan-name{margin:0;font:700 24px/1.2 var(--body);letter-spacing:-.01em;color:var(--navy)}
.plan-tag{margin:0;color:#4f5168;font-size:15px}
.plan-price{margin:6px 0 4px;color:var(--navy)}
.plan-price b{font-size:40px;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.plan-price span span{font-size:15px;color:#4f5168;margin-left:2px}
.plan-list{list-style:none;margin:6px 0 14px;padding:0;display:grid;gap:10px;flex:1;align-content:start}
.plan-list li{display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--navy)}
.plan-tick{flex:0 0 auto;margin-top:2px}
.plan-join{justify-content:center;text-align:center}
.plan-terms{margin-top:22px;max-width:80ch}
@media (max-width:900px){.plan-grid{grid-template-columns:1fr;gap:26px}.plan-pop{order:-1;transform:none}.plan-pop:hover{transform:translateY(-3px)}}
@media (prefers-reduced-motion:reduce){.plan-card,.plan-pop{transition:none}}

/* ---- /careers/ listing + application (2026-09-28) ---- */
.job-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:24px;align-items:start}
.job-card{padding:32px;display:grid;gap:12px}
.job-card .h3{margin-top:10px}
.job-title{margin:0}
.job-tags{display:flex;flex-wrap:wrap;gap:8px;margin:0}
.job-tag{background:#fff1e6;color:#8a3a0c;font:600 13px/1 var(--body);padding:7px 11px;border-radius:999px}
.job-tag-l{background:#eef3fa;color:var(--navy)}
.job-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.job-list li{display:flex;gap:12px}
.job-list .dot{margin-top:10px;flex:0 0 auto}
.job-pay{margin:6px 0 0}
.job-form{padding:28px;display:grid;gap:12px;position:relative;color:var(--navy)}
.job-form .h3{margin:0}
.job-form .small{margin:0}
.job-form .input.bad{border-color:#d63b2f}
.job-send{min-height:52px;justify-content:center}
.job-done{padding:28px}
@media (max-width:900px){.job-grid{grid-template-columns:1fr}}

/* ---- Socials & Media page + home strip (2026-09-28) ---- */
.soc-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-bottom:48px}
.soc-card{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"ic t" "b b" "btn btn";gap:14px 16px;padding:26px;text-decoration:none;color:var(--navy);transition:transform .25s ease,box-shadow .25s ease}
.soc-card:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(18,42,72,.12)}
.soc-card:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.soc-ic{grid-area:ic;width:58px;height:58px;border-radius:16px;display:grid;place-items:center}
.soc-card-t{grid-area:t;display:flex;flex-direction:column;justify-content:center;gap:2px}
.soc-card-t b{font-size:20px}
.soc-card-b{grid-area:b;color:#4f5168}
.soc-card .soc-btn{grid-area:btn;justify-self:start}
.soc-instagram{background:linear-gradient(45deg,#f58529,#dd2a7b 45%,#8134af 75%,#515bd4)}
.soc-facebook{background:#0866FF}
.soc-btn{display:inline-flex;align-items:center;gap:8px;color:#fff;font:600 15px/1 var(--body);padding:12px 18px;border-radius:999px;text-decoration:none;transition:filter .2s ease,transform .2s ease}
.soc-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.soc-btn:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.soc-gal-head{margin-bottom:22px}
.soc-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.soc-grid-strip{grid-template-columns:repeat(6,minmax(0,1fr))}
.soc-tile{position:relative;display:block;aspect-ratio:1;border-radius:12px;overflow:hidden;background:#dfe6f0}
.soc-tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.soc-tile:hover img{transform:scale(1.06)}
.soc-tile:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.soc-strip-head{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.soc-strip-btns{display:flex;gap:10px;flex-wrap:wrap}
.soc-more{display:inline-block;margin-top:16px}
@media (max-width:900px){.soc-cards{grid-template-columns:1fr}.soc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.soc-grid-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.soc-card,.soc-tile img,.soc-btn{transition:none}}
.soc-strip .soc-cards{margin-bottom:22px}
/* Home page flow (Osher 2026-09-30: "blend and merge them in to make it smooth"). The design's odd/even section
   gradients only lined up in the old order; after the reorder they met at hard edges. On home, <main> carries one
   light ground (ends on the footer's #d6e4f5), every section below the hero is transparent, and the full-width
   sections get a soft band that fades in and out from transparent, so no two sections can meet at a seam. */
main.home-flow{background:linear-gradient(180deg,#f4f8fd 0,#f4f8fd calc(100% - 420px),#d6e4f5 100%)}
main.home-flow > section:not(.hero-wrap){background:transparent!important}
main.home-flow > #reviews,main.home-flow > #why,main.home-flow > #areas,main.home-flow > #financing,main.home-flow > #request{background:linear-gradient(180deg,rgba(214,228,245,0) 0,rgba(214,228,245,.85) 22%,rgba(214,228,245,.85) 78%,rgba(214,228,245,0) 100%)!important}
/* /maintenance-plan/ "How the plan works": numbered rows, reusing the design's .tl-dot number badge */
.plan-steps{list-style:none;margin:0;padding:0;display:grid;gap:22px}
.plan-steps li{display:flex;gap:16px;align-items:flex-start}
.plan-steps .tl-dot{flex:0 0 44px}
.plan-steps b{color:var(--navy);font-weight:600;font-size:17px}
.plan-steps p{margin:4px 0 0;max-width:60ch}
/* /parts-repair-lab/ + /parts-warehouse/ (Osher 2026-10-01: "a cool design … organized and formatted well").
   Layout only; colours, type and components are the site's own tokens. One bold move: the navy steps band. */
.lab-head .h2{text-wrap:balance}
.lab-sub{max-width:62ch;margin:12px 0 0}
.lab-copy{display:grid;gap:16px;font-size:17px;line-height:1.65}
.lab-copy p{margin:0;max-width:62ch}
.lab-copy p:first-child{font-size:20px;line-height:1.5;color:var(--navy);font-weight:500}
.lab-facts{list-style:none;margin:44px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.lab-facts li{background:#fff;border:1px solid var(--rule);border-radius:10px;padding:22px 24px;display:grid;gap:6px}
.lab-facts b{font:700 clamp(26px,3vw,34px)/1.1 var(--body);color:var(--navy);letter-spacing:-.02em}
.lab-facts span{font-size:15px;color:var(--navy);opacity:.8}
.lab-steps-band{background:linear-gradient(160deg,var(--navy) 0%,var(--navy-d) 100%)!important;color:#fff}
.lab-steps-band .kicker{color:var(--orange)!important;opacity:1}
.lab-steps-band .h2,.lab-steps-band b{color:#fff}
.lab-steps-band .lab-sub,.lab-steps-band p{color:rgba(255,255,255,.82)}
.lab-steps{list-style:none;margin:36px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;counter-reset:s}
.lab-steps li{display:grid;align-content:start;gap:10px;padding:22px 20px;border:1px solid rgba(255,255,255,.14);border-radius:10px;background:rgba(255,255,255,.04)}
.lab-steps .tl-dot{border-color:var(--navy)}
.lab-steps b{font-size:18px;font-weight:600}
.lab-steps p{margin:0;font-size:15px;line-height:1.55}
.lab-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px}
.lab-card{background:#fff;border:1px solid var(--rule);border-radius:12px;overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.lab-card-pic{aspect-ratio:16/10;border-radius:0}
.lab-card-pic img,.lab-gallery .pic img,.lab-cross-pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lab-card-body{padding:22px 24px;display:grid;gap:8px;align-content:start}
.lab-card-body p{margin:0;max-width:56ch}
.lab-card-text{background:var(--sky);align-content:center}
.lab-card-text .lab-card-body{padding:32px 28px}
.lab-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px}
.lab-gallery figure{margin:0;display:grid;gap:10px}
.lab-gallery .pic{aspect-ratio:4/3;border-radius:12px}
.lab-gallery figcaption{color:var(--navy);opacity:.8}
.lab-note{margin:10px 0 0;opacity:.8}
.lab-stories{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:28px}
.lab-story{background:#fff;border:1px solid var(--rule);border-radius:12px;padding:26px 28px;display:grid;gap:10px;align-content:start}
.lab-story::before{content:"\201C";font:700 54px/0.6 Georgia,serif;color:var(--orange);height:22px}
.lab-story p{margin:0;line-height:1.65}
.lab-cross{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);border-radius:14px;overflow:hidden;background:#fff;border:1px solid var(--rule);text-decoration:none;color:inherit;transition:box-shadow .2s,transform .2s}
.lab-cross:hover{box-shadow:0 20px 40px -24px rgba(18,42,72,.35);transform:translateY(-2px)}
.lab-cross:focus-visible{outline:3px solid var(--orange);outline-offset:3px}
.lab-cross-pic{min-height:240px;border-radius:0}
.lab-cross-body{padding:32px 34px;display:grid;gap:10px;align-content:center}
.lab-cross-body p{margin:0;max-width:52ch}
.lab-cross-body .tl{color:var(--orange-t)}
.lab-cta{margin-top:28px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px 32px;padding:32px 34px;border-radius:14px;background:var(--navy);color:#fff}
.lab-cta .h2{color:#fff}.lab-cta p{margin:8px 0 0;color:rgba(255,255,255,.85);max-width:56ch}
.lab-cta-btns{display:flex;flex-wrap:wrap;gap:12px}
.lab-cta .b-n{background:#fff;color:var(--navy);border-color:#fff}
@media (max-width:1100px){.lab-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:900px){.lab-facts,.lab-cards,.lab-gallery,.lab-stories{grid-template-columns:1fr}.lab-steps{grid-template-columns:1fr}.lab-cross{grid-template-columns:1fr}.lab-cross-pic{min-height:200px;aspect-ratio:16/9}.lab-cta,.lab-cross-body{padding:24px 22px}}
@media (prefers-reduced-motion:reduce){.lab-cross{transition:none}.lab-cross:hover{transform:none}}
main.lab-flow{background:linear-gradient(180deg,#f4f8fd 0,#f4f8fd calc(100% - 420px),#d6e4f5 100%)}
main.lab-flow > section:not(.hero-wrap):not(.lab-steps-band){background:transparent!important}
/* Header fit (2026-10-01): with the "Repair Parts and Lab" tab the desktop row needs ~1311px. It already
   overflowed 1001-1114px before the tab. So: the burger menu takes over up to 1100px, and from 1101-1360px the
   "Boost Services / Heating and Cooling · Lic." text beside the logo mark hides (the mark stays; at those widths
   the top bar still shows the license number, and the footer has it on every page). */
@media (min-width:1101px) and (max-width:1360px){header > div > a:first-child > span{display:none!important}}   /* phones keep it: the license shows in the first screen there */
@media (max-width:1100px){header nav.desk{display:none}header .burger{display:inline-flex!important}}
/* ---- Boost Certified circuit (2026-10-01, Osher: "a better diagram with animations and textures") ----
   A copper trace links a solder pad per step. On .run (site.js certFlow, once): the current runs the trace in
   2.4s, each pad lights as it arrives, the gauge needle sweeps, the seal stamps. Everything is transform/opacity/
   stroke-dashoffset, plays once and rests: no infinite loops, no blur filters (the scroll-lag lesson). */
.lab-steps-band{position:relative;overflow:hidden}
.lab-steps-band > .wrap{position:relative;z-index:1}
.lab-pcb{position:absolute;inset:0;opacity:.09;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' fill='none' stroke='%23ffffff' stroke-width='1.4'%3E%3Cpath d='M0 30h46l18 18h40l16-16h40M20 160v-46l22-22h38M160 96h-30l-14 14v50M70 0v22l14 14v26M104 48v40l-18 18H52'/%3E%3Cg fill='%23ffffff' stroke='none'%3E%3Ccircle cx='46' cy='30' r='3.2'/%3E%3Ccircle cx='104' cy='48' r='3.2'/%3E%3Ccircle cx='80' cy='92' r='3.2'/%3E%3Ccircle cx='130' cy='96' r='3.2'/%3E%3Ccircle cx='84' cy='62' r='3.2'/%3E%3Ccircle cx='52' cy='106' r='3.2'/%3E%3C/g%3E%3C/svg%3E");
  background-size:160px 160px;-webkit-mask-image:radial-gradient(120% 90% at 70% 40%,#000 30%,transparent 80%);mask-image:radial-gradient(120% 90% at 70% 40%,#000 30%,transparent 80%)}
.cert{position:relative;margin-top:44px}
.cert-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;position:relative;z-index:1}
.cert-steps li{display:grid;justify-items:center;text-align:center;gap:18px}
.cert-trace{position:absolute;left:0;right:0;top:28px;width:100%;height:20px;overflow:visible}
.cert-wire,.cert-current{fill:none;stroke-width:3;vector-effect:non-scaling-stroke;stroke-linecap:round}
.cert-wire{stroke:rgba(255,144,70,.22)}
.cert-current{stroke:var(--orange);stroke-dasharray:1;stroke-dashoffset:1}
.cert.run .cert-current{stroke-dashoffset:0;transition:stroke-dashoffset 2.4s linear .3s}
.cert-pad{position:relative;width:76px;height:76px;border-radius:50%;display:grid;place-items:center;background:var(--navy-d);
  border:2px solid rgba(255,144,70,.35);color:rgba(255,255,255,.55);box-shadow:0 0 0 6px rgba(13,31,53,.9);
  transition:background .35s,color .35s,border-color .35s,transform .45s cubic-bezier(.34,1.56,.64,1),box-shadow .5s;transition-delay:calc(.3s + var(--i) * .6s)}
.cert-ic{width:30px;height:30px}
.cert-n{position:absolute;right:-6px;bottom:-4px;font:700 11px/1 var(--body);letter-spacing:.04em;padding:4px 6px;border-radius:999px;background:var(--navy);color:var(--orange);border:1px solid rgba(255,144,70,.45)}
.cert.run .cert-pad{background:var(--orange);color:var(--navy);border-color:var(--orange);transform:scale(1.06);box-shadow:0 0 0 6px rgba(13,31,53,.9),0 0 0 12px rgba(255,144,70,.16),0 0 34px rgba(255,144,70,.45)}
.cert-text{display:grid;gap:8px;max-width:24ch;padding:20px 18px;border-radius:12px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.1);
  transition:border-color .5s,background .5s;transition-delay:calc(.45s + var(--i) * .6s)}
.cert.run .cert-text{border-color:rgba(255,144,70,.35);background:rgba(255,255,255,.07)}
.cert-text b{color:#fff;font-size:18px;font-weight:600}
.cert-text p{margin:0;font-size:15px;line-height:1.55;color:rgba(255,255,255,.8)}
.cert-needle{transform-box:view-box;transform-origin:12px 17px;transform:rotate(-30deg)}
.cert.run .cert-needle{animation:cert-sweep 1.4s cubic-bezier(.3,1.4,.5,1) calc(.3s + 3 * .6s) both}
@keyframes cert-sweep{0%{transform:rotate(-30deg)}55%{transform:rotate(95deg)}75%{transform:rotate(70deg)}100%{transform:rotate(80deg)}}
.cert-vtrace{display:none}
.cert-seal{position:absolute;right:0;top:-196px;width:132px;height:132px;opacity:0;transform:scale(1.7) rotate(-24deg)}
.cert.run .cert-seal{animation:cert-stamp .55s cubic-bezier(.2,1.6,.4,1) 3.05s both}
@keyframes cert-stamp{0%{opacity:0;transform:scale(1.7) rotate(-24deg)}70%{opacity:1;transform:scale(.94) rotate(-8deg)}100%{opacity:1;transform:scale(1) rotate(-10deg)}}
.cert-seal svg{width:100%;height:100%;overflow:visible}
.cert-seal .s-out{fill:rgba(255,144,70,.08);stroke:var(--orange);stroke-width:3}
.cert-seal .s-in{fill:var(--orange)}
.cert-seal .s-txt{fill:var(--orange);font:700 10.4px var(--body);letter-spacing:.14em}
.cert-seal .s-chk{fill:none;stroke:var(--navy);stroke-width:7;stroke-linecap:round;stroke-linejoin:round}
.cert.still .cert-pad,.cert.still .cert-text,.cert.still .cert-current{transition:none}
.cert.still .cert-needle{animation:none;transform:rotate(80deg)}
.cert.still .cert-seal{animation:none;opacity:1;transform:rotate(-10deg)}
@media (max-width:1100px){.cert-seal{top:-170px;width:112px;height:112px}}
@media (max-width:900px){
  .cert-steps{grid-template-columns:1fr;gap:22px}
  .cert-steps li{grid-template-columns:76px 1fr;justify-items:start;text-align:left;align-items:start;gap:18px}
  .cert-text{max-width:none}
  .cert-trace{display:none}
  .cert-vtrace{display:block;position:absolute;left:37px;top:38px;bottom:60px;width:3px;background:rgba(255,144,70,.22);border-radius:2px}
  .cert-vtrace span{position:absolute;inset:0;background:var(--orange);transform:scaleY(0);transform-origin:top}
  .cert.run .cert-vtrace span{transform:scaleY(1);transition:transform 2.4s linear .3s}
  .cert.still .cert-vtrace span{transition:none}
  .cert-seal{position:relative;top:auto;right:auto;margin:26px auto 0;width:118px;height:118px}
}
@media (prefers-reduced-motion:reduce){.cert-pad,.cert-text,.cert-current,.cert-vtrace span{transition:none!important}.cert-needle,.cert-seal{animation:none!important}.cert-seal{opacity:1;transform:rotate(-10deg)}}
/* ---- lab/warehouse intro v2 (2026-10-01): situation switcher + thermometer, the two-lane race, beats, facts ---- */
.lab-intro .lab-head .h2{max-width:20ch}
.story{margin-top:28px;background:#fff;border:1px solid var(--rule);border-radius:18px;padding:clamp(20px,3vw,36px);box-shadow:0 30px 60px -44px rgba(18,42,72,.35)}
.story-tabs{display:flex;flex-wrap:wrap;gap:8px}
.story-tabs button{font:600 14px var(--body);min-height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--rule);background:var(--sky);color:var(--navy);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.story-tabs button:hover{border-color:var(--navy-l)}
.story-tabs button[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.story-tabs button:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.story-body{display:grid;grid-template-columns:72px 1fr;gap:clamp(16px,3vw,32px);align-items:center;margin-top:24px}
.thermo{display:grid;justify-items:center;gap:6px}
.thermo svg{width:40px;height:140px}
.thermo .t-glass{fill:#fff;stroke:rgba(18,42,72,.25);stroke-width:2}
.thermo .t-fill,.thermo .t-bulb{transition:fill .5s,transform .6s cubic-bezier(.34,1.3,.64,1)}
.thermo .t-fill{transform-box:fill-box;transform-origin:bottom;fill:#ff6a3d}
.thermo .t-bulb{fill:#ff6a3d}
.thermo[data-temp="cold"] .t-fill{fill:#3d8bff;transform:scaleY(.22)}
.thermo[data-temp="cold"] .t-bulb{fill:#3d8bff}
.thermo span{font:700 11px var(--body);letter-spacing:.08em;text-transform:uppercase}
.thermo .t-hot{color:#d2461c}.thermo .t-cold{color:#2a6fd6;display:none}
.thermo[data-temp="cold"] .t-hot{display:none}.thermo[data-temp="cold"] .t-cold{display:block}
.story-text{margin:0;font:600 clamp(19px,2.1vw,26px)/1.5 var(--body);color:var(--navy);letter-spacing:-.01em;text-wrap:pretty;transition:opacity .16s}
.story-text.swap{opacity:0}
.story-text b,.story-text [data-f]{font-weight:700;color:var(--navy);background:linear-gradient(transparent 60%,rgba(255,144,70,.35) 0);padding:0 2px}
.race{margin-top:26px;background:#fff;border:1px solid var(--rule);border-radius:18px;padding:clamp(20px,3vw,34px)}
.race .h3{margin-bottom:20px}
.race-lane{display:grid;grid-template-columns:200px 1fr;gap:20px;align-items:start;padding:14px 0 30px}
.race-lane + .race-lane{border-top:1px dashed var(--rule)}
.race-label{font:600 15px/1.3 var(--body);color:var(--navy);padding-top:2px}
.race-label em{display:inline-block;font-style:normal;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#7b8aa0;background:var(--sky);border-radius:999px;padding:3px 9px;margin-top:6px}
.race-track{position:relative;height:12px;border-radius:999px;background:#e6edf6;margin-top:6px}
.race-lane.fast .race-track{width:36%}
.race-bar{position:absolute;inset:0;border-radius:inherit;transform:scaleX(0);transform-origin:left}
.race-lane.slow .race-bar{background:repeating-linear-gradient(-45deg,#9fb3cc 0 7px,#c3d1e2 7px 14px)}
.race-lane.fast .race-bar{background:linear-gradient(90deg,var(--orange),#ff6a3d)}
.race.run .race-lane.slow .race-bar{transform:scaleX(1);transition:transform 3.2s cubic-bezier(.45,.05,.55,.95) .2s}
.race.run .race-lane.fast .race-bar{transform:scaleX(1);transition:transform .9s cubic-bezier(.3,.7,.3,1) .2s}
.race-stop{position:absolute;top:50%;left:calc(var(--p) * 100%);transform:translate(-50%,-50%)}
.race-stop i{display:block;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid #c3d1e2;transition:border-color .3s,background .3s,transform .3s}
.race-stop small{position:absolute;top:22px;left:50%;transform:translateX(-50%);white-space:nowrap;font:600 12px var(--body);color:var(--navy);opacity:.75}
.race-stop:first-of-type small{left:0;transform:none}.race-stop:last-of-type small{left:auto;right:0;transform:none}
.race-lane.slow .race-stop i{transition-delay:calc(.2s + var(--p) * 3.2s)}
.race-lane.fast .race-stop i{transition-delay:calc(.2s + var(--p) * .9s)}
.race.run .race-lane.slow .race-stop i{border-color:#7f95b1}
.race.run .race-lane.fast .race-stop i{border-color:var(--orange);background:var(--orange);transform:scale(1.15)}
.race.run .race-lane.fast .race-stop:last-of-type i{box-shadow:0 0 0 6px rgba(255,144,70,.2)}
.race-note{margin:6px 0 0;opacity:.7}
.race.still .race-bar,.race.still .race-stop i{transition:none}
.beats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:26px}
.beat{background:#fff;border:1px solid var(--rule);border-radius:16px;padding:24px 24px 26px;display:grid;gap:10px;align-content:start}
.beat-ic,.fact-ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:rgba(255,144,70,.14);color:var(--orange-t)}
.beat-ic .cert-ic,.fact-ic .cert-ic{width:24px;height:24px}
.beat p{margin:0;line-height:1.6}
.lab-facts li{grid-template-columns:auto 1fr;column-gap:16px;align-items:center}
.lab-facts .fact-ic{grid-row:span 2}
.lab-facts{margin-top:20px}
/* "how it usually goes" as case cards */
.case{background:#fff;border:1px solid var(--rule);border-radius:18px;overflow:hidden;display:grid;align-content:start;box-shadow:0 30px 60px -48px rgba(18,42,72,.4)}
.case-top{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:14px 22px;background:linear-gradient(120deg,var(--navy),var(--navy-l))}
.case-kicker{font:700 12px var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--orange);margin-right:auto}
.case-tag{font:600 12px var(--body);color:#fff;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);border-radius:999px;padding:4px 10px}
.case-title{margin:0;padding:22px 24px 4px;font:700 clamp(20px,1.8vw,24px)/1.25 var(--body);color:var(--navy);letter-spacing:-.01em;text-wrap:balance}
.case-beats{list-style:none;margin:0;padding:12px 24px 24px;display:grid;gap:4px;position:relative}
.case-beats li{position:relative;padding:10px 0 10px 30px}
.case-beats li::before{content:"";position:absolute;left:5px;top:16px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid #c3d1e2}
.case-beats li:not(:last-child)::after{content:"";position:absolute;left:10px;top:30px;bottom:-8px;width:2px;background:#e1e9f3}
.case-beats b{display:block;font:700 12px var(--body);letter-spacing:.1em;text-transform:uppercase;color:#7b8aa0;margin-bottom:4px}
.case-beats p{margin:0;line-height:1.6}
.case-beats .case-win{margin-top:6px;background:rgba(255,144,70,.12);border-radius:12px;padding:14px 16px 14px 42px}
.case-beats .case-win::before{left:16px;top:19px;background:var(--orange);border-color:var(--orange)}
.case-beats .case-win b{color:var(--orange-t)}
.case-beats .case-win p{font-weight:600;color:var(--navy)}
@media (max-width:900px){
  .story-body{grid-template-columns:52px 1fr;align-items:start}.thermo svg{width:30px;height:110px}.thermo span{font-size:9px}
  .race-lane{grid-template-columns:1fr;gap:8px;padding-bottom:34px}.race-lane.fast .race-track{width:62%}
  .race-stop small{font-size:11px;white-space:normal;width:88px;text-align:center}
  .race-stop:first-of-type small{text-align:left}.race-stop:last-of-type small{text-align:right}
  .beats{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){.race-bar,.race-stop i,.thermo .t-fill,.thermo .t-bulb,.story-text{transition:none!important}}
/* ---- promise strip (both pages): new parts by default ---- */
.promise-sec{padding-top:clamp(28px,4vw,48px)}
.promise{display:grid;grid-template-columns:auto 1fr auto;gap:clamp(18px,3vw,36px);align-items:center;padding:clamp(20px,3vw,30px) clamp(20px,3vw,34px);border-radius:18px;
  background:linear-gradient(120deg,#fff 0%,#fff 55%,rgba(255,144,70,.12) 100%);border:1.5px solid rgba(255,144,70,.55);box-shadow:0 26px 50px -40px rgba(18,42,72,.4)}
.promise-badge{position:relative;width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--navy);color:var(--orange)}
.promise-badge .cert-ic{width:34px;height:34px}
.promise-badge em{position:absolute;bottom:-8px;left:50%;transform:translateX(-50%);font:800 11px var(--body);font-style:normal;letter-spacing:.12em;text-transform:uppercase;background:var(--orange);color:var(--navy);padding:3px 9px;border-radius:999px}
.promise-t{margin:0;font:700 clamp(20px,2vw,26px)/1.25 var(--body);color:var(--navy);letter-spacing:-.01em;text-wrap:balance}
.promise-copy p{margin:8px 0 0;max-width:62ch;line-height:1.6}
.promise-points{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.promise-points li{display:flex;gap:10px;align-items:center;font:600 14px var(--body);color:var(--navy);white-space:nowrap}
.pi{width:20px;height:20px;flex:0 0 20px}.pi circle{fill:#fff1e6}.pi path{fill:none;stroke:#e85818;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pi-x circle{fill:#eef2f7}.pi-x path{stroke:#7b8aa0}
@media (max-width:1000px){.promise{grid-template-columns:auto 1fr}.promise-points{grid-column:1/-1;grid-template-columns:repeat(3,auto);justify-content:start;gap:10px 22px}}
@media (max-width:640px){.promise{grid-template-columns:1fr}.promise-points{grid-template-columns:1fr}.promise-points li{white-space:normal}}
/* ---- warehouse: shelf finder ---- */
.finder{margin-top:28px;background:#fff;border:1px solid var(--rule);border-radius:18px;padding:clamp(20px,3vw,36px);box-shadow:0 30px 60px -44px rgba(18,42,72,.35)}
.finder-body{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(20px,3vw,40px);align-items:center;margin-top:24px}
.rack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:10px 12px 0;border-left:6px solid #e27a2c;border-right:6px solid #e27a2c;border-radius:4px;background:linear-gradient(#f6f9fd,#eef4fb)}
.bin{position:relative;display:grid;justify-items:center;gap:8px;padding:16px 8px 14px;border-bottom:7px solid #ff8a3d;transition:background .3s}
.bin-box{width:58px;height:46px;border-radius:8px;display:grid;place-items:center;background:#dfe7f1;color:#7b8aa0;transition:background .35s,color .35s,transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s}
.bin-box .cert-ic{width:26px;height:26px}
.bin-label{font:700 11px/1.2 var(--body);letter-spacing:.08em;text-transform:uppercase;color:var(--navy);text-align:center;background:#fff;border:1px solid var(--rule);border-radius:4px;padding:4px 7px}
.bin-found{position:absolute;top:4px;left:50%;transform:translate(-50%,-6px) scale(.8);opacity:0;white-space:nowrap;font:800 10px var(--body);letter-spacing:.08em;text-transform:uppercase;color:#fff;background:#13804a;padding:4px 8px;border-radius:999px;transition:opacity .25s,transform .35s cubic-bezier(.34,1.56,.64,1)}
.bin.on{background:rgba(255,144,70,.1)}
.bin.on .bin-box{background:var(--orange);color:var(--navy);transform:translateY(-4px) scale(1.06);box-shadow:0 10px 22px -10px rgba(232,88,24,.7)}
.bin.on .bin-found{opacity:1;transform:translate(-50%,-14px) scale(1)}
/* ---- warehouse: six weeks vs day one ---- */
.cal{margin-top:26px;background:#fff;border:1px solid var(--rule);border-radius:18px;padding:clamp(20px,3vw,34px)}
.cal-grid{display:grid;grid-template-columns:minmax(0,7fr) auto minmax(0,4fr);gap:clamp(16px,3vw,36px);align-items:center;margin-top:18px}
.cal-head{font:600 15px var(--body);color:var(--navy);margin-bottom:12px}
.cal-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.cal-days span{aspect-ratio:1;border-radius:6px;background:#eef3f9;border:1px solid #e1e9f3;position:relative;overflow:hidden}
.cal-days.slow span::after{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 46%,#9fb3cc 46%,#9fb3cc 54%,transparent 54%);opacity:0;transition:opacity .12s;transition-delay:calc(.2s + var(--d) * .055s)}
.cal.run .cal-days.slow span::after{opacity:1}
.cal-days.slow span:last-child{background:#dfe7f1}
.cal-days.fast span:first-child{background:var(--orange);border-color:var(--orange);transform:scale(.6);opacity:.4;transition:transform .45s cubic-bezier(.34,1.56,.64,1) .3s,opacity .3s .3s}
.cal.run .cal-days.fast span:first-child{transform:scale(1);opacity:1;box-shadow:0 0 0 5px rgba(255,144,70,.2)}
.cal-end{margin-top:12px;font-size:14px;color:var(--navy)}
.cal-end b{font-weight:700}
.cal-vs{font:800 14px var(--body);letter-spacing:.1em;text-transform:uppercase;color:#7b8aa0;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--sky)}
.cal.still .cal-days span,.cal.still .cal-days span::after{transition:none}
/* ---- warehouse: parts route band ---- */
.wh-band{background:linear-gradient(160deg,#16273f 0%,var(--navy-d) 100%)!important}
.wh-rackbg{position:absolute;inset:0;opacity:.12;pointer-events:none;
  background-image:linear-gradient(90deg,#ff9046 0 6px,transparent 6px),linear-gradient(#ff9046 0 5px,transparent 5px);background-size:220px 100%,100% 96px;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 30%,#000 70%,transparent);mask-image:linear-gradient(180deg,transparent,#000 30%,#000 70%,transparent)}
.route{position:relative;margin-top:44px}
.route-track{position:absolute;left:10%;right:10%;top:34px;height:4px;background:repeating-linear-gradient(90deg,rgba(255,255,255,.28) 0 12px,transparent 12px 22px);border-radius:2px}
.route-fill{position:absolute;inset:0;background:var(--orange);transform:scaleX(0);transform-origin:left;border-radius:2px}
.route.run .route-fill{transform:scaleX(1);transition:transform 2.6s cubic-bezier(.45,.05,.55,.95) .3s}
.route-mover{position:absolute;inset:-22px 0 auto 0;height:44px;transform:translateX(-100%);pointer-events:none}
.route-box{position:absolute;right:-22px;top:0;width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:#c98a52;color:#3b2712;box-shadow:0 8px 18px -8px rgba(0,0,0,.6);opacity:0}
.route-box .cert-ic{width:26px;height:26px}
.route.run .route-mover{transform:translateX(0);transition:transform 2.6s cubic-bezier(.45,.05,.55,.95) .3s}
.route.run .route-box{opacity:1;transition:opacity .2s .25s}
.route-stops{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;position:relative}
.route-stops li{display:grid;justify-items:center;gap:20px}
.route-dot{position:relative;z-index:1;width:68px;height:68px;border-radius:16px;display:grid;place-items:center;background:#1d3150;border:2px solid rgba(255,255,255,.18);color:rgba(255,255,255,.6);
  transition:background .3s,color .3s,border-color .3s,transform .4s cubic-bezier(.34,1.56,.64,1);transition-delay:calc(.3s + var(--i) * .65s)}
.route-dot .cert-ic{width:28px;height:28px}
.route.run .route-dot{background:var(--orange);color:var(--navy);border-color:var(--orange);transform:rotate(-4deg)}
.ticket{position:relative;width:100%;background:#fdfbf7;color:var(--navy);border-radius:10px;padding:16px 16px 34px;display:grid;gap:6px;
  -webkit-mask-image:radial-gradient(circle 7px at 0 54px,transparent 6.5px,#000 7px),radial-gradient(circle 7px at 100% 54px,transparent 6.5px,#000 7px);-webkit-mask-composite:source-in;mask-image:radial-gradient(circle 7px at 0 54px,transparent 6.5px,#000 7px),radial-gradient(circle 7px at 100% 54px,transparent 6.5px,#000 7px);mask-composite:intersect}
.ticket-no{font:800 11px var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--orange-t);border-bottom:1.5px dashed #d9cfc0;padding-bottom:10px;margin-bottom:4px}
.ticket b{font-size:17px;font-weight:700;color:var(--navy)}
.ticket p{margin:0;font-size:14.5px;line-height:1.55;color:var(--navy)}
.ticket-bar{position:absolute;left:16px;right:16px;bottom:12px;height:12px;opacity:.5;background:repeating-linear-gradient(90deg,var(--navy) 0 2px,transparent 2px 4px,var(--navy) 4px 5px,transparent 5px 9px,var(--navy) 9px 12px,transparent 12px 14px)}
.route-tag{position:absolute;right:0;top:-170px;font:800 13px var(--body);letter-spacing:.14em;text-transform:uppercase;color:var(--orange);border:3px solid var(--orange);border-radius:8px;padding:10px 14px;opacity:0;transform:scale(1.6) rotate(-14deg)}
.route.run .route-tag{animation:cert-stamp .55s cubic-bezier(.2,1.6,.4,1) 3.1s both}
.route.still .route-fill,.route.still .route-mover,.route.still .route-dot{transition:none}.route.still .route-tag{animation:none;opacity:1;transform:rotate(-10deg)}
/* ---- warehouse: bins ---- */
.wh-bins{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px;margin-top:28px}
.wh-bin{background:#fff;border:1px solid var(--rule);border-radius:14px;overflow:hidden;display:grid;grid-template-rows:auto auto 1fr}
.wh-bin-pic{aspect-ratio:4/5;border-radius:0}
.wh-bin-empty{display:grid;place-items:center;background:repeating-linear-gradient(135deg,#eef4fb 0 14px,#e6eef8 14px 28px);color:var(--navy)}
.wh-bin-empty .cert-ic{width:64px;height:64px;opacity:.55}
.wh-bin-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:#ffe2c8;border-top:3px solid var(--orange)}
.wh-bin-strip span{font:800 13px var(--body);letter-spacing:.06em;text-transform:uppercase;color:var(--navy)}
.wh-bin-strip i{width:54px;height:18px;opacity:.7;background:repeating-linear-gradient(90deg,var(--navy) 0 2px,transparent 2px 4px,var(--navy) 4px 5px,transparent 5px 8px)}
.wh-bin p{margin:0;padding:14px 16px 18px;line-height:1.55}
/* ---- warehouse: backstory explainer ---- */
.wh-flow{list-style:none;margin:0;padding:24px;display:grid;gap:4px;background:#fff;border:1px solid var(--rule);border-radius:18px;position:relative}
.wh-flow li{display:grid;grid-template-columns:40px 1fr;gap:16px;padding:12px 0;position:relative}
.wh-flow li:not(:last-child)::after{content:"";position:absolute;left:19px;top:52px;bottom:-6px;width:2px;background:#e1e9f3}
.wh-flow-n{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font:800 15px var(--body);background:var(--navy);color:#fff}
.wh-flow li:last-child .wh-flow-n{background:var(--orange);color:var(--navy)}
.wh-flow b{display:block;font-size:17px;color:var(--navy);margin:8px 0 4px}
.wh-flow p{margin:0;line-height:1.55}
.wh-isnt{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:28px}
.wh-is,.wh-not{border-radius:18px;padding:26px 28px;border:1px solid var(--rule)}
.wh-is{background:#fff}.wh-not{background:var(--sky)}
.wh-is ul,.wh-not ul{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:12px}
.wh-is li,.wh-not li{display:flex;gap:12px;align-items:flex-start;line-height:1.5}
.wh-is .pi,.wh-not .pi{margin-top:2px}
@media (max-width:1100px){.wh-bins{grid-template-columns:repeat(2,minmax(0,1fr))}.route-tag{top:-150px}}
@media (max-width:900px){
  .finder-body{grid-template-columns:1fr}.cal-grid{grid-template-columns:1fr}.cal-vs{justify-self:start}
  .route-track,.route-mover{display:none}.route-stops{grid-template-columns:1fr;gap:16px}.route-stops li{grid-template-columns:68px 1fr;justify-items:start;align-items:start;gap:16px}
  .route-tag{position:relative;top:auto;right:auto;display:inline-block;margin-top:22px}
  .wh-isnt{grid-template-columns:1fr}
}
@media (max-width:560px){.wh-bins{grid-template-columns:1fr}.wh-bin-pic{aspect-ratio:16/10}.rack{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (prefers-reduced-motion:reduce){.bin-box,.bin-found,.route-fill,.route-mover,.route-dot,.cal-days span,.cal-days span::after{transition:none!important}.route-tag{animation:none!important;opacity:1;transform:rotate(-10deg)}}
/* ---- 10-01 refine: one family of cards, smoother diagrams ---- */
.lab-flow .story,.lab-flow .race,.lab-flow .finder,.lab-flow .cal,.lab-flow .beat,.lab-flow .case,.lab-flow .lab-card,.lab-flow .wh-bin,.lab-flow .wh-flow,.lab-flow .wh-is,.lab-flow .wh-not,.lab-flow .lab-cross{border-radius:18px;border-color:#dbe6f3;box-shadow:0 24px 50px -42px rgba(18,42,72,.38)}
.lab-flow .story + .race,.lab-flow .finder + .cal{margin-top:18px}
.lab-flow .beats{margin-top:18px}
/* race: one eased motion; dots and labels light in step with the fill */
.race-bar{will-change:transform}
.race.run .race-lane.slow .race-bar{transition:transform 3.6s cubic-bezier(.65,0,.35,1) .25s}
.race.run .race-lane.fast .race-bar{transition:transform 1.2s cubic-bezier(.65,0,.35,1) .25s}
.race-stop i{transition:border-color .45s ease,background .45s ease,transform .5s cubic-bezier(.34,1.4,.64,1),box-shadow .5s ease}
.race-stop small{transition:opacity .45s ease;opacity:.45}
.race-lane.slow .race-stop i,.race-lane.slow .race-stop small{transition-delay:calc(.25s + var(--p) * 3.4s)}
.race-lane.fast .race-stop i,.race-lane.fast .race-stop small{transition-delay:calc(.25s + var(--p) * 1.1s)}
.race.run .race-stop small{opacity:.85}
.race.run .race-lane.slow .race-stop:last-of-type i{border-color:var(--navy);background:var(--navy)}
/* calendar: compact, eased, the arrival marked */
.cal-grid{grid-template-columns:auto auto minmax(0,1fr);justify-content:start}
.cal-days.slow{width:min(100%,330px);gap:5px}
.cal-days.fast{width:min(100%,330px);gap:5px}
.cal-days span{border-radius:5px}
.cal-days.slow span::after{transition:opacity .35s ease;transition-delay:calc(.25s + var(--d) * .07s)}
.cal-days.slow span:last-child{background:#fff;border:2px solid var(--navy)}
.cal-days.fast span:first-child{transition:transform .6s cubic-bezier(.34,1.4,.64,1) .35s,opacity .4s ease .35s,box-shadow .6s ease .35s}
/* route + circuit: same easing family */
.route.run .route-fill,.route.run .route-mover{transition-duration:3s;transition-timing-function:cubic-bezier(.65,0,.35,1)}
.route-dot{transition-duration:.45s;transition-delay:calc(.35s + var(--i) * .7s)}
.cert.run .cert-current{transition:stroke-dashoffset 2.6s cubic-bezier(.65,0,.35,1) .3s}
/* bins without a photo: drawn, not empty */
.wh-bin-empty{display:flex;gap:14px;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--navy),#1d3a62)!important;color:var(--orange)}
.wh-bin-empty .cert-ic{width:44px;height:44px;opacity:1}
@media (max-width:900px){.cal-grid{grid-template-columns:1fr}}
/* "How it usually goes" simplified (Osher 10-02: "make it like the home page, kinda basic"): a plain site card */
.lab-flow .case{background:#fff;border:1px solid #dbe6f3;border-radius:14px;box-shadow:none;padding:26px 28px;display:grid;gap:12px;align-content:start;overflow:visible}
.lab-flow .case .kicker{margin:0;color:var(--orange-t);opacity:1}
.lab-flow .case p{margin:0;line-height:1.6}
.lab-flow .case .case-win{padding-top:12px;border-top:1px solid #e6edf6;font-weight:600;color:var(--navy)}
/* "Two ways this call can go" simplified (Osher 10-02: "way too bulky"): two thin bars, label left, time right */
.lab-flow .race{padding:22px 26px}
.lab-flow .race .h3{font-size:17px;margin-bottom:10px}
.lab-flow .race-lane{grid-template-columns:180px 1fr 130px;align-items:center;gap:16px;padding:8px 0}
.lab-flow .race-lane + .race-lane{border-top:0}
.lab-flow .race-label{display:contents;font-size:14px}
.lab-flow .race-label em{grid-column:3;order:3;justify-self:end;margin:0;background:none;padding:0;font-size:12px;color:#7b8aa0}
.lab-flow .race-lane.fast .race-label em{color:var(--orange-t)}
.lab-flow .race-track{height:8px;margin:0;grid-column:2}
.lab-flow .race-stop{display:none}
.lab-flow .race-note{font-size:12px;margin-top:6px}
@media (max-width:900px){.lab-flow .race-lane{grid-template-columns:1fr auto;gap:6px 12px}.lab-flow .race-track{grid-column:1 / -1;order:4}.lab-flow .race-lane.fast .race-track{width:36%}}
.lab-flow .race-lane.fast .race-track{background:transparent}
/* ---- phones (2026-10-03 phone audit, measured at 360/390) ---- */
/* header: the brand text wrapped to 4 lines at 360px (header 115px) and squeezed the call/menu buttons to 29px */
header > div > a:first-child, header .btn, header .burger{flex-shrink:0}
header .btn.b-o, header .burger{min-width:44px}
@media (max-width:420px){
  header > div{gap:10px!important}
  header > div > a:first-child > span > span:first-child{font-size:17px!important;white-space:nowrap}
  header > div > a:first-child > span > span:last-child{font-size:10px!important;letter-spacing:.06em!important;white-space:nowrap}
  /* 2026-10-04 (F5): the tagline wraps to two short lines instead of ending in "…" (the licence number was the part cut off) */
  header > div > a:first-child > span > span:last-child{max-width:150px;white-space:normal!important;line-height:1.25}
}
@media (max-width:374px){ header > div > a:first-child > span > span:last-child{display:none} }   /* license stays in the drawer, hero card and footer */
/* bottom call bar: "Schedule" ran 16px off the right edge at 360px */
.mobile-bar{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)!important}
.mobile-bar .btn{min-width:0;padding:0 10px!important;font-size:15px!important;white-space:nowrap}
/* hero card: 36px side padding left the H1 a word per line on small phones */
@media (max-width:420px){
  .hero-card{padding:24px 20px!important}
  .crumbs{flex-wrap:wrap;row-gap:4px}
  .crumbs li{white-space:nowrap}
}
/* tap targets under 40px tall */
@media (max-width:900px){
  a.tl{min-height:44px}
  .city-near a{display:inline-flex;align-items:center;min-height:40px}
  figcaption a{display:inline-block;padding:11px 0}
  .cm-note{font-size:13px!important}
  .thermo span{font-size:10px!important}
}
/* phone review 2026-10-03 (verified findings) */
@media (max-width:900px){ .path7a svg{display:none!important} }          /* the design hides the wave on phones; an inline display:block won, circles squashed */
@media (max-width:560px){
  .why-grid{grid-template-columns:1fr!important;gap:16px!important}     /* "Licensed C-" / "20 &" broke across lines in two narrow columns */
  .cm-find{flex-wrap:wrap}
  .cm-find-in{width:100%;min-height:44px;font-size:16px}                /* placeholder cut to "Your city or Z"; 16px stops iOS zoom-on-focus */
  .cm-find-out{max-width:none}
}
/* drawer group headings had no space above their divider */
.drawer .nav-h{margin-top:18px!important}
.drawer .btn + .nav-h, .drawer > a.btn + p.nav-h{margin-top:12px!important}
/* city pages: tight spacing under the data card and under section H2s */
.city-facts{margin-bottom:22px}
@media (max-width:640px){ [class*="city"] h2.h2 + p{margin-top:12px} }
/* diagrams wider than a phone scroll sideways: say so */
@media (max-width:700px){
  .svc-diagram-stage{position:relative;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
  .svc-diagram-stage::after{content:"Swipe to see all steps \2192";position:sticky;left:0;display:block;margin-top:8px;font:600 12px var(--body);color:var(--orange-t)}
}
/* careers location tag wrapped to 3 lines inside a pill */
@media (max-width:640px){ .job-tag-l{border-radius:10px!important;white-space:normal;line-height:1.35;padding:6px 10px!important} }
/* blog older/newer links: stack on phones instead of two squeezed columns */
@media (max-width:640px){ .post-nav{display:grid!important;grid-template-columns:1fr!important;gap:12px} .post-nav a{text-align:left!important;max-width:none!important} }
/* careers application: inputs matched the lead form (white, not grey) — phone review 2026-10-03 */
#apply-form .input, #apply-form select, #apply-form textarea{background:#fff;border:1px solid #c9d6e6}
#apply-form select{-webkit-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,#122a48 50%),linear-gradient(135deg,#122a48 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:34px}
/* coverage map on phones (phone review 2026-10-03): the map was squeezed into a fixed-ratio box — tiny map, two rows
   of the list and an empty band. On a phone the widget flows to its content: a taller map, a list of ~6 rows. */
@media (max-width:560px){
  *:has(> .cm){aspect-ratio:auto!important;height:auto!important;min-height:0!important;padding-bottom:0!important}
  .cm{position:relative!important;inset:auto!important}
  .cm-body{grid-template-rows:260px auto!important}
  .cm-v2 .cm-side, .cm-side{max-height:none!important}
  .cm-list{max-height:210px;overflow:auto;padding:6px}
  .cm-row{min-height:40px;align-items:center}
}
/* ---- phones "zoomed out" (Osher 2026-10-03: "everything kinda zoomed out a little so it's not so crowded").
   Measured before: body 18px, h1 34-36px, h2 26px, sections padded twice (48+48px), home hero 1131px tall. ---- */
@media (max-width:640px){
  body{font-size:16px}
  main p, main li, .lab-copy p{font-size:16px!important;line-height:1.6!important}
  .lab-copy p:first-child, .story-text{font-size:18px!important}
  h1, .h1{font-size:clamp(26px,7.4vw,30px)!important;line-height:1.12!important}
  .h2, h2.h2{font-size:clamp(21px,6vw,23px)!important;line-height:1.18!important}
  .h3, h3.h3, .case-title, .promise-t{font-size:18px!important}
  .kicker{font-size:11.5px!important}
  .btn{min-height:46px;font-size:15px}
  .sec{padding-top:28px!important;padding-bottom:28px!important}
  main > section:not(.hero-wrap){padding-top:0!important;padding-bottom:0!important}
  main > section > .sec, main > section.sec{padding-top:30px!important;padding-bottom:30px!important}
  .hero-pic{height:240px!important}
  .hero-card{margin-top:-44px!important}
  .hero-card p{font-size:15.5px!important}
  .small{font-size:13.5px}
  .card{padding:18px!important}
}

/* 2026-10-04 (F4): a phone number never breaks across two lines */
a[href^="tel:"]{white-space:nowrap}

/* 2026-10-04 (F8): home hero logo strip (replaces the brand-name word row) */
.hero-brands{margin-top:24px;max-width:100%;min-width:0;overflow:visible!important;-webkit-mask-image:none!important;mask-image:none!important}
/* 4 × 2 grid: all eight logos visible at every width, no sideways scroll inside the hero card */
.hero-brands .brand-tiles{display:grid!important;grid-template-columns:repeat(4,max-content);align-items:center;justify-items:start;gap:10px 22px!important;width:auto!important}
.hero-brands .brand-tiles::after{display:none}
.hero-brands .brand-logo img{max-width:100%;height:auto;max-height:18px}   /* Osher 10-04: smaller */
.hero-brand-note{margin-top:4px!important;font-size:11px;opacity:.7;max-width:60ch}

/* 2026-10-04 (F5): kickers 12px on phones (11.5px read as fine print) */
@media (max-width:640px){ .kicker{font-size:12px!important} }

/* 2026-10-04 (Batch E): the mini split living-room photo keeps its wall head in frame in every crop */
img[src*="mini-split-living-room"]{object-position:50% 8%}
