
/* Paint Philly town template (local preview). Scoped under .ppt.
   Tokens match the redesigned service pages (interior/exterior painting): navy hero card with gold
   kicker, centered Georgia section headings with a 68px gold rule, #455366 body copy, 2px buttons,
   shared .pp-faq-section FAQ, and the navy closing call-to-action band. */
.pp-town-template {
	overflow-x: clip;
}

.pp-town-template .entry-header, .pp-town-template .ast-breadcrumbs-wrapper, .pp-town-template .ast-inside-advanced-header-content, .pp-town-template #comments, .pp-town-template .ast-title-bar-wrap:not(.ast-merged-advanced-header) {
	display: none !important;
}

/* On pages whose menu is merged into Astra's page-title banner, keep the header and drop only the banner. */
.pp-town-template .ast-merged-advanced-header {
	display: block !important;
	min-height: 0 !important;
	padding: 0 !important;
	background-image: none !important;
	background-color: #11284b !important;
}

.pp-town-template .ast-merged-advanced-header.nitro-lazy {
	background-image: none !important;
}

.pp-town-template .ast-merged-advanced-header::before, .pp-town-template .ast-merged-advanced-header::after {
	display: none !important;
}

.pp-town-template .ast-merged-advanced-header .ast-inside-advanced-header-content {
	display: none !important;
}

/* Astra's boxed layout (hub page) adds a gray canvas and padding around the article. */
.pp-town-template.ast-separate-container, .pp-town-template.ast-separate-container #content {
	background: #fff !important;
}

.pp-town-template.ast-separate-container #primary, .pp-town-template.ast-separate-container .ast-article-single {
	margin: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

.ppt {
	--navy: #11284b;
	--sky: #6fb0c7;
	--sky-ink: #2d6f8c;
	--gold: #e9ae41;
	--ink: #11284b;
	--body: #455366;
	--line: #c7d7e1;
	--tint: #f4f7fa;
	--on-navy: #fff;
	--head: var(--pp-font-heading, Georgia, "Times New Roman", serif);
	width: 100vw;
	margin-left: calc(50% - 50vw);
	color: var(--body);
	font-size: 17px;
	line-height: 1.65;
	background: #fff;
}

.ppt *, .ppt *::before, .ppt *::after {
	box-sizing: border-box;
}

.ppt a {
	color: var(--navy);
}

.ppt a:hover {
	color: var(--sky-ink);
}

.ppt p {
	margin: 0;
}

.ppt-nowrap {
	white-space: nowrap;
}

.ppt-center {
	text-align: center;
}

.ppt-wrap {
	width: 100%;
	max-width: 1140px;
	margin: 0 auto;
	padding: 0 24px;
}

.ppt-section {
	padding: 80px 0;
	background: #fff;
}

.ppt-section--tint {
	background: var(--tint);
}

.ppt-section--navy {
	background: var(--navy);
	color: var(--on-navy);
}

/* Headings: centered with the gold rule, as on the service pages */
.ppt .ppt-h1, .ppt .ppt-h2, .ppt h3 {
	font-family: var(--head) !important;
	margin: 0;
	letter-spacing: 0;
	text-transform: none;
}

.ppt .ppt-h2 {
	color: var(--navy);
	font-size: 36px;
	line-height: 1.2;
	font-weight: 700;
	text-align: center;
}

.ppt .ppt-h2::after {
	content: "";
	display: block;
	width: 68px;
	height: 2px;
	margin: 18px auto 0;
	background: var(--gold);
}

.ppt .ppt-h2--left {
	text-align: left;
	width: fit-content;
	max-width: 100%;
}

.ppt .ppt-h2--left::after {
	margin-left: 0;
	width: var(--pp-rule-w, 100%);
}

/* 10-10: rule spans the heading text, not a 68px stub */
.ppt-section--navy .ppt-h2 {
	color: #fff;
}

.ppt-section-intro {
	max-width: 780px;
	margin: 22px auto 36px !important;
	text-align: center;
	color: var(--body);
	font-size: 17px;
	line-height: 1.65;
}

.ppt-kicker {
	margin: 0 0 10px !important;
	color: var(--gold);
	font-size: 13px !important;
	font-weight: 900;
	letter-spacing: .1em;
	text-transform: uppercase;
	line-height: 1.6;
}

/* Buttons (service-page style) */
.ppt .ppt-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 12px 22px;
	border: 1px solid transparent;
	border-radius: 2px;
	font-weight: 700;
	font-size: 16px;
	text-decoration: none;
	line-height: 1.2;
}

.ppt .ppt-btn--primary {
	background: var(--sky) !important;
	border-color: var(--sky) !important;
	color: var(--navy) !important;
}

.ppt .ppt-btn--ghost {
	background: transparent;
	border-color: #fff;
	color: #fff;
}

.ppt .ppt-btn--ghost:hover {
	background: #fff;
	color: var(--navy);
}

.ppt-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 14px;
	margin-top: 8px;
}

.ppt-actions--center {
	justify-content: center;
}

.ppt .ppt-more {
	font-weight: 700;
	font-size: 16px;
	white-space: nowrap;
	text-decoration: none;
	color: var(--navy);
}

/* Hero: photo with the navy card */
.ppt-hero {
	position: relative;
	overflow: hidden;
	background-color: var(--navy);
	padding: 76px 0;
	min-height: 560px;
	display: flex;
	align-items: center;
}

.ppt-hero__bg {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 60%;
	z-index: 0;
}

.ppt-hero > .ppt-wrap {
	position: relative;
	z-index: 1;
}

.ppt-hero__card {
	max-width: 600px;
	padding: 38px 40px;
	background: rgba(17, 40, 75, .94);
	border-radius: 4px;
	box-shadow: 0 18px 40px rgba(0, 0, 0, .25);
}

.ppt .ppt-h1 {
	color: #fff;
	font-size: 44px;
	line-height: 1.12;
	font-weight: 700;
	margin-bottom: 18px;
}

.ppt-lede {
	color: #fff;
	font-size: 17px;
	line-height: 1.65;
	margin-bottom: 14px !important;
}

/* Proof strip */
.ppt-stats {
	background: var(--navy);
	padding: 6px 0;
	border-top: 1px solid rgba(111, 176, 199, .3);
}

.ppt-stats__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ppt-stats__grid div {
	position: relative;
	display: flex;
	min-height: 88px;
	padding: 15px 18px;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
}

.ppt-stats__grid div:not(:last-child)::after {
	content: "";
	position: absolute;
	right: 0;
	top: 24%;
	width: 1px;
	height: 52%;
	background: rgba(111, 176, 199, .42);
}

.ppt-stats strong {
	font-family: var(--head) !important;
	font-size: 24px;
	color: var(--gold);
	line-height: 1.1;
}

.ppt-stats span {
	font-size: 12px;
	font-weight: 650;
	color: #fff;
	line-height: 1.3;
	margin-top: 4px;
}

/* Disambiguation cross-link: slim line between the stats band and the intro, for town pairs
   Google confuses (e.g. Newtown vs Newtown Square). Data-driven, only on the paired pages. */
.ppt-disambig {
	background: #fff;
	border-bottom: 1px solid var(--line);
}

.ppt-disambig .ppt-wrap {
	padding-top: 14px;
	padding-bottom: 14px;
	text-align: center;
	font-size: 14px;
	line-height: 1.5;
	color: var(--navy);
}

.ppt-disambig a {
	font-weight: 700;
	text-decoration: underline;
	white-space: nowrap;
}

/* Intro split */
.ppt-intro {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
	gap: 64px;
	align-items: center;
}

.ppt-intro .ppt-h2 {
	margin-bottom: 24px;
}

.ppt-intro__photo {
	margin: 0;
}

.ppt-intro--solo {
	grid-template-columns: minmax(0, 1fr);
	max-width: 820px;
}

.ppt-intro__photo img {
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
	border-radius: 4px;
	box-shadow: 0 18px 40px rgba(17, 40, 75, .16);
}

/* Prose (the page's own copy) */
.ppt-prose {
	color: var(--body);
	font-size: 17px;
	line-height: 1.75;
}

.ppt-prose p, .ppt-prose ul, .ppt-prose ol {
	margin: 0 0 18px !important;
}

.ppt-prose ul, .ppt-prose ol {
	padding-left: 22px;
}

.ppt-prose li {
	margin-bottom: 6px;
}

.ppt-prose h3 {
	color: var(--navy);
	font-size: 22px;
	line-height: 1.3;
	margin: 32px 0 12px !important;
}

.ppt-prose h3:first-child {
	margin-top: 0 !important;
}

.ppt-prose a {
	color: var(--sky-ink);
	font-weight: 600;
}

.ppt-longform {
	max-width: 820px;
}

.ppt-longform .ppt-h2 {
	margin-bottom: 36px;
}

.ppt-readmore > summary {
	list-style: none;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	min-height: 48px;
	margin-top: 6px;
	padding: 12px 22px;
	border: 1px solid var(--navy);
	border-radius: 2px;
	font-weight: 700;
	font-size: 15px;
	color: var(--navy);
}

.ppt-readmore > summary::-webkit-details-marker {
	display: none;
}

.ppt-readmore > summary::after {
	content: "+";
	font-size: 20px;
	line-height: 1;
}

.ppt-readmore[open] > summary {
	margin-bottom: 28px;
}

.ppt-readmore[open] > summary::after {
	content: "−";
}

/* Service cards */
.ppt-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 28px;
}

.ppt .ppt-card {
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid #dfe7ee;
	border-radius: 4px;
	overflow: hidden;
	text-decoration: none;
	color: var(--body);
	transition: box-shadow .2s;
}

.ppt .ppt-card:hover {
	box-shadow: 0 12px 28px rgba(17, 40, 75, .12);
	color: var(--body);
}

.ppt-card img {
	width: 100%;
	height: 220px;
	object-fit: cover;
	display: block;
}

.ppt-card__body {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 22px 24px 26px;
	font-size: 16px;
	line-height: 1.6;
}

.ppt .ppt-card__title {
	font-family: var(--head) !important;
	font-size: 22px;
	font-weight: 700;
	color: var(--navy);
}

.ppt-card__cta {
	font-weight: 700;
	color: var(--sky-ink);
	font-size: 15px;
	margin-top: 4px;
}

.ppt-links {
	margin-top: 28px !important;
	text-align: center;
	font-size: 15px;
	color: var(--body);
}

.ppt-links a {
	font-weight: 700;
}

/* Recent work */
.ppt-gallery {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 20px;
	margin: 0 auto;
}

.ppt-gallery--1 {
	grid-template-columns: minmax(0, 1fr);
	max-width: 560px;
}

.ppt-gallery--2 {
	grid-template-columns: repeat(2, minmax(0, 1fr));
	max-width: 760px;
}

.ppt-shot {
	margin: 0;
	border-radius: 4px;
	overflow: hidden;
}

.ppt-shot img {
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
}

.ppt-gallery + .ppt-center {
	margin-top: 28px !important;
}

/* Crew (navy split): copy + checklist left, photo mosaic right */
.ppt-crew__grid {
	display: grid;
	grid-template-columns: minmax(0, .9fr) minmax(0, 1.25fr);
	gap: 56px;
	align-items: center;
}

.ppt-crew__copy {
	display: flex;
	flex-direction: column;
	gap: 18px;
}

.ppt-crew__copy p:not(.ppt-kicker) {
	color: #fff;
}

.ppt-crew__copy .ppt-kicker {
	margin-bottom: -6px !important;
}

.ppt-crew__copy .ppt-btn {
	align-self: flex-start;
	margin-top: 6px;
}

.ppt-checks {
	list-style: none;
	margin: 4px 0 0;
	padding: 20px 0 0;
	border-top: 1px solid rgba(111, 176, 199, .32);
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.ppt-checks li {
	position: relative;
	padding-left: 30px;
	color: #fff;
	font-size: 16px;
	line-height: 1.5;
}

.ppt-checks li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 4px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	border: 2px solid var(--gold);
}

.ppt-checks li::after {
	content: "";
	position: absolute;
	left: 5px;
	top: 7px;
	width: 5px;
	height: 8px;
	border: solid var(--gold);
	border-width: 0 2px 2px 0;
	transform: rotate(45deg);
}

.ppt-mosaic {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-rows: repeat(3, 150px);
	gap: 12px;
}

.ppt-mosaic figure {
	margin: 0;
	border-radius: 4px;
	overflow: hidden;
}

.ppt-mosaic img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ppt-mosaic__main {
	grid-column: 1/span 3;
	grid-row: 1/span 2;
}

.ppt-mosaic figure:nth-child(2) {
	grid-column: 4;
	grid-row: 1;
}

.ppt-mosaic figure:nth-child(3) {
	grid-column: 4;
	grid-row: 2;
}

.ppt-mosaic figure:nth-child(4) {
	grid-column: 1/span 2;
	grid-row: 3;
}

.ppt-mosaic figure:nth-child(5) {
	grid-column: 3/span 2;
	grid-row: 3;
}

/* Reviews */
.ppt-carousel {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: calc(( 100% - 48px ) / 3);
	gap: 24px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scrollbar-width: none;
	padding: 4px 2px 8px;
}

.ppt-carousel::-webkit-scrollbar {
	display: none;
}

.ppt-carousel:focus-visible {
	outline: 2px solid var(--sky-ink);
	outline-offset: 4px;
}

.ppt-review {
	margin: 0;
	scroll-snap-align: start;
	border: 1px solid #dfe7ee;
	border-top: 3px solid var(--gold);
	border-radius: 4px;
	padding: 26px 28px;
	display: flex;
	flex-direction: column;
	gap: 14px;
	background: #fff;
}

.ppt-review__stars {
	color: var(--gold);
	letter-spacing: .18em;
	font-size: 18px;
}

.ppt-review blockquote {
	margin: 0;
	padding: 0;
	border: 0;
	font-family: var(--head) !important;
	font-size: 18px;
	line-height: 1.5;
	color: var(--navy);
	font-style: normal;
	flex-grow: 1;
}

.ppt-review figcaption {
	display: flex;
	flex-direction: column;
	gap: 2px;
	font-size: 14px;
	color: var(--body);
}

.ppt-review figcaption strong {
	font-size: 15px;
	color: var(--navy);
	letter-spacing: .02em;
}

.ppt-carousel__nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 22px;
	margin-top: 28px;
}

.ppt .ppt-arrow {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	border: 1px solid var(--navy);
	background: #fff;
	color: var(--navy);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}

.ppt .ppt-arrow:hover {
	background: var(--navy);
	color: #fff;
}

/* Shared FAQ component: only spacing inside the town wrapper */
.ppt .pp-faq-section {
	max-width: 1040px;
	margin: 0 auto;
}

.ppt .pp-faq-list article > div p {
	margin: 0 0 10px;
}

.ppt .pp-faq-list article > div p:last-child {
	margin-bottom: 0;
}

/* Nearby */
.ppt-chips {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin-top: 30px;
}

.ppt .ppt-chips a {
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 2px;
	padding: 9px 16px;
	font-weight: 700;
	text-decoration: none;
	font-size: 15px;
	line-height: 1.3;
	color: var(--navy);
}

.ppt .ppt-chips a:hover {
	border-color: var(--navy);
}

/* Closing CTA (service-page style) */
.ppt-cta {
	background: var(--navy);
	padding: 72px 0;
	text-align: center;
}

.ppt-cta .ppt-wrap {
	max-width: 840px;
}

.ppt .ppt-cta h2 {
	font-family: var(--head) !important;
	margin: 0 0 14px;
	color: #fff;
	font-size: 38px;
	line-height: 1.2;
}

.ppt-cta p:not(.ppt-kicker) {
	color: #fff;
	font-size: 17px;
	line-height: 1.6;
}

.ppt .ppt-cta p a {
	color: #fff;
	text-decoration: underline;
	text-underline-offset: 3px;
}

.ppt-cta .ppt-actions {
	margin-top: 26px;
}

.ppt-cta .ppt-btn--ghost {
	border-color: var(--sky);
}

/* Service-areas hub */
.ppt .ppt-btn--navy {
	background: var(--navy);
	border-color: var(--navy);
	color: #fff;
}

.ppt .ppt-btn--navy:hover {
	background: #0b1b33;
	color: #fff;
}

.ppt-jump {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
}

.ppt .ppt-jump a {
	border: 1px solid var(--navy);
	border-radius: 2px;
	padding: 10px 18px;
	font-weight: 700;
	font-size: 15px;
	text-decoration: none;
	color: var(--navy);
}

.ppt .ppt-jump a:hover {
	background: var(--navy);
	color: #fff;
}

.ppt-region {
	scroll-margin-top: 90px;
}

.ppt-region__hub {
	margin: -8px 0 32px !important;
}

.ppt-towns {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 20px;
}

.ppt .ppt-town {
	display: block;
	background: #fff;
	border: 1px solid #dfe7ee;
	border-radius: 4px;
	overflow: hidden;
	text-decoration: none;
	transition: box-shadow .2s, transform .2s;
}

.ppt .ppt-town:hover {
	box-shadow: 0 12px 28px rgba(17, 40, 75, .14);
	transform: translateY(-2px);
}

.ppt-town img {
	display: block;
	width: 100%;
	aspect-ratio: 4/3;
	object-fit: cover;
}

.ppt-town span {
	display: block;
	padding: 14px 16px;
	font-family: var(--head) !important;
	font-size: 18px;
	font-weight: 700;
	color: var(--navy);
}

.ppt-towns + .ppt-chips {
	margin-top: 26px;
}

@media (max-width: 960px) {
	.ppt-intro {
		grid-template-columns: minmax(0, 1fr);
		gap: 36px;
	}
	
	.ppt-cards {
		grid-template-columns: minmax(0, 1fr);
		gap: 20px;
	}
	
	.ppt-towns {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 14px;
	}
	
	.ppt-town span {
		font-size: 16px;
		padding: 10px 12px;
	}
	
	.ppt-carousel {
		grid-auto-columns: 84%;
	}
	
	.ppt-gallery, .ppt-gallery--2 {
		grid-template-columns: minmax(0, 1fr);
		max-width: none;
	}
	
	.ppt-crew__grid {
		grid-template-columns: minmax(0, 1fr);
		gap: 36px;
	}
	
	.ppt-mosaic {
		grid-template-rows: repeat(3, 120px);
	}
	
	.ppt-stats__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	
	.ppt-stats__grid div:nth-child(2)::after {
		display: none;
	}
	
	.ppt-stats__grid div:nth-child(-n+2) {
		border-bottom: 1px solid rgba(111, 176, 199, .32);
	}
}

@media (max-width: 600px) {
	.ppt {
		font-size: 16px;
	}
	
	.ppt-wrap {
		padding: 0 16px;
	}
	
	.ppt-section {
		padding: 52px 0;
	}
	
	/* Below 600px, stop overlaying the navy card on the photo (it was near-full-bleed and
	   ~94% opaque, reducing the photo to a thin sliver). Show the photo as its own visible
	   band above the card instead, with the solid-navy card in normal flow below it. */
	.ppt-hero {
		display: block;
		padding: 0;
		min-height: 0;
		background-color: var(--navy);
	}
	
	.ppt-hero__bg {
		position: static;
		display: block;
		width: 100%;
		height: 240px;
		object-fit: cover;
		object-position: 70% center;
	}
	
	.ppt-hero > .ppt-wrap {
		padding: 0;
		max-width: none;
	}
	
	.ppt-hero__card {
		max-width: none;
		padding: 28px 24px 32px;
		border-radius: 0;
		box-shadow: none;
		background: var(--navy);
	}
	
	/* Project singles wrap their whole template in one element carrying both .ppt (full-bleed)
	   and .ppt-wrap (max-width:1140px + side padding) classes at once, so the hero -- nested
	   inside that element -- inherited the padding and rendered inset instead of edge-to-edge
	   like every other family's hero. Break it back out to the full viewport width here. */
	.ppt-project > .ppt-hero {
		width: 100vw;
		position: relative;
		left: 50%;
		right: 50%;
		margin-left: -50vw;
		margin-right: -50vw;
	}
	
	/* Long, unbreakable H1 words (e.g. "Transformation") can exceed the mobile card's usable
	   width; bands.php forces overflow-wrap:normal!important on hero H1s (to stop the theme's
	   overeager break-word from splitting ordinary short words), which otherwise lets a too-long
	   word overflow and get clipped by .ppt-hero's overflow:hidden. break-word is a true CSS
	   "last resort": it only splits a word that cannot fit on its own line at all, so normal
	   headings are unaffected. */
	.ppt-hero .ppt-h1 {
		overflow-wrap: break-word;
		word-break: normal;
	}
	
	.pp-site-template .ppt-hero .ppt-h1 {
		overflow-wrap: break-word !important;
	}
	
	.ppt .ppt-h1 {
		font-size: clamp(27px, 7.6vw, 33px);
	}
	
	.ppt .ppt-h2 {
		font-size: 29px;
	}
	
	.ppt-section-intro {
		text-align: left;
		font-size: 16px;
	}
	
	.ppt-actions {
		flex-direction: column;
		align-items: stretch;
	}
	
	.ppt .ppt-btn {
		width: 100%;
	}
	
	.ppt-crew__copy .ppt-btn {
		align-self: stretch;
	}
	
	.ppt-mosaic {
		grid-template-rows: 200px 90px 110px;
		gap: 8px;
	}
	
	.ppt-stats__grid div {
		min-height: 76px;
		padding: 11px 8px;
	}
	
	.ppt-stats strong {
		font-size: 21px;
	}
	
	.ppt-stats span {
		font-size: 11px;
	}
	
	.ppt .ppt-cta h2 {
		font-size: 30px;
	}
	
	.ppt-card img {
		height: 190px;
	}
	
	.ppt-review {
		padding: 22px;
	}
}

/* Project pages: drop Astra's single-post top spacing so the mobile hero sits under the header. */
@media (max-width: 600px) {
	.content-area:has(.ppt-project) {
		margin-top: 0 !important;
	}
	
	.ast-article-single:has(.ppt-project) {
		padding-top: 0;
	}
}

/* Wide tables in post copy scroll inside themselves instead of widening the page. */
@media (max-width: 600px) {
	.ppt table {
		display: block;
		max-width: 100%;
		overflow-x: auto;
	}
}

/* Ghost buttons are white-on-dark; on light tint bands they need navy. */
.ppt .ppt-section--tint .ppt-btn--ghost {
	color: var(--navy);
	border-color: var(--navy);
}

.ppt .ppt-section--tint .ppt-btn--ghost:hover {
	background: var(--navy);
	color: #fff;
}

/* Site-template pages wrap everything in .ppt.ppt-wrap (1140px cap), which boxed the hero and
   stats bar. Break both out to full width like the town/service pages; content stays aligned
   by the hero's inner .ppt-wrap. */
.ppt.ppt-wrap > .ppt-hero, .ppt.ppt-wrap > .ppt-stats {
	width: 100vw;
	max-width: none;
	margin-left: calc(50% - 50vw);
	margin-right: 0;
	left: auto;
	right: auto;
}

/* Wide screens: a 560px hero at 1920px is a 3.4:1 strip that crops every house photo to its
   middle band. Grow the hero with the viewport so real house photos read whole. */
@media (min-width: 601px) {
	.ppt-hero {
		min-height: clamp(560px, 40vw, 780px);
	}
}

/* iPhone: keep the hero's Schedule button above the 53px bottom bar on the first screen
   (design critique 10-02, T-04). Shorter photo band, one-line eyebrow, tighter card. */
@media (max-width: 600px) {
	.ppt-hero__bg {
		height: 190px;
	}
	
	.ppt-hero__card {
		padding: 22px 20px 24px;
	}
	
	.ppt-hero .ppt-kicker {
		font-size: 11px !important;
		letter-spacing: .07em;
		margin-bottom: 8px !important;
	}
	
	.ppt-hero .ppt-h1 {
		margin-bottom: 12px;
		line-height: 1.1;
	}
	
	.ppt-hero .ppt-lede {
		font-size: 16px;
		line-height: 1.5;
		margin-bottom: 10px !important;
	}
}

/* Bottom of template pages (critique G-02): the navy CTA band is the closing call to action, so
   drop the footer's lone "Schedule Consultation" row under it, and run the band full width on
   site-template pages instead of boxing it inside the 1140px wrapper. */
body.pp-town-template .site-above-footer-wrap {
	display: none !important;
}

.ppt.ppt-wrap > .ppt-cta {
	width: 100vw;
	max-width: none;
	margin-left: calc(50% - 50vw);
	margin-right: 0;
}

/* FAQ (critique G-07): one readable column instead of question-left / small-grey-answer-right. */
.ppt .pp-faq-section {
	max-width: 820px;
}

.ppt .pp-faq-section .pp-faq-intro {
	text-align: center;
}

.ppt .pp-faq-list article {
	display: block !important;
	padding: 22px 0 !important;
}

.ppt .pp-faq-list article > h3 {
	margin: 0 0 8px !important;
	font-size: 20px !important;
	line-height: 1.35 !important;
}

.ppt .pp-faq-list article > div, .ppt .pp-faq-list article > div p {
	font-size: 17px !important;
	line-height: 1.65 !important;
	color: #2b3a4f !important;
}

@media (max-width: 600px) {
	.ppt .pp-faq-list article > h3 {
		font-size: 18px !important;
	}
	
	.ppt .pp-faq-list article > div, .ppt .pp-faq-list article > div p {
		font-size: 16px !important;
	}
}

/* Pricing pages (critique S-01/S-02): rich-text cards kept their original white text after their
   dark backgrounds became light surfaces. Dark text on those light surfaces only. */
.pp-site-template:is(.page-id-89, .page-id-93) .pp-brand-surface-light > .fl-module-rich-text :is(h1, h2, h3, h4, p, li, span, strong, em) {
	color: #2b3a4f !important;
}

.pp-site-template:is(.page-id-89, .page-id-93) .pp-brand-surface-light > .fl-module-rich-text :is(h2, h3, h4) {
	color: var(--navy, #11284b) !important;
}

/* Estimate pages (critique B-02): the Acuity column collapsed to 340px, drawing the calendar at
   300px with empty space beside it. Give the booking column and its iframe the full row. */
.pp-site-template .fl-node-ppestimateembedcol {
	width: 100% !important;
	max-width: 100% !important;
	float: none !important;
}

.pp-site-template .fl-node-ppestimateembedcol iframe {
	width: 100% !important;
	max-width: 100% !important;
}

/* Calendar first: the "Need another time? Call/Text" row moves below the scheduler. */
.pp-site-template .fl-builder-content:has(> .fl-node-ppestimateembedrow) {
	display: flex;
	flex-direction: column;
}

.pp-site-template .fl-builder-content > .fl-node-ppestimatesupportrow {
	order: 10;
}

.pp-site-template .fl-builder-content:has(> .fl-node-ppestimateembedrow) > .fl-row {
	width: 100%;
}

/* Blog post body (critique B-03): paragraphs and headings had zero margins and ran together. */
.ppt-post__article {
	max-width: 700px;
}

.ppt .ppt-post__article :is(p, ul, ol, blockquote, table, figure) {
	margin: 0 0 1.25em !important;
}

.ppt .ppt-post__article :is(p, li) {
	font-size: 18px !important;
	line-height: 1.7 !important;
	color: #2b3a4f !important;
}

.ppt .ppt-post__article li {
	margin-bottom: .4em !important;
}

.ppt .ppt-post__article :is(ul, ol) {
	padding-left: 1.4em !important;
}

.ppt .ppt-post__article h2 {
	margin: 2em 0 .6em !important;
	font-size: 30px !important;
	line-height: 1.25 !important;
	color: var(--navy) !important;
}

.ppt .ppt-post__article :is(h3, h4) {
	margin: 1.6em 0 .5em !important;
	font-size: 23px !important;
	line-height: 1.3 !important;
	color: var(--navy) !important;
}

.ppt .ppt-post__article > :first-child, .ppt .ppt-post__article > .ppt-post__hero-img + * {
	margin-top: 0 !important;
}

@media (max-width: 600px) {
	.ppt .ppt-post__article :is(p, li) {
		font-size: 17px !important;
	}
	
	.ppt .ppt-post__article h2 {
		font-size: 25px !important;
	}
	
	.ppt .ppt-post__article :is(h3, h4) {
		font-size: 20px !important;
	}
}

/* == fix-20261004 SERVICES == */

/* Pricing pages: price table first, one table style, example-job cards, collapsed keyword copy. */
.pp-site-template .ppx {
	max-width: 1040px;
	margin: 0 auto;
	padding: 8px 0 24px;
}

.pp-site-template .ppx-sec {
	padding: 40px 0 8px;
}

.pp-site-template .ppx-h2 {
	margin: 0 0 6px !important;
}

.pp-site-template .ppx-intro {
	max-width: 680px;
	margin: 14px auto 26px !important;
	text-align: center;
	font-size: 18px !important;
	line-height: 1.6 !important;
	color: #2b3a4f !important;
}

.pp-site-template .ppx-note {
	max-width: 760px;
	margin: 16px auto 0 !important;
	text-align: center;
	font-size: 14px !important;
	line-height: 1.55 !important;
	color: #4a5b70 !important;
}

.pp-site-template .ppx-table {
	max-width: 860px;
	margin: 0 auto;
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	border: 1px solid var(--line);
	border-radius: 4px;
	background: #fff;
}

.pp-site-template .ppx-table table {
	width: 100% !important;
	margin: 0 !important;
	border-collapse: collapse;
	border: 0 !important;
	background: #fff !important;
	color: var(--navy) !important;
	font-family: inherit;
}

.pp-site-template .ppx-table :is(caption) {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
}

.pp-site-template .ppx-table thead {
	position: static !important;
	clip: auto !important;
	width: auto !important;
	height: auto !important;
	overflow: visible !important;
	display: table-header-group !important;
}

.pp-site-template .ppx-table thead th {
	background: var(--navy) !important;
	color: #fff !important;
	font-size: 13px;
	font-weight: 800;
	letter-spacing: .06em;
	text-transform: uppercase;
	padding: 12px 16px !important;
	text-align: left;
	border: 0 !important;
}

.pp-site-template .ppx-table :is(th, td) {
	background: transparent !important;
	color: var(--navy) !important;
	border: 0 !important;
	border-bottom: 1px solid #e3ebf1 !important;
	padding: 11px 16px !important;
	font-size: 16px;
	line-height: 1.45;
	text-align: left;
	vertical-align: top;
}

.pp-site-template .ppx-table tbody th {
	font-weight: 700;
	font-family: inherit;
}

.pp-site-template .ppx-table tbody tr:nth-child(even) > * {
	background: #f4f7fa !important;
}

.pp-site-template .ppx-table td[align="right"] {
	text-align: right;
	white-space: nowrap;
	font-weight: 700;
}

.pp-site-template .ppx-table th[scope="rowgroup"] {
	border-top: 3px solid var(--gold) !important;
	background: #fff !important;
}

.pp-site-template .ppx-table tr.pp-price-spacer > * {
	padding: 4px !important;
	border: 0 !important;
	background: #fff !important;
}

.pp-site-template .ppx-table td[colspan] {
	font-size: 14px;
	color: #4a5b70 !important;
	background: #fff !important;
}

.pp-site-template .ppx--exterior .ppx-table td {
	font-weight: 600;
}

.pp-site-template .ppx-cards3 {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 20px;
	margin-top: 26px;
}

.pp-site-template .ppx-card {
	background: #fff;
	border: 1px solid var(--line);
	border-top: 3px solid var(--gold);
	border-radius: 3px;
	padding: 22px 22px 20px;
}

.pp-site-template .ppx-card h3 {
	margin: 0 0 8px !important;
	font-size: 20px !important;
	line-height: 1.3 !important;
	color: var(--navy) !important;
}

.pp-site-template .ppx-card p {
	margin: 0 !important;
	font-size: 16px !important;
	line-height: 1.55 !important;
	color: #2b3a4f !important;
}

.pp-site-template .ppx-jobs {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 22px;
	margin-top: 22px;
}

.pp-site-template .ppx-jobs--text {
	margin-top: 26px;
}

.pp-site-template .ppx-job {
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 3px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.pp-site-template .ppx-job img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 4/3;
	object-fit: cover;
	object-position: 50% 40%;
}

.pp-site-template .ppx-job__body {
	padding: 18px 20px 20px;
}

.pp-site-template .ppx-jobs:not(.ppx-jobs--text) > .ppx-job:last-child:nth-child(odd) {
	grid-column: 1/-1;
	flex-direction: row;
	align-items: stretch;
}

.pp-site-template .ppx-jobs:not(.ppx-jobs--text) > .ppx-job:last-child:nth-child(odd) img {
	width: 50%;
	aspect-ratio: auto;
	height: 380px;
	min-height: 0;
}

.pp-site-template .ppx-jobs:not(.ppx-jobs--text) > .ppx-job:last-child:nth-child(odd) .ppx-job__body {
	align-self: center;
	flex: 1;
}

.pp-site-template .ppx-job--text {
	border-top: 3px solid var(--gold);
}

.pp-site-template .ppx-job h3.ppx-job__title {
	margin: 0 0 6px !important;
	font-size: 18px !important;
	line-height: 1.35 !important;
	color: var(--navy) !important;
	font-weight: 700;
}

.pp-site-template .ppx-job__scope {
	margin: 0 0 6px !important;
	font-size: 15px !important;
	line-height: 1.5 !important;
	color: #4a5b70 !important;
}

.pp-site-template .ppx-job__price {
	margin: 0 !important;
	font-family: var(--head);
	font-size: 24px !important;
	font-weight: 700;
	color: var(--navy) !important;
}

.pp-site-template .ppx-sec--more {
	padding: 36px 0 16px;
	text-align: center;
}

.pp-site-template .ppx-more {
	text-align: left;
}

.pp-site-template .ppx-more > summary {
	margin-left: auto;
	margin-right: auto;
	display: flex;
	width: max-content;
}

.pp-site-template .ppx-more__body {
	max-width: 760px;
	margin: 0 auto;
	font-size: 16px;
	line-height: 1.65;
	color: #2b3a4f;
}

.pp-site-template .ppx-more__body :is(p, li, span, strong, b, em) {
	color: #2b3a4f !important;
	font-size: 16px !important;
	line-height: 1.65 !important;
}

.pp-site-template .ppx-more__body h3 {
	margin: 26px 0 10px !important;
	font-size: 21px !important;
	color: var(--navy) !important;
}

@media (max-width: 760px) {
	.pp-site-template .ppx {
		padding: 0 0 16px;
	}
	
	.pp-site-template .ppx-sec {
		padding-top: 28px;
	}
	
	.pp-site-template .ppx-intro {
		font-size: 16px !important;
		margin: 10px auto 18px !important;
		text-align: left;
	}
	
	.pp-site-template .ppx-cards3, .pp-site-template .ppx-jobs {
		grid-template-columns: 1fr;
		gap: 14px;
	}
	
	.pp-site-template .ppx-table :is(th, td) {
		padding: 9px 10px !important;
		font-size: 14px;
	}
	
	.pp-site-template .ppx-table thead th {
		padding: 10px !important;
		font-size: 11px;
	}
	
	.pp-site-template .ppx-job__price {
		font-size: 22px !important;
	}
	
	.pp-site-template .ppx-jobs:not(.ppx-jobs--text) > .ppx-job:last-child:nth-child(odd) {
		flex-direction: column;
	}
	
	.pp-site-template .ppx-jobs:not(.ppx-jobs--text) > .ppx-job:last-child:nth-child(odd) img {
		width: 100%;
		aspect-ratio: 4/3;
		min-height: 0;
	}
}

/* Process steps: a compact 4-item row (S-13). */
.pp-site-template .ppx-steps {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 14px;
	margin: 18px 0 8px;
}

.pp-site-template .ppx-step {
	background: #fff;
	border: 1px solid var(--line);
	border-top: 3px solid var(--gold);
	border-radius: 3px;
	padding: 16px 16px 14px;
}

.pp-site-template .ppx-step strong {
	display: block;
	margin: 0 0 6px;
	font-size: 16px;
	line-height: 1.3;
	color: var(--navy);
}

.pp-site-template .ppx-step span {
	display: block;
	font-size: 14px;
	line-height: 1.5;
	color: #4a5b70;
}

/* Wallpaper removal page: template cards + tools table. */
.pp-site-template .ppw .ppx-table th[scope="row"] {
	font-weight: 700;
}

.pp-site-template .ppw .ppx-table td:first-child {
	width: 56px;
	text-align: center;
	font-weight: 700;
}

.pp-site-template .ppw .ppx-table thead th:first-child {
	text-align: center;
}

.pp-site-template .ppw .ppx-more__body ul {
	margin: 0 0 0 1.2em;
	padding: 0;
}

.pp-site-template .ppw .ppx-more__body li {
	margin-bottom: .4em;
}

/* Limewash page on phones: keep the hero subtitle clear of the floating feedback badge. */
@media (max-width: 600px) {
	.pp-site-template.page-id-1317 .ppt-hero__card .ppt-lede {
		padding-right: 56px;
	}
	
	.pp-site-template .ppx-steps {
		grid-template-columns: 1fr 1fr;
	}
}

@media (max-width: 420px) {
	.pp-site-template .ppx-steps {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 760px) {
	.pp-site-template .ppx--interior .ppx-table table {
		table-layout: fixed;
	}
	
	.pp-site-template .ppx--interior .ppx-table :is(th, td) {
		padding: 8px 6px !important;
		font-size: 13px;
		line-height: 1.35;
		overflow-wrap: anywhere;
	}
	
	.pp-site-template .ppx--interior .ppx-table thead th {
		padding: 9px 4px !important;
		font-size: 9px;
		letter-spacing: 0;
		overflow-wrap: normal;
	}
	
	.pp-site-template .ppx--interior .ppx-table td[align="right"] {
		white-space: normal;
	}
	
	.pp-site-template .ppx--interior .ppx-table thead th:nth-child(1) {
		width: 28%;
	}
	
	.pp-site-template .ppx--interior .ppx-table thead th:nth-child(2) {
		width: 19%;
	}
	
	.pp-site-template .ppx--interior .ppx-table thead th:nth-child(3) {
		width: 27%;
	}
	
	.pp-site-template .ppx--interior .ppx-table thead th:nth-child(4) {
		width: 26%;
		text-align: right;
	}
}

/* == end SERVICES == */

/* == fix-20261004 BLOG == */

/* Estimate pages on phones: short hero, calendar right under it, call row stays below it. */
@media (max-width: 767px) {
	body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero__bg, body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-stats, body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero .ppt-actions, body:is(.page-id-963, .page-id-6721) .fl-node-ppestimateschedulerintrorow {
		display: none !important;
	}
	
	body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero {
		min-height: 0 !important;
		padding: 0 !important;
	}
	
	body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero__card {
		padding: 22px 20px 18px !important;
		margin: 0 !important;
		min-height: 0 !important;
	}
	
	body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero .ppt-h1 {
		font-size: 30px !important;
		margin: 4px 0 8px !important;
	}
	
	body:is(.page-id-963, .page-id-6721, .page-id-3351) .ppt-hero .ppt-lede {
		margin: 0 !important;
		font-size: 16px !important;
	}
	
	body:is(.page-id-963, .page-id-6721) .ppt-wrap-original {
		padding-top: 12px !important;
	}
	
	body:is(.page-id-963, .page-id-6721) .fl-node-ppestimatesupportrow {
		margin-top: 8px;
	}
}

/* Internal scheduling page: small badge instead of the giant red banner. */
body.page-id-3351 .fl-node-y0qfdbwel4kj {
	min-height: 0 !important;
	height: auto !important;
}

body.page-id-3351 .fl-node-y0qfdbwel4kj .fl-row-content-wrap {
	min-height: 0 !important;
	padding: 12px 0 0 !important;
	background: none !important;
}

body.page-id-3351 .fl-node-xc8ep6sk9a1u {
	margin: 0 !important;
}

body.page-id-3351 .fl-node-xc8ep6sk9a1u .fl-module-content {
	margin: 0 !important;
}

body.page-id-3351 .fl-node-xc8ep6sk9a1u .fl-heading {
	display: inline-block;
	margin: 0 !important;
	padding: 5px 12px;
	background: #fdecec;
	color: #8a1f1f !important;
	border: 1px solid #e3b4b4;
	border-radius: 999px;
	font: 700 12px/1.3 system-ui, sans-serif !important;
	letter-spacing: .06em;
	text-transform: uppercase;
	white-space: normal;
}

body.page-id-3351 .fl-node-xc8ep6sk9a1u .fl-heading-text {
	color: #8a1f1f !important;
	font: inherit !important;
}

/* Contact page: location cards + readable form. */
body.page-id-87 .pp-loc-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 18px;
	margin: 20px 0 12px;
}

body.page-id-87 .pp-loc-card {
	background: #fff;
	border: 1px solid #dfe7ee;
	border-top: 3px solid #e9ae41;
	border-radius: 4px;
	padding: 20px 20px 22px;
}

body.page-id-87 .pp-loc-card .pp-loc-card__name {
	margin: 0 0 8px !important;
	font-family: Georgia, "Times New Roman", serif !important;
	font-size: 22px !important;
	color: #11284b !important;
	font-style: normal;
}

body.page-id-87 .pp-loc-card__addr {
	margin: 0 0 16px !important;
	font-size: 16px !important;
	line-height: 1.5 !important;
	font-style: normal !important;
	color: #2b3a4f !important;
}

body.page-id-87 .pp-loc-card__btns {
	display: flex;
	flex-direction: column;
	gap: 10px;
}

body.page-id-87 .pp-loc-card__btns .ppt-btn {
	width: 100%;
	justify-content: center;
	text-align: center;
}

body.page-id-87 .pp-loc-card__btns .ppt-btn--ghost {
	background: #fff !important;
	color: #11284b !important;
	border: 2px solid #11284b !important;
}

body.page-id-87 .pp-loc-card__btns .ppt-btn--primary {
	color: #0b1d38 !important;
}

body.page-id-87 .pp-loc-email {
	font-size: 16px;
	margin: 6px 0 0 !important;
	font-style: normal !important;
}

body.page-id-87 .pp-loc-email strong {
	margin-right: 6px;
}

body.page-id-87 .pp-contact-details {
	display: block !important;
	max-width: none !important;
	width: 100% !important;
}

body.page-id-87 .pp-contact-details > div:first-child {
	max-width: none !important;
	width: 100% !important;
}

body.page-id-87 .pp-contact-map {
	margin-top: 28px;
	max-width: none;
}

body.page-id-87 .pp-contact-map iframe {
	width: 100% !important;
	height: 320px;
	border-radius: 4px;
}

body.page-id-87 .gform_wrapper .gfield_label, body.page-id-87 .gform_wrapper label {
	color: #11284b !important;
	font-size: 15px !important;
	font-weight: 700 !important;
}

body.page-id-87 .gform_wrapper :is(input[type=text], input[type=email], input[type=tel], textarea) {
	width: 100% !important;
	box-sizing: border-box;
	background: #fff !important;
	color: #1b2a3d !important;
	border: 1px solid #8fa3b5 !important;
	border-radius: 3px !important;
	padding: 12px 14px !important;
	font-size: 16px !important;
	line-height: 1.4;
}

body.page-id-87 .gform_wrapper :is(input, textarea):focus {
	border-color: #11284b !important;
	outline: 2px solid #6fa8c4;
	outline-offset: 1px;
}

body.page-id-87 .gform_wrapper .gform_button {
	background: #11284b !important;
	color: #fff !important;
	border: 0 !important;
	border-radius: 3px !important;
	padding: 14px 32px !important;
	font-size: 16px !important;
	font-weight: 700;
	cursor: pointer;
}

@media (max-width: 767px) {
	body.page-id-87 .pp-loc-cards {
		grid-template-columns: 1fr;
	}
}

body.page-id-87 .pp-contact-about-row:not(:has(.pp-contact-about)) {
	display: none !important;
}

/* Blog index / archive cards: equal heights, meta line, text link. */
body.pp-site-archive .ast-row > * {
	display: flex !important;
}

body.pp-site-archive article.ast-article-post {
	flex: 1 1 auto;
	width: 100%;
}

body.pp-site-archive .ppt-card-meta {
	margin: 0 0 8px;
	font: 700 12px/1.3 system-ui, sans-serif;
	letter-spacing: .06em;
	text-transform: uppercase;
	color: #2d6f8c;
}

body.pp-site-archive article.ast-article-post .entry-content {
	flex: 1;
	display: flex;
	flex-direction: column;
}

/* 404: short page. */
body.error404 .error-404 .astra-advanced-hook-357, body.error404 .error-404 .ast-breadcrumbs-wrapper {
	display: none !important;
}

body.error404 .ppt-404 {
	max-width: 720px;
	margin: 0 auto;
	padding: 8px 0 56px;
	text-align: center;
}

body.error404 .ppt-404 .search-form {
	display: flex;
	gap: 10px;
	flex-wrap: wrap;
	justify-content: center;
}

body.error404 .ppt-404 .search-form label {
	flex: 1 1 260px;
	margin: 0;
}

body.error404 .ppt-404 .search-form .search-field {
	width: 100%;
	box-sizing: border-box;
}

body.error404 .ppt-404__links {
	list-style: none;
	margin: 28px 0 0 !important;
	padding: 0 !important;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}

body.error404 .ppt-404__links a {
	display: block;
	padding: 12px 10px;
	border: 1px solid #c7d7e1;
	border-radius: 3px;
	font-weight: 700;
	text-decoration: none;
	color: #11284b;
}

body.error404 .ppt-404__cta {
	margin: 28px 0 0 !important;
}

body.error404 #main.site-main {
	padding-top: 0 !important;
	padding-bottom: 20px !important;
}

@media (max-width: 600px) {
	body.error404 .ppt-404__links {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 767px) {
	body.error404 .ppt-hero__card {
		padding: 26px 20px 22px !important;
		min-height: 0 !important;
	}
	
	body.error404 .ppt-hero .ppt-h1 {
		font-size: 28px !important;
	}
}

/* Old posts: normalise the reading column to the current template. */
.ppt .ppt-post__article {
	max-width: 700px !important;
}

/* /estimate-scheduler/ (page 6721): the call/text copy sits above the calendar inside one row; flip it below. */
body.page-id-6721 .fl-node-egx2japh4t7n > .fl-row-content-wrap > .fl-row-content {
	display: flex;
	flex-direction: column;
}

body.page-id-6721 .fl-node-aymqr9egbf5s {
	order: 2;
	margin-top: 24px;
	text-align: center;
}

body.page-id-6721 .fl-node-xetcufmzo5i0 {
	order: 1;
}

body.page-id-6721 .fl-node-i6eu8jnd90hs {
	display: none;
}

body.page-id-6721 .fl-node-xetcufmzo5i0 iframe {
	width: 100% !important;
	max-width: 100% !important;
}

/* == end BLOG == */

/* == fix-20261004 CHROME == */

/* Review carousel: exactly 3 whole cards on desktop, 1 on mobile, arrows beside the cards (template pages). */
.ppt-wrap:has(> .ppt-carousel) {
	display: grid;
	grid-template-columns: 48px minmax(0, 1fr) 48px;
	column-gap: 16px;
	align-items: center;
}

.ppt-wrap:has(> .ppt-carousel) > :not(.ppt-carousel):not(.ppt-carousel__nav) {
	grid-column: 1/-1;
}

.ppt-wrap:has(> .ppt-carousel) > .ppt-carousel {
	grid-column: 2;
	grid-row: 3;
	padding: 4px 0 8px;
	scroll-padding: 0;
}

.ppt-wrap:has(> .ppt-carousel) > .ppt-carousel__nav {
	display: contents;
}

.ppt-wrap:has(> .ppt-carousel) .ppt-arrow {
	grid-row: 3;
	align-self: center;
	margin: 0;
}

.ppt-wrap:has(> .ppt-carousel) .ppt-arrow[data-ppt-prev] {
	grid-column: 1;
	justify-self: start;
}

.ppt-wrap:has(> .ppt-carousel) .ppt-arrow[data-ppt-next] {
	grid-column: 3;
	justify-self: end;
}

.ppt-wrap:has(> .ppt-carousel) .ppt-more {
	grid-column: 2;
	grid-row: 4;
	justify-self: center;
	margin-top: 22px;
}

@media (max-width: 767px) {
	.ppt-wrap:has(> .ppt-carousel) {
		grid-template-columns: 40px minmax(0, 1fr) 40px;
		column-gap: 8px;
	}
	
	.ppt-carousel {
		grid-auto-columns: 100%;
	}
	
	.ppt-wrap:has(> .ppt-carousel) .ppt-arrow {
		width: 40px;
		height: 40px;
	}
}

/* == end CHROME == */

/* == fix-20261004 TOWNS == */

/* Hero photo focal points (desktop): per-photo object-position, plus an optional zoom from the left
   edge so the house clears the navy card. Values come from pp_town_hero_focus(). */
@media (min-width: 601px) {
	.ppt-hero__bg--focus {
		object-position: var(--ppt-pos, center 60%);
	}
	
	.ppt-hero__bg--focus[style*="--ppt-zoom"] {
		transform: scale(var(--ppt-zoom, 1));
		transform-origin: var(--ppt-origin, 0% 50%);
	}
}

@media (max-width: 600px) {
	.ppt-hero__bg--focus {
		object-position: var(--ppt-mpos, 70% center);
	}
	
	/* Long town titles (Chestnut Hill, Mt. Airy) wrap to four or five lines: size them down so the
	   Schedule button still clears the 53px bottom bar on a 390x664 first screen. */
	.ppt-hero .ppt-h1.ppt-h1--long {
		font-size: clamp(22px, 6.3vw, 26px);
		line-height: 1.12;
		margin-bottom: 10px;
	}
}

/* Local-history copy merged into the intro band (Philadelphia). */
.ppt-intro .ppt-h3 {
	margin: 28px 0 10px !important;
	color: var(--navy);
	font-family: var(--head) !important;
	font-size: 24px;
	line-height: 1.25;
	font-weight: 700;
}

/* Legacy "More about painting in [Town]" copy: one closed disclosure near the end of the page. */
.ppt-legacy-wrap {
	padding: 28px 0 !important;
	background: var(--tint);
}

.ppt-legacy > summary {
	list-style: none;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	min-height: 48px;
	padding: 12px 20px;
	border: 1px solid var(--navy);
	border-radius: 2px;
	background: #fff;
	font-weight: 700;
	font-size: 16px;
	color: var(--navy);
}

.ppt-legacy > summary::-webkit-details-marker {
	display: none;
}

.ppt-legacy > summary::after {
	content: "+";
	font-size: 20px;
	line-height: 1;
}

.ppt-legacy[open] > summary::after {
	content: "−";
}

.ppt-legacy[open] > summary {
	margin-bottom: 28px;
}

.ppt-legacy .ppt-prose h3 {
	margin: 26px 0 8px;
	font-family: var(--head) !important;
	font-size: 22px;
	color: var(--navy);
}

.ppt-legacy .ppt-prose h3:first-child {
	margin-top: 0;
}

/* Crew band: one line of supporting copy instead of a four-bullet checklist. */
.ppt-crew__line {
	color: #fff;
	font-size: 16px;
	line-height: 1.55;
	margin: 4px 0 0;
	padding-top: 18px;
	border-top: 1px solid rgba(111, 176, 199, .32);
}

/* Service Areas hub: dot map + chips for towns without their own photo. */
.ppt-map {
	margin: 40px auto 0;
	max-width: 760px;
}

.ppt-map svg {
	display: block;
	width: 100%;
	height: auto;
	background: var(--tint);
	border: 1px solid var(--line);
	border-radius: 4px;
}

.ppt-map a circle {
	transition: r .15s;
	cursor: pointer;
}

.ppt-map a:hover circle, .ppt-map a:focus circle {
	r: 9;
}

.ppt-map__label {
	font-family: var(--head);
	font-size: 22px;
	font-weight: 700;
	fill: #11284b;
	paint-order: stroke;
	stroke: var(--tint);
	stroke-width: 5px;
}

.ppt-map figcaption {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px 22px;
	margin-top: 14px;
	font-size: 15px;
	font-weight: 700;
	color: var(--navy);
}

.ppt-map figcaption i {
	display: inline-block;
	width: 12px;
	height: 12px;
	margin-right: 8px;
	border-radius: 50%;
	vertical-align: -1px;
}

@media (max-width: 600px) {
	.ppt-map__label {
		font-size: 28px;
	}
}

/* == end TOWNS == */

/* == fix-20261004 PROOF == */

/* Shared: cards, review grid, photo grids, lightbox. All scoped under .ppt (template pages only). */
.ppt .pp-rv__head {
	text-align: center;
	margin: 0 auto 32px;
}

.ppt .pp-rv__score {
	margin: 14px 0 0 !important;
	color: var(--navy);
	font-size: 18px;
	display: flex;
	gap: 10px;
	justify-content: center;
	align-items: baseline;
	flex-wrap: wrap;
}

.ppt .pp-rv__score strong {
	font-family: var(--head);
	font-size: 30px;
}

.ppt .pp-rv__score span {
	color: var(--gold);
	letter-spacing: .12em;
}

.ppt .pp-rv__score small {
	font-size: 15px;
	color: var(--body);
}

.ppt .pp-rv__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
	align-items: stretch;
}

.ppt .pp-rv__grid .ppt-review {
	scroll-snap-align: none;
	height: 100%;
}

.ppt .pp-rv__grid .ppt-review blockquote {
	font-size: 17px;
}

@media (max-width: 980px) {
	.ppt .pp-rv__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 640px) {
	.ppt .pp-rv__grid {
		grid-template-columns: 1fr;
	}
}

.ppt .pp-pgrid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 20px;
}

.ppt .pp-pgrid__item {
	display: block;
	aspect-ratio: 5/4;
	overflow: hidden;
	border-radius: 3px;
	background: var(--tint);
}

.ppt .pp-pgrid__item[hidden] {
	display: none;
}

.ppt .pp-pgrid__item img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform .25s ease;
}

.ppt .pp-pgrid__item:hover img {
	transform: scale(1.03);
}

.ppt .pp-pgrid__more {
	text-align: center;
	margin: 28px 0 0 !important;
}

@media (max-width: 700px) {
	.ppt .pp-pgrid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 8px;
		padding: 0 12px;
	}
}

.pp-lb {
	position: fixed;
	inset: 0;
	z-index: 99999;
	background: rgba(8, 18, 36, .93);
	display: flex;
	align-items: center;
	justify-content: center;
}

.pp-lb[hidden] {
	display: none;
}

.pp-lb img {
	max-width: 92vw;
	max-height: 88vh;
	object-fit: contain;
	box-shadow: 0 8px 40px rgba(0, 0, 0, .5);
}

.pp-lb button {
	position: absolute;
	width: 48px;
	height: 48px;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, .14);
	color: #fff;
	font-size: 30px;
	line-height: 1;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}

.pp-lb button:hover, .pp-lb button:focus-visible {
	background: rgba(255, 255, 255, .3);
}

.pp-lb__x {
	top: 14px;
	right: 14px;
}

.pp-lb__p {
	left: 12px;
	top: 50%;
	margin-top: -24px;
}

.pp-lb__n {
	right: 12px;
	top: 50%;
	margin-top: -24px;
}

html.pp-lb-open {
	overflow: hidden;
}

.ppt .pp-cards {
	display: grid;
	gap: 22px;
	margin: 28px auto 0;
}

.ppt .pp-cards--3 {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ppt .pp-card {
	background: #fff;
	border: 1px solid #dfe7ee;
	border-top: 3px solid var(--gold);
	border-radius: 4px;
	padding: 24px 24px 22px;
}

.ppt .pp-card h3 {
	margin: 0 0 8px !important;
	font-family: var(--head) !important;
	font-size: 21px !important;
	line-height: 1.3 !important;
	color: var(--navy) !important;
}

.ppt .pp-card p {
	margin: 0 !important;
	font-size: 16px !important;
	line-height: 1.6 !important;
	color: #2b3a4f !important;
}

@media (max-width: 860px) {
	.ppt .pp-cards--3 {
		grid-template-columns: 1fr;
	}
}

/* Testimonials (page 68): video testimonials as a clean 3-up grid with cropped 16:9 thumbnails. */
.ppt .pp-testi-video-shell {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 20px;
}

.ppt .pp-video-intro {
	text-align: center;
	margin-bottom: 28px;
}

.ppt .pp-video-intro span {
	display: block;
	color: var(--gold);
	font-size: 13px;
	font-weight: 900;
	letter-spacing: .1em;
	text-transform: uppercase;
}

.ppt .pp-video-intro h2 {
	margin: 6px 0 8px;
	color: var(--navy);
	font-family: var(--head);
	font-size: 34px;
	line-height: 1.2;
}

.ppt .pp-video-intro p {
	margin: 0;
	color: var(--body);
}

.ppt .pp-video-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 24px;
}

.ppt .pp-video-stack {
	display: contents;
}

.ppt .pp-video-card {
	display: flex;
	flex-direction: column;
	width: 100%;
	padding: 0;
	border: 1px solid #dfe7ee;
	border-radius: 4px;
	background: #fff;
	cursor: pointer;
	overflow: hidden;
	text-align: left;
	font: inherit;
	box-shadow: 0 1px 3px rgba(17, 40, 75, .12);
}

.ppt .pp-video-thumb {
	position: relative;
	display: block;
	aspect-ratio: 16/9;
	overflow: hidden;
	background: var(--navy);
}

.ppt .pp-video-thumb img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ppt .pp-video-thumb i {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 56px;
	height: 56px;
	margin: -28px 0 0 -28px;
	border-radius: 50%;
	background: rgba(17, 40, 75, .85);
}

.ppt .pp-video-thumb i::before {
	content: "";
	position: absolute;
	top: 50%;
	left: 56%;
	margin: -9px 0 0 -7px;
	border-style: solid;
	border-width: 9px 0 9px 15px;
	border-color: transparent transparent transparent #fff;
}

.ppt .pp-video-card:hover .pp-video-thumb i {
	background: var(--navy);
}

.ppt .pp-video-copy {
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: 14px 18px 18px;
}

.ppt .pp-video-copy small {
	color: var(--sky-ink);
	font-weight: 700;
	font-size: 12px;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ppt .pp-video-copy strong {
	color: var(--navy);
	font-family: var(--head);
	font-size: 19px;
}

.ppt .pp-video-copy em {
	font-style: normal;
	font-size: 14px;
	color: var(--body);
}

.ppt .pp-video-player {
	position: relative;
	aspect-ratio: 16/9;
	background: #000;
	border-radius: 4px;
	overflow: hidden;
}

.ppt .pp-video-player iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

@media (max-width: 860px) {
	.ppt .pp-video-grid {
		grid-template-columns: 1fr;
	}
}

body.page-id-68 .pp-testi-intro {
	max-width: 820px;
	margin: 0 auto;
	padding: 0 20px;
	font-size: 17px;
	line-height: 1.7;
	color: #2b3a4f;
}

body.page-id-68 .pp-testi-proof-shell, body.page-id-68 .pp-rv {
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 20px;
}

body.page-id-68 .pp-testi-cta, body.page-id-68 .pp-testi-hero-inner {
	display: none;
}

/* Galleries (157 interior, 144 exterior) */
.ppt .pp-gal {
	padding: 8px 0 0;
}

.ppt .pp-gal-blurb {
	max-width: 820px;
	margin: 48px auto 0;
	padding: 0 20px;
	font-size: 17px;
	line-height: 1.7;
	color: #2b3a4f;
}

.ppt .pp-gal-blurb p {
	margin: 0 0 1em;
}

.ppt .pp-gal > .ppt-h2 {
	margin: 44px 0 32px;
}

.ppt .pp-feature {
	max-width: 880px;
	margin: 0 auto 8px;
	padding: 0 20px;
}

.ppt .pp-feature video, .ppt .pp-more-videos video {
	display: block;
	width: 100%;
	aspect-ratio: 16/9;
	background: #000;
	border-radius: 3px;
	object-fit: cover;
}

.ppt .pp-pairs {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 22px;
	max-width: 1180px;
	margin: 0 auto;
	padding: 0 20px;
}

.ppt .pp-pair {
	margin: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 6px;
}

.ppt .pp-pair a {
	position: relative;
	display: block;
	aspect-ratio: 3/4;
	overflow: hidden;
	border-radius: 3px;
	background: var(--tint);
}

.ppt .pp-pair img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ppt .pp-pair a span {
	position: absolute;
	left: 8px;
	bottom: 8px;
	padding: 3px 10px;
	border-radius: 2px;
	background: rgba(17, 40, 75, .88);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}

.ppt .pp-more-videos {
	max-width: 1180px;
	margin: 40px auto 0;
	padding: 0 20px;
}

.ppt .pp-more-videos > summary {
	cursor: pointer;
	display: inline-flex;
	min-height: 48px;
	align-items: center;
	padding: 12px 22px;
	border: 1px solid var(--navy);
	border-radius: 2px;
	font-weight: 700;
	color: var(--navy);
}

.ppt .pp-more-videos__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 18px;
	margin-top: 22px;
}

.ppt .pp-more-videos__grid figure {
	margin: 0;
}

@media (max-width: 760px) {
	.ppt .pp-pairs {
		grid-template-columns: 1fr;
		gap: 18px;
		padding: 0 12px;
	}
	
	.ppt .pp-more-videos__grid {
		grid-template-columns: 1fr;
	}
}

/* Project pages */
.ppt-project .pp-facts {
	background: var(--tint);
	border-bottom: 1px solid #dfe7ee;
}

.ppt-project .pp-facts__row {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 12px 44px;
	padding-top: 22px;
	padding-bottom: 22px;
}

.ppt-project .pp-facts__row div {
	display: flex;
	flex-direction: column;
	text-align: center;
	min-width: 110px;
}

.ppt-project .pp-facts__row span {
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .1em;
	text-transform: uppercase;
	color: var(--sky-ink);
}

.ppt-project .pp-facts__row strong {
	font-family: var(--head);
	font-size: 18px;
	color: var(--navy);
}

.ppt-project .pp-pgrid {
	padding: 0;
	margin-top: 28px;
}

.ppt-project .pp-pgrid__item {
	aspect-ratio: 3/4;
}

.ppt-project .ppt-wrap-original .fl-rich-text :is(h2, h3) {
	color: var(--navy);
}

/* Our Story (66) */
body.page-id-66 .pp-pullquote {
	max-width: 820px;
	margin: 56px auto 0;
	padding: 6px 20px 6px 28px;
	border-left: 4px solid var(--gold);
}

body.page-id-66 .pp-pullquote__kicker {
	margin: 0 0 6px !important;
	color: var(--gold);
	font-size: 13px;
	font-weight: 900;
	letter-spacing: .1em;
	text-transform: uppercase;
}

body.page-id-66 .pp-pullquote__text {
	margin: 0 !important;
	font-family: var(--head, Georgia, serif);
	font-size: 28px;
	line-height: 1.35;
	color: var(--navy);
}

body.page-id-66 .pp-story-split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 44px;
	align-items: center;
	max-width: 1100px;
	margin: 0 auto;
	padding: 56px 20px;
}

body.page-id-66 .pp-story-split figure {
	display: block !important;
	margin: 0;
}

body.page-id-66 .pp-story-split figure img {
	display: block;
	width: 100%;
	height: auto;
	max-height: 460px;
	object-fit: cover;
	object-position: center 20%;
	border-radius: 4px;
	background: transparent;
}

body.page-id-66 .pp-story-split-reverse figure img {
	max-width: 360px;
	margin: 0 auto;
	aspect-ratio: 4/5;
}

@media (max-width: 760px) {
	body.page-id-66 .pp-story-split {
		grid-template-columns: 1fr;
		gap: 20px;
		padding: 36px 20px;
	}
	
	body.page-id-66 .pp-story-split-reverse figure {
		order: -1;
	}
	
	body.page-id-66 .pp-pullquote__text {
		font-size: 23px;
	}
}

/* What Makes Us Different (302): two remaining cards laid out as a grid. */
body.page-id-302 .pp-diff-benefit-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 22px;
	margin-top: 28px;
}

body.page-id-302 .pp-diff-benefit-grid article {
	background: #fff;
	border: 1px solid #dfe7ee;
	border-top: 3px solid var(--gold);
	border-radius: 4px;
	padding: 24px;
}

body.page-id-302 .pp-diff-benefit-grid article span {
	display: block;
	color: var(--gold);
	font-weight: 900;
	letter-spacing: .1em;
}

body.page-id-302 .pp-diff-benefit-grid article h3 {
	margin: 4px 0 10px;
	font-family: var(--head, Georgia, serif);
	font-size: 21px;
	color: var(--navy);
}

body.page-id-302 .pp-diff-benefit-grid article div {
	font-size: 16px;
	line-height: 1.6;
	color: #2b3a4f;
}

@media (max-width: 760px) {
	body.page-id-302 .pp-diff-benefit-grid {
		grid-template-columns: 1fr;
	}
}

/* FAQ (1567): one bordered list, no alternating bands. */
body.page-id-1567 .fl-accordion {
	max-width: 860px;
	margin: 0 auto;
	border: 1px solid #dfe7ee;
	border-radius: 4px;
	background: #fff;
	overflow: hidden;
}

body.page-id-1567 .fl-accordion-item {
	background: #fff !important;
	border: 0 !important;
	border-bottom: 1px solid #dfe7ee !important;
	margin: 0 !important;
	border-radius: 0 !important;
	box-shadow: none !important;
}

body.page-id-1567 .fl-accordion-item:last-child {
	border-bottom: 0 !important;
}

body.page-id-1567 .fl-accordion-button {
	padding: 4px 8px;
}

body.page-id-1567 .fl-accordion-button-label {
	font-family: var(--head, Georgia, serif);
	font-size: 19px;
	color: #11284b;
}

body.page-id-1567 .fl-accordion-content {
	padding: 0 24px 22px !important;
	font-size: 17px !important;
	line-height: 1.65 !important;
	color: #2b3a4f !important;
}

body.page-id-1567 .fl-accordion-content p {
	font-size: 17px !important;
	color: #2b3a4f !important;
}

body.page-id-1567 .fl-row:has(.fl-accordion) .fl-row-content-wrap, body.page-id-1567 .fl-row:has(.fl-accordion) {
	background: transparent !important;
}

/* Careers (2176) */
.ppt .pp-careers-band {
	background: var(--tint);
	padding: 72px 0;
}

.ppt .pp-careers-band__in {
	max-width: 1100px;
	margin: 0 auto;
	padding: 0 20px;
	text-align: center;
}

.ppt .pp-careers-band .pp-card {
	text-align: left;
}

.ppt .pp-careers-band__k2 {
	margin-top: 64px !important;
}

body.page-id-2176 .fl-video .wp-video {
	width: 100% !important;
	max-width: 760px;
	margin: 0 auto;
}

body.page-id-2176 .fl-video video {
	width: 100% !important;
	height: auto;
	aspect-ratio: 16/9;
	border-radius: 4px;
}

body.page-id-2176 .fl-row:has(.pp-careers-challenge) > .fl-row-content-wrap {
	background: var(--navy) !important;
}

body.page-id-2176 .fl-row:has(.pp-careers-challenge) .fl-col-content, body.page-id-2176 .fl-row:has(.pp-careers-challenge) .fl-module-content {
	background: transparent !important;
}

body.page-id-2176 .fl-row:has(.pp-careers-challenge) .fl-heading, body.page-id-2176 .fl-row:has(.pp-careers-challenge) .fl-heading-text {
	color: #fff !important;
}

body.page-id-2176 .gform_wrapper {
	max-width: 720px;
	margin: 0 auto;
}

body.page-id-2176 .gform_wrapper .gfield_label, body.page-id-2176 .gform_wrapper legend {
	color: var(--navy, #11284b);
	font-weight: 700;
	font-size: 15px;
	margin-bottom: 6px;
}

body.page-id-2176 .gform_wrapper .gfield_required {
	color: #8a5a00;
	font-weight: 600;
	font-size: 13px;
}

body.page-id-2176 .gform_wrapper :is(input[type=text], input[type=email], input[type=tel], select, textarea) {
	width: 100% !important;
	min-height: 48px;
	padding: 10px 14px;
	border: 1px solid #c7d7e1;
	border-radius: 2px;
	background: #fff;
	font-size: 16px;
	color: #11284b;
	box-shadow: none;
}

body.page-id-2176 .gform_wrapper :is(input, select, textarea):focus {
	outline: 2px solid #2d6f8c;
	outline-offset: 1px;
	border-color: #2d6f8c;
}

body.page-id-2176 .gform_wrapper input[type=file] {
	width: 100%;
	padding: 12px;
	border: 1px dashed #9db4c3;
	border-radius: 2px;
	background: #f4f7fa;
	font-size: 15px;
}

body.page-id-2176 .gform_wrapper .gform-field-label--type-sub {
	font-size: 13px;
	font-weight: 400;
	color: #455366;
}

body.page-id-2176 .gform_wrapper :is(.gform_button, input[type=submit]) {
	min-height: 48px;
	padding: 12px 28px;
	border: 1px solid #6fb0c7;
	border-radius: 2px;
	background: #6fb0c7;
	color: #11284b;
	font-weight: 700;
	font-size: 16px;
	cursor: pointer;
}

body.page-id-2176 .gform_wrapper :is(.gform_button, input[type=submit]):hover {
	background: #5c9db4;
}

/* Thank-you (346): no second scheduling ask in the hero. */
body.page-id-346 .ppt-hero .ppt-actions {
	display: none;
}

.ppt .pp-ty {
	padding: 64px 0 24px;
}

.ppt .pp-ty__in {
	max-width: 860px;
	margin: 0 auto 56px;
	padding: 0 20px;
}

.ppt .pp-ty__in--wide {
	max-width: 1100px;
}

.ppt .pp-ty .ppt-kicker {
	text-align: center;
}

.ppt .pp-ty__steps {
	list-style: none;
	counter-reset: ty;
	margin: 32px 0 0 !important;
	padding: 0 !important;
	display: grid;
	gap: 14px;
}

.ppt .pp-ty__steps li {
	counter-increment: ty;
	position: relative;
	padding: 18px 20px 18px 72px;
	border: 1px solid #dfe7ee;
	border-radius: 4px;
	background: #fff;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.ppt .pp-ty__steps li::before {
	content: counter(ty);
	position: absolute;
	left: 20px;
	top: 50%;
	margin-top: -19px;
	width: 38px;
	height: 38px;
	border-radius: 50%;
	background: var(--navy);
	color: #fff;
	font-family: var(--head);
	font-weight: 700;
	display: flex;
	align-items: center;
	justify-content: center;
}

.ppt .pp-ty__steps strong {
	color: var(--navy);
	font-family: var(--head);
	font-size: 19px;
}

.ppt .pp-ty__steps span {
	color: #2b3a4f;
	font-size: 16px;
}

.ppt .pp-ty__call {
	text-align: center;
	margin: 24px 0 0 !important;
	font-size: 17px;
}

.ppt .pp-ty__photos {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 14px;
	margin-top: 28px;
}

.ppt .pp-ty__photos figure {
	margin: 0;
	aspect-ratio: 4/3;
	overflow: hidden;
	border-radius: 3px;
}

.ppt .pp-ty__photos img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ppt .pp-ty .pp-rv__grid {
	margin-top: 28px;
}

.ppt .pp-ty__more {
	text-align: center;
	margin: 24px 0 0 !important;
}

@media (max-width: 760px) {
	.ppt .pp-ty__photos {
		grid-template-columns: 1fr;
	}
	
	.ppt .pp-ty__steps li {
		padding-left: 64px;
	}
}

body.page-id-68 .fl-row .fl-col {
	width: 100% !important;
	max-width: 100% !important;
	float: none;
}

body.page-id-1567 .fl-accordion .ppt-band {
	background: #fff !important;
	padding: 0 !important;
	margin: 0 !important;
	border-bottom: 1px solid #dfe7ee;
}

body.page-id-1567 .fl-accordion .ppt-band:last-child {
	border-bottom: 0;
}

body.page-id-1567 .fl-accordion .ppt-band > .ppt-wrap {
	max-width: none;
	padding: 0;
}

body.page-id-1567 .fl-accordion-item {
	padding: 10px 14px !important;
}

body.page-id-1567 .fl-accordion-button-icon {
	color: var(--navy, #11284b);
}

/* centered photo grids: last row centers instead of leaving a hole */
.ppt .pp-pgrid {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
}

.ppt .pp-pgrid__item {
	flex: 0 0 calc(( 100% - 28px ) / 3);
}

.ppt .pp-pgrid__item[hidden] {
	display: none;
}

@media (max-width: 700px) {
	.ppt .pp-pgrid__item {
		flex-basis: calc(( 100% - 8px ) / 2);
	}
}

.ppt-project .ppt-wrap-original .fl-rich-text :is(h2, h3) {
	margin: 1.5em 0 .5em;
}

.ppt-project .ppt-wrap-original .fl-rich-text > :first-child {
	margin-top: 0;
}

.ppt-project .ppt-wrap-original .fl-rich-text p {
	margin: 0 0 1em;
}

/* == end PROOF == */

/* == fix-20261010 FEEDBACK == */

/* Commercial hero: the PAINT car sits in the bottom-right of the photo; the default center 60% crop hid it. */
body.page-id-4464 .ppt-hero__bg {
	object-position: 50% 80%;
}

@media (max-width: 600px) {
	body.page-id-4464 .ppt-hero__bg {
		object-position: 62% 80%;
	}
}

/* Interior hero (painter on wainscoting): keep him and his shirt logo left of the navy card. */

/* 10-10 James's picks (Winners crew frames): top-anchored so heads stay in the band. */
body.page-id-157 .ppt-hero__bg, body.page-id-4461 .ppt-hero__bg, body.page-id-2054 .ppt-hero__bg {
	object-position: 50% 8%;
}

body.page-id-66 .ppt-hero__bg {
	object-position: 50% 100%;
}

/* car + crew sit at the bottom of the frame */
body.page-id-102 .ppt-hero__bg {
	object-position: 50% 45%;
}

/* 10-10: finished living room (2021 IMG_1323), sofa + stairs right of the card */

/* == 10-10 page-photo audit: new crops put the subject right of the card == */
body.page-id-4464 .ppt-hero__bg {
	object-position: 50% 50% !important;
}
