/* Chicago Building Code Expert — site overrides
   Added 2026-08-07 with the home-page content deployment.
   Both rules implement the content document's VERIFY BEFORE PUBLISHING
   instructions. Delete a rule to restore its section once real content exists. */

/* Section 12 — "Expert Witness Integrity" testimonial slider.
   The template ships fabricated quotes attributed to named real people.
   Doc: "Leave blank or hide the section until a real testimonial is available." */
/* 76b9ca4 rule removed 9 Aug 2026 - the fabricated testimonial section it hid
   has been deleted from the markup entirely. */

/* Section 14 — "Our Trusted Legal Industry Network" logo band.
   Hidden 7 Aug 2026 (lorem ipsum + unverified affiliations); UNHIDDEN 9 Aug 2026 —
   the band was rebuilt as "Attorneys & Firms Who Have Retained Paul Gaston" with
   verified, authorised names supplied by Ryan, and the lorem-ipsum tabs removed. */

/* About page — "Our Trusted Legal Industry Network" logo band.
   Same lorem-ipsum placeholder copy and unverified affiliations as the home
   page band. Doc: hide rather than publish placeholder contractor logos. */
.elementor-element-da2f951 { display: none !important; }

/* ==========================================================================
   Home page changes — 9 August 2026
   ========================================================================== */

/* Track Record counter rules moved out of this file on 9 Aug 2026.
   They now live in the inline <style id="cbce-counter-fix"> block in the
   <head> of every page that has a counter (home + about). Inline because
   this stylesheet is served with no Cache-Control, and class-scoped
   (.wdt-cus-counter-style-1) because the About counter is a different
   widget id (732ecee) than the home one (be11dd8).
   Regenerate with /root/update_counter_block.py. */

/* "The Professionals Behind Every Case" — three evenly spaced cards:
   Independent Building Code Analysis | Paul Gaston | Reports & Courtroom Testimony
   Replaces the gap left when the unverified second team card was removed. */
.elementor-1802 .elementor-element.elementor-element-09798aa > .e-con-inner {
    display: flex !important;
    flex-wrap: wrap;
    gap: 24px;
    justify-content: center;
    align-items: flex-start;
}
.elementor-1802 .elementor-element.elementor-element-09798aa > .e-con-inner > .e-con {
    --width: auto;
    width: auto !important;
    max-width: none !important;
    flex: 1 1 280px;
    margin-top: 0 !important;
}

/* middle card: let the single team card fill its column */
.elementor-1802 .elementor-element.elementor-element-bcd473c .wdt-column-wrapper,
.elementor-1802 .elementor-element.elementor-element-bcd473c .wdt-column {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
}
.elementor-1802 .elementor-element.elementor-element-bcd473c .wdt-content-image img {
    width: 100%;
    height: auto;
}

/* the two side cards share one stock image; mirror the left one so the pair
   reads as a matched set rather than a duplicate. Swap either image freely. */
.cbce-card-left .elementor-widget-image img {
    transform: scaleX(-1);
}

/* ==========================================================================
   "Attorneys & Firms Who Have Retained Paul Gaston" — 9 August 2026
   The two marquee rows now carry text wordmarks instead of contractor logos.
   The white rounded box, radius, padding and margin still come from the theme's
   .wdt-h1-animation-style-02 .wdt-animation-item rule — only the contents change.
   ========================================================================== */

.wdt-animation-item.cbce-wordmark {
    display: inline-flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    min-height: clamp(3.75rem, 3.1927rem + 2.5478vw, 6.25rem); /* matches the old logo height */
    min-width: clamp(11rem, 8rem + 10vw, 16rem);
    text-align: center;
    white-space: nowrap;
}

.cbce-wordmark .cbce-wm-name {
    font-size: clamp(1.05rem, 0.92rem + 0.55vw, 1.5rem);
    line-height: 1.15;
    letter-spacing: 0.01em;
}

.cbce-wordmark .cbce-wm-desc {
    font-family: "Manrope", "Helvetica Neue", Arial, sans-serif;
    font-size: clamp(0.56rem, 0.52rem + 0.16vw, 0.68rem);
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #6B7280;
}

/* Each firm set as its own wordmark: distinct face, weight and colour. */

.cbce-wm-morgan .cbce-wm-name {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif;
    font-weight: 700;
    color: #16305B;
    letter-spacing: 0.01em;
}

.cbce-wm-roetzel .cbce-wm-name {
    font-family: "Cinzel", Georgia, "Times New Roman", serif;
    font-weight: 600;
    color: #141414;
    letter-spacing: 0.06em;
}

.cbce-wm-cohen .cbce-wm-name {
    font-family: "Cormorant Garamond", Garamond, Georgia, serif;
    font-weight: 700;
    color: #2E3338;
    letter-spacing: 0.02em;
}

.cbce-wm-crystal .cbce-wm-name {
    font-family: "Marcellus", "Palatino Linotype", Palatino, Georgia, serif;
    font-weight: 400;
    color: #A0812F;
    letter-spacing: 0.02em;
}

.cbce-wm-shumaker .cbce-wm-name {
    font-family: "Libre Baskerville", Georgia, "Times New Roman", serif;
    font-weight: 700;
    color: #3A4A5A;
    letter-spacing: 0.01em;
}


/* ==========================================================================
   About page — 9 August 2026
   ========================================================================== */

/* item 7: optical size balance across the five named faces */
.cbce-wm-roetzel .cbce-wm-name { font-size: 0.92em; }
.cbce-wm-cohen   .cbce-wm-name { font-size: 1.06em; }

/* item 4: the two hand-injected blocks on /about/ (Professional Background and
   the page's FAQ) sit inside a full-width Elementor section, so they ran edge
   to edge. Give them the same 1140px centred measure the boxed sections use. */
.cbce-boxed {
    max-width: 1140px;
    margin-left: auto !important;
    margin-right: auto !important;
    padding-left: 15px;
    padding-right: 15px;
    box-sizing: border-box;
}

/* item 8: three equal team cards on /about/ (row container 58ec17c), matching
   the home page. The empty middle section was deleted from the markup. */
.elementor-29 .elementor-element.elementor-element-58ec17c > .e-con-inner {
    display: flex !important;
    flex-wrap: wrap;
    gap: 24px;
    justify-content: center;
    align-items: flex-start;
}
.elementor-29 .elementor-element.elementor-element-58ec17c > .e-con-inner > .e-con {
    --width: auto;
    width: auto !important;
    max-width: none !important;
    flex: 1 1 280px;
    margin-top: 0 !important;
}
.elementor-29 .elementor-element.elementor-element-60898dd .wdt-column-wrapper,
.elementor-29 .elementor-element.elementor-element-60898dd .wdt-column {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
}
.elementor-29 .elementor-element.elementor-element-60898dd .wdt-content-image img {
    width: 100%;
    height: auto;
}

/* ==========================================================================
   /services/ — rebuilt 9 August 2026 as the building-code services index
   ========================================================================== */

/* The theme's image-box card expects a picture above the title. These ten cards
   are text-only (no icon set exists for the building-code services, and the
   theme's trade icons — plumber, maid, firefighter — would misrepresent them),
   so the card needs its own spacing and a description style. */
.cbce-service-card {
    display: flex !important;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    height: 100%;
    padding: 28px 26px;
    border-radius: 16px;
    background-color: #ffffff;
    box-shadow: 0 2px 18px rgba(0, 36, 88, 0.08);
    box-sizing: border-box;
}
.cbce-service-card .wdt-content-media-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
    width: 100%;
}
.cbce-service-card .wdt-content-title h5 {
    margin: 0;
    line-height: 1.3;
}
.cbce-service-card .wdt-content-description p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #4A5568;
}
.cbce-service-card .wdt-content-button {
    margin-top: auto;
    padding-top: 4px;
}

/* ==========================================================================
   Blog posts — the ten building-code articles, 9 August 2026
   The Blog Detail template's article column was Elementor widgets; these posts
   use semantic markup instead, so the column needs its own type styles.
   ========================================================================== */
.cbce-post-body { max-width: 100%; }
.cbce-post-body h2 {
    font-family: "Manrope", sans-serif;
    font-size: clamp(1.4rem, 1.2rem + 0.9vw, 2rem);
    line-height: 1.25;
    margin: 1.9em 0 0.6em;
    color: var(--wdtSecondaryColor, #002458);
}
.cbce-post-body h3 {
    font-family: "Manrope", sans-serif;
    font-size: clamp(1.15rem, 1.05rem + 0.5vw, 1.45rem);
    line-height: 1.3;
    margin: 1.5em 0 0.5em;
    color: var(--wdtSecondaryColor, #002458);
}
.cbce-post-body p { margin: 0 0 1.1em; line-height: 1.75; }
.cbce-post-body ul { margin: 0 0 1.4em 1.1em; padding: 0; }
.cbce-post-body ul li { margin: 0 0 0.5em; line-height: 1.65; list-style: disc; }

.cbce-pullquote {
    margin: 1.8em 0;
    padding: 26px 30px;
    border-left: 4px solid var(--wdtLinkHoverColor, #E9A23C);
    background: rgba(0, 36, 88, 0.04);
    border-radius: 0 12px 12px 0;
}
.cbce-pullquote blockquote { margin: 0; padding: 0; border: 0; }
.cbce-pullquote blockquote p {
    margin: 0 0 0.6em;
    font-size: clamp(1.05rem, 0.98rem + 0.35vw, 1.3rem);
    line-height: 1.5;
    font-style: italic;
}
.cbce-pullquote figcaption { font-size: 0.9rem; font-weight: 600; color: #4A5568; }

.cbce-inbody { margin: 1.8em 0; }
.cbce-inbody img { width: 100%; height: auto; border-radius: 12px; display: block; }

.cbce-related, .cbce-byline {
    margin-top: 1.6em;
    padding-top: 1em;
    border-top: 1px solid rgba(0, 36, 88, 0.12);
    font-size: 0.95rem;
}
.cbce-byline { color: #4A5568; border-top: 0; padding-top: 0; margin-top: 0.4em; }
.cbce-post-body .entry-tags-wrapper { margin-top: 1.8em; }
.cbce-post-body .single-entry-tags a {
    display: inline-block;
    margin: 0 8px 8px 0;
    padding: 6px 14px;
    border-radius: 999px;
    background: rgba(0, 36, 88, 0.06);
    font-size: 0.85rem;
}

/* /team/ — three equal team cards, 9 August 2026.
   Same treatment as home and About: the row's team container ships at
   --width:66% holding a single card (the second card was removed as unverified),
   which is the blank middle. There is no empty container to delete. */
.elementor-33 .elementor-element.elementor-element-6fcbe87 > .e-con-inner {
    display: flex !important;
    flex-wrap: wrap;
    gap: 24px;
    justify-content: center;
    align-items: flex-start;
}
.elementor-33 .elementor-element.elementor-element-6fcbe87 > .e-con-inner > .e-con {
    --width: auto;
    width: auto !important;
    max-width: none !important;
    flex: 1 1 280px;
    margin-top: 0 !important;
}
.elementor-33 .elementor-element.elementor-element-7e83e6a .wdt-column-wrapper,
.elementor-33 .elementor-element.elementor-element-7e83e6a .wdt-column {
    width: 100% !important;
    max-width: 100% !important;
    flex: 0 0 100% !important;
}
.elementor-33 .elementor-element.elementor-element-7e83e6a .wdt-content-image img {
    width: 100%;
    height: auto;
}

/* Contact page map, 9 August 2026.
   The embed is intact and resolves (maps.google.com -> google.com/maps/embed,
   200, centred on Chicago, IL). What was wrong is the width: the theme and
   Elementor only ever set the iframe's HEIGHT (300px, overridden to 400px on
   this page). With no width attribute and no width rule, the iframe fell back
   to the HTML default of 300px, so the map sat as a narrow box instead of
   filling its column. Elementor's own width:100% rule only applies inside
   .e-con containers, and this widget sits in a classic section/column. */
.elementor-widget-google_maps .elementor-custom-embed,
.elementor-widget-google_maps iframe {
    width: 100% !important;
    max-width: 100%;
    display: block;
    border: 0;
}

/* Representative Building Code Matters — home page.
   Rebuilt 9 Aug 2026 as a Swiper v8 carousel (the same library the theme's own
   sliders use; it is already loaded on this page). Measured spec supplied by
   Ryan from the original "Construction Case Reviews": slidesPerView 4 / 2 / 1,
   spaceBetween 30, loop, card 416x541 with a 541px cover image, full-bleed
   container. Swiper options live in the inline #cbce-matters-swiper-init. */
.cbce-matters-carousel {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    overflow: hidden;                 /* full-bleed, edge to edge */
}
.cbce-matters-carousel .swiper-wrapper { align-items: stretch; }
.cbce-matters-carousel .swiper-slide { height: auto; }

.cbce-matter-card {
    position: relative;
    display: block;
    width: 100%;
    max-width: 416px;                 /* the original card width */
    overflow: hidden;
    border-radius: var(--wdtRadius_3X, 20px);
    text-decoration: none;
    background: var(--wdtSecondaryColor, #002458);
}
.cbce-matter-card img {
    width: 100%;
    height: 541px;                    /* the original card/image height */
    object-fit: cover;
    object-position: center;
    display: block;
    transition: transform 0.28s ease;
}
.cbce-matter-card:hover img { transform: scale(1.05); }

.cbce-matter-overlay {
    position: absolute;
    inset: auto 0 0 0;
    z-index: 1;
    display: block;
    padding: 26px 24px;
    text-align: left;
    background: linear-gradient(to top,
                rgba(0, 20, 48, 0.94) 0%,
                rgba(0, 20, 48, 0.72) 42%,
                rgba(0, 20, 48, 0) 100%);
}
.cbce-matter-label {
    display: block;
    margin-bottom: 6px;
    font-family: "Manrope", sans-serif;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--wdtPrimaryColor, #fda002);
}
.cbce-matter-title {
    display: block;
    font-family: "Manrope", sans-serif;
    font-size: clamp(1.375rem, 1.3471rem + 0.1274vw, 1.5rem);
    font-weight: 700;
    line-height: 1.25;
    color: var(--wdtAccentTxtColor, #ffffff);
}

@media (max-width: 1280px) { .cbce-matter-card img { height: 470px; } }
@media (max-width: 768px)  { .cbce-matter-card img { height: 420px; } }

/* ==========================================================================
   Global contact blocks, brands column, network line — 10 August 2026
   ========================================================================== */

/* The CTA band's form (and the Contact page form) are replaced by four contact
   blocks. They sit in the form's old slot, so they inherit the section's
   container width and padding rather than going full-bleed. */
.cbce-contact-blocks {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 16px;
    width: 100%;
}
@media (max-width: 900px) { .cbce-contact-blocks { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .cbce-contact-blocks { grid-template-columns: minmax(0, 1fr); } }

.cbce-contact-block {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    padding: 20px 18px;
    border-radius: 14px;
    background: #ffffff;
    border: 1px solid rgba(0, 36, 88, 0.10);
    box-shadow: 0 2px 14px rgba(0, 36, 88, 0.07);
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.cbce-contact-block:hover {
    transform: translateY(-2px);
    box-shadow: 0 6px 22px rgba(0, 36, 88, 0.14);
}
.cbce-cb-label {
    font-family: "Manrope", sans-serif;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    color: var(--wdtPrimaryColor, #fda002);
}
.cbce-cb-value {
    font-family: "Manrope", sans-serif;
    font-size: clamp(0.95rem, 0.9rem + 0.2vw, 1.1rem);
    font-weight: 700;
    line-height: 1.3;
    color: var(--wdtSecondaryColor, #002458);
    word-break: break-word;
}
/* on the dark CTA band the cards stay light, so keep their text dark */
.wdt-dark-bg .cbce-cb-value { color: var(--wdtSecondaryColor, #002458); }

/* Footer is back to five col-20 columns (10 Aug 2026); the template's own
   column widths and padding apply, so nothing is overridden here. */
.cbce-brands-list .elementor-icon-list-items { margin: 0; padding: 0; }
/* earlier per-list sizing (0.9rem / 1.4 / 6px) removed 10 Aug - the footer item
   block below sets 16px / 500 / 25.92px / 10px for both new columns */

/* .cbce-network-line dropped 10 Aug - the Expert Witness Team logo in the
   Reach Us column represents the network instead. */

/* Footer body items: Reach Us and Our Brands matched to Quick Links / Services.
   Targets measured from Quick Links: 16px / 500 / 25.92px, 10px between items.
   The earlier 0.9rem + line-height 1.45 + margin-bottom 7px is what made them
   differ; spacing is done with padding-bottom to match the theme's own li rule. */
footer .cbce-reach-col .elementor-icon-list-text,
footer .cbce-brands-col .elementor-icon-list-text,
footer .cbce-reach-col .elementor-icon-list-item,
footer .cbce-brands-col .elementor-icon-list-item,
footer .cbce-reach-col .elementor-icon-list-item a,
footer .cbce-brands-col .elementor-icon-list-item a {
    font-size: 16px !important;
    font-weight: 500 !important;
    line-height: 25.92px !important;
}
footer .cbce-reach-col .elementor-icon-list-item,
footer .cbce-brands-col .elementor-icon-list-item {
    margin-bottom: 0 !important;
    padding-bottom: 10px !important;
}
footer .cbce-reach-col .elementor-icon-list-item:last-child,
footer .cbce-brands-col .elementor-icon-list-item:last-child {
    padding-bottom: 0 !important;
}
/* .cbce-ewt-logo rules dropped 10 Aug - the logo was removed from Reach Us */

/* ---- footer grid, titles and text (10 Aug 2026, third pass) ----------------
   Column 1 keeps its width; columns 2-5 share the rest equally, and ONE gap
   value spaces the whole row -- including the gap after column 1, which was the
   part that read as cramped. Percentage widths are dropped entirely: with a gap
   in play they no longer add up, which is what made the row uneven.
   The row container is tagged .cbce-footer-row in the markup. */
footer .cbce-footer-row {
    display: flex !important;
    flex-wrap: wrap;
    gap: 40px;
    align-items: flex-start !important;   /* all five column tops aligned */
}
footer .cbce-footer-row > .elementor-column {
    width: auto !important;
    max-width: none !important;
}
/* column 1 keeps its size; it does not stretch with the others */
footer .cbce-footer-row > .elementor-column:first-child {
    flex: 0 0 24%;
}
/* columns 2-5: equal width, equal spacing */
footer .cbce-footer-row > .elementor-column:not(:first-child) {
    flex: 1 1 0;
    min-width: 0;
}

@media (max-width: 1200px) {
    footer .cbce-footer-row { gap: 32px; }
    footer .cbce-footer-row > .elementor-column:first-child { flex: 0 0 100%; }
    footer .cbce-footer-row > .elementor-column:not(:first-child) { flex: 1 1 200px; }
}
@media (max-width: 700px) {
    footer .cbce-footer-row { gap: 26px; }
    footer .cbce-footer-row > .elementor-column:not(:first-child) { flex: 1 1 100%; }
}

/* Column titles: Quick Links and Services use wdt-accordion-toggle-title
   (23.8px / 700 / white); Reach Us and Our Brands use wdt-heading-title, which
   the theme renders at 16px / 500 / rgb(0,36,88). This keeps all four identical. */
footer .wdt-accordion-toggle-title,
footer .cbce-reach-col .wdt-heading-title,
footer .cbce-brands-col .wdt-heading-title {
    font-size: 23.8px !important;
    font-weight: 700 !important;
    color: #FFFFFF !important;
    line-height: 1.3 !important;
}

footer .cbce-reach-col .elementor-icon-list-text,
footer .cbce-brands-col .elementor-icon-list-text,
footer .cbce-reach-col .elementor-icon-list-item,
footer .cbce-brands-col .elementor-icon-list-item,
footer .cbce-reach-col a,
footer .cbce-brands-col a {
    color: #FFFFFF !important;
}
footer .cbce-reach-col a:hover,
footer .cbce-brands-col a:hover {
    color: var(--wdtPrimaryColor, #fda002) !important;
}
footer .cbce-brands-col li:not(:has(a)) .elementor-icon-list-text {
    color: rgba(255, 255, 255, 0.78) !important;
}

/* Footer body items: Reach Us and Our Brands matched to Quick Links / Services.
   Targets measured from Quick Links: 16px / 500 / 25.92px, 10px between items.
   The earlier 0.9rem + line-height 1.45 + margin-bottom 7px is what made them
   differ; spacing is done with padding-bottom to match the theme's own li rule. */
footer .cbce-reach-col .elementor-icon-list-text,
footer .cbce-brands-col .elementor-icon-list-text,
footer .cbce-reach-col .elementor-icon-list-item,
footer .cbce-brands-col .elementor-icon-list-item,
footer .cbce-reach-col .elementor-icon-list-item a,
footer .cbce-brands-col .elementor-icon-list-item a {
    font-size: 16px !important;
    font-weight: 500 !important;
    line-height: 25.92px !important;
}
footer .cbce-reach-col .elementor-icon-list-item,
footer .cbce-brands-col .elementor-icon-list-item {
    margin-bottom: 0 !important;
    padding-bottom: 10px !important;
}
footer .cbce-reach-col .elementor-icon-list-item:last-child,
footer .cbce-brands-col .elementor-icon-list-item:last-child {
    padding-bottom: 0 !important;
}

/* Contact page — the orange "Request a Consultation" block (10 Aug 2026).
   Replaces four cramped side-by-side cards that wrapped mid-word. Everything
   here is full width inside the existing orange column; the column, its
   background and the theme wrappers are untouched. */
.cbce-consult { width: 100%; }
.cbce-consult-title {
    margin: 0 0 10px;
    font-family: "Manrope", sans-serif;
    font-size: clamp(1.4rem, 1.25rem + 0.7vw, 1.9rem);
    font-weight: 700;
    line-height: 1.25;
    color: var(--wdtSecondaryColor, #002458);
}
.cbce-consult-intro {
    margin: 0 0 22px;
    font-size: clamp(0.95rem, 0.92rem + 0.15vw, 1.02rem);
    line-height: 1.65;
    color: rgba(0, 36, 88, 0.85);
}
.cbce-consult-actions {
    display: flex;
    flex-direction: column;
    gap: 12px;
    width: 100%;
}
.cbce-cta {
    display: block;
    width: 100%;
    box-sizing: border-box;
    padding: 18px 24px;
    border-radius: 12px;
    background: #ffffff;
    border: 1px solid rgba(0, 36, 88, 0.14);
    font-family: "Manrope", sans-serif;
    font-size: clamp(0.95rem, 0.9rem + 0.2vw, 1.05rem);
    font-weight: 700;
    line-height: 1.35;
    color: var(--wdtSecondaryColor, #002458);
    text-align: center;
    text-decoration: none;
    /* keep long tokens such as the email address on one line where they fit,
       and break at the token boundary rather than mid-word if they do not */
    white-space: normal;
    word-break: keep-all;
    overflow-wrap: normal;
    transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}
.cbce-cta:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(0, 36, 88, 0.16);
    color: var(--wdtSecondaryColor, #002458);
}
.cbce-cta-primary {
    background: var(--wdtSecondaryColor, #002458);
    border-color: var(--wdtSecondaryColor, #002458);
    color: #ffffff;
}
.cbce-cta-primary:hover { color: #ffffff; background: #00306f; }

@media (max-width: 480px) {
    .cbce-cta { padding: 16px 14px; font-size: 0.92rem; overflow-wrap: anywhere; }
}

/* /services/ cards: image added 10 Aug 2026 (the cards shipped text-only on
   9 Aug because the only images on the server were the template's trade photos). */
.cbce-service-card { padding: 0 0 26px; overflow: hidden; }
.cbce-service-card-img { margin: 0 0 18px; display: block; }
.cbce-service-card-img img {
    width: 100%;
    height: 190px;
    object-fit: cover;
    object-position: center;
    display: block;
    border-radius: 16px 16px 0 0;
    transition: transform 0.3s ease;
}
.cbce-service-card:hover .cbce-service-card-img img { transform: scale(1.04); }
.cbce-service-card .wdt-content-title,
.cbce-service-card .wdt-content-description,
.cbce-service-card .wdt-content-button { padding-left: 26px; padding-right: 26px; }
