/* All Painting "Bold immersive" design system for Divi 5.
   Divi modules carry copy, structure, colours (global colours) and type (global presets) natively; this file adds
   what Divi cannot express: fluid type clamps, painted highlights, roller buttons, drips, the transparent-to-solid
   header, the mobile drawer, sticky columns and the interactive pieces. */

:root {
  --ap-ink: #0e0f12; --ap-ink-2: #16181d; --ap-ink-3: #1f2229;
  --ap-line: rgba(255, 255, 255, 0.1);
  --ap-paper: #f4f1ea; --ap-paper-2: #e9e5dc;
  --ap-text: #f4f1ea; --ap-soft: #dad7cf; --ap-muted: #b9b6ae;
  --ap-on-paper: #14161a; --ap-on-paper-soft: #3b3f47; --ap-on-paper-muted: #5a5e66;
  --ap-red: #d90a2e; --ap-green: #42ca54; --ap-blue: #0a77f6;
  --ap-display: "Bricolage Grotesque", "Inter", system-ui, sans-serif;
  --ap-body: "DM Sans", system-ui, -apple-system, sans-serif;
  --ap-radius: 18px; --ap-radius-sm: 12px;
  --ap-header-h: 76px;
  --ap-ease: cubic-bezier(0.22, 1, 0.36, 1);
  /* type scale (fluid): H1 38 -> 57 (1440) -> 69 (1920) ; H2 30 -> 34 -> 40 ; H3 18 -> 21 -> 22 */
  --ap-h1: clamp(2.375rem, 2.6vw + 1.2rem, 4.3rem);
  --ap-h2: clamp(1.875rem, 1.35vw + 0.9rem, 2.6rem);
  --ap-h3: clamp(1.125rem, 0.5vw + 0.85rem, 1.4rem);
  --ap-stroke-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 60' preserveAspectRatio='none'><path d='M6 20C34 7 62 15 92 11S150 3 194 13c4 12 4 24-2 36-30 8-64-1-98 6S28 62 8 52C1 42 2 30 6 20Z'/></svg>");
  --ap-drip: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 64' preserveAspectRatio='none'><path d='M0 0h1440v12c-30 6-60 14-92 10-14-2-18 24-22 40-3 12-14 12-17-2-3-16-6-30-20-32-40-6-80 4-120 6-40 2-70-14-110-8-30 4-50 18-80 10-20-5-30 22-34 38-3 12-13 13-16 0-4-18-7-32-26-34-50-6-100 8-150 6-40-2-80-10-120-4-30 4-50 18-80 12-20-4-30 24-36 40-4 12-13 10-16-2-4-16-8-30-26-30-50 0-100 12-150 8-40-3-70-14-110-8-30 5-40 16-60 8-30-10-50 6-70 10-20 4-40-6-60-8-25-3-45 10-70 14-30 5-56-6-80-12z'/></svg>");
}

/* ---------- Base ---------- */
html { scroll-padding-top: calc(var(--ap-header-h) + 8px); }
/* Divi sets overflow-x hidden on html/body, which turns body into the scroll container and kills position: sticky.
   Horizontal clipping is done on #page-container instead (overflow: clip does not break sticky). */
html, body.ap-bold { overflow-x: visible !important; overflow-y: visible !important; }
body.ap-bold { background: var(--ap-ink); color: var(--ap-text); font-family: var(--ap-body); -webkit-font-smoothing: antialiased; }
.ap-bold #page-container { overflow-x: clip; }
.ap-bold #et-boc .et-l h1, .ap-bold #et-boc .et-l h2, .ap-bold #et-boc .et-l h3, .ap-bold #et-boc .et-l h4,
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content h1, .ap-bold:not(.et_pb_pagebuilder_layout) #main-content h2, .ap-bold:not(.et_pb_pagebuilder_layout) #main-content h3 { font-family: var(--ap-display); font-weight: 800; letter-spacing: -0.02em; line-height: 1.05; color: inherit; padding-bottom: 0; }
.ap-bold #et-boc .et-l h3 { font-weight: 700; letter-spacing: -0.01em; line-height: 1.15; }
.ap-bold #et-boc .et-l p:last-of-type { padding-bottom: 0; }
.ap-bold #et-boc .et-l a { color: inherit; }
.ap-bold #et-boc .et-l .et_pb_section { position: relative; }
.ap-bold #et-boc .et-l .et_pb_row { position: relative; }
.ap-bold :focus-visible { outline: 3px solid var(--ap-blue); outline-offset: 3px; }
.ap-bold img, .ap-bold video, .ap-bold canvas { max-width: 100%; }
.ap-bold #et-boc .et-l .et_pb_text_inner, .ap-bold #et-boc .et-l .et_pb_blurb_description { color: inherit; }
.ap-bold #et-boc .et-l .et_pb_column > .et_pb_module { width: 100%; }

/* Fluid type scale on top of the Divi heading presets */
.ap-bold #et-boc .et-l .ap-h1 h1 { font-size: var(--ap-h1); line-height: 0.98; letter-spacing: -0.02em; text-wrap: balance; }
.ap-bold #et-boc .et-l .ap-h2 h2, .ap-bold #et-boc .et-l .ap-h2 h1 { font-size: var(--ap-h2); line-height: 1.05; letter-spacing: -0.02em; text-wrap: balance; }
.ap-bold #et-boc .et-l .ap-h3 h3, .ap-bold #et-boc .et-l .ap-h3 h2, .ap-bold #et-boc .et-l .ap-h3-lg h3 { font-size: var(--ap-h3); line-height: 1.15; }
.ap-bold #et-boc .et-l .ap-h2--sm h2 { font-size: var(--ap-h2); }

/* Tone helpers set on sections: text colours cascade to modules */
.ap-bold .ap-paper { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-lead .et_pb_text_inner { font-size: clamp(1.0625rem, 0.35vw + 0.85rem, 1.2rem); color: var(--ap-soft); max-width: 62ch; line-height: 1.55; }
.ap-bold #et-boc .et-l .ap-paper .ap-lead .et_pb_text_inner { color: var(--ap-on-paper-soft); }
.ap-bold #et-boc .et-l .ap-lead a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-paper .ap-lead a { color: var(--ap-on-paper); }
.ap-bold .ap-muted .et_pb_text_inner, .ap-bold .ap-muted { color: var(--ap-muted); }
.ap-bold .ap-body .et_pb_text_inner { font-size: 1.0625rem; line-height: 1.6; }
.ap-bold .ap-body .et_pb_text_inner p { padding-bottom: 1em; }
.ap-bold .ap-body .et_pb_text_inner p:last-child { padding-bottom: 0; }
.ap-bold .ap-body .et_pb_text_inner a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold .ap-paper .ap-body .et_pb_text_inner a { color: var(--ap-on-paper); }

/* ---------- Painted type: white on red and blue, ink on green (white on #42ca54 fails AA) ---------- */
.ap-bold .painted { position: relative; display: inline-block; white-space: nowrap; z-index: 0; }
.ap-bold .painted::before {
  content: ""; position: absolute; inset: -0.06em -0.2em -0.12em -0.18em; z-index: -1;
  background: var(--paint, var(--ap-red));
  -webkit-mask: var(--ap-stroke-mask) center / 100% 100% no-repeat; mask: var(--ap-stroke-mask) center / 100% 100% no-repeat;
  transform: scaleX(0); transform-origin: left center; transition: transform 0.9s var(--ap-ease);
}
.ap-bold .painted.is-in::before, .no-motion .painted::before { transform: scaleX(1); }
.ap-bold .painted.red { --paint: var(--ap-red); color: #fff; }
.ap-bold .painted.green { --paint: var(--ap-green); color: var(--ap-ink); }
.ap-bold .painted.blue { --paint: var(--ap-blue); color: #fff; }
.ap-bold .painted .t { position: relative; z-index: 1; }
@media (max-width: 640px) { .ap-bold .painted { white-space: normal; } .ap-bold .painted::before { inset: -0.04em -0.12em -0.08em -0.1em; } }

/* ---------- Eyebrow: pill and label always sit together, left aligned ---------- */
.ap-bold #et-boc .et-l .ap-kicker { width: auto; max-width: 100%; }
.ap-bold #et-boc .et-l .ap-kicker .et_pb_text_inner { display: inline-flex; width: auto; align-items: center; gap: 0.6rem; font-family: var(--ap-body); font-weight: 700; font-size: 0.8rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ap-muted); text-align: left; }
.ap-bold #et-boc .et-l .ap-kicker .et_pb_text_inner p { display: inline; width: auto; padding: 0; margin: 0; text-align: left; flex: 0 1 auto; }
.ap-bold #et-boc .et-l .ap-kicker .et_pb_text_inner::before { content: ""; width: 26px; height: 12px; border-radius: 3px 6px 6px 3px; background: var(--paint, var(--ap-red)); flex: none; }
.ap-bold #et-boc .et-l .ap-paper .ap-kicker .et_pb_text_inner { color: var(--ap-on-paper-muted); }
.ap-bold .ap-kicker--green { --paint: var(--ap-green); } .ap-bold .ap-kicker--blue { --paint: var(--ap-blue); } .ap-bold .ap-kicker--paper { --paint: var(--ap-paper); }

/* ---------- Buttons: fill like a roller. The fill is a background-image that grows from the left over the
   button's own background colour, so it can never hide behind it. Label colour changes only once the fill has
   covered most of the button; hover styles only apply on devices that hover. AA in every state. ---------- */
.ap-bold #et-boc .et-l .ap-btn.et_pb_button, .ap-bold #et-boc .et-l .ap-btn .et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like, .ap-bold .ap-btn-like {
  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 0.6rem;
  min-height: 52px; padding: 0.85rem 1.4rem !important; border-radius: 14px; border: 2px solid transparent;
  font-family: var(--ap-body); font-weight: 700; font-size: 1rem; text-decoration: none; letter-spacing: 0.005em; line-height: 1.1; white-space: nowrap;
  background-image: linear-gradient(var(--fill, var(--ap-red)), var(--fill, var(--ap-red))) !important; background-repeat: no-repeat !important; background-size: 0% 100% !important; background-position: left center !important;
  transition: background-size 0.3s var(--ap-ease), color 0.08s linear 0.26s, border-color 0.3s var(--ap-ease), transform 0.2s var(--ap-ease); cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.ap-bold #et-boc .et-l .ap-btn .et_pb_button::after, .ap-bold #et-boc .et-l .ap-btn.et_pb_button::after, .ap-bold #et-boc .et-l .ap-btn .et_pb_button::before, .ap-bold #et-boc .et-l .ap-btn.et_pb_button::before { display: none !important; }
.ap-bold #et-boc .et-l .ap-btn .et_pb_button:active, .ap-bold #et-boc .et-l .ap-btn.et_pb_button:active, .ap-bold .ap-btn-like:active { transform: scale(0.985); }
/* primary: paper on ink backgrounds (text 16.9:1), hover red with white (5.2:1) */
.ap-bold #et-boc .et-l .ap-btn--primary .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--primary.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--primary, .ap-bold .ap-btn-like--primary { background-color: var(--ap-paper) !important; color: var(--ap-ink) !important; --fill: var(--ap-red); }
/* ghost: paper text on ink, hover paper fill with ink text */
.ap-bold #et-boc .et-l .ap-btn--ghost .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--ghost.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--ghost, .ap-bold .ap-btn-like--ghost { background-color: transparent !important; color: var(--ap-text) !important; border-color: rgba(255,255,255,0.35) !important; --fill: var(--ap-paper); }
/* ink: on paper bands (paper on ink 16.9:1), hover red with white */
.ap-bold #et-boc .et-l .ap-btn--ink .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--ink.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--ink, .ap-bold .ap-btn-like--ink { background-color: var(--ap-ink) !important; color: var(--ap-paper) !important; --fill: var(--ap-red); }
/* ghost on paper: ink text, hover ink fill with paper text */
.ap-bold #et-boc .et-l .ap-btn--ghost-ink .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--ghost-ink.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--ghost-ink, .ap-bold .ap-btn-like--ghost-ink { background-color: transparent !important; color: var(--ap-on-paper) !important; border-color: rgba(20,22,26,0.35) !important; --fill: var(--ap-ink); }
@media (hover: hover) {
  .ap-bold #et-boc .et-l .ap-btn.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like:hover, .ap-bold .ap-btn-like:hover { background-size: 100% 100% !important; }
  .ap-bold #et-boc .et-l .ap-btn--primary .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--primary.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--primary:hover, .ap-bold .ap-btn-like--primary:hover { color: #fff !important; border-color: var(--ap-red) !important; }
  .ap-bold #et-boc .et-l .ap-btn--ghost .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--ghost.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--ghost:hover, .ap-bold .ap-btn-like--ghost:hover { color: var(--ap-ink) !important; border-color: var(--ap-paper) !important; }
  .ap-bold #et-boc .et-l .ap-btn--ink .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--ink.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--ink:hover, .ap-bold .ap-btn-like--ink:hover { color: #fff !important; border-color: var(--ap-red) !important; }
  .ap-bold #et-boc .et-l .ap-btn--ghost-ink .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--ghost-ink.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--ghost-ink:hover, .ap-bold .ap-btn-like--ghost-ink:hover { color: var(--ap-paper) !important; border-color: var(--ap-ink) !important; }
}
/* Label colour switches in one step, never through a mid-grey: into hover once the fill covers the label (120 ms), out of hover
   at once on primary and ink (their resting label reads on the fill too), at the fill's midpoint (40 ms) on the ghosts.
   !important because the Divi button preset sets its own "all 0.3s" transition. */
@media (prefers-reduced-motion: no-preference) {
  .ap-bold #et-boc .et-l .ap-btn.et_pb_button, .ap-bold #et-boc .et-l .ap-btn .et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like, .ap-bold .ap-btn-like { transition: background-size 0.3s var(--ap-ease), color 0s linear 0.04s, border-color 0.3s var(--ap-ease), transform 0.2s var(--ap-ease) !important; }
  .ap-bold #et-boc .et-l .ap-btn--primary .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--primary.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--primary, .ap-bold .ap-btn-like--primary, .ap-bold #et-boc .et-l .ap-btn--ink .et_pb_button, .ap-bold #et-boc .et-l .ap-btn--ink.et_pb_button, .ap-bold #et-boc .et-l .ap-btn-like--ink, .ap-bold .ap-btn-like--ink { transition: background-size 0.3s var(--ap-ease), color 0s linear 0s, border-color 0.3s var(--ap-ease), transform 0.2s var(--ap-ease) !important; }
}
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
  .ap-bold #et-boc .et-l .ap-btn--primary .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--primary.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--primary:hover, .ap-bold .ap-btn-like--primary:hover, .ap-bold #et-boc .et-l .ap-btn--ink .et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn--ink.et_pb_button:hover, .ap-bold #et-boc .et-l .ap-btn-like--ink:hover, .ap-bold .ap-btn-like--ink:hover { transition: background-size 0.3s var(--ap-ease), color 0s linear 0.12s, border-color 0.3s var(--ap-ease), transform 0.2s var(--ap-ease) !important; }
}
.ap-bold #et-boc .et-l .ap-btn.et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn .et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn-like:focus-visible, .ap-bold .ap-btn-like:focus-visible { background-size: 100% 100% !important; outline: 2px solid var(--ap-blue); outline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-btn--primary .et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn--primary.et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn-like--primary:focus-visible, .ap-bold .ap-btn-like--primary:focus-visible { color: #fff !important; }
.ap-bold #et-boc .et-l .ap-btn--ghost .et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn--ghost.et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn-like--ghost:focus-visible, .ap-bold .ap-btn-like--ghost:focus-visible { color: var(--ap-ink) !important; }
.ap-bold #et-boc .et-l .ap-btn--ink .et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn--ink.et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn-like--ink:focus-visible, .ap-bold .ap-btn-like--ink:focus-visible { color: #fff !important; }
.ap-bold #et-boc .et-l .ap-btn--ghost-ink .et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn--ghost-ink.et_pb_button:focus-visible, .ap-bold #et-boc .et-l .ap-btn-like--ghost-ink:focus-visible, .ap-bold .ap-btn-like--ghost-ink:focus-visible { color: var(--ap-paper) !important; }
.ap-bold #et-boc .et-l .et_pb_button_module_wrapper.ap-btn-wrap { display: inline-block; }
.ap-bold #et-boc .et-l .ap-cta-pair { display: flex; flex-wrap: wrap; gap: 0.8rem; align-items: center; }
.ap-bold #et-boc .et-l .ap-cta-pair .et_pb_button_module_wrapper { margin: 0; width: auto; }
.ap-bold #et-boc .et-l .ap-cta-pair--center { justify-content: center; }

/* ---------- Layout helpers ---------- */
.ap-bold #et-boc .et-l .ap-wrap { width: min(2000px, 95%); max-width: none; }
.ap-bold #et-boc .et-l .ap-wrap--narrow { width: min(1400px, 95%); }
.ap-bold #et-boc .et-l .ap-shead .et_pb_column, .ap-bold #et-boc .et-l .ap-shead h1, .ap-bold #et-boc .et-l .ap-shead h2, .ap-bold #et-boc .et-l .ap-shead p { text-align: left; }
.ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2 { max-width: 26ch; }
.ap-bold #et-boc .et-l .ap-shead .ap-shead-lead .et_pb_text_inner { max-width: 62ch; }
.ap-bold #et-boc .et-l .ap-stack > .et_pb_module { margin-bottom: 0; }

/* Drips: a section with .ap-drip-* paints the previous band's colour dripping into it */
.ap-bold #et-boc .et-l .ap-drip-ink::before, .ap-bold #et-boc .et-l .ap-drip-paper::before, .ap-bold #et-boc .et-l .ap-drip-ink2::before {
  content: ""; position: absolute; left: 0; right: 0; top: -1px; height: clamp(30px, 4vw, 56px); width: 100%; pointer-events: none; z-index: 2;
  -webkit-mask: var(--ap-drip) center / 100% 100% no-repeat; mask: var(--ap-drip) center / 100% 100% no-repeat;
}
.ap-bold #et-boc .et-l .ap-drip-ink::before { background: var(--ap-ink); }
.ap-bold #et-boc .et-l .ap-drip-ink2::before { background: var(--ap-ink-2); }
.ap-bold #et-boc .et-l .ap-drip-paper::before { background: var(--ap-paper); }

/* ---------- Header ---------- */
.ap-bold #et-boc .et-l .ap-header { position: fixed !important; top: 0 !important; left: 0 !important; right: 0; width: 100% !important; max-width: none; transform: none !important; margin: 0 !important; z-index: 9990; height: var(--ap-header-h); background: transparent; border-bottom: 1px solid transparent; padding: 0; pointer-events: none; transition: background-color 0.25s ease, border-color 0.25s ease; }
.ap-bold.admin-bar #et-boc .et-l .ap-header { top: 32px !important; }
.ap-bold #et-boc .et-l .ap-header .et_pb_module, .ap-bold #et-boc .et-l .ap-header a, .ap-bold #et-boc .et-l .ap-header .mobile_menu_bar { pointer-events: auto; }
.ap-bold #et-boc .et-l .ap-header.is-solid { background-color: rgba(14, 15, 18, 0.97) !important; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border-bottom-color: var(--ap-line); }
.ap-bold #et-boc .et-l .ap-header-row { height: var(--ap-header-h); display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 0; margin: 0 auto; }
.ap-bold #et-boc .et-l .ap-header-row .et_pb_column { display: flex; align-items: center; margin: 0; }
.ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(1) { flex: 0 0 auto; }
.ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(2) { flex: 1 1 auto; justify-content: center; }
.ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(3) { flex: 0 0 auto; justify-content: flex-end; }
.ap-bold #et-boc .et-l .ap-brand { display: flex; align-items: center; gap: 0.7rem; }
.ap-bold #et-boc .et-l .ap-brand .et_pb_image { margin: 0; width: 40px; }
.ap-bold #et-boc .et-l .ap-brand .et_pb_image img { width: 40px; height: 44px; object-fit: contain; }
.ap-bold #et-boc .et-l .ap-brand .et_pb_text_inner, .ap-bold #et-boc .et-l .ap-brand .et_pb_text_inner a { font-family: var(--ap-display); font-weight: 700; font-size: 1.25rem; letter-spacing: -0.01em; color: var(--ap-text); text-decoration: none; white-space: nowrap; }
.ap-bold #et-boc .et-l .ap-nav { margin: 0; background: transparent; }
.ap-bold #et-boc .et-l .ap-nav .et_pb_menu_inner_container, .ap-bold #et-boc .et-l .ap-nav .et_pb_menu__wrap { padding: 0; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu { display: flex; flex-wrap: nowrap; gap: 1.5rem; padding: 0; margin: 0; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li { padding: 0; margin: 0; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li > a { position: relative; padding: 0.3rem 0; font-family: var(--ap-body); font-weight: 500; font-size: 1rem; color: var(--ap-soft); text-decoration: none; white-space: nowrap; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li > a::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 0; height: 3px; border-radius: 2px; background: var(--ap-blue); transition: right 0.3s var(--ap-ease); }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li:hover > a, .ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li > a:focus-visible, .ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li.current-menu-item > a { color: var(--ap-text); opacity: 1; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li:hover > a::after, .ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li.current-menu-item > a::after { right: 0; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li.menu-item-has-children > a::after { right: 100%; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li.menu-item-has-children > a { padding-right: 1.1rem; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li.menu-item-has-children > a::before { content: ""; position: absolute; right: 0; top: calc(50% - 5px); width: 7px; height: 7px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu { background: var(--ap-ink-2); border: 1px solid var(--ap-line) !important; border-radius: 12px; padding: 0.5rem; width: 290px; box-shadow: 0 24px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(0,0,0,0.4); }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu li { padding: 0; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu li a { display: block; padding: 0.55rem 0.8rem; border-radius: 8px; width: auto; font-size: 0.95rem; color: var(--ap-text); opacity: 1; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu li a:hover, .ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu li a:focus-visible { background: var(--ap-ink-3) !important; color: #fff !important; padding-left: 1rem; }
.ap-bold #et-boc .et-l .ap-nav .et-menu-nav ul.et-menu li ul.sub-menu li a { transition: background-color 0.2s, padding-left 0.2s; }
.ap-bold #et-boc .et-l .ap-header-cta { display: flex; align-items: center; gap: 0.6rem; }
.ap-bold #et-boc .et-l .ap-call .et_pb_text_inner a { display: inline-flex; align-items: center; gap: 0.5rem; text-decoration: none; font-weight: 700; color: var(--ap-text); padding: 0.6rem 0.9rem; border-radius: 12px; white-space: nowrap; }
.ap-bold #et-boc .et-l .ap-call .et_pb_text_inner a:hover { background: var(--ap-ink-3); }
.ap-bold #et-boc .et-l .ap-call svg { width: 18px; height: 18px; }
.ap-bold #et-boc .et-l .ap-header .et_pb_button_module_wrapper { width: auto; }
.ap-bold #et-boc .et-l .ap-header .ap-btn .et_pb_button { min-height: 46px; padding: 0.6rem 1.15rem !important; font-size: 0.95rem; }
/* Divi mobile menu -> full-screen drawer */
.ap-bold #et-boc .et-l .ap-nav .et_mobile_nav_menu { display: none; float: none; }
.ap-bold #et-boc .et-l .ap-nav .mobile_menu_bar { width: 46px; height: 46px; border: 2px solid rgba(255,255,255,0.25); border-radius: 12px; display: grid; place-items: center; padding: 0; }
.ap-bold #et-boc .et-l .ap-nav .mobile_menu_bar::before { content: "\61"; color: var(--ap-text); font-size: 28px; position: static; }
.ap-bold #et-boc .et-l .ap-nav .mobile_nav.opened .mobile_menu_bar::before { content: "\4d"; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu { position: fixed; top: var(--ap-header-h); left: 0; right: 0; bottom: auto; height: calc(100vh - var(--ap-header-h)) !important; height: calc(100dvh - var(--ap-header-h)) !important; width: auto; margin: 0; padding: 1.5rem 2.5% 3rem; background: var(--ap-ink); border: 0; box-shadow: none; overflow: auto; z-index: 9989; }
.ap-bold.admin-bar #et-boc .et-l .ap-nav .et_mobile_menu { top: calc(var(--ap-header-h) + 32px); }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li { padding: 0; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li a { display: block; font-family: var(--ap-display); font-weight: 700; font-size: 1.75rem; padding: 0.55rem 0; border-bottom: 1px solid var(--ap-line); color: var(--ap-text); background: transparent; border-color: var(--ap-line); }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li li a { font-family: var(--ap-body); font-weight: 500; font-size: 1.05rem; padding: 0.45rem 0 0.45rem 1rem; color: var(--ap-soft); border-bottom: 0; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li .ap-drawer-parent { display: flex; width: 100%; align-items: center; justify-content: space-between; background: none; border: 0; border-bottom: 1px solid var(--ap-line); padding: 0.9rem 0; font: inherit; font-family: var(--ap-display); font-weight: 700; font-size: 1.6rem; color: var(--ap-text); text-align: left; cursor: pointer; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children > ul.sub-menu { display: none !important; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > ul.sub-menu, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > ul.sub-menu li, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > ul.sub-menu li a { visibility: visible !important; opacity: 1 !important; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > ul.sub-menu { display: block !important; padding: 0.2rem 0 0.6rem 1rem; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > ul.sub-menu li a { font-size: 1.15rem; font-family: var(--ap-body); font-weight: 600; padding: 0.6rem 0; border-bottom: 0; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-info { list-style: none; padding: 1.4rem 0 0; color: var(--ap-muted); font-size: 0.95rem; line-height: 1.5; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-info p { padding: 0 0 0.5rem; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-info a { border-bottom: 0; font-family: var(--ap-display); font-weight: 800; font-size: 1.3rem; color: var(--ap-text); padding: 0; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta { display: flex; flex-wrap: wrap; gap: 0.8rem; padding: 1.5rem 0 0; list-style: none; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta a { border-bottom: 0; font-family: var(--ap-body); font-size: 1rem; }
/* Drawer from 0 to 1239 px. Divi's own mobile-menu rules stop at 980 px, so the drawer carries its own list reset and the
   chevron (the site's .mobile-toggle, same look as on phones). Taps pass through the chevron to the parent button, which
   owns the open state; the chevron flips when the sub-menu is open. */
@media (max-width: 1239px) {
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu ul, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li { list-style: none !important; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu > li.menu-item-has-children { position: relative; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children:not(.visible) > ul.sub-menu { padding: 0; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children > .mobile-toggle { position: absolute; top: 0; right: 0; z-index: 999; width: 44px; height: 100%; max-height: 44px; padding: 0 !important; border: none; background-color: transparent; text-align: center; opacity: 1; pointer-events: none; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children > .mobile-toggle::after { position: relative; top: 10px; font-family: "ETModules"; content: "\33"; color: #007aff; background: #f0f3f6; border-radius: 50%; padding: 3px; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li.menu-item-has-children.visible > .mobile-toggle::after { content: "\32"; }
}
body.ap-menu-open { overflow: hidden !important; }
@media (max-width: 1239px) { .ap-bold #et-boc .et-l .ap-call { display: none; } }
@media (min-width: 1240px) and (max-width: 1439px) {
  .ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu { gap: 1.1rem; }
  .ap-bold #et-boc .et-l .ap-nav .et-menu-nav > ul.et-menu > li > a { font-size: 0.94rem; }
  .ap-bold #et-boc .et-l .ap-call .ap-call-txt { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .ap-bold #et-boc .et-l .ap-call .et_pb_text_inner a { padding: 0; width: 46px; height: 46px; justify-content: center; border: 2px solid rgba(255,255,255,0.25); }
  .ap-bold #et-boc .et-l .ap-call svg { width: 20px; height: 20px; }
  .ap-bold #et-boc .et-l .ap-header-row { gap: 16px; }
}
@media (max-width: 1239px) {
  .ap-bold #et-boc .et-l .ap-header-row { gap: 8px; }
  .ap-bold #et-boc .et-l .ap-header-row .et_pb_column { width: auto !important; flex: 0 0 auto !important; }
  .ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(1) { flex: 1 1 auto !important; }
  .ap-bold #et-boc .et-l .ap-header .ap-btn .et_pb_button { padding: 0.5rem 0.85rem !important; font-size: 0.9rem; min-height: 42px; }
  .ap-bold #et-boc .et-l .ap-brand .et_pb_text_inner, .ap-bold #et-boc .et-l .ap-brand .et_pb_text_inner a { font-size: 1.1rem; }
  .ap-bold #et-boc .et-l .ap-nav .et_pb_menu_inner_container, .ap-bold #et-boc .et-l .ap-nav .et_pb_menu__wrap, .ap-bold #et-boc .et-l .ap-nav .et_mobile_nav_menu { width: 46px; padding: 0; margin: 0; }
  .ap-bold #et-boc .et-l .ap-nav .et-menu-nav { display: none; }
  .ap-bold #et-boc .et-l .ap-nav .et_mobile_nav_menu { display: block; }
  .ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(2) { flex: 0 0 auto !important; order: 3; }
  .ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(3) { order: 2; margin-left: auto; }
}
@media (min-width: 1240px) { .ap-bold #et-boc .et-l .ap-nav .et-menu-nav { display: block; } }

/* ---------- Hero: full-bleed video, copy centred in the space under the header, trust bar along the bottom ---------- */
.ap-bold #et-boc .et-l .ap-hero { position: relative; isolation: isolate; overflow: hidden; background: var(--ap-ink); min-height: max(640px, min(100svh, 820px)); display: flex; flex-direction: column; justify-content: center; }
.ap-bold #et-boc .et-l .ap-hero-stage-row { position: absolute !important; top: 0 !important; left: 0 !important; right: 0; bottom: 0; width: 100% !important; max-width: none !important; height: 100%; margin: 0 !important; padding: 0 !important; z-index: 0; }
.ap-bold #et-boc .et-l .ap-hero-stage-row .et_pb_column, .ap-bold #et-boc .et-l .ap-hero-stage-row .et_pb_code, .ap-bold #et-boc .et-l .ap-hero-stage-row .et_pb_code_inner { position: absolute; inset: 0; margin: 0; padding: 0; width: 100%; height: 100%; }
.ap-hero-stage { position: absolute; inset: 0; z-index: 0; touch-action: pan-y; user-select: none; -webkit-user-select: none; background: var(--ap-ink-2); }
.ap-hero-stage video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: var(--ap-ink-2); display: block; }
video::-webkit-media-controls-start-playback-button { display: none !important; }
.ap-hero-scrim { position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.76) 76px, rgba(14,15,18,0.35) 190px, rgba(14,15,18,0) 320px),
              linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.86) 58%, rgba(14,15,18,0.55) 78%, rgba(14,15,18,0.35) 100%); }
.ap-bold #et-boc .et-l .ap-hero-copy-row { position: relative; z-index: 2; pointer-events: none; }
.ap-bold #et-boc .et-l .ap-hero-copy-row a, .ap-bold #et-boc .et-l .ap-hero-copy-row button { pointer-events: auto; }
.ap-bold #et-boc .et-l .ap-hero-copy { max-width: 640px; display: flex; flex-direction: column; gap: 1.4rem; }
.ap-bold #et-boc .et-l .ap-hero-copy .et_pb_module { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-hero-copy h1 { text-shadow: 0 2px 24px rgba(0,0,0,0.35); }
.ap-bold #et-boc .et-l .ap-hero-copy .ap-lead .et_pb_text_inner { color: var(--ap-soft); max-width: 52ch; }
.ap-bold #et-boc .et-l .ap-hero-bar-row { position: absolute !important; left: 0 !important; right: 0; bottom: 0; width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; z-index: 3; background: rgba(14,15,18,0.55); border-top: 1px solid rgba(255,255,255,0.12); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.ap-bold #et-boc .et-l .ap-hero-bar-row .et_pb_column { width: min(2000px, 95%) !important; margin: 0 auto; padding: 14px 0; }
.ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { display: flex; flex-wrap: wrap; gap: 0.5rem 1.6rem; list-style: none; margin: 0; padding: 0; font-weight: 600; font-size: 0.92rem; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0; }
.ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--dot, var(--ap-red)); }
.ap-bold #et-boc .et-l .ap-trust li:nth-child(2) { --dot: var(--ap-green); } .ap-bold #et-boc .et-l .ap-trust li:nth-child(3) { --dot: var(--ap-blue); } .ap-bold #et-boc .et-l .ap-trust li:nth-child(4) { --dot: var(--ap-paper); }
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-hero { justify-content: flex-start; min-height: max(640px, 92svh); }
  .ap-hero-scrim { background: linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.76) 76px, rgba(14,15,18,0.35) 190px, rgba(14,15,18,0) 320px), linear-gradient(180deg, rgba(14,15,18,0.86) 0, rgba(14,15,18,0.78) 58%, rgba(14,15,18,0.45) 80%, rgba(14,15,18,0.35) 100%); }
  .ap-bold #et-boc .et-l .ap-hero-bar-row .et_pb_column { padding: 12px 0; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem 1rem; font-size: 0.85rem; }
}
@media (min-width: 900px) {
  .ap-hero-scrim, .ap-bold #et-boc .et-l .ap-hero--inner.ap-hero--img::after { background: linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.76) 76px, rgba(14,15,18,0.35) 190px, rgba(14,15,18,0) 320px), linear-gradient(90deg, rgba(14,15,18,0.94) 0, rgba(14,15,18,0.9) 760px, rgba(14,15,18,0.66) 1040px, rgba(14,15,18,0.22) 1400px, rgba(14,15,18,0) 1700px); }
  .ap-bold #et-boc .et-l .ap-hero-copy { max-width: 900px; }
}
@media (min-width: 1600px) {
  .ap-bold #et-boc .et-l .ap-hero-copy { max-width: 980px; }
  .ap-hero-scrim, .ap-bold #et-boc .et-l .ap-hero--inner.ap-hero--img::after { background: linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.76) 76px, rgba(14,15,18,0.35) 190px, rgba(14,15,18,0) 320px), linear-gradient(90deg, rgba(14,15,18,0.94) 0, rgba(14,15,18,0.9) 880px, rgba(14,15,18,0.66) 1180px, rgba(14,15,18,0.22) 1600px, rgba(14,15,18,0) 1950px); }
}
/* Inner-page hero (image or plain), shorter, same type scale */
.ap-bold #et-boc .et-l .ap-hero--inner { min-height: 0; justify-content: flex-end; padding-top: calc(var(--ap-header-h) + clamp(3rem, 7vw, 6rem)); padding-bottom: clamp(3rem, 6vw, 5rem); }
.ap-bold #et-boc .et-l .ap-hero--inner .ap-hero-copy { gap: 1.2rem; }
.ap-bold #et-boc .et-l .ap-hero--inner .ap-hero-copy h1 { text-shadow: none; }
.ap-bold #et-boc .et-l .ap-hero--inner.ap-hero--img .ap-hero-copy h1 { text-shadow: 0 2px 24px rgba(0,0,0,0.35); }
.ap-bold #et-boc .et-l .ap-hero--inner.ap-hero--img::after { content: ""; position: absolute; inset: 0; z-index: 0; background: linear-gradient(180deg, rgba(14,15,18,0.9) 0, rgba(14,15,18,0.55) 40%, rgba(14,15,18,0.92) 100%); }
.ap-bold #et-boc .et-l .ap-hero--inner .et_pb_row { position: relative; z-index: 2; }

/* ---------- Colour visualiser ---------- */
.ap-bold #et-boc .et-l .ap-vis-row { align-items: stretch; }
.ap-bold #et-boc .et-l .ap-vis-row .ap-vis-col .et_pb_code, .ap-bold #et-boc .et-l .ap-vis-row .ap-vis-col .et_pb_code_inner { flex: 1 1 auto; display: flex; flex-direction: column; margin: 0; }
.ap-bold #et-boc .et-l .ap-vis-row .ap-vis-col .ap-vis-stage { flex: 1 1 auto; }
.ap-vis-stage { position: relative; aspect-ratio: 3 / 2; border-radius: var(--ap-radius); overflow: hidden; background: var(--ap-ink-3); isolation: isolate; }
.ap-vis-frame { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
.ap-vis-frame > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; max-width: none; }
.ap-vis-wall { position: absolute; inset: 0; mix-blend-mode: multiply; pointer-events: none; -webkit-mask: var(--mask) center / 100% 100% no-repeat; mask: var(--mask) center / 100% 100% no-repeat; }
.ap-vis-wall .layer { position: absolute; inset: 0; background: var(--g, transparent); }
.ap-vis-wall .layer.next { clip-path: inset(0 100% 0 0); }
.ap-vis-hit { position: absolute; inset: 0; display: grid; grid-template-columns: var(--corner, 62%) 1fr; }
.ap-vis-hit button { background: transparent; border: 0; padding: 0; height: 100%; cursor: pointer; }
.ap-vis-hit button:focus-visible { outline-offset: -6px; }
.ap-vis-tag { position: absolute; top: 1rem; padding: 0.45rem 0.8rem; border-radius: 999px; background: rgba(14,15,18,0.78); color: var(--ap-text); font-size: 0.85rem; font-weight: 700; display: inline-flex; gap: 0.5rem; align-items: center; pointer-events: none; }
.ap-vis-tag i { width: 14px; height: 14px; border-radius: 50%; background: var(--c); border: 2px solid rgba(255,255,255,0.7); }
.ap-vis-tag.l { left: 1rem; } .ap-vis-tag.r { right: 1rem; }
@media (max-width: 640px) { .ap-vis-tag.r { top: auto; bottom: 1rem; } }
.ap-vis-tag.is-target { outline: 2px solid var(--ap-blue); }
.ap-vis-panel { display: grid; gap: 1.4rem; align-content: start; }
.ap-seg { display: inline-flex; padding: 4px; border-radius: 14px; background: var(--ap-ink-3); gap: 4px; }
.ap-seg button { border: 0; border-radius: 10px; padding: 0.6rem 1rem; background: transparent; color: var(--ap-soft); font: inherit; font-weight: 700; cursor: pointer; }
.ap-seg button[aria-pressed="true"] { background: var(--ap-paper); color: var(--ap-ink); }
.ap-swatches { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0.75rem; list-style: none; margin: 0; padding: 0; }
.ap-swatches li { padding: 0 0 1.4rem; }
.ap-swatch { position: relative; width: 100%; aspect-ratio: 1; border-radius: 14px; border: 3px solid transparent; background: var(--c); box-shadow: inset 0 0 0 1px rgba(0,0,0,0.15); transition: transform 0.2s var(--ap-ease); cursor: pointer; padding: 0; }
.ap-swatch:hover { transform: translateY(-3px); }
.ap-swatch[aria-pressed="true"] { border-color: var(--ap-paper); }
.ap-swatch span { position: absolute; left: 50%; bottom: -1.55rem; transform: translateX(-50%); font-size: 0.75rem; color: var(--ap-soft); white-space: nowrap; }
.ap-bold #et-boc .et-l .ap-vis-note .et_pb_text_inner { color: var(--ap-muted); font-size: 0.95rem; }
.ap-bold #et-boc .et-l .ap-vis-note .et_pb_text_inner b { color: var(--ap-text); }
@media (min-width: 900px) { .ap-vis-stage { aspect-ratio: auto; min-height: 460px; height: 100%; } }

/* ---------- Services explorer (Divi Tabs) ---------- */
.ap-bold #et-boc .et-l .ap-svc.et_pb_tabs { border: 0; background: transparent; display: grid; gap: 1.5rem; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls { background: transparent; border: 0; display: flex; gap: 0.5rem; overflow-x: auto; scroll-snap-type: x proximity; padding: 0 0 0.5rem; scrollbar-width: none; counter-reset: svc; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls::-webkit-scrollbar { display: none; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls::after { display: none; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li { height: auto !important; flex: none; scroll-snap-align: start; border: 0; background: transparent; padding: 0; margin: 0; counter-increment: svc; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a { position: relative; isolation: isolate; display: inline-flex; align-items: center; gap: 0.7rem; padding: 0.65rem 1rem; border-radius: 12px; color: var(--ap-soft) !important; font-family: var(--ap-body); font-weight: 600; white-space: nowrap; text-align: left; font-size: 1rem; line-height: 1.2; cursor: pointer; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a::after { content: counter(svc, decimal-leading-zero); order: -1; font-size: 0.75rem; font-weight: 800; opacity: 0.8; font-family: var(--ap-display); min-width: 1.6rem; color: inherit; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a::before { content: ""; position: absolute; inset: 0.15rem -0.2rem; z-index: -1; background: var(--paint, var(--ap-red)); -webkit-mask: var(--ap-stroke-mask) center / 100% 100% no-repeat; mask: var(--ap-stroke-mask) center / 100% 100% no-repeat; transform: scaleX(0); transform-origin: left center; transition: transform 0.5s var(--ap-ease); }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li:nth-child(3n+1) { --paint: var(--ap-red); } .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li:nth-child(3n+2) { --paint: var(--ap-green); } .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li:nth-child(3n) { --paint: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li.et_pb_tab_active a { color: #fff !important; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li.et_pb_tab_active a::after { opacity: 1; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li.et_pb_tab_active:nth-child(3n+2) a { color: var(--ap-ink) !important; }
.ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li.et_pb_tab_active a::before { transform: scaleX(1); }
.ap-bold #et-boc .et-l .ap-svc .et_pb_all_tabs { background: transparent; padding: 0; }
.ap-bold #et-boc .et-l .ap-svc .et_pb_tab { padding: 0; border-radius: var(--ap-radius); overflow: hidden; background: var(--ap-ink-2); border: 1px solid var(--ap-line); }
.ap-svc-media { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--ap-ink-3); }
.ap-svc-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ap-bold #et-boc .et-l .ap-svc .et_pb_tab.et_pb_active_content .ap-svc-media img { animation: apWipe 0.6s var(--ap-ease) both; }
@keyframes apWipe { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
.ap-svc-body { padding: 1.5rem; display: grid; gap: 0.7rem; }
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body h3 { font-size: clamp(1.35rem, 1vw + 0.9rem, 1.8rem); padding: 0; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body p { color: var(--ap-soft); padding: 0; }
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body .more { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 700; text-decoration: none; color: var(--ap-text); border-bottom: 2px solid var(--ap-blue); width: max-content; padding-bottom: 2px; }
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body .more svg { width: 16px; height: 16px; transition: transform 0.3s; }
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body .more:hover svg { transform: translateX(4px); }
@media (min-width: 900px) {
  .ap-bold #et-boc .et-l .ap-svc.et_pb_tabs { grid-template-columns: 5fr 7fr; align-items: start; }
  .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls { flex-direction: column; overflow: visible; gap: 0.1rem; }
  .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a { width: 100%; font-size: 1.2rem; padding: 0.65rem 1rem; white-space: normal; font-family: var(--ap-display); font-weight: 700; letter-spacing: -0.01em; }
  .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a::after { font-size: 0.85rem; min-width: 1.8rem; }
  .ap-bold #et-boc .et-l .ap-svc ul.et_pb_tabs_controls li a:hover { color: var(--ap-text) !important; }
  .ap-bold #et-boc .et-l .ap-svc .et_pb_all_tabs { position: sticky; top: calc(var(--ap-header-h) + 1.5rem); }
}
@media (min-width: 1600px) { .ap-bold #et-boc .et-l .ap-svc.et_pb_tabs { grid-template-columns: 4fr 8fr; } .ap-svc-body { padding: 2rem; } }

/* ---------- Estimator (own page) ---------- */
.ap-est-form { display: grid; gap: 1.4rem; }
.ap-est-form .field { display: grid; gap: 0.6rem; }
.ap-est-form .field > span, .ap-est-form .field legend { font-weight: 700; font-size: 0.95rem; color: var(--ap-on-paper); }
.ap-est-form fieldset.field { border: 0; padding: 0; margin: 0; min-width: 0; }
.ap-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ap-chips label { position: relative; margin: 0; }
.ap-chips input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.ap-chips input + span { display: inline-flex; align-items: center; min-height: 44px; padding: 0.55rem 1rem; border-radius: 12px; border: 2px solid rgba(20,22,26,0.15); background: #fff; color: var(--ap-on-paper); font-weight: 600; font-size: 0.95rem; transition: background 0.25s, border-color 0.25s, color 0.25s; }
.ap-chips input:checked + span { background: var(--ap-ink); color: var(--ap-paper); border-color: var(--ap-ink); }
.ap-chips input:focus-visible + span { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
.ap-stepper { display: inline-flex; align-items: center; border: 2px solid rgba(20,22,26,0.15); border-radius: 12px; background: #fff; overflow: hidden; }
.ap-stepper button { width: 46px; height: 46px; border: 0; background: transparent; font: inherit; font-size: 1.4rem; font-weight: 700; color: var(--ap-on-paper); cursor: pointer; }
.ap-stepper button:hover { background: var(--ap-paper-2); }
.ap-stepper output { min-width: 3rem; text-align: center; font-weight: 800; font-family: var(--ap-display); font-size: 1.2rem; color: var(--ap-on-paper); }
.ap-toggles { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ap-toggles label { position: relative; margin: 0; }
.ap-toggles input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.ap-toggles input + span { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; padding: 0.55rem 1rem 0.55rem 0.7rem; border-radius: 12px; border: 2px solid rgba(20,22,26,0.15); background: #fff; font-weight: 600; font-size: 0.95rem; color: var(--ap-on-paper); }
.ap-toggles input + span::before { content: ""; width: 20px; height: 20px; border-radius: 6px; border: 2px solid rgba(20,22,26,0.3); background: #fff; transition: background 0.2s, border-color 0.2s; }
.ap-toggles input:checked + span::before { background: var(--ap-blue) center / 14px no-repeat url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12l5 5L20 7'/></svg>"); border-color: var(--ap-blue); }
.ap-toggles input:focus-visible + span { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
.ap-bold #et-boc .et-l .ap-est-card { background: var(--ap-ink); color: var(--ap-text); border-radius: var(--ap-radius); padding: clamp(1.5rem, 2.5vw, 2.25rem); position: relative; overflow: hidden; display: flex; flex-direction: column; gap: 1rem; }
.ap-bold #et-boc .et-l .ap-est-card::after { content: ""; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px; border-radius: 50%; background: var(--ap-blue); filter: blur(70px); opacity: 0.35; pointer-events: none; }
.ap-bold #et-boc .et-l .ap-est-card > * { position: relative; z-index: 1; margin-bottom: 0; }
.ap-est-result { display: grid; gap: 1rem; }
.ap-est-result .label { font-size: 0.8rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ap-muted); }
.ap-est-range { font-family: var(--ap-display); font-weight: 800; font-size: clamp(2rem, 2.4vw + 0.6rem, 3.2rem); letter-spacing: -0.03em; line-height: 1; color: var(--ap-text); }
.ap-est-range small { display: block; font-size: 1rem; font-family: var(--ap-body); font-weight: 600; color: var(--ap-muted); margin-top: 0.5rem; letter-spacing: 0; }
.ap-est-lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; font-size: 0.95rem; color: var(--ap-muted); }
.ap-est-lines li { display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px dashed var(--ap-line); padding: 0 0 0.35rem; }
.ap-est-lines li b { color: var(--ap-text); font-weight: 600; white-space: nowrap; }
.ap-est-note { font-size: 0.88rem; color: var(--ap-muted); }
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-est-card { position: sticky; top: calc(var(--ap-header-h) + 1.5rem); } }

/* ---------- Why: numbered points + equal-height media ---------- */
.ap-bold #et-boc .et-l .ap-split { align-items: stretch; }
.ap-bold #et-boc .et-l .ap-why-points { counter-reset: why; display: flex; flex-direction: column; gap: 0; }
.ap-bold #et-boc .et-l .ap-why-item { padding: 1rem 0; border-top: 1px solid var(--ap-line); margin: 0; }
.ap-bold #et-boc .et-l .ap-paper .ap-why-item { border-top-color: rgba(20,22,26,0.12); }
.ap-bold #et-boc .et-l .ap-why-item:last-child { border-bottom: 1px solid var(--ap-line); }
.ap-bold #et-boc .et-l .ap-paper .ap-why-item:last-child { border-bottom-color: rgba(20,22,26,0.12); }
.ap-bold #et-boc .et-l .ap-why-item .et_pb_blurb_content { display: grid; grid-template-columns: 3rem 1fr; gap: 1rem; max-width: none; }
.ap-bold #et-boc .et-l .ap-why-item .et_pb_blurb_content::before { counter-increment: why; content: counter(why, decimal-leading-zero); font-family: var(--ap-display); font-weight: 800; font-size: 1.25rem; color: var(--paint, var(--ap-red)); line-height: 1.3; }
.ap-bold #et-boc .et-l .ap-why-item:nth-child(3n+2) { --paint: #1f9a33; } .ap-bold #et-boc .et-l .ap-why-item:nth-child(3n) { --paint: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-why-item .et_pb_main_blurb_image { display: none; }
.ap-bold #et-boc .et-l .ap-why-item h3.et_pb_module_header { font-size: var(--ap-h3); padding-bottom: 0.25rem; }
.ap-bold #et-boc .et-l .ap-why-item .et_pb_blurb_description { color: var(--ap-muted); }
.ap-bold #et-boc .et-l .ap-paper .ap-why-item h3.et_pb_module_header { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-why-item .et_pb_blurb_description { color: var(--ap-on-paper-soft); }
.ap-bold #et-boc .et-l .ap-media-col { position: relative; border-radius: var(--ap-radius); overflow: hidden; background: var(--ap-ink-3); min-height: 320px; }
.ap-bold #et-boc .et-l .ap-media-col .et_pb_image, .ap-bold #et-boc .et-l .ap-media-col .et_pb_image_wrap { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; display: block; }
.ap-bold #et-boc .et-l .ap-media-col .et_pb_image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ap-bold #et-boc .et-l .ap-media-caption { position: absolute; left: 1rem; right: 1rem; bottom: 1rem; margin: 0; z-index: 2; }
.ap-bold #et-boc .et-l .ap-media-caption .et_pb_text_inner { display: flex; align-items: center; gap: 0.7rem; padding: 0.7rem 0.9rem; border-radius: 12px; background: rgba(14,15,18,0.82); font-size: 0.9rem; font-weight: 600; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-media-caption img { width: 28px; height: 30px; object-fit: contain; }
@media (max-width: 899px) { .ap-bold #et-boc .et-l .ap-media-col { aspect-ratio: 4 / 3; min-height: 0; } }

/* ---------- Process steps ---------- */
.ap-bold #et-boc .et-l .ap-steps { position: relative; counter-reset: step; gap: 1.5rem; }
.ap-bold #et-boc .et-l .ap-steps::before { content: ""; position: absolute; left: 1.35rem; top: 1.5rem; bottom: 1.5rem; width: 4px; border-radius: 2px; background: rgba(255,255,255,0.12); }
.ap-bold #et-boc .et-l .ap-paper .ap-steps::before { background: rgba(20,22,26,0.1); }
.ap-bold #et-boc .et-l .ap-steps::after { content: ""; position: absolute; left: 1.35rem; top: 1.5rem; width: 4px; height: calc(100% - 3rem); border-radius: 2px; background: linear-gradient(180deg, var(--ap-red), var(--ap-green), var(--ap-blue)); transform: scaleY(var(--p, 0)); transform-origin: top; }
.no-motion .ap-bold #et-boc .et-l .ap-steps::after, .ap-bold.no-motion #et-boc .et-l .ap-steps::after { transform: none; }
.ap-bold #et-boc .et-l .ap-steps .et_pb_column { position: relative; display: grid; grid-template-columns: 3rem 1fr; gap: 0.35rem 1rem; align-items: start; align-content: start; justify-content: stretch; }
.ap-bold #et-boc .et-l .ap-steps .et_pb_column::before { counter-increment: step; content: counter(step); width: 3rem; height: 3rem; border-radius: 50%; display: grid; place-items: center; font-family: var(--ap-display); font-weight: 800; font-size: 1.1rem; background: var(--ap-paper); color: var(--ap-ink); position: relative; z-index: 1; grid-row: 1 / span 2; }
.ap-bold #et-boc .et-l .ap-paper .ap-steps .et_pb_column::before { background: var(--ap-ink); color: var(--ap-paper); }
.ap-bold #et-boc .et-l .ap-steps .et_pb_column > .et_pb_module { grid-column: 2; margin: 0; }
.ap-bold #et-boc .et-l .ap-steps h3 { margin-top: 0.6rem; }
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-steps h3 { min-height: 2.4em; } }
@media (min-width: 900px) {
  .ap-bold #et-boc .et-l .ap-steps::before, .ap-bold #et-boc .et-l .ap-steps::after { left: 1.5rem; right: 1.5rem; top: 1.45rem; bottom: auto; width: calc(100% - 3rem); height: 4px; }
  .ap-bold #et-boc .et-l .ap-steps::after { background: linear-gradient(90deg, var(--ap-red), var(--ap-green), var(--ap-blue)); transform: scaleX(var(--p, 0)); transform-origin: left; }
  .ap-bold #et-boc .et-l .ap-steps .et_pb_column { grid-template-columns: 1fr; }
  .ap-bold #et-boc .et-l .ap-steps .et_pb_column::before { grid-row: auto; }
  .ap-bold #et-boc .et-l .ap-steps .et_pb_column > .et_pb_module { grid-column: 1; }
}

/* ---------- Service area map (ap-service-map, dark theme lives in that plugin) ---------- */
.ap-bold #et-boc .et-l .ap-map-note .et_pb_text_inner { color: var(--ap-muted); font-size: 0.95rem; }
.ap-bold #et-boc .et-l .ap-map-note a { color: var(--ap-text); text-decoration: none; border-bottom: 1px solid var(--ap-line); }

/* ---------- Before / after ---------- */
.ap-ba { position: relative; aspect-ratio: 16 / 9; border-radius: var(--ap-radius); overflow: hidden; background: var(--ap-ink-3); user-select: none; -webkit-user-select: none; }
.ap-ba img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; max-width: none; }
.ap-ba .before { clip-path: inset(0 calc(100% - var(--pos, 50%)) 0 0); }
.ap-ba .handle { position: absolute; top: 0; bottom: 0; left: var(--pos, 50%); width: 4px; background: var(--ap-paper); transform: translateX(-50%); pointer-events: none; box-shadow: 0 0 0 1px rgba(0,0,0,0.25); }
.ap-ba .knob { position: absolute; top: 50%; left: var(--pos, 50%); transform: translate(-50%, -50%); width: 64px; height: 64px; border-radius: 50%; background: var(--ap-paper); color: var(--ap-ink); display: grid; place-items: center; pointer-events: none; box-shadow: 0 10px 30px rgba(0,0,0,0.45); }
.ap-ba .knob svg { width: 30px; height: 30px; }
.ap-ba input[type="range"] { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; touch-action: pan-y; }
.ap-ba input[type="range"]:focus-visible ~ .knob { outline: 3px solid var(--ap-blue); outline-offset: 3px; }
.ap-ba .tag { position: absolute; top: 1rem; padding: 0.4rem 0.75rem; border-radius: 999px; background: rgba(14,15,18,0.78); color: var(--ap-text); font-size: 0.8rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; pointer-events: none; }
.ap-ba .tag.l { left: 1rem; } .ap-ba .tag.r { right: 1rem; }
.ap-ba-caption { position: absolute; left: 1rem; bottom: 1rem; padding: 0.5rem 0.85rem; border-radius: 12px; background: rgba(14,15,18,0.78); font-weight: 600; font-size: 0.95rem; pointer-events: none; color: var(--ap-text); }
.ap-ba-tabs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.75rem; margin-top: 0.75rem; }
.ap-ba-tabs button { display: flex; align-items: center; gap: 0.75rem; border: 2px solid rgba(20,22,26,0.12); border-radius: 14px; background: #fff; padding: 0.5rem; text-align: left; color: var(--ap-on-paper-soft); font: inherit; font-weight: 700; font-size: 0.92rem; cursor: pointer; transition: border-color 0.2s; }
.ap-ba-tabs button img { width: 96px; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 9px; display: block; flex: none; }
.ap-ba-tabs button[aria-selected="true"] { border-color: var(--ap-ink); color: var(--ap-on-paper); }
.ap-bold .et_pb_section:not(.ap-paper) .ap-ba-tabs button { background: var(--ap-ink-2); border-color: var(--ap-line); color: var(--ap-muted); }
.ap-bold .et_pb_section:not(.ap-paper) .ap-ba-tabs button[aria-selected="true"] { border-color: var(--ap-paper); color: var(--ap-text); }
@media (max-width: 640px) { .ap-ba-tabs { grid-template-columns: 1fr; } .ap-ba-tabs button img { width: 72px; } }

/* ---------- Cards (Blurb) ---------- */
.ap-bold #et-boc .et-l .ap-cards { align-items: stretch; }
.ap-bold #et-boc .et-l .ap-cards .et_pb_column { display: flex; }
.ap-bold #et-boc .et-l .ap-card { display: flex; flex-direction: column; width: 100%; height: 100%; margin: 0; background: var(--ap-ink-2); border: 1px solid var(--ap-line); border-radius: var(--ap-radius); overflow: hidden; }
.ap-bold #et-boc .et-l .ap-card .et_pb_blurb_content { display: flex; flex-direction: column; height: 100%; max-width: none; }
.ap-bold #et-boc .et-l .ap-card .et_pb_main_blurb_image { margin: 0; line-height: 0; }
.ap-bold #et-boc .et-l .ap-card .et_pb_main_blurb_image img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 0; }
.ap-bold #et-boc .et-l .ap-card .et_pb_blurb_container { padding: 0.9rem 1rem 1rem; display: grid; gap: 0.2rem; text-align: left; }
.ap-bold #et-boc .et-l .ap-card h3.et_pb_module_header, .ap-bold #et-boc .et-l .ap-card h4.et_pb_module_header { font-family: var(--ap-display); font-size: 1.05rem; padding: 0; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-card .et_pb_blurb_description { color: var(--ap-muted); font-size: 0.9rem; }
.ap-bold #et-boc .et-l .ap-paper .ap-card, .ap-bold #et-boc .et-l .ap-card--paper { background: #fff; border-color: rgba(20,22,26,0.1); }
.ap-bold #et-boc .et-l .ap-paper .ap-card h3.et_pb_module_header, .ap-bold #et-boc .et-l .ap-card--paper h3.et_pb_module_header { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-card .et_pb_blurb_description, .ap-bold #et-boc .et-l .ap-card--paper .et_pb_blurb_description { color: var(--ap-on-paper-muted); }
.ap-bold #et-boc .et-l .ap-card--text .et_pb_blurb_container { padding: 1.4rem 1.4rem 1.5rem; gap: 0.5rem; }
.ap-bold #et-boc .et-l .ap-reveal { opacity: 0; transform: translateY(24px); }
.ap-bold #et-boc .et-l .ap-reveal.is-in, .no-motion .ap-reveal { opacity: 1; transform: none; transition: opacity 0.7s var(--ap-ease), transform 0.7s var(--ap-ease); }

/* Compact linked service grid (shared block on inner pages): 4 / 3 / 2 columns, equal-height cards, dot on the first line, arrow affordance */
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; align-items: stretch; }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner li { padding: 0; display: flex; }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a { position: relative; display: flex; align-items: flex-start; gap: 0.7rem; width: 100%; min-height: 60px; padding: 0.9rem 2.6rem 0.9rem 1rem; border-radius: 14px; background: var(--ap-ink-2); border: 1px solid var(--ap-line); text-decoration: none; font-weight: 600; font-size: 0.98rem; line-height: 1.3; color: var(--ap-text); transition: background 0.2s, border-color 0.2s, transform 0.2s; }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a::before { content: ""; width: 10px; height: 10px; border-radius: 3px; background: var(--ap-red); flex: none; margin-top: 0.42em; }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner li:nth-child(3n+2) a::before { background: var(--ap-green); } .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner li:nth-child(3n) a::before { background: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a::after { content: ""; position: absolute; right: 1rem; top: 50%; width: 9px; height: 9px; border-right: 2px solid currentColor; border-top: 2px solid currentColor; transform: translateY(-50%) rotate(45deg); opacity: 0.6; transition: transform 0.2s, opacity 0.2s; }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a:hover { background: var(--ap-ink-3); border-color: rgba(255,255,255,0.3); }
.ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a:hover::after { transform: translate(3px, -50%) rotate(45deg); opacity: 1; }
.ap-bold #et-boc .et-l .ap-paper .ap-svc-grid .et_pb_text_inner a { background: #fff; border-color: rgba(20,22,26,0.1); color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-svc-grid .et_pb_text_inner a:hover { background: var(--ap-paper-2); border-color: rgba(20,22,26,0.25); }
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner ul { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1280px) { .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner ul { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.85rem; } }
/* Chip lists (areas) */
.ap-bold #et-boc .et-l .ap-chips-list .et_pb_text_inner ul { display: flex; flex-wrap: wrap; gap: 0.6rem; list-style: none; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-chips-list .et_pb_text_inner li { padding: 0; }
.ap-bold #et-boc .et-l .ap-chips-list .et_pb_text_inner a { display: inline-flex; align-items: center; min-height: 42px; padding: 0.45rem 0.95rem; border-radius: 999px; background: var(--ap-ink-3); text-decoration: none; font-weight: 600; font-size: 0.93rem; border: 1px solid var(--ap-line); color: var(--ap-text); transition: background 0.2s, border-color 0.2s; }
.ap-bold #et-boc .et-l .ap-chips-list .et_pb_text_inner a:hover, .ap-bold #et-boc .et-l .ap-chips-list .et_pb_text_inner a[aria-current] { background: #2a2e37; border-color: rgba(255,255,255,0.3); }
.ap-bold #et-boc .et-l .ap-paper .ap-chips-list .et_pb_text_inner a { background: #fff; border-color: rgba(20,22,26,0.12); color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-chips-list .et_pb_text_inner a:hover { background: var(--ap-paper-2); }

/* ---------- Reviews: the site's Trustindex widget, styled for the dark band ---------- */
.ap-reviews { position: relative; }
.ap-bold .ap-reviews-fallback { color: var(--ap-soft); font-size: 1.0625rem; margin: 0; }
.ap-bold .ap-reviews-fallback a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-rv { display: grid; gap: 1rem; }
.ap-rv-head { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 0.9rem; padding: 0.9rem 1.2rem; border: 1px solid var(--ap-line); border-radius: 14px; background: var(--ap-ink-2); color: var(--ap-soft); font-size: 0.95rem; }
.ap-rv-head strong { font-family: var(--ap-display); font-size: 1.5rem; color: var(--ap-text); line-height: 1; }
.ap-rv-head a { margin-left: auto; color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; transition: color 0.2s; }
.ap-rv-head a:hover, .ap-bold #et-boc .et-l .ap-rv-head a:hover { color: var(--ap-blue); text-decoration-thickness: 2px; }
.ap-rv-stars { display: inline-flex; gap: 2px; }
.ap-rv-stars svg { width: 18px; height: 18px; fill: #fbbc04; }
.ap-rv-stars svg.is-off { fill: #c9c5bb; }
.ap-rv-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; }
.ap-bold #et-boc .et-l ul.ap-rv-grid { padding: 0; } /* Divi pads lists in modules */
.ap-rv-card { display: flex; flex-direction: column; gap: 0.7rem; padding: 1.25rem 1.3rem 1.35rem; border-radius: 16px; background: var(--ap-paper); color: var(--ap-on-paper); min-width: 0; }
.ap-rv-who { display: flex; align-items: center; gap: 0.75rem; }
.ap-rv-who > div { min-width: 0; flex: 1; display: grid; }
.ap-rv-who strong { font-size: 0.98rem; font-weight: 700; color: var(--ap-on-paper); overflow-wrap: anywhere; line-height: 1.25; }
.ap-rv-who time { font-size: 0.82rem; color: var(--ap-on-paper-soft); }
.ap-rv-avatar { position: relative; width: 44px; height: 44px; border-radius: 50%; overflow: hidden; background: #0864d0; flex: none; display: grid; place-items: center; }
.ap-rv-avatar b { color: #fff; font-family: var(--ap-display); font-weight: 800; font-size: 0.95rem; }
.ap-rv-avatar img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ap-rv-g { flex: none; }
.ap-rv-src { flex: none; font-size: 0.75rem; font-weight: 700; color: var(--ap-on-paper-soft); }
.ap-rv-card p { margin: 0; font-size: 0.95rem; line-height: 1.55; color: var(--ap-on-paper); display: -webkit-box; -webkit-line-clamp: 6; -webkit-box-orient: vertical; overflow: hidden; }
.ap-bold .ap-rv-card p.ap-rv-only { font-style: italic; color: var(--ap-on-paper-soft); }
@media (max-width: 1279px) { .ap-rv-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .ap-rv-card:nth-child(n+7) { display: none; } }
@media (max-width: 1023px) { .ap-rv-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ap-rv-grid { grid-template-columns: 1fr; } .ap-rv-card:nth-child(n+5) { display: none; } .ap-rv-head a { margin-left: 0; } }
.ap-reviews-kicker { font-family: var(--ap-body); font-weight: 700; font-size: 0.8rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ap-muted); margin: 0; }
.ap-bold #et-boc .et-l .ap-empty h3 { font-size: var(--ap-h3); padding: 0; }
.ap-empty p:not(.ap-reviews-kicker):not(.ap-reviews-actions) { color: var(--ap-soft); font-size: 1.0625rem; line-height: 1.55; margin: 0; }
.ap-reviews-actions { display: flex; flex-wrap: wrap; gap: 0.8rem; margin: 0.4rem 0 0; }

/* ---------- FAQ (Divi Accordion) with a sticky heading column on desktop ---------- */
.ap-bold #et-boc .et-l .ap-faq-row { align-items: flex-start; }
.ap-bold #et-boc .et-l .ap-faq.et_pb_accordion { display: grid; gap: 0.6rem; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle { border: 1px solid var(--ap-line); border-radius: 14px; background: var(--ap-ink); overflow: hidden; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle { transition: background-color 0.25s, border-color 0.25s; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle:hover, .ap-bold #et-boc .et-l .ap-faq .et_pb_toggle:focus-within { background: var(--ap-ink-3); border-color: rgba(255,255,255,0.22); }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle.et_pb_toggle_open { background: var(--ap-ink); }
.ap-bold #et-boc .et-l .ap-faq h3.et_pb_toggle_title, .ap-bold #et-boc .et-l .ap-faq h5.et_pb_toggle_title { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.05rem 1.3rem; font-family: var(--ap-display); font-weight: 700; font-size: 1.1rem; letter-spacing: -0.01em; color: var(--ap-text); cursor: pointer; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_title::before { content: ""; position: static; order: 2; flex: none; width: 28px; height: 28px; border-radius: 50%; border: 2px solid var(--ap-line); background: center / 14px no-repeat url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4f1ea' stroke-width='3' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>"); transition: transform 0.3s var(--ap-ease), background-color 0.3s; font-size: 0; margin: 0; right: auto; top: auto; display: block; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_open .et_pb_toggle_title::before { transform: rotate(45deg); background-color: var(--ap-red); border-color: var(--ap-red); }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_content { padding: 0 1.3rem 1.2rem; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_content a { color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-paper .ap-faq .et_pb_toggle { background: #fff; border-color: rgba(20,22,26,0.1); }
.ap-bold #et-boc .et-l .ap-paper .ap-faq .et_pb_toggle_title { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-faq .et_pb_toggle_title::before { border-color: rgba(20,22,26,0.2); background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2314161a' stroke-width='3' stroke-linecap='round'><path d='M12 5v14M5 12h14'/></svg>"); }
.ap-bold #et-boc .et-l .ap-paper .ap-faq .et_pb_toggle_content { color: var(--ap-on-paper-soft); }
@media (min-width: 1025px) { .ap-bold #et-boc .et-l .ap-sticky-col { position: sticky; top: calc(var(--ap-header-h) + 1.5rem); align-self: flex-start; } }

/* ---------- Final CTA panel: message left, actions and contact list right ---------- */
.ap-bold #et-boc .et-l .ap-cta-panel { position: relative; overflow: hidden; border-radius: 28px; background: var(--ap-ink-2); border: 1px solid var(--ap-line); isolation: isolate; align-items: center; }
.ap-bold #et-boc .et-l .ap-cta-panel > .et_pb_column { position: relative; z-index: 2; }
.ap-bold #et-boc .et-l .ap-cta-panel .et_pb_code { position: absolute; inset: 0; margin: 0; z-index: 0; pointer-events: none; width: auto; }
.ap-bold #et-boc .et-l .ap-cta-panel .et_pb_code .et_pb_code_inner { position: static; }
.ap-bold #et-boc .et-l .ap-cta-panel .ap-sweeps { position: absolute; inset: 0; z-index: 0; margin: 0; pointer-events: none; overflow: hidden; }
.ap-cta-sweep { position: absolute; z-index: 0; height: 26%; width: 120%; left: -10%; border-radius: 999px; opacity: 0.75; transform: translateX(-110%) rotate(-6deg); filter: blur(2px); transition: transform 1.1s var(--ap-ease); }
.ap-cta-sweep.s1 { top: -8%; background: var(--ap-red); }
.ap-cta-sweep.s2 { top: 38%; background: var(--ap-green); transform: translateX(110%) rotate(-6deg); }
.ap-cta-sweep.s3 { bottom: -10%; background: var(--ap-blue); }
.ap-cta-scrim { position: absolute; inset: 0; z-index: 1; background: linear-gradient(90deg, rgba(22,24,29,0.96) 0%, rgba(22,24,29,0.9) 50%, rgba(22,24,29,0.62) 100%); }
.ap-cta-panel.is-in .ap-cta-sweep, .no-motion .ap-cta-sweep { transform: translateX(0) rotate(-6deg); }
.ap-cta-panel.is-in .ap-cta-sweep.s2 { transition-delay: 0.15s; } .ap-cta-panel.is-in .ap-cta-sweep.s3 { transition-delay: 0.3s; }
.ap-bold #et-boc .et-l .ap-cta-panel h2 { max-width: 20ch; }
.ap-bold #et-boc .et-l .ap-cta-panel .ap-lead .et_pb_text_inner { max-width: 52ch; text-wrap: pretty; }
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-cta-panel > .et_pb_column:last-child .ap-cta-pair { justify-content: flex-end; } .ap-bold #et-boc .et-l .ap-cta-panel > .et_pb_column:last-child::before { content: ""; position: absolute; left: -20px; top: 0; bottom: 0; width: 1px; background: var(--ap-line); } }
@media (max-width: 899px) { .ap-bold #et-boc .et-l .ap-cta-panel > .et_pb_column:last-child { align-items: flex-start; } }

/* ---------- Footer (Flat Roofs Toronto structure, B look) ---------- */
.ap-bold #et-boc .et-l .ap-footer { position: relative; background: var(--ap-ink-2); color: var(--ap-muted); font-size: 0.95rem; }
.ap-bold #et-boc .et-l .ap-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 5px; background: linear-gradient(90deg, var(--ap-red) 0 33.4%, var(--ap-green) 33.4% 66.7%, var(--ap-blue) 66.7%); }
.ap-bold #et-boc .et-l .ap-footer .et_pb_text_inner { color: var(--ap-muted); }
.ap-bold #et-boc .et-l .ap-footer .et_pb_module { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-footer .ap-brand-name .et_pb_text_inner p a { color: var(--ap-text); text-decoration: none; font-size: 1.35rem; }
.ap-bold #et-boc .et-l .ap-footer .ap-brand-logo img { width: 52px; height: auto; }
.ap-bold #et-boc .et-l .ap-footer .ap-brand .et_pb_module { margin: 0; }
.ap-bold #et-boc .et-l .ap-footer h4 { font-family: var(--ap-body); font-size: 0.78rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ap-text); padding: 0 0 0.9rem; font-weight: 700; display: flex; align-items: center; gap: 0.55rem; }
.ap-bold #et-boc .et-l .ap-footer h4::before { content: ""; width: 18px; height: 8px; border-radius: 2px 5px 5px 2px; background: var(--ap-red); flex: none; }
.ap-bold #et-boc .et-l .ap-foot-cols > .et_pb_column:nth-child(3) h4::before { background: var(--ap-green); }
.ap-bold #et-boc .et-l .ap-foot-cols > .et_pb_column:nth-child(4) h4::before { background: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-footer h4.ap-foot-h2 { padding-top: 1.6rem; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner p { padding: 0; line-height: 1.8; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul { list-style: none; margin: 0; padding: 0; line-height: 1.8; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul li { padding: 0; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul li a { color: var(--ap-soft); text-decoration: none; transition: color 0.2s; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul li a:hover { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner p a { color: var(--ap-soft); text-decoration: none; transition: color 0.2s; }
.ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner p a:hover { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-foot-contact .ap-foot-phone { font-family: var(--ap-display); font-weight: 800; font-size: 1.55rem; color: var(--ap-text); letter-spacing: -0.01em; line-height: 1.4; }
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow { display: flex !important; flex-direction: row !important; flex-wrap: wrap; gap: 8px; margin: 4px 0 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li { display: inline-flex !important; width: auto; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon { background: var(--ap-ink-3) !important; border: 1px solid var(--ap-line); border-radius: 50%; width: 40px !important; height: 40px !important; margin: 0; display: grid !important; place-items: center; font-size: 18px !important; transition: background-color 0.2s, border-color 0.2s; }
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon::before { color: var(--ap-text); font-size: 18px !important; line-height: 1; width: auto; height: auto; }
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon:hover { background: var(--ap-blue) !important; border-color: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-foot-regions-row { border-top: 1px solid var(--ap-line); border-bottom: 1px solid var(--ap-line); }
.ap-bold #et-boc .et-l .ap-foot-regions { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0.6rem 0; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-foot-regions a { position: relative; display: inline-flex; align-items: center; min-height: 44px; padding: 0 clamp(1rem, 2.6vw, 2.6rem); font-family: var(--ap-body); font-weight: 700; font-size: 0.82rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ap-text); text-decoration: none; white-space: nowrap; transition: color 0.2s; }
.ap-bold #et-boc .et-l .ap-foot-regions a + a::before { content: ""; position: absolute; left: 0; top: 50%; width: 5px; height: 5px; margin-top: -2.5px; border-radius: 50%; background: var(--ap-line); }
.ap-bold #et-boc .et-l .ap-foot-regions a:hover { color: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-foot-line-row { border-bottom: 1px solid var(--ap-line); }
.ap-bold #et-boc .et-l .ap-foot-line { padding: 0; font-size: 0.98rem; line-height: 1.7; color: var(--ap-soft); text-align: center; }
.ap-bold #et-boc .et-l .ap-foot-line strong { color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-foot-line a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-red); text-underline-offset: 3px; font-weight: 600; }
.ap-bold #et-boc .et-l .ap-foot-line a:hover { text-decoration-color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-foot-bottom { align-items: center; }
.ap-bold #et-boc .et-l .ap-foot-bottom .et_pb_text_inner p { padding: 0; }
.ap-bold #et-boc .et-l .ap-foot-legal { text-align: right; }
.ap-bold #et-boc .et-l .ap-foot-legal a { color: var(--ap-soft); text-decoration: none; display: inline-block; padding: 0.4rem 0; }
.ap-bold #et-boc .et-l .ap-foot-legal a:hover { color: var(--ap-text); text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 640px) { .ap-bold #et-boc .et-l .ap-foot-regions-row { margin-top: 8px !important; } .ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul { display: grid; grid-template-columns: 1fr 1fr; gap: 0 1rem; line-height: 1.5; } .ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul li a { padding: 0.4rem 0; font-size: 0.92rem; } .ap-bold #et-boc .et-l .ap-foot-regions a + a::before { display: none; } .ap-bold #et-boc .et-l .ap-foot-regions { gap: 0.2rem 0.4rem; } .ap-bold #et-boc .et-l .ap-foot-regions a { min-height: 40px; padding: 0 0.7rem; } }
@media (max-width: 980px) {
  .ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner p { line-height: 1.6; }
  .ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner p a, .ap-bold #et-boc .et-l .ap-foot-list .et_pb_text_inner ul li a { display: inline-block; padding: 0.45rem 0; }
  .ap-bold #et-boc .et-l .ap-foot-contact .et_pb_text_inner p a { padding: 0.45rem 0; }
  .ap-bold #et-boc .et-l .ap-foot-line a, .ap-bold #et-boc .et-l .ap-foot-legal a { display: inline-block; padding: 0.6rem 0; }
  .ap-bold #et-boc .et-l .ap-foot-regions a { padding: 0 0.9rem; font-size: 0.78rem; }
  .ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon { width: 44px !important; height: 44px !important; }
}
@media (min-width: 981px) and (max-width: 1439px) {
  .ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow { gap: 6px; }
  .ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon { width: 36px !important; height: 36px !important; font-size: 15px !important; }
}
@media (min-width: 981px) and (max-width: 1100px) {
  .ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow { gap: 4px; }
  .ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon { width: 30px !important; height: 30px !important; font-size: 13px !important; }
  .ap-bold #et-boc .et-l .ap-foot-legal { text-align: left; }
}

/* ---------- Blog cards (Divi Blog module) ---------- */
.ap-bold #et-boc .et-l .ap-blog .et_pb_ajax_pagination_container { display: block; width: 100%; }
.ap-bold #et-boc .et-l .ap-blog .et_pb_blog_posts { display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 1rem; align-items: stretch; width: 100%; }
.ap-bold #et-boc .et-l .ap-blog article.et_pb_post { display: flex !important; width: auto !important; max-width: none; flex-direction: column; height: 100%; margin: 0; padding: 0; background: var(--ap-ink-2); border: 1px solid var(--ap-line); border-radius: var(--ap-radius); overflow: hidden; }
.ap-bold #et-boc .et-l .ap-blog .et_pb_image_container { margin: 0; }
.ap-bold #et-boc .et-l .ap-blog .entry-featured-image-url { margin: 0; display: block; aspect-ratio: 16 / 10; overflow: hidden; }
.ap-bold #et-boc .et-l .ap-blog .entry-featured-image-url img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ap-bold #et-boc .et-l .ap-blog .et_overlay { display: none; }
.ap-bold #et-boc .et-l .ap-blog .et_pb_post > *:not(.et_pb_image_container) { padding-left: 1.1rem; padding-right: 1.1rem; }
.ap-bold #et-boc .et-l .ap-blog .entry-title { font-family: var(--ap-display); font-size: 1.15rem; padding: 1rem 1.1rem 0.4rem; line-height: 1.2; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ap-bold #et-boc .et-l .ap-blog .entry-title a { color: var(--ap-text); text-decoration: none; }
.ap-bold #et-boc .et-l .ap-blog .post-meta { color: var(--ap-muted); font-size: 0.85rem; padding-bottom: 0.4rem; }
.ap-bold #et-boc .et-l .ap-blog .post-meta a { color: var(--ap-muted); }
.ap-bold #et-boc .et-l .ap-blog .post-content, .ap-bold #et-boc .et-l .ap-blog .post-content-inner { color: var(--ap-muted); font-size: 0.95rem; }
.ap-bold #et-boc .et-l .ap-blog .post-content-inner { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.ap-bold #et-boc .et-l .ap-blog .post-content { padding-bottom: 1.1rem; margin-top: auto; }
.ap-bold #et-boc .et-l .ap-blog .more-link { display: inline-block; margin-top: 0.6rem; font-weight: 700; color: var(--ap-text); border-bottom: 2px solid var(--ap-blue); text-decoration: none; text-transform: capitalize; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination, .ap-bold #et-boc .et-l .ap-blog .wp-pagenavi { grid-column: 1 / -1; display: flex; justify-content: space-between; color: var(--ap-muted); padding-top: 1rem; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination a { color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-paper .ap-blog article.et_pb_post { background: #fff; border-color: rgba(20,22,26,0.1); }
.ap-bold #et-boc .et-l .ap-paper .ap-blog .entry-title a { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-paper .ap-blog .post-content-inner, .ap-bold #et-boc .et-l .ap-paper .ap-blog .post-meta, .ap-bold #et-boc .et-l .ap-paper .ap-blog .post-meta a { color: var(--ap-on-paper-muted); }
.ap-bold #et-boc .et-l .ap-paper .ap-blog .more-link { color: var(--ap-on-paper); }
@media (max-width: 980px) { .ap-bold #et-boc .et-l .ap-blog .et_pb_blog_posts { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px) { .ap-bold #et-boc .et-l .ap-blog .et_pb_blog_posts { grid-template-columns: 1fr; } }

/* ---------- Single post / project content ---------- */
.ap-bold #et-boc .et-l .ap-prose .et_pb_post_content, .ap-bold #et-boc .et-l .ap-prose .et_pb_text_inner, .ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content { font-size: 1.0625rem; line-height: 1.65; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-prose h2 { font-size: var(--ap-h2); padding: 1.2em 0 0.4em; }
.ap-bold #et-boc .et-l .ap-prose h3 { font-size: var(--ap-h3); padding: 1em 0 0.3em; }
.ap-bold #et-boc .et-l .ap-prose p, .ap-bold #et-boc .et-l .ap-prose ul, .ap-bold #et-boc .et-l .ap-prose ol { padding-bottom: 1em; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-prose a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-prose img { border-radius: var(--ap-radius); height: auto; }
.ap-bold #et-boc .et-l .ap-prose blockquote { border-left: 4px solid var(--ap-red); padding-left: 1rem; color: var(--ap-muted); }
.ap-bold #et-boc .et-l .ap-aside { background: var(--ap-ink-2); border: 1px solid var(--ap-line); border-radius: var(--ap-radius); padding: 1.5rem; }
.ap-bold #et-boc .et-l .ap-aside .et_pb_module { margin-bottom: 1rem; }
.ap-bold #et-boc .et-l .ap-aside .et_pb_module:last-child { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-aside ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.ap-bold #et-boc .et-l .ap-aside ul li { padding: 0; }
.ap-bold #et-boc .et-l .ap-aside ul a { color: var(--ap-text); text-decoration: none; border-bottom: 1px solid var(--ap-line); }

/* ---------- Contact form (Divi) ---------- */
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_form_container { max-width: none; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field { padding: 0 0 1rem; margin: 0; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_form { display: grid !important; grid-template-columns: 1fr 1fr; gap: 0 1rem; width: 100%; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field { grid-column: span 2; width: 100% !important; max-width: none; float: none; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field.et_flex_column_12_24 { grid-column: span 1; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_options_list { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_option { display: inline-flex; margin: 0; }
.ap-bold #et-boc .et-l .ap-form .et_contact_bottom_container { grid-column: span 2; float: none; display: flex; justify-content: flex-start; width: 100%; margin: 0; }
@media (max-width: 640px) { .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field.et_flex_column_12_24 { grid-column: span 2; } }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field input, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field textarea, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field select { width: 100%; background: var(--ap-ink-3); border: 2px solid rgba(255,255,255,0.12); border-radius: 12px; color: var(--ap-text); padding: 0.9rem 1rem; font: inherit; font-size: 1rem; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field input:focus, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field textarea:focus { border-color: var(--ap-blue); outline: none; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field ::placeholder { color: var(--ap-muted); opacity: 1; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_options_title, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field label { color: var(--ap-text); font-weight: 600; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio label { display: inline-flex; align-items: center; gap: 0.5rem; min-height: 44px; padding: 0.5rem 0.9rem; border-radius: 12px; border: 2px solid rgba(255,255,255,0.12); background: var(--ap-ink-3); color: var(--ap-text); cursor: pointer; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio label i { display: none; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio input:checked + label, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio label:has(input:checked) { background: var(--ap-paper); color: var(--ap-ink); border-color: var(--ap-paper); }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_submit.et_pb_button { background: var(--ap-paper) !important; color: var(--ap-ink) !important; border: 2px solid transparent; border-radius: 14px; padding: 0.85rem 1.4rem !important; font-family: var(--ap-body); font-weight: 700; font-size: 1rem; min-height: 52px; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_submit.et_pb_button:hover { background: var(--ap-red) !important; color: #fff !important; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_submit.et_pb_button::after { display: none; }
.ap-bold #et-boc .et-l .ap-form .et-pb-contact-message, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_form_container .et-pb-contact-message p { color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field.et_contact_error input, .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field.et_contact_error textarea { border-color: var(--ap-red); }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb { margin-bottom: 1rem; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb_content { max-width: none; }
.ap-bold #et-boc .et-l .ap-contact-facts h4.et_pb_module_header, .ap-bold #et-boc .et-l .ap-contact-facts h3.et_pb_module_header, .ap-bold #et-boc .et-l .ap-contact-facts h2.et_pb_module_header { font-family: var(--ap-body); font-size: 0.8rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ap-muted); padding-bottom: 0.3rem; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb_description { font-family: var(--ap-display); font-weight: 700; font-size: 1.2rem; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb_description a { text-decoration: none; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_main_blurb_image { display: none; }

/* ---------- Classic (non-builder) pages ---------- */
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .container { padding-top: calc(var(--ap-header-h) + 3rem); padding-bottom: 4rem; width: min(900px, 95%); }
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content h1 { font-size: var(--ap-h1); padding-bottom: 1rem; }
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content h2 { font-size: var(--ap-h2); padding: 1.2em 0 0.4em; }
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content p, .ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content li { color: var(--ap-soft); }
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .entry-content a { color: var(--ap-text); text-decoration-color: var(--ap-blue); }
.ap-bold:not(.et_pb_pagebuilder_layout) #main-content .et_pb_post .entry-title { font-size: var(--ap-h1); }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .ap-bold *, .ap-bold *::before, .ap-bold *::after { animation: none !important; transition-duration: 0.01ms !important; }
  .ap-bold .painted::before { transform: scaleX(1); }
  .ap-bold #et-boc .et-l .ap-steps::after { transform: none; }
  .ap-cta-sweep { transform: rotate(-6deg) !important; }
  .ap-bold #et-boc .et-l .ap-reveal { opacity: 1; transform: none; }
}
.no-motion .ap-bold #et-boc .et-l .ap-reveal, .ap-bold.no-motion #et-boc .et-l .ap-reveal { opacity: 1; transform: none; }

/* ---------- Hover feedback on remaining links and controls ---------- */
.ap-bold #et-boc .et-l .ap-svc .ap-svc-body .more:hover { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.ap-ba-tabs button { transition: border-color 0.2s, background-color 0.2s, transform 0.2s; }
.ap-ba-tabs button:hover { border-color: rgba(20,22,26,0.45); transform: translateY(-2px); }
.ap-bold .et_pb_section:not(.ap-paper) .ap-ba-tabs button:hover { border-color: rgba(255,255,255,0.5); }
.ap-vis-panel button:hover, .ap-vis-hit button:hover { filter: brightness(1.12); }
.ap-vis-panel button { transition: filter 0.2s, transform 0.2s; }
.ap-bold #et-boc .et-l .ap-lead a, .ap-bold #et-boc .et-l .ap-map-note a, .ap-bold #et-boc .et-l .ap-vis-note a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; transition: color 0.2s; }
.ap-bold #et-boc .et-l .ap-lead a:hover, .ap-bold #et-boc .et-l .ap-map-note a:hover, .ap-bold #et-boc .et-l .ap-vis-note a:hover { color: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-foot-line a { transition: color 0.2s, text-decoration-color 0.2s; }
.ap-bold #et-boc .et-l .ap-foot-line a:hover { color: var(--ap-blue); text-decoration-color: var(--ap-blue); }

/* ---------- Roll-out: inner pages built from the home components ---------- */
/* Page hero: the home hero (video, scrim, type scale, trust bar), shorter so the page content starts sooner */
.ap-bold #et-boc .et-l .ap-hero--page { min-height: max(560px, min(82svh, 720px)); }
.ap-bold #et-boc .et-l .ap-hero--page.ap-hero--nobar { min-height: max(480px, min(66svh, 600px)); }
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-hero--page { min-height: max(560px, 78svh); justify-content: center; }
  .ap-bold #et-boc .et-l .ap-hero--page.ap-hero--nobar { min-height: max(460px, 62svh); }
}
/* Equal-height card grid (one Divi Group per grid): n = 2, 3, 4, 5, 6, 8, 9 */
.ap-bold #et-boc .et-l .ap-cardgrid { display: grid !important; grid-template-columns: repeat(var(--cg, 3), minmax(0, 1fr)); gap: 16px; align-items: stretch; width: 100%; }
.ap-bold #et-boc .et-l .ap-cardgrid > .et_pb_module { margin: 0 !important; width: auto !important; max-width: none; height: 100%; }
.ap-bold #et-boc .et-l .ap-cg-2 { --cg: 2; } .ap-bold #et-boc .et-l .ap-cg-3, .ap-bold #et-boc .et-l .ap-cg-6, .ap-bold #et-boc .et-l .ap-cg-9 { --cg: 3; }
.ap-bold #et-boc .et-l .ap-cg-4, .ap-bold #et-boc .et-l .ap-cg-8 { --cg: 4; } .ap-bold #et-boc .et-l .ap-cg-5 { --cg: 5; }
@media (max-width: 1279px) {
  .ap-bold #et-boc .et-l .ap-cg-4, .ap-bold #et-boc .et-l .ap-cg-8 { --cg: 2; }
  .ap-bold #et-boc .et-l .ap-cg-5 { --cg: 6; }
  .ap-bold #et-boc .et-l .ap-cg-5 > .et_pb_module { grid-column: span 2; }
  .ap-bold #et-boc .et-l .ap-cg-5 > .et_pb_module:nth-child(n+4) { grid-column: span 3; }
}
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-cg-3, .ap-bold #et-boc .et-l .ap-cg-6, .ap-bold #et-boc .et-l .ap-cg-9 { --cg: 2; }
  .ap-bold #et-boc .et-l .ap-cg-3 > .et_pb_module:last-child, .ap-bold #et-boc .et-l .ap-cg-9 > .et_pb_module:last-child { grid-column: 1 / -1; }
}
@media (max-width: 640px) {
  .ap-bold #et-boc .et-l .ap-cardgrid { grid-template-columns: minmax(0, 1fr); }
  .ap-bold #et-boc .et-l .ap-cardgrid > .et_pb_module { grid-column: auto !important; }
}
/* Text cards: paint pill above the title, cycling red / green / blue like the eyebrows */
.ap-bold #et-boc .et-l .ap-card--text .et_pb_blurb_container::before { content: ""; display: block; width: 26px; height: 8px; border-radius: 2px 5px 5px 2px; background: var(--paint, var(--ap-red)); margin-bottom: 0.55rem; }
.ap-bold #et-boc .et-l .ap-cardgrid > .et_pb_module:nth-child(3n+2) { --paint: #1f9a33; }
.ap-bold #et-boc .et-l .ap-cardgrid > .et_pb_module:nth-child(3n) { --paint: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-card--text h3.et_pb_module_header { font-size: 1.15rem; line-height: 1.2; }
.ap-bold #et-boc .et-l .ap-card--text .et_pb_blurb_description { font-size: 0.97rem; line-height: 1.55; }
.ap-bold #et-boc .et-l .ap-card .et_pb_module_header a { color: inherit; text-decoration: none; }
.ap-bold #et-boc .et-l .ap-card .et_pb_module_header a:hover { text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-card .et_pb_blurb_description a { color: inherit; text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
/* Checklist inside a split's copy column */
.ap-bold #et-boc .et-l .ap-checklist .et_pb_text_inner ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; }
.ap-bold #et-boc .et-l .ap-checklist .et_pb_text_inner li { position: relative; padding: 0 0 0 2rem; line-height: 1.55; }
.ap-bold #et-boc .et-l .ap-checklist .et_pb_text_inner li::before { content: ""; position: absolute; left: 0; top: 0.2em; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: var(--ap-green) center / 0.75rem no-repeat url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e0f12' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12l5 5L20 7'/></svg>"); }
.ap-bold #et-boc .et-l .ap-checklist strong { color: var(--ap-text); font-weight: 700; }
.ap-bold #et-boc .et-l .ap-paper .ap-checklist strong { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-checklist a, .ap-bold #et-boc .et-l .ap-pair a { color: inherit; text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
/* Split copy: sub-headings and rhythm */
.ap-bold #et-boc .et-l .ap-split-copy h3 { padding-top: 0.4rem; }
.ap-bold #et-boc .et-l .ap-split-copy .et_pb_module, .ap-bold #et-boc .et-l .ap-pair .et_pb_module, .ap-bold #et-boc .et-l .ap-textcol .et_pb_module { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-pair .ap-body .et_pb_text_inner, .ap-bold #et-boc .et-l .ap-textcol .ap-body .et_pb_text_inner { max-width: 68ch; }
@media (max-width: 980px) { .ap-bold #et-boc .et-l .ap-pair { row-gap: 32px; } }
/* Before/after beside its message: equal-height columns, message vertically centred */
.ap-bold #et-boc .et-l .ap-ba-split { align-items: stretch; }
.ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-copy { justify-content: center; }
.ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-copy .et_pb_module { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-col { justify-content: center; }
/* Links on paper keep AA on hover (blue on paper is 3.7:1): ink text, thicker blue underline */
.ap-bold #et-boc .et-l .ap-paper .ap-lead a:hover, .ap-bold #et-boc .et-l .ap-paper .ap-body a:hover, .ap-bold #et-boc .et-l .ap-paper .ap-checklist a:hover, .ap-bold #et-boc .et-l .ap-paper .ap-pair a:hover, .ap-bold #et-boc .et-l .ap-paper .ap-card a:hover { color: var(--ap-on-paper); text-decoration-thickness: 2px; }
.ap-bold #et-boc .et-l .ap-body a:hover, .ap-bold #et-boc .et-l .ap-checklist a:hover, .ap-bold #et-boc .et-l .ap-pair a:hover { text-decoration-thickness: 2px; }
/* Contact form column intro */
.ap-bold #et-boc .et-l .ap-form-intro h2.ap-form-title { font-size: var(--ap-h3); line-height: 1.15; padding: 0 0 0.5rem; color: var(--ap-text); }
.ap-bold #et-boc .et-l .ap-form-intro p { color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_module { margin-bottom: 0; }
/* Single post / project: featured image above the content */
.ap-bold #et-boc .et-l .ap-featured img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: var(--ap-radius); display: block; }
.ap-bold #et-boc .et-l .ap-aside-links ul a:hover, .ap-bold #et-boc .et-l .ap-aside-contact a:hover { color: var(--ap-text); border-bottom-color: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-aside-contact a { text-decoration: none; }
/* Estimator page */
.ap-bold #et-boc .et-l .ap-est-row { align-items: flex-start; }
.ap-bold #et-boc .et-l .ap-est-row > .et_pb_column:first-child { background: #fff; border: 1px solid rgba(20,22,26,0.1); border-radius: var(--ap-radius); padding: clamp(1.25rem, 2.5vw, 2.25rem); }
/* Service grid: four columns from 900 px so 12 and 16 items fill complete rows */
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner ul { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 900px) and (max-width: 1279px) { .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a { font-size: 0.92rem; padding: 0.8rem 2.2rem 0.8rem 0.85rem; } }
/* Contact: social circles as in the footer; category radios as one row of chips */
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow { display: flex !important; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; width: auto !important; }
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow li { display: inline-flex !important; width: auto; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow li a.icon { background: var(--ap-ink-3) !important; border: 1px solid var(--ap-line); border-radius: 50%; width: 44px !important; height: 44px !important; margin: 0; display: grid !important; place-items: center; transition: background-color 0.2s, border-color 0.2s; }
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow li a.icon::before { color: var(--ap-text); font-size: 18px !important; line-height: 1; width: auto; height: auto; }
.ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow li a.icon:hover { background: var(--ap-blue) !important; border-color: var(--ap-blue); }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field[data-type="radio"], .ap-bold #et-boc .et-l .ap-form .et_pb_contact_field[data-type="select"] { grid-column: span 2; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_options_list { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio { display: inline-flex; width: auto; margin: 0; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio input:focus-visible + label { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_radio label:hover { border-color: rgba(255,255,255,0.35); }
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_field_options_title { display: none; }
/* CTA panel after a paper band: the drip needs room above the panel (after an ink band the band above supplies it) */
.ap-bold #et-boc .et-l .ap-cta-section.ap-cta-section--after-paper { padding-top: clamp(88px, 9vw, 128px) !important; }
/* Blog / archive cards: the classic-page title rule (H1 size) must not reach the Blog module's card titles */
.ap-bold #et-boc .et-l .ap-blog .entry-title, .ap-bold #et-boc .et-l .ap-blog .entry-title a { font-size: 1.15rem !important; line-height: 1.25 !important; letter-spacing: -0.01em; }
.ap-bold #et-boc .et-l .ap-blog .entry-title { padding-bottom: 0.4rem !important; }
@media (min-width: 981px) { .ap-bold #et-boc .et-l .ap-blog .et_pb_blog_posts { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
/* Stacked splits (tablet and phone): copy first, photo after, on every split */
@media (max-width: 980px) { .ap-bold #et-boc .et-l .ap-split--img-left > .ap-media-col { order: 2; } }
/* ---------- AA in every state (roll-out audit; also applies on the home page) ---------- */
/* Blue link text on ink/ink-2 is 4.2:1, so hover text on dark bands uses a lighter blue (6.8:1) */
:root { --ap-blue-on-ink: #5aa2ff; }
.ap-bold #et-boc .et-l .ap-lead a:hover, .ap-bold #et-boc .et-l .ap-map-note a:hover, .ap-bold #et-boc .et-l .ap-vis-note a:hover,
.ap-rv-head a:hover, .ap-bold #et-boc .et-l .ap-rv-head a:hover, .ap-bold #et-boc .et-l .ap-foot-regions a:hover, .ap-bold #et-boc .et-l .ap-foot-line a:hover { color: var(--ap-blue-on-ink); }
.ap-bold #et-boc .et-l .ap-paper .ap-lead a:hover { color: var(--ap-on-paper); }
/* Map city chips (dark theme): selected and hovered chips keep light text on a dark chip; the region colour moves to the border and dot (white on the green region colour was 1.9:1) */
body.ap-bold .ap-map-widget.ap-dark .ap-city:hover, body.ap-bold .ap-map-widget.ap-dark .ap-city.current { background: #2a2e37; color: #fff; border-color: var(--ink); }
body.ap-bold .ap-map-widget.ap-dark .ap-city:hover::before, body.ap-bold .ap-map-widget.ap-dark .ap-city.current::before { background: var(--ink); }
/* Social circles: hover fill in the darker brand blue so the white glyph keeps 5.6:1 */
.ap-bold #et-boc .et-l .ap-footer .et_pb_social_media_follow li a.icon:hover, .ap-bold #et-boc .et-l .ap-contact-row .et_pb_social_media_follow li a.icon:hover { background: #0864d0 !important; border-color: #0864d0; }
/* Blog cards: Divi's own grey excerpt colour (#666, 3.1:1) */
.ap-bold #et-boc .et-l .ap-blog .post-content-inner, .ap-bold #et-boc .et-l .ap-blog .post-content-inner p, .ap-bold #et-boc .et-l .ap-blog .post-content p { color: var(--ap-muted) !important; }
.ap-bold #et-boc .et-l .ap-paper .ap-blog .post-content-inner, .ap-bold #et-boc .et-l .ap-paper .ap-blog .post-content-inner p { color: var(--ap-on-paper-muted) !important; }
/* Service link grid on phones: one column, so long names sit on one or two lines instead of three */
@media (max-width: 480px) {
  .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner ul { grid-template-columns: minmax(0, 1fr); gap: 0.5rem; }
  .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a { min-height: 50px; padding: 0.8rem 2.4rem 0.8rem 0.9rem; align-items: center; }
  .ap-bold #et-boc .et-l .ap-svc-grid .et_pb_text_inner a::before { margin-top: 0; }
}

/* ================= Rollout fixes (2026-10-01, design review of the rollout) ================= */
/* M8: header CTA group ends on the content edge at every width (the group was left-packed inside its column) */
.ap-bold #et-boc .et-l .ap-header-row .et_pb_column:nth-child(3) > .et_pb_group { justify-content: flex-end; flex: 1 1 auto; min-width: 0; }
/* m1: swatch rows had Divi's list bullets */
.ap-bold #et-boc .et-l ul.ap-swatches, .ap-bold #et-boc .et-l ul.ap-swatches > li { list-style: none; }
.ap-bold #et-boc .et-l ul.ap-swatches { padding-left: 0; }
/* m2: a painted word that starts the H1 must not overhang the content edge */
.ap-bold #et-boc .et-l .ap-h1 h1 > .painted:first-child::before { left: -0.02em; }
.ap-bold #et-boc .et-l .ap-h1 h1 > .painted:first-child .t { padding-left: 0.06em; }
/* m3: trust bar lines up with the hero copy (Divi gave the bar column a 5% left margin) */
.ap-bold #et-boc .et-l .ap-hero-bar-row .et_pb_column { margin-left: auto !important; margin-right: auto !important; }
/* m9: phone trust bar, one column per item pair with no wrapped labels */
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { grid-template-columns: max-content max-content; justify-content: start; column-gap: 1.4rem; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li { white-space: nowrap; }
}
@media (max-width: 420px) {
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { grid-template-columns: 1fr 1fr; column-gap: 0.8rem; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li { white-space: normal; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li:nth-child(4) { grid-column: 1 / -1; }
}
/* m4: a section header without an intro sits closer to its content and its H2 may run wider */
.ap-bold #et-boc .et-l .ap-shead.ap-shead--nolead { margin-bottom: 8px !important; }
.ap-bold #et-boc .et-l .ap-shead.ap-shead--nolead .ap-shead-h2 h2 { max-width: 40ch; }
/* m5: area service cards are whole-card links with a hover state */
.ap-bold #et-boc .et-l .ap-card--link { position: relative; transition: transform 0.25s var(--ap-ease), border-color 0.25s, box-shadow 0.25s; }
.ap-bold #et-boc .et-l .ap-card--link .et_pb_module_header a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ap-bold #et-boc .et-l .ap-card--link .et_pb_main_blurb_image a { position: relative; z-index: 0; }
.ap-bold #et-boc .et-l .ap-card--link .et_pb_module_header a { text-decoration: underline; text-decoration-color: var(--ap-blue); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.ap-bold #et-boc .et-l .ap-card--link:focus-within { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
@media (hover: hover) {
  .ap-bold #et-boc .et-l .ap-card--link:hover { transform: translateY(-3px); border-color: rgba(255,255,255,0.28); box-shadow: 0 14px 30px rgba(0,0,0,0.28); }
  .ap-bold #et-boc .et-l .ap-paper .ap-card--link:hover, .ap-bold #et-boc .et-l .ap-card--link.ap-card--paper:hover { border-color: rgba(20,22,26,0.3); box-shadow: 0 14px 30px rgba(20,22,26,0.12); }
  .ap-bold #et-boc .et-l .ap-card--link:hover .et_pb_module_header a { text-decoration-color: var(--ap-red); }
}
/* m6: calculator stepper sized to its content, hover fill only on hover devices, sticky mini-total on phones */
.ap-est-form .ap-stepper { justify-self: start; width: auto; }
.ap-stepper button:hover { background: transparent; }
@media (hover: hover) { .ap-stepper button:hover { background: var(--ap-paper-2); } }
.ap-stepper button:active { background: var(--ap-paper-2); }
.ap-est-sticky { display: none; }
@media (max-width: 899px) {
  .ap-est-sticky { display: flex; position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 9980; align-items: center; justify-content: space-between; gap: 0.8rem; padding: 0.75rem 1rem; border-radius: 14px; background: var(--ap-ink); color: var(--ap-text); box-shadow: 0 10px 30px rgba(0,0,0,0.35); border: 1px solid rgba(255,255,255,0.14); transform: translateY(140%); transition: transform 0.3s var(--ap-ease); font-size: 0.9rem; }
  .ap-est-sticky.is-on { transform: none; }
  .ap-est-sticky b { font-family: var(--ap-display); font-weight: 800; font-size: 1.15rem; white-space: nowrap; }
  .ap-est-sticky a { color: var(--ap-text); font-weight: 700; text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; white-space: nowrap; }
}
/* m7: contact form submit on the field edge; the map link in the facts looks like a link */
.ap-bold #et-boc .et-l .ap-form .et_pb_contact_submit.et_pb_button { margin-left: 0 !important; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb_description a { text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb_description a:hover { color: var(--ap-blue-on-ink, #5aa2ff); }
/* m10: the tablet/phone drawer locks the page scroll (one scrollbar, the drawer's own) */
html:has(body.ap-menu-open) { overflow: hidden; scrollbar-gutter: stable; }
body.ap-menu-open { overflow: hidden; }
/* M4: search results: pages carry no date, pagination is a button pair in the site style */
.ap-bold #et-boc .et-l .ap-blog article.type-page .post-meta { display: none; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination { gap: 1rem; padding-top: 1.5rem; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination .alignleft, .ap-bold #et-boc .et-l .et_pb_blog .pagination .alignright { float: none; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination a { display: inline-flex; align-items: center; min-height: 48px; padding: 0.7rem 1.3rem; border-radius: 14px; border: 2px solid rgba(255,255,255,0.35); color: var(--ap-text); font-weight: 700; text-decoration: none; transition: background 0.2s, color 0.2s, border-color 0.2s; }
@media (hover: hover) { .ap-bold #et-boc .et-l .et_pb_blog .pagination a:hover { background: var(--ap-paper); color: var(--ap-ink); border-color: var(--ap-paper); } }
/* Post meta line on single posts/projects */
.ap-bold #et-boc .et-l .ap-post-meta a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-underline-offset: 3px; }
.ap-bold #et-boc .et-l .ap-post-meta a:hover { color: var(--ap-blue-on-ink, #5aa2ff); }
/* M6: Reviews page wall (full reviews, masonry columns, show more) */
.ap-reviews--wall .ap-rv-grid.ap-rv-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; }
.ap-reviews--wall .ap-rv-wall .ap-rv-card { display: flex !important; }
@media (max-width: 1023px) { .ap-reviews--wall .ap-rv-grid.ap-rv-wall { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ap-reviews--wall .ap-rv-grid.ap-rv-wall { grid-template-columns: 1fr; } }
.ap-reviews--wall .ap-rv-wall .ap-rv-card[hidden] { display: none !important; }
.ap-reviews--wall .ap-rv-wall .ap-rv-card p { display: block; -webkit-line-clamp: unset; overflow: visible; }
.ap-rv-more-wrap { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 1.2rem; margin: 0.5rem 0 0; }
.ap-bold .ap-rv-more { appearance: none; min-height: 48px; padding: 0.7rem 1.3rem; border-radius: 14px; border: 2px solid rgba(255,255,255,0.35); background: transparent; color: var(--ap-text); font: inherit; font-weight: 700; cursor: pointer; transition: background 0.2s, color 0.2s, border-color 0.2s; }
@media (hover: hover) { .ap-bold .ap-rv-more:hover { background: var(--ap-paper); color: var(--ap-ink); border-color: var(--ap-paper); } }
.ap-bold .ap-rv-more:focus-visible { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
.ap-rv-shown { color: var(--ap-muted); font-size: 0.92rem; }
/* M6: Projects page rows (example pair + scope) */
.ap-bold #et-boc .et-l .ap-projects .ap-project + .ap-project { margin-top: clamp(48px, 5vw, 80px) !important; }
.ap-bold #et-boc .et-l .ap-project .ap-more-link a, .ap-bold #et-boc .et-l .ap-ba-split .ap-more-link a { color: var(--ap-text); text-decoration: underline; text-decoration-color: var(--ap-blue); text-decoration-thickness: 2px; text-underline-offset: 4px; }
.ap-bold #et-boc .et-l .ap-paper .ap-project .ap-more-link a, .ap-bold #et-boc .et-l .ap-paper .ap-ba-split .ap-more-link a { color: var(--ap-on-paper); }
.ap-bold #et-boc .et-l .ap-project .ap-more-link a:hover, .ap-bold #et-boc .et-l .ap-ba-split .ap-more-link a:hover { color: var(--ap-blue-on-ink, #5aa2ff); }
.ap-bold #et-boc .et-l .ap-paper .ap-project .ap-more-link a:hover, .ap-bold #et-boc .et-l .ap-paper .ap-ba-split .ap-more-link a:hover { color: var(--ap-on-paper); text-decoration-color: var(--ap-red); }
.ap-bold #et-boc .et-l .ap-paper .ap-checklist .et_pb_text_inner li { color: var(--ap-on-paper); }
/* Full-height heroes on every page (home, area pages with the video; every other page with a still photo) */
.ap-bold #et-boc .et-l .ap-hero, .ap-bold #et-boc .et-l .ap-hero--page, .ap-bold #et-boc .et-l .ap-hero--page.ap-hero--nobar { min-height: max(560px, 100vh); min-height: max(560px, 100svh); justify-content: center; }
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-hero, .ap-bold #et-boc .et-l .ap-hero--page, .ap-bold #et-boc .et-l .ap-hero--page.ap-hero--nobar { min-height: max(520px, 100vh); min-height: max(520px, 100svh); justify-content: center; }
}
@media (max-height: 500px) and (orientation: landscape) {
  .ap-bold #et-boc .et-l .ap-hero, .ap-bold #et-boc .et-l .ap-hero--page, .ap-bold #et-boc .et-l .ap-hero--page.ap-hero--nobar { min-height: 100vh; min-height: 100svh; }
}
.ap-hero-stage--img .ap-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: var(--hero-pos, 50% 50%); display: block; }
@media (max-width: 699px) { .ap-hero-stage--img .ap-hero-img { object-position: var(--hero-pos-m, var(--hero-pos, 50% 50%)); } }
/* Legal pages: one readable column */
.ap-bold #et-boc .et-l .ap-legal h2 { font-size: clamp(1.4rem, 1vw + 1rem, 1.75rem); padding: 1.4em 0 0.4em; }
.ap-bold #et-boc .et-l .ap-legal h3 { font-size: 1.15rem; padding: 0.8em 0 0.3em; }
.ap-bold #et-boc .et-l .ap-legal ul { list-style: disc; padding-left: 1.3em; }
.ap-bold #et-boc .et-l .ap-legal li { padding: 0 0 0.35em; }
.ap-bold #et-boc .et-l .ap-legal .ap-legal-date { color: var(--ap-muted); font-size: 0.95rem; }
.ap-bold #et-boc .et-l .ap-legal a:hover { color: var(--ap-blue-on-ink, #5aa2ff); }
/* Footer bottom bar: copyright + legal links (Privacy Policy, Terms of Service, AI Citation & Learning) */
.ap-bold #et-boc .et-l .ap-foot-bottom .ap-foot-legal { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.4rem 1.5rem; }
.ap-bold #et-boc .et-l .ap-foot-legal-links { display: flex; flex-wrap: wrap; gap: 0.25rem 1.4rem; }
.ap-bold #et-boc .et-l .ap-foot-legal-links a { display: inline-flex; align-items: center; min-height: 28px; color: var(--ap-soft); text-decoration: underline; text-decoration-color: rgba(255,255,255,0.3); text-underline-offset: 3px; transition: color 0.2s, text-decoration-color 0.2s; }
.ap-bold #et-boc .et-l .ap-foot-legal-links a:hover, .ap-bold #et-boc .et-l .ap-foot-legal-links a:focus-visible { color: var(--ap-blue-on-ink, #5aa2ff); text-decoration-color: currentColor; }
@media (max-width: 640px) { .ap-bold #et-boc .et-l .ap-foot-bottom .ap-foot-legal { flex-direction: column; align-items: flex-start; } .ap-bold #et-boc .et-l .ap-foot-legal-links { gap: 0.2rem 1.1rem; } .ap-bold #et-boc .et-l .ap-foot-legal-links a { min-height: 32px; } }
/* Area pages show four reviews: 4 across, then 2 x 2, then one column (never a lone card) */
@media (max-width: 1279px) { .ap-rv-grid.ap-rv-n4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .ap-rv-grid.ap-rv-n4 { grid-template-columns: 1fr; } }
/* Area pages: the other-services grid sits clear of the services explorer */
.ap-bold #et-boc .et-l #services .ap-svc-grid { margin-top: 48px; }
@media (max-width: 420px) { .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li:nth-child(4) { grid-column: auto; } }
/* Legal pages: items the owner must confirm are clearly marked */
.ap-bold #et-boc .et-l .ap-legal .ap-legal-todo { background: rgba(251,188,4,0.16); color: #ffd978; border: 1px dashed rgba(251,188,4,0.6); border-radius: 6px; padding: 0 0.3em; }

/* ================= Rollout fixes, round 2 (2026-10-01, second review) ================= */
/* M1: headings fill their column before wrapping (no early wrap beside empty space); pretty avoids orphans */
.ap-bold #et-boc .et-l .ap-h2 h2, .ap-bold #et-boc .et-l .ap-h2 h1, .ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2, .ap-bold #et-boc .et-l .ap-cta-panel h2 { text-wrap: pretty; max-width: none; }
.ap-bold #et-boc .et-l .ap-shead.ap-shead--nolead .ap-shead-h2 h2 { max-width: none; }
.ap-bold #et-boc .et-l .ap-cta-panel h2 { font-size: clamp(1.9rem, 1.6vw + 1.2rem, 2.9rem); }
/* M2: area services explorer: the other services sit under the tabs, beside the card */
@media (min-width: 900px) {
  .ap-bold #et-boc .et-l .ap-svc-area { display: grid !important; grid-template-columns: 5fr 7fr; column-gap: 1.5rem; align-items: start; }
  .ap-bold #et-boc .et-l .ap-svc-area > .ap-svc.et_pb_tabs { display: contents !important; }
  .ap-bold #et-boc .et-l .ap-svc-area ul.et_pb_tabs_controls { grid-column: 1; grid-row: 1; }
  .ap-bold #et-boc .et-l .ap-svc-area .et_pb_all_tabs { grid-column: 2; grid-row: 1 / span 2; position: relative; top: 0; }
  .ap-bold #et-boc .et-l .ap-svc-area > .ap-svc-more { grid-column: 1; grid-row: 2; margin: 1.6rem 0 0 !important; }
  .ap-bold #et-boc .et-l .ap-svc-area .ap-svc-more .et_pb_text_inner ul { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem; }
  .ap-bold #et-boc .et-l .ap-svc-area .ap-svc-more .et_pb_text_inner a { min-height: 46px; padding: 0.6rem 2.2rem 0.6rem 0.85rem; font-size: 0.92rem; }
}
@media (min-width: 1600px) { .ap-bold #et-boc .et-l .ap-svc-area { grid-template-columns: 4fr 8fr; } }
@media (max-width: 899px) { .ap-bold #et-boc .et-l .ap-svc-area > .ap-svc-more { margin-top: 1.5rem !important; } }
.ap-bold #et-boc .et-l .ap-svc-more .ap-svc-more-h { font-size: 0.78rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ap-muted); padding: 0 0 0.7rem; }
.ap-bold #et-boc .et-l #services .ap-svc-area .ap-svc-grid { margin-top: 1.6rem; }
/* dead space between the local intro and the explorer (two ink bands in a row, as on the home) */
.ap-bold #et-boc .et-l #local.et_pb_section { padding-bottom: 32px !important; }
/* m5: work cards: title right under the photo; less dead paper under the row */
.ap-bold #et-boc .et-l .ap-cards .ap-card .et_pb_blurb_content { gap: 0 !important; row-gap: 0 !important; }
.ap-bold #et-boc .et-l .ap-cards .ap-card .et_pb_main_blurb_image { margin-bottom: 0 !important; }
.ap-bold #et-boc .et-l #projects.et_pb_section { padding-bottom: 80px !important; }
/* m6: contact facts breathe like the form beside them */
.ap-bold #et-boc .et-l .ap-contact-facts { gap: 22px !important; }
.ap-bold #et-boc .et-l .ap-contact-facts .et_pb_blurb { margin-bottom: 0 !important; }
/* m7: drawer rows the same height; the Call button is not clipped */
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu > li > a, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li .ap-drawer-parent { min-height: 56px; display: flex; align-items: center; padding-top: 0.35rem; padding-bottom: 0.35rem; box-sizing: border-box; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta { padding-bottom: 6px; overflow: visible; }
/* M5: still-photo heroes: a lighter overlay, dark only behind the text (AA kept: >= 0.7 ink under body text) */
.ap-hero-stage--img + .ap-hero-scrim { background: linear-gradient(180deg, rgba(14,15,18,0.78) 0, rgba(14,15,18,0.45) 110px, rgba(14,15,18,0) 240px), linear-gradient(90deg, rgba(14,15,18,0.84) 0, rgba(14,15,18,0.76) 46%, rgba(14,15,18,0.4) 68%, rgba(14,15,18,0.12) 100%); }
@media (max-width: 899px) {
  .ap-hero-stage--img + .ap-hero-scrim { background: linear-gradient(180deg, rgba(14,15,18,0.8) 0, rgba(14,15,18,0.4) 96px, rgba(14,15,18,0.12) 20%, rgba(14,15,18,0.72) 38%, rgba(14,15,18,0.84) 100%); }
  .ap-bold #et-boc .et-l .ap-hero--page:has(.ap-hero-stage--img) { justify-content: flex-end; }
}
/* m4: short landscape phones (844 x 390): compact hero so the CTA pair is on screen without scrolling */
@media (max-height: 460px) and (orientation: landscape) {
  .ap-bold #et-boc .et-l .ap-hero, .ap-bold #et-boc .et-l .ap-hero--page { padding-top: calc(var(--ap-header-h) + 10px) !important; padding-bottom: 58px !important; justify-content: center; }
  .ap-bold #et-boc .et-l .ap-hero-copy { gap: 0.55rem !important; max-width: 760px; }
  .ap-bold #et-boc .et-l .ap-hero .ap-h1 h1 { font-size: 1.85rem; line-height: 1.02; }
  .ap-bold #et-boc .et-l .ap-hero .ap-lead .et_pb_text_inner { font-size: 0.92rem; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .ap-bold #et-boc .et-l .ap-hero .ap-kicker { display: none; }
  .ap-bold #et-boc .et-l .ap-hero .ap-cta-pair .et_pb_button { min-height: 42px; padding: 0.5rem 1rem !important; font-size: 0.92rem; }
  .ap-bold #et-boc .et-l .ap-hero-bar-row .et_pb_column { padding: 8px 0; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { display: flex; flex-wrap: nowrap; gap: 1.2rem; font-size: 0.8rem; }
}
@media (max-width: 640px) { .ap-bold #et-boc .et-l .ap-cta-panel h2 { font-size: 1.7rem; } }
/* four example pairs (area pages): one row of four, no lone tab */
@media (min-width: 900px) { .ap-ba-tabs:has(> button:nth-child(4):last-child) { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 641px) and (max-width: 899px) { .ap-ba-tabs:has(> button:nth-child(4):last-child) { grid-template-columns: repeat(2, 1fr); } }
.ap-bold #et-boc .et-l .ap-cta-panel h2, .ap-bold #et-boc .et-l .ap-ba-copy h2 { text-wrap: wrap; }
/* phones: H2s fill the line (normal wrap) at a size where short headings stay on one line */
@media (max-width: 480px) { .ap-bold #et-boc .et-l .ap-h2 h2, .ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2 { font-size: 1.72rem; text-wrap: wrap; } }
@media (max-width: 400px) { .ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2 { font-size: 1.6rem; } }

/* ================= Reviews carousel (every page except the home and /reviews/) ================= */
.ap-rv-carousel { position: relative; display: grid; gap: 0.75rem; min-width: 0; }
.ap-rv-car-nav { display: flex; justify-content: flex-end; gap: 0.6rem; }
.ap-bold .ap-rv-car-btn { appearance: none; width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--ap-paper); background: var(--ap-paper); color: var(--ap-ink); display: grid; place-items: center; cursor: pointer; padding: 0; transition: background 0.2s, border-color 0.2s, color 0.2s; }
.ap-bold .ap-rv-car-btn svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 2.6; stroke-linecap: round; stroke-linejoin: round; }
@media (hover: hover) { .ap-bold .ap-rv-car-btn:not([disabled]):hover { background: var(--ap-red); border-color: var(--ap-red); color: #fff; } }
.ap-bold .ap-rv-car-btn:focus-visible { outline: 3px solid var(--ap-blue); outline-offset: 2px; }
.ap-bold .ap-rv-car-btn[disabled] { background: transparent; border-color: rgba(255,255,255,0.35); color: var(--ap-muted); cursor: default; }
.ap-bold #et-boc .et-l .ap-reviews--carousel ul.ap-rv-track, .ap-reviews--carousel .ap-rv-track { display: flex !important; gap: 1rem; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 2px 2px 6px; margin: 0; list-style: none; align-items: stretch; }
.ap-reviews--carousel .ap-rv-track::-webkit-scrollbar { display: none; }
.ap-reviews--carousel .ap-rv-track:focus-visible { outline: 3px solid var(--ap-blue); outline-offset: 3px; border-radius: 16px; }
.ap-reviews--carousel .ap-rv-track > .ap-rv-card { display: flex !important; flex: 0 0 calc((100% - 3rem) / 3.35); scroll-snap-align: start; min-width: 0; }
@media (max-width: 1279px) { .ap-reviews--carousel .ap-rv-track > .ap-rv-card { flex-basis: calc((100% - 2rem) / 2.4); } }
@media (max-width: 1023px) { .ap-reviews--carousel .ap-rv-track > .ap-rv-card { flex-basis: calc((100% - 1rem) / 1.7); } }
@media (max-width: 640px) { .ap-reviews--carousel .ap-rv-track > .ap-rv-card { flex-basis: 86%; } }
@media (prefers-reduced-motion: reduce) { .ap-reviews--carousel .ap-rv-track { scroll-behavior: auto; } }
.ap-rv-carousel.is-static .ap-rv-car-nav { display: none; }

/* Footer bottom bar: one compact strip (about 50 px desktop), © left, links right, vertically centred */
.ap-bold #et-boc .et-l .ap-footer.et_pb_section { padding-bottom: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-line-row { margin-bottom: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-bottom.et_pb_row { padding: 10px 0 !important; margin: 0 auto !important; min-height: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-bottom .et_pb_column, .ap-bold #et-boc .et-l .ap-foot-bottom .et_pb_module, .ap-bold #et-boc .et-l .ap-foot-bottom .et_pb_text_inner { margin: 0 !important; padding: 0 !important; min-height: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-bottom .ap-foot-legal { flex-direction: row !important; align-items: center !important; justify-content: space-between; flex-wrap: wrap; gap: 0 1.5rem; line-height: 1.4; }
.ap-bold #et-boc .et-l .ap-foot-legal-links { gap: 0 1.4rem; }
.ap-bold #et-boc .et-l .ap-foot-legal-links a { min-height: 30px; }
@media (max-width: 640px) {
  .ap-bold #et-boc .et-l .ap-foot-bottom.et_pb_row { padding: 8px 0 4px !important; }
  .ap-bold #et-boc .et-l .ap-foot-bottom .ap-foot-legal { flex-direction: column !important; align-items: flex-start !important; gap: 2px; font-size: 12.5px; }
  .ap-bold #et-boc .et-l .ap-foot-legal-links { flex-wrap: nowrap; gap: 0 0.85rem; white-space: nowrap; }
  .ap-bold #et-boc .et-l .ap-foot-legal-links a { min-height: 40px; font-size: 12.5px; }
}
/* the footer section is a flex column with a 60 px row gap; the bottom bar sits right under the divider line instead */
.ap-bold #et-boc .et-l .ap-footer .ap-foot-line-row + .ap-foot-bottom.et_pb_row { margin-top: -60px !important; }

/* ================= Round 3 fixes (2026-10-01, third review) ================= */
/* M5: headings and kickers balance their lines (no stranded words); place names never split (nbsp / .ap-nw) */
.ap-bold #et-boc .et-l .ap-h2 h2, .ap-bold #et-boc .et-l .ap-h2 h1, .ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2, .ap-bold #et-boc .et-l .ap-cta-panel h2,
.ap-bold #et-boc .et-l .ap-ba-copy h2, .ap-bold #et-boc .et-l h3, .ap-bold #et-boc .et-l .ap-kicker p, .ap-bold #et-boc .et-l .ap-foot-line, .ap-bold #et-boc .et-l .ap-trust li { text-wrap: balance; }
@media (max-width: 480px) { .ap-bold #et-boc .et-l .ap-h2 h2, .ap-bold #et-boc .et-l .ap-shead .ap-shead-h2 h2 { text-wrap: balance; } }
.ap-nw { white-space: nowrap; }
/* M6: area intro photo keeps its people whole: a 3:2 frame (max 600 px tall), copy centred beside it, columns equal height */
@media (min-width: 900px) {
  .ap-bold #et-boc .et-l .ap-local-split { align-items: stretch !important; }
  .ap-bold #et-boc .et-l .ap-local-split .ap-local-media { aspect-ratio: 3 / 2; height: auto; min-height: 0; max-height: 600px; }
  .ap-bold #et-boc .et-l .ap-local-split .ap-split-copy { justify-content: center; }
}
.ap-bold #et-boc .et-l .ap-pos-top img { object-position: 50% 12% !important; }
/* Reviews carousel: no rating bar (hidden until the owner confirms Google's figures), tighter header, deliberate end peek */
.ap-bold #et-boc .et-l .et_pb_section:has(.ap-reviews--carousel) .ap-shead { margin-bottom: 20px !important; }
.ap-bold #et-boc .et-l .et_pb_section:has(.ap-reviews--carousel) .ap-shead + .et_pb_row { margin-top: -40px !important; }
.ap-reviews--carousel .ap-rv { gap: 0.5rem; }
.ap-reviews--carousel .ap-rv-track { padding-right: 48px !important; scroll-padding-left: 2px; -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 72px), transparent); mask-image: linear-gradient(90deg, #000 calc(100% - 72px), transparent); }
.ap-rv-carousel.at-end .ap-rv-track, .ap-rv-carousel.is-static .ap-rv-track { -webkit-mask-image: none; mask-image: none; }
/* m3: drawer CTA buttons keep all four borders */
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta a { border-bottom-width: 2px !important; border-bottom-style: solid !important; border-bottom-color: inherit; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta a.ap-btn-like--ghost { border-color: rgba(255,255,255,0.35) !important; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu .ap-drawer-cta a.ap-btn-like--primary { border-color: var(--ap-paper) !important; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li .ap-drawer-parent svg, .ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li .ap-drawer-parent::after { align-self: center; margin-top: 0 !important; }
/* three-card carousels (area pages) fill the row on wide screens */
@media (min-width: 1280px) { .ap-reviews--carousel .ap-rv-track:has(> .ap-rv-card:nth-child(3):last-child) > .ap-rv-card { flex-basis: calc((100% - 2rem - 48px) / 3); } }
/* phone trust bar: items never wrap; the place item takes its own row */
@media (max-width: 420px) {
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { font-size: 0.8rem; column-gap: 0.7rem; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li { white-space: nowrap; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li:nth-child(4) { grid-column: 1 / -1; }
}
/* Footer "Planning a repaint?" strip: compact (about 48 px desktop), one thin divider to the bottom bar, smaller gap above */
.ap-bold #et-boc .et-l .ap-footer .ap-foot-regions-row + .ap-foot-line-row.et_pb_row { margin-top: -36px !important; }
.ap-bold #et-boc .et-l .ap-foot-line-row.et_pb_row { padding: 12px 0 !important; min-height: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-line-row .et_pb_column, .ap-bold #et-boc .et-l .ap-foot-line-row .et_pb_module, .ap-bold #et-boc .et-l .ap-foot-line-row .et_pb_text_inner { margin: 0 !important; padding: 0 !important; min-height: 0 !important; }
.ap-bold #et-boc .et-l .ap-foot-line { padding: 0 !important; line-height: 1.6; }
.ap-bold #et-boc .et-l .ap-foot-line a { white-space: nowrap; padding: 10px 0; }
@media (max-width: 640px) {
  .ap-bold #et-boc .et-l .ap-foot-line-row.et_pb_row { padding: 8px 0 !important; }
  .ap-bold #et-boc .et-l .ap-foot-line { font-size: 14px; line-height: 1.55; }
  .ap-bold #et-boc .et-l .ap-foot-line strong { display: block; }
  .ap-bold #et-boc .et-l .ap-foot-line a { display: inline-block; padding: 9px 0; margin: -9px 0; }
}

/* a carousel whose cards all fit (three on area pages) is a plain row: no end padding, cards fill the row */
.ap-rv-carousel.is-static .ap-rv-track { padding-right: 2px !important; }
@media (min-width: 1280px) { .ap-reviews--carousel .ap-rv-carousel.is-static .ap-rv-track:has(> .ap-rv-card:nth-child(3):last-child) > .ap-rv-card { flex-basis: calc((100% - 2rem - 4px) / 3); } }
/* drawer chevrons centred on their 56 px row */
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li a.mobile-toggle { display: flex !important; align-items: center; justify-content: flex-end; }
.ap-bold #et-boc .et-l .ap-nav .et_mobile_menu li a.mobile-toggle::after { top: 0 !important; }

/* ================= Round 4 fixes (2026-10-01, fourth review) ================= */
/* B1: a bound place name moves to the next line whole; only when it is wider than the whole line may it break at its hyphen */
.ap-nw { display: inline-block; max-width: 100%; white-space: normal; }
@media (max-width: 600px) { .ap-bold #et-boc .et-l .ap-hero h1 .ap-nw-hy { display: inline; } }
/* m1: on phones the kicker drops its optional part (" · Toronto and the GTA", or "All Painting ·" before a long place name), so no line starts with a dot */
@media (max-width: 480px) { .ap-kick-opt { display: none; } }
/* m9: phone trust bar wraps item by item (no item is ever cut off); the place item keeps its own row */
@media (max-width: 420px) {
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner ul { display: flex; flex-wrap: wrap; column-gap: 1rem; }
  .ap-bold #et-boc .et-l .ap-trust .et_pb_text_inner li:nth-child(4) { flex-basis: 100%; }
}
/* m2: FAQ questions fill their lines (pretty, not balance: no wide empty strip beside a 3-line question) */
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_title { text-wrap: pretty; }
/* m11: short landscape phones show the hero without a truncated lead */
@media (max-height: 460px) and (orientation: landscape) { .ap-bold #et-boc .et-l .ap-hero .ap-lead { display: none; } }
/* M3: image + copy splits are as tall as their copy: the photo or slider fills the copy's height (no empty bands beside short copy) */
@media (min-width: 900px) {
  .ap-bold #et-boc .et-l .ap-local-split .ap-local-media { aspect-ratio: auto; max-height: none; min-height: 360px; height: auto; }
  .ap-bold #et-boc .et-l .ap-local-split .ap-split-copy { justify-content: flex-start; }
  .ap-bold #et-boc .et-l .ap-ba-split { align-items: stretch !important; }
  .ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-col { justify-content: flex-start; }
  .ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-col > .et_pb_module, .ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-col .et_pb_code_inner, .ap-bold #et-boc .et-l .ap-ba-split .ap-ba-wrap { height: 100%; }
  .ap-bold #et-boc .et-l .ap-ba-split .ap-ba-wrap { display: flex; flex-direction: column; }
  .ap-bold #et-boc .et-l .ap-ba-split .ap-ba { aspect-ratio: auto; flex: 1 1 auto; min-height: 340px; }
  .ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-copy { justify-content: flex-start; }
}
/* m8: search and blog pagination reads as a button */
.ap-bold #et-boc .et-l .et_pb_blog .pagination { display: flex; justify-content: center; gap: 1rem; margin-top: 2rem; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination .alignleft, .ap-bold #et-boc .et-l .et_pb_blog .pagination .alignright { float: none; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination a { display: inline-flex; align-items: center; min-height: 48px; padding: 0.7rem 1.4rem; border: 2px solid var(--ap-line); border-radius: 999px; color: var(--ap-text); font-weight: 700; text-decoration: none; }
.ap-bold #et-boc .et-l .et_pb_blog .pagination a:hover, .ap-bold #et-boc .et-l .et_pb_blog .pagination a:focus-visible { border-color: var(--ap-paper); }
/* M3 (wide screens): before/after rows keep a 16:9 slider; the pair's two stills fill the copy column under the text */
.ap-bold #et-boc .et-l .ap-ba-stills-mod { display: none !important; }
@media (min-width: 1280px) {
  .ap-bold #et-boc .et-l .ap-ba-split > .ap-ba-copy .ap-ba-stills-mod { display: block !important; position: relative; flex: 1 1 auto; min-height: 130px; margin: 0 !important; }
  .ap-bold #et-boc .et-l .ap-ba-stills-mod .et_pb_text_inner { position: absolute; inset: 0; }
  .ap-ba-stills { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; height: 100%; }
  .ap-ba-stills figure { position: relative; margin: 0; border-radius: 14px; overflow: hidden; background: var(--ap-ink-3); }
  .ap-ba-stills img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; max-width: none; }
  .ap-ba-stills figcaption { position: absolute; left: 0.6rem; top: 0.6rem; padding: 0.3rem 0.6rem; border-radius: 999px; background: rgba(14,15,18,0.78); color: var(--ap-text); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; line-height: 1.2; }
  .ap-bold #et-boc .et-l .ap-ba-split .ap-ba { aspect-ratio: 16 / 9; flex: none; height: auto; min-height: 100%; }
}
/* M3 (very wide screens): the local intro and the before/after rows sit in a 1440 px block (like the FAQ), so photos keep a natural shape */
@media (min-width: 1600px) {
  .ap-bold #et-boc .et-l #example > .et_pb_row, .ap-bold #et-boc .et-l .ap-projects > .et_pb_row { max-width: 1440px !important; margin-left: auto !important; margin-right: auto !important; }
}
/* M3 (tablets and small laptops): the local intro stacks, photo (16:9) above the copy, so the photo is never cropped to a portrait */
@media (min-width: 900px) and (max-width: 1279px) {
  .ap-bold #et-boc .et-l .ap-local-split { flex-wrap: wrap !important; }
  .ap-bold #et-boc .et-l .ap-local-split > .ap-local-media, .ap-bold #et-boc .et-l .ap-local-split > .ap-split-copy { flex: 0 0 100% !important; max-width: 100% !important; width: 100% !important; }
  .ap-bold #et-boc .et-l .ap-local-split > .ap-local-media { aspect-ratio: 16 / 9; min-height: 0; }
}
/* m10: review carousels sit the same 100 px under their section head as every other section's content */
@media (min-width: 900px) { .ap-bold #et-boc .et-l .ap-reviews--carousel { margin-top: 60px; } }
/* 320 px phones: the footer's legal links may take a second line rather than run off the screen */
@media (max-width: 359px) { .ap-bold #et-boc .et-l .ap-foot-legal-links { flex-wrap: wrap; white-space: normal; } .ap-bold #et-boc .et-l .ap-foot-legal-links a { white-space: nowrap; } }
/* headings without a balance rule (legal sections, strips, blurb titles) avoid a one-word last line */
.ap-bold h2, .ap-bold h3, .ap-bold h4, .ap-bold .et_pb_module_header { text-wrap: pretty; }
/* 320 px phones: the service explorer's tab strip scrolls inside the column instead of widening the tab panel past the screen */
@media (max-width: 899px) { .ap-bold #et-boc .et-l .ap-svc.et_pb_tabs, .ap-bold #et-boc .et-l .ap-svc .ap-svc-body { grid-template-columns: minmax(0, 1fr); } .ap-bold #et-boc .et-l .ap-svc .ap-svc-body .more { width: auto; max-width: 100%; justify-self: start; } }
/* B1 follow-up: a heading that holds a long hyphenated place name steps down a size where the name would otherwise just miss the line
   (FAQ heading in its narrow column; the closing CTA on phones). On a 320 px phone it may still break at the hyphen. */
.ap-bold #et-boc .et-l .ap-faq-row h2:has(.ap-nw-hy) { font-size: clamp(26px, 1.85vw, 36px); }
@media (max-width: 480px) { .ap-bold #et-boc .et-l .ap-cta-panel h2:has(.ap-nw-hy) { font-size: 24px; } }
/* M3 (very wide screens): service-page photo + copy splits also sit in the 1440 px block, so short copy never leaves a band beside a wide photo */
@media (min-width: 1600px) { .ap-bold #et-boc .et-l .ap-split-svc.et_pb_row { max-width: 1440px !important; margin-left: auto !important; margin-right: auto !important; } }
/* phones: legal section headings balance their two lines (no one-word last line) */
@media (max-width: 480px) { .ap-bold #et-boc .et-l .ap-legal h2, .ap-bold #et-boc .et-l .ap-legal h3 { text-wrap: balance; } }
@media (min-width: 1600px) { .ap-bold #et-boc .et-l .ap-split-svc .ap-media-col { min-height: 260px; } }

/* ===== Area intro block (owner request, round 4): photo with a caption chip + a scannable local panel, full content width ===== */
.ap-bold #et-boc .et-l .ap-photo-chip { position: absolute; left: 16px; bottom: 16px; z-index: 2; margin: 0 !important; width: auto; max-width: calc(100% - 32px); }
.ap-bold #et-boc .et-l .ap-photo-chip p { display: inline-block; margin: 0; padding: 0.45rem 0.85rem; border-radius: 999px; background: rgba(14,15,18,0.8); color: var(--ap-text); font-size: 0.85rem; font-weight: 600; line-height: 1.3; backdrop-filter: blur(4px); }
.ap-bold #et-boc .et-l .ap-local-copy { justify-content: flex-start; }
.ap-bold #et-boc .et-l .ap-local-copy .ap-local-h2 h2 { margin: 0; text-wrap: balance; }
.ap-bold #et-boc .et-l .ap-local-lead p { margin: 0; }
.ap-local-panel .ap-local-facts { margin: 0 0 1.25rem; }
.ap-local-panel .ap-local-facts:last-of-type { margin-bottom: 1rem; }
.ap-bold #et-boc .et-l .ap-local-panel p.ap-local-label { margin: 0 0 0.6rem; padding: 0; font-family: var(--ap-display); font-size: 0.76rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ap-soft); }
.ap-bold #et-boc .et-l .ap-local-panel ul { list-style: none; margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-chips { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ap-bold #et-boc .et-l .ap-chips li { margin: 0; padding: 0; }
.ap-bold #et-boc .et-l .ap-chips li > span, .ap-bold #et-boc .et-l .ap-chips li > a { display: inline-flex; align-items: center; min-height: 36px; padding: 0.35rem 0.9rem; border-radius: 999px; border: 1px solid var(--ap-line); background: var(--ap-ink-2); color: var(--ap-text); font-size: 0.92rem; font-weight: 600; line-height: 1.2; text-decoration: none; }
.ap-bold #et-boc .et-l .ap-chips li > a { border-color: rgba(90,162,255,0.55); }
.ap-bold #et-boc .et-l .ap-chips li > a::after { content: ""; width: 7px; height: 7px; margin-left: 0.55rem; border-top: 2px solid currentColor; border-right: 2px solid currentColor; transform: rotate(45deg); opacity: 0.7; }
.ap-bold #et-boc .et-l .ap-chips li > a:hover, .ap-bold #et-boc .et-l .ap-chips li > a:focus-visible { border-color: var(--ap-paper); background: var(--ap-ink-3); }
.ap-bold #et-boc .et-l .ap-homes { display: grid; gap: 0.7rem 1.2rem; }
.ap-bold #et-boc .et-l .ap-homes li { display: flex; align-items: flex-start; gap: 0.75rem; margin: 0; padding: 0; }
.ap-home-ic { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--ap-ink-3); color: var(--ap-green); }
.ap-home-ic svg { display: block; }
.ap-home-t { display: grid; gap: 0.1rem; padding-top: 0.15rem; }
.ap-bold #et-boc .et-l .ap-home-t b { color: var(--ap-text); font-weight: 700; font-size: 0.98rem; line-height: 1.3; }
.ap-bold #et-boc .et-l .ap-home-t span { color: var(--ap-soft); font-size: 0.9rem; line-height: 1.4; }
.ap-local-more { border-top: 1px solid var(--ap-line); padding-top: 0.75rem; }
.ap-bold #et-boc .et-l .ap-local-more summary { display: inline-flex; align-items: center; gap: 0.6rem; min-height: 44px; cursor: pointer; color: var(--ap-text); font-weight: 700; list-style: none; }
.ap-local-more summary::-webkit-details-marker { display: none; }
.ap-local-more summary::after { content: ""; width: 8px; height: 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-2px) rotate(45deg); transition: transform 0.25s; }
.ap-local-more[open] summary::after { transform: translateY(2px) rotate(-135deg); }
.ap-bold #et-boc .et-l .ap-local-more summary:focus-visible { outline: 3px solid var(--ap-blue); outline-offset: 3px; border-radius: 6px; }
.ap-bold #et-boc .et-l .ap-local-more p { margin: 0.6rem 0 0; color: #dad7cf; font-size: 1rem; line-height: 1.6; }
@media (min-width: 1280px) {
}
@media (max-width: 899px) {
  .ap-bold #et-boc .et-l .ap-chips li > span, .ap-bold #et-boc .et-l .ap-chips li > a { min-height: 40px; }
  .ap-bold #et-boc .et-l .ap-chips li > a { min-height: 44px; }
  .ap-bold #et-boc .et-l .ap-photo-chip { left: 12px; bottom: 12px; }
}
/* intro block layout: photo (3:2, may grow a little to match the panel) with "Homes here" under it; the panel on the right */
.ap-bold #et-boc .et-l .ap-local-photo { position: relative; aspect-ratio: 3 / 2; flex: 1 0 auto; width: 100%; border-radius: var(--ap-radius); overflow: hidden; background: var(--ap-ink-3); margin: 0 !important; }
.ap-bold #et-boc .et-l .ap-local-photo .et_pb_image, .ap-bold #et-boc .et-l .ap-local-photo .et_pb_image_wrap { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; display: block; }
.ap-bold #et-boc .et-l .ap-local-photo .et_pb_image img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ap-bold #et-boc .et-l .ap-local-photo .ap-pos-top img { object-position: 50% 20%; }
.ap-bold #et-boc .et-l .ap-local-block .ap-local-panel .ap-local-facts:last-child { margin-bottom: 0; }
.ap-bold #et-boc .et-l .ap-local-block .ap-local-copy .et_pb_module { margin-bottom: 0; }
/* wide screens: one grid; the photo spans the panel's rows, so both sides are always the same height.
   1280-1599: "Homes here" runs full width under both; 1600+: it joins the panel (the panel is wider there). "More about" closes the block. */
@media (min-width: 1280px) {
  .ap-bold #et-boc .et-l .ap-local-block { display: grid !important; grid-template-columns: minmax(0, 54fr) minmax(0, 46fr); column-gap: 48px; row-gap: 18px; align-items: start; }
  .ap-bold #et-boc .et-l .ap-local-block > .et_pb_column { display: contents !important; }
  .ap-bold #et-boc .et-l .ap-local-block .et_pb_module, .ap-bold #et-boc .et-l .ap-local-block .ap-cta-pair { margin: 0 !important; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-photo { grid-column: 1; grid-row: 1 / span 5; align-self: stretch; aspect-ratio: auto; height: auto; min-height: 380px; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-kicker { grid-column: 2; grid-row: 1; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-h2 { grid-column: 2; grid-row: 2; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-lead { grid-column: 2; grid-row: 3; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-chips { grid-column: 2; grid-row: 4; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-cta-pair { grid-column: 2; grid-row: 5; align-self: end; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-homes { grid-column: 1 / -1; grid-row: 6; margin-top: 22px !important; border-top: 1px solid var(--ap-line); padding-top: 28px; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-homes { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-morewrap { grid-column: 1 / -1; grid-row: 7; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-more { border-top: 0; padding-top: 0; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-more[open] > p { max-width: 80ch; }
}
@media (min-width: 1600px) {
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-photo { grid-row: 1 / span 6; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-homes { grid-column: 2; grid-row: 5; margin-top: 4px !important; border-top: 0; padding-top: 0; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-homes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ap-bold #et-boc .et-l .ap-local-block .ap-cta-pair { grid-row: 6; }
}
/* phones and tablets: one column in reading order: photo, heading, lead, places, homes, more, buttons */
@media (max-width: 1279px) {
  .ap-bold #et-boc .et-l .ap-local-block { display: flex !important; flex-direction: column; gap: 18px !important; }
  .ap-bold #et-boc .et-l .ap-local-block > .et_pb_column { display: contents !important; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-photo { order: 1; flex: none; margin-bottom: 6px !important; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-kicker { order: 2; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-h2 { order: 3; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-lead { order: 4; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-chips { order: 5; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-homes { order: 6; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-local-morewrap { order: 7; }
  .ap-bold #et-boc .et-l .ap-local-block .ap-cta-pair { order: 8; }
}
@media (min-width: 640px) and (max-width: 1279px) { .ap-bold #et-boc .et-l .ap-local-block .ap-homes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
/* FAQ toggles: the question is a real button inside the Divi h3 (ap-bold.js), styled exactly like the heading text */
.et_pb_toggle_title .ap-toggle-btn { display: block; width: 100%; margin: 0; padding: 0; border: 0; background: none; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; text-align: inherit; line-height: inherit; cursor: pointer; -webkit-appearance: none; appearance: none; text-wrap: inherit; }
.et_pb_toggle_title .ap-toggle-btn:focus { outline: none; }
.et_pb_toggle_title .ap-toggle-btn:focus-visible { outline: 3px solid #0a66f2; outline-offset: 6px; border-radius: 4px; }
/* the question button fills the row in the site's FAQ accordions (the h3 keeps only the room for the icon) */
.ap-bold #et-boc .et-l .ap-faq h3.et_pb_toggle_title:has(> .ap-toggle-btn) { padding: 0 1.3rem 0 0; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_title > .ap-toggle-btn { flex: 1 1 auto; min-width: 0; padding: 1.05rem 0 1.05rem 1.3rem; }
.ap-bold #et-boc .et-l .ap-faq .et_pb_toggle_title > .ap-toggle-btn:focus-visible { outline-offset: -3px; border-radius: 12px; }
