/* ─── Design Tokens ─────────────────────────────────────────────────────── */
:root {
	--cpm-color-red:    #ff0000;
	--cpm-color-black:  #000000;
	--cpm-color-dark:   #1e1e1e;
	--cpm-color-gray:   #808080;
	--cpm-color-border: #d9d9d9;
	--cpm-color-card:   #f9f9f9;
	--cpm-color-footer: #f1f1f1;
	--cpm-color-white:  #ffffff;
	--cpm-font-body:    Montserrat, Arial, sans-serif;
	--cpm-container:    1440px;
	--cpm-gutter:       clamp(20px, 6.94vw, 100px);
	--cpm-section-gap:  clamp(56px, 7vw, 100px);
	--cpm-radius-md:    10px;
	--cpm-radius-lg:    30px;
	--cpm-radius-card:  12px;
	--cpm-transition:   180ms ease;

	/* ── Legacy token aliases (backward-compat for older blocks) ── */
	--cpm-red:       var(--cpm-color-red);
	--cpm-black:     var(--cpm-color-black);
	--cpm-dark:      var(--cpm-color-dark);
	--cpm-gray:      var(--cpm-color-gray);
	--cpm-border:    var(--cpm-color-border);
	--cpm-card-bg:   var(--cpm-color-card);
	--cpm-footer-bg: var(--cpm-color-footer);
	--cpm-white:     var(--cpm-color-white);
	--cpm-font:      var(--cpm-font-body);
	--cpm-content-w: var(--cpm-container);
	--cpm-margin:    var(--cpm-gutter);
	--cpm-radius-sm: var(--cpm-radius-md);
}

/* ─── Base ───────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html,
body {
	overflow-x: hidden;
}

body,
.site,
#page,
.site-content,
#content,
.content-area,
.site-main,
#main,
.inside-article,
.entry-content {
	background-color: #ffffff !important;
}


body {
	font-family: var(--cpm-font-body);
	color: var(--cpm-color-dark);
	-webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4, h5, h6 {
	font-family: var(--cpm-font-body);
}

img, video { max-width: 100%; height: auto; display: block; }

/* ─── Container ──────────────────────────────────────────────────────────── */
.cpm-container {
	max-width: var(--cpm-container);
	margin-inline: auto;
	padding-inline: var(--cpm-gutter);
}

/* ─── Section heading ────────────────────────────────────────────────────── */
.cpm-section-heading {
	font-size: clamp(1.5rem, 3vw, 2.5rem);
	font-weight: 700;
	color: var(--cpm-color-dark);
	margin-bottom: clamp(24px, 3vw, 48px);
}

/* ─── Shared button ──────────────────────────────────────────────────────── */
.cpm-btn {
	display: inline-flex;
	align-items: center;
	gap: .5em;
	padding: .75em 1.75em;
	font-family: var(--cpm-font-body);
	font-weight: 700;
	font-size: 1rem;
	border-radius: var(--cpm-radius-md);
	text-decoration: none;
	transition: background var(--cpm-transition), color var(--cpm-transition), border-color var(--cpm-transition);
	cursor: pointer;
	white-space: nowrap;
}
.cpm-btn--primary {
	background: var(--cpm-color-red);
	color: var(--cpm-color-white);
	border: 2px solid var(--cpm-color-red);
}
.cpm-btn--primary:hover,
.cpm-btn--primary:focus-visible {
	background: #cc0000;
	border-color: #cc0000;
}
.cpm-btn--outline {
	background: transparent;
	color: var(--cpm-color-white);
	border: 2px solid var(--cpm-color-white);
}
.cpm-btn--outline:hover,
.cpm-btn--outline:focus-visible {
	background: var(--cpm-color-white);
	color: var(--cpm-color-dark);
}

/* ─── Icons ──────────────────────────────────────────────────────────────── */
.cpm-icon {
	width: 1.25em;
	height: 1.25em;
	flex-shrink: 0;
}

/* ─── Remove GeneratePress bottom margin from main content area ──────────── */
#main,
.site-main {
	margin-bottom: 0 !important;
}

/* ─── Pages with full-width blocks: remove all GeneratePress constraints ─── */
body:has(.cpm-ah) .inside-article,
body:has(.cpm-ah) .site-content,
body:has(.cpm-ah) .content-area,
body:has(.cpm-ah) .site-main,
body:has(.cpm-ah) #main,
body:has(.cpm-ah) .grid-container,
body:has(.cpm-svh) .inside-article,
body:has(.cpm-svh) .site-content,
body:has(.cpm-svh) .content-area,
body:has(.cpm-svh) .site-main,
body:has(.cpm-svh) #main,
body:has(.cpm-svh) #primary,
body:has(.cpm-svh) #page,
body:has(.cpm-svh) #content,
body:has(.cpm-svh) article,
body:has(.cpm-svh) .entry-content,
body:has(.cpm-svh) .grid-container,
body:has(.cpm-hero) .inside-article,
body:has(.cpm-hero) .site-content,
body:has(.cpm-hero) .content-area,
body:has(.cpm-hero) .site-main,
body:has(.cpm-hero) #main,
body:has(.cpm-hero) #primary,
body:has(.cpm-hero) #page,
body:has(.cpm-hero) #content,
body:has(.cpm-hero) article,
body:has(.cpm-hero) .entry-content,
body:has(.cpm-hero) .grid-container {
	padding: 0 !important;
	margin-left: auto !important;
	margin-right: auto !important;
	max-width: 100% !important;
	width: 100% !important;
}

/* Hide sidebar on pages that use full-width blocks */
body:has(.cpm-svh) #secondary,
body:has(.cpm-svh) .widget-area,
body:has(.cpm-svh) aside,
body:has(.cpm-ah) #secondary,
body:has(.cpm-ah) .widget-area,
body:has(.cpm-ah) aside,
body:has(.cpm-hero) #secondary,
body:has(.cpm-hero) .widget-area,
body:has(.cpm-hero) aside {
	display: none !important;
}

body:has(.cpm-svh) #primary,
body:has(.cpm-ah) #primary,
body:has(.cpm-hero) #primary {
	width: 100% !important;
	max-width: 100% !important;
}

/* ─── Block placeholder (editor empty state) ─────────────────────────────── */
.cpm-block-placeholder {
	padding: 2rem;
	background: var(--cpm-color-card);
	border: 2px dashed var(--cpm-color-border);
	border-radius: var(--cpm-radius-md);
	text-align: center;
	color: var(--cpm-color-gray);
	font-style: italic;
}

/* ─── Page content wrapper ───────────────────────────────────────────────── */
.cpm-page__content {
	padding: 0;
}
.cpm-page__content > * + * {
	margin-top: 0;
}

/* ─── No horizontal overflow ─────────────────────────────────────────────── */
.wp-block-acf-cpm-hero,
.wp-block-acf-cpm-quote-bar,
.wp-block-acf-cpm-split-content,
.wp-block-acf-cpm-process-grid,
.wp-block-acf-cpm-services-grid,
.wp-block-acf-cpm-testimonial-strip,
.wp-block-acf-cpm-contact-info,
.wp-block-acf-cpm-contact-form,
.wp-block-acf-cpm-stats-row,
.wp-block-acf-cpm-map-cta,
.wp-block-acf-cpm-footer-cta,
.wp-block-acf-cpm-google-map {
	overflow: hidden;
}
