/**
 * Block styles shared by the front end and the block editor.
 *
 * 1. Tokens and service accents
 * 2. Typography
 * 3. Sections and bands
 * 4. Home hero
 * 5. Intro collage and figures
 * 6. Service tiles
 * 7. Points, steps, rows
 * 8. Gallery and images
 * 9. Vision and mission
 * 10. FAQ
 * 11. Buttons and calls to action
 * 12. Contact
 * 13. Testimonials
 * 14. Services list and service rows
 */

/* 1. Tokens and service accents
--------------------------------------------- */
:root {
	--navy-950: #071224;
	--navy-900: #0b1a30;
	--navy-800: #11253f;
	--navy-700: #1a3354;
	--navy-500: #3a5578;
	--navy-300: #9fb0c7;
	--navy-100: #e3e8ef;
	--ivory: #f6f3ee;
	--sand: #ebe4d8;
	--brass: #b08d57;
	--brass-light: #cfae7a;
	--brass-dark: #85663a;
	--ink: #1d2533;
	--muted: #5d6676;
	--line: #e2ddd4;
	--line-dark: rgba(255, 255, 255, 0.14);
	--radius: 2px;
	--shadow: 0 30px 60px -30px rgba(7, 18, 36, 0.35);
	--gutter: clamp(20px, 4vw, 48px);
	--container: 1240px;
	--font-display: "Cormorant Garamond", Georgia, serif;
	--font-body: Jost, "Segoe UI", sans-serif;
	--ease: cubic-bezier(0.22, 0.61, 0.36, 1);

	/* Default accent; service pages and tiles override it. */
	--accent: var(--brass-dark);
	--accent-tint: var(--ivory);
}

.has-accent-architecture {
	--accent: #24578f;
	--accent-tint: #e9eff6;
}

.has-accent-interiors {
	--accent: #9a4f33;
	--accent-tint: #f6ece6;
}

.has-accent-construction-engineering {
	--accent: #8a6420;
	--accent-tint: #f6efe1;
}

.has-accent-real-estate {
	--accent: #2c6650;
	--accent-tint: #e7f0eb;
}

/* 2. Typography
--------------------------------------------- */
h1.wp-block-heading {
	font-size: clamp(2.9rem, 6.4vw, 5.75rem);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -0.015em;
}

h2.wp-block-heading {
	font-size: clamp(2.2rem, 4.2vw, 3.5rem);
	font-weight: 600;
	line-height: 1.08;
	letter-spacing: -0.01em;
}

h3.wp-block-heading {
	font-family: var(--font-body);
	font-size: 1.15rem;
	font-weight: 500;
	line-height: 1.35;
	letter-spacing: 0;
}

.is-style-eyebrow {
	display: flex;
	align-items: center;
	gap: 0.9rem;
	font-family: var(--font-body);
	font-size: 0.76rem;
	font-weight: 500;
	letter-spacing: 0.24em;
	text-transform: uppercase;
	color: var(--accent);
}

.is-style-eyebrow::before {
	content: "";
	flex-shrink: 0;
	width: 40px;
	height: 1px;
	background: currentColor;
}

.is-style-eyebrow.has-text-align-center {
	justify-content: center;
}

.is-style-eyebrow + .wp-block-heading {
	margin-top: 1rem !important;
}

.is-style-lead {
	font-size: clamp(1.08rem, 1.4vw, 1.22rem);
	line-height: 1.7;
	color: var(--muted);
}

.is-style-statement {
	font-family: var(--font-display);
	font-size: clamp(1.55rem, 2.6vw, 2.15rem);
	font-style: italic;
	font-weight: 500;
	line-height: 1.35;
}

/* 3. Sections and bands
--------------------------------------------- */
.ms-section {
	padding: clamp(80px, 10vw, 140px) var(--gutter);
}

.ms-section--slim {
	padding-block: 0 !important;
}

.is-style-tinted-band {
	background: var(--ivory);
}

.is-style-navy-band {
	color: rgba(255, 255, 255, 0.78);
	background: var(--navy-900);
}

.is-style-navy-band :is(h1, h2, h3) {
	color: #fff;
}

.is-style-navy-band .is-style-eyebrow {
	color: var(--brass-light);
}

/* Section header: label and heading left, intro text right. */
.ms-head {
	gap: clamp(24px, 5vw, 96px);
	margin-bottom: clamp(48px, 6vw, 80px) !important;
}

.ms-head__text {
	max-width: 460px;
	margin-left: auto;
	color: var(--muted);
}

.ms-split {
	gap: clamp(40px, 7vw, 120px);
}

/* 4. Home hero
--------------------------------------------- */
.ms-hero {
	/* Fill the first screen below the top bar and header (132px), and no more. */
	--masthead: 132px;
	min-height: calc(100vh - var(--masthead)) !important;
	min-height: calc(100svh - var(--masthead)) !important;
	padding: clamp(28px, 7vh, 120px) var(--gutter) clamp(20px, 3vh, 40px);
	background-color: var(--navy-950);
	background-image: radial-gradient(ellipse at 85% 20%, rgba(176, 141, 87, 0.22), transparent 55%), linear-gradient(160deg, var(--navy-800) 0%, var(--navy-950) 70%);
}

.ms-hero .wp-block-cover__inner-container {
	max-width: var(--container);
	margin-inline: auto;
	color: #fff;
}

.ms-hero .wp-block-cover__inner-container > * {
	max-width: 760px;
	margin-left: 0 !important;
}

/* Display line: .ms-hero__title, or the h1 in page content saved before 2.3. */
.ms-hero h1:not(.ms-hero__kicker),
.ms-hero .ms-hero__title {
	max-width: 12ch;
	font-size: clamp(2.3rem, min(6.4vw, 9vh), 5.75rem);
	font-weight: 600;
	line-height: 1.02;
	letter-spacing: -0.015em;
	color: #fff;
}

/* The keyword H1 sits in the eyebrow position, styled as an eyebrow. */
.ms-hero h1.ms-hero__kicker {
	max-width: none;
	margin: 0;
	font-family: var(--font-body);
	font-size: 0.76rem;
	font-weight: 500;
	line-height: 1.5;
	letter-spacing: 0.24em;
	color: var(--brass-light);
}

.ms-hero .ms-hero__kicker + .ms-hero__title {
	margin-top: 1rem !important;
}

.ms-hero .is-style-eyebrow {
	color: var(--brass-light);
}

.ms-hero .is-style-lead {
	max-width: 560px;
	margin-top: clamp(0.75rem, 2.5vh, 1.75rem) !important;
	color: rgba(255, 255, 255, 0.78);
}

.ms-hero .wp-block-buttons {
	margin-top: clamp(1rem, 4vh, 2.5rem) !important;
}

.ms-hero .wp-block-cover__inner-container > .ms-hero-index {
	max-width: none;
	gap: 0;
	margin-top: clamp(20px, 6vh, 120px) !important;
	border-top: 1px solid var(--line-dark);
}

.ms-hero-index__item {
	margin: 0;
}

.ms-hero-index__item a {
	position: relative;
	display: flex;
	align-items: baseline;
	gap: 0.85rem;
	padding: clamp(0.75rem, 2vh, 1.4rem) 1rem 0.4rem 0;
	font-size: 0.95rem;
	letter-spacing: 0.04em;
	color: #fff;
	text-decoration: none;
}

.ms-hero-index__item a::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 0;
	width: 0;
	height: 2px;
	background: var(--brass);
	transition: width 0.4s var(--ease);
}

.ms-hero-index__item a:hover::before {
	width: 100%;
}

.ms-hero-index__item span {
	white-space: nowrap;
	font-family: var(--font-display);
	font-size: 1.05rem;
	font-style: italic;
	color: var(--brass-light);
}

/* Phones: tighter spacing so the whole hero fits on the first screen. */
@media (max-width: 600px) {
	.ms-hero {
		padding-top: clamp(24px, 5vh, 48px);
	}

	.ms-hero .is-style-lead {
		font-size: 1rem;
		line-height: 1.6;
	}

	.ms-hero .wp-block-buttons {
		gap: 0.6rem;
	}

	.ms-hero .wp-block-button__link {
		padding-block: 0.85rem;
	}
}

/* The hero ends at the buttons; service links from older page content stay hidden. */
.ms-hero .wp-block-cover__inner-container > .ms-hero-index {
	display: none !important;
}

/* Service strip below the hero, revealed on scroll. */
.ms-service-strip {
	padding-block: 0 !important;
	background: var(--navy-950);
	border-top: 1px solid var(--line-dark);
}

.ms-service-strip .ms-hero-index {
	gap: 0;
	max-width: var(--container) !important;
	margin: 0 auto !important;
}

.ms-service-strip .ms-hero-index__item a {
	padding: 1.5rem 1rem 1.5rem 0;
}

.ms-js .ms-reveal > * {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
}

.ms-js .ms-reveal.is-visible > * {
	opacity: 1;
	transform: none;
}

.ms-js .ms-reveal.is-visible > :nth-child(2) {
	transition-delay: 0.1s;
}

.ms-js .ms-reveal.is-visible > :nth-child(3) {
	transition-delay: 0.2s;
}

.ms-js .ms-reveal.is-visible > :nth-child(4) {
	transition-delay: 0.3s;
}

@media (prefers-reduced-motion: reduce) {
	.ms-js .ms-reveal > * {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* With a photo, darken the text side so the headline stays readable. */
.ms-hero:has(.wp-block-cover__image-background) .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(7, 18, 36, 0.92) 0%, rgba(7, 18, 36, 0.62) 55%, rgba(7, 18, 36, 0.3) 100%) !important;
	opacity: 1 !important;
}

/* Hint shown on the hero until a background photo is added. */
.show-placeholders .ms-hero:not(:has(.wp-block-cover__image-background, .wp-block-cover__video-background))::after,
.show-placeholders .ms-cta:not(:has(.wp-block-cover__image-background))::after {
	content: "Add photo · select block → Add media";
	position: absolute;
	top: 18px;
	right: 18px;
	z-index: 2;
	padding: 4px 10px;
	font-size: 0.68rem;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.65);
	border: 1px dashed rgba(255, 255, 255, 0.35);
	pointer-events: none;
}

/* 5. Intro collage and figures
--------------------------------------------- */
.ms-collage {
	position: relative;
	padding: 0 18% 16% 0;
}

.ms-collage > * {
	margin: 0 !important;
}

.ms-collage__main img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

.ms-collage .ms-collage__inset {
	position: absolute;
	right: 0;
	bottom: 0;
	width: 48%;
}

.ms-collage__inset img {
	aspect-ratio: 1;
	object-fit: cover;
	box-shadow: 0 0 0 12px #fff, var(--shadow);
}

.is-style-tinted-band .ms-collage__inset img {
	box-shadow: 0 0 0 12px var(--ivory), var(--shadow);
}

.ms-collage__badge {
	position: absolute;
	top: 40px;
	left: 0;
	max-width: 190px;
	padding: 22px 26px;
	font-size: 0.78rem;
	letter-spacing: 0.12em;
	line-height: 1.5;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.8);
	background: var(--navy-900);
	transform: translateX(-24px);
}

.ms-collage__badge strong {
	display: block;
	margin-bottom: 6px;
	font-family: var(--font-display);
	font-size: 2.75rem;
	font-weight: 600;
	line-height: 1;
	letter-spacing: 0;
	text-transform: none;
	color: var(--brass-light);
}

.ms-list-2 {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(220px, 100%), 1fr));
	gap: 0.6rem 2rem;
}

.ms-stats {
	gap: 0;
}

.ms-stats > .wp-block-column {
	padding: 0.5rem 2rem;
	border-left: 1px solid var(--line-dark);
}

.ms-stats > .wp-block-column:first-child {
	padding-left: 0;
	border-left: 0;
}

.ms-stat__num {
	margin: 0;
	font-family: var(--font-display);
	font-size: clamp(3.2rem, 5.5vw, 4.75rem);
	font-weight: 600;
	line-height: 1;
	color: var(--brass-light);
}

.ms-stat__label {
	margin-top: 0.5rem !important;
	font-size: 0.78rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.7);
}

/* 6. Service tiles
--------------------------------------------- */
.ms-tiles {
	gap: 14px;
}

.ms-tile {
	padding: 32px 30px;
	overflow: hidden;
	background-color: var(--navy-900);
}

.ms-tile::before {
	content: "";
	position: absolute;
	left: 30px;
	bottom: 0;
	z-index: 2;
	width: 48px;
	height: 3px;
	background: var(--brass-light);
	transition: width 0.5s var(--ease);
}

.ms-tile:hover::before {
	width: calc(100% - 60px);
}

/* With a photo in place, soften the colour wash and darken the text area. */
.ms-tile:has(.wp-block-cover__image-background) .wp-block-cover__background {
	opacity: 0.45 !important;
}

.ms-tile:has(.wp-block-cover__image-background) .wp-block-cover__inner-container::before {
	content: "";
	position: absolute;
	inset: -100vh -100px;
	z-index: -1;
	background: rgba(7, 18, 36, 0.62);
}

.ms-tile .wp-block-cover__image-background {
	transition: transform 1.2s var(--ease);
}

.ms-tile:hover .wp-block-cover__image-background {
	transform: scale(1.05);
}

.ms-tile .wp-block-cover__inner-container {
	color: #fff;
}

.ms-tile__num {
	font-family: var(--font-display);
	font-size: 1.25rem;
	font-style: italic;
	color: var(--brass-light);
}

.ms-tile h3 {
	margin-top: 0.5rem !important;
	font-family: var(--font-display);
	font-size: clamp(1.7rem, 2.2vw, 2.1rem);
	font-weight: 600;
	line-height: 1.1;
}

.ms-tile h3 a {
	color: #fff;
	text-decoration: none;
}

.ms-tile h3 a::after {
	content: "";
	position: absolute;
	inset: -600px -40px -40px;
}

.ms-tile__text {
	font-size: 0.95rem;
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.8);
}

.ms-tile__list {
	margin-top: 1.25rem !important;
	padding: 1rem 0 0;
	font-size: 0.82rem;
	line-height: 1.5;
	list-style: none;
	border-top: 1px solid rgba(255, 255, 255, 0.2);
	color: rgba(255, 255, 255, 0.72);
}

.ms-tile__list li + li {
	margin-top: 0.3rem;
}

/* Start every tile's content on the same line, with titles and text in matching rows. */
.ms-tile.wp-block-cover {
	align-items: flex-start !important;
}

.ms-tile h3 {
	min-height: 2.2em;
}

.ms-tile__text {
	min-height: 6.4em;
}

/* 7. Points, steps, rows
--------------------------------------------- */
.ms-points {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 clamp(32px, 4vw, 64px);
	counter-reset: point;
}

.ms-points--4 {
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ms-points > * {
	margin: 0 !important;
}

.ms-point {
	padding: 28px 0 36px;
	border-top: 1px solid var(--line);
	counter-increment: point;
}

.ms-point::before {
	content: counter(point, decimal-leading-zero);
	display: block;
	margin-bottom: 1rem;
	font-family: var(--font-display);
	font-size: 1.15rem;
	font-style: italic;
	color: var(--accent);
}

.ms-point h3 {
	margin: 0;
}

/* Points with a photo: picture card, number under the photo. */
.ms-point:has(> .ms-point__photo) {
	display: flex;
	flex-direction: column;
	padding-top: 0;
	border-top: 0;
}

.ms-point .ms-point__photo {
	order: -1;
	margin: 0 0 1.5rem !important;
	overflow: hidden;
}

.ms-point__photo img {
	aspect-ratio: 4 / 3;
	object-fit: cover;
	transition: transform 1.2s var(--ease);
}

.ms-point:hover .ms-point__photo img {
	transform: scale(1.04);
}

.ms-point p {
	margin-top: 0.6rem !important;
	font-size: 0.97rem;
	color: var(--muted);
}

.is-style-steps {
	gap: clamp(24px, 3vw, 40px);
	counter-reset: step;
}

.is-style-steps > .wp-block-column {
	position: relative;
	padding-top: 2rem;
	border-top: 1px solid var(--line);
	counter-increment: step;
}

.is-style-steps > .wp-block-column::before {
	content: counter(step, decimal-leading-zero);
	display: block;
	margin-bottom: 1.5rem;
	font-family: var(--font-display);
	font-size: clamp(3.25rem, 5vw, 4.5rem);
	font-weight: 600;
	line-height: 1;
	color: transparent;
	-webkit-text-stroke: 1px var(--brass);
}

.is-style-steps > .wp-block-column::after {
	content: "";
	position: absolute;
	top: -1px;
	left: 0;
	width: 40px;
	height: 2px;
	background: var(--accent);
}

/* Steps with a photo: photo on top, outlined number below it. */
.is-style-steps > .wp-block-column:has(> .ms-step__photo) {
	display: flex;
	flex-direction: column;
	padding-top: 0;
	border-top: 0;
}

.is-style-steps > .wp-block-column:has(> .ms-step__photo)::after {
	display: none;
}

.is-style-steps .ms-step__photo {
	order: -1;
	margin: 0 0 1.5rem !important;
	overflow: hidden;
	border-bottom: 2px solid var(--accent);
}

.ms-step__photo img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
	border-radius: 0;
	transition: transform 1.2s var(--ease);
}

.is-style-steps > .wp-block-column:hover .ms-step__photo img {
	transform: scale(1.04);
}

.is-style-steps h3 {
	margin: 0;
}

.is-style-steps p {
	margin-top: 0.6rem !important;
	font-size: 0.95rem;
	color: var(--muted);
}

.ms-steps--compact > .wp-block-column::before {
	margin-bottom: 1rem;
	font-size: 2.5rem;
}

.ms-rows {
	counter-reset: row;
	border-bottom: 1px solid var(--line);
}

.ms-rows > * {
	margin: 0 !important;
}

.ms-row {
	display: grid;
	grid-template-columns: 64px minmax(0, 1fr);
	column-gap: 1.5rem;
	padding: 1.75rem 0;
	border-top: 1px solid var(--line);
	counter-increment: row;
}

.ms-row::before {
	content: counter(row, decimal-leading-zero);
	grid-row: span 2;
	font-family: var(--font-display);
	font-size: 1.6rem;
	font-style: italic;
	line-height: 1.1;
	color: var(--accent);
}

.ms-row > * {
	grid-column: 2;
	margin: 0 !important;
}

.ms-row h3 {
	font-size: 1.15rem;
}

.ms-row p {
	margin-top: 0.4rem !important;
	color: var(--muted);
}

.is-style-checks {
	padding: 0;
	list-style: none;
}

.is-style-checks li {
	position: relative;
	padding-left: 1.75rem;
}

.is-style-checks li + li {
	margin-top: 0.45rem;
}

.ms-list-2 li + li {
	margin-top: 0;
}

.is-style-checks li::before {
	content: "";
	position: absolute;
	top: 0.85em;
	left: 0;
	width: 14px;
	height: 1px;
	background: var(--brass);
}

/* 8. Gallery and images
--------------------------------------------- */
.wp-block-image img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: var(--radius);
}

.wp-block-image figcaption {
	margin-top: 0.75rem;
	font-size: 0.88rem;
	color: var(--muted);
	text-align: left;
}

.ms-gallery {
	gap: 20px;
}

.ms-gallery > .wp-block-column {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.ms-gallery > .wp-block-column > * {
	margin: 0 !important;
}

.ms-shot {
	position: relative;
	flex: 1;
	overflow: hidden;
}

.ms-shot img {
	height: 100%;
	min-height: 260px;
	object-fit: cover;
	transition: transform 1.2s var(--ease);
}

.ms-shot:hover img {
	transform: scale(1.04);
}

.ms-gallery .ms-shot figcaption {
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	display: flex;
	flex-direction: column;
	gap: 2px;
	margin: 0;
	padding: 48px 28px 24px;
	font-size: 0.78rem;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.75);
	background: linear-gradient(transparent, rgba(7, 18, 36, 0.85));
}

.ms-gallery .ms-shot figcaption strong {
	font-family: var(--font-display);
	font-size: 1.6rem;
	font-weight: 600;
	letter-spacing: 0;
	text-transform: none;
	color: #fff;
}

.ms-pair {
	gap: 20px;
}

/* 9. Vision and mission
--------------------------------------------- */
.ms-vm__cols {
	gap: 0 !important;
}

.ms-vm__cols > .wp-block-column {
	display: flex;
}

.ms-vm__panel {
	position: relative;
	flex: 1;
	padding: clamp(64px, 8vw, 120px) clamp(24px, 7vw, 110px);
}

.ms-vm__panel::before {
	content: "\201C";
	position: absolute;
	top: clamp(24px, 4vw, 48px);
	right: clamp(24px, 5vw, 72px);
	font-family: var(--font-display);
	font-size: 9rem;
	line-height: 1;
	opacity: 0.18;
}

.ms-vm__panel--vision {
	color: #fff;
	background: var(--navy-900);
}

.ms-vm__panel--vision .is-style-eyebrow,
.ms-vm__panel--vision::before {
	color: var(--brass-light);
}

.ms-vm__panel--mission {
	color: var(--navy-900);
	background: var(--sand);
}

.ms-vm__panel--mission::before {
	color: var(--brass-dark);
}

.ms-vm__panel .is-style-statement {
	max-width: 520px;
	margin-top: 1.75rem !important;
}

/* 10. FAQ
--------------------------------------------- */
.ms-faq {
	border-bottom: 1px solid var(--line);
}

.ms-faq > * {
	margin: 0 !important;
}

.wp-block-details {
	border-top: 1px solid var(--line);
}

.wp-block-details summary {
	position: relative;
	padding: 1.5rem 3rem 1.5rem 0;
	font-size: 1.1rem;
	font-weight: 500;
	color: var(--navy-900);
	list-style: none;
	cursor: pointer;
	transition: color 0.2s ease;
}

.wp-block-details summary:hover {
	color: var(--accent);
}

.wp-block-details summary::-webkit-details-marker {
	display: none;
}

.wp-block-details summary::before,
.wp-block-details summary::after {
	content: "";
	position: absolute;
	top: 50%;
	right: 6px;
	width: 16px;
	height: 1px;
	background: currentColor;
	transition: transform 0.3s var(--ease);
}

.wp-block-details summary::after {
	transform: rotate(90deg);
}

.wp-block-details[open] summary::after {
	transform: rotate(0);
}

.wp-block-details > p {
	max-width: 640px;
	margin: 0 0 1.5rem !important;
	color: var(--muted);
}

.ms-big-link {
	margin-top: 1.5rem !important;
}

.ms-big-link a {
	font-family: var(--font-display);
	font-size: clamp(1.8rem, 3vw, 2.4rem);
	font-weight: 600;
	color: var(--navy-900);
	text-decoration: none;
	border-bottom: 1px solid var(--brass);
}

/* 11. Buttons and calls to action
--------------------------------------------- */
.wp-element-button,
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 0.9rem;
	border: 1px solid transparent;
	text-decoration: none;
	transition: background-color 0.3s var(--ease), color 0.3s var(--ease), border-color 0.3s var(--ease);
}

.wp-block-button__link::after {
	content: "";
	width: 18px;
	height: 1px;
	background: currentColor;
	transition: width 0.3s var(--ease);
}

.wp-block-button__link:hover::after {
	width: 30px;
}

.wp-element-button:hover,
.wp-block-button__link:hover {
	color: var(--navy-950);
	background-color: var(--brass-light);
}

.is-style-outline > .wp-block-button__link {
	color: var(--navy-900);
	background: transparent;
	border-color: currentColor;
}

.is-style-outline > .wp-block-button__link:hover {
	color: #fff;
	background: var(--navy-900);
	border-color: var(--navy-900);
}

/* Buttons on dark backgrounds. */
:is(.is-style-navy-band, .ms-hero, .ms-cta, .is-style-cta-card, .ms-contact-panel) .wp-block-button:not(.is-style-outline) > .wp-block-button__link {
	color: var(--navy-950);
	background: var(--brass-light);
}

:is(.is-style-navy-band, .ms-hero, .ms-cta, .is-style-cta-card, .ms-contact-panel) .wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover {
	color: var(--navy-950);
	background: #fff;
}

:is(.is-style-navy-band, .ms-hero, .ms-cta, .ms-contact-panel) .is-style-outline > .wp-block-button__link {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.45);
}

:is(.is-style-navy-band, .ms-hero, .ms-cta, .ms-contact-panel) .is-style-outline > .wp-block-button__link:hover {
	color: var(--navy-950);
	background: #fff;
	border-color: #fff;
}

.ms-cta {
	padding: clamp(72px, 9vw, 120px) var(--gutter);
	background-color: var(--navy-900);
	background-image: radial-gradient(ellipse at 10% 100%, rgba(176, 141, 87, 0.25), transparent 60%);
}

/* With a photo, keep the headline side dark and let the image show on the right. */
.ms-cta:has(.wp-block-cover__image-background) .wp-block-cover__background {
	background: linear-gradient(90deg, rgba(7, 18, 36, 0.94) 0%, rgba(7, 18, 36, 0.78) 50%, rgba(7, 18, 36, 0.55) 100%) !important;
	opacity: 1 !important;
}

.ms-cta .wp-block-cover__inner-container {
	max-width: var(--container);
	margin-inline: auto;
	color: rgba(255, 255, 255, 0.78);
}

.ms-cta .wp-block-cover__inner-container > .wp-block-columns {
	max-width: none;
	gap: 40px;
}

.ms-cta h2 {
	color: #fff;
}

.ms-cta .is-style-eyebrow {
	color: var(--brass-light);
}

.ms-cta .wp-block-buttons {
	justify-content: flex-end;
}

.is-style-cta-card {
	padding: clamp(28px, 4vw, 44px);
	color: rgba(255, 255, 255, 0.78);
	background: var(--navy-900);
	border-left: 3px solid var(--accent);
}

.is-style-cta-card :is(h2, h3) {
	margin-top: 0;
	font-family: var(--font-display);
	font-size: 1.85rem;
	font-weight: 600;
	color: #fff;
}

/* 12. Contact
--------------------------------------------- */
.ms-contact-panel {
	height: 100%;
	padding: clamp(32px, 4vw, 56px);
	color: rgba(255, 255, 255, 0.72);
	background: var(--navy-900);
}

.ms-contact-panel .ms-contact-panel__photo {
	margin: calc(-1 * clamp(32px, 4vw, 56px)) calc(-1 * clamp(32px, 4vw, 56px)) 2rem !important;
}

.ms-contact-panel__photo img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: 0;
}

.ms-contact-panel :is(h2, h3) {
	margin: 0;
	font-family: var(--font-display);
	font-size: 2.1rem;
	font-weight: 600;
	color: #fff;
}

.ms-contact-item {
	margin-top: 0 !important;
	padding: 1.1rem 0;
	color: #fff;
	border-top: 1px solid var(--line-dark);
}

.ms-contact-item span {
	display: block;
	margin-bottom: 0.25rem;
	font-size: 0.72rem;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--brass-light);
}

.ms-contact-item a {
	color: #fff;
	text-decoration: none;
}

.ms-contact-item a:hover {
	color: var(--brass-light);
}

.ms-contact-panel .wp-block-buttons {
	margin-top: 1.75rem !important;
}

.ms-contact > .wp-block-column:first-child {
	display: flex;
}

.ms-map-band .ms-map iframe {
	display: block;
	width: 100%;
	height: clamp(320px, 40vw, 480px);
	border: 0;
	filter: grayscale(0.35);
}

.ms-form {
	display: grid;
	gap: 1.1rem;
	margin-top: 2rem;
}

.ms-form p {
	margin: 0;
}

.ms-form__row {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: 1.1rem;
}

.ms-form label {
	display: block;
	margin-bottom: 0.45rem;
	font-size: 0.74rem;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--navy-900);
}

.ms-form input,
.ms-form select,
.ms-form textarea {
	width: 100%;
	padding: 0.95rem 1.1rem;
	font: inherit;
	color: var(--ink);
	background: var(--ivory);
	border: 1px solid var(--line);
	border-radius: 0;
	transition: border-color 0.2s ease, background-color 0.2s ease;
}

.ms-form input:focus,
.ms-form select:focus,
.ms-form textarea:focus {
	background: #fff;
	border-color: var(--navy-700);
	outline: none;
}

.ms-form button {
	cursor: pointer;
}

.ms-form__hp {
	position: absolute;
	left: -9999px;
}

.ms-form__notice {
	padding: 1rem 1.2rem;
	border-left: 3px solid;
}

.ms-form__notice.is-success {
	color: #1e4d38;
	background: #e7f0eb;
}

.ms-form__notice.is-error {
	color: #7a2318;
	background: #f8e9e6;
}

/* 13. Testimonials
--------------------------------------------- */
.ms-testimonials {
	gap: 20px;
}

.ms-testimonials > .wp-block-column {
	display: flex;
	flex-direction: column;
	gap: 20px;
}

.ms-testimonials > .wp-block-column > * {
	margin: 0 !important;
}

.ms-quote {
	position: relative;
	display: flex;
	flex: 1;
	flex-direction: column;
	margin: 0;
	padding: clamp(32px, 4vw, 48px);
	background: var(--ivory);
	border: 0;
}

.ms-quote::before {
	content: "\201C";
	display: block;
	height: 0.55em;
	font-family: var(--font-display);
	font-size: 5rem;
	line-height: 1;
	color: var(--brass);
}

.ms-quote p {
	margin: 1rem 0 0;
	font-family: var(--font-display);
	font-size: 1.35rem;
	font-style: italic;
	font-weight: 500;
	line-height: 1.5;
	color: var(--navy-900);
}

.ms-quote cite {
	display: flex;
	flex-direction: column;
	gap: 0.3rem;
	margin-top: auto;
	padding-top: 1.75rem;
	font-style: normal;
}

.ms-quote cite::before {
	content: "";
	width: 40px;
	height: 1px;
	margin-bottom: 1rem;
	background: var(--brass);
}

.ms-quote cite strong {
	font-weight: 500;
	color: var(--navy-900);
}

.ms-quote cite span {
	font-size: 0.74rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--muted);
}

.ms-quote--featured {
	background: var(--navy-900);
}

.ms-quote--featured p {
	font-size: clamp(1.6rem, 2.6vw, 2.2rem);
	line-height: 1.35;
	color: #fff;
}

.ms-quote--featured cite strong {
	color: #fff;
}

.ms-quote--featured cite span {
	color: var(--brass-light);
}

/* 14. Services list and service rows
--------------------------------------------- */
.ms-catalog {
	gap: clamp(20px, 3vw, 40px);
}

.ms-catalog__col {
	height: 100%;
	padding-top: 1.5rem;
	border-top: 3px solid var(--accent);
}

.ms-catalog__col > * {
	margin: 0 !important;
}

.ms-catalog__num {
	font-family: var(--font-display);
	font-size: 1.1rem;
	font-style: italic;
	color: var(--accent);
}

.ms-catalog__col h3 {
	margin: 0.35rem 0 1rem !important;
	font-family: var(--font-display);
	font-size: 1.65rem;
	font-weight: 600;
	line-height: 1.15;
}

.ms-catalog__col h3 a {
	color: var(--navy-900);
	text-decoration: none;
}

.ms-catalog__col h3 a:hover {
	color: var(--accent);
}

.ms-catalog__list {
	padding: 0;
	list-style: none;
}

.ms-catalog__list li {
	border-top: 1px solid var(--line);
}

.ms-catalog__list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 0.7rem 0;
	font-size: 0.95rem;
	color: var(--ink);
	text-decoration: none;
	transition: color 0.2s ease, padding 0.3s var(--ease);
}

.ms-catalog__list a::after {
	content: "";
	flex-shrink: 0;
	width: 12px;
	height: 1px;
	background: currentColor;
	opacity: 0;
	transition: opacity 0.2s ease, width 0.3s var(--ease);
}

.ms-catalog__list a:hover {
	padding-left: 0.4rem;
	color: var(--accent);
}

.ms-catalog__list a:hover::after {
	width: 20px;
	opacity: 1;
}

.ms-catalog__col.is-current {
	padding: 1.5rem 1.25rem 1rem;
	background: var(--accent-tint);
}

/* Inside a service page column: two by two. */
.ms-service-body .ms-catalog {
	flex-wrap: wrap !important;
}

.ms-service-body .ms-catalog > .wp-block-column {
	flex-basis: calc(50% - 20px) !important;
}

.ms-row {
	scroll-margin-top: 140px;
}

.ms-row:target h3 {
	color: var(--accent);
}

.ms-row .ms-row__list {
	display: flex;
	flex-wrap: wrap;
	gap: 0.45rem;
	margin-top: 1rem !important;
	padding: 0;
	list-style: none;
}

.ms-row__list li {
	padding: 0.3rem 0.75rem;
	font-size: 0.8rem;
	color: var(--navy-900);
	background: var(--accent-tint);
}

/* Testimonials with a project photo. */
.ms-testimonials__photo {
	flex: 1;
}

.ms-testimonials__photo img {
	height: 100%;
	min-height: 420px;
	object-fit: cover;
}

.ms-testimonials__pair {
	gap: 20px;
	margin: 0 !important;
}

.ms-testimonials__pair > .wp-block-column {
	display: flex;
}

/* Responsive
--------------------------------------------- */
@media (max-width: 1100px) {
	.ms-tiles {
		flex-wrap: wrap !important;
	}

	.ms-tiles > .wp-block-column {
		flex-basis: calc(50% - 7px) !important;
	}

	.ms-points--4 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 781px) {
	.ms-service-body .ms-catalog > .wp-block-column {
		flex-basis: 100% !important;
	}

	.ms-testimonials__photo img {
		min-height: 280px;
	}

	.ms-tiles > .wp-block-column {
		flex-basis: 100% !important;
	}

	.ms-points {
		grid-template-columns: 1fr;
	}

	.ms-head__text {
		margin-left: 0;
	}

	.ms-stats {
		display: grid !important;
		grid-template-columns: 1fr 1fr;
		gap: 32px 0 !important;
	}

	.ms-stats > .wp-block-column:nth-child(odd) {
		padding-left: 0;
		border-left: 0;
	}

	.ms-cta .wp-block-buttons {
		justify-content: flex-start;
	}

	.ms-collage__badge {
		transform: none;
	}

	.ms-hero-index {
		display: grid !important;
		grid-template-columns: 1fr 1fr;
	}
}

/* Tablets: wide layouts wrap instead of squeezing. */
@media (min-width: 782px) and (max-width: 1100px) {
	.is-style-steps,
	.ms-catalog {
		flex-wrap: wrap !important;
	}

	.is-style-steps > .wp-block-column {
		flex-grow: 1 !important;
		flex-basis: calc(33.333% - 2rem) !important;
	}

	.ms-catalog > .wp-block-column {
		flex-basis: calc(50% - 20px) !important;
	}

	.ms-stats > .wp-block-column {
		padding-inline: 1rem;
	}

	.ms-tile h3 {
		font-size: 1.6rem;
	}
}

/* Phones: stacked blocks drop their desktop heights. */
@media (max-width: 781px) {
	.ms-stat__num {
		font-size: clamp(2.2rem, 9vw, 3rem);
		overflow-wrap: normal;
	}

	.ms-tile.wp-block-cover {
		min-height: 400px !important;
	}

	.ms-tile h3,
	.ms-tile__text {
		min-height: 0;
	}

	.ms-form__row {
		grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
	}

	.ms-big-link a,
	.ms-contact-item a {
		overflow-wrap: anywhere;
	}
}

@media (max-width: 480px) {
	h1.wp-block-heading {
		font-size: clamp(2.1rem, 10vw, 2.6rem);
	}

	h2.wp-block-heading {
		font-size: clamp(1.8rem, 8vw, 2.2rem);
	}

	.is-style-eyebrow {
		gap: 0.6rem;
		letter-spacing: 0.16em;
	}

	.is-style-eyebrow::before {
		width: 28px;
	}

	.ms-row {
		grid-template-columns: 44px minmax(0, 1fr);
		column-gap: 1rem;
	}

	.ms-collage {
		padding: 0 14% 14% 0;
	}

	.ms-collage__inset img,
	.is-style-tinted-band .ms-collage__inset img {
		box-shadow: 0 0 0 6px #fff, var(--shadow);
	}

	.ms-collage__badge {
		max-width: 150px;
		padding: 14px 16px;
		font-size: 0.68rem;
	}

	.ms-collage__badge strong {
		font-size: 2.1rem;
	}

	.ms-stats > .wp-block-column {
		padding-inline: 1rem;
	}

	.ms-vm__panel::before {
		font-size: 6rem;
	}

	.ms-testimonials__photo img {
		min-height: 220px;
	}

	.ms-gallery .ms-shot figcaption {
		padding: 36px 18px 16px;
	}

	.wp-block-buttons {
		gap: 0.6rem;
	}
}
