/*
 * Neutralize core block-library spacing the static design never had.
 * Loaded after wp-block-library and before the per-page stylesheets, at the
 * same specificity as core's rules, so page CSS can still override normally.
 */
.wp-block-image figcaption {
	margin-top: 0;
	margin-bottom: 0;
}

/*
 * Elementor inserts 20px after every widget; the original design spaces
 * elements through its own margins. Higher specificity than Elementor's
 * .elementor-widget:not(:last-child) so it wins regardless of load order.
 */
.elementor-section .elementor-widget:not(:last-child) {
	margin-bottom: 0;
}

/*
 * Elementor's widget stack is a flex column; flex items never collapse
 * margins, which inflates the original design's sibling spacing (it relies
 * on normal-flow margin collapsing). Restore block flow inside columns.
 */
.elementor-section .elementor-column .elementor-widget-wrap.elementor-element-populated {
	display: block;
}

/*
 * Case-study article layout: reproduce the original .article-wrap grid
 * (1fr 300px, clamp gap, 1100px max) on the Elementor two-column section.
 * The section itself must not become a grid (its container is the only
 * child), so geometry is mapped onto container/columns instead.
 */
.elementor-section.article-wrap-sec > .elementor-container,
.elementor-section.elementor-section-boxed.article-wrap-sec > .elementor-container {
	max-width: 1100px;
	padding: clamp(48px, 7vw, 80px) var(--pad);
	gap: clamp(32px, 5vw, 64px);
	align-items: flex-start;
}
.elementor-section.article-wrap-sec > .elementor-container > .elementor-column:first-child {
	width: auto;
	flex: 1 1 0;
}
.elementor-section.article-wrap-sec > .elementor-container > .elementor-column:last-child {
	width: 300px;
	flex: 0 0 300px;
}
