/* =========================================================================
   Jay Jay Mills — Elementor bridge
   =========================================================================
   Elementor wraps every widget in section > container > column > widget-wrap >
   widget > widget-container. Six nested divs with their own max-widths and
   paddings would quietly break the prototype's full-bleed grids.

   Every JJM template section carries the class .jjm-block, and this file
   flattens the wrappers inside it so the original markup behaves exactly as it
   did in the static build. Nothing else on the site is touched, so any other
   Elementor content you build later is unaffected.
   ====================================================================== */

.jjm-block,
.jjm-block > .elementor-container,
.jjm-block > .e-con-inner,
.jjm-block .elementor-column,
.jjm-block .elementor-column-wrap,
.jjm-block .elementor-widget-wrap,
.jjm-block .elementor-widget,
.jjm-block .elementor-widget-html,
.jjm-block .elementor-widget-container {
	max-width: none !important;
	width: 100% !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: none !important;
	box-shadow: none !important;
}

.jjm-block,
.jjm-block > .elementor-container,
.jjm-block > .e-con-inner {
	display: block !important;
}

.jjm-block .elementor-widget:not(:last-child) {
	margin-bottom: 0 !important;
}

/* Elementor sets a 100% width on nested containers only when it is flex —
   restore normal block flow for our raw markup. */
.jjm-block.e-con,
.jjm-block.e-con-boxed {
	--container-max-width: none;
	--padding-block-start: 0;
	--padding-block-end: 0;
	--padding-inline-start: 0;
	--padding-inline-end: 0;
	gap: 0;
}

/* -------------------------------------------------------------------------
   Header & footer theme-builder locations
   ---------------------------------------------------------------------- */
.elementor-location-header,
.elementor-location-footer {
	margin: 0;
	padding: 0;
}

/* The site header is fixed, so its Theme Builder wrapper must not reserve
   space or create a stacking context above the mobile menu. */
.elementor-location-header {
	position: relative;
	z-index: 100;
}

/* -------------------------------------------------------------------------
   Page shell
   ---------------------------------------------------------------------- */

/* Hello Elementor / Astra / GeneratePress content padding would push the
   full-bleed hero away from the viewport edges. */
.jjm-site .site-main,
.jjm-site .site-content,
.jjm-site #content,
.jjm-site #primary,
.jjm-site .ast-container,
.jjm-site .entry-content {
	max-width: none;
	margin: 0;
	padding: 0;
}

.jjm-site .entry-header,
.jjm-site .page-header,
.jjm-site .entry-title {
	display: none;
}

/* WordPress admin bar offset for the fixed header. */
body.admin-bar .site-header {
	top: 32px;
}

@media (max-width: 782px) {
	body.admin-bar .site-header {
		top: 46px;
	}
}

/* -------------------------------------------------------------------------
   Editor canvas
   ---------------------------------------------------------------------- */

/* Full-viewport heroes are unusable in the editor if they also run their
   entrance motion, so hold them still and let the section be selectable. */
body.elementor-editor-active .page-loader,
body.elementor-editor-preview .page-loader {
	display: none !important;
}

body.elementor-editor-active .reveal,
body.elementor-editor-active .image-reveal,
body.elementor-editor-preview .reveal,
body.elementor-editor-preview .image-reveal {
	opacity: 1 !important;
	transform: none !important;
	clip-path: none !important;
}

body.elementor-editor-active .site-header,
body.elementor-editor-preview .site-header {
	position: absolute;
}
