/*!
 * BSP brand globals - minimal cascade reset (v3.2-strip)
 * Strip op: STRIP_20260505T031050Z_INAUGURAL_FRAMEWORK_STRESS_TEST
 * Cite: BSP_Bricks_Codebase_Documentation.html section 51.10 + 51.10.1
 * R52.1-5 ALL  R53 PASS  R9 bulletproof default
 */

:root {
  --bsp-navy: #1D1760;
  --bsp-teal: #30C5FF;
  --bsp-yellow: #FFEA00;
  --bsp-light: #F5F5F5;
  --bsp-card-bg: #F8FAFC;
}

body,
.brx-body {
  font-family: "Inter", system-ui, -apple-system, BlinkMacSystemFont, sans-serif;
  color: var(--bsp-navy);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Inter", system-ui, sans-serif;
  color: var(--bsp-navy);
}

a { color: inherit; }
a:focus-visible {
  outline: 2px solid var(--bsp-teal);
  outline-offset: 2px;
}


/* ============================================================
 * GROUP 4A v15 — FAQ section (§85.Q-audited, May 8 2026)
 * ============================================================
 * Every rule cites §85.Q best practice rule(s) it complies with.
 *   Q1 = CDP cascade dump before override
 *   Q2 = Property family override together
 *   Q3 = Multi-viewport tested (1280 + 1920)
 *   Q4 = 2-ID specificity floor (a >= 2 to beat Bricks heredoc a=1,b=3)
 *   Q5 = No naive max-width:none (use explicit value matching peers)
 *   Q6 = Per-fix Visual ACK gate per §85.J
 * ============================================================ */

/* §85.M.4 v15 — op116f section: white bg + map-edge centering [Q1+Q2+Q3+Q4+Q5].
   Q1: CDP confirmed Bricks emits width:min(1100,100%) on most sections, so override BOTH.
   Q2: width family paired (width + max-width + margin auto).
   Q3: verified 1280 (left=0 width=1280) + 1920 (left=320 width=1280).
   Q4: 2-ID via #brx-content prefix (a=2 beats heredoc a=1,b=3 on a-column).
   Q5: explicit max-width:1280 + width:100% — matches peer sections (Services, Reviews). */
#brx-content #brxe-op116f, body #brxe-op116f {
  background: #FFFFFF !important;
  background-color: #FFFFFF !important;
  color: var(--bsp-navy);
  max-width: 1280px !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* §85.M.4 — H2 op117f text properties [Q4]. No width-family touching, single property override. */
#brxe-op116f > #brxe-op117f {
  color: var(--bsp-navy) !important;
  text-align: left !important;
}

/* §85.M — Stray figma underline image hidden [Q4]. display:none alone, no family. */
#brxe-op116f > #brxe-op118f {
  display: none !important;
}

/* §85.M.4 — op119f inner-block: stretch within now-constrained op116f [Q1+Q2+Q4+Q5].
   Q1: CDP confirmed op119f had Bricks default width:min(1100,100%) which constrains.
   Q2: width family paired (max-width + width). align-items + align-self for flex-family.
   Q4: 2-ID via parent op116f prefix (a=2).
   Q5: max-width:none here is JUSTIFIED — op119f is INSIDE op116f which is max-width-constrained.
       The "no naive max-width:none" rule applies to root section elements; inner blocks may stretch
       to fill the constrained parent. Document this exception. */
#brxe-op116f #brxe-op119f, body #brxe-op119f {
  align-self: stretch !important;
  align-items: flex-start !important;
  max-width: none !important;
  width: 100% !important;
}

/* §85.N v15 — Q wrappers flat list visual [Q1+Q2+Q4+Q5].
   Q1: CDP-verified no heredoc visual rules on op120f-op135f.
   Q2: visual properties grouped (background, border, border-radius, margin, width, max-width).
   Q4: 2-ID via #brxe-op116f parent prefix.
   Q5: max-width:none + width:100% pair JUSTIFIED — Q wrappers fill op119f content area
       (which is constrained by op116f at max-width:1280). */
#brxe-op116f #brxe-op120f, #brxe-op116f #brxe-op123f, #brxe-op116f #brxe-op126f,
#brxe-op116f #brxe-op129f, #brxe-op116f #brxe-op132f, #brxe-op116f #brxe-op135f {
  background: transparent !important;
  background-color: transparent !important;
  border: none !important;
  border-bottom: 1px solid #E5E7EB !important;
  border-radius: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  max-width: none !important;
  position: relative;
  transition: background-color 0.15s ease;
}

/* §85.N — Q wrapper padding [Q2+Q4]. Padding family complete (top+bottom+left+right). */
#brxe-op116f #brxe-op120f, #brxe-op116f #brxe-op123f, #brxe-op116f #brxe-op126f,
#brxe-op116f #brxe-op129f, #brxe-op116f #brxe-op132f, #brxe-op116f #brxe-op135f {
  padding-top: 16px !important;
  padding-bottom: 16px !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* §85.N — Q hover affordance [Q4]. Pseudo-class :hover. Single property, single rule. */
#brxe-op116f #brxe-op120f:hover, #brxe-op116f #brxe-op123f:hover,
#brxe-op116f #brxe-op126f:hover, #brxe-op116f #brxe-op129f:hover,
#brxe-op116f #brxe-op132f:hover, #brxe-op116f #brxe-op135f:hover {
  background-color: rgba(48, 197, 255, 0.04) !important;
}

/* §85.N — Last Q no bottom-border [Q4]. 2-ID parent prefix. */
#brxe-op116f #brxe-op135f {
  border-bottom: none !important;
}

/* §85.M.1 v15 — Trap A FIX H3 (Q text) flex-stretch [Q1+Q2+Q4].
   Q1: CDP verified Trap A — text-align:left works on text-within-box, not box-within-parent.
   Q2: flex family (align-self) + text-align (independent) — pair flex-control properties.
   Q4: 3-ID spec (a=3) crushes heredoc rivals. */
#brxe-op116f #brxe-op120f > h3, #brxe-op116f #brxe-op123f > h3, #brxe-op116f #brxe-op126f > h3,
#brxe-op116f #brxe-op129f > h3, #brxe-op116f #brxe-op132f > h3, #brxe-op116f #brxe-op135f > h3 {
  align-self: stretch !important;
  color: var(--bsp-navy) !important;
  text-align: left !important;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.4;
  margin: 0;
  padding-right: 36px;
  cursor: pointer;
  position: relative;
}

/* §85.N v15 — Chevron ::after closed-state [Q2+Q4].
   Q2: position family (position + right + top) + size family (width + height) + transform paired.
   Q4: 2-ID via op116f prefix (a=2 + ::after pseudo-element). */
#brxe-op116f #brxe-op120f > h3::after, #brxe-op116f #brxe-op123f > h3::after,
#brxe-op116f #brxe-op126f > h3::after, #brxe-op116f #brxe-op129f > h3::after,
#brxe-op116f #brxe-op132f > h3::after, #brxe-op116f #brxe-op135f > h3::after {
  content: "";
  position: absolute;
  right: 4px;
  top: 50%;
  width: 10px;
  height: 10px;
  border-right: 2px solid var(--bsp-teal);
  border-bottom: 2px solid var(--bsp-teal);
  transform: translateY(-75%) rotate(45deg);
  transition: transform 0.2s ease;
  pointer-events: none;
}

/* §85.N v15 — Chevron ::after open-state on aria-expanded="true" [Q4]. */
#brxe-op116f #brxe-op120f > h3[aria-expanded="true"]::after,
#brxe-op116f #brxe-op123f > h3[aria-expanded="true"]::after,
#brxe-op116f #brxe-op126f > h3[aria-expanded="true"]::after,
#brxe-op116f #brxe-op129f > h3[aria-expanded="true"]::after,
#brxe-op116f #brxe-op132f > h3[aria-expanded="true"]::after,
#brxe-op116f #brxe-op135f > h3[aria-expanded="true"]::after {
  transform: translateY(-25%) rotate(-135deg);
}

/* §85.M.1 v15 — Trap A FIX P (A text) flex-stretch [Q1+Q2+Q4]. */
#brxe-op116f #brxe-op120f > p, #brxe-op116f #brxe-op123f > p, #brxe-op116f #brxe-op126f > p,
#brxe-op116f #brxe-op129f > p, #brxe-op116f #brxe-op132f > p, #brxe-op116f #brxe-op135f > p {
  align-self: stretch !important;
  color: var(--bsp-navy) !important;
  text-align: left !important;
  font-size: 15px;
  line-height: 1.6;
  margin: 12px 0 0;
  padding-top: 12px;
  border-top: 1px solid #F3F4F6;
}

/* Mobile breakpoint @max-width:767 [Q3+Q4]. Padding family + font-size. */
@media (max-width: 767px) {
  #brxe-op116f #brxe-op120f, #brxe-op116f #brxe-op123f, #brxe-op116f #brxe-op126f,
  #brxe-op116f #brxe-op129f, #brxe-op116f #brxe-op132f, #brxe-op116f #brxe-op135f {
    padding-top: 14px !important;
    padding-bottom: 14px !important;
  }
  #brxe-op116f #brxe-op120f > h3, #brxe-op116f #brxe-op123f > h3, #brxe-op116f #brxe-op126f > h3,
  #brxe-op116f #brxe-op129f > h3, #brxe-op116f #brxe-op132f > h3, #brxe-op116f #brxe-op135f > h3 {
    font-size: 16px;
    padding-right: 28px;
  }
}
/* === End Group 4a === */


/* ============================================================
 * GROUP 5 v15 — Page-wide alignment + Inter + chip grid (§85.Q-audited)
 * ============================================================ */

/* §85.O.A v15 — op113l Where We Work section [Q1+Q2+Q3+Q4+Q5].
   Q1: CDP confirmed Bricks default width:min(1100,100%) + heredoc max-width:1100 — both required override.
   Q2: width family paired (max-width + width + margin auto). align-items for flex-children control.
   Q3: verified 1280 (left=0) + 1920 (left=320 with 320px gutters).
   Q4: 2-ID via #brx-content prefix (a=2). Body fallback included for redundancy.
   Q5: explicit max-width:1280 matches peer sections (Services). NOT max-width:none. */
#brx-content #brxe-op113l, body #brxe-op113l {
  max-width: 1280px !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  align-items: flex-start !important;
}

/* §85.O.A v15 — op113l inner blocks fill parent [Q2+Q4+Q5].
   Q2: flex family (align-self) + width family + margin/padding family.
   Q4: 2-ID via #brx-content + class selector (a=2,b=1).
   Q5: max-width:none JUSTIFIED — inner blocks fill parent op113l (which is now max-width-constrained). */
#brx-content #brxe-op113l > .brxe-block,
#brx-content #brxe-op113l > .brxe-container,
#brx-content #brxe-op113l > div {
  width: 100% !important;
  max-width: none !important;
  align-self: stretch !important;
  align-items: flex-start !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* §85.O.B v15 — H2 op114l + P op115l in WWK [Q2+Q4].
   Q2: flex family (align-self) + width family + margin/padding family + text-align.
   Q4: 3-ID via html body + 2-ID + .class chain (a=2,b=1). */
html body #brxe-op113l #brxe-op114l,
html body #brxe-op113l #brxe-op115l,
html body #brxe-op113l #brxe-op115l.brxe-text-basic {
  align-self: stretch !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
  width: 100% !important;
  text-align: left !important;
}

/* §85.O.C v15 — P op033s clay-soil [Q2+Q4+Q5].
   Q4: 2-ID via parent section prefix (#brxe-op031s or #brxe-op034s).
   Q5: max-width:none JUSTIFIED — fills op034s which is centered max-width:1240 already. */
#brxe-op031s #brxe-op033s,
#brxe-op034s #brxe-op033s {
  margin-left: 0 !important;
  margin-right: 0 !important;
  max-width: none !important;
  width: 100% !important;
  align-self: stretch !important;
  text-align: left !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* §85.O.E v15 — P op101n Neighborhoods description [Q2+Q4+Q5].
   Q4: 2-ID via parent op099n prefix. */
html body #brxe-op099n #brxe-op101n,
html body #brxe-op099n #brxe-op101n.brxe-text-basic {
  align-self: stretch !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
  width: 100% !important;
  text-align: left !important;
}

/* §85.O.F v15 — Chip grid uniform 4-col 2-row [Q1+Q2+Q3+Q4+Q5].
   Q1: CDP confirmed heredoc had html body.page-id-XXX.page-id-XXX.page-id-XXX #op099n #op102n
       at spec (1,3,1) setting grid-template-columns:repeat(5,max-content). Beat with 3-ID a=3.
   Q2: grid-family complete (display + grid-template-columns + gap). Width-family paired.
   Q3: tested 1280 (4-col) + 1920 (4-col) + tablet (3-col) + mobile (2-col).
   Q4: 3-ID #brx-content #brxe-op099n #brxe-op102n (a=3).
   Q5: max-width:none JUSTIFIED — chip grid fills op099n content area. */
#brx-content #brxe-op099n #brxe-op102n {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 12px 16px !important;
  width: 100% !important;
  max-width: none !important;
  align-self: stretch !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
  justify-content: start !important;
}

/* Tablet 3-col [Q3+Q4]. */
@media (max-width: 1023px) and (min-width: 600px) {
  #brx-content #brxe-op099n #brxe-op102n {
    grid-template-columns: repeat(3, 1fr) !important;
  }
}

/* Mobile 2-col [Q3+Q4]. */
@media (max-width: 599px) {
  #brx-content #brxe-op099n #brxe-op102n {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}

/* §85.O.D v15 — Inter font NUCLEAR override [Q2+Q4].
   Q2: font-family alone (no family pairing needed for typography).
   Q4: html + body.bricks-is-frontend + universal :not(...) chain = (a=0,b=2,c=2) + 4 :not adds b+1 each.
       Total spec sufficient to beat Bricks element-class rules. */
html body.bricks-is-frontend *:not(i):not(svg):not([class*="icon"]):not([class*="ICON"]) {
  font-family: 'Inter', sans-serif !important;
}

/* §85.O.D — Surgical Inter override on Roboto chip area [Q1+Q4].
   Q1: CDP showed nuclear rule alone wasn't winning chip cascade (likely media-query gated rival).
   Q4: 2-ID and 3-ID combinations to ensure chip parent + chip text-basic + chip ID all hit. */
html body #brxe-op099n,
html body #brxe-op099n *,
html body #brxe-op102n,
html body #brxe-op102n *,
html body #brxe-op099n #brxe-op102n p,
html body #brxe-op099n #brxe-op102n p.brxe-text-basic,
html body #brxe-op099n p,
html body #brxe-op099n p.brxe-text-basic,
html body #brxe-op102n p,
html body #brxe-op102n p.brxe-text-basic {
  font-family: 'Inter', sans-serif !important;
}

/* §85.O.D — Direct ID-anchored Inter override [Q4]. */
html body p#brxe-op103n,
html body a#brxe-op141n,
html body #brxe-op141n {
  font-family: 'Inter', sans-serif !important;
}
/* === End Group 5 === */


/* ============================================================
 * GROUP 7 — Hero CTA row left-align with map (v16 May 8 2026)
 * ============================================================
 * Robert May 8: phone, Book Now, Chat with Daniel must left-align
 * with map (L=21@1280, L=341@1920).
 * Cascade truth (§85.P/Q1): op007h display:flex justify-content:center;
 * parent op001h full-bleed (no max-width).
 * Fix: constrain op007h max-width:1240 + width:100% + margin:auto
 *      (mirrors body content_area inside section's 20px padding) +
 *      justify-content:flex-start.
 * Audited per §85.Q:
 *   Q1 — CDP cascade dump on op007h before composition
 *   Q2 — max-width + width + margin family paired (Trap C avoidance)
 *   Q3 — multi-viewport: 1280 + 1920 verified
 *   Q4 — 2-ID spec #brx-content #brxe-op007h (a=2)
 *   Q5 — no naive max-width:none, real constraint instead
 *   Q6 — Pattern 3 screenshots required for visual ACK
 * ============================================================ */

/* §85.R — op007h hero CTA row [Q1+Q2+Q3+Q4+Q5] */
#brx-content #brxe-op007h {
  max-width: 1240px !important;
  width: 100% !important;
  margin-left: auto !important;
  margin-right: auto !important;
  justify-content: flex-start !important;
}
/* === End Group 7 === */


/* ============================================================
 * GROUP 8 - Cycle 3 velocity batch (v19 May 8 2026, max-width Trap C fix)
 * ============================================================
 * Cite chain (Section 85.T):
 *   FIGMA: fileKey Y0nbP0HJO9lkOrALRm5x2x - 4031:1465 (chips), 4031:1372 (icons)
 *   CANON: Section 63 bricks_global_variables (--bsp-stroke #BEE6F5, --bsp-teal #30C5FF)
 *          Section 85.P Trap C - width / max-width independence
 *   OVERRIDE: Robert Inter override of Audrey Roboto
 *   OVERRIDE: Robert v13 4-col grid validated (Audrey 5-col)
 * v19 delta: added max-width to icon rules (was width-only, max-width:80 was winning)
 * ============================================================ */

/* Section 85.S.1 - Hide stray HIW underline op085h (KEEP) */
body #brxe-op085h,
#brx-content #brxe-op085h {
  display: none !important;
}
body img[src*="blue-underline"] {
  display: none !important;
}

/* Section 85.S.2 - Neighborhood chip per Audrey 4031:1465 (KEEP from v18) */
#brx-content #brxe-op102n p,
#brx-content #brxe-op102n p.brxe-text-basic {
  background: rgba(48, 197, 255, 0.12) !important;
  border: 1px solid #30C5FF !important;
  border-radius: 8px !important;
  height: 32px !important;
  min-height: 32px !important;
  padding: 4px 12px !important;
  font-family: "Inter", sans-serif !important;
  font-weight: 500 !important;
  font-size: 14px !important;
  line-height: 20px !important;
  letter-spacing: 0.1px !important;
  color: #1D1760 !important;
  white-space: nowrap !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background 0.2s ease !important;
  box-sizing: border-box !important;
}

#brx-content #brxe-op102n p:hover,
#brx-content #brxe-op102n p.brxe-text-basic:hover {
  background: rgba(48, 197, 255, 0.20) !important;
}

/* Section 85.S.3 v19 - Service icons 120x120 + max-width Trap C fix */
/* v17/v18 set only width - Bricks default max-width:80 won. v19 sets BOTH. */
#brx-content #brxe-op031s img,
#brx-content #brxe-op034s img {
  width: 120px !important;
  height: 120px !important;
  max-width: 120px !important;
  max-height: 120px !important;
  object-fit: contain !important;
}

@media (max-width: 1023px) and (min-width: 600px) {
  #brx-content #brxe-op031s img,
  #brx-content #brxe-op034s img {
    width: 100px !important;
    height: 100px !important;
    max-width: 100px !important;
    max-height: 100px !important;
  }
}

@media (max-width: 599px) {
  #brx-content #brxe-op031s img,
  #brx-content #brxe-op034s img {
    width: 80px !important;
    height: 80px !important;
    max-width: 80px !important;
    max-height: 80px !important;
  }
}
/* === End Group 8 === */


/* ============================================================
 * GROUP 9 - Hero wavy shape ALL location pages (v20b May 8 2026)
 * ============================================================
 * v20a was Olathe-only canary at body.page-id-294.
 * v20b scales to body.bsp-location-page (all 16 location pages).
 * Cite: Section 85.W (Audrey 4032:1619 override per Robert directive).
 *       Section 85.J Visual ACK Required.
 *       Section 85.T cite chain mandate.
 *       Section 85.Y pid map verified.
 * Image van-middle-image.png at op002h has baked transparent wavy edges.
 * Removing CSS layers that hid it: object-fit:cover + border-radius:16px + v13 GROUP 6 mask.
 * ============================================================ */

/* Section 85.X.1 v20b - Hero img object-fit + border-radius reset across all location pages */
body.bsp-location-page #brx-content #brxe-op002h,
body.bsp-location-page #brx-content img#brxe-op002h {
  object-fit: contain !important;
  object-position: center !important;
  border-radius: 0 !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: none !important;
  position: relative !important;
  inset: auto !important;
}

body.bsp-location-page #brx-content #brxe-op001h {
  background: transparent !important;
}
/* === End Group 9 === */


/* ============================================================
 * GROUP 11 - Service page hero wavy shape (v22 May 8 2026)
 * ============================================================
 * Cite chain (Section 85.T):
 *   ROBERT directive 2026-05-08 - service pages must show full wavy hero photo,
 *     same treatment as location pages (Section 85.W)
 *   ELEMENT - all service pages use #brxe-033974 as hero img (vs op002h on location)
 *   CANON - Section 85.AA (killall disable), Section 85.BB (service hero parity)
 * Service pages (10): pid 8/12/286/287/288/289/291/292/468/469
 * ============================================================ */

#brx-content #brxe-033974,
#brx-content img#brxe-033974 {
  object-fit: contain !important;
  object-position: center !important;
  border-radius: 0 !important;
  width: 100% !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: none !important;
}
/* === End Group 11 === */


/* ============================================================
 * GROUP 10 - Trust chips horizontal-above-map (v24 May 8 2026)
 * ============================================================
 * Cite chain (Section 85.T):
 *   ROBERT directive 2026-05-08 override of Audrey 4033:298
 *   "chips horizontal over the map, map back to normal"
 *   CANON: Section 85.AA (killall disabled), Section 85.W (override pattern)
 * Layout: 1 column flex, chips above map. Chips: horizontal row, equal width.
 * ============================================================ */

/* Section 85.Z.1 v24 - op020m single column, chips above map */
html body.bsp-location-page #brxe-op019m #brxe-op020m {
  display: flex !important;
  flex-direction: column !important;
  grid-template-columns: none !important;
  align-items: stretch !important;
  gap: 16px !important;
  width: 100% !important;
}

/* Reorder: op024m (chips) first via order:0, op021m (map) second via order:1 */
html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op024m {
  order: 0 !important;
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  width: 100% !important;
  height: auto !important;
  overflow: visible !important;
}

html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op021m {
  order: 1 !important;
  width: 100% !important;
}

/* Section 85.Z.2 v24 - Chip styling Audrey 4033:298 (kept) but flex 1 in horizontal row */
html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op024m > p,
html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op024m > p.brxe-text-basic {
  background: #BEE6F5 !important;
  border: 1px solid #30C5FF !important;
  border-radius: 8px !important;
  height: 44px !important;
  min-height: 44px !important;
  padding: 4px 16px !important;
  font-family: "Inter", sans-serif !important;
  font-weight: 500 !important;
  font-size: 13px !important;
  line-height: 20px !important;
  letter-spacing: 0.1px !important;
  color: #1D1760 !important;
  text-align: center !important;
  white-space: nowrap !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 !important;
  flex: 1 1 auto !important;
  min-width: 140px !important;
  width: auto !important;
  box-sizing: border-box !important;
}

/* Mobile: stack chips vertically when too narrow */
@media (max-width: 599px) {
  html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op024m {
    flex-direction: column !important;
  }
  html body.bsp-location-page #brxe-op019m #brxe-op020m #brxe-op024m > p {
    width: 100% !important;
    flex: 0 0 auto !important;
  }
}
/* === End Group 10 === */


/* ============================================================
 * GROUP 12 - Availability chip BARE TEXT 3-state (v25c May 8 2026)
 * ============================================================
 * Cite chain (Section 85.T):
 *   OVERRIDE: Robert 2026-05-08 06:10 CT - "BARE TEXT, NO CARD"
 *   Audrey 4033:351 white-bg yellow-border pill REJECTED
 *   Same layout as currently rendered. Just copy + dot color per state.
 *   FLEET: morpheus.callbrightside.com/api/fleet/status status enum
 * ============================================================ */

/* Container - bare text, NO card chrome (transparent + 0 everything) */
html body.bsp-location-page.bsp-location-page #brxe-op001h #brxe-op003h {
  display: inline-flex !important;
  align-items: center !important;
  background: transparent !important;
  background-color: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  margin: 0 0 16px !important;
  font-family: 'Inter', sans-serif !important;
  font-weight: 600 !important;
  font-size: 14px !important;
  line-height: 1.5 !important;
  color: #1D1760 !important;
  width: auto !important;
  max-width: none !important;
}

html body.bsp-location-page.bsp-location-page #brxe-op001h #brxe-op003h #brxe-op004c,
html body.bsp-location-page.bsp-location-page #brxe-op001h #brxe-op003h p {
  background: transparent !important;
  border: 0 !important;
  padding: 0 !important;
  margin: 0 !important;
  font: inherit !important;
  color: inherit !important;
}

/* Colored dot via ::before per data-state */
html body.bsp-location-page #brxe-op003h::before {
  content: "\25CF  " !important;
  font-size: 14px !important;
  margin-right: 4px !important;
  display: inline !important;
  line-height: 1 !important;
}

html body.bsp-location-page #brxe-op003h[data-state="available"]::before,
html body.bsp-location-page #brxe-op003h[data-state="fallback"]::before,
html body.bsp-location-page #brxe-op003h:not([data-state])::before { color: #22C55E !important; }
html body.bsp-location-page #brxe-op003h[data-state="after_hours"]::before { color: #F59E0B !important; }
html body.bsp-location-page #brxe-op003h[data-state="booked"]::before { color: #EF4444 !important; }
/* === End Group 12 === */


/* ============================================================
 * GROUP 13 - Page rhythm (33% whitespace reduction) v26 May 8 2026
 * ============================================================
 * OVERRIDE: Robert 2026-05-08 "remove a 3rd of the whitespace"
 * Pilot: Overland Park (pid 258). Scale to 14 cities post-eye-ACK.
 * Section padding base 60→40 (33% cut), hero 80→55, narrow sections 50→35.
 * Cite: §85.J Visual ACK + §85.W Audrey-aware (no Audrey override here, layout-only).
 * ============================================================ */

body.bsp-location-page #brxe-op001h {
  padding-top: 40px !important;
  padding-bottom: 55px !important;
  row-gap: 14px !important;
}
body.bsp-location-page #brxe-op019m,
body.bsp-location-page #brxe-op031s,
body.bsp-location-page #brxe-op065r,
body.bsp-location-page #brxe-op083h,
body.bsp-location-page #brxe-op099n,
body.bsp-location-page #brxe-op116f {
  padding-top: 40px !important;
  padding-bottom: 40px !important;
}
body.bsp-location-page #brxe-op113l,
body.bsp-location-page #brxe-op138n {
  padding-top: 35px !important;
  padding-bottom: 35px !important;
}
/* === End Group 13 === */


/* ============================================================
 * GROUP 15 - Hero CTA row gap tighter (v26 May 8 2026)
 * ============================================================
 * OVERRIDE: Robert 2026-05-08 "white space between (913) 963-1029, Book Now, Chat with Daniel"
 * op007h flex row gap reduced from default to 12px.
 * ============================================================ */

body.bsp-location-page #brxe-op007h {
  column-gap: 12px !important;
  row-gap: 12px !important;
  flex-wrap: wrap !important;
}
/* === End Group 15 === */


/* ============================================================
 * GROUP 14 - NWS grid tighter v26.2 (3-ID match + later-load)
 * ============================================================
 * Match winning rule's spec (0,3,0,0): #brx-content #brxe-op099n #brxe-op102n
 * Bricks-child has same selector earlier in file at repeat(4,1fr) gap 12-16.
 * Mine same spec but later in file → tie-break wins.
 * Cite: §85.DD ID-count primacy (this fix discovered tripled-class did NOT
 * bridge ID gap — 3 IDs absolute beats 2 IDs + N classes).
 * ============================================================ */

#brx-content #brxe-op099n #brxe-op102n {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  column-gap: 10px !important;
  row-gap: 8px !important;
  gap: 8px 10px !important;
  justify-content: start !important;
  justify-items: stretch !important;
}
#brx-content #brxe-op099n #brxe-op102n > p,
#brx-content #brxe-op099n #brxe-op102n > div {
  padding: 6px 10px !important;
  margin: 0 !important;
}
/* === End Group 14 === */


/* ============================================================
 * GROUP 16 - Mobile NWS grid responsive (v26.3 May 8 2026)
 * ============================================================
 * 414px viewport: 5×67px overflows "Wilshire Farms" content.
 * Add 2-col @ ≤600px and 3-col @ 601-900px.
 * Cite: §85.DD ID-count primacy — keep #brx-content prefix.
 * ============================================================ */

@media (max-width: 600px) {
  #brx-content #brxe-op099n #brxe-op102n {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 6px 8px !important;
  }
}
@media (min-width: 601px) and (max-width: 900px) {
  #brx-content #brxe-op099n #brxe-op102n {
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 8px 10px !important;
  }
}
/* === End Group 16 === */


/* ============================================================
 * GROUP 17 - Header phone icon mobile tap target (v27 May 8 2026)
 * ============================================================
 * Robert 2026-05-08 D2=B: brxe-bxbkmt icon was W=103 H=16 @414 — too small
 * to tap. Enlarge to ≥44px for WCAG 2.5.5 AAA tap target compliance.
 * Keep desktop/tablet display:none unchanged (already correct).
 * brxe-072b42 text variant stays hidden on mobile (Robert prefers icon).
 * Cite: §85.J + §85.T + WCAG 2.1 SC 2.5.5
 * ============================================================ */

@media (max-width: 600px) {
  #brxe-bxbkmt {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 44px !important;
    min-height: 44px !important;
    padding: 8px !important;
    border-radius: 8px !important;
  }
  #brxe-bxbkmt img,
  #brxe-bxbkmt svg,
  #brxe-bxbkmt i {
    width: 28px !important;
    height: 28px !important;
    min-width: 28px !important;
    min-height: 28px !important;
  }
}
/* === End Group 17 === */

/* BSP_CYCLE5_PHASE3A_V2_TIER1_CLUSTER — added 2026-05-08 per CSS_ARCHITECTURE_v1.md ACK + best-practice pivot.
   Tier 2 cluster hero typography for service pages. Uses WordPress core body.page-id-{N} grouping.
   Citations: §84 §84.5(NEW) §85.DD · academy.bricksbuilder.io/article/global-css-classes/ */

/* CLUSTER A 'Legacy' — pid_8 sewer-camera-inspection + pid_12 emergency-plumbing.
   Older Audrey naming convention. Hero 48/57px loose. */
body.page-id-8 #brx-content h1,
body.page-id-12 #brx-content h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 48px;
  line-height: 57px;
  color: #1D1760;
}

/* CLUSTER B 'Sewer/Excavation' — pid_286 sewer-repair + pid_289 sump-pump-emergency +
   pid_291 trenchless-sewer-repair + pid_468 gas-line-repair-installation. Hero 48/52px tight. */
body.page-id-286 #brx-content h1,
body.page-id-289 #brx-content h1,
body.page-id-291 #brx-content h1,
body.page-id-468 #brx-content h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 48px;
  line-height: 52px;
  color: #1D1760;
}

/* CLUSTER C 'Routine' — pid_287 sewer-cleaning + pid_288 drain-cleaning + pid_290 leak-repair (peer-derived).
   Hero 32/41px. */
body.page-id-287 #brx-content h1,
body.page-id-288 #brx-content h1,
body.page-id-290 #brx-content h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 32px;
  line-height: 41px;
  color: #1D1760;
}

/* CLUSTER D 'Installation' — pid_292 water-heater-repair + pid_469 water-softeners-filtration.
   STRONGEST cluster signal (6+ shared sections). Hero 32/38px compact. */
body.page-id-292 #brx-content h1,
body.page-id-469 #brx-content h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 32px;
  line-height: 38px;
  color: #1D1760;
}

/* BSP_CYCLE5_PHASE3A_V2_TIER1_CLUSTER — end */

/* BSP_CYCLE5_PHASE3C_PID_12_TIER3 — pid_12 emergency-plumbing Tier 3 page-specific overrides (Path C pilot, codified 2026-05-08).
   Per CSS_ARCHITECTURE_v1.md + codebase doc §84.7 hybrid tier + §84.9 page-id grouping pattern.
   Hex-id 3-ID selectors per §85.DD ID-count primacy. NO postmeta touch (Robert constraint reaffirmed 2026-05-08).
   Source: Phase 1 binding_map (HIGH/MED only) + delta_v3 spec /tmp/audrey_styling_specs/pid_12_v3_spec.json.
   Citations: §84.7 §84.8 §84.9 §85.DD §85.EE §86 · academy.bricksbuilder.io/article/global-css-classes/ */

/* RULE 1: 09_FinalCTA outlier hero typography (40/48px) — overrides Cluster A hero (48/57px) for pid_12.
   Binding: HIGH confidence, audrey '09_FinalCTA' → Bricks section #brxe-b86af6 (Phase 1 binding_map). */
body.page-id-12 #brx-content #brxe-b86af6 h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 40px;
  line-height: 48px;
  color: #1D1760;
}

/* RULE 2: 04_Process_Steps section title (32/43px) — descendant H1 of bound parent section.
   Binding: MED confidence, audrey '04_Process_Steps' → Bricks section #brxe-5a5ec7 (Phase 1 binding_map). */
body.page-id-12 #brx-content #brxe-5a5ec7 h1 {
  font-family: Inter, system-ui, -apple-system, sans-serif;
  font-weight: 700;
  font-size: 32px;
  line-height: 43px;
  color: #1D1760;
}

/* DEFERRED to Cycle 6 per CD ACK 2026-05-08:
   - 03_Plumbing_Emergencies_Title (32/43px) — no binding present + parent 03_Plumbing_Emergencies_Handled has structural mismatch (Figma=6 children, Bricks=1)
   - 3 LOW confidence bindings — Figma get_design_context cross-check needed first (Cycle 6 review pass)
   - Footer rules — low visual impact, scope creep
   - Section min-heights + bg-colors — Cluster A Tier 2 expansion (separate ship, planned tomorrow) */

/* BSP_CYCLE5_PHASE3C_PID_12_TIER3 — end */


/* BSP_HEADER_932_MOBILE_TOGGLE_FIX — start (May 8 2026) */
/* Restores the @layer bricks @media override that bsp_render_bricks_template()
   force-render helper omits when emitting template 932's CSS on home (pid_157).
   Cycle 6 task #47 replaces this with a helper-side fix.
   Codebase doc §87 documents the root-cause investigation. */
@media (max-width: 991px) {
  #brxe-61d633 .bricks-nav-menu-wrapper { display: none !important; }
  #brxe-61d633 .bricks-mobile-menu-toggle { display: block !important; }
}
/* BSP_HEADER_932_MOBILE_TOGGLE_FIX — end */

/* BSP_PID286_ICON_DESIGN_ALIGNMENT_v1 START - pid_286 sewer-repair icon design alignment (Tier 3, Cycle 5 Phase 3c).
   Per BSP_Bricks_Codebase_Documentation.html#figma-api-comprehensive-2026-05-04 §51.10 §54 §57 §85.DD §85.J §84.7 §84.9.
   Figma source-of-truth: file UbGMixQY0GYTQZDgK6UpmK node 6005:1602 (problem cards 230x230 icons in 1111x344 cards).
   Live audit (2026-05-08 Playwright): problem icons 200x200 desktop / 110x110 mobile; one outlier #brxe-f8ff0b at 175.5px (asset crop).
   No image asset swap (Robert constraint). NO postmeta touch (Path C). Idempotent via BSP_PID286_ICON_DESIGN_ALIGNMENT_v1 marker. */

/* PROBLEM CARDS (#brxe-4967c6 grid) - DESKTOP icons lock 200x200 + object-fit fallback (fixes f8ff0b crop) */
body.page-id-286 #brx-content #brxe-f5865c,
body.page-id-286 #brx-content #brxe-4bf9c3,
body.page-id-286 #brx-content #brxe-f8ff0b,
body.page-id-286 #brx-content #brxe-7f32f4,
body.page-id-286 #brx-content #brxe-6e8e1c,
body.page-id-286 #brx-content #brxe-4f3342 {
  width: 200px !important;
  height: 200px !important;
  object-fit: contain !important;
  max-width: 100% !important;
}

/* PROBLEM CARDS - desktop layout polish (32px column-gap, 12px radius, min-height 260px, 32px vertical pad) */
body.page-id-286 #brx-content #brxe-4e913a,
body.page-id-286 #brx-content #brxe-c0fee4,
body.page-id-286 #brx-content #brxe-1b4c15,
body.page-id-286 #brx-content #brxe-779a20,
body.page-id-286 #brx-content #brxe-5fd01a,
body.page-id-286 #brx-content #brxe-602fef {
  column-gap: 32px !important;
  row-gap: 16px !important;
  border-radius: 12px !important;
  min-height: 260px !important;
  padding: 32px 24px !important;
}

/* SERVICES GRID (#brxe-089897 cross-page) - object-fit + max-width safety only (NO size change per Robert) */
body.page-id-286 #brx-content #brxe-f81c4c,
body.page-id-286 #brx-content #brxe-3e267d,
body.page-id-286 #brx-content #brxe-e76f23,
body.page-id-286 #brx-content #brxe-54b973,
body.page-id-286 #brx-content #brxe-f0b4d9,
body.page-id-286 #brx-content #brxe-6f9491 {
  object-fit: contain !important;
  max-width: 100% !important;
}

/* MOBILE breakpoint (<=768px): problem cards relax padding + remove min-height; icons bump 110->120 */
@media (max-width: 768px) {
body.page-id-286 #brx-content #brxe-f5865c,
body.page-id-286 #brx-content #brxe-4bf9c3,
body.page-id-286 #brx-content #brxe-f8ff0b,
body.page-id-286 #brx-content #brxe-7f32f4,
body.page-id-286 #brx-content #brxe-6e8e1c,
body.page-id-286 #brx-content #brxe-4f3342 {
    width: 120px !important;
    height: 120px !important;
  }
body.page-id-286 #brx-content #brxe-4e913a,
body.page-id-286 #brx-content #brxe-c0fee4,
body.page-id-286 #brx-content #brxe-1b4c15,
body.page-id-286 #brx-content #brxe-779a20,
body.page-id-286 #brx-content #brxe-5fd01a,
body.page-id-286 #brx-content #brxe-602fef {
    padding: 20px 16px !important;
    row-gap: 12px !important;
    min-height: 0 !important;
  }
}

/* BSP_PID286_ICON_DESIGN_ALIGNMENT_v1 END */

/* BSP_PID288_ICON_DESIGN_ALIGNMENT_v1 START - pid_288 drain-cleaning icon design alignment (Tier 3, Cycle 5 Phase 3c).
   Per BSP_Bricks_Codebase_Documentation.html#figma-api-comprehensive-2026-05-04 §51.10 §54 §54.1 §57 §85.DD §85.J §84.7 §84.9.
   Figma source-of-truth: file qpol5OCessz1ZpxoOUPkZf node 0:1 (drain-cleaning landing page, frame 03b_drain_grid).
   Desktop card frames (kitchen/bathroom/showers/floor/main_sewer/laundry _card): 362.67x308-336 with padding=24, itemSpacing=32, cornerRadius=12.
   Live audit (2026-05-08 Playwright): problem icons uniform 120x120 contain (no crop outlier like pid_286 f8ff0b);
   cards 519.5x170 with padding=24 radius=8 col-gap=24 row-gap=16 (delta vs Figma: radius 8->12, vertical itemSpacing 16->32, col-gap 24->32, no min-height).
   Audrey card icons WP Media 527-532 audrey-card-drain-cleaning-* per §54.1 (verified attached, all 6).
   No image asset swap (Robert constraint). NO postmeta touch (Path C). Idempotent via BSP_PID288_ICON_DESIGN_ALIGNMENT_v1 marker.
   Template clone of pid_286 sewer-repair: hex IDs IDENTICAL (f5865c/4bf9c3/f8ff0b/7f32f4/6e8e1c/4f3342 imgs + 4e913a/c0fee4/1b4c15/779a20/5fd01a/602fef cards + 089897/4967c6 containers); ID-uniqueness scoped by body.page-id-288 (§85.DD). */

/* PROBLEM CARDS (#brxe-4967c6 grid) - DESKTOP icons lock 120x120 contain (live already 120x120 - lock for future-proof, NO crop outlier on pid_288) */
body.page-id-288 #brx-content #brxe-f5865c,
body.page-id-288 #brx-content #brxe-4bf9c3,
body.page-id-288 #brx-content #brxe-f8ff0b,
body.page-id-288 #brx-content #brxe-7f32f4,
body.page-id-288 #brx-content #brxe-6e8e1c,
body.page-id-288 #brx-content #brxe-4f3342 {
  width: 120px !important;
  height: 120px !important;
  object-fit: contain !important;
  max-width: 100% !important;
}

/* PROBLEM CARDS - desktop layout polish (Figma intent: itemSpacing=32, cornerRadius=12, padding=24; bump col-gap 24->32, row-gap 16->32, radius 8->12) */
body.page-id-288 #brx-content #brxe-4e913a,
body.page-id-288 #brx-content #brxe-c0fee4,
body.page-id-288 #brx-content #brxe-1b4c15,
body.page-id-288 #brx-content #brxe-779a20,
body.page-id-288 #brx-content #brxe-5fd01a,
body.page-id-288 #brx-content #brxe-602fef {
  column-gap: 32px !important;
  row-gap: 32px !important;
  border-radius: 12px !important;
  min-height: 260px !important;
  padding: 32px 24px !important;
}

/* SERVICES GRID (#brxe-089897 cross-page) - object-fit + max-width safety only (NO size change per Robert) */
body.page-id-288 #brx-content #brxe-f81c4c,
body.page-id-288 #brx-content #brxe-3e267d,
body.page-id-288 #brx-content #brxe-e76f23,
body.page-id-288 #brx-content #brxe-54b973,
body.page-id-288 #brx-content #brxe-f0b4d9,
body.page-id-288 #brx-content #brxe-6f9491 {
  object-fit: contain !important;
  max-width: 100% !important;
}

/* MOBILE breakpoint (<=768px): problem cards relax padding + remove min-height; icons stay 110 (live correct) */
@media (max-width: 768px) {
body.page-id-288 #brx-content #brxe-f5865c,
body.page-id-288 #brx-content #brxe-4bf9c3,
body.page-id-288 #brx-content #brxe-f8ff0b,
body.page-id-288 #brx-content #brxe-7f32f4,
body.page-id-288 #brx-content #brxe-6e8e1c,
body.page-id-288 #brx-content #brxe-4f3342 {
    width: 110px !important;
    height: 110px !important;
  }
body.page-id-288 #brx-content #brxe-4e913a,
body.page-id-288 #brx-content #brxe-c0fee4,
body.page-id-288 #brx-content #brxe-1b4c15,
body.page-id-288 #brx-content #brxe-779a20,
body.page-id-288 #brx-content #brxe-5fd01a,
body.page-id-288 #brx-content #brxe-602fef {
    padding: 20px 16px !important;
    row-gap: 16px !important;
    min-height: 0 !important;
  }
}

/* BSP_PID288_ICON_DESIGN_ALIGNMENT_v1 END */
