/* Apex Floor Preparation — theme styles for block styles and site chrome.
   Tokens come from theme.json (var(--wp--preset--*)); see design-system/MASTER.md. */

:root {
	--apx-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
	--apx-line: color-mix(in srgb, currentColor 14%, transparent);
	--apx-line-strong: color-mix(in srgb, currentColor 30%, transparent);
	--apx-muted: var(--wp--preset--color--muted-on-dark);
	--apx-header-h: 76px;
	/* Per-section accents: dark sections by default, overridden for Paper below */
	--apx-accent: var(--wp--preset--color--primary);
	--apx-accent-hover: #FF7A47;
	--apx-on-accent: var(--wp--preset--color--contrast);
	--apx-raised: var(--wp--preset--color--slab);
	--apx-text: var(--wp--preset--color--base);
	--apx-control-line: rgba(244, 242, 238, 0.42);
}

body { overflow-x: clip; -webkit-font-smoothing: antialiased; }
.is-style-section-paper {
	--apx-muted: var(--wp--preset--color--muted-on-light);
	--apx-accent: var(--wp--preset--color--primary-deep);
	--apx-accent-hover: #A8380A;
	--apx-on-accent: var(--wp--preset--color--white);
	--apx-raised: var(--wp--preset--color--white);
	--apx-text: var(--wp--preset--color--contrast);
	--apx-control-line: var(--wp--preset--color--muted-on-light);
}
.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
p { text-wrap: pretty; }
h1, h2, h3 { text-wrap: balance; }
:where(.wp-site-blocks) :focus-visible { outline: 2px solid var(--wp--preset--color--primary); outline-offset: 2px; }
.is-style-section-paper :focus-visible { outline-color: var(--wp--preset--color--primary-deep); }

/* ---------------- Header ---------------- */
.wp-site-blocks > header.wp-block-template-part { position: sticky; top: 0; z-index: 20; }
.wp-site-blocks > header.wp-block-template-part > .wp-block-group {
	background: rgba(11, 12, 13, 0.94);
	border-bottom: 1px solid rgba(244, 242, 238, 0.12);
	transition: background-color 250ms var(--apx-ease-out), border-color 250ms var(--apx-ease-out);
}
/* Front page: header floats over the hero video until the visitor scrolls */
body.home .wp-site-blocks > header.wp-block-template-part { position: fixed; left: 0; right: 0; top: 0; }
body.home.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 32px; }
@media (max-width: 782px) { body.home.admin-bar .wp-site-blocks > header.wp-block-template-part { top: 46px; } }
body.home .wp-site-blocks > header.wp-block-template-part:not(.is-solid) > .wp-block-group {
	background: transparent;
	border-bottom-color: transparent;
}
header.wp-block-template-part .wp-block-site-logo img { width: 168px; height: auto; }
header.wp-block-template-part .wp-block-navigation-item__content { padding: 10px 4px; position: relative; }
header.wp-block-template-part .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 4px;
	height: 2px;
	background: var(--wp--preset--color--primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 250ms var(--apx-ease-out);
}
header.wp-block-template-part .wp-block-navigation-item__content:hover::after,
header.wp-block-template-part .current-menu-item > .wp-block-navigation-item__content::after,
header.wp-block-template-part .current-menu-ancestor > .wp-block-navigation-item__content::after { transform: scaleX(1); }
header.wp-block-template-part p.has-mono-font-family a { text-decoration: none; display: inline-flex; align-items: center; min-height: 48px; }
@media (max-width: 1023px) {
	header.wp-block-template-part p.has-mono-font-family { display: none; }
}
@media (max-width: 599px) {
	header.wp-block-template-part .wp-block-buttons { display: none; }
	header.wp-block-template-part .wp-block-site-logo img { width: 140px; }
}

/* ---------------- Section label ---------------- */
.is-style-eyebrow {
	display: flex;
	align-items: center;
	gap: 12px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: var(--wp--preset--font-size--label);
	font-weight: 500;
	line-height: 1.3;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted-on-dark);
}
.is-style-eyebrow::before { content: ""; flex: none; width: 28px; height: 2px; background: var(--wp--preset--color--primary); }
.is-style-section-paper .is-style-eyebrow { color: var(--wp--preset--color--muted-on-light); }
.is-style-section-paper .is-style-eyebrow::before { background: var(--wp--preset--color--primary-deep); }
/* Breadcrumb link inside a label: muted like the label, with a taller tap area */
.is-style-eyebrow a {
	color: inherit;
	text-decoration-color: var(--apx-accent);
	text-underline-offset: 3px;
	padding-block: 14px;
	margin-block: -14px;
}
.is-style-eyebrow a:hover { color: var(--apx-accent); }

/* Placeholder for owner content still to come — impossible to miss before launch */
p.is-style-tbc {
	width: fit-content;
	max-width: 100%;
	padding: 6px 12px;
	border: 1px dashed var(--apx-accent);
	color: var(--apx-accent);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	line-height: 1.4;
	text-transform: uppercase;
}

/* ---------------- Laser heading + readout ---------------- */
:is(.wp-block-heading, .wp-block-post-title).is-style-laser { position: relative; padding-bottom: 24px; }
:is(.wp-block-heading, .wp-block-post-title).is-style-laser::before {
	content: "";
	position: absolute;
	left: 0;
	bottom: -3px;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 4px rgba(255, 91, 31, 0.22);
}
:is(.wp-block-heading, .wp-block-post-title).is-style-laser::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 0;
	width: min(100%, 61.25rem);
	height: 2px;
	background: linear-gradient(90deg, var(--wp--preset--color--primary) 0%, var(--wp--preset--color--primary) 82%, rgba(255, 91, 31, 0) 100%);
	transform-origin: left;
}
.is-style-laser .apx-w { display: inline-block; white-space: pre; }
.is-style-laser.is-levelling::after { animation: apx-laser-draw 1200ms var(--apx-ease-out) 250ms both; }
.is-style-laser.is-levelling .apx-w { animation: apx-settle 900ms var(--apx-ease-out) var(--delay, 300ms) both; }
.is-style-laser.is-levelling + .is-style-readout { animation: apx-fade-up 500ms var(--apx-ease-out) 1350ms both; }
@keyframes apx-laser-draw { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes apx-settle { from { transform: translateY(var(--dy, 0)) rotate(var(--rot, 0deg)); } to { transform: none; } }
@keyframes apx-fade-up { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

.is-style-readout {
	width: 15rem;
	max-width: 100%;
	margin-top: 10px !important;
	margin-left: max(0px, calc(min(100%, 61.25rem) - 15rem)) !important;
	padding: 3px 8px;
	background: rgba(11, 12, 13, 0.78);
	color: var(--wp--preset--color--primary);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.8125rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-align: right;
	text-transform: uppercase;
}

/* ---------------- Hero cover ---------------- */
.wp-block-cover__inner-container > p.has-large-font-size {
	max-width: 52ch;
	margin-left: calc((100% - min(100%, var(--wp--style--global--wide-size, 1320px))) / 2) !important;
}
.wp-block-cover:has(> .wp-block-cover__video-background) { padding-top: calc(var(--apx-header-h) + 2rem); }
.apx-video-toggle {
	position: absolute;
	z-index: 3;
	top: calc(var(--apx-header-h) + 16px);
	right: var(--wp--style--root--padding-right, 24px);
	width: 44px;
	height: 44px;
	display: grid;
	place-items: center;
	background: rgba(11, 12, 13, 0.6);
	color: var(--wp--preset--color--base);
	border: 1px solid rgba(244, 242, 238, 0.3);
	border-radius: 2px;
	cursor: pointer;
}
.apx-video-toggle svg { width: 16px; height: 16px; }
.apx-video-toggle .apx-i-play, .apx-video-toggle[data-state="paused"] .apx-i-pause { display: none; }
.apx-video-toggle[data-state="paused"] .apx-i-play { display: block; }

/* ---------------- Spec strip (hero facts) ---------------- */
.wp-block-group.is-style-spec-strip {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 0;
	border-top: 1px solid rgba(244, 242, 238, 0.22);
}
.is-style-spec-strip > * { margin: 0 !important; padding: 18px 20px 0 0; }
.is-style-spec-strip > * + * { padding-left: 20px; border-left: 1px solid rgba(244, 242, 238, 0.14); }
.is-style-spec-strip > * > p { margin: 0; }
.is-style-spec-strip > * > p:first-child {
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted-on-dark);
}
.is-style-spec-strip > * > p:last-child {
	margin-top: 6px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.375rem, 1rem + 0.9vw, 1.875rem);
	font-weight: 600;
	line-height: 1.1;
}
@media (max-width: 767px) {
	.wp-block-group.is-style-spec-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 16px; }
	.is-style-spec-strip > *:nth-child(3) { padding-left: 0; border-left: 0; }
}

/* ---------------- Lists ---------------- */
.is-style-checklist-row {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 12px 32px;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted-on-dark);
}
.is-style-checklist-row li { display: inline-flex; align-items: center; gap: 10px; margin: 0; }
.is-style-checklist-row li::before,
.is-style-checklist li::before {
	content: "";
	flex: none;
	width: 16px;
	height: 16px;
	background: var(--apx-accent);
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / contain no-repeat;
}
.is-style-checklist { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--apx-line); }
.is-style-checklist li { display: flex; gap: 12px; margin: 0; padding: 11px 0; border-bottom: 1px solid var(--apx-line); }
.is-style-checklist li::before { margin-top: 0.3em; }
.is-style-link-list { list-style: none; margin: 0; padding: 0; }
.is-style-link-list li { margin: 0; }
.is-style-link-list a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.is-style-link-list a:hover { color: var(--wp--preset--color--primary); }

/* ---------------- Spec table ---------------- */
.wp-block-table.is-style-spec { margin-inline: 0; margin-bottom: 0; }
.wp-block-table.is-style-spec table { border-collapse: collapse; width: 100%; }
.wp-block-table.is-style-spec thead { border-bottom: 0; }
.wp-block-table.is-style-spec th,
.wp-block-table.is-style-spec td {
	border: 0;
	border-bottom: 1px solid var(--apx-line);
	padding: 14px 16px 14px 0;
	text-align: left;
	vertical-align: top;
}
.wp-block-table.is-style-spec table { border-top: 2px solid currentColor; }
.wp-block-table.is-style-spec th {
	padding-block: 10px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.wp-block-table.is-style-spec td:first-child { font-weight: 600; }
.wp-block-table.is-style-spec:not(:has(thead)) td:first-child {
	width: 7rem;
	padding-top: 16px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.wp-block-table.is-style-spec a {
	text-decoration-color: var(--wp--preset--color--primary);
	text-underline-offset: 3px;
	/* Bigger tap area for phone/email without moving the text */
	display: inline-block;
	padding-block: 12px;
	margin-block: -12px;
}
.is-style-section-paper .wp-block-table.is-style-spec a { text-decoration-color: var(--wp--preset--color--primary-deep); }

/* ---------------- Panels & frames ---------------- */
.wp-block-group.is-style-spec-panel {
	position: relative;
	background: var(--wp--preset--color--slab);
	border: 1px solid var(--apx-line);
}
.is-style-section-paper .wp-block-group.is-style-spec-panel { background: var(--wp--preset--color--white); }
.is-style-spec-panel::before, .is-style-spec-panel::after,
.wp-block-image.is-style-ticks::before, .wp-block-image.is-style-ticks::after {
	content: "";
	position: absolute;
	z-index: 2;
	width: 14px;
	height: 14px;
	border: 0 solid var(--wp--preset--color--primary);
	pointer-events: none;
}
.is-style-section-paper .is-style-spec-panel::before, .is-style-section-paper .is-style-spec-panel::after,
.is-style-section-paper .wp-block-image.is-style-ticks::before, .is-style-section-paper .wp-block-image.is-style-ticks::after { border-color: var(--wp--preset--color--primary-deep); }
.is-style-spec-panel::before, .wp-block-image.is-style-ticks::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.is-style-spec-panel::after, .wp-block-image.is-style-ticks::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }
.wp-block-image.is-style-ticks { position: relative; }

/* Metric grid inside panels (label + mono value pairs) */
.is-style-spec-panel .wp-block-group.is-layout-grid > * > p:first-child {
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.is-style-spec-panel .wp-block-group.is-layout-grid > * > p:last-child {
	margin: 4px 0 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(1.5rem, 1.1rem + 1vw, 2.125rem);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.2;
}
.is-style-spec-panel .wp-block-group.is-layout-grid { border-top: 1px solid var(--apx-line); }
.is-style-spec-panel .wp-block-group.is-layout-grid > * { padding: 14px 0; border-bottom: 1px solid var(--apx-line); }

/* ---------------- Service index ---------------- */
.wp-block-group.is-style-service-index { border-top: 1px solid var(--apx-line); }
.is-style-service-index > .wp-block-group {
	position: relative;
	display: grid;
	grid-template-columns: 52px minmax(0, 1fr) 32px;
	column-gap: 16px;
	align-items: center;
	margin: 0 !important;
	padding: 26px 0;
	border-bottom: 1px solid var(--apx-line);
}
.is-style-service-index > .wp-block-group > * { margin: 0 !important; }
.is-style-service-index > .wp-block-group > p:first-child {
	grid-column: 1;
	grid-row: 1 / span 2;
	align-self: start;
	padding-top: 8px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.875rem;
	color: var(--wp--preset--color--muted-on-dark);
}
.is-style-service-index > .wp-block-group > h3 {
	grid-column: 2;
	font-size: clamp(1.75rem, 1.1rem + 1.7vw, 2.75rem);
	font-weight: 600;
	line-height: 1;
}
.is-style-service-index > .wp-block-group > h3 a { text-decoration: none; color: var(--wp--preset--color--muted-on-dark); transition: color 250ms var(--apx-ease-out); }
.is-style-service-index > .wp-block-group > h3 a::after { content: ""; position: absolute; inset: 0; }
.is-style-service-index > .wp-block-group > p:not(:first-child) {
	grid-column: 2;
	margin-top: 8px !important;
	font-size: 0.9375rem;
	color: var(--wp--preset--color--muted-on-dark);
}
.is-style-service-index > .wp-block-group::after {
	content: "→";
	grid-column: 3;
	grid-row: 1 / span 2;
	justify-self: end;
	font-size: 1.5rem;
	color: var(--wp--preset--color--muted-on-dark);
	opacity: 0.4;
	transform: translateX(-8px);
	transition: transform 250ms var(--apx-ease-out), opacity 250ms, color 250ms;
}
.is-style-service-index > .wp-block-group::before {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -1px;
	height: 2px;
	background: var(--wp--preset--color--primary);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 500ms var(--apx-ease-out);
}
.is-style-service-index > .wp-block-group:is(.is-active, :hover, :focus-within) > h3 a { color: var(--wp--preset--color--base); }
.is-style-service-index > .wp-block-group.is-active::before { transform: scaleX(1); }
.is-style-service-index > .wp-block-group.is-active::after { opacity: 1; transform: none; color: var(--wp--preset--color--primary); }
.is-style-service-index > .wp-block-group > .wp-block-image,
.is-style-service-index > .wp-block-group > .wp-block-table { display: none; }

/* Desktop: list + sticky preview panel (built by theme.js) */
@media (min-width: 1024px) {
	.wp-block-group.is-style-service-index.has-preview {
		display: grid;
		grid-template-columns: minmax(0, 1fr) minmax(0, 0.82fr);
		column-gap: 8%;
		align-items: start;
		border-top: 0;
	}
	.is-style-service-index.has-preview > .wp-block-group { grid-column: 1; }
	.is-style-service-index.has-preview > .wp-block-group:first-of-type { border-top: 1px solid var(--apx-line); }
	.apx-preview { grid-column: 2; grid-row: 1 / span 20; position: sticky; top: calc(var(--apx-header-h) + 32px); }
	.apx-preview-frame { position: relative; aspect-ratio: 5 / 3; background: var(--wp--preset--color--slab); margin: 0; }
	.apx-preview-frame img {
		position: absolute;
		inset: 0;
		width: 100%;
		height: 100%;
		object-fit: cover;
		opacity: 0;
		transition: opacity 400ms var(--apx-ease-out);
	}
	.apx-preview-frame img.is-active { opacity: 1; }
	.apx-preview-frame::before, .apx-preview-frame::after {
		content: "";
		position: absolute;
		z-index: 2;
		width: 14px;
		height: 14px;
		border: 0 solid var(--wp--preset--color--primary);
	}
	.apx-preview-frame::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
	.apx-preview-frame::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }
	.apx-preview-caption {
		margin: 12px 0 0;
		font-family: var(--wp--preset--font-family--mono);
		font-size: 0.75rem;
		letter-spacing: 0.08em;
		text-transform: uppercase;
		color: var(--wp--preset--color--muted-on-dark);
	}
	.apx-preview .wp-block-table { display: block; margin-top: 28px; }
}
@media (max-width: 1023px) {
	.is-style-service-index > .wp-block-group { grid-template-columns: 36px minmax(0, 1fr) 96px; padding: 18px 0; }
	.is-style-service-index > .wp-block-group::after { display: none; }
	.is-style-service-index > .wp-block-group > h3 { font-size: 1.625rem; }
	.is-style-service-index > .wp-block-group > h3 a { color: var(--wp--preset--color--base); }
	.is-style-service-index > .wp-block-group > .wp-block-image { display: block; grid-column: 3; grid-row: 1 / span 2; }
	.is-style-service-index > .wp-block-group > .wp-block-image img { width: 96px; height: 72px; object-fit: cover; }
}

/* ---------------- Before / after ---------------- */
.wp-block-group.is-style-before-after { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.wp-block-group.is-style-before-after > .wp-block-image { margin: 0; }
.wp-block-group.is-style-before-after.is-enhanced {
	--pos: 50%;
	position: relative;
	display: block;
	aspect-ratio: 3 / 2;
	background: var(--wp--preset--color--slab);
	user-select: none;
}
.is-style-before-after.is-enhanced > .wp-block-image { position: absolute; inset: 0; }
.is-style-before-after.is-enhanced > .wp-block-image img { width: 100%; height: 100%; object-fit: cover; }
.is-style-before-after.is-enhanced > .wp-block-image:first-of-type { z-index: 1; clip-path: inset(0 calc(100% - var(--pos)) 0 0); }
.is-style-before-after.is-enhanced > .wp-block-image:first-of-type img { filter: saturate(0.55) contrast(0.92); }
.is-style-before-after.is-enhanced figcaption {
	position: absolute;
	top: 16px;
	margin: 0;
	padding: 4px 10px;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.is-style-before-after.is-enhanced > .wp-block-image:first-of-type figcaption { left: 16px; }
.is-style-before-after.is-enhanced > .wp-block-image:last-of-type figcaption { right: 16px; }
.apx-ba-range { position: absolute; inset: 0; z-index: 4; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.apx-ba-handle { position: absolute; top: 0; bottom: 0; left: var(--pos); z-index: 3; width: 2px; margin-left: -1px; background: var(--wp--preset--color--primary); pointer-events: none; }
.apx-ba-handle span {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 48px;
	height: 48px;
	transform: translate(-50%, -50%);
	display: grid;
	place-items: center;
	background: var(--wp--preset--color--contrast);
	border: 2px solid var(--wp--preset--color--primary);
	border-radius: 2px;
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--mono);
	white-space: pre;
}
.apx-ba-range:focus-visible + .apx-ba-handle span { outline: 2px solid var(--wp--preset--color--primary); outline-offset: 3px; }

/* ---------------- Process line ---------------- */
.wp-block-columns.is-style-process { position: relative; padding-top: 48px; }
.wp-block-columns.is-style-process::before,
.wp-block-columns.is-style-process::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	top: 8px;
	height: 2px;
	background: rgba(244, 242, 238, 0.12);
}
.wp-block-columns.is-style-process::after { background: var(--wp--preset--color--primary); transform-origin: left; transform: scaleX(var(--p, 1)); }
.is-style-process > .wp-block-column { position: relative; }
.is-style-process > .wp-block-column::before {
	content: "";
	position: absolute;
	top: -46px;
	left: 2px;
	width: 14px;
	height: 14px;
	transform: rotate(45deg);
	background: var(--wp--preset--color--primary);
	border: 2px solid var(--wp--preset--color--primary);
	transition: background-color 250ms var(--apx-ease-out), border-color 250ms var(--apx-ease-out);
}
.is-style-process.is-scrubbing > .wp-block-column:not(.is-on)::before { background: var(--wp--preset--color--contrast); border-color: var(--wp--preset--color--muted-on-dark); }
.is-style-process > .wp-block-column > p:first-child { font-family: var(--wp--preset--font-family--mono); font-size: 0.875rem; color: var(--wp--preset--color--muted-on-dark); margin: 0; }
.is-style-process > .wp-block-column > h3 { margin-top: 6px; font-size: clamp(1.75rem, 1.3rem + 1.2vw, 2.5rem); font-weight: 700; }
.is-style-process > .wp-block-column > p:last-child { color: var(--wp--preset--color--muted-on-dark); font-size: var(--wp--preset--font-size--small); }
@media (max-width: 781px) {
	.wp-block-columns.is-style-process { padding-top: 0; padding-left: 44px; }
	.wp-block-columns.is-style-process::before, .wp-block-columns.is-style-process::after { left: 8px; right: auto; top: 0; bottom: 0; width: 2px; height: auto; }
	.wp-block-columns.is-style-process::after { transform-origin: top; transform: scaleY(var(--p, 1)); }
	.is-style-process > .wp-block-column::before { top: 6px; left: -42px; }
}

/* ---------------- Linked panels (service cards) ---------------- */
.is-style-spec-panel > .wp-block-image:first-child { margin: 0; }
.is-style-spec-panel > .wp-block-image:first-child img { display: block; width: 100%; }
.wp-block-group.is-style-spec-panel:has(h3 a) { transition: border-color 250ms var(--apx-ease-out); }
.wp-block-group.is-style-spec-panel:has(h3 a):hover { border-color: var(--apx-accent); }
.is-style-spec-panel h3 a { text-decoration: none; }
.is-style-spec-panel h3 a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.is-style-spec-panel:has(h3 a):hover h3 a { color: var(--apx-accent); }

/* ---------------- Flatness gauge ---------------- */
.wp-block-group.is-style-flatness-gauge {
	padding: clamp(20px, 3vw, 32px);
	background: var(--apx-raised);
	border: 1px solid var(--apx-line);
}
.is-style-flatness-gauge p:not(.apx-gauge-value) {
	margin: 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.is-style-flatness-gauge .wp-block-table { margin-top: 24px; }
.wp-block-group.is-style-flatness-gauge.is-enhanced {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: 24px;
	align-items: center;
}
.apx-gauge-readout { grid-column: 1 / span 4; }
.apx-gauge-plot { grid-column: 5 / span 8; margin: 0; }
.apx-gauge-value {
	margin: 8px 0 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(3rem, 1.8rem + 3vw, 5.25rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.04em;
	font-variant-numeric: tabular-nums;
}
.apx-gauge-value small { font-size: 0.4em; letter-spacing: 0; color: var(--apx-muted); }
.is-style-flatness-gauge.is-enhanced tbody td:last-child::after {
	content: "—";
	float: right;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	color: var(--apx-muted);
}
.is-style-flatness-gauge.is-enhanced tbody tr.is-met td:first-child { color: var(--apx-accent); }
.is-style-flatness-gauge.is-enhanced tbody tr.is-met td:last-child::after { content: "PASS"; font-weight: 500; color: var(--apx-accent); }
.apx-gauge-plot svg { display: block; width: 100%; height: auto; overflow: hidden; }
.apx-g-grid line { stroke: var(--apx-line); stroke-width: 1; }
.apx-g-hatch { stroke: color-mix(in srgb, var(--apx-text) 22%, transparent); stroke-width: 1.5; }
.apx-g-surface { fill: none; stroke: var(--apx-text); stroke-width: 3; stroke-linejoin: round; }
.apx-g-ghost { fill: none; stroke: color-mix(in srgb, var(--apx-text) 30%, transparent); stroke-width: 1.5; stroke-dasharray: 6 6; }
.apx-g-edge { fill: var(--apx-text); }
.apx-g-edge-label, .apx-g-gap-label { font-family: var(--wp--preset--font-family--mono); font-size: 14px; letter-spacing: 0.08em; }
.apx-g-edge-label { fill: var(--apx-muted); }
.apx-g-gap, .apx-g-tick { stroke: var(--apx-accent); stroke-width: 2; }
.apx-g-gap-label {
	fill: var(--apx-accent);
	font-size: 16px;
	font-weight: 500;
	paint-order: stroke;
	stroke: var(--apx-raised);
	stroke-width: 6px;
	stroke-linejoin: round;
}
.apx-gauge-legend {
	display: flex;
	flex-wrap: wrap;
	gap: 8px 28px;
	margin: 8px 0 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.apx-gauge-legend span { display: inline-flex; align-items: center; gap: 10px; }
.apx-gauge-legend span::before { content: ""; width: 28px; border-top: 2px solid var(--apx-text); }
.apx-gauge-legend .is-before::before { border-top: 1.5px dashed color-mix(in srgb, var(--apx-text) 45%, transparent); }
@media (max-width: 1023px) {
	.apx-gauge-readout, .apx-gauge-plot { grid-column: 1 / -1; }
}
/* Phones zoom the plot (narrower viewBox); scale its labels and lines back up to stay legible */
@media (max-width: 767px) {
	.apx-g-gap-label { font-size: 30px; stroke-width: 10px; }
	.apx-g-edge-label { font-size: 22px; }
	.apx-g-surface { stroke-width: 5; }
	.apx-g-gap, .apx-g-tick { stroke-width: 4; }
}

/* ---------------- Surface profile (CSP) explorer ---------------- */
.wp-block-group.is-style-csp-explorer.is-enhanced {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: 24px;
	align-items: start;
}
.is-style-csp-explorer.is-enhanced > .wp-block-table { display: none; }
.apx-csp-tile { grid-column: 1 / span 7; position: relative; margin: 0; aspect-ratio: 4 / 3; background: var(--wp--preset--color--slab); }
.apx-csp-tile svg { display: block; width: 100%; height: 100%; }
.apx-csp-tile::before, .apx-csp-tile::after {
	content: "";
	position: absolute;
	z-index: 2;
	width: 14px;
	height: 14px;
	border: 0 solid var(--apx-accent);
}
.apx-csp-tile::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; }
.apx-csp-tile::after { right: -1px; bottom: -1px; border-right-width: 2px; border-bottom-width: 2px; }
.apx-csp-tile figcaption {
	position: absolute;
	left: 12px;
	bottom: 12px;
	padding: 4px 8px;
	background: rgba(11, 12, 13, 0.88);
	color: var(--wp--preset--color--muted-on-dark);
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.6875rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
}
.apx-csp-data { grid-column: 9 / span 4; }
.apx-csp-picker {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	border-top: 1px solid var(--apx-control-line);
	border-left: 1px solid var(--apx-control-line);
}
.apx-csp-picker button {
	min-height: 52px;
	border: 0;
	border-right: 1px solid var(--apx-control-line);
	border-bottom: 1px solid var(--apx-control-line);
	background: transparent;
	color: inherit;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 1rem;
	font-weight: 500;
	cursor: pointer;
	transition: background-color 150ms var(--apx-ease-out), color 150ms var(--apx-ease-out);
}
.apx-csp-picker button:hover { background: var(--wp--preset--color--slab-raised); }
.apx-csp-picker button[aria-checked="true"] { background: var(--apx-accent); color: var(--apx-on-accent); }
.apx-csp-picker button:focus-visible { outline: 2px solid currentColor; outline-offset: -6px; }
.apx-csp-big {
	margin: 32px 0 0;
	font-family: var(--wp--preset--font-family--mono);
	font-size: clamp(3.5rem, 2rem + 4vw, 6rem);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -0.04em;
}
.apx-csp-big span:first-child { font-size: 0.4em; letter-spacing: 0.04em; color: var(--apx-muted); }
.apx-csp-rows { margin: 24px 0 0; border-top: 1px solid var(--apx-line); }
.apx-csp-rows > div { display: grid; grid-template-columns: 7rem minmax(0, 1fr); gap: 16px; padding: 13px 0; border-bottom: 1px solid var(--apx-line); }
.apx-csp-rows dt {
	padding-top: 3px;
	font-family: var(--wp--preset--font-family--mono);
	font-size: 0.75rem;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--apx-muted);
}
.apx-csp-rows dd { margin: 0; }
@media (max-width: 1023px) {
	.apx-csp-tile, .apx-csp-data { grid-column: 1 / -1; }
}

/* ---------------- Project index filter ---------------- */
.apx-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 var(--wp--preset--spacing--70); }
.apx-filter button {
	min-height: 44px;
	padding: 0 16px;
	border: 1px solid var(--apx-control-line);
	border-radius: 2px;
	background: transparent;
	color: inherit;
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.9375rem;
	font-weight: 500;
	cursor: pointer;
	transition: background-color 150ms var(--apx-ease-out), border-color 150ms var(--apx-ease-out);
}
.apx-filter button:hover { border-color: var(--apx-accent); }
.apx-filter button[aria-pressed="true"] { background: var(--apx-accent); border-color: var(--apx-accent); color: var(--apx-on-accent); }
.is-style-project-index [hidden] { display: none !important; }
.is-style-project-index.is-filtered > .wp-block-group { margin-top: 0 !important; }

/* ---------------- Quote form (WPZOOM Forms, form 51 on the live site) ----------------
   Styles the plugin's own markup to the design system and stands on its own, whether or
   not the plugin's stylesheet loads: hidden honeypot, stacked full-width fields, visible
   3:1 control borders, 48 px targets, 16 px text (no iOS zoom), accent focus ring and the
   primary button. `body` keeps these rules ahead of the plugin's equal-specificity ones. */
body .wp-site-blocks .wpzf-form {
	--wpzf-accent: var(--apx-accent);
	--wpzf-text: currentColor;
	--wpzf-muted: var(--apx-muted);
	--wpzf-border: var(--apx-control-line);
	--wpzf-bg: var(--wp--preset--color--white);
	--wpzf-radius: 2px;
	max-width: 100%;
	margin-top: var(--wp--preset--spacing--50);
}
body .wp-site-blocks .wpzf-form *, body .wp-site-blocks .wpzf-form *::before, body .wp-site-blocks .wpzf-form *::after { box-sizing: border-box; }
body .wp-site-blocks .wpzf-honeypot {
	position: absolute !important;
	top: -9999px !important;
	left: -9999px !important;
	width: 1px !important;
	height: 1px !important;
	overflow: hidden !important;
}
body .wp-site-blocks .wpzf-form .wpzf-fields { display: flex; flex-wrap: wrap; gap: 20px; }
body .wp-site-blocks .wpzf-form .wpzf-field { flex: 0 0 100%; min-width: 0; margin: 0; }
body .wp-site-blocks .wpzf-form .wpzf-label { display: block; margin: 0 0 6px; font-size: 0.9375rem; font-weight: 600; line-height: 1.4; }
body .wp-site-blocks .wpzf-form .wpzf-required { color: var(--apx-accent); }
body .wp-site-blocks .wpzf-form .wpzf-input {
	display: block;
	width: 100%;
	min-height: 48px;
	margin: 0;
	padding: 12px 14px;
	border: 1px solid var(--wpzf-border);
	border-radius: 2px;
	background: var(--wpzf-bg);
	color: var(--wp--preset--color--contrast);
	font: inherit;
	font-size: 1rem;
	line-height: 1.4;
}
body .wp-site-blocks .wpzf-form .wpzf-input--textarea { min-height: 150px; resize: vertical; }
body .wp-site-blocks .wpzf-form .wpzf-input:focus {
	border-color: var(--apx-accent);
	box-shadow: none;
	outline: 2px solid var(--apx-accent);
	outline-offset: 2px;
}
body .wp-site-blocks .wpzf-form .wpzf-help,
body .wp-site-blocks .wpzf-form .wpzf-paragraph { margin-top: 6px; font-size: 0.875rem; line-height: 1.5; color: var(--apx-muted); }
body .wp-site-blocks .wpzf-form .wpzf-paragraph strong { color: var(--apx-accent); }
body .wp-site-blocks .wpzf-form .wpzf-field-error { display: block; margin-top: 6px; font-size: 0.875rem; color: #B42318; }
body .wp-site-blocks .wpzf-form .wpzf-field--has-error .wpzf-input { border-color: #B42318; }
body .wp-site-blocks .wpzf-form .wpzf-notice { margin: 0 0 1em; padding: 12px 16px; border: 1px solid; border-radius: 2px; font-size: 0.9375rem; }
body .wp-site-blocks .wpzf-form .wpzf-notice[data-status="success"] { background: #ECFDF3; border-color: #3FA34D; color: #054F31; }
body .wp-site-blocks .wpzf-form .wpzf-notice[data-status="error"] { background: #FEF3F2; border-color: #D92D20; color: #7A271A; }
body .wp-site-blocks .wpzf-form .wpzf-submit { margin-top: 24px; }
body .wp-site-blocks .wpzf-form .wpzf-submit__btn {
	min-height: 48px;
	padding: 14px 24px;
	border: 1px solid var(--apx-accent);
	border-radius: 2px;
	background: var(--apx-accent);
	color: var(--apx-on-accent);
	font-family: var(--wp--preset--font-family--body);
	font-size: 1rem;
	font-weight: 600;
	letter-spacing: 0.01em;
	line-height: 1;
	text-transform: none;
	cursor: pointer;
	transition: background-color 150ms var(--apx-ease-out), border-color 150ms var(--apx-ease-out);
}
body .wp-site-blocks .wpzf-form .wpzf-submit__btn:hover { background: var(--apx-accent-hover); border-color: var(--apx-accent-hover); }
body .wp-site-blocks .wpzf-form .wpzf-submit__btn:active { transform: scale(0.98); }
body .wp-site-blocks .wpzf-form .wpzf-submit__btn:focus-visible { outline: 2px solid var(--apx-accent); outline-offset: 2px; }

/* ---------------- Mobile action bar ---------------- */
.wp-block-group.is-style-action-bar { display: none; }
@media (max-width: 767px) {
	.wp-block-group.is-style-action-bar {
		position: fixed;
		inset: auto 0 0 0;
		z-index: 40;
		display: grid;
		grid-template-columns: 1fr 1.4fr;
		gap: 8px;
		margin: 0 !important;
		padding: 8px 12px calc(8px + env(safe-area-inset-bottom)) !important;
		background: rgba(11, 12, 13, 0.94);
		border-top: 1px solid rgba(244, 242, 238, 0.12);
		transform: translateY(110%);
		visibility: hidden;
		transition: transform 250ms var(--apx-ease-out), visibility 0s linear 250ms;
	}
	.wp-block-group.is-style-action-bar.is-visible { transform: none; visibility: visible; transition-delay: 0s; }
	.wp-block-group.is-style-action-bar .wp-block-button,
	.wp-block-group.is-style-action-bar .wp-block-button__link { width: 100%; }
	.wp-block-group.is-style-action-bar .wp-block-buttons { display: contents; }
	body { padding-bottom: 72px; }
}

/* ---------------- Reduced motion ---------------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
}
