/* ══════════════════════════════════════════════
   CMP Master — builder compatibility layer (v3.3.0)
   Per-builder fixes for all module front-end output. The builder is
   detected server-side (cmp_get_builder) and exposed two ways:
   - body class:            .cmp-builder-{divi5|divi4|elementor|beaver|gutenberg|default}
   - cards wrapper class:   .cmp-cards--{builder}
   ══════════════════════════════════════════════ */

/* ---- Universal: flex/grid-child overflow safety ----
   A CSS grid inside ANY flex column can overflow its track unless
   min-width is released. Covers Divi 5 flex columns, Elementor
   containers, and theme flex wrappers alike. */
.cmp-cards,
.cmp-pub-grid {
	min-width: 0;
	width: 100%;
	box-sizing: border-box;
}

/* ══════════ Divi 5 (flex layout system) ══════════ */

/* Flex columns constrain children; release and fill. */
.et_flex_column .cmp-cards,
.et_flex_column .cmp-pub-grid,
.et_pb_code_inner > .cmp-cards,
.et_pb_code_inner > .cmp-pub-grid {
	min-width: 0;
	width: 100%;
	flex: 1 1 auto;
}

/* Divi's highest-specificity link colour rule is
   ".et-db #et-boc .et-l a" — it repaints embedded link/button
   colours unless matched at equal or higher specificity. */
.et-db #et-boc .et-l .cmp-card__links a,
.cmp-builder-divi5 .cmp-card__links a,
.cmp-builder-divi4 .cmp-card__links a {
	color: var(--cmp-cards-link-color, #FFFFFF) !important;
	text-decoration: none !important;
}
.et-db #et-boc .et-l .cmp-card__button,
.cmp-builder-divi5 .cmp-card__button,
.cmp-builder-divi4 .cmp-card__button {
	color: #FFFFFF !important;
	text-decoration: none !important;
}
.et-db #et-boc .et-l .cmp-card__body a {
	color: #000080;
}

/* Divi's link rule also bleeds into the CMP header nav, painting
   its own underline on top of ours and causing the double-line.
   Suppress at the same specificity for all nav link states. */
.et-db #et-boc .et-l a.cmp-header__nav-link,
.et-db #et-boc .et-l a.cmp-header__nav-link:hover,
.et-db #et-boc .et-l a.cmp-header__nav-link:focus,
.cmp-builder-divi5 a.cmp-header__nav-link,
.cmp-builder-divi5 a.cmp-header__nav-link:hover,
.cmp-builder-divi5 a.cmp-header__nav-link:focus,
.cmp-builder-divi4 a.cmp-header__nav-link,
.cmp-builder-divi4 a.cmp-header__nav-link:hover,
.cmp-builder-divi4 a.cmp-header__nav-link:focus {
	text-decoration: none !important;
	border-bottom: none !important;
}
/* Active page link: restore our single gold underline */
.et-db #et-boc .et-l a.cmp-header__nav-link.cmp-header__nav-link--active,
.cmp-builder-divi5 a.cmp-header__nav-link.cmp-header__nav-link--active,
.cmp-builder-divi4 a.cmp-header__nav-link.cmp-header__nav-link--active {
	text-decoration-line: underline !important;
	text-decoration-color: var(--cmp-active-colour, #B8961E) !important;
	text-decoration-thickness: var(--cmp-active-thick, 2px) !important;
	text-underline-offset: 4px !important;
}

/* Divi resets button-element styling inside modules; the accordion
   toggle is a real <button> and must stay transparent. */
.et-db #et-boc .et-l .cmp-card__toggle,
.cmp-builder-divi5 .cmp-card__toggle {
	background: transparent !important;
	border: none !important;
	padding: 36px 28px;
}

/* Divi 5 sections apply default padding at ≥1350px; card grids
   placed edge-to-edge should not inherit double spacing. */
.cmp-builder-divi5 .et_pb_code .cmp-cards {
	margin-left: 0;
	margin-right: 0;
}

/* ══════════ Elementor ══════════ */

.elementor-widget-container .cmp-cards,
.elementor-widget-container .cmp-pub-grid {
	width: 100%;
	min-width: 0;
}
.elementor .cmp-card__links a,
.cmp-builder-elementor .cmp-card__links a {
	color: var(--cmp-cards-link-color, #FFFFFF) !important;
	text-decoration: none !important;
}

/* ══════════ Gutenberg / block themes ══════════ */

/* Block themes constrain .entry-content children to contentSize;
   let card grids use their container's full width. */
.entry-content > .cmp-cards,
.wp-block-shortcode .cmp-cards {
	max-width: none;
}
.cmp-builder-gutenberg .cmp-card__body ul {
	list-style: none;
	padding-left: 0;
}

/* ══════════ Beaver Builder ══════════ */

.fl-module-content .cmp-cards,
.fl-module-content .cmp-pub-grid {
	width: 100%;
	min-width: 0;
}
