/* ============================================================
   IMW Drywall — design system
   Built by Ivan Milite Web for Edmonton Drywall demo.
   ============================================================ */

:root {
	--imw-color-primary: #1E2A3A;
	--imw-color-primary-2: #2A3850;
	--imw-color-accent: #C4623E;
	--imw-color-accent-2: #A85128;
	--imw-color-accent-light: #E89A6F; /* Lightened rust for eyebrows on dark bg (~6.5:1 vs primary, AA). */
	--imw-color-bg: #FAFAF7;
	--imw-color-surface: #FFFFFF;
	--imw-color-text: #1A1A1A;
	--imw-color-text-muted: #6B6B6B;
	--imw-color-text-onprimary: #F4EFE8;
	--imw-color-border: #E5E5E0;
	--imw-color-border-strong: #C8C8C0;

	--imw-font-display: 'Plus Jakarta Sans', system-ui, -apple-system, sans-serif;
	--imw-font-body: 'Inter', system-ui, -apple-system, sans-serif;

	--imw-space-xs: 0.5rem;
	--imw-space-sm: 1rem;
	--imw-space-md: 2rem;
	--imw-space-lg: 4rem;
	--imw-space-xl: 8rem;

	--imw-container: 1240px;
	--imw-radius: 4px;
	--imw-radius-lg: 8px;

	--imw-shadow-sm: 0 1px 2px rgba(30, 42, 58, 0.06);
	--imw-shadow-md: 0 4px 16px rgba(30, 42, 58, 0.08);
	--imw-shadow-lg: 0 12px 32px rgba(30, 42, 58, 0.12);

	--imw-ease: cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ---------- Reset / base ---------- */

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body.imw-drywall {
	margin: 0;
	background: var(--imw-color-bg);
	color: var(--imw-color-text);
	font-family: var(--imw-font-body);
	font-size: 1rem;
	line-height: 1.65;
	font-weight: 400;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

body.imw-drywall * {
	box-sizing: border-box;
}

body.imw-drywall img,
body.imw-drywall picture,
body.imw-drywall video,
body.imw-drywall svg {
	max-width: 100%;
	height: auto;
	display: block;
}

body.imw-drywall a {
	color: var(--imw-color-accent-2);
	text-decoration: none;
	transition: color 0.15s var(--imw-ease);
}
body.imw-drywall a:hover {
	color: var(--imw-color-accent);
}

body.imw-drywall :focus-visible {
	outline: 2px solid var(--imw-color-accent);
	outline-offset: 2px;
}

/* Suppress Kadence's stock chrome — we render our own header / footer / hero. */
body.imw-drywall #wrapper > #masthead,
body.imw-drywall #wrapper > .site-footer,
body.imw-drywall #wrapper > #colophon {
	display: none !important;
}

/* ---------- Typography ---------- */

body.imw-drywall h1,
body.imw-drywall h2,
body.imw-drywall h3,
body.imw-drywall h4 {
	font-family: var(--imw-font-display);
	color: var(--imw-color-primary);
	margin: 0 0 var(--imw-space-sm);
	line-height: 1.15;
}

body.imw-drywall h1 {
	font-size: 2.25rem;
	font-weight: 800;
	letter-spacing: -0.02em;
}
body.imw-drywall h2 {
	font-size: 1.75rem;
	font-weight: 700;
	letter-spacing: -0.01em;
}
body.imw-drywall h3 {
	font-size: 1.25rem;
	font-weight: 700;
}
body.imw-drywall h4 {
	font-size: 1.0625rem;
	font-weight: 700;
}

@media (min-width: 768px) {
	body.imw-drywall h1 { font-size: 3.5rem; }
	body.imw-drywall h2 { font-size: 2.5rem; }
	body.imw-drywall h3 { font-size: 1.5rem; }
}

body.imw-drywall p {
	margin: 0 0 var(--imw-space-sm);
}

body.imw-drywall .imw-eyebrow {
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--imw-color-accent-2);
	display: inline-block;
	margin-bottom: var(--imw-space-xs);
}

body.imw-drywall .imw-small,
body.imw-drywall small {
	font-size: 0.875rem;
	color: var(--imw-color-text-muted);
}

/* ---------- Layout primitives ---------- */

.imw-container {
	max-width: var(--imw-container);
	margin: 0 auto;
	padding: 0 var(--imw-space-sm);
}

@media (min-width: 768px) {
	.imw-container { padding: 0 var(--imw-space-md); }
}

.imw-section {
	padding: var(--imw-space-lg) 0;
}
@media (min-width: 768px) {
	.imw-section { padding: var(--imw-space-xl) 0; }
}

/* Visually-hidden helper for screen readers. */
.imw-vh {
	position: absolute !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
	clip: rect(0 0 0 0) !important;
	white-space: nowrap !important;
}

/* ---------- Buttons ---------- */

.imw-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding: 0.875rem 1.5rem;
	border: 1px solid transparent;
	border-radius: var(--imw-radius);
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1rem;
	letter-spacing: 0.01em;
	cursor: pointer;
	transition: transform 0.15s var(--imw-ease), background 0.15s var(--imw-ease), color 0.15s var(--imw-ease), border-color 0.15s var(--imw-ease);
	white-space: nowrap;
	text-decoration: none;
}
.imw-btn:hover { transform: translateY(-1px); }
.imw-btn:active { transform: translateY(0); }

.imw-btn--accent {
	background: var(--imw-color-accent);
	color: #FFF;
	border-color: var(--imw-color-accent);
}
.imw-btn--accent:hover {
	background: var(--imw-color-accent-2);
	border-color: var(--imw-color-accent-2);
	color: #FFF;
}

.imw-btn--ghost {
	background: transparent;
	color: var(--imw-color-primary);
	border-color: var(--imw-color-border-strong);
}
.imw-btn--ghost:hover {
	background: var(--imw-color-primary);
	color: #FFF;
	border-color: var(--imw-color-primary);
}

.imw-btn--primary {
	background: var(--imw-color-primary);
	color: #FFF;
	border-color: var(--imw-color-primary);
}
.imw-btn--primary:hover {
	background: var(--imw-color-primary-2);
	border-color: var(--imw-color-primary-2);
	color: #FFF;
}

.imw-btn--lg { padding: 1.0625rem 2rem; font-size: 1.0625rem; }
.imw-btn--sm { padding: 0.5625rem 1rem; font-size: 0.9375rem; }

/* ---------- Header ---------- */

.imw-header {
	position: sticky;
	top: 0;
	z-index: 90;
	background: rgba(250, 250, 247, 0.96);
	backdrop-filter: saturate(140%) blur(8px);
	-webkit-backdrop-filter: saturate(140%) blur(8px);
	border-bottom: 1px solid var(--imw-color-border);
}

.imw-header__inner {
	display: flex;
	align-items: center;
	gap: var(--imw-space-sm);
	min-height: 68px;
	padding: 0.625rem var(--imw-space-sm);
	max-width: var(--imw-container);
	margin: 0 auto;
}
@media (min-width: 768px) {
	.imw-header__inner {
		min-height: 76px;
		padding: 0.75rem var(--imw-space-md);
	}
}

.imw-logo {
	font-family: var(--imw-font-display);
	font-weight: 800;
	font-size: 1.0625rem;
	color: var(--imw-color-primary);
	letter-spacing: -0.01em;
	white-space: nowrap;
	text-decoration: none;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}
.imw-logo:hover { color: var(--imw-color-primary); }
.imw-logo__mark {
	display: inline-block;
	width: 28px;
	height: 28px;
	border-radius: 4px;
	background: linear-gradient(135deg, var(--imw-color-primary) 0%, var(--imw-color-primary-2) 100%);
	position: relative;
	flex-shrink: 0;
}
.imw-logo__mark::after {
	content: '';
	position: absolute;
	inset: 6px;
	border: 2px solid var(--imw-color-accent);
	border-radius: 2px;
}
@media (min-width: 768px) {
	.imw-logo { font-size: 1.1875rem; }
}

.imw-nav {
	display: none;
	margin-left: auto;
}
@media (min-width: 1024px) {
	.imw-nav {
		display: flex;
		align-items: center;
		gap: 0.25rem;
	}
}

.imw-nav__item {
	position: relative;
	padding: 0.625rem 0.875rem;
	font-family: var(--imw-font-display);
	font-weight: 600;
	font-size: 0.9375rem;
	color: var(--imw-color-primary);
	text-decoration: none;
	border-radius: var(--imw-radius);
	white-space: nowrap;
}
.imw-nav__item:hover {
	color: var(--imw-color-primary);
	background: rgba(30, 42, 58, 0.05);
}
.imw-nav__item--has-children::after {
	content: '▾';
	display: inline-block;
	margin-left: 0.25rem;
	font-size: 0.75rem;
	opacity: 0.6;
}

.imw-nav__dropdown {
	position: absolute;
	top: calc(100% + 4px);
	left: 0;
	min-width: 240px;
	background: #FFF;
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	box-shadow: var(--imw-shadow-lg);
	padding: 0.5rem;
	display: none;
	flex-direction: column;
	z-index: 5;
}
.imw-nav__group {
	position: relative;
}
.imw-nav__group:hover .imw-nav__dropdown,
.imw-nav__group:focus-within .imw-nav__dropdown {
	display: flex;
}
.imw-nav__sublink {
	padding: 0.625rem 0.75rem;
	font-size: 0.9375rem;
	color: var(--imw-color-primary);
	text-decoration: none;
	border-radius: var(--imw-radius);
	font-weight: 500;
}
.imw-nav__sublink:hover {
	background: rgba(196, 98, 62, 0.08);
	color: var(--imw-color-accent-2);
}

.imw-header__actions {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-left: auto;
}
@media (min-width: 1024px) {
	.imw-header__actions { margin-left: var(--imw-space-sm); }
}

.imw-header__phone {
	display: none;
	font-family: var(--imw-font-display);
	font-weight: 700;
	color: var(--imw-color-accent-2);
	text-decoration: none;
	white-space: nowrap;
	font-size: 0.9375rem;
}
.imw-header__phone:hover { color: var(--imw-color-accent); }
.imw-header__phone::before {
	content: '☏';
	margin-right: 0.375rem;
	font-size: 1rem;
}
@media (min-width: 768px) {
	.imw-header__phone { display: inline-flex; align-items: center; }
}

.imw-header__phone--mobile {
	display: inline-flex;
	align-items: center;
	font-size: 1rem;
	padding: 0.625rem 0.25rem;
}
@media (min-width: 768px) {
	.imw-header__phone--mobile { display: none; }
}

.imw-header__cta {
	display: none;
}
@media (min-width: 768px) {
	.imw-header__cta { display: inline-flex; }
}

/* Distribute the three header items (logo, nav, actions) with equal optical
   breathing room on both sides of the nav. justify-content: space-between
   pins logo to the left and actions to the right, leaving the nav with equal
   whitespace on each side regardless of content widths. Overrides the
   margin-left:auto rules above. */
@media (min-width: 1024px) {
	.imw-header__inner {
		justify-content: space-between;
	}
	.imw-nav { margin-left: 0; }
	.imw-header__actions { margin-left: 0; }
}

.imw-burger {
	display: inline-flex;
	flex-direction: column;
	justify-content: center;
	align-items: center;
	gap: 4px;
	width: 40px;
	height: 40px;
	background: transparent;
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius);
	cursor: pointer;
	padding: 0;
}
.imw-burger__bar {
	width: 18px;
	height: 2px;
	background: var(--imw-color-primary);
	border-radius: 1px;
	transition: transform 0.2s var(--imw-ease), opacity 0.2s var(--imw-ease);
}
@media (min-width: 1024px) {
	.imw-burger { display: none; }
}

/* Mobile drawer */
.imw-drawer {
	position: fixed;
	inset: 0 0 0 auto;
	width: min(86vw, 360px);
	background: #FFF;
	box-shadow: var(--imw-shadow-lg);
	transform: translateX(100%);
	transition: transform 0.25s var(--imw-ease);
	z-index: 100;
	padding: var(--imw-space-md) var(--imw-space-sm);
	overflow-y: auto;
}
.imw-drawer[aria-hidden="false"] { transform: translateX(0); }
.imw-drawer__close {
	position: absolute;
	top: 12px;
	right: 12px;
	width: 36px;
	height: 36px;
	background: transparent;
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius);
	font-size: 1.125rem;
	cursor: pointer;
}
.imw-drawer__group { margin-bottom: var(--imw-space-sm); }
.imw-drawer__title {
	display: block;
	font-family: var(--imw-font-display);
	font-weight: 700;
	color: var(--imw-color-primary);
	margin-bottom: 0.375rem;
	text-decoration: none;
	padding: 0.5rem 0;
	font-size: 1.0625rem;
}
.imw-drawer__sub {
	display: block;
	padding: 0.375rem 0.5rem;
	color: var(--imw-color-primary);
	text-decoration: none;
	font-weight: 500;
	font-size: 0.9375rem;
}
.imw-drawer__sub:hover { color: var(--imw-color-accent-2); }
.imw-drawer__cta {
	display: block;
	margin-top: var(--imw-space-md);
}

.imw-drawer-overlay {
	position: fixed;
	inset: 0;
	background: rgba(30, 42, 58, 0.4);
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.2s var(--imw-ease);
	z-index: 99;
}
.imw-drawer-overlay[data-open="true"] {
	opacity: 1;
	visibility: visible;
}

/* ---------- Hero (full-width, image-as-background, text-overlay-left) ---------- */

.imw-hero {
	position: relative;
	height: 78vh;
	min-height: 600px;
	max-height: 920px;
	overflow: hidden;
	background-color: var(--imw-color-primary); /* fallback while picture loads */
	color: var(--imw-color-text-onprimary);
}

/* Picture sits behind everything, fills the section, object-fit cover.
 * Selectors prefixed with body.imw-drywall so we outweigh the global
 * `body.imw-drywall img { height: auto; }` reset — that rule was forcing
 * the hero image to render at its natural aspect ratio, leaving a dark
 * navy gap below it at narrow viewports. */
body.imw-drywall .imw-hero__bg {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	z-index: 0;
}
body.imw-drywall .imw-hero__bg img {
	display: block;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
	object-position: center;
}

/* Dark gradient overlay: heavy on left for text legibility, light on right so the photo breathes. */
.imw-hero__overlay {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(
		90deg,
		rgba(30, 42, 58, 0.78) 0%,
		rgba(30, 42, 58, 0.55) 40%,
		rgba(30, 42, 58, 0.32) 75%,
		rgba(30, 42, 58, 0.32) 100%
	);
	pointer-events: none;
}

/* Inner container: vertically centered, text column on the left */
.imw-hero__inner {
	position: relative;
	z-index: 2;
	height: 100%;
	max-width: var(--imw-container);
	margin: 0 auto;
	padding: 0 var(--imw-space-sm);
	display: flex;
	align-items: center;
}
@media (min-width: 768px) {
	.imw-hero__inner { padding: 0 var(--imw-space-md); }
}

.imw-hero__content {
	max-width: 540px;
}

.imw-hero__eyebrow {
	color: var(--imw-color-accent-light, #E89A6F);
	font-size: 0.875rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-weight: 600;
	display: inline-block;
	margin-bottom: var(--imw-space-sm);
}

.imw-hero__headline {
	color: #FFF;
	font-size: 2.25rem;
	margin-bottom: var(--imw-space-sm);
	line-height: 1.08;
	word-wrap: break-word;
	overflow-wrap: break-word;
}
@media (min-width: 480px) {
	.imw-hero__headline { font-size: 2.75rem; }
}
@media (min-width: 768px) {
	.imw-hero__headline { font-size: 3.5rem; }
}
@media (min-width: 1200px) {
	.imw-hero__headline { font-size: 4.25rem; }
}

.imw-hero__sub {
	font-size: 1.0625rem;
	max-width: 32em;
	margin-bottom: var(--imw-space-md);
	color: rgba(255, 255, 255, 0.92);
}

.imw-hero__actions {
	display: flex;
	gap: var(--imw-space-sm);
	flex-wrap: wrap;
}
.imw-hero__actions .imw-btn--ghost {
	color: #FFF;
	border-color: rgba(255, 255, 255, 0.55);
}
.imw-hero__actions .imw-btn--ghost:hover {
	background: rgba(255, 255, 255, 0.12);
	border-color: #FFF;
	color: #FFF;
}

/* Mobile: shorter hero, flat overlay, text centered, image biased left
 * so the worker on the right of the source frame doesn't sit behind the
 * centered headline at narrow widths. */
@media (max-width: 767px) {
	.imw-hero {
		height: 60vh;
		min-height: 480px;
		max-height: 700px;
	}
	/* Anchor the worker to the right side of the frame so he stays visible
	 * at narrow widths instead of getting cropped out. */
	body.imw-drywall .imw-hero__bg img {
		object-position: right center;
	}
	/* Darker top, slightly lighter bottom — keeps the headline area legible
	 * over the worker's body while letting the lower portion of the photo
	 * breathe near the CTAs. */
	.imw-hero__overlay {
		background: linear-gradient(
			180deg,
			rgba(30, 42, 58, 0.85) 0%,
			rgba(30, 42, 58, 0.78) 55%,
			rgba(30, 42, 58, 0.70) 100%
		);
	}
	.imw-hero__inner {
		justify-content: center;
	}
	.imw-hero__content {
		text-align: center;
		max-width: 100%;
	}
	.imw-hero__sub {
		max-width: 100%;
		margin-left: auto;
		margin-right: auto;
	}
	.imw-hero__actions {
		justify-content: center;
	}
}

/* ---------- Page hero (smaller, used on inner pages) ---------- */

.imw-page-hero {
	background:
		radial-gradient(ellipse at 80% 20%, rgba(196, 98, 62, 0.12), transparent 60%),
		linear-gradient(135deg, #1E2A3A 0%, #2A3850 100%);
	color: var(--imw-color-text-onprimary);
	padding: var(--imw-space-lg) 0;
}
@media (min-width: 768px) {
	.imw-page-hero { padding: 5rem 0 4.5rem; }
}
.imw-page-hero__inner {
	max-width: var(--imw-container);
	margin: 0 auto;
	padding: 0 var(--imw-space-sm);
}
@media (min-width: 768px) {
	.imw-page-hero__inner { padding: 0 var(--imw-space-md); }
}
.imw-page-hero__eyebrow {
	color: var(--imw-color-accent);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	font-size: 0.8125rem;
}
.imw-page-hero__title {
	color: #FFF;
	font-size: 2.5rem;
	margin: var(--imw-space-xs) 0 var(--imw-space-sm);
}
@media (min-width: 768px) {
	.imw-page-hero__title { font-size: 3.25rem; }
}
.imw-page-hero__lead {
	font-size: 1.0625rem;
	max-width: 36em;
	color: rgba(244, 239, 232, 0.85);
	margin: 0;
}

/* ---------- Trust band ---------- */

.imw-trust {
	background: var(--imw-color-surface);
	border-bottom: 1px solid var(--imw-color-border);
}
.imw-trust__row {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--imw-space-sm);
	padding: var(--imw-space-md) var(--imw-space-sm);
	align-items: center;
}
@media (min-width: 768px) {
	.imw-trust__row {
		grid-template-columns: repeat(4, 1fr);
		padding: var(--imw-space-md);
		gap: var(--imw-space-md);
	}
}
.imw-trust__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 0.25rem;
}
.imw-trust__num {
	font-family: var(--imw-font-display);
	font-weight: 800;
	font-size: 2rem;
	color: var(--imw-color-primary);
	letter-spacing: -0.01em;
}
@media (min-width: 768px) {
	.imw-trust__num { font-size: 2.5rem; }
}
.imw-trust__label {
	font-size: 0.875rem;
	color: var(--imw-color-text-muted);
	text-transform: uppercase;
	letter-spacing: 0.06em;
}

/* ---------- Service tiles ---------- */

.imw-services-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
}
@media (min-width: 640px) {
	.imw-services-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.imw-services-grid { grid-template-columns: repeat(3, 1fr); }
}

.imw-service-tile {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	padding: var(--imw-space-md);
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	text-decoration: none;
	color: var(--imw-color-text);
	transition: transform 0.2s var(--imw-ease), box-shadow 0.2s var(--imw-ease), border-color 0.2s var(--imw-ease);
	position: relative;
	overflow: hidden;
}
.imw-service-tile:hover {
	transform: translateY(-2px);
	box-shadow: var(--imw-shadow-md);
	border-color: var(--imw-color-accent);
	color: var(--imw-color-text);
}
/* Service tile art: real photo at top of card, breaking out of card padding so
 * the image fills the full width and butts up against the rounded corners. */
.imw-service-tile__art {
	display: block;
	height: 160px;
	margin: calc(-1 * var(--imw-space-md)) calc(-1 * var(--imw-space-md)) var(--imw-space-sm);
	border-radius: var(--imw-radius-lg) var(--imw-radius-lg) 0 0;
	background-color: var(--imw-color-primary);
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	transition: transform 0.3s var(--imw-ease);
}
.imw-service-tile:hover .imw-service-tile__art {
	transform: scale(1.02);
}

.imw-service-tile--residential-drywall .imw-service-tile__art     { background-image: url("../images/residential-living.jpg"); }
.imw-service-tile--basement-development .imw-service-tile__art    { background-image: url("../images/basement-finished.jpg"); }
.imw-service-tile--drywall-repair .imw-service-tile__art          { background-image: url("../images/repair-drywall.jpg"); }
.imw-service-tile--water-damage-repair .imw-service-tile__art     { background-image: url("../images/water-damage.jpg"); }
.imw-service-tile--popcorn-ceiling-removal .imw-service-tile__art { background-image: url("../images/popcorn-ceiling.jpg"); }
.imw-service-tile--commercial-drywall .imw-service-tile__art      { background-image: url("../images/commercial-office.jpg"); }
.imw-service-tile--new-home-drywall .imw-service-tile__art        { background-image: url("../images/residential-living.jpg"); }
.imw-service-tile--drywall-and-insulation .imw-service-tile__art  { background-image: url("../images/basement-finished.jpg"); }
/* Service-area tiles in /areas/ hub reuse the same component without a slug class — keep the gradient bar. */
.imw-service-tile:not([class*="imw-service-tile--"]) .imw-service-tile__art {
	height: 8px;
	margin: 0 0 var(--imw-space-sm);
	border-radius: 4px;
	background: linear-gradient(90deg, var(--imw-color-primary), var(--imw-color-accent));
}
.imw-service-tile__eyebrow {
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--imw-color-accent-2);
}
.imw-service-tile__title {
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1.25rem;
	color: var(--imw-color-primary);
	letter-spacing: -0.005em;
}
.imw-service-tile__lead {
	color: var(--imw-color-text-muted);
	font-size: 0.9375rem;
	line-height: 1.55;
	flex: 1;
}
.imw-service-tile__more {
	font-family: var(--imw-font-display);
	font-weight: 700;
	color: var(--imw-color-accent-2);
	font-size: 0.9375rem;
	margin-top: 0.25rem;
}

/* ---------- Section heading ---------- */

.imw-section__heading {
	max-width: 56ch;
	margin: 0 auto var(--imw-space-md);
	text-align: center;
}
.imw-section__heading--left {
	text-align: left;
	margin-left: 0;
}
.imw-section__lead {
	color: var(--imw-color-text-muted);
	font-size: 1.0625rem;
}

/* ---------- About snippet ---------- */

.imw-about-snippet {
	background: var(--imw-color-surface);
	border-top: 1px solid var(--imw-color-border);
	border-bottom: 1px solid var(--imw-color-border);
}
.imw-about-snippet__inner {
	display: grid;
	gap: var(--imw-space-md);
	align-items: center;
}
@media (min-width: 768px) {
	.imw-about-snippet__inner { grid-template-columns: 1fr 1fr; gap: var(--imw-space-lg); }
}
.imw-about-snippet__photo {
	background-image: url("../images/about-finished-corner.jpg");
	background-size: cover;
	background-position: center;
	border-radius: var(--imw-radius-lg);
	min-height: 280px;
	position: relative;
	overflow: hidden;
}
@media (min-width: 768px) {
	.imw-about-snippet__photo {
		background-image: url("../images/about-finished-corner.jpg");
		min-height: 380px;
	}
}

/* ---------- Project cards ---------- */

.imw-projects-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
}
@media (min-width: 640px) {
	.imw-projects-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 1024px) {
	.imw-projects-grid { grid-template-columns: repeat(3, 1fr); }
}
.imw-projects-grid--featured {
	grid-template-columns: 1fr;
}
@media (min-width: 768px) {
	.imw-projects-grid--featured { grid-template-columns: repeat(3, 1fr); }
}

.imw-project-card {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	overflow: hidden;
	transition: transform 0.2s var(--imw-ease), box-shadow 0.2s var(--imw-ease);
}
.imw-project-card:hover {
	transform: translateY(-2px);
	box-shadow: var(--imw-shadow-md);
}
.imw-project-card__art {
	position: relative;
	aspect-ratio: 4 / 3;
	display: flex;
	align-items: flex-end;
	padding: var(--imw-space-sm);
	background-color: var(--imw-color-primary);
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}
/* Dark gradient overlay so the type chip remains AA-readable over any photo. */
.imw-project-card__art::before {
	content: '';
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0.45) 100%);
	pointer-events: none;
}
.imw-project-card__art > * { position: relative; z-index: 1; }

.imw-project-card__art--residential { background-image: url("../images/residential-living.jpg"); }
.imw-project-card__art--basement    { background-image: url("../images/basement-finished.jpg"); }
.imw-project-card__art--commercial  { background-image: url("../images/commercial-office.jpg"); }
.imw-project-card__art--repair      { background-image: url("../images/repair-drywall.jpg"); }
.imw-project-card__type {
	display: inline-block;
	padding: 0.25rem 0.625rem;
	background: rgba(255, 255, 255, 0.18);
	color: #FFF;
	border-radius: 100px;
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.imw-project-card__body { padding: var(--imw-space-sm); }
.imw-project-card__title { margin: 0 0 0.25rem; font-size: 1.0625rem; }
.imw-project-card__where { margin: 0; color: var(--imw-color-text-muted); font-size: 0.9375rem; }

/* ---------- Filter bar (projects page) ---------- */

.imw-filter-bar {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: var(--imw-space-md);
	justify-content: center;
}
.imw-filter-bar__btn {
	padding: 0.5rem 1rem;
	border: 1px solid var(--imw-color-border);
	background: var(--imw-color-surface);
	color: var(--imw-color-primary);
	border-radius: 100px;
	cursor: pointer;
	font-family: var(--imw-font-display);
	font-weight: 600;
	font-size: 0.9375rem;
	transition: background 0.15s var(--imw-ease), color 0.15s var(--imw-ease), border-color 0.15s var(--imw-ease);
}
.imw-filter-bar__btn:hover { background: var(--imw-color-bg); }
.imw-filter-bar__btn[aria-pressed="true"] {
	background: var(--imw-color-primary);
	color: #FFF;
	border-color: var(--imw-color-primary);
}

.imw-project-card[data-hidden="true"] { display: none; }

/* ---------- Testimonials ---------- */

.imw-testimonials-grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
}
@media (min-width: 768px) {
	.imw-testimonials-grid { grid-template-columns: repeat(3, 1fr); }
}
.imw-testimonials-grid--full {
	grid-template-columns: 1fr;
}
@media (min-width: 768px) {
	.imw-testimonials-grid--full { grid-template-columns: repeat(2, 1fr); }
}

.imw-testimonial {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: var(--imw-space-sm);
	position: relative;
}
.imw-testimonial::before {
	content: '“';
	position: absolute;
	top: -8px;
	left: 16px;
	font-family: Georgia, serif;
	font-size: 4rem;
	line-height: 1;
	color: var(--imw-color-accent);
	opacity: 0.3;
}
.imw-testimonial__quote {
	margin: 0;
	font-size: 1.0625rem;
	line-height: 1.55;
	color: var(--imw-color-text);
}
.imw-testimonial__quote p { margin: 0; }
.imw-testimonial__attr {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
	padding-top: var(--imw-space-sm);
	border-top: 1px solid var(--imw-color-border);
}
.imw-testimonial__name { font-family: var(--imw-font-display); font-weight: 700; color: var(--imw-color-primary); }
.imw-testimonial__where { color: var(--imw-color-text-muted); font-size: 0.9375rem; }
.imw-testimonial__type { color: var(--imw-color-accent-2); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }

/* Pull-quote feature on /testimonials/ */
.imw-pullquote {
	background: var(--imw-color-primary);
	color: var(--imw-color-text-onprimary);
	padding: var(--imw-space-lg) var(--imw-space-md);
	border-radius: var(--imw-radius-lg);
	margin-bottom: var(--imw-space-lg);
	text-align: center;
}
.imw-pullquote__text {
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1.5rem;
	line-height: 1.4;
	max-width: 36ch;
	margin: 0 auto var(--imw-space-sm);
	color: #FFF;
}
@media (min-width: 768px) {
	.imw-pullquote__text { font-size: 2rem; }
}
.imw-pullquote__attr {
	color: rgba(244, 239, 232, 0.7);
	font-size: 0.9375rem;
	letter-spacing: 0.04em;
}

/* ---------- Inline quote form ---------- */

.imw-quote-form {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	box-shadow: var(--imw-shadow-sm);
	display: flex;
	flex-direction: column;
	gap: var(--imw-space-sm);
}
.imw-quote-form__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-sm);
}
@media (min-width: 768px) {
	.imw-quote-form__row { grid-template-columns: 1fr 1fr 1fr; }
}
.imw-quote-form__field {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
.imw-quote-form__label {
	font-family: var(--imw-font-display);
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--imw-color-primary);
}
.imw-quote-form input,
.imw-quote-form select,
.imw-quote-form textarea {
	font-family: var(--imw-font-body);
	font-size: 1rem;
	padding: 0.6875rem 0.75rem;
	border: 1px solid var(--imw-color-border-strong);
	border-radius: var(--imw-radius);
	background: #FFF;
	color: var(--imw-color-text);
	width: 100%;
}
.imw-quote-form input:focus,
.imw-quote-form select:focus,
.imw-quote-form textarea:focus {
	border-color: var(--imw-color-accent);
	outline: none;
	box-shadow: 0 0 0 3px rgba(196, 98, 62, 0.15);
}
.imw-quote-form button[type="submit"] { align-self: flex-start; }
.imw-quote-form__small { color: var(--imw-color-text-muted); font-size: 0.875rem; margin: 0; }
.imw-quote-form__phone {
	color: var(--imw-color-accent-2);
	font-weight: 700;
	text-decoration: underline;
}

/* Long form (contact / quote pages) */
.imw-long-form {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	box-shadow: var(--imw-shadow-sm);
}
.imw-long-form__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-sm);
}
@media (min-width: 640px) {
	.imw-long-form__grid { grid-template-columns: 1fr 1fr; }
}
.imw-long-form__field--full { grid-column: 1 / -1; }
.imw-long-form__field {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}
.imw-long-form__label {
	font-family: var(--imw-font-display);
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--imw-color-primary);
}
.imw-long-form input,
.imw-long-form select,
.imw-long-form textarea {
	font-family: var(--imw-font-body);
	font-size: 1rem;
	padding: 0.6875rem 0.75rem;
	border: 1px solid var(--imw-color-border-strong);
	border-radius: var(--imw-radius);
	background: #FFF;
	color: var(--imw-color-text);
	width: 100%;
}
.imw-long-form input:focus,
.imw-long-form select:focus,
.imw-long-form textarea:focus {
	border-color: var(--imw-color-accent);
	outline: none;
	box-shadow: 0 0 0 3px rgba(196, 98, 62, 0.15);
}
.imw-long-form textarea { min-height: 132px; resize: vertical; }
.imw-long-form__submit { margin-top: var(--imw-space-sm); }

/* ---------- Service-page detail blocks ---------- */

.imw-detail {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-lg);
}
@media (min-width: 1024px) {
	.imw-detail { grid-template-columns: 1.4fr 1fr; }
}

.imw-included__list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: 1fr;
	gap: 0.625rem;
}
@media (min-width: 640px) {
	.imw-included__list { grid-template-columns: 1fr 1fr; }
}
.imw-included__list li {
	padding-left: 1.875rem;
	position: relative;
	font-size: 1rem;
	color: var(--imw-color-text);
	line-height: 1.5;
}
.imw-included__list li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.4rem;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background-color: var(--imw-color-accent-2);
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 18'><path d='M4.5 9.5l3 3 6-6.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/></svg>");
	background-size: 100% 100%;
	background-position: center;
	background-repeat: no-repeat;
}

.imw-process {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
	counter-reset: imw-process;
}
@media (min-width: 768px) {
	.imw-process { grid-template-columns: repeat(4, 1fr); }
}
.imw-process__step {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	position: relative;
}
.imw-process__step::before {
	counter-increment: imw-process;
	content: counter(imw-process, decimal-leading-zero);
	display: inline-block;
	font-family: var(--imw-font-display);
	font-weight: 800;
	font-size: 1rem;
	color: var(--imw-color-accent);
	letter-spacing: 0.04em;
	margin-bottom: var(--imw-space-xs);
}
.imw-process__title {
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1.0625rem;
	color: var(--imw-color-primary);
	margin: 0 0 0.375rem;
}
.imw-process__copy { margin: 0; color: var(--imw-color-text-muted); font-size: 0.9375rem; line-height: 1.55; }

.imw-pricing {
	background: var(--imw-color-primary);
	color: var(--imw-color-text-onprimary);
	padding: var(--imw-space-md);
	border-radius: var(--imw-radius-lg);
}
.imw-pricing h3 { color: #FFF; margin-top: 0; }
.imw-pricing p { color: rgba(244, 239, 232, 0.85); margin: 0; }

/* ---------- Service area block ---------- */

.imw-area-block {
	background: var(--imw-color-surface);
	border-top: 1px solid var(--imw-color-border);
}
.imw-area-block__headline { margin-bottom: 0.5rem; }
.imw-area-block__lead { color: var(--imw-color-text-muted); margin-bottom: var(--imw-space-md); }
.imw-area-block__cities {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 0.5rem;
}
@media (min-width: 768px) {
	.imw-area-block__cities { grid-template-columns: repeat(6, 1fr); }
}
.imw-area-block__cities a {
	display: block;
	padding: var(--imw-space-sm);
	background: var(--imw-color-bg);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius);
	color: var(--imw-color-primary);
	font-family: var(--imw-font-display);
	font-weight: 600;
	text-align: center;
	text-decoration: none;
	transition: background 0.15s var(--imw-ease), border-color 0.15s var(--imw-ease);
}
.imw-area-block__cities a:hover {
	background: var(--imw-color-primary);
	color: #FFF;
	border-color: var(--imw-color-primary);
}

/* Neighbourhood chips on area pages */
.imw-neighbourhoods {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}
.imw-neighbourhoods li {
	list-style: none;
	padding: 0.375rem 0.875rem;
	background: var(--imw-color-bg);
	border: 1px solid var(--imw-color-border);
	border-radius: 100px;
	font-size: 0.875rem;
	color: var(--imw-color-text);
}

/* ---------- Final CTA ---------- */

.imw-final-cta {
	background: var(--imw-color-primary);
	color: var(--imw-color-text-onprimary);
	padding: var(--imw-space-lg) 0;
	text-align: center;
}
@media (min-width: 768px) {
	.imw-final-cta { padding: 5rem 0; }
}
.imw-final-cta__headline { color: #FFF; margin: 0 0 var(--imw-space-sm); font-size: 2rem; }
@media (min-width: 768px) {
	.imw-final-cta__headline { font-size: 2.75rem; }
}
.imw-final-cta__sub { color: rgba(244, 239, 232, 0.85); font-size: 1.0625rem; max-width: 36em; margin: 0 auto var(--imw-space-md); }
.imw-final-cta__actions {
	display: flex;
	gap: var(--imw-space-sm);
	flex-wrap: wrap;
	justify-content: center;
}
.imw-final-cta .imw-btn--ghost { color: #FFF; border-color: rgba(255,255,255,0.4); }
.imw-final-cta .imw-btn--ghost:hover { background: rgba(255,255,255,0.1); border-color: #FFF; color: #FFF; }

/* ---------- Footer ---------- */

.imw-footer {
	background: #15202F;
	color: rgba(244, 239, 232, 0.78);
	padding: var(--imw-space-lg) 0 var(--imw-space-md);
	font-size: 0.9375rem;
}
.imw-footer__inner {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
	max-width: var(--imw-container);
	margin: 0 auto;
	padding: 0 var(--imw-space-sm);
}
@media (min-width: 768px) {
	.imw-footer__inner {
		grid-template-columns: 1.3fr 1fr 1fr 1fr;
		padding: 0 var(--imw-space-md);
	}
}
.imw-footer h3,
.imw-footer .imw-footer__heading {
	color: #FFF;
	font-size: 0.9375rem;
	margin: 0 0 var(--imw-space-sm);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	font-family: var(--imw-font-display);
	font-weight: 700;
}
.imw-footer a { color: rgba(244, 239, 232, 0.78); text-decoration: none; }
.imw-footer a:hover { color: var(--imw-color-accent); }
.imw-footer__brand {
	font-family: var(--imw-font-display);
	font-weight: 800;
	font-size: 1.125rem;
	color: #FFF;
	margin: 0 0 var(--imw-space-xs);
}
.imw-footer__list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}
.imw-footer__contact-line { display: flex; gap: 0.5rem; align-items: baseline; margin-bottom: 0.375rem; }
.imw-footer__contact-line strong { color: #FFF; min-width: 64px; font-weight: 600; }
.imw-footer__bottom {
	max-width: var(--imw-container);
	margin: var(--imw-space-md) auto 0;
	padding: var(--imw-space-md) var(--imw-space-sm) 0;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	color: rgba(244, 239, 232, 0.5);
	font-size: 0.8125rem;
}
@media (min-width: 768px) {
	.imw-footer__bottom {
		flex-direction: row;
		justify-content: space-between;
		padding: var(--imw-space-md) var(--imw-space-md) 0;
	}
}

/* ---------- Sticky mobile CTA ---------- */

.imw-sticky-cta {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	background: var(--imw-color-accent-2);
	color: #FFF;
	padding: 0.875rem var(--imw-space-sm);
	z-index: 80;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1.0625rem;
	box-shadow: 0 -4px 16px rgba(30, 42, 58, 0.25);
	transition: transform 0.25s var(--imw-ease);
}
.imw-sticky-cta[data-hidden="true"] { transform: translateY(110%); }
.imw-sticky-cta a { color: #FFF; text-decoration: none; }
.imw-sticky-cta::before {
	content: '☏';
	margin-right: 0.625rem;
	font-size: 1.125rem;
}
@media (min-width: 768px) {
	.imw-sticky-cta { display: none; }
}
body.imw-drywall { padding-bottom: 64px; }
@media (min-width: 768px) {
	body.imw-drywall { padding-bottom: 0; }
}

/* ---------- About page ---------- */

.imw-about-story {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-lg);
	align-items: start;
}
@media (min-width: 1024px) {
	.imw-about-story { grid-template-columns: 1.3fr 1fr; }
}
.imw-about-story__photo {
	background-image: url("../images/about-finished-corner-tall.jpg");
	background-size: cover;
	background-position: center top;
	border-radius: var(--imw-radius-lg);
	min-height: 420px;
	position: relative;
}

.imw-values {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
}
@media (min-width: 768px) {
	.imw-values { grid-template-columns: repeat(3, 1fr); }
}
.imw-value {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
}
.imw-value__title {
	font-family: var(--imw-font-display);
	font-weight: 700;
	font-size: 1.25rem;
	color: var(--imw-color-primary);
	margin: 0 0 0.5rem;
}
.imw-value__copy { margin: 0; color: var(--imw-color-text-muted); }

.imw-certs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--imw-space-sm);
	justify-content: center;
}
.imw-cert {
	display: inline-flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	padding: var(--imw-space-md);
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	min-width: 160px;
	text-align: center;
}
.imw-cert__title {
	font-family: var(--imw-font-display);
	font-weight: 700;
	color: var(--imw-color-primary);
}
.imw-cert__sub {
	color: var(--imw-color-text-muted);
	font-size: 0.875rem;
}

/* ---------- Contact page ---------- */

.imw-contact {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-lg);
}
@media (min-width: 1024px) {
	.imw-contact { grid-template-columns: 1.4fr 1fr; }
}
.imw-contact__map {
	border-radius: var(--imw-radius-lg);
	overflow: hidden;
	border: 1px solid var(--imw-color-border);
	min-height: 340px;
}
.imw-contact__map iframe {
	width: 100%;
	height: 100%;
	min-height: 340px;
	border: 0;
	display: block;
}
.imw-contact__sidebar h3 {
	font-size: 1.125rem;
	margin: 0 0 0.5rem;
}
.imw-contact__sidebar ul {
	list-style: none;
	padding: 0;
	margin: 0 0 var(--imw-space-md);
}

/* ---------- Quote page ---------- */

.imw-quote-page {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-lg);
}
@media (min-width: 1024px) {
	.imw-quote-page { grid-template-columns: 1.2fr 1fr; }
}
.imw-quote-page__sidebar {
	display: flex;
	flex-direction: column;
	gap: var(--imw-space-md);
}
.imw-quote-stat {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
}
.imw-quote-stat strong {
	display: block;
	font-family: var(--imw-font-display);
	font-size: 1.75rem;
	color: var(--imw-color-primary);
	margin-bottom: 0.25rem;
}
.imw-quote-stat span { color: var(--imw-color-text-muted); }

/* ---------- Blog ---------- */

.imw-blog-list {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--imw-space-md);
}
@media (min-width: 768px) {
	.imw-blog-list { grid-template-columns: repeat(2, 1fr); }
}
.imw-blog-card {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	text-decoration: none;
	color: var(--imw-color-text);
}
.imw-blog-card:hover {
	border-color: var(--imw-color-accent);
	color: var(--imw-color-text);
}
.imw-blog-card h3 { color: var(--imw-color-primary); margin: 0; }
.imw-blog-card__meta { color: var(--imw-color-text-muted); font-size: 0.875rem; }
.imw-blog-card__excerpt { color: var(--imw-color-text-muted); margin: 0; }

.imw-post {
	max-width: 720px;
	margin: 0 auto;
	padding: var(--imw-space-lg) var(--imw-space-sm);
}
@media (min-width: 768px) {
	.imw-post { padding: var(--imw-space-xl) var(--imw-space-md); }
}
.imw-post__meta { color: var(--imw-color-text-muted); font-size: 0.875rem; margin-bottom: var(--imw-space-sm); }
.imw-post h2 { margin-top: var(--imw-space-md); }
.imw-post h3 { margin-top: var(--imw-space-md); }
.imw-post p { line-height: 1.7; }

/* ---------- Misc utility ---------- */

.imw-related {
	margin-top: var(--imw-space-lg);
}

.imw-placeholder-note {
	font-size: 0.75rem;
	color: var(--imw-color-text-muted);
	font-style: italic;
}

@media (prefers-reduced-motion: reduce) {
	body.imw-drywall *,
	body.imw-drywall *::before,
	body.imw-drywall *::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
	}
}

/* ============================================================
   Specificity overrides
   The base "body.imw-drywall h1..h4" and "body.imw-drywall a" rules
   carry (0,0,1,1) specificity, which beats class-only color overrides.
   These rules re-state colors on dark-background contexts and on
   buttons with the same-or-higher specificity so they win cleanly
   without !important.
   ============================================================ */

/* Headings on dark backgrounds */
body.imw-drywall .imw-hero__headline,
body.imw-drywall .imw-page-hero__title,
body.imw-drywall .imw-final-cta__headline,
body.imw-drywall .imw-pricing h3,
body.imw-drywall .imw-footer h3,
body.imw-drywall .imw-footer__heading,
body.imw-drywall .imw-footer__brand {
	color: #FFFFFF;
}

body.imw-drywall .imw-pullquote__text {
	color: #FFFFFF;
}

/* Hero subhead + page-hero lead readability on dark */
body.imw-drywall .imw-hero__sub,
body.imw-drywall .imw-page-hero__lead,
body.imw-drywall .imw-final-cta__sub {
	color: rgba(255, 255, 255, 0.92);
}

/* Final CTA subhead — explicit text-align: center because the inherited center
 * from .imw-final-cta isn't winning (some browser engines treat <p> with
 * max-width + margin auto as having its own text-align baseline). */
body.imw-drywall .imw-final-cta { text-align: center; }
body.imw-drywall .imw-final-cta .imw-final-cta__headline,
body.imw-drywall .imw-final-cta .imw-final-cta__sub,
body.imw-drywall .imw-final-cta .imw-final-cta__actions {
	text-align: center;
}
body.imw-drywall .imw-final-cta .imw-final-cta__sub {
	max-width: 36em;
	margin-left: auto;
	margin-right: auto;
}

/* Pricing card body copy — was rgba(244,239,232,0.85) which clears AA but tighten for confidence */
body.imw-drywall .imw-pricing p {
	color: rgba(255, 255, 255, 0.94);
}

/* Pull-quote attribution — bump from 0.7 to 0.85 alpha for AA confidence */
body.imw-drywall .imw-pullquote__attr {
	color: rgba(255, 255, 255, 0.85);
}

/* Footer body text + bottom credits — bump alpha for AA */
body.imw-drywall .imw-footer { color: rgba(255, 255, 255, 0.88); }
body.imw-drywall .imw-footer a { color: rgba(255, 255, 255, 0.88); }
body.imw-drywall .imw-footer a:hover { color: var(--imw-color-accent); }
body.imw-drywall .imw-footer__bottom { color: rgba(255, 255, 255, 0.7); }
body.imw-drywall .imw-footer__bottom a { color: rgba(255, 255, 255, 0.85); }

/* Hero ghost button on dark — raise border + text alpha for AA */
body.imw-drywall .imw-hero__actions .imw-btn--ghost,
body.imw-drywall .imw-final-cta .imw-btn--ghost {
	color: #FFFFFF;
	border-color: rgba(255, 255, 255, 0.6);
}
body.imw-drywall .imw-hero__actions .imw-btn--ghost:hover,
body.imw-drywall .imw-final-cta .imw-btn--ghost:hover {
	background: rgba(255, 255, 255, 0.14);
	border-color: #FFFFFF;
	color: #FFFFFF;
}

/* Buttons: anchor-styled buttons need to outrank the base body anchor color rule.
 * Button background uses accent-2 (#A85128) instead of accent (#C4623E) so that
 * white text on the button hits 6.86:1 (clears AA, near AAA). #C4623E + white is
 * only 4.06:1 per Lighthouse's measurement and fails AA. */
body.imw-drywall .imw-btn { text-decoration: none; }
body.imw-drywall a.imw-btn--accent,
body.imw-drywall .imw-btn--accent {
	color: #FFFFFF;
	background: var(--imw-color-accent-2);
	border-color: var(--imw-color-accent-2);
}
body.imw-drywall a.imw-btn--accent:hover,
body.imw-drywall .imw-btn--accent:hover {
	color: #FFFFFF;
	background: #8E411E;
	border-color: #8E411E;
}
body.imw-drywall a.imw-btn--primary,
body.imw-drywall .imw-btn--primary {
	color: #FFFFFF;
	background: var(--imw-color-primary);
	border-color: var(--imw-color-primary);
}
body.imw-drywall a.imw-btn--primary:hover,
body.imw-drywall .imw-btn--primary:hover {
	color: #FFFFFF;
	background: var(--imw-color-primary-2);
	border-color: var(--imw-color-primary-2);
}
body.imw-drywall a.imw-btn--ghost,
body.imw-drywall .imw-btn--ghost {
	color: var(--imw-color-primary);
}
body.imw-drywall a.imw-btn--ghost:hover,
body.imw-drywall .imw-btn--ghost:hover {
	color: #FFFFFF;
	background: var(--imw-color-primary);
	border-color: var(--imw-color-primary);
}

/* Sticky mobile CTA: anchor element — base anchor color was bleeding through */
body.imw-drywall a.imw-sticky-cta,
body.imw-drywall .imw-sticky-cta a {
	color: #FFFFFF;
}

/* Service tile is an anchor; force readable text colors on white tile bg */
body.imw-drywall a.imw-service-tile {
	color: var(--imw-color-text);
}
body.imw-drywall a.imw-service-tile:hover {
	color: var(--imw-color-text);
}
body.imw-drywall a.imw-service-tile .imw-service-tile__title { color: var(--imw-color-primary); }
body.imw-drywall a.imw-service-tile .imw-service-tile__more { color: var(--imw-color-accent-2); }

/* Project-card type chip — tighten contrast with darker pill bg */
body.imw-drywall .imw-project-card__type {
	background: rgba(0, 0, 0, 0.42);
	color: #FFFFFF;
}

/* Team-photo stub: clearly marked placeholder until real photos drop in */
body.imw-drywall .imw-photo-stub {
	background:
		repeating-linear-gradient(135deg, rgba(255,255,255,0.06) 0 8px, transparent 8px 16px),
		linear-gradient(135deg, #2A3850 0%, #1E2A3A 100%);
	border-radius: var(--imw-radius-lg);
	min-height: 220px;
	margin-bottom: 1rem;
	position: relative;
}
body.imw-drywall .imw-photo-stub::after {
	content: 'Team photo coming';
	position: absolute;
	bottom: 12px;
	left: 12px;
	color: rgba(255, 255, 255, 0.78);
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.04em;
}

/* Header phone link readable on light bg */
body.imw-drywall .imw-header__phone { color: var(--imw-color-accent-2); }
body.imw-drywall .imw-header__phone:hover { color: var(--imw-color-accent); }

/* Quote-form small phone link — bump for AA */
body.imw-drywall .imw-quote-form__phone { color: var(--imw-color-accent-2); font-weight: 700; }

/* Filter bar pressed state — text on primary bg */
body.imw-drywall .imw-filter-bar__btn[aria-pressed="true"] { color: #FFFFFF; }

/* Drawer items: anchor color was pulling muted accent-2; restore primary */
body.imw-drywall .imw-drawer__title,
body.imw-drywall .imw-drawer__sub { color: var(--imw-color-primary); }
body.imw-drywall .imw-drawer__sub:hover { color: var(--imw-color-accent-2); }

/* Nav items / sublinks must read as navy on the light header, not rust (the body
 * anchor rule was outranking the .imw-nav__item color). */
body.imw-drywall .imw-nav__item,
body.imw-drywall a.imw-nav__item { color: var(--imw-color-primary); }
body.imw-drywall .imw-nav__sublink,
body.imw-drywall a.imw-nav__sublink { color: var(--imw-color-primary); }
body.imw-drywall .imw-nav__sublink:hover { color: var(--imw-color-accent-2); }

/* Blog card and project card are anchor-wrapped; force readable body text */
body.imw-drywall a.imw-blog-card,
body.imw-drywall a.imw-blog-card:hover { color: var(--imw-color-text); }
body.imw-drywall a.imw-blog-card h3 { color: var(--imw-color-primary); }

/* Hero / page-hero eyebrows: use lightened rust so it clears AA on navy bg.
 * Original --imw-color-accent on --imw-color-primary is only 3.74:1 (fails AA for normal text). */
body.imw-drywall .imw-hero__eyebrow,
body.imw-drywall .imw-page-hero__eyebrow {
	color: var(--imw-color-accent-light);
}

/* Process step counter: rust on white is 4.75:1 (AA), keep as designed but tighten on focus */
body.imw-drywall .imw-process__step::before { color: var(--imw-color-accent-2); } /* lifts to 6.5:1 */

/* ============================================================
   WPForms theming — drive WPForms's own CSS variables so its modern
   stylesheet (which uses var(--wpforms-button-background-color), etc.)
   resolves to brand colors. Anything that can't be done via vars gets
   a high-specificity selector with body.imw-drywall .wpforms-container.
   ============================================================ */

body.imw-drywall .wpforms-container,
body.imw-drywall .wpforms-container-full,
body.imw-drywall div.wpforms-container,
body.imw-drywall div.wpforms-container-full {
	/* Buttons */
	--wpforms-button-background-color: #A85128;
	--wpforms-button-background-color-alt: #8E411E;
	--wpforms-button-text-color: #FFFFFF;
	--wpforms-button-text-color-alt: #FFFFFF;
	--wpforms-button-border-color: #A85128;
	--wpforms-button-border-color-alt: #8E411E;
	--wpforms-button-border-radius: 4px;
	--wpforms-button-border-style: solid;
	--wpforms-button-border-size: 1px;
	--wpforms-button-size-padding-h: 24px;
	--wpforms-button-size-margin-top: 16px;
	--wpforms-button-size-font-size: 16px;
	--wpforms-button-size-height: auto;

	/* Fields */
	--wpforms-field-border-color: #C8C8C0;
	--wpforms-field-border-radius: 4px;
	--wpforms-field-border-size: 1px;
	--wpforms-field-border-style: solid;
	--wpforms-field-text-color: #1A1A1A;
	--wpforms-field-background-color: #FFFFFF;
	--wpforms-field-menu-color: #FFFFFF;
	--wpforms-field-size-input-spacing: 0.5rem;
	/* Auto-height so descenders (y, g, p) aren't clipped under our border-box. */
	--wpforms-field-size-input-height: auto;
	--wpforms-field-size-font-size: 16px;

	/* Labels */
	--wpforms-label-color: #1E2A3A;
	--wpforms-label-error-color: #B23D1F;
	--wpforms-label-sublabel-color: #6B6B6B;

	margin: 0;
}

/* Override WPForms' "medium" size cap of 60% — we want fields to fill
 * the grid cell or the form container so the layout looks right.
 * Selectors mirror the ones in wpforms-full.min.css so we win on equal
 * specificity by source order (our CSS loads after WPForms'). */
body.imw-drywall .wpforms-container input.wpforms-field-medium,
body.imw-drywall .wpforms-container select.wpforms-field-medium,
body.imw-drywall .wpforms-container textarea.wpforms-field-medium,
body.imw-drywall .wpforms-container .wpforms-field-row.wpforms-field-medium,
body.imw-drywall .wp-core-ui div.wpforms-container input.wpforms-field-medium,
body.imw-drywall .wp-core-ui div.wpforms-container select.wpforms-field-medium,
body.imw-drywall .wp-core-ui div.wpforms-container .wpforms-field-row.wpforms-field-medium,
body.imw-drywall .wpforms-container input.wpforms-field-large,
body.imw-drywall .wpforms-container select.wpforms-field-large,
body.imw-drywall .wpforms-container textarea.wpforms-field-large {
	max-width: 100%;
	width: 100%;
}

/* Submit button — backstop in case WPForms updates its CSS variable names */
body.imw-drywall div.wpforms-container button.wpforms-submit,
body.imw-drywall div.wpforms-container input[type="submit"].wpforms-submit {
	background-color: #A85128;
	color: #FFFFFF;
	border-color: #A85128;
	font-family: var(--imw-font-display);
	font-weight: 700;
	letter-spacing: 0.01em;
	padding: 0.875rem 1.5rem;
	cursor: pointer;
	transition: background-color 0.15s var(--imw-ease), border-color 0.15s var(--imw-ease), transform 0.15s var(--imw-ease);
}
body.imw-drywall div.wpforms-container button.wpforms-submit:hover,
body.imw-drywall div.wpforms-container input[type="submit"].wpforms-submit:hover {
	background-color: #8E411E;
	border-color: #8E411E;
	transform: translateY(-1px);
}

/* Inputs — match the IMW design system look on focus and base.
 * Explicit line-height + height: auto keeps descenders intact ("y", "g", "p"). */
body.imw-drywall div.wpforms-container input[type="text"],
body.imw-drywall div.wpforms-container input[type="email"],
body.imw-drywall div.wpforms-container input[type="tel"],
body.imw-drywall div.wpforms-container input[type="url"],
body.imw-drywall div.wpforms-container input[type="number"],
body.imw-drywall div.wpforms-container select,
body.imw-drywall div.wpforms-container textarea {
	font-family: var(--imw-font-body);
	font-size: 1rem;
	line-height: 1.5;
	height: auto;
	padding: 0.6875rem 0.75rem;
	background: #FFFFFF;
	color: var(--imw-color-text);
	box-shadow: none;
}
body.imw-drywall div.wpforms-container input:focus,
body.imw-drywall div.wpforms-container select:focus,
body.imw-drywall div.wpforms-container textarea:focus {
	border-color: var(--imw-color-accent-2);
	outline: none;
	box-shadow: 0 0 0 3px rgba(168, 81, 40, 0.15);
}
body.imw-drywall div.wpforms-container textarea { min-height: 132px; resize: vertical; }

/* Field labels — display font, navy color, consistent spacing */
body.imw-drywall div.wpforms-container .wpforms-field-label {
	font-family: var(--imw-font-display);
	font-weight: 600;
	font-size: 0.875rem;
	color: var(--imw-color-primary);
	display: block;
	margin: 0 0 0.25rem;
}
body.imw-drywall div.wpforms-container .wpforms-required-label {
	color: var(--imw-color-accent-2);
	font-weight: 700;
}

/* Container styling for our wrappers */
body.imw-drywall .imw-quote-form--wpforms,
body.imw-drywall .imw-long-form--wpforms {
	background: var(--imw-color-surface);
	border: 1px solid var(--imw-color-border);
	border-radius: var(--imw-radius-lg);
	padding: var(--imw-space-md);
	box-shadow: var(--imw-shadow-sm);
}

/* Short form: 3-column field grid on tablet+; mobile stacks. */
@media (min-width: 768px) {
	body.imw-drywall .imw-quote-form--wpforms form .wpforms-field-container {
		display: grid;
		grid-template-columns: repeat(3, minmax(0, 1fr));
		gap: var(--imw-space-sm);
		align-items: end;
	}
	body.imw-drywall .imw-quote-form--wpforms form .wpforms-field {
		padding-bottom: 0;
	}
}

/* Submit row + microcopy live BELOW the field grid as full-width centered rows.
 * The submit-container is a sibling of the field grid (not a grid item), so we
 * just center it via text-align. Same for the "Or call …" microcopy that we
 * append to the form wrapper. Apply to both short + long form so the rule
 * lands on every page that embeds either helper. */
body.imw-drywall .imw-quote-form--wpforms .wpforms-submit-container,
body.imw-drywall .imw-long-form--wpforms .wpforms-submit-container {
	text-align: center;
	margin-top: var(--imw-space-md);
}
body.imw-drywall .imw-quote-form--wpforms .imw-quote-form__small,
body.imw-drywall .imw-long-form--wpforms .imw-quote-form__small {
	text-align: center;
	margin: var(--imw-space-sm) 0 0;
}

/* Make the submit feel like a primary CTA — bigger, weightier, min-width so it
 * doesn't shrink to text width. This overrides the size set by the WPForms
 * variables block above. */
body.imw-drywall .imw-quote-form--wpforms button.wpforms-submit,
body.imw-drywall .imw-long-form--wpforms button.wpforms-submit,
body.imw-drywall .imw-quote-form--wpforms input[type="submit"].wpforms-submit,
body.imw-drywall .imw-long-form--wpforms input[type="submit"].wpforms-submit {
	font-size: 1.0625rem;
	font-weight: 800;
	letter-spacing: 0.01em;
	padding: 1rem 2.25rem;
	min-width: 220px;
}

/* Long form: 2-column on tablet+; full-width fields drop to one column. */
@media (min-width: 640px) {
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field-container {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: var(--imw-space-sm);
	}
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field {
		padding-bottom: 0;
	}
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field-textarea,
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field[data-field-id="5"],
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field[data-field-id="7"],
	body.imw-drywall .imw-long-form--wpforms form .wpforms-field[data-field-id="8"] {
		grid-column: 1 / -1;
	}
}

/* Confirmation message ("Thanks. We will be in touch...") */
body.imw-drywall div.wpforms-confirmation-container,
body.imw-drywall div.wpforms-confirmation-container-full {
	background: rgba(168, 81, 40, 0.08);
	border: 1px solid var(--imw-color-accent-2);
	border-radius: var(--imw-radius);
	padding: var(--imw-space-sm);
	color: var(--imw-color-text);
}
body.imw-drywall div.wpforms-confirmation-container p,
body.imw-drywall div.wpforms-confirmation-container-full p { margin: 0; }

/* Error states */
body.imw-drywall div.wpforms-container .wpforms-error,
body.imw-drywall div.wpforms-container label.wpforms-error,
body.imw-drywall div.wpforms-container em.wpforms-error {
	color: #B23D1F;
	font-size: 0.875rem;
	font-weight: 500;
	margin-top: 0.25rem;
	display: block;
}
body.imw-drywall div.wpforms-container input.wpforms-error,
body.imw-drywall div.wpforms-container select.wpforms-error,
body.imw-drywall div.wpforms-container textarea.wpforms-error,
body.imw-drywall div.wpforms-container input.user-invalid,
body.imw-drywall div.wpforms-container select.user-invalid,
body.imw-drywall div.wpforms-container textarea.user-invalid {
	border-color: #B23D1F;
}

/* Body copy color — keep darker than muted gray for AA on long passages */
body.imw-drywall .imw-section,
body.imw-drywall .imw-container { color: var(--imw-color-text); }

/* Service-tile lead muted text — tighten from #6B6B6B to #565654 for AA on long lead lines */
body.imw-drywall .imw-service-tile__lead,
body.imw-drywall .imw-project-card__where,
body.imw-drywall .imw-blog-card__excerpt,
body.imw-drywall .imw-blog-card__meta,
body.imw-drywall .imw-section__lead,
body.imw-drywall .imw-process__copy,
body.imw-drywall .imw-value__copy,
body.imw-drywall .imw-quote-form__small,
body.imw-drywall .imw-cert__sub,
body.imw-drywall .imw-testimonial__where,
body.imw-drywall .imw-quote-stat span {
	color: #555553;
}


/* Demonstration banner (added for public demo promotion) */
.imw-demo-banner { background: #0F1722; text-align: center; padding: 0.5rem 1rem; position: relative; z-index: 100; }
.imw-demo-banner a { color: #fff; font-size: 0.8125rem; line-height: 1.45; text-decoration: none; opacity: 0.95; }
.imw-demo-banner a:hover { opacity: 1; }
.imw-demo-banner__link { text-decoration: underline; text-underline-offset: 2px; }


/* Homepage Q&A section (Foundation checklist: answers to real questions) */
.imw-faq { max-width: 780px; }
.imw-faq__item { padding: 1.25rem 0; border-top: 1px solid var(--imw-color-border); }
.imw-faq__item:last-child { border-bottom: 1px solid var(--imw-color-border); }
.imw-faq__item h3 { font-family: var(--imw-font-display); font-size: 1.0625rem; color: var(--imw-color-primary); margin: 0 0 0.375rem; }
.imw-faq__item p { margin: 0; color: var(--imw-color-text-muted); }


/* =============================================================
   INTERACTIVE STATE SYSTEM (DEMO-5)
   One hover/focus treatment, derived from the palette. Rules use
   :where() at zero specificity so existing component styles win;
   focus-visible is explicit so keyboards never see browser blue.
   Fonts never change on any interactive state.
   ============================================================= */

/* Base link treatment for unclassed (content) anchors only */
:where(body.imw-drywall) :where(a:not([class])) {
	color: var(--imw-color-accent-2);
	text-decoration: underline;
	text-underline-offset: 2px;
}
@media (hover: hover) {
	:where(body.imw-drywall) :where(a:not([class])):hover {
		color: var(--imw-color-accent);
	}
}

/* Visible, palette-consistent keyboard focus everywhere */
body.imw-drywall a:focus-visible,
body.imw-drywall button:focus-visible,
body.imw-drywall input:focus-visible,
body.imw-drywall select:focus-visible,
body.imw-drywall textarea:focus-visible,
body.imw-drywall [tabindex]:focus-visible {
	outline: 2px solid var(--imw-color-accent);
	outline-offset: 2px;
	border-radius: 2px;
}

/* Form fields: visible palette focus (fields previously showed nothing) */
body.imw-drywall div.wpforms-container-full .wpforms-form input:focus,
body.imw-drywall div.wpforms-container-full .wpforms-form select:focus,
body.imw-drywall div.wpforms-container-full .wpforms-form textarea:focus,
body.imw-drywall .imw-quote-form input:focus,
body.imw-drywall .imw-quote-form select:focus {
	border-color: var(--imw-color-accent);
	box-shadow: 0 0 0 1px var(--imw-color-accent);
	outline: none;
}
body.imw-drywall .wpforms-container-full {
	--wpforms-field-border-color-spotlight: var(--imw-color-accent);
}

/* Burger + drawer close ran on browser-default font and color */
body.imw-drywall .imw-burger,
body.imw-drywall .imw-drawer__close {
	font: inherit;
	color: var(--imw-color-primary);
	background: transparent;
}
@media (hover: hover) {
	body.imw-drywall .imw-burger:hover .imw-burger__bar {
		background: var(--imw-color-accent);
	}
	body.imw-drywall .imw-drawer__close:hover {
		color: var(--imw-color-accent);
	}
}
