:root {
	--mmos-green: #1a332a;
	--mmos-green-deep: #10251e;
	--mmos-green-soft: #203d33;
	--mmos-orange: #d35400;
	--mmos-orange-hot: #f06a00;
	--mmos-copper: #c2511b;
	--mmos-paper: #f4f1ea;
	--mmos-paper-warm: #e8c781;
	--mmos-ink: #10100f;
	--mmos-blue: #243044;
	--mmos-blue-soft: #2f3f58;
	--mmos-muted: rgba(244, 241, 234, .78);
	--mmos-font-display: Oswald, Impact, "Arial Narrow", sans-serif;
	--mmos-font-body: "Open Sans", Arial, sans-serif;
	--mmos-space-xs: 8px;
	--mmos-space-sm: 16px;
	--mmos-space-md: 24px;
	--mmos-space-lg: 48px;
	--mmos-space-xl: 72px;
	--mmos-space-xxl: 120px;
	--mmos-shadow-hard: 8px 8px 0 var(--mmos-ink);
	--mmos-shadow-hard-sm: 5px 5px 0 var(--mmos-ink);
	--mmos-shadow-hard-lg: 14px 14px 0 var(--mmos-ink);
	--mmos-shadow-card: 0 14px 30px rgba(16, 16, 15, .22);
	--mmos-shadow-card-soft: 0 10px 24px rgba(16, 16, 15, .16);
	--mmos-radius: 4px;
	--mmos-radius-card: 10px;
	--mmos-radius-pill: 999px;
	--mmos-max-section: 1120px;
}

.elementor-widget[class*="elementor-widget-mmos_"] {
	--mmos-widget-outline: rgba(211, 84, 0, .36);
	width: 100%;
	max-width: 100%;
	min-width: 0;
	overflow-wrap: anywhere;
}

.elementor-widget[class*="elementor-widget-mmos_"],
.elementor-widget[class*="elementor-widget-mmos_"] * {
	box-sizing: border-box;
}

.elementor-widget[class*="elementor-widget-mmos_"] img,
.elementor-widget[class*="elementor-widget-mmos_"] video,
.elementor-widget[class*="elementor-widget-mmos_"] iframe {
	max-width: 100%;
}

.elementor-widget[class*="elementor-widget-mmos_"] a {
	-webkit-tap-highlight-color: rgba(211, 84, 0, .24);
}

.mmos-widget-empty {
	background: var(--mmos-paper);
	border: 3px solid var(--mmos-green);
	box-shadow: var(--mmos-shadow-hard);
	color: var(--mmos-green);
	font-weight: 900;
	padding: 18px;
}

.mmos-widget-kicker {
	display: inline-block;
	background: var(--mmos-orange);
	color: var(--mmos-paper);
	font-family: var(--mmos-font-display);
	font-size: 12px;
	font-weight: 900;
	letter-spacing: .14em;
	line-height: 1;
	padding: 8px 11px;
	text-transform: uppercase;
}

.mmos-widget-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--mmos-orange);
	border: 3px solid var(--mmos-paper);
	box-shadow: var(--mmos-shadow-hard);
	color: var(--mmos-paper) !important;
	font-family: var(--mmos-font-display);
	font-weight: 900;
	letter-spacing: .08em;
	line-height: 1;
	min-height: 44px;
	padding: 13px 18px;
	text-decoration: none !important;
	text-transform: uppercase;
	transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.mmos-widget-button:hover,
.mmos-widget-button:focus {
	background: var(--mmos-orange-hot);
	box-shadow: 2px 2px 0 var(--mmos-ink);
	transform: translate(4px, 4px);
}

.mmos-widget-section {
	width: 100%;
	max-width: 100%;
	overflow-x: clip;
}

.mmos-widget-inner {
	width: min(var(--mmos-max-section), 100%);
	max-width: 100%;
	margin-inline: auto;
}

.mmos-pw-variant-wrap,
.mmos-pw-variant-wrap * {
	box-sizing: border-box;
}

.mmos-pw-variant-wrap {
	max-width: 100%;
	overflow-x: hidden;
}

.mmos-pw-variant-wrap img {
	max-width: 100%;
	height: auto;
}

.mmos-pw-variant-newspaper .mmos-pw-feed,
.mmos-pw-variant-newspaper .mmos-pw-master {
	background: var(--mmos-paper) !important;
	border-top: 8px solid var(--mmos-orange);
	border-bottom: 8px solid var(--mmos-green);
	color: var(--mmos-green) !important;
}

.mmos-pw-variant-newspaper h3,
.mmos-pw-variant-newspaper .mmos-map-headline {
	color: var(--mmos-green) !important;
	text-shadow: 2px 2px 0 rgba(211, 84, 0, .25) !important;
}

.mmos-pw-variant-newspaper .mmos-pw-card {
	background: var(--mmos-paper) !important;
	border: 2px solid var(--mmos-green) !important;
	box-shadow: var(--mmos-shadow-hard) !important;
}

.mmos-pw-variant-field_notes .mmos-pw-feed,
.mmos-pw-variant-field_notes .mmos-pw-master {
	background: var(--mmos-green) !important;
	background-image: linear-gradient(rgba(255, 255, 255, .03) 1px, transparent 1px);
	background-size: 100% 28px;
}

.mmos-pw-variant-field_notes .mmos-pw-card {
	border: 2px solid rgba(244, 241, 234, .22) !important;
	transform: rotate(-.4deg);
}

.mmos-pw-variant-clean .mmos-pw-feed,
.mmos-pw-variant-clean .mmos-pw-master {
	background: var(--mmos-paper) !important;
	color: var(--mmos-green) !important;
}

.mmos-pw-variant-clean h3,
.mmos-pw-variant-clean .mmos-map-headline {
	color: var(--mmos-green) !important;
	text-shadow: none !important;
}

.mmos-pw-variant-clean .mmos-pw-card {
	background: var(--mmos-paper) !important;
	box-shadow: var(--mmos-shadow-card-soft) !important;
}

.mmos-pw-variant-compact .mmos-pw-feed {
	padding: 24px 0 !important;
}

.mmos-pw-variant-compact .mmos-pw-grid {
	gap: 14px !important;
}

.mmos-pw-variant-compact .mmos-pw-card {
	padding: 4px !important;
}

/* =====================================================================
   SERVICE GALLERY variant — designed for service-page drops.
   Paper cards, ink hard shadow, city badge floats on the photo,
   service badge hidden (the parent page already declares the service).
   Hover lifts the tile 3px and grows the shadow. Matches the brand
   vocabulary (Service Hero / Symptom Triage / Why Choose Us cards).
   ===================================================================== */
.mmos-pw-variant-service_gallery .mmos-pw-feed,
.mmos-pw-variant-service_gallery .mmos-pw-master {
	background: var(--mmos-paper) !important;
	color: var(--mmos-ink) !important;
	padding: clamp(48px, 7vw, 96px) clamp(16px, 4vw, 48px) !important;
}
.mmos-pw-variant-service_gallery h3,
.mmos-pw-variant-service_gallery .mmos-map-headline {
	font-family: var(--mmos-font-display, Oswald, Impact, sans-serif) !important;
	color: var(--mmos-green-deep, #1b3a2f) !important;
	font-weight: 800 !important;
	text-transform: uppercase !important;
	text-shadow: 2px 2px 0 var(--mmos-paper-warm, #e8c781) !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-grid {
	display: grid !important;
	grid-template-columns: repeat(3, 1fr) !important;
	gap: 22px !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card {
	background: #fff !important;
	border: 2px solid var(--mmos-ink, #10100f) !important;
	box-shadow: 6px 6px 0 rgba(16, 16, 15, .4) !important;
	overflow: hidden !important;
	transition: transform .2s ease, box-shadow .2s ease !important;
	display: flex !important;
	flex-direction: column !important;
	text-decoration: none !important;
	color: inherit !important;
	padding: 0 !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card:hover {
	transform: translate(-3px, -3px) !important;
	box-shadow: 9px 9px 0 var(--mmos-ink, #10100f) !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-inner {
	display: flex !important;
	flex-direction: column !important;
	height: 100% !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-media {
	position: relative !important;
	width: 100% !important;
	aspect-ratio: 4 / 3 !important;
	overflow: hidden !important;
	background: var(--mmos-paper-warm, #e8c781) !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-media img {
	width: 100% !important;
	height: 100% !important;
	object-fit: cover !important;
	display: block !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-badges {
	position: absolute !important;
	left: 12px !important;
	bottom: 12px !important;
	right: auto !important;
	top: auto !important;
	display: flex !important;
	gap: 6px !important;
	flex-wrap: wrap !important;
	max-width: calc(100% - 24px) !important;
	pointer-events: none !important;
}
/* Hide the service badge — page-level Service Hero already declares the service. */
.mmos-pw-variant-service_gallery .mmos-pw-card-badge--service {
	display: none !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-badge--city {
	background: var(--mmos-green-deep, #1b3a2f) !important;
	color: var(--mmos-paper, #f4f1ea) !important;
	font-family: var(--mmos-font-display, Oswald, sans-serif) !important;
	font-size: .68rem !important;
	font-weight: 800 !important;
	letter-spacing: .14em !important;
	text-transform: uppercase !important;
	padding: 5px 10px !important;
	border: 2px solid var(--mmos-paper, #f4f1ea) !important;
	box-shadow: 2px 2px 0 var(--mmos-ink, #10100f) !important;
	line-height: 1 !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-body {
	padding: 14px 16px 16px !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 6px !important;
	flex: 1 !important;
	background: #fff !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-title {
	font-family: var(--mmos-font-display, Oswald, sans-serif) !important;
	font-weight: 700 !important;
	font-size: clamp(.95rem, 1.4vw, 1.1rem) !important;
	line-height: 1.25 !important;
	color: var(--mmos-green-deep, #1b3a2f) !important;
	margin: 0 !important;
	letter-spacing: .01em !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-desc {
	font-family: var(--mmos-font-body, Roboto, sans-serif) !important;
	font-size: .82rem !important;
	line-height: 1.5 !important;
	color: rgba(16, 16, 15, .7) !important;
	margin: 0 !important;
	display: -webkit-box !important;
	-webkit-line-clamp: 2 !important;
	-webkit-box-orient: vertical !important;
	overflow: hidden !important;
}
.mmos-pw-variant-service_gallery .mmos-pw-card-cta {
	font-family: var(--mmos-font-display, Oswald, sans-serif) !important;
	font-size: .72rem !important;
	font-weight: 800 !important;
	letter-spacing: .12em !important;
	text-transform: uppercase !important;
	color: var(--mmos-copper, #c2511b) !important;
	margin-top: auto !important;
	padding-top: 8px !important;
}
/* Mobile: 2-up compact */
@media (max-width: 880px) {
	.mmos-pw-variant-service_gallery .mmos-pw-grid {
		grid-template-columns: repeat(2, 1fr) !important;
		gap: 14px !important;
	}
}
@media (max-width: 480px) {
	.mmos-pw-variant-service_gallery .mmos-pw-card {
		box-shadow: 4px 4px 0 rgba(16, 16, 15, .4) !important;
	}
	.mmos-pw-variant-service_gallery .mmos-pw-card-body {
		padding: 10px 12px 12px !important;
	}
	.mmos-pw-variant-service_gallery .mmos-pw-card-title {
		font-size: .82rem !important;
	}
	.mmos-pw-variant-service_gallery .mmos-pw-card-desc {
		font-size: .72rem !important;
		-webkit-line-clamp: 2 !important;
	}
	.mmos-pw-variant-service_gallery .mmos-pw-card-badge--city {
		font-size: .58rem !important;
		padding: 4px 8px !important;
		left: 8px !important;
	}
	.mmos-pw-variant-service_gallery .mmos-pw-card-badges {
		left: 8px !important;
		bottom: 8px !important;
	}
}

.mmos-trust-strip,
.mmos-trust-strip * {
	box-sizing: border-box;
}

/* =====================================================================
   TRUST / WHY CHOOSE US — SCROLL STOPPER.
   Rebuilt 2026-05-11 (round 2) — this is the proof anchor of every page.
   Billboard-tall, asymmetric composition, giant rating moment, stamp-cluster
   callouts, halftone+ridge decorative chrome, Pattern B copper-gasket emboss
   on the slogan. Owns the screen. Reads as a WPA-poster trust certification,
   not a section among sections.
   ===================================================================== */

.mmos-trust-strip {
	width: 100%;
	max-width: 100%;
	overflow: hidden; /* contain decorative chrome — pseudoelements cannot leak into the next widget below */
	background-color: var(--mmos-green);
	background-image:
		/* Wasatch ridge silhouette across the bottom — inline SVG via data URI */
		url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 240' preserveAspectRatio='none'><path d='M0,240 L0,170 L120,128 L210,150 L300,84 L420,138 L520,72 L640,116 L750,58 L880,118 L1000,72 L1120,140 L1240,90 L1340,130 L1440,72 L1440,240 Z' fill='%2310251e' opacity='.55'/><path d='M0,240 L0,200 L100,170 L200,188 L320,152 L450,182 L570,148 L700,184 L820,150 L960,188 L1100,158 L1230,194 L1340,168 L1440,196 L1440,240 Z' fill='%2310251e' opacity='.75'/></svg>"),
		/* Halftone dots in upper-left + lower-right for vintage poster reproduction */
		radial-gradient(circle at 12% 18%, rgba(211, 84, 0, .18), transparent 30%),
		radial-gradient(circle at 92% 86%, rgba(195, 81, 27, .14), transparent 36%),
		/* Top-down depth wash */
		linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.18) 100%),
		var(--mmos-trust-bg, none);
	background-size: 110% auto, auto, auto, auto, cover;
	background-position: bottom center, top left, bottom right, center, center;
	background-repeat: no-repeat;
	border-top: 8px solid var(--mmos-orange);
	border-bottom: 8px solid var(--mmos-orange);
	color: var(--mmos-paper);
	padding: clamp(72px, 9vw, 120px) clamp(24px, 4vw, 56px);
	position: relative;
	/* Let content drive height. No fixed min-height — that was overlapping the
	   widget below (Recent Reviews on the Sandy page) at viewports where the
	   section forced 88vh past the next section's start. */
}

/* Corner ornaments — copper rivets in all four corners, like a riveted plaque */
.mmos-trust-strip::after {
	content: "";
	position: absolute;
	inset: 22px;
	pointer-events: none;
	background:
		radial-gradient(circle at top left, var(--mmos-copper) 0 5px, transparent 6px) no-repeat top left / 16px 16px,
		radial-gradient(circle at top right, var(--mmos-copper) 0 5px, transparent 6px) no-repeat top right / 16px 16px,
		radial-gradient(circle at bottom left, var(--mmos-copper) 0 5px, transparent 6px) no-repeat bottom left / 16px 16px,
		radial-gradient(circle at bottom right, var(--mmos-copper) 0 5px, transparent 6px) no-repeat bottom right / 16px 16px;
}

/* Paper-grain noise + halftone dots — pure CSS, no asset dependency. */
.mmos-trust-strip::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background-image:
		repeating-radial-gradient(circle at 25% 25%, rgba(244, 241, 234, .035) 0 1px, transparent 1px 3px),
		repeating-radial-gradient(circle at 75% 75%, rgba(0, 0, 0, .04) 0 1px, transparent 1px 5px);
	opacity: .9;
}

.mmos-trust-inner {
	max-width: 1240px;
	width: 100%;
	margin: 0 auto;
	display: grid;
	grid-template-columns: 5fr 7fr;
	gap: clamp(32px, 6vw, 80px);
	align-items: center;
	position: relative;
	z-index: 1;
}

.mmos-trust-main {
	min-width: 0;
}

.mmos-trust-kicker {
	color: var(--mmos-orange);
	text-transform: uppercase;
	font-family: var(--mmos-font-display);
	font-weight: 800;
	letter-spacing: .18em;
	font-size: clamp(.85rem, 1.3vw, 1rem);
	margin: 0 0 14px;
}

/* Headline — Pattern A from style guide §3.3 (4-direction outline + offset depth) */
.mmos-trust-heading {
	font-family: var(--mmos-font-display);
	font-weight: 800;
	text-transform: uppercase;
	font-size: clamp(2.6rem, 5.5vw, 5rem);
	line-height: .92;
	letter-spacing: -.01em;
	margin: 0 0 18px;
	color: var(--mmos-paper);
	word-break: keep-all;
	overflow-wrap: normal;
	hyphens: none;
	text-shadow:
		-1.5px -1.5px 0 var(--mmos-green-deep),
		1.5px -1.5px 0 var(--mmos-green-deep),
		-1.5px 1.5px 0 var(--mmos-green-deep),
		1.5px 1.5px 0 var(--mmos-green-deep),
		3px 4px 0 rgba(16, 16, 15, .55);
}

.mmos-trust-subhead {
	font-family: var(--mmos-font-body);
	font-size: clamp(1.05rem, 1.5vw, 1.2rem);
	line-height: 1.55;
	color: rgba(244, 241, 234, .88);
	max-width: 540px;
	/* margin: 0 auto centers the BLOCK within its parent. text-align: center
	   centers the TEXT inside. Both are needed — text-align on the parent
	   only centers inline content, not block children with a max-width.
	   Previously was margin:0 0 26px which stuck the 540px-wide paragraph to
	   the left edge of a centered parent column while every other element
	   (kicker / headline / button) appeared centered. Visible asymmetry. */
	margin: 0 auto 26px;
	text-align: center;
}

/* Read Reviews button — WPA Button pattern per §8.2 */
.mmos-trust-btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	text-decoration: none !important;
	background: var(--mmos-orange);
	color: var(--mmos-paper) !important;
	font-family: var(--mmos-font-display);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .14em;
	font-size: 1rem;
	padding: 16px 26px;
	border: 3px solid var(--mmos-paper);
	box-shadow: var(--mmos-shadow-hard);
	transition: transform .15s ease, box-shadow .15s ease;
}

.mmos-trust-btn:hover,
.mmos-trust-btn:focus {
	transform: translate(-2px, -2px);
	box-shadow: var(--mmos-shadow-hard-lg);
	color: var(--mmos-paper) !important;
}

/* =====================================================================
   PAST WORK CARDS — Polaroid project receipts.
   Used by Past Work Feed, Related Past Work, Combo Highlights widgets.
   Brand vocabulary: copper border, paper-warm inset, alternating rotation
   per nth-of-type, copper rivet anchor, vintage license-style service +
   city badges in the corner, View Project WPA button at the bottom.
   ===================================================================== */

/* Pin the anchor color across all link-pseudo states so the theme's a:link
   rule (pink, blue, whatever) can't bleed into the card body. Without this
   the title/desc inherit the theme's link color even though the .mmos-pw-card-*
   children have explicit colors — specificity-wise, the children win for their
   own elements, but the inherited color still shows through any unstyled spans. */
a.mmos-pw-card,
a.mmos-pw-card:link,
a.mmos-pw-card:visited,
a.mmos-pw-card:hover,
a.mmos-pw-card:focus,
a.mmos-pw-card:active {
	display: block;
	text-decoration: none !important;
	color: var(--mmos-ink) !important;
	font-family: var(--mmos-font-display);
	transition: transform .15s ease, box-shadow .15s ease;
	position: relative;
}

.mmos-pw-card-inner {
	background: var(--mmos-paper);
	border: 3px solid var(--mmos-copper);
	box-shadow:
		inset 0 0 0 2px var(--mmos-paper-warm),
		var(--mmos-shadow-hard);
	overflow: hidden;
	position: relative;
}

/* Copper rivet anchor — top-left corner, like a thumb tack pinned through the polaroid */
.mmos-pw-card::before {
	content: "";
	position: absolute;
	top: -6px;
	left: -6px;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background: var(--mmos-copper);
	box-shadow:
		inset 1px 1px 2px rgba(244, 241, 234, .4),
		inset -1px -1px 2px rgba(16, 16, 15, .35),
		2px 2px 0 var(--mmos-ink);
	z-index: 2;
}

/* Alternating rotation — within a feed, cards get different angles for the
   hand-pinned wall feel. nth-of-type because the cards are <a> siblings in a grid. */
.mmos-pw-card:nth-of-type(3n+1) { transform: rotate(-.7deg); }
.mmos-pw-card:nth-of-type(3n+2) { transform: rotate(.5deg); }
.mmos-pw-card:nth-of-type(3n+3) { transform: rotate(-.4deg); }

.mmos-pw-card:hover,
.mmos-pw-card:focus {
	transform: translate(-3px, -3px) rotate(0deg);
	box-shadow: var(--mmos-shadow-hard-lg);
	z-index: 1;
}

.mmos-pw-card-media {
	position: relative;
	overflow: hidden;
}

/* Vintage service + city badges — pinned top-left of the photo. Letterpress feel. */
.mmos-pw-card-badges {
	position: absolute;
	top: 12px;
	left: 12px;
	display: flex;
	gap: 6px;
	flex-wrap: wrap;
	z-index: 1;
}

.mmos-pw-card-badge {
	display: inline-block;
	padding: 5px 10px;
	font-family: var(--mmos-font-display);
	font-weight: 800;
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: .12em;
	color: var(--mmos-paper);
	border: 1.5px solid var(--mmos-paper);
	box-shadow:
		inset 0 0 0 1px transparent,
		2px 2px 0 var(--mmos-ink);
}

.mmos-pw-card-badge--service { background: var(--mmos-copper); }
.mmos-pw-card-badge--city    { background: var(--mmos-green-deep); }

/* Compound .mmos-pw-card prefix bumps specificity so card text colors win against
   any parent Elementor section text-color rule that might inherit through. Also
   guards against the "pink text" bug where parent context's color cascaded down
   when the card body didn't set explicit color rules. */
.mmos-pw-card .mmos-pw-card-body {
	background: var(--mmos-paper);
	color: var(--mmos-ink);
	padding: 20px 22px 22px;
	border-top: 2px dashed var(--mmos-copper);
}

.mmos-pw-card .mmos-pw-card-title {
	font-family: var(--mmos-font-display);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .04em;
	font-size: clamp(1rem, 1.4vw, 1.2rem);
	line-height: 1.15;
	color: var(--mmos-green-deep);
	margin: 0 0 12px;
}

.mmos-pw-card .mmos-pw-card-desc {
	font-family: var(--mmos-font-body);
	font-size: .94rem;
	line-height: 1.55;
	color: rgba(26, 51, 42, .82);
	margin: 0 0 16px;
}

/* View Project → WPA button pattern, sized down to fit inside the card */
.mmos-pw-card .mmos-pw-card-cta {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 9px 16px;
	background: var(--mmos-orange);
	color: var(--mmos-paper);
	border: 2px solid var(--mmos-paper);
	box-shadow: var(--mmos-shadow-hard-sm);
	font-family: var(--mmos-font-display);
	font-weight: 800;
	font-size: .85rem;
	text-transform: uppercase;
	letter-spacing: .12em;
}

.mmos-pw-card:hover .mmos-pw-card-cta,
.mmos-pw-card:focus .mmos-pw-card-cta {
	background: var(--mmos-orange-hot);
}

/* Mobile — single column, kill the rotation so cards stack cleanly */
@media (max-width: 720px) {
	.mmos-pw-card:nth-of-type(3n+1),
	.mmos-pw-card:nth-of-type(3n+2),
	.mmos-pw-card:nth-of-type(3n+3) {
		transform: rotate(-.4deg);
	}
}

/* CREDENTIALS WALL — Trust widget's job in the funnel is "WE ARE PROS",
   not "look at our rating." The actual rating moment lives in the Recent
   Reviews widget directly below. So:
     - Rating block is HIDDEN by default (only the 'scorecard' variant shows it)
     - Badges (Licensed / Locally Owned / Clean Work) become the visual anchor
     - They render as oversized credential stamps, not chips
   This is the credentials zone. Reviews zone comes next. Process zone after.
   Floating Book Now catches the convert at any point. */

/* Credentials wall takes the full right column now. The score block was
   pulled from PHP render (Trust = credentials, Reviews = rating). Stamps
   are spaced larger and feel like the main proof artifact, not garnish. */
.mmos-trust-proof {
	display: flex;
	flex-direction: column;
	gap: 20px;
	min-width: 0;
	justify-content: center;
}

/* Score block legacy CSS — kept as belt-and-suspenders. If any old cached
   render still emits the .mmos-trust-score div, this rule hides it. */
.mmos-trust-score { display: none !important; }

/* CREDENTIAL STAMPS — these ARE the proof in the default variant. Big, hand-pinned,
   reads like real plumber license plates / BBB badges / years-in-business stamps. */
.mmos-trust-strip ul {
	display: grid;
	grid-template-columns: 1fr;
	gap: 18px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.mmos-trust-strip li {
	background: var(--mmos-paper);
	color: var(--mmos-ink);
	border: 3px solid var(--mmos-copper);
	padding: 20px 26px;
	font-family: var(--mmos-font-display);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .1em;
	font-size: clamp(1rem, 1.4vw, 1.2rem);
	text-align: left;
	min-width: 0;
	position: relative;
	box-shadow:
		inset 0 0 0 2px var(--mmos-paper-warm),
		var(--mmos-shadow-hard);
	line-height: 1.25;
}

/* No rotation on credential pills. The rotate(-1.2 / .8 / -.6deg) values were
   tuned for compact stamp-sized items, but at the pill widths these render at
   (~600-800px wide) the rotation + hard ink shadow combine into a visible
   parallelogram printing-error look. The rivet + paper-warm inset border +
   5×5 ink shadow already provide enough hand-stamped character without
   dragging the box-shadow along a rotated baseline. */
.mmos-trust-strip li:nth-child(n) { transform: none; }

/* Copper rivet on the left of each stamp — like a license tab tacked onto the wall. */
.mmos-trust-strip li::before {
	content: "";
	position: absolute;
	left: -8px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--mmos-copper);
	box-shadow:
		inset 1px 1px 2px rgba(244, 241, 234, .4),
		inset -1px -1px 2px rgba(16, 16, 15, .35),
		2px 2px 0 var(--mmos-ink);
}

/* Quote variant — already strong but tighten the copy quality */
.mmos-trust-strip blockquote {
	margin: 0;
	background: var(--mmos-paper);
	color: var(--mmos-ink);
	border-left: 10px solid var(--mmos-orange);
	padding: 26px 30px;
	font-family: var(--mmos-font-body);
	font-size: clamp(1.15rem, 1.7vw, 1.35rem);
	line-height: 1.5;
	box-shadow: var(--mmos-shadow-hard-lg);
	position: relative;
}

.mmos-trust-strip cite {
	display: block;
	margin-top: 14px;
	font-family: var(--mmos-font-display);
	text-transform: uppercase;
	letter-spacing: .1em;
	color: var(--mmos-copper);
	font-style: normal;
	font-weight: 800;
}

/* STAMP variant — adds inset museum frame around the whole inner composition. */
.mmos-trust-stamp .mmos-trust-inner {
	background: rgba(16, 37, 30, .55);
	border: 3px solid var(--mmos-copper);
	box-shadow:
		inset 0 0 0 2px var(--mmos-green-deep),
		inset 0 0 0 4px rgba(244, 241, 234, .12),
		var(--mmos-shadow-hard-lg);
	padding: clamp(34px, 4vw, 56px);
}

/* MOBILE — credential stamps stack as a wall of badges, more aggressive rotation
   to read as "hand-pinned" at smaller sizes. */
@media (max-width: 880px) {
	.mmos-trust-inner {
		grid-template-columns: 1fr;
		gap: 36px;
	}
	.mmos-trust-strip li {
		font-size: 1rem;
		padding: 16px 22px;
	}
	/* Mobile pills also stay flat — see desktop note above for why. */
	.mmos-trust-strip li:nth-child(n) { transform: none; }
	.mmos-trust-scorecard .mmos-trust-score {
		flex-direction: column;
		align-items: flex-start;
	}
	.mmos-trust-scorecard .mmos-trust-score strong {
		font-size: clamp(3.5rem, 12vw, 5rem);
	}
}

.mmos-trust-cards {
	background: var(--mmos-paper);
	color: var(--mmos-green);
}

.mmos-trust-cards .mmos-trust-inner {
	grid-template-columns: 1fr;
	gap: 24px;
}

.mmos-trust-cards .mmos-trust-main {
	max-width: 760px;
	text-align: center;
	margin: 0 auto;
}

.mmos-trust-cards .mmos-trust-heading {
	color: var(--mmos-green);
	text-shadow: 2px 2px 0 rgba(211, 84, 0, .3);
}

.mmos-trust-cards .mmos-trust-subhead {
	color: var(--mmos-green);
}

.mmos-trust-cards .mmos-trust-proof {
	grid-template-columns: 280px 1fr;
	align-items: stretch;
}

.mmos-trust-cards li {
	background: var(--mmos-paper);
	color: var(--mmos-green);
	border-color: var(--mmos-green);
	box-shadow: var(--mmos-shadow-hard-sm);
	display: flex;
	align-items: center;
	justify-content: center;
}

.mmos-trust-quote {
	background: var(--mmos-green);
	background-image: linear-gradient(90deg, rgba(26, 51, 42, .92), rgba(16, 16, 15, .72)), var(--mmos-trust-bg, linear-gradient(transparent, transparent));
	background-position: center;
	background-size: cover;
}

.mmos-trust-quote .mmos-trust-inner {
	grid-template-columns: .82fr 1.18fr;
}

.mmos-trust-quote blockquote {
	font-size: clamp(1.25rem, 2.2vw, 1.9rem);
	padding: 34px;
}

.mmos-trust-scorecard {
	background: var(--mmos-blue);
}

.mmos-trust-scorecard .mmos-trust-inner {
	grid-template-columns: .9fr 1.5fr;
}

.mmos-trust-scorecard .mmos-trust-score {
	min-height: 154px;
	display: flex;
	flex-direction: column;
	justify-content: center;
}

.mmos-trust-scorecard ul {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

.mmos-trust-scorecard li {
	min-height: 104px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.mmos-trust-compact {
	padding: 32px 18px;
	background: var(--mmos-green-deep);
}

.mmos-trust-compact .mmos-trust-inner {
	grid-template-columns: minmax(220px, .7fr) 1.3fr;
	gap: 18px;
}

.mmos-trust-compact .mmos-trust-heading {
	font-size: clamp(1.6rem, 3vw, 2.8rem);
}

.mmos-trust-compact .mmos-trust-subhead {
	display: none;
}

.mmos-trust-compact ul {
	display: flex;
	flex-wrap: wrap;
}

.mmos-trust-compact li {
	flex: 1 1 180px;
}

.mmos-faq-block,
.mmos-faq-block * {
	box-sizing: border-box;
}

.mmos-faq-block {
	width: 100%;
	max-width: 100%;
	overflow-x: hidden;
	background: var(--mmos-paper);
	color: var(--mmos-green);
	padding: 54px 22px;
}

.mmos-faq-inner {
	max-width: 980px;
	width: 100%;
	margin: 0 auto;
}

.mmos-faq-heading {
	font-family: var(--mmos-font-display);
	text-transform: uppercase;
	font-size: clamp(2.1rem, 5vw, 4rem);
	line-height: 1;
	margin: 0 0 24px;
	overflow-wrap: anywhere;
}

.mmos-faq-intro {
	font-size: 1.05rem;
	line-height: 1.55;
	max-width: 680px;
	margin: -10px 0 24px;
	color: rgba(26, 51, 42, .78);
}

.mmos-faq-block details {
	background: var(--mmos-paper);
	border: 2px solid var(--mmos-green);
	margin: 0 0 8px;
	box-shadow: 3px 3px 0 rgba(16,16,15,.18);
	break-inside: avoid;
}

.mmos-faq-block summary {
	cursor: pointer;
	font-weight: 800;
	font-size: 16px;
	padding: 12px 16px;
	line-height: 1.3;
	position: relative;
}

.mmos-faq-block details[open] summary {
	border-bottom: 1px dashed rgba(26,51,42,.18);
}

.mmos-faq-block details p {
	padding: 12px 16px 14px;
	margin: 0;
	font-size: 15px;
	line-height: 1.55;
}

/* 2-column FAQ — uses CSS columns so items flow naturally top-to-bottom.
   Cuts the vertical scroll in half for any list over a few items. */
.mmos-faq-cols-2 .mmos-faq-list {
	column-count: 2;
	column-gap: 14px;
}
.mmos-faq-cols-2 .mmos-faq-list details {
	display: block;
	width: 100%;
}
@media (max-width: 720px) {
	.mmos-faq-cols-2 .mmos-faq-list {
		column-count: 1;
	}
}

/* Show-all toggle: ink-pill button that reveals overflow items. */
.mmos-faq-show-more {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	margin: 18px 0 0;
	background: var(--mmos-green);
	color: var(--mmos-paper);
	border: 2px solid var(--mmos-green);
	box-shadow: 4px 4px 0 rgba(16,16,15,.2);
	padding: 12px 22px;
	font-family: var(--mmos-font-display, Oswald, Impact, sans-serif);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .14em;
	font-size: .92rem;
	cursor: pointer;
	transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.mmos-faq-show-more:hover {
	transform: translate(-2px, -2px);
	box-shadow: 6px 6px 0 rgba(16,16,15,.2);
	background: var(--mmos-orange, #d35400);
	border-color: var(--mmos-orange, #d35400);
}
.mmos-faq-show-more-count {
	opacity: .75;
	font-weight: 500;
	letter-spacing: .08em;
}
.mmos-faq-show-more-arrow {
	display: inline-block;
	font-size: 1.05rem;
	line-height: 1;
	transition: transform .2s ease;
}
.mmos-faq-expanded .mmos-faq-show-more-arrow {
	transform: rotate(180deg);
}
.mmos-faq-expanded .mmos-faq-show-more-text::before {
	content: "Hide extra";
}
.mmos-faq-expanded .mmos-faq-show-more-text {
	font-size: 0;
}
.mmos-faq-expanded .mmos-faq-show-more-text::before {
	font-size: .92rem;
}

.mmos-faq-cards .mmos-faq-list {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 16px;
}

.mmos-faq-cards details {
	margin: 0;
}

.mmos-faq-cards details[open] p,
.mmos-faq-cards details p {
	display: block;
}

.mmos-faq-ledger details {
	box-shadow: none;
	border-width: 0 0 2px;
	background: transparent;
}

.mmos-faq-ledger summary {
	padding-left: 0;
}

.mmos-faq-compact {
	padding: 34px 22px;
}

.mmos-faq-compact .mmos-faq-heading {
	font-size: clamp(1.8rem, 4vw, 3rem);
}

.mmos-faq-dark {
	background: var(--mmos-green);
	color: var(--mmos-paper);
}

.mmos-faq-dark .mmos-faq-intro {
	color: rgba(244, 241, 234, .8);
}

.mmos-faq-dark details {
	background: var(--mmos-blue);
	border-color: var(--mmos-orange);
}

.mmos-cta-block,
.mmos-cta-block * {
	box-sizing: border-box;
}

.mmos-cta-block {
	width: 100%;
	max-width: 100%;
	overflow-x: hidden;
	background: var(--mmos-green);
	background-image: linear-gradient(rgba(26, 51, 42, .72), rgba(26, 51, 42, .82)), var(--mmos-cta-bg, linear-gradient(transparent, transparent));
	background-position: center;
	background-size: cover;
	color: var(--mmos-paper);
	padding: 92px 22px;
	border-top: 8px solid var(--mmos-orange);
	border-bottom: 8px solid var(--mmos-orange);
}

.mmos-cta-inner {
	max-width: 1040px;
	width: 100%;
	margin: 0 auto;
	text-align: center;
}

.mmos-cta-kicker {
	display: inline-block;
	background: var(--mmos-orange);
	color: var(--mmos-paper);
	padding: 8px 14px;
	font-family: var(--mmos-font-display);
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: .18em;
	margin: 0 0 18px;
	box-shadow: var(--mmos-shadow-hard-sm);
}

.mmos-cta-heading {
	font-family: var(--mmos-font-display);
	text-transform: uppercase;
	font-size: clamp(2.6rem, 7vw, 5.5rem);
	line-height: .9;
	margin: 0 0 18px;
	text-shadow: 4px 4px 0 var(--mmos-ink);
	overflow-wrap: anywhere;
}

.mmos-cta-body {
	font-size: 20px;
	line-height: 1.55;
	max-width: 760px;
	margin: 0 auto 28px;
	color: rgba(244, 241, 234, .86);
}

.mmos-cta-actions {
	display: flex;
	gap: 16px;
	justify-content: center;
	flex-wrap: wrap;
}

.mmos-cta-block a {
	font-family: var(--mmos-font-display);
	font-weight: 900;
	text-transform: uppercase;
	letter-spacing: .12em;
	text-decoration: none !important;
	padding: 15px 30px;
	border: 3px solid var(--mmos-paper);
	box-shadow: var(--mmos-shadow-hard);
}

.mmos-cta-primary {
	background: var(--mmos-orange);
	color: var(--mmos-paper) !important;
}

.mmos-cta-phone {
	background: var(--mmos-paper);
	color: var(--mmos-green) !important;
}

.mmos-cta-placard {
	background: var(--mmos-paper);
	color: var(--mmos-green);
}

.mmos-cta-placard .mmos-cta-inner {
	background: var(--mmos-paper);
	border: 5px solid var(--mmos-green);
	box-shadow: var(--mmos-shadow-hard-lg);
	padding: 54px 34px;
	transform: rotate(-.35deg);
}

.mmos-cta-placard .mmos-cta-heading {
	color: var(--mmos-green);
	text-shadow: 2px 2px 0 rgba(211, 84, 0, .28);
}

.mmos-cta-placard .mmos-cta-body {
	color: var(--mmos-green);
}

.mmos-cta-split {
	background: var(--mmos-blue);
}

.mmos-cta-split .mmos-cta-inner {
	display: grid;
	grid-template-columns: 1.15fr .85fr;
	gap: 34px;
	text-align: left;
	align-items: center;
}

.mmos-cta-split .mmos-cta-actions {
	background: var(--mmos-paper);
	border: 4px solid var(--mmos-orange);
	box-shadow: 10px 10px 0 var(--mmos-ink);
	padding: 28px;
	display: grid;
	justify-content: flex-start;
}

.mmos-cta-compact {
	padding: 24px 18px;
}

.mmos-cta-compact .mmos-cta-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 18px;
	text-align: left;
}

.mmos-cta-compact .mmos-cta-heading {
	font-size: clamp(1.8rem, 3.6vw, 3rem);
	margin: 0;
}

.mmos-cta-compact .mmos-cta-body,
.mmos-cta-compact .mmos-cta-kicker {
	display: none;
}

.mmos-cta-field {
	background: var(--mmos-copper);
}

.mmos-cta-field .mmos-cta-inner {
	transform: rotate(-.4deg);
	background: var(--mmos-paper);
	color: var(--mmos-green);
	border-left: 12px solid var(--mmos-orange);
	padding: 44px;
	box-shadow: var(--mmos-shadow-hard-lg);
	text-align: left;
}

.mmos-cta-field .mmos-cta-heading {
	color: var(--mmos-green);
	text-shadow: 2px 2px 0 rgba(211, 84, 0, .28);
}

.mmos-cta-field .mmos-cta-body {
	color: var(--mmos-green);
	margin-left: 0;
}

.mmos-cta-field .mmos-cta-actions {
	justify-content: flex-start;
}

@media (max-width: 640px) {
	.elementor-widget[class*="elementor-widget-mmos_"] {
		overflow-x: clip;
	}

	.mmos-widget-button {
		min-height: 42px;
		padding: 12px 14px;
	}
}

@media (max-width: 820px) {
	.mmos-trust-strip {
		padding: 54px 16px;
	}

	.mmos-trust-inner,
	.mmos-trust-compact .mmos-trust-inner,
	.mmos-trust-scorecard .mmos-trust-inner,
	.mmos-trust-quote .mmos-trust-inner,
	.mmos-trust-cards .mmos-trust-proof {
		grid-template-columns: 1fr;
	}

	.mmos-trust-strip ul,
	.mmos-trust-scorecard ul {
		grid-template-columns: 1fr;
	}

	.mmos-trust-stamp .mmos-trust-inner {
		padding: 22px;
	}

	.mmos-trust-btn {
		width: 100%;
		text-align: center;
	}
}

@media (max-width: 760px) {
	.mmos-faq-cards .mmos-faq-list {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 780px) {
	.mmos-cta-block {
		padding: 62px 16px;
	}

	.mmos-cta-split .mmos-cta-inner,
	.mmos-cta-compact .mmos-cta-inner {
		display: block;
		text-align: center;
	}

	.mmos-cta-split .mmos-cta-actions {
		justify-content: center;
		margin-top: 24px;
	}

	.mmos-cta-field .mmos-cta-inner {
		text-align: center;
		padding: 32px 20px;
		transform: none;
	}

	.mmos-cta-placard .mmos-cta-inner {
		transform: none;
		padding: 34px 20px;
	}

	.mmos-cta-field .mmos-cta-actions {
		justify-content: center;
	}

	.mmos-cta-block a {
		width: 100%;
		text-align: center;
		max-width: 360px;
	}
}

/* ============================================================
   CTA Trust Photo — vintage polaroid anchor for conversion zone.
   Renders ONLY when the widget control "Trust Photo" is set on
   split / placard / poster variants. Pattern: copper-bordered
   paper polaroid with paper-warm inset frame, hard ink shadow,
   slight rotation, optional caption stamp band at the bottom.
   ============================================================ */
.mmos-cta-figure {
	background: var(--mmos-paper);
	border: 4px solid var(--mmos-copper);
	box-shadow: inset 0 0 0 3px var(--mmos-paper-warm), var(--mmos-shadow-hard-lg);
	padding: 14px 14px 0;
	margin: 0;
	min-width: 0;
	max-width: 100%;
	transform: rotate(-1.2deg);
	position: relative;
	display: flex;
	flex-direction: column;
}

.mmos-cta-figure::before {
	content: "";
	position: absolute;
	top: -8px;
	left: -8px;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--mmos-copper);
	box-shadow: inset 1px 1px 2px rgba(244, 241, 234, .45), inset -1px -1px 2px rgba(16, 16, 15, .35), 3px 3px 0 var(--mmos-ink);
	z-index: 2;
}

.mmos-cta-figure img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 460px;
	object-fit: cover;
	border: 2px solid var(--mmos-ink);
	background: var(--mmos-paper-warm);
}

.mmos-cta-figure figcaption {
	display: block;
	font-family: var(--mmos-font-display);
	font-weight: 800;
	text-transform: uppercase;
	letter-spacing: .12em;
	font-size: .85rem;
	color: var(--mmos-green-deep);
	background: transparent;
	padding: 14px 6px 16px;
	text-align: center;
	line-height: 1.25;
	border-top: 2px dashed var(--mmos-copper);
	margin-top: 12px;
}

/* SPLIT variant with figure — three-column composition:
   [photo] [kicker+heading+body stacked] [actions card]
   Use grid-template-areas to lock placement. */
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-inner {
	grid-template-columns: minmax(220px, .85fr) 1.3fr minmax(260px, .85fr);
	grid-template-areas:
		"fig kicker actions"
		"fig heading actions"
		"fig body actions";
	align-items: center;
	gap: 32px;
}
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-figure { grid-area: fig; align-self: center; }
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-kicker { grid-area: kicker; align-self: end; margin-bottom: 0; }
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-heading { grid-area: heading; margin: 8px 0 0; }
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-body { grid-area: body; align-self: start; margin-top: 14px; }
.mmos-cta-split.mmos-cta-has-figure .mmos-cta-actions { grid-area: actions; align-self: center; }

/* PLACARD variant with figure — 2-col, photo left, content right */
.mmos-cta-placard.mmos-cta-has-figure .mmos-cta-inner {
	display: grid;
	grid-template-columns: minmax(220px, .9fr) 1.4fr;
	gap: 36px;
	align-items: center;
}
.mmos-cta-placard.mmos-cta-has-figure .mmos-cta-figure { grid-row: span 4; }

/* POSTER variant with figure — figure floats top-left as masthead, text wraps under */
.mmos-cta-poster.mmos-cta-has-figure .mmos-cta-figure {
	float: left;
	max-width: 280px;
	margin: 0 28px 18px 0;
	transform: rotate(-1.5deg);
}

@media (max-width: 780px) {
	.mmos-cta-split.mmos-cta-has-figure .mmos-cta-inner,
	.mmos-cta-placard.mmos-cta-has-figure .mmos-cta-inner {
		display: block;
		grid-template-areas: none;
		text-align: center;
	}
	.mmos-cta-split.mmos-cta-has-figure .mmos-cta-figure,
	.mmos-cta-placard.mmos-cta-has-figure .mmos-cta-figure {
		max-width: 280px;
		margin: 0 auto 28px;
		transform: rotate(-1.5deg);
	}
	.mmos-cta-poster.mmos-cta-has-figure .mmos-cta-figure {
		float: none;
		max-width: 280px;
		margin: 0 auto 24px;
	}
}
