/* ==========================================================================
   B West Builders — grid overrides that must out-specify Elementor's .e-con
   Elementor sets `.e-con { display: flex }`; these two-class selectors win.
   ========================================================================== */

.e-con.bw-split,
.e-con-inner.bw-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: center;
}
@media (max-width: 860px) {
  .e-con.bw-split,
  .e-con-inner.bw-split { grid-template-columns: 1fr; }
}

.e-con.bw-services-grid,
.e-con-inner.bw-services-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  align-items: start;
}
@media (max-width: 700px) {
  .e-con.bw-services-grid,
  .e-con-inner.bw-services-grid { grid-template-columns: 1fr; }
}

.e-con.bw-trust-strip,
.e-con-inner.bw-trust-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  align-items: start;
}
@media (max-width: 700px) {
  .e-con.bw-trust-strip,
  .e-con-inner.bw-trust-strip { grid-template-columns: 1fr; }
}

.e-con.bw-testimonials-grid,
.e-con-inner.bw-testimonials-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  align-items: start;
}
@media (max-width: 900px) {
  .e-con.bw-testimonials-grid,
  .e-con-inner.bw-testimonials-grid { grid-template-columns: 1fr; }
}

.e-con.bw-feature-list { display: flex; flex-direction: column; }
.e-con.bw-feature-item { display: flex; flex-direction: row; align-items: flex-start; flex-wrap: nowrap; }
.e-con.bw-feature-item > .elementor-widget-html { width: auto; flex: none; }
.e-con.bw-feature-item > .e-con { flex: 1 1 auto; }

.e-con.bw-cta-actions { display: flex; flex-direction: row; justify-content: center; flex-wrap: wrap; }
.e-con.bw-cta-actions > .elementor-widget { width: auto; }

/* Reversed splits: media column moves to the right on desktop */
.e-con.bw-split--reverse > .bw-split-media { order: 2; }
@media (max-width: 860px) {
  .e-con.bw-split--reverse > .bw-split-media { order: 0; }
}

/* Elementor widgets inside our components should not add stray spacing */
.bw-service-card > .elementor-widget:last-child,
.bw-trust-strip > .e-con > .elementor-widget:last-child,
.bw-feature-item .elementor-widget:last-child { margin-bottom: 0; }

.bw-service-card .elementor-widget-heading .elementor-heading-title { font-size: var(--bw-fs-xl); }
.bw-trust-strip .elementor-widget-heading .elementor-heading-title { font-size: var(--bw-fs-lg); }
.bw-feature-item .elementor-widget-heading .elementor-heading-title { font-size: var(--bw-fs-lg); margin-bottom: 4px; }
.bw-feature-item .elementor-widget-text-editor p,
.bw-service-card .elementor-widget-text-editor p,
.bw-trust-strip .elementor-widget-text-editor p { font-size: var(--bw-fs-sm); margin-bottom: 0; }

/* Elementor's default paragraph bottom margin inside prose blocks */
.elementor-widget-text-editor p { margin: 0 0 var(--bw-space-3); color: var(--bw-text-secondary); }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Elementor resets heading line-height to 1; restore the design token.
   Three classes so this out-specifies widget-heading.min.css and the kit CSS. */
.elementor-element.elementor-widget.elementor-widget-heading .elementor-heading-title {
  font-family: var(--bw-font);
  font-weight: var(--bw-fw-bold);
  line-height: var(--bw-lh-tight);
  color: var(--bw-text-primary);
  margin: 0;
}
.elementor-element.elementor-widget-heading h1.elementor-heading-title { font-size: clamp(var(--bw-fs-3xl), 5vw, var(--bw-fs-5xl)); }
.elementor-element.elementor-widget-heading h2.elementor-heading-title { font-size: var(--bw-fs-4xl); }
.elementor-element.elementor-widget-heading h3.elementor-heading-title { font-size: var(--bw-fs-xl); }
.elementor-element.elementor-widget-text-editor p { margin: 0 0 var(--bw-space-3); color: var(--bw-text-secondary); font-size: inherit; }
.elementor-element.elementor-widget-text-editor p:last-child { margin-bottom: 0; }

/* Hero: centre the boxed inner within the tall container */
.e-con.bw-hero { align-content: center; }
.e-con.bw-hero > .e-con-inner {
  justify-content: center;
  align-items: center;
  text-align: center;
}
.e-con.bw-hero .elementor-heading-title,
.e-con.bw-cta-banner .elementor-heading-title { color: var(--bw-text-inverse); }
.e-con.bw-cta-banner > .e-con-inner { text-align: center; }

/* CTA banner + hero copy inherits the inverse palette */
.e-con.bw-cta-banner .elementor-widget-text-editor p { color: rgba(255, 255, 255, 0.85); }
.e-con.bw-cta-banner .elementor-widget-text-editor strong { color: var(--bw-text-inverse); }
.e-con.bw-hero .bw-hero-sub p { color: rgba(255, 255, 255, 0.85); }

/* Elementor button widget wrapper alignment */
.bw-btn .elementor-widget-container { display: flex; }
.bw-btn.elementor-widget-button .elementor-button-wrapper { display: inline-flex; }
