/* Wrapper — minimal root-level container with optional full-bleed background. */
.ef-wrapper {
	position: relative;
	max-width: var(--ef-container-width, 1140px);
	margin-inline: auto;
	padding-inline: clamp(1rem, 3vw, 2rem);
}

/* Full-bleed backgrounds */
[class*="ef-wrapper-bg--"]::before {
	content: '';
	position: absolute;
	inset-block: 0;
	left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	z-index: 0;
	pointer-events: none;
}

[class*="ef-wrapper-bg--"] > * {
	position: relative;
	z-index: 1;
}

.ef-wrapper-bg--white::before {
	background-color: var(--ef-color-white);
}

.ef-wrapper-bg--primary::before {
	background-color: var(--ef-color-primary_light);
}

.ef-wrapper-bg--secondary::before {
	background-color: var(--ef-color-secondary_light);
}

/* Search — no padding at all */
search.ef-wrapper {
	padding-inline: 0;
}

/* Footer — constrained content like sections */
footer.ef-wrapper {
	max-width: var(--ef-container-width, 1140px);
	margin-inline: auto;
}

/* Aside nested in section — section already provides padding */
section.ef-wrapper aside.ef-wrapper {
	padding-block: 0;
}

/* Footer — flush with wrapper bottom edge */
.ef-wrapper:has(> .ef-card-footer) {
	padding-block-end: 0 !important;
}

.ef-wrapper > .ef-card-footer {
	grid-column: 1 / -1;
}
