/**
 * Pine Tree Day Nursery — interaction states and bespoke components.
 * Design tokens live in theme.json; this file carries only what it cannot express.
 */

/* ---------- Focus ---------- */

a:focus-visible,
button:focus-visible {
	outline: 3px solid var(--wp--preset--color--blue);
	outline-offset: 3px;
	border-radius: 8px;
}

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

.wp-block-button__link {
	box-shadow: 0 4px 0 var(--wp--preset--color--forest-dark);
	transition: background-color 0.15s ease;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	/* Every design file sizes content buttons the same way. */
	height: 58px;
	padding: 0 30px;
	font-size: 18px;
	line-height: 1;
}

/* One class deep on purpose: the hero, final CTA and sticky bar each set
   their own padding at (0,2,0), and this must not outrank them. */
.is-style-outline > .wp-block-button__link { padding: 0 26px; }

.pt-btn--sm .wp-block-button__link {
	font-size: 15px;
	height: 46px;
	padding: 0 16px;
	box-shadow: 0 3px 0 var(--wp--preset--color--forest-dark);
}

/* Outline variant used for secondary CTAs */
.is-style-outline .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link {
	background-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--forest);
	border: 2px solid var(--wp--preset--color--forest);
	box-shadow: none;
}

.is-style-outline .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--forest);
}

/* ---------- Top bar ---------- */

.pt-topbar {
	gap: 8px 24px;
	row-gap: 8px;
}

.pt-topbar p {
	margin: 0;
	color: var(--wp--preset--color--sand);
	letter-spacing: 0.02em;
}

.pt-topbar__dot {
	opacity: 0.45;
}

@media (max-width: 781px) {
	.pt-topbar {
		display: none;
	}
}

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

.pt-header-wrap {
	position: sticky;
	top: 0;
	z-index: 50;
}

.pt-header {
	gap: 16px;
}

.pt-logo img,
.pt-logo .custom-logo {
	height: clamp(58px, 7vw, 92px);
	width: auto;
	display: block;
}

.pt-header__phone {
	margin: 0;
}

.pt-header__phone a {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: 19px;
	color: var(--wp--preset--color--forest);
	white-space: nowrap;
	text-decoration: none;
}

.pt-header__phone a:hover {
	color: var(--wp--preset--color--forest-light);
	text-decoration: none;
}

/* Phone number is a tap target on mobile, so keep it, but drop at very small widths */
@media (max-width: 600px) {
	.pt-header__phone {
		display: none;
	}
}

/* ---------- Navigation ---------- */

.pt-nav .wp-block-navigation-item__content {
	color: var(--wp--preset--color--ink);
	padding: 10px 0;
	transition: color 0.15s ease;
}

.pt-nav .wp-block-navigation-item__content:hover,
.pt-nav .current-menu-item > .wp-block-navigation-item__content {
	color: var(--wp--preset--color--forest);
}

/* Active page underline */
.pt-nav .current-menu-item > .wp-block-navigation-item__content {
	position: relative;
}

.pt-nav .current-menu-item > .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 2px;
	height: 3px;
	border-radius: 2px;
	background: var(--wp--preset--color--forest);
}

/* Submenu panel */
.pt-nav .wp-block-navigation__submenu-container {
	background: var(--wp--preset--color--white);
	border: 2px solid var(--wp--preset--color--sand);
	border-radius: 18px;
	box-shadow: 0 14px 32px rgba(46, 42, 38, 0.14);
	padding: 8px;
	min-width: 250px;
}

.pt-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
	padding: 11px 14px;
	border-radius: 12px;
	white-space: nowrap;
	display: flex;
	align-items: center;
	gap: 10px;
}

.pt-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
	background: var(--wp--preset--color--sand-light);
	color: var(--wp--preset--color--forest);
}

/* Colored program dots */
.pt-dot > .wp-block-navigation-item__content::before {
	content: "";
	width: 10px;
	height: 10px;
	border-radius: 3px;
	flex: 0 0 auto;
	display: block;
}

.pt-dot--red > .wp-block-navigation-item__content::before { background: var(--wp--preset--color--red); }
.pt-dot--blue > .wp-block-navigation-item__content::before { background: var(--wp--preset--color--blue); }
.pt-dot--yellow > .wp-block-navigation-item__content::before { background: var(--wp--preset--color--yellow); }
.pt-dot--orange > .wp-block-navigation-item__content::before { background: var(--wp--preset--color--orange); }

/* Mobile overlay */
.pt-nav .wp-block-navigation__responsive-container-open,
.pt-nav .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--forest);
}

.pt-nav .wp-block-navigation__responsive-container-open {
	width: 48px;
	height: 48px;
	border-radius: 14px;
	border: 2px solid var(--wp--preset--color--sand);
	background: var(--wp--preset--color--white);
	justify-content: center;
}

.pt-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: 24px var(--wp--custom--gutter);
}

.pt-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	min-height: 54px;
	font-size: 18px;
	border-bottom: 1px solid var(--wp--preset--color--sand-border);
	width: 100%;
}

.pt-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	border: 0;
	box-shadow: none;
	padding-left: 12px;
}

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

.pt-footer__grid {
	gap: 36px;
}

.pt-footer__col {
	padding-top: 14px;
}

.pt-footer__heading {
	font-size: 19px !important;
	font-weight: 700;
	margin: 0 0 12px;
	letter-spacing: 0;
}

.pt-footer__blurb {
	max-width: 36ch;
	line-height: 1.6;
	margin: 0;
}

.pt-footer__hours {
	line-height: 1.75;
}

.pt-footer__phone {
	margin: 0;
}

.pt-footer__phone a {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: 22px;
	color: var(--wp--preset--color--forest);
	display: block;
	text-decoration: none;
}

.pt-footer__phone a:hover {
	color: var(--wp--preset--color--forest-light);
	text-decoration: none;
}

/* Footer nav and explore links are not underlined in the design */
.pt-footer__nav .wp-block-navigation-item__content,
.pt-footer__nav .wp-block-navigation-item__content:hover {
	text-decoration: none;
}

.pt-footer__nav .wp-block-navigation-item__content {
	color: var(--wp--preset--color--brown);
	font-size: var(--wp--preset--font-size--small);
}

.pt-footer__nav .wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--forest);
}

.pt-footer__nav {
	gap: 9px;
}

.pt-social .wp-social-link {
	width: 44px;
	height: 44px;
	border-radius: 50%;
}

.pt-social .wp-social-link:hover {
	background-color: var(--wp--preset--color--forest-light) !important;
	transform: none;
}

.pt-footer__bottom p {
	margin: 0;
}

/* ---------- Shared section helpers ---------- */

.pt-card {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--medium);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--card);
}

.pt-photo {
	border-radius: var(--wp--custom--radius--large);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--photo);
}

.pt-pill {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--brown);
	font-weight: 700;
	font-size: 14px;
	line-height: 1;
	padding: 8px 16px;
	border-radius: var(--wp--custom--radius--pill);
}

/* =========================================================
   HOMEPAGE SECTIONS
   ========================================================= */

.pt-main > .wp-block-group > section,
.pt-main section.wp-block-group {
	margin-block: 0;
}

.pt-measure { max-width: 58ch; }
.pt-lede { max-width: 56ch; line-height: 1.6; }
.pt-section__intro { line-height: 1.6; margin-bottom: 40px; }

/* ---------- Hero ---------- */

.pt-pill--tree {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--brown);
	font-weight: 700;
	font-size: 14px;
	line-height: 1;
	padding: 8px 16px;
	border-radius: var(--wp--custom--radius--pill);
	margin: 0 0 20px;
}

/* Design draws a pine tree as an 11x12 triangle plus a 3x3 trunk beneath it.
   One clip-path covering an 11x15 box gives the same silhouette. */
.pt-pill--tree::before {
	content: "";
	width: 11px;
	height: 15px;
	background: var(--wp--preset--color--forest);
	clip-path: polygon(
		50% 0,
		100% 80%,
		63.6% 80%,
		63.6% 100%,
		36.4% 100%,
		36.4% 80%,
		0 80%
	);
	flex: 0 0 auto;
}

/* ---------- Photos ---------- */

.pt-photo img {
	border-radius: var(--wp--custom--radius--large);
	box-shadow: var(--wp--custom--shadow--photo);
	width: 100%;
	display: block;
	object-fit: cover;
}

.pt-photo--hero img { aspect-ratio: 4 / 3.4; }
.pt-photo--square img { aspect-ratio: 1 / 1; box-shadow: none; }
.pt-photo--carr img { aspect-ratio: 4 / 3.4; object-position: 50% 40%; box-shadow: none; }
/* The Programs hero is a supplied collage at 16:9. Cropping it to the design's
   4/3.4 would cut the outer panels off, so this one slot follows the photo. */
.pt-photo--16x9 img { aspect-ratio: 16 / 9; }

/* ---------- Trust bar ---------- */

.pt-trust__grid { gap: 18px 26px; }

.pt-trust__item {
	display: flex;
	/* Design centres the tick against the two-line label, not the first line. */
	align-items: center;
	gap: 10px;
	color: var(--wp--preset--color--forest);
	font-weight: 700;
	font-size: 17px;
	line-height: 1.25;
	margin: 0;
}

.pt-trust__item::before {
	content: "";
	width: 16px;
	height: 9px;
	border-left: 3.5px solid var(--wp--preset--color--forest);
	border-bottom: 3.5px solid var(--wp--preset--color--forest);
	border-radius: 1px;
	transform: rotate(-45deg);
	flex: 0 0 auto;
}

.pt-trust__text {
	display: block;
}

.pt-trust__note {
	display: block;
	font-weight: 500;
	font-size: 14px;
	color: var(--wp--preset--color--body);
	margin-top: 2px;
}

/* ---------- Bus divider ---------- */

/* Design: the bus sits in its own white band below the welcome section,
   with 8px above and clamp(30px,4vw,48px) below. */
.pt-divider-band {
	padding-top: 8px;
	padding-bottom: clamp(30px, 4vw, 48px);
}

.pt-divider {
	gap: 16px;
}

.pt-divider::before,
.pt-divider::after {
	content: "";
	height: 3px;
	flex: 1 1 0;
	max-width: 200px;
	background: var(--wp--preset--color--sand);
	border-radius: var(--wp--custom--radius--pill);
}

.pt-divider__bus { margin: 0; }
.pt-divider__bus img { height: 130px; width: auto; display: block; }

/* ---------- A B C blocks ---------- */

.pt-abc { gap: 10px; margin-bottom: 20px; }

.pt-abc p {
	width: 48px;
	height: 48px;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: 26px;
	line-height: 1;
	margin: 0;
	box-shadow: inset 0 -7px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}

.pt-abc__a { background: var(--wp--preset--color--red); color: #FFF7EA; }
.pt-abc__b { background: var(--wp--preset--color--blue); color: #FFF7EA; }
.pt-abc__c { background: var(--wp--preset--color--yellow); color: #3B2A12; }

/* ---------- Program cards ---------- */

.pt-cards { gap: 22px; align-items: stretch; }

.pt-card {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--medium);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--card);
	display: flex;
	flex-direction: column;
}

.pt-card__img { margin: 0; }

.pt-card__img img {
	aspect-ratio: 4 / 3;
	width: 100%;
	object-fit: cover;
	display: block;
	border-radius: 0;
}

/* WordPress flow layout adds a block-gap margin between group children.
   These cards manage their own rhythm with flex gap, so clear it. */
.pt-card > *,
.pt-card__body > *,
.pt-why__card > *,
.pt-review > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

.pt-card__body {
	padding: 22px;
	display: flex;
	flex-direction: column;
	gap: 8px;
	flex: 1 1 auto;
}

.pt-card__body h3 {
	font-size: 24px;
	font-weight: 700;
	margin: 0;
	line-height: 1.15;
	letter-spacing: 0;
}

.pt-card__body p {
	margin: 0;
	font-size: 16px;
	font-weight: 400;
	line-height: 1.55;
}

/* Description paragraph grows so every card's link sits on the same baseline. */
.pt-card__body > p:not(.pt-tag):not(.pt-card__link) {
	flex: 1 1 auto;
}

/* Matches .pt-card__body p on specificity and wins by order. */
.pt-card__body p.pt-tag {
	align-self: flex-start;
	font-weight: 700;
	font-size: 13px;
	line-height: 1.3;
	padding: 6px 14px;
	border-radius: var(--wp--custom--radius--pill);
	margin-bottom: 6px;
}

.pt-tag--red    { background: var(--wp--preset--color--red);    color: #FFFFFF; }
.pt-tag--blue   { background: var(--wp--preset--color--blue);   color: #FFFFFF; }
.pt-tag--yellow { background: var(--wp--preset--color--yellow); color: #3B2A12; }
.pt-tag--orange { background: var(--wp--preset--color--orange); color: #3B2208; }

.pt-card__link a {
	font-weight: 700;
	font-size: 16px;
	color: var(--wp--preset--color--forest);
	text-decoration: none;
}

.pt-card__link a:hover { text-decoration: underline; }

/* ---------- Why Pine Tree ---------- */

.pt-why__title { margin-bottom: 40px; }
.pt-why__grid { gap: 20px; align-items: stretch; }

.pt-why__card {
	background: var(--wp--preset--color--sand-light);
	border-radius: 22px;
	padding: 26px;
}

.pt-why__card h3 {
	font-size: 21px;
	font-weight: 700;
	margin: 0 0 8px !important;
	letter-spacing: 0;
}

.pt-why__card p { margin: 0; font-size: 16px; line-height: 1.55; }

/* ---------- Since 1963 ---------- */

.pt-year {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: clamp(56px, 7vw, 96px);
	line-height: 0.9;
	color: var(--wp--preset--color--forest);
	margin: 0 0 12px;
}

.pt-1963__title { font-size: clamp(26px, 3vw, 38px) !important; line-height: 1.12; }

/* ---------- Enrichment ---------- */

.pt-enrich__band { margin: 0; }

.pt-enrich__band img {
	aspect-ratio: 21 / 8;
	min-height: 280px;
	width: 100%;
	object-fit: cover;
	display: block;
	border-radius: 0;
	background: var(--wp--preset--color--sand);
}

.pt-chips { gap: 12px; }

.pt-chip {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	background: var(--wp--preset--color--cream);
	border: 2px solid var(--wp--preset--color--sand);
	color: var(--wp--preset--color--forest);
	font-weight: 700;
	font-size: 17px;
	line-height: 1;
	padding: 12px 20px 12px 16px;
	border-radius: var(--wp--custom--radius--pill);
	margin: 0;
}

.pt-chip::before {
	content: "";
	font-family: "Material Symbols Rounded";
	font-weight: 400;
	font-size: 21px;
	line-height: 1;
	color: var(--wp--preset--color--brown-light);
	-webkit-font-feature-settings: "liga";
	font-feature-settings: "liga";
	-webkit-font-smoothing: antialiased;
	white-space: nowrap;
	flex: 0 0 auto;
}

/* ---------- Reviews ---------- */

.pt-reviews__grid { gap: 22px; align-items: stretch; }

.pt-review {
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--medium);
	padding: 28px;
	display: flex;
	flex-direction: column;
	gap: 16px;
}

.pt-review p { margin: 0; font-size: 17px; line-height: 1.6; color: var(--wp--preset--color--ink); }
.pt-review > p:first-child { flex: 1 1 auto; }

.pt-review__by {
	font-weight: 700;
	font-size: 15px !important;
	color: #8B5E3C !important;
}

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

.pt-cta { text-align: center; }
.pt-cta__title { font-size: clamp(30px, 4vw, 50px) !important; line-height: 1.08; margin: 20px 0 0; }
.pt-cta__lede { max-width: 52ch; margin: 20px auto 0; }
.pt-cta .wp-block-buttons { margin-top: 20px; justify-content: center; }
.pt-cta__photo { margin-top: 32px; }
.pt-cta__photo img { border-radius: 28px; width: 100%; display: block; }

/* =========================================================
   EXPLICIT COLOURS

   GoDaddy's Managed WordPress injects a "design tokens" stylesheet that
   auto-assigns contrast colours inside any element with a background colour.
   It outranks inheritance, which turned the cream cards inside the green
   section white-on-cream. Every component below therefore states its own
   colour rather than relying on what it inherits.
   ========================================================= */

.pt-abc__a, .pt-abc__b { color: #FFF7EA !important; }
.pt-abc__c { color: #3B2A12 !important; }

.pt-trust__item { color: var(--wp--preset--color--forest) !important; }
.pt-trust__note { color: var(--wp--preset--color--body) !important; }

.pt-pill--tree { color: var(--wp--preset--color--brown) !important; }
.pt-section__intro { color: var(--wp--preset--color--brown) !important; }
.pt-year { color: var(--wp--preset--color--forest) !important; }

.pt-card__body h3 { color: var(--wp--preset--color--forest) !important; }
.pt-card__body p { color: var(--wp--preset--color--body) !important; }
.pt-card__body p.pt-tag--red,
.pt-card__body p.pt-tag--blue { color: #FFFFFF !important; }
.pt-card__body p.pt-tag--yellow { color: #3B2A12 !important; }
.pt-card__body p.pt-tag--orange { color: #3B2208 !important; }
.pt-card__link a { color: var(--wp--preset--color--forest) !important; }

.pt-why__card h3 { color: var(--wp--preset--color--forest) !important; }
.pt-why__card p { color: var(--wp--preset--color--body) !important; }

.pt-review p { color: var(--wp--preset--color--ink) !important; font-weight: 400 !important; }
.pt-review p.pt-review__by { color: #8B5E3C !important; font-weight: 700 !important; }

.pt-chip { color: var(--wp--preset--color--forest) !important; }
.pt-chip::before { color: var(--wp--preset--color--brown-light) !important; }

.pt-footer__heading { color: var(--wp--preset--color--forest) !important; }
.pt-footer__blurb, .pt-footer__hours { color: var(--wp--preset--color--brown) !important; }
.pt-footer__nav .wp-block-navigation-item__content { color: var(--wp--preset--color--brown) !important; }
.pt-footer__nav .wp-block-navigation-item__content:hover { color: var(--wp--preset--color--forest) !important; }

/* Full-bleed enrichment band */
.pt-enrich__band.alignfull,
.pt-enrich__band.alignfull img {
	width: 100%;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
	border-radius: 0;
}

/* =========================================================
   CORRECTIONS AGAINST THE DESIGN SOURCE
   ========================================================= */

/* Footer logo: design is a 150px square card, not a column-width rectangle. */
.pt-footer__logo {
	width: -moz-max-content;
	width: max-content;
	max-width: 100%;
	margin-left: 0;
	margin-right: 0;
}

.pt-footer__logo img {
	width: 150px;
	height: auto;
	display: block;
	border-radius: 8px;
}

/* Template parts pick up a 24px block-gap margin, which showed as a pale
   band of page background between the last section and the footer. */
.wp-site-blocks > .wp-block-template-part {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* Body copy is weight 400 in the design; the variable font was rendering heavier. */
.pt-lede,
.pt-measure,
.pt-cta__lede,
.pt-section__intro,
.pt-card__body p:not(.pt-tag):not(.pt-card__link),
.pt-why__card p,
.pt-review p:not(.pt-review__by) {
	font-weight: 400 !important;
}

/* ---------- Sticky contact bar (design: sticky bottom, all pages) ---------- */

.pt-stickybar {
	position: sticky;
	bottom: 0;
	z-index: 60;
	background: var(--wp--preset--color--white);
	border-top: 3px solid var(--wp--preset--color--sand);
	padding: 10px 16px;
	box-shadow: 0 -6px 18px rgba(46, 42, 38, 0.1);
	margin: 0;
}

.pt-stickybar__buttons {
	gap: 10px;
	width: 100%;
	justify-content: center;
}

.pt-stickybar__btn {
	flex: 1 1 0;
	max-width: 280px;
}

.pt-stickybar__btn .wp-block-button__link {
	height: auto;
	width: 100%;
	text-align: center;
	font-size: 16px;
	/* The sticky bar is sized by its padding and the font's normal line box
	   (47.5px / 51.5px), not the 58px content-button line-height:1. */
	line-height: normal;
	padding: 13px 18px;
	box-shadow: none;
}

/* ---------- Footer detail corrections ---------- */

/* Design: address block has 10px beneath it before the phone number. */
.pt-footer__col > p:not(.pt-footer__phone):not(.pt-footer__hours) {
	margin-bottom: 10px;
}

.pt-footer__phone {
	margin-top: 0;
}

/* Design: 18px above the footer's Request a Tour button. */
.pt-footer__col .wp-block-buttons {
	margin-top: 18px;
}

/* Social icons: centre the glyph inside the 44px circle. */
.pt-social .wp-social-link {
	width: 44px;
	height: 44px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
}

.pt-social .wp-social-link a {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	line-height: 0;
}

.pt-social .wp-social-link svg {
	width: 22px;
	height: 22px;
	display: block;
}

/* =========================================================
   DESIGN PARITY PASS
   Values taken directly from the .dc.html design source.
   ========================================================= */

/* A/B/C blocks: 48px/26px in Programs, 44px/24px in Why and Reviews. */
.pt-why .pt-abc p,
.pt-reviews .pt-abc p {
	width: 44px;
	height: 44px;
	border-radius: 11px;
	font-size: 24px;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}

.pt-why .pt-abc__c,
.pt-reviews .pt-abc__c {
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.16), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}

.pt-abc__c {
	box-shadow: inset 0 -7px 0 rgba(0, 0, 0, 0.16), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}

/* Per-section heading margins, as specified. */
#programs > h2.wp-block-heading { margin: 0 auto 14px !important; }
.pt-why__title                  { margin: 0 auto 40px !important; }
.pt-reviews > h2.wp-block-heading { margin: 0 auto 36px !important; }
#welcome h2.wp-block-heading    { margin-top: 0 !important;
	margin-bottom: 20px !important; }
.pt-enrich h2.wp-block-heading  { margin-top: 0 !important;
	margin-bottom: 16px !important; font-size: clamp(28px, 3.4vw, 44px) !important; }
.pt-1963__title                 { margin-top: 0 !important;
	margin-bottom: 18px !important; }
.pt-year                        { margin: 0 0 12px !important; }

/* Hero rhythm */
.pt-hero h1.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 20px !important; }
.pt-hero .pt-lede            { margin: 0 0 28px !important; }
.pt-pill--tree               { padding: 8px 16px 8px 14px; margin: 0 auto 20px 0 !important; }

/* Welcome and 1963 body copy */
#welcome .pt-measure  { margin: 0 0 16px !important; }
#welcome .pt-measure:last-child { margin-bottom: 0 !important; }
.pt-1963 .pt-measure  { margin: 0 0 14px !important; }
.pt-1963 .pt-measure:last-child { margin-bottom: 0 !important; }
.pt-measure { max-width: 58ch; line-height: 1.65; }
.pt-1963 .pt-measure { max-width: 56ch; }

/* Programs intro */
.pt-section__intro { margin: 0 auto 40px !important; line-height: 1.6; }

/* Card link sits 4px below the description */
.pt-card__link { margin-top: 4px !important; }

/* Hero / section grid gaps, per design */
.pt-hero > .wp-block-columns      { gap: clamp(28px, 5vw, 64px) !important; }
#welcome > .wp-block-columns      { gap: clamp(28px, 4vw, 56px) !important; }
.pt-1963 > .wp-block-columns      { gap: clamp(28px, 4vw, 60px) !important; }
.pt-enrich .wp-block-columns      { gap: clamp(24px, 4vw, 56px) !important; align-items: flex-start; }

/* Final CTA stack: 20px between every element */
.pt-cta > * { margin-top: 20px !important; margin-bottom: 0 !important; }
.pt-cta > .pt-cta__logo { margin-top: 0 !important; }
.pt-cta__photo { margin-top: 32px !important; }
.pt-cta__title { margin: 20px auto 0 !important; }

/* Hero buttons are taller than the default (58px) */
.pt-hero .wp-block-button__link {
	height: 58px;
	padding: 0 30px;
	font-size: 18px;
}

/* The final CTA is the one button the design leaves at line-height:normal,
   which renders both of its buttons 66px tall - not the 58px pair elsewhere. */
.pt-cta .wp-block-button__link {
	font-size: 19px;
	padding: 18px 34px;
	line-height: normal;
	height: 66px;
}

/* Enrichment band placeholder colour while the photo loads */
.pt-enrich__band img { background: #E5D8C2; }

/* =========================================================
   EXACT SECTION METRICS FROM THE DESIGN SOURCE
   Presets were close at 1280px but diverged at other widths.
   ========================================================= */

/* Top bar is desktop-only. WP's .wp-block-group.is-layout-flex outranks a
   bare .pt-topbar, so this needs matching specificity. */
@media (max-width: 781px) {
	.pt-header-wrap .pt-topbar.wp-block-group { display: none; }
}

/* Sections use a fixed 24px gutter in the design, not a fluid one. */
.pt-main .pt-section,
.pt-main .pt-divider-band,
.pt-main .pt-enrich > .pt-section {
	padding-left: 24px;
	padding-right: 24px;
}

.pt-hero          { padding-top: clamp(36px, 6vw, 84px) !important; padding-bottom: clamp(36px, 6vw, 84px) !important; }
.pt-trust         { padding-top: clamp(24px, 3vw, 34px) !important; padding-bottom: clamp(24px, 3vw, 34px) !important; }
#welcome          { padding-top: clamp(36px, 5vw, 72px) !important; padding-bottom: clamp(36px, 5vw, 72px) !important; }
.pt-divider-band  { padding-top: 8px !important;                    padding-bottom: clamp(30px, 4vw, 48px) !important; }
#programs         { padding-top: clamp(40px, 5vw, 80px) !important; padding-bottom: clamp(40px, 5vw, 80px) !important; }
.pt-why           { padding-top: clamp(40px, 5vw, 80px) !important; padding-bottom: clamp(40px, 5vw, 80px) !important; }
.pt-1963          { padding-top: clamp(40px, 5vw, 80px) !important; padding-bottom: clamp(40px, 5vw, 80px) !important; }
.pt-enrich > .pt-section { padding-top: clamp(32px, 4vw, 60px) !important; padding-bottom: clamp(32px, 4vw, 60px) !important; }
.pt-reviews       { padding-top: clamp(40px, 5vw, 76px) !important; padding-bottom: clamp(40px, 5vw, 76px) !important; }
.pt-cta           { padding-top: clamp(44px, 6vw, 88px) !important; padding-bottom: clamp(44px, 6vw, 88px) !important; }

.pt-footer {
	padding-top: clamp(40px, 5vw, 68px) !important;
	padding-bottom: 28px !important;
	padding-left: 24px !important;
	padding-right: 24px !important;
}

/* Grid minimums, per design */
.pt-trust__grid   { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)) !important; }
.pt-cards         { grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)) !important; }
.pt-reviews__grid { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)) !important; }
.pt-footer__grid  { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important; }

/* Why grid is a fixed 3-up on desktop, collapsing below. */
.pt-why__grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; grid-auto-rows: 1fr; }
@media (max-width: 900px) { .pt-why__grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (max-width: 560px) { .pt-why__grid { grid-template-columns: 1fr !important; } }

/* Enrichment section is edge-to-edge so its photo band can bleed full width;
   the text block beneath keeps the standard 24px gutter. */
.pt-enrich {
	padding-left: 0 !important;
	padding-right: 0 !important;
}

.pt-enrich__band,
.pt-enrich__band img {
	width: 100%;
	max-width: none;
	margin-left: 0;
	margin-right: 0;
}

/* ---------- Sticky bar reveal behaviour ----------
   Design shows it pinned to the viewport bottom; it should only appear
   once the visitor has scrolled past the hero. */

.pt-stickybar {
	position: fixed;
	left: 0;
	right: 0;
	bottom: 0;
	transform: translateY(100%);
	visibility: hidden;
	transition: transform 0.25s ease, visibility 0.25s;
}

.pt-stickybar.is-visible {
	transform: translateY(0);
	visibility: visible;
}

@media (prefers-reduced-motion: reduce) {
	.pt-stickybar { transition: none; }
}

/* Keep both labels on one line on small screens. */
.pt-stickybar__btn .wp-block-button__link {
	height: auto;
	white-space: nowrap;
}

@media (max-width: 430px) {
	.pt-stickybar__btn .wp-block-button__link {
	height: auto;
		font-size: 15px;
		padding: 13px 12px;
	}
}

/* ---------- Constrained-section direct children ----------
   WordPress's constrained layout centres direct children with
   `margin-inline: auto !important`. A margin shorthand wipes that and the
   element jumps to the viewport edge. These must keep auto side margins and
   span the full 1180px column; the intro's 64ch measure is enforced with
   right padding so the box itself stays column-aligned. */

#programs > h2.wp-block-heading,
.pt-why__title,
.pt-reviews > h2.wp-block-heading {
	max-width: 1180px !important;
	margin-left: auto !important;
	margin-right: auto !important;
}


/* Elements inside .wp-block-column use flow layout and stay left-aligned. */
.pt-hero .pt-lede,
#welcome .pt-measure,
.pt-1963 .pt-measure,
.pt-enrich .pt-measure {
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* ---------- Header collapse threshold ----------
   Measured minimum for the full desktop header: 986px
   (logo 90 + nav 526 + CTA 290 + 48 padding + 32 gaps).
   WordPress's navigation block only collapses at 600px, so the nav wrapped
   onto two lines between 600 and 986. Collapse at 1024px instead. */

@media (max-width: 1024px) {
	.pt-nav .wp-block-navigation__responsive-container-open {
		display: flex !important;
	}

	.pt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) {
		display: none !important;
	}

	.pt-nav .wp-block-navigation__responsive-container.is-menu-open {
		display: flex !important;
	}

	/* Design's narrow header is logo + Request a Tour + hamburger. */
	.pt-header__phone {
		display: none;
	}
}

/* Never let the header CTA wrap to two lines. */
.pt-header__cta .wp-block-button__link {
	white-space: nowrap;
}

.pt-header {
	flex-wrap: nowrap;
}

/* ---------- Grid breakpoints ----------
   auto-fit left orphans (3+1) at tablet widths. Explicit steps instead:
   4 across -> 2x2 -> single column. */

.pt-trust__grid,
.pt-cards,
.pt-footer__grid {
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

@media (max-width: 1024px) {
	.pt-trust__grid,
	.pt-cards,
	.pt-footer__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}
}

@media (max-width: 560px) {
	.pt-trust__grid,
	.pt-cards,
	.pt-footer__grid {
		grid-template-columns: 1fr !important;
	}
}

/* Reviews are 3 items: 3 across, then single column (2+1 orphans). */
.pt-reviews__grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
@media (max-width: 900px) { .pt-reviews__grid { grid-template-columns: 1fr !important; } }

/* Stacked trust bar: centre each item as a group, text stays left within it. */
@media (max-width: 560px) {
	/* Centre the stack as one block, but keep every item on a shared left edge
	   so the ticks and text line up. Centring each item individually gave a
	   ragged left edge. */
	.pt-trust__grid {
		justify-items: start;
		width: -moz-max-content;
		width: max-content;
		max-width: 100%;
		margin-left: auto;
		margin-right: auto;
	}

	.pt-trust__item {
		width: auto;
		max-width: 100%;
	}
}

/* Once cards widen into the 2-up / stacked layouts, the design's manual line
   break in the card CTA is no longer needed - drop it so it reads on one line. */
@media (max-width: 1024px) {
	.pt-card__link br {
		display: none;
	}
}

/* Stacked footer: centre every column's contents. */
@media (max-width: 560px) {
	.pt-footer__grid {
		justify-items: center;
		text-align: center;
	}

	.pt-footer__grid > div,
	.pt-footer__col {
		text-align: center;
		width: 100%;
	}

	.pt-footer__logo {
		margin-left: auto !important;
		margin-right: auto !important;
	}

	.pt-footer__blurb {
		margin-left: auto !important;
		margin-right: auto !important;
	}

	.pt-footer__nav {
		align-items: center;
	}

	.pt-social {
		justify-content: center;
	}

	.pt-footer__col .wp-block-buttons {
		justify-content: center;
	}

	.pt-footer__bottom {
		justify-content: center;
		text-align: center;
	}
}

/* ---------- Programs intro measure ----------
   The design caps this paragraph at 64ch but starts it at the content
   column's left edge. Rather than fight the box model, offset the left
   margin by half the gap between the container and the 1180px column.
   Below 1180px the offset collapses to zero and it sits at the gutter. */
#programs > p.pt-section__intro {
	max-width: 64ch !important;
	margin-left: max(0px, calc((100% - 1180px) / 2)) !important;
	margin-right: auto !important;
	padding-right: 0 !important;
	box-sizing: border-box;
}

/* ---------- Section seams ----------
   WordPress flow layout puts a block-gap margin between group children. Between
   full-bleed sections that shows as a strip of page background. Sections own
   their spacing through padding, so clear the margins at every seam. */

.pt-main > .wp-block-post-content > *,
.pt-main .entry-content > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

.pt-enrich > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

.pt-enrich {
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

.pt-enrich__band {
	margin: 0 !important;
	display: block;
	line-height: 0;
}

/* <main> also picks up a block-gap margin, leaving a strip of page background
   between the sticky header and the hero. Sections carry their own padding. */
.wp-site-blocks > main.pt-main,
.wp-site-blocks > .wp-block-template-part,
.wp-site-blocks > * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* ---------- Text rendering ----------
   The design sets -webkit-font-smoothing: antialiased. Without it macOS uses
   subpixel rendering, which makes the same 400 weight look noticeably heavier. */
html,
body,
.wp-site-blocks {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* Body copy classes missed by the earlier colour sweep. */
.pt-measure,
.pt-lede,
.pt-cta__lede,
.pt-enrich .pt-measure,
.pt-1963 .pt-measure,
#welcome .pt-measure {
	color: var(--wp--preset--color--body) !important;
	font-weight: 400 !important;
}

/* ---------- Nav labels and outline buttons ----------
   WP wraps each nav link's text in an inner <span>, and auto-contrast recolours
   that span even when the parent <a> is set. Target the span directly. */

.pt-nav .wp-block-navigation-item__label {
	color: var(--wp--preset--color--ink) !important;
}

.pt-nav .wp-block-navigation-item__content:hover .wp-block-navigation-item__label,
.pt-nav .current-menu-item > .wp-block-navigation-item__content .wp-block-navigation-item__label {
	color: var(--wp--preset--color--forest) !important;
}

.pt-footer__nav .wp-block-navigation-item__label {
	color: var(--wp--preset--color--brown) !important;
}

.pt-footer__nav .wp-block-navigation-item__content:hover .wp-block-navigation-item__label {
	color: var(--wp--preset--color--forest) !important;
}

/* Buttons: outline = forest text, solid = white text. */
.wp-block-button.is-style-outline > .wp-block-button__link,
.wp-block-button.is-style-outline > .wp-block-button__link:hover,
.wp-block-button.is-style-outline > .wp-block-button__link:focus {
	color: var(--wp--preset--color--forest) !important;
}

.wp-block-button:not(.is-style-outline) > .wp-block-button__link,
.wp-block-button:not(.is-style-outline) > .wp-block-button__link:hover {
	color: var(--wp--preset--color--white) !important;
}

/* ---------- Program strip (below the header) ----------
   Design: white band, 1px #EFE6D6 bottom border, 10px/24px padding,
   14px/600 copy in #6F6455 with #C9BCA4 separators. */
.pt-progstrip {
	background: var(--wp--preset--color--white);
	border-bottom: 1px solid var(--wp--preset--color--sand-border);
	padding: 10px 24px;
	gap: 16px;
	margin: 0;
}

.pt-progstrip p {
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	line-height: 1.3;
}

.pt-progstrip__item { color: var(--wp--preset--color--muted) !important; }
.pt-progstrip__dot  { color: #C9BCA4 !important; }

/* Only the header bar itself sticks; the top bar and program strip scroll away,
   matching the design where position:sticky sits on <header> alone. */
.pt-header-wrap { position: static; }

.pt-header {
	position: sticky;
	top: 0;
	z-index: 50;
}

@media (max-width: 560px) {
	.pt-progstrip { gap: 10px; }
	.pt-progstrip p { font-size: 13px; }
}

/* WordPress 7.1 auto-contrast targets button anchors with roughly (0,4,2)
   specificity and !important, which outranks a plain .is-style-outline rule
   even with has-text-color present. Match it with more classes. */
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link,
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link:hover,
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link:focus {
	color: var(--wp--preset--color--forest) !important;
}

body .wp-site-blocks .wp-block-button:not(.is-style-outline) > a.wp-block-button__link,
body .wp-site-blocks .wp-block-button:not(.is-style-outline) > a.wp-block-button__link:hover {
	color: var(--wp--preset--color--white) !important;
}

/* ---------- Outline button colour, final ----------
   WP 7.1 auto-contrast uses, with !important:
     body .wp-site-blocks :is(...)[data-dsgo-inline-bg]
     .wp-block-button:is([class*="is-style-outline"],...) .wp-element-button
   That is (0,6,1). The repeated .has-text-color below is deliberate: it raises
   specificity past theirs without resorting to an id. */
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link.wp-element-button.has-text-color.has-text-color.has-text-color,
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link.wp-element-button.has-text-color.has-text-color.has-text-color:hover,
body .wp-site-blocks .wp-block-button.is-style-outline > a.wp-block-button__link.wp-element-button.has-text-color.has-text-color.has-text-color:focus {
	color: var(--wp--preset--color--forest) !important;
	border-color: var(--wp--preset--color--forest) !important;
}

/* ---------- Hamburger icon centring ----------
   The open button is a 48px bordered square in the design; WP leaves the glyph
   top-aligned inside it. */
.pt-nav .wp-block-navigation__responsive-container-open {
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	padding: 0 !important;
	line-height: 0 !important;
	width: 48px;
	height: 48px;
}

.pt-nav .wp-block-navigation__responsive-container-open svg {
	display: block;
	margin: 0;
	width: 28px;
	height: 28px;
}

/* On small phones the h1 broke with "NY" orphaned on its own line. A
   non-breaking space keeps "Riverhead, NY" together and a slightly smaller
   size at <=480px keeps the heading to fewer lines. */
@media (max-width: 480px) {
	.pt-hero h1.wp-block-heading {
		font-size: 32px !important;
		line-height: 1.08;
	}
}

/* =========================================================
   GRID BREAKPOINTS — taken verbatim from the design's ResizeObserver
   (Homepage A - Mascot.dc.html, Site Footer.dc.html, Site Header.dc.html).
   The design measures CONTAINER width; these add the 48px gutter to express
   the same thresholds against the viewport.

     programs  >=1000 -> 4, >=560 -> 2, else 1
     why       >= 780 -> 3, >=520 -> 2, else 1
     trust     >= 900 -> 4, >=460 -> 2, else 1
     reviews   >= 880 -> 3, else 1
     footer    >= 900 -> 4, >=520 -> 2, else 1
     header     viewport >= 1100 -> full nav, else hamburger
   ========================================================= */

/* Program cards */
.pt-cards { grid-template-columns: 1fr !important; }
@media (min-width: 608px)  { .pt-cards { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 1048px) { .pt-cards { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }

/* Why Pine Tree */
.pt-why__grid { grid-template-columns: 1fr !important; }
@media (min-width: 568px) { .pt-why__grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 828px) { .pt-why__grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }

/* Trust bar */
.pt-trust__grid { grid-template-columns: 1fr !important; }
@media (min-width: 508px) { .pt-trust__grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 948px) { .pt-trust__grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }

/* Reviews */
.pt-reviews__grid { grid-template-columns: 1fr !important; }
@media (min-width: 928px) { .pt-reviews__grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } }

/* Footer */
.pt-footer__grid { grid-template-columns: 1fr !important; }
@media (min-width: 568px) { .pt-footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } }
@media (min-width: 948px) { .pt-footer__grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; } }

/* Header: design switches to the narrow layout below 1100px */
@media (max-width: 1099px) {
	.pt-nav .wp-block-navigation__responsive-container-open { display: flex !important; }
	.pt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: none !important; }
	.pt-nav .wp-block-navigation__responsive-container.is-menu-open { display: flex !important; }
	.pt-header__phone { display: none; }
}

@media (min-width: 1100px) {
	.pt-nav .wp-block-navigation__responsive-container-open { display: none !important; }
	.pt-nav .wp-block-navigation__responsive-container:not(.is-menu-open) { display: flex !important; }
	.pt-header__phone { display: block; }
}

/* Stacked trust bar centring applies at the design's single-column threshold. */
@media (max-width: 507px) {
	.pt-trust__grid {
		justify-items: start;
		width: -moz-max-content;
		width: max-content;
		max-width: 100%;
		margin-left: auto;
		margin-right: auto;
	}
	.pt-trust__item { width: auto; max-width: 100%; }
}

/* Stacked footer centring applies at the design's single-column threshold. */
@media (max-width: 567px) {
	.pt-footer__grid { justify-items: center; text-align: center; }
}

/* =========================================================
   MOBILE MENU — matched to Site Header.dc.html
   Design is a dropdown panel anchored under the header, left-aligned, with
   full-width dividers and an indented Programs group. WordPress ships a
   centred full-screen overlay, so most of this is overriding that.
   ========================================================= */

@media (max-width: 1099px) {

	/* Panel */
	.pt-nav .wp-block-navigation__responsive-container.is-menu-open {
		position: absolute;
		top: 100%;
		left: 0;
		right: 0;
		bottom: auto;
		width: auto;
		height: auto;
		z-index: 60;
		background: var(--wp--preset--color--white) !important;
		border-bottom: 3px solid var(--wp--preset--color--sand);
		box-shadow: 0 18px 30px rgba(46, 42, 38, 0.14);
		padding: 8px 20px 24px !important;
		max-height: calc(100vh - 90px);
		overflow: auto;
		display: flex;
		flex-direction: column;
		align-items: stretch;
		justify-content: flex-start;
	}

	.pt-nav .is-menu-open .wp-block-navigation__responsive-dialog {
		width: 100%;
		margin: 0;
	}

	.pt-nav .is-menu-open .wp-block-navigation__container {
		display: flex;
		flex-direction: column;
		align-items: stretch;
		gap: 0;
		width: 100%;
		padding: 0;
	}

	.pt-nav .is-menu-open .wp-block-navigation-item {
		width: 100%;
		align-items: stretch;
	}

	/* Top-level links */
	.pt-nav .is-menu-open .wp-block-navigation-item > .wp-block-navigation-item__content {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		text-align: left;
		min-height: 54px;
		padding: 0;
		width: 100%;
		font-size: 18px;
		font-weight: 700;
		border-bottom: 1px solid var(--wp--preset--color--sand-border);
	}

	.pt-nav .is-menu-open .wp-block-navigation-item__label {
		color: var(--wp--preset--color--ink) !important;
		font-size: 18px;
		font-weight: 700;
	}

	/* "Programs" itself carries no divider; the indented group below does. */
	.pt-nav .is-menu-open .wp-block-navigation-submenu > .wp-block-navigation-item__content {
		border-bottom: 0;
	}

	.pt-nav .is-menu-open .wp-block-navigation__submenu-container {
		display: flex;
		flex-direction: column;
		position: static;
		background: transparent;
		border: 0;
		border-bottom: 1px solid var(--wp--preset--color--sand-border);
		border-radius: 0;
		box-shadow: none;
		padding: 0 0 10px 12px;
		min-width: 0;
		width: 100%;
	}

	.pt-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		display: flex;
		align-items: center;
		gap: 12px;
		min-height: 46px;
		padding: 0;
		border: 0;
		border-radius: 0;
		background: transparent;
	}

	.pt-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__label {
		font-size: 16px;
		font-weight: 600;
		color: var(--wp--preset--color--body) !important;
	}

	/* Submenu is always expanded in the panel; hide the toggle arrow. */
	.pt-nav .is-menu-open .wp-block-navigation__submenu-icon {
		display: none;
	}

	/* Close button sits top-right of the panel. */
	.pt-nav .is-menu-open .wp-block-navigation__responsive-container-close {
		position: absolute;
		top: 10px;
		right: 16px;
		color: var(--wp--preset--color--forest);
	}
}

/* The nav block carries justifyContent:center for the desktop row, which WP
   turns into align-items:center once the panel stacks vertically. Force the
   panel's own alignment and indent. */
@media (max-width: 1099px) {
	.pt-nav .is-menu-open .wp-block-navigation__container,
	.pt-nav .is-menu-open ul.wp-block-navigation__container {
		align-items: stretch !important;
		justify-content: flex-start !important;
	}

	.pt-nav .is-menu-open .wp-block-navigation-item {
		width: 100% !important;
		align-items: stretch !important;
		justify-content: flex-start !important;
	}

	.pt-nav .is-menu-open .wp-block-navigation-item > .wp-block-navigation-item__content {
		width: 100% !important;
		justify-content: flex-start !important;
		text-align: left !important;
	}

	.pt-nav .is-menu-open .wp-block-navigation__submenu-container {
		padding: 0 0 10px 12px !important;
		margin: 0 !important;
		width: 100% !important;
		min-width: 0 !important;
		left: auto !important;
		top: auto !important;
	}

	.pt-nav .is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
		padding: 0 !important;
		width: 100% !important;
	}
}

/* The panel was resolving its absolute position against .pt-nav, which at
   mobile is just the 48px hamburger - so left:0/right:0 spanned 48px. Anchor it
   to the full-width header wrapper instead, matching the design where the panel
   spans the viewport and sits directly beneath the header. */
@media (max-width: 1099px) {
	.pt-header-wrap { position: relative; }
	.pt-nav { position: static !important; }

	.pt-nav .wp-block-navigation__responsive-container.is-menu-open {
		left: 0 !important;
		right: 0 !important;
		width: auto !important;
		min-width: 0 !important;
	}

	.pt-nav .is-menu-open .wp-block-navigation__responsive-close,
	.pt-nav .is-menu-open .wp-block-navigation__responsive-dialog,
	.pt-nav .is-menu-open .wp-block-navigation__responsive-container-content,
	.pt-nav .is-menu-open ul.wp-block-navigation__container {
		width: 100% !important;
		max-width: none !important;
	}
}

/* The header wrapper's children (top bar, header, program strip) were picking
   up block-gap margins, showing page background between them. */
.pt-header-wrap > *,
.pt-header-wrap > * + * {
	margin-block-start: 0;
	margin-block-end: 0;
}

/* =========================================================
   PROGRAM PAGES — shared components
   Built once and reused by all four Program Detail pages and the Programs
   index. Values from Program Detail.dc.html / Programs.dc.html.
   Per-program accent is set with --pt-accent / --pt-accent-ink on the page
   wrapper, so nothing below is duplicated per program.
   ========================================================= */

.pt-prog--infant    { --pt-accent: #D6483B; --pt-accent-ink: #FFFFFF; }
.pt-prog--toddler   { --pt-accent: #2C6EB5; --pt-accent-ink: #FFFFFF; }
.pt-prog--preschool { --pt-accent: #F2C230; --pt-accent-ink: #3B2A12; }
.pt-prog--prek      { --pt-accent: #E58A2B; --pt-accent-ink: #3B2208; }

/* ---------- Breadcrumb ---------- */
.pt-crumbs {
	gap: 8px;
	margin: 0 0 clamp(24px, 4vw, 44px) !important;
	font-size: 14px;
	font-weight: 600;
}

.pt-crumbs p { margin: 0; font-size: 14px; font-weight: 600; }
.pt-crumbs a { color: var(--wp--preset--color--muted) !important; text-decoration: none; }
.pt-crumbs a:hover { color: var(--wp--preset--color--forest) !important; }
.pt-crumbs .pt-crumbs__sep { color: #C9BCA4 !important; }
.pt-crumbs .pt-crumbs__current { color: var(--wp--preset--color--forest) !important; }

/* ---------- Accent eyebrow pill ---------- */
.pt-eyebrow {
	display: inline-flex;
	align-items: center;
	background: var(--pt-accent, var(--wp--preset--color--sand));
	color: var(--pt-accent-ink, var(--wp--preset--color--brown)) !important;
	font-weight: 700;
	font-size: 15px;
	line-height: 1;
	padding: 9px 16px;
	border-radius: var(--wp--custom--radius--pill);
	margin: 0 0 20px !important;
	white-space: nowrap;
	width: -moz-max-content;
	width: max-content;
}

/* ---------- Photo placeholder (design's own treatment) ---------- */
.pt-ph {
	border-radius: var(--wp--custom--radius--large);
	overflow: hidden;
	background: repeating-linear-gradient(45deg, #EFE6D6, #EFE6D6 12px, #E5D8C2 12px, #E5D8C2 24px);
	display: flex;
	align-items: flex-end;
	padding: 18px;
	margin: 0;
}

.pt-ph--hero   { aspect-ratio: 4 / 3.4; box-shadow: 0 18px 40px rgba(46, 42, 38, 0.10); }
.pt-ph--4x34   { aspect-ratio: 4 / 3.4; }
.pt-ph--4x3    { aspect-ratio: 4 / 3; }
.pt-ph--1x1    { aspect-ratio: 1 / 1; }
.pt-ph--sand   { background: repeating-linear-gradient(45deg, #F3EADB, #F3EADB 12px, #EADDC6 12px, #EADDC6 24px); }

.pt-ph p {
	font: 600 12px/1.4 ui-monospace, Menlo, monospace;
	color: var(--wp--preset--color--brown) !important;
	background: var(--wp--preset--color--cream);
	padding: 8px 12px;
	border-radius: var(--wp--custom--radius--pill);
	margin: 0;
}

/* ---------- Checklist card ---------- */
.pt-checklist {
	background: var(--wp--preset--color--sand-light);
	border-radius: 28px;
	padding: clamp(24px, 3.4vw, 44px);
}

.pt-checklist__title {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: clamp(20px, 2vw, 24px);
	line-height: 1.2;
	color: var(--wp--preset--color--forest) !important;
	margin-top: 0 !important;
	margin-bottom: 20px !important;
}

.pt-checklist__items {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr));
	gap: 16px 32px;
}

.pt-checklist__items p {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	font-size: 17px;
	line-height: 1.45;
	font-weight: 600;
	color: var(--wp--preset--color--ink) !important;
	margin: 0;
}

.pt-checklist__items p::before {
	content: "";
	width: 24px;
	height: 24px;
	flex: 0 0 auto;
	border-radius: 50%;
	background-color: var(--wp--preset--color--forest);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M9.55 17.2 4.4 12.05l1.42-1.42 3.73 3.73 8.63-8.63 1.42 1.42z'/%3E%3C/svg%3E");
	background-size: 20px 20px;
	background-position: center;
	background-repeat: no-repeat;
}

/* ---------- Icon feature cards ---------- */
.pt-iconcards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
@media (max-width: 900px) { .pt-iconcards { grid-template-columns: 1fr; } }

.pt-iconcard {
	background: var(--wp--preset--color--sand-light);
	border-radius: 24px;
	padding: 28px;
	display: flex;
	flex-direction: column;
	gap: 10px;
}

.pt-iconcard > * { margin-block-start: 0; margin-block-end: 0; }

.pt-iconcard__icon {
	width: 52px;
	height: 52px;
	border-radius: 16px;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--forest) !important;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0;
	margin: 0 0 6px !important;
}

.pt-iconcard__icon::before {
	content: "";
	font-family: "Material Symbols Rounded";
	font-weight: 400;
	font-size: 28px;
	line-height: 1;
	-webkit-font-feature-settings: "liga";
	font-feature-settings: "liga";
}

.pt-iconcard h3 {
	font-size: 22px !important;
	font-weight: 700;
	line-height: 1.2;
	color: var(--wp--preset--color--forest) !important;
	margin: 0 !important;
	letter-spacing: 0;
}

.pt-iconcard p { font-size: 16px; line-height: 1.6; color: var(--wp--preset--color--body) !important; margin: 0; }

/* ---------- Coloured tiles ---------- */
.pt-tiles {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
	gap: 12px;
	margin-top: 10px;
}

.pt-tiles p {
	background: var(--wp--preset--color--white);
	border-radius: 16px;
	padding: 14px 16px;
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 16px;
	line-height: 1.3;
	font-weight: 700;
	color: var(--wp--preset--color--ink) !important;
	box-shadow: 0 4px 12px rgba(46, 42, 38, 0.05);
	margin: 0;
}

.pt-tiles p::before {
	content: "";
	width: 14px;
	height: 14px;
	border-radius: 4px;
	flex: 0 0 auto;
	background: var(--tile, var(--wp--preset--color--forest));
}

.pt-tile--red    { --tile: #D6483B; }
.pt-tile--blue   { --tile: #2C6EB5; }
.pt-tile--yellow { --tile: #F2C230; }
.pt-tile--orange { --tile: #E58A2B; }
.pt-tile--purple { --tile: #7A4FA3; }
.pt-tile--green  { --tile: #3E9A4F; }

/* ---------- Other programs ---------- */
.pt-others__head { gap: 8px 20px; margin: 0 0 20px; }
.pt-others__head h2 { font-size: clamp(22px, 2.2vw, 28px) !important; margin: 0 !important; }
.pt-others__all a { font-weight: 700; font-size: 16px; color: var(--wp--preset--color--forest) !important; text-decoration: underline; text-underline-offset: 4px; }

.pt-others {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
	gap: 16px;
}

.pt-other {
	background: var(--wp--preset--color--white);
	border-radius: 22px;
	padding: 20px 22px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	border: 2px solid var(--wp--preset--color--sand-border);
	text-decoration: none;
}

.pt-other:hover { border-color: var(--wp--preset--color--forest); }
.pt-other > * { margin: 0; }

.pt-other__age {
	background: var(--pt-accent);
	color: var(--pt-accent-ink) !important;
	font-weight: 700;
	font-size: 13px;
	line-height: 1;
	padding: 6px 12px;
	border-radius: var(--wp--custom--radius--pill);
	white-space: nowrap;
	display: inline-block;
	margin-bottom: 10px !important;
}

.pt-other__name {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: 22px;
	line-height: 1.15;
	color: var(--wp--preset--color--forest) !important;
	display: block;
}

.pt-other__arrow {
	width: 42px;
	height: 42px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--wp--preset--color--sand-light);
	color: var(--wp--preset--color--forest) !important;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0;
}

.pt-other__arrow::before {
	content: "\e5c8";
	font-family: "Material Symbols Rounded";
	font-size: 24px;
	line-height: 1;
	-webkit-font-feature-settings: "liga";
	font-feature-settings: "liga";
}

/* ---------- Closing CTA card ---------- */
.pt-closing {
	background: var(--wp--preset--color--white);
	border-radius: 36px;
	padding: clamp(32px, 5vw, 64px) clamp(22px, 4vw, 56px);
	text-align: center;
	box-shadow: 0 10px 30px rgba(46, 42, 38, 0.06);
}

.pt-closing > * { margin-top: 18px !important; margin-bottom: 0 !important; }
.pt-closing > *:first-child { margin-top: 0 !important; }
.pt-closing__bus img { height: clamp(90px, 10vw, 120px); width: auto; display: block; margin: 0 auto; border-radius: 0; }
.pt-closing h2 { font-size: clamp(30px, 4vw, 48px) !important; line-height: 1.08; margin: 18px auto 0 !important; }
.pt-closing p { max-width: 52ch; margin: 18px auto 0 !important; }
.pt-closing .wp-block-buttons { justify-content: center; margin-top: 24px !important; }

/* ---------- Program page section rhythm ---------- */
.pt-progpage .pt-section { padding-top: clamp(48px, 6vw, 88px) !important; padding-bottom: clamp(48px, 6vw, 88px) !important; }
.pt-progpage .pt-section.pt-prog-hero { padding-top: clamp(18px, 2.5vw, 28px) !important; padding-bottom: clamp(48px, 6vw, 88px) !important; }
.pt-progpage .pt-others-sec { padding-top: clamp(40px, 5vw, 64px) !important; padding-bottom: 0 !important; }
.pt-progpage .pt-closing-sec { padding-top: clamp(40px, 5vw, 64px) !important; padding-bottom: clamp(48px, 6vw, 88px) !important; }

.pt-progpage .entry-content h1.wp-block-heading { font-size: clamp(36px, 4.6vw, 58px) !important; line-height: 1.05; }
.pt-progpage .entry-content h2.wp-block-heading { font-size: clamp(28px, 3.4vw, 44px) !important; line-height: 1.1; margin-top: 0 !important;
	margin-bottom: 18px !important; }
.pt-progpage .pt-onforest h2 { color: var(--wp--preset--color--white) !important; }
.pt-progpage .pt-onforest p  { color: var(--wp--preset--color--sand-border) !important; }
.pt-progpage .pt-onsand p    { color: var(--wp--preset--color--ink) !important; }

/* Closing CTA copy colour (was inheriting WP auto-contrast). */
.pt-closing p,
.pt-closing h2 {
	color: var(--wp--preset--color--body) !important;
}

.pt-closing h2 { color: var(--wp--preset--color--forest) !important; }

/* =========================================================
   ICONS — inline SVG masks

   The Material Symbols webfont failed twice: an icon_names= subset has no
   ligature table AND does not contain the requested codepoints (every glyph
   rendered as tofu). These are the official 24px SVGs inlined as CSS masks, so
   colour still comes from `color` and there is no font dependency.
   Note: the SVG uses single quotes internally so the CSS url("...") string is
   not terminated early.
   ========================================================= */

[data-icon]::before,
.pt-other__arrow::before {
	content: "";
	display: block;
	width: 1em;
	height: 1em;
	flex: 0 0 auto;
	background-color: currentColor;
	-webkit-mask: var(--pt-icon) center / contain no-repeat;
	mask: var(--pt-icon) center / contain no-repeat;
}

[data-icon="sensors"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M160-480q0 56 17 105.5t49 89.5q11 14 11 30.5T225-226q-12 12-29 11.5T168-229q-42-52-65-115.5T80-480q0-72 23-136t65-115q11-14 28-14.5t29 11.5q12 12 12 28.5T226-675q-32 41-49 90.5T160-480Zm160 0q0 23 6 43.5t17 38.5q9 14 8.5 31T339-338q-12 12-29 11.5T284-341q-21-29-32.5-65T240-480q0-39 11.5-74.5T284-619q10-14 26.5-14t28.5 12q12 12 12.5 28.5T343-562q-11 18-17 38.5t-6 43.5Zm103.5 56.5Q400-447 400-480t23.5-56.5Q447-560 480-560t56.5 23.5Q560-513 560-480t-23.5 56.5Q513-400 480-400t-56.5-23.5ZM640-480q0-23-6-43.5T617-562q-9-14-8-31t13-29q12-12 28-11.5t26 14.5q21 29 32.5 64.5T720-480q0 38-11.5 74T676-341q-9 14-26 14t-29-12q-12-12-12.5-28.5T617-398q11-18 17-38.5t6-43.5Zm160 0q0-56-17-105.5T734-675q-11-14-11.5-30.5T734-734q12-12 29.5-11.5T792-731q42 51 65 115t23 136q0 72-23 135.5T792-229q-11 14-28 14.5T735-226q-12-12-12-28.5t11-30.5q32-41 49-90.5T800-480Z'/%3E%3C/svg%3E"); }
[data-icon="bed"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M80-240v-200q0-27 11-49t29-39v-112q0-50 35-85t85-35h160q23 0 43 8.5t37 23.5q17-15 37-23.5t43-8.5h160q50 0 85 35t35 85v112q18 17 29 39t11 49v200q0 17-11.5 28.5T840-200q-17 0-28.5-11.5T800-240v-40H160v40q0 17-11.5 28.5T120-200q-17 0-28.5-11.5T80-240Zm440-320h240v-80q0-17-11.5-28.5T720-680H560q-17 0-28.5 11.5T520-640v80Zm-320 0h240v-80q0-17-11.5-28.5T400-680H240q-17 0-28.5 11.5T200-640v80Zm-40 200h640v-80q0-17-11.5-28.5T760-480H200q-17 0-28.5 11.5T160-440v80Zm640 0H160h640Z'/%3E%3C/svg%3E"); }
[data-icon="videocam"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M160-160q-33 0-56.5-23.5T80-240v-480q0-33 23.5-56.5T160-800h480q33 0 56.5 23.5T720-720v180l126-126q10-10 22-5t12 19v344q0 14-12 19t-22-5L720-420v180q0 33-23.5 56.5T640-160H160Zm0-80h480v-480H160v480Zm0 0v-480 480Z'/%3E%3C/svg%3E"); }
[data-icon="menu_book"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M260-320q47 0 91.5 10.5T440-278v-394q-41-24-87-36t-93-12q-36 0-71.5 7T120-692v396q35-12 69.5-18t70.5-6Zm260 42q44-21 88.5-31.5T700-320q36 0 70.5 6t69.5 18v-396q-33-14-68.5-21t-71.5-7q-47 0-93 12t-87 36v394Zm-66.5 93.5Q441-188 430-194q-39-23-82-34.5T260-240q-42 0-82.5 11T100-198q-21 11-40.5-1T40-234v-482q0-11 5.5-21T62-752q46-24 96-36t102-12q58 0 113.5 15T480-740q51-30 106.5-45T700-800q52 0 102 12t96 36q11 5 16.5 15t5.5 21v482q0 23-19.5 35t-40.5 1q-37-20-77.5-31T700-240q-45 0-88 11.5T530-194q-11 6-23.5 9.5T480-181q-14 0-26.5-3.5ZM280-494Zm280-115q0-9 6.5-18.5T581-640q29-10 58-15t61-5q20 0 39.5 2.5T778-651q9 2 15.5 10t6.5 18q0 17-11 25t-28 4q-14-3-29.5-4.5T700-600q-26 0-51 5t-48 13q-18 7-29.5-1T560-609Zm0 220q0-9 6.5-18.5T581-420q29-10 58-15t61-5q20 0 39.5 2.5T778-431q9 2 15.5 10t6.5 18q0 17-11 25t-28 4q-14-3-29.5-4.5T700-380q-26 0-51 4.5T601-363q-18 7-29.5-.5T560-389Zm0-110q0-9 6.5-18.5T581-530q29-10 58-15t61-5q20 0 39.5 2.5T778-541q9 2 15.5 10t6.5 18q0 17-11 25t-28 4q-14-3-29.5-4.5T700-490q-26 0-51 5t-48 13q-18 7-29.5-1T560-499Z'/%3E%3C/svg%3E"); }
[data-icon="toys"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M280-160q-45 0-78.5-28.5T162-262q-38-20-60-57t-22-81q0-53 30.5-94.5T192-552l-72-72-12 12q-11 11-28 11t-28-11q-11-11-11-28t11-28l80-80q11-11 28-11t28 11q11 11 11 28t-11 28l-12 12 56 56 32-94q12-37 43.5-59.5T378-800h204q39 0 70.5 22.5T696-718l54 162q57 11 93.5 55T880-400q0 44-22 81t-60 57q-6 45-39.5 73.5T680-160q-38 0-68.5-22T568-240H392q-13 36-43.5 58T280-160Zm16-400h144v-160h-62q-13 0-23 7.5T340-692l-44 132Zm224 0h144l-44-132q-5-13-15-20.5t-23-7.5h-62v160ZM392-320h176q13-36 43.5-58t68.5-22q30 0 56 14t44 38q9-11 14.5-24.5T800-400q0-33-23.5-56.5T720-480H240q-33 0-56.5 23.5T160-400q0 14 5.5 27.5T180-348q18-24 44-38t56-14q38 0 68.5 22t43.5 58Zm-83.5 68.5Q320-263 320-280t-11.5-28.5Q297-320 280-320t-28.5 11.5Q240-297 240-280t11.5 28.5Q263-240 280-240t28.5-11.5Zm400 0Q720-263 720-280t-11.5-28.5Q697-320 680-320t-28.5 11.5Q640-297 640-280t11.5 28.5Q663-240 680-240t28.5-11.5ZM480-400Z'/%3E%3C/svg%3E"); }
[data-icon="directions_run"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M520-80v-200l-84-80-31 138q-4 16-17.5 24.5T358-192l-198-40q-17-3-26-17t-6-31q3-17 17-26.5t31-5.5l152 32 64-324-72 28v96q0 17-11.5 28.5T280-440q-17 0-28.5-11.5T240-480v-122q0-12 6.5-21.5T264-638l134-58q35-15 51.5-19.5T480-720q21 0 39 11t29 29l40 64q21 34 54.5 59t77.5 33q17 3 28.5 15t11.5 29q0 17-11.5 28t-27.5 9q-54-8-101-33.5T540-540l-24 120 72 68q6 6 9 13.5t3 15.5v243q0 17-11.5 28.5T560-40q-17 0-28.5-11.5T520-80Zm-36.5-683.5Q460-787 460-820t23.5-56.5Q507-900 540-900t56.5 23.5Q620-853 620-820t-23.5 56.5Q573-740 540-740t-56.5-23.5Z'/%3E%3C/svg%3E"); }
[data-icon="park"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M402-240H195q-24 0-36-21t2-41l119-178h-3q-24 0-35.5-21.5T244-543l203-290q6-8 15-12.5t18-4.5q9 0 18 4.5t15 12.5l203 290q14 20 2.5 41.5T683-480h-3l119 178q14 20 2 41t-36 21H558v120q0 17-11.5 28.5T518-80h-76q-17 0-28.5-11.5T402-120v-120Zm-132-80h160-76 252-76 160-420Zm0 0h420L530-560h76L480-740 354-560h76L270-320Z'/%3E%3C/svg%3E"); }
[data-icon="nutrition"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M281.5-201.5Q200-283 200-400q0-94 55.5-168.5T401-669q-20-5-39-14.5T328-708q-33-33-42.5-78.5T281-879q47-5 92.5 4.5T452-832q23 23 33.5 52t13.5 61q13-31 31.5-58.5T572-828q11-11 28-11t28 11q11 11 11 28t-11 28q-22 22-39 48.5T564-667q88 28 142 101.5T760-400q0 117-81.5 198.5T480-120q-117 0-198.5-81.5Zm340-57Q680-317 680-400t-58.5-141.5Q563-600 480-600t-141.5 58.5Q280-483 280-400t58.5 141.5Q397-200 480-200t141.5-58.5ZM480-400Z'/%3E%3C/svg%3E"); }
[data-icon="arrow_forward"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M647-440H200q-17 0-28.5-11.5T160-480q0-17 11.5-28.5T200-520h447L451-716q-12-12-11.5-28t12.5-28q12-11 28-11.5t28 11.5l264 264q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L508-188q-11 11-27.5 11T452-188q-12-12-12-28.5t12-28.5l195-195Z'/%3E%3C/svg%3E"); }
[data-icon="self_improvement"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M272-160q-30 0-51-21t-21-51q0-21 12-39.5t32-26.5l156-62v-90q-48 55-108 87.5T162-322q-17 2-29.5-9.5T120-360q0-17 11-29t28-14q55-8 101-34t84-71l54-64q12-14 28-21t34-7h40q18 0 34 7t28 21l54 64q38 45 84 71t101 34q17 2 28 14t11 29q0 17-12.5 28.5T798-322q-70-8-130-40.5T560-450v90l156 62q20 8 32 26.5t12 39.5q0 30-21 51t-51 21H400v-20q0-26 17-43t43-17h120q9 0 14.5-5.5T600-260q0-9-5.5-14.5T580-280H460q-42 0-71 29t-29 71v20h-88Zm151.5-503.5Q400-687 400-720t23.5-56.5Q447-800 480-800t56.5 23.5Q560-753 560-720t-23.5 56.5Q513-640 480-640t-56.5-23.5Z'/%3E%3C/svg%3E"); }
[data-icon="celebration"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='m212-212 282-100-182-182-100 282Zm709-467q-9 9-21 9t-21-9l-3-3q-14-14-35-14t-35 14L603-479q-9 9-21 9t-21-9q-9-9-9-21t9-21l203-203q32-32 77-32t77 32l3 3q9 9 9 21t-9 21ZM399-799q9-9 21-9t21 9l5 5q32 32 32 76t-32 76l-3 3q-9 9-21 9t-21-9q-9-9-9-21t9-21l3-3q14-14 14-34t-14-34l-5-5q-9-9-9-21t9-21Zm162-80q9-9 21-9t21 9l43 43q32 32 32 77t-32 77L523-559q-9 9-21 9t-21-9q-9-9-9-21t9-21l123-123q14-14 14-35t-14-35l-43-43q-9-9-9-21t9-21Zm320 480q-9 9-21 9t-21-9l-43-43q-14-14-35-14t-35 14l-43 43q-9 9-21 9t-21-9q-9-9-9-21t9-21l43-43q32-32 77-32t77 32l43 43q9 9 9 21t-9 21ZM212-212Zm-104 52 151-420q5-13 15.5-20t22.5-7q8 0 15 3t13 9l270 270q6 6 9 13t3 15q0 12-7 22.5T580-259L160-108q-12 5-23 1.5T118-118q-8-8-11.5-19t1.5-23Z'/%3E%3C/svg%3E"); }
[data-icon="music_note"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M287-167q-47-47-47-113t47-113q47-47 113-47 23 0 42.5 5.5T480-418v-382q0-17 11.5-28.5T520-840h160q17 0 28.5 11.5T720-800v80q0 17-11.5 28.5T680-680H560v400q0 66-47 113t-113 47q-66 0-113-47Z'/%3E%3C/svg%3E"); }
[data-icon="palette"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M480-80q-82 0-155-31.5t-127.5-86Q143-252 111.5-325T80-480q0-83 32.5-156t88-127Q256-817 330-848.5T488-880q80 0 151 27.5t124.5 76q53.5 48.5 85 115T880-518q0 115-70 176.5T640-280h-74q-9 0-12.5 5t-3.5 11q0 12 15 34.5t15 51.5q0 50-27.5 74T480-80Zm0-400Zm-177 23q17-17 17-43t-17-43q-17-17-43-17t-43 17q-17 17-17 43t17 43q17 17 43 17t43-17Zm120-160q17-17 17-43t-17-43q-17-17-43-17t-43 17q-17 17-17 43t17 43q17 17 43 17t43-17Zm200 0q17-17 17-43t-17-43q-17-17-43-17t-43 17q-17 17-17 43t17 43q17 17 43 17t43-17Zm120 160q17-17 17-43t-17-43q-17-17-43-17t-43 17q-17 17-17 43t17 43q17 17 43 17t43-17ZM480-160q9 0 14.5-5t5.5-13q0-14-15-33t-15-57q0-42 29-67t71-25h70q66 0 113-38.5T800-518q0-121-92.5-201.5T488-800q-136 0-232 93t-96 227q0 133 93.5 226.5T480-160Z'/%3E%3C/svg%3E"); }
[data-icon="language"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M325-111.5q-73-31.5-127.5-86t-86-127.5Q80-398 80-480.5t31.5-155q31.5-72.5 86-127t127.5-86Q398-880 480.5-880t155 31.5q72.5 31.5 127 86t86 127Q880-563 880-480.5T848.5-325q-31.5 73-86 127.5t-127 86Q563-80 480.5-80T325-111.5ZM480-162q26-36 45-75t31-83H404q12 44 31 83t45 75Zm-104-16q-18-33-31.5-68.5T322-320H204q29 50 72.5 87t99.5 55Zm208 0q56-18 99.5-55t72.5-87H638q-9 38-22.5 73.5T584-178ZM170-400h136q-3-20-4.5-39.5T300-480q0-21 1.5-40.5T306-560H170q-5 20-7.5 39.5T160-480q0 21 2.5 40.5T170-400Zm216 0h188q3-20 4.5-39.5T580-480q0-21-1.5-40.5T574-560H386q-3 20-4.5 39.5T380-480q0 21 1.5 40.5T386-400Zm268 0h136q5-20 7.5-39.5T800-480q0-21-2.5-40.5T790-560H654q3 20 4.5 39.5T660-480q0 21-1.5 40.5T654-400Zm-16-240h118q-29-50-72.5-87T584-782q18 33 31.5 68.5T638-640Zm-234 0h152q-12-44-31-83t-45-75q-26 36-45 75t-31 83Zm-200 0h118q9-38 22.5-73.5T376-782q-56 18-99.5 55T204-640Z'/%3E%3C/svg%3E"); }
[data-icon="eco"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M216-176q-45-45-70.5-104T120-402q0-63 24-124.5T222-642q60-60 169.5-91T675-759q26 1 48 11t39 27q17 17 27 39.5t11 48.5q2 82-4.5 151.5t-21 125.5q-14.5 56-37 99.5T684-182q-53 53-112.5 77.5T450-80q-65 0-127-25.5T216-176Zm112-16q29 17 59.5 24.5T450-160q46 0 91-18.5t86-59.5q18-18 36.5-50.5t32-85Q709-426 716-500.5t2-177.5q-49-2-110.5-1.5T485-670q-61 9-116 29t-90 55q-45 45-62 89t-17 85q0 59 22.5 103.5T262-246q42-80 111-153.5T534-520q-72 63-125.5 142.5T328-192Zm0 0Zm0 0Z'/%3E%3C/svg%3E"); }


/* Icons added for Enrollment & Tours (Material Symbols Rounded, 960 grid). */
[data-icon="child_care"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M544.5-504.5Q530-519%20530-540t14.5-35.5Q559-590%20580-590t35.5%2014.5Q630-561%20630-540t-14.5%2035.5Q601-490%20580-490t-35.5-14.5Zm-200%200Q330-519%20330-540t14.5-35.5Q359-590%20380-590t35.5%2014.5Q430-561%20430-540t-14.5%2035.5Q401-490%20380-490t-35.5-14.5Zm27%20191.5Q323-346%20300-400h360q-23%2054-71.5%2087T480-280q-60%200-108.5-33Zm-32%20164.5q-65.5-28.5-114-77t-77-114Q120-405%20120-480t28.5-140.5q28.5-65.5%2077-114t114-77Q405-840%20480-840t140.5%2028.5q65.5%2028.5%20114%2077t77%20114Q840-555%20840-480t-28.5%20140.5q-28.5%2065.5-77%20114t-114%2077Q555-120%20480-120t-140.5-28.5ZM678-282q82-82%2082-198t-82-198q-82-82-198-82h-12q-6%200-12%202-6%206-8%2013t-2%2015q0%2021%2014.5%2035.5T496-680q9%200%2016.5-3t15.5-3q12%200%2020%209t8%2021q0%2023-21.5%2029.5T496-620q-45%200-77.5-32.5T386-730v-6q0-3%201-8-83%2030-135%20101t-52%20163q0%20116%2082%20198t198%2082q116%200%20198-82ZM480-480Z'/%3E%3C/svg%3E"); }
[data-icon="call"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M798-120q-125%200-247-54.5T329-329Q229-429%20174.5-551T120-798q0-18%2012-30t30-12h162q14%200%2025%209.5t13%2022.5l26%20140q2%2016-1%2027t-11%2019l-97%2098q20%2037%2047.5%2071.5T387-386q31%2031%2065%2057.5t72%2048.5l94-94q9-9%2023.5-13.5T670-390l138%2028q14%204%2023%2014.5t9%2023.5v162q0%2018-12%2030t-30%2012ZM241-600l66-66-17-94h-89q5%2041%2014%2081t26%2079Zm358%20358q39%2017%2079.5%2027t81.5%2013v-88l-94-19-67%2067ZM241-600Zm358%20358Z'/%3E%3C/svg%3E"); }
[data-icon="location_on"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M480-186q122-112%20181-203.5T720-552q0-109-69.5-178.5T480-800q-101%200-170.5%2069.5T240-552q0%2071%2059%20162.5T480-186Zm-28%2074q-14-5-25-15-65-60-115-117t-83.5-110.5q-33.5-53.5-51-103T160-552q0-150%2096.5-239T480-880q127%200%20223.5%2089T800-552q0%2045-17.5%2094.5t-51%20103Q698-301%20648-244T533-127q-11%2010-25%2015t-28%205q-14%200-28-5Zm28-448Zm56.5%2056.5Q560-527%20560-560t-23.5-56.5Q513-640%20480-640t-56.5%2023.5Q400-593%20400-560t23.5%2056.5Q447-480%20480-480t56.5-23.5Z'/%3E%3C/svg%3E"); }
[data-icon="schedule"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M520-496v-144q0-17-11.5-28.5T480-680q-17%200-28.5%2011.5T440-640v159q0%208%203%2015.5t9%2013.5l132%20132q11%2011%2028%2011t28-11q11-11%2011-28t-11-28L520-496ZM480-80q-83%200-156-31.5T197-197q-54-54-85.5-127T80-480q0-83%2031.5-156T197-763q54-54%20127-85.5T480-880q83%200%20156%2031.5T763-763q54%2054%2085.5%20127T880-480q0%2083-31.5%20156T763-197q-54%2054-127%2085.5T480-80Zm0-400Zm0%20320q133%200%20226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133%200-226.5%2093.5T160-480q0%20133%2093.5%20226.5T480-160Z'/%3E%3C/svg%3E"); }
[data-icon="open_in_new"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M200-120q-33%200-56.5-23.5T120-200v-560q0-33%2023.5-56.5T200-840h240q17%200%2028.5%2011.5T480-800q0%2017-11.5%2028.5T440-760H200v560h560v-240q0-17%2011.5-28.5T800-480q17%200%2028.5%2011.5T840-440v240q0%2033-23.5%2056.5T760-120H200Zm560-584L416-360q-11%2011-28%2011t-28-11q-11-11-11-28t11-28l344-344H600q-17%200-28.5-11.5T560-800q0-17%2011.5-28.5T600-840h200q17%200%2028.5%2011.5T840-800v200q0%2017-11.5%2028.5T800-560q-17%200-28.5-11.5T760-600v-104Z'/%3E%3C/svg%3E"); }
[data-icon="add"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M440-440H240q-17%200-28.5-11.5T200-480q0-17%2011.5-28.5T240-520h200v-200q0-17%2011.5-28.5T480-760q17%200%2028.5%2011.5T520-720v200h200q17%200%2028.5%2011.5T760-480q0%2017-11.5%2028.5T720-440H520v200q0%2017-11.5%2028.5T480-200q-17%200-28.5-11.5T440-240v-200Z'/%3E%3C/svg%3E"); }
[data-icon="remove"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M240-440q-17%200-28.5-11.5T200-480q0-17%2011.5-28.5T240-520h480q17%200%2028.5%2011.5T760-480q0%2017-11.5%2028.5T720-440H240Z'/%3E%3C/svg%3E"); }
[data-icon="check"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='m382-354%20339-339q12-12%2028-12t28%2012q12%2012%2012%2028.5T777-636L410-268q-12%2012-28%2012t-28-12L182-440q-12-12-11.5-28.5T183-497q12-12%2028.5-12t28.5%2012l142%20143Z'/%3E%3C/svg%3E"); }[data-icon="groups"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M40-240q-17 0-28.5-11.5T0-280v-23q0-43 44-70t116-27q13 0 25 .5t23 2.5q-14 21-21 44t-7 48v65H40Zm240 0q-17 0-28.5-11.5T240-280v-25q0-32 17.5-58.5T307-410q32-20 76.5-30t96.5-10q53 0 97.5 10t76.5 30q32 20 49 46.5t17 58.5v25q0 17-11.5 28.5T680-240H280Zm500 0v-65q0-26-6.5-49T754-397q11-2 22.5-2.5t23.5-.5q72 0 116 26.5t44 70.5v23q0 17-11.5 28.5T920-240H780Zm-455-80h311q-10-20-55.5-35T480-370q-55 0-100.5 15T325-320ZM160-440q-33 0-56.5-23.5T80-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T160-440Zm640 0q-33 0-56.5-23.5T720-520q0-34 23.5-57t56.5-23q34 0 57 23t23 57q0 33-23 56.5T800-440Zm-320-40q-50 0-85-35t-35-85q0-51 35-85.5t85-34.5q51 0 85.5 34.5T600-600q0 50-34.5 85T480-480Zm0-80q17 0 28.5-11.5T520-600q0-17-11.5-28.5T480-640q-17 0-28.5 11.5T440-600q0 17 11.5 28.5T480-560Zm1 240Zm-1-280Z'/%3E%3C/svg%3E"); }
[data-icon="devices"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M480-540Zm-40 380H120q-17 0-28.5-11.5T80-200q0-17 11.5-28.5T120-240h320q17 0 28.5 11.5T480-200q0 17-11.5 28.5T440-160ZM200-280q-33 0-56.5-23.5T120-360v-360q0-33 23.5-56.5T200-800h600q17 0 28.5 11.5T840-760q0 17-11.5 28.5T800-720H200v360h240q17 0 28.5 11.5T480-320q0 17-11.5 28.5T440-280H200Zm600 40v-320H640v320h160Zm-180 80q-25 0-42.5-17.5T560-220v-360q0-25 17.5-42.5T620-640h200q25 0 42.5 17.5T880-580v360q0 25-17.5 42.5T820-160H620Zm100-300q13 0 21.5-9t8.5-21q0-13-8.5-21.5T720-520q-12 0-21 8.5t-9 21.5q0 12 9 21t21 9Zm0 60Z'/%3E%3C/svg%3E"); }
[data-icon="bedtime"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M484-80q-84 0-157.5-32t-128-86.5Q144-253 112-326.5T80-484q0-128 72-232t193-146q22-8 41 5.5t18 36.5q-3 85 27 162t90 137q60 60 137 90t162 27q26-1 38.5 17.5T863-345q-44 120-147.5 192.5T484-80Zm0-80q88 0 163-44t118-121q-86-8-163-43.5T464-465q-61-61-97-138t-43-163q-77 43-120.5 118.5T160-484q0 135 94.5 229.5T484-160Zm-20-305Z'/%3E%3C/svg%3E"); }

/* Icons added for About Us. */
[data-icon="check_circle"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='m424-408-86-86q-11-11-28-11t-28%2011q-11%2011-11%2028t11%2028l114%20114q12%2012%2028%2012t28-12l226-226q11-11%2011-28t-11-28q-11-11-28-11t-28%2011L424-408Zm56%20328q-83%200-156-31.5T197-197q-54-54-85.5-127T80-480q0-83%2031.5-156T197-763q54-54%20127-85.5T480-880q83%200%20156%2031.5T763-763q54%2054%2085.5%20127T880-480q0%2083-31.5%20156T763-197q-54%2054-127%2085.5T480-80Zm0-80q134%200%20227-93t93-227q0-134-93-227t-227-93q-134%200-227%2093t-93%20227q0%20134%2093%20227t227%2093Zm0-320Z'/%3E%3C/svg%3E"); }
[data-icon="verified"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='m438-452-58-57q-11-11-27.5-11T324-508q-11%2011-11%2028t11%2028l86%2086q12%2012%2028%2012t28-12l170-170q12-12%2011.5-28T636-592q-12-12-28.5-12.5T579-593L438-452ZM326-90l-58-98-110-24q-15-3-24-15.5t-7-27.5l11-113-75-86q-10-11-10-26t10-26l75-86-11-113q-2-15%207-27.5t24-15.5l110-24%2058-98q8-13%2022-17.5t28%201.5l104%2044%20104-44q14-6%2028-1.5t22%2017.5l58%2098%20110%2024q15%203%2024%2015.5t7%2027.5l-11%20113%2075%2086q10%2011%2010%2026t-10%2026l-75%2086%2011%20113q2%2015-7%2027.5T802-212l-110%2024-58%2098q-8%2013-22%2017.5T584-74l-104-44-104%2044q-14%206-28%201.5T326-90Zm52-72%20102-44%20104%2044%2056-96%20110-26-10-112%2074-84-74-86%2010-112-110-24-58-96-102%2044-104-44-56%2096-110%2024%2010%20112-74%2086%2074%2084-10%20114%20110%2024%2058%2096Zm102-318Z'/%3E%3C/svg%3E"); }
[data-icon="medical_services"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M440-360v80q0%2017%2011.5%2028.5T480-240q17%200%2028.5-11.5T520-280v-80h80q17%200%2028.5-11.5T640-400q0-17-11.5-28.5T600-440h-80v-80q0-17-11.5-28.5T480-560q-17%200-28.5%2011.5T440-520v80h-80q-17%200-28.5%2011.5T320-400q0%2017%2011.5%2028.5T360-360h80ZM160-80q-33%200-56.5-23.5T80-160v-480q0-33%2023.5-56.5T160-720h160v-80q0-33%2023.5-56.5T400-880h160q33%200%2056.5%2023.5T640-800v80h160q33%200%2056.5%2023.5T880-640v480q0%2033-23.5%2056.5T800-80H160Zm0-80h640v-480H160v480Zm240-560h160v-80H400v80ZM160-160v-480%20480Z'/%3E%3C/svg%3E"); }
[data-icon="forum"]::before { --pt-icon: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M840-136q-8%200-15-3t-13-9l-92-92H320q-33%200-56.5-23.5T240-320v-40h440q33%200%2056.5-23.5T760-440v-280h40q33%200%2056.5%2023.5T880-640v463q0%2018-12%2029.5T840-136ZM160-473l47-47h393v-280H160v327Zm-40%20137q-16%200-28-11.5T80-377v-423q0-33%2023.5-56.5T160-880h440q33%200%2056.5%2023.5T680-800v280q0%2033-23.5%2056.5T600-440H240l-92%2092q-6%206-13%209t-15%203Zm40-184v-280%20280Z'/%3E%3C/svg%3E"); }


.pt-other__arrow { --pt-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M647-440H200q-17 0-28.5-11.5T160-480q0-17 11.5-28.5T200-520h447L451-716q-12-12-11.5-28t12.5-28q12-11 28-11.5t28 11.5l264 264q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L508-188q-11 11-27.5 11T452-188q-12-12-12-28.5t12-28.5l195-195Z'/%3E%3C/svg%3E"); }

/* Per-component glyph size and colour (1em resolves against these). */
.pt-chip[data-icon]::before           { font-size: 21px; color: var(--wp--preset--color--brown-light); }
.pt-iconcard__icon[data-icon]::before { font-size: 28px; color: var(--wp--preset--color--forest); }
.pt-other__arrow::before              { font-size: 24px; color: var(--wp--preset--color--forest); }

/* =========================================================
   PROGRAM PAGE FIXES
   ========================================================= */

/* WP block-gap was pushing grid items 2+ down by 34px, staggering the rows. */
.pt-iconcards > *,
.pt-others > *,
.pt-tiles > *,
.pt-checklist__items > * {
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}

/* "Text on forest" applies to the section's own copy, not to text inside the
   cream cards sitting on it. */
.pt-progpage .pt-onforest > p,
.pt-progpage .pt-onforest > .pt-intro-720 > p {
	color: var(--wp--preset--color--sand-border) !important;
}

.pt-progpage .pt-onforest .pt-iconcard p {
	color: var(--wp--preset--color--body) !important;
}

.pt-progpage .pt-onforest .pt-iconcard h3 {
	color: var(--wp--preset--color--forest) !important;
}

/* Breadcrumb must stay in the 1180px column; the margin shorthand had wiped
   WP's auto side margins and pushed it to the viewport edge. */
.pt-crumbs {
	max-width: 1180px !important;
	margin-left: auto !important;
	margin-right: auto !important;
	margin-top: 0 !important;
	margin-bottom: clamp(24px, 4vw, 44px) !important;
}

/* Design: <div style="max-width:720px;margin:0 0 clamp(28px,3vw,40px)"> sitting
   inside the 1180px container, so its left edge is the COLUMN edge (50px at
   1280), not the section's 24px gutter. Offset by half the gap between the
   section's content box and the 1180 column. */
.pt-intro-720 {
	max-width: 720px !important;
	margin-left: max(0px, calc((100% - 1180px) / 2)) !important;
	margin-right: auto !important;
	margin-top: 0 !important;
	margin-bottom: clamp(28px, 3vw, 40px) !important;
}

.pt-intro-720 > * { margin-block-start: 0; margin-block-end: 0; }
.pt-intro-720 h2 { margin-top: 0 !important;
	margin-bottom: 16px !important; }
.pt-intro-720 p  { margin: 0 0 14px !important; }
.pt-intro-720 p:last-child { margin-bottom: 0 !important; }

/* Closing CTA heading is clamp(30px,4vw,48px) in the design, larger than the
   generic section h2 - it was being overridden by the page-wide rule. */
.pt-progpage .entry-content .pt-closing h2.wp-block-heading {
	font-size: clamp(30px, 4vw, 48px) !important;
	line-height: 1.08;
}

/* The global header and footer are template parts shared by every page; no
   page-scoped rule may restyle them. Page typography is confined to
   .entry-content above. This re-asserts the footer heading spec in case a
   future page-level rule leaks again. */
.pt-footer .pt-footer__heading,
.pt-footer h2.pt-footer__heading {
	font-size: 19px !important;
	font-weight: 700 !important;
	line-height: 1.2 !important;
	margin-top: 0 !important;
	margin-bottom: 12px !important;
	letter-spacing: 0 !important;
	color: var(--wp--preset--color--forest) !important;
}

/* =========================================================
   PROGRAM PAGE VERTICAL RHYTHM

   WP flow layout puts margin-block-start: 34px on every element inside a
   column, which stacks on top of the design's own margins. Measured gaps were
   54/34/34px against a spec of 20/20/28px. Clear the block-gap inside columns
   and apply the design's margins explicitly.
   ========================================================= */

.pt-progpage .entry-content .wp-block-column > * {
	margin-block-start: 0 !important;
}

/* Hero column: eyebrow 0 0 20, h1 0 0 20, intro 0 0 28, buttons 0 */
.pt-progpage .pt-prog-hero .pt-eyebrow        { margin: 0 0 20px !important; }
.pt-progpage .pt-prog-hero h1.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 20px !important; }
.pt-progpage .pt-prog-hero .pt-lede            { margin: 0 0 28px !important; }
.pt-progpage .pt-prog-hero .wp-block-buttons   { margin: 0 !important; }

/* Body sections: h2 0 0 18, paragraphs 0 0 14 (last one flush) */
.pt-progpage .entry-content .wp-block-column h2.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 18px !important; }
.pt-progpage .entry-content .wp-block-column p.pt-measure        { margin: 0 0 14px !important; }
.pt-progpage .entry-content .wp-block-column p.pt-measure:last-child { margin-bottom: 0 !important; }

/* Tiles sit 10px below the paragraph above them, per the design. */
.pt-progpage .pt-tiles { margin: 10px 0 0 !important; }

/* "Other Programs" is clamp(22px,2.2vw,28px) in the design - smaller than the
   generic section h2. The page-scoped rule was outranking it. */
.pt-progpage .entry-content .pt-others__head h2.wp-block-heading {
	font-size: clamp(22px, 2.2vw, 28px) !important;
	line-height: 1.2;
	margin: 0 !important;
}

/* Manual line breaks in headings help at desktop width but cause awkward
   breaks once columns stack, so drop them below the stacking point. */
@media (max-width: 781px) {
	.pt-progpage .entry-content h1 br,
	.pt-progpage .entry-content h2 br {
		display: none;
	}
}

/* =========================================================
   TILES (right-hand variant) and ICON PAIR
   From Program Detail.dc.html: s4.tilesRight and s6.hasPair.
   ========================================================= */

/* Design: 2 columns, gap 14, white cards radius 20, padding 22px 20px,
   Baloo 2 700 clamp(19px,2vw,24px), 20px dot radius 6 with inset shadow. */
.pt-tiles--right {
	grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	gap: 14px !important;
	margin: 0 !important;
}

.pt-tiles--right p {
	border-radius: 20px;
	padding: 22px 20px;
	gap: 14px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(19px, 2vw, 24px);
	line-height: 1.1;
	font-weight: 700;
	color: var(--wp--preset--color--forest) !important;
	box-shadow: 0 6px 16px rgba(46, 42, 38, 0.06);
}

.pt-tiles--right p::before {
	width: 20px;
	height: 20px;
	border-radius: 6px;
	box-shadow: inset 0 -3px 0 rgba(0, 0, 0, 0.16);
}

@media (max-width: 560px) {
	.pt-tiles--right { grid-template-columns: 1fr !important; }
}

/* Design: auto-fit minmax(min(100%,340px),1fr), gap 22, white radius 28,
   padding clamp(26px,3vw,40px), 56px icon tile radius 18 on #F7F1E6. */
.pt-pair {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr));
	gap: 22px;
}

.pt-pair > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-paircard {
	background: var(--wp--preset--color--white);
	border-radius: 28px;
	padding: clamp(26px, 3vw, 40px);
	display: flex;
	flex-direction: column;
	gap: 12px;
}

.pt-paircard > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-paircard__icon {
	width: 56px;
	height: 56px;
	border-radius: 18px;
	background: var(--wp--preset--color--sand-light);
	color: var(--wp--preset--color--forest) !important;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0 0 4px !important;
	font-size: 0;
}

.pt-paircard__icon[data-icon]::before { font-size: 30px; }

.pt-progpage .entry-content .pt-paircard h2.wp-block-heading {
	font-size: clamp(24px, 2.6vw, 32px) !important;
	line-height: 1.15;
	margin: 0 !important;
}

.pt-paircard p {
	font-size: clamp(16px, 1.4vw, 18px);
	line-height: 1.65;
	color: var(--wp--preset--color--body) !important;
	margin: 0;
}

/* Checklist card lives inside a white section; its own copy is dark. */
.pt-progpage .entry-content .pt-checklist p { color: var(--wp--preset--color--ink) !important; }
.pt-progpage .entry-content .pt-checklist .pt-checklist__title { color: var(--wp--preset--color--forest) !important; }
.pt-checklist { margin-top: clamp(32px, 4vw, 48px) !important; }

/* =========================================================
   PROGRAMS INDEX — components from Programs.dc.html
   ========================================================= */

.pt-indexpage .entry-content h1.wp-block-heading { font-size: clamp(38px, 5vw, 62px) !important; line-height: 1.04; margin-top: 0 !important;
	margin-bottom: 20px !important; }
.pt-indexpage .entry-content h2.wp-block-heading { font-size: clamp(28px, 3.4vw, 44px) !important; line-height: 1.1; margin-top: 0 !important;
	margin-bottom: 18px !important; }
/* Order matters: the generic section rule must come first so the hero's own
   smaller padding wins. Design: hero clamp(18px,2.5vw,28px) top, other
   sections clamp(48px,6vw,88px). */
.pt-indexpage .pt-section { padding-top: clamp(48px, 6vw, 88px) !important; padding-bottom: clamp(48px, 6vw, 88px) !important; }
.pt-indexpage .pt-section.pt-prog-hero { padding-top: clamp(18px, 2.5vw, 28px) !important; padding-bottom: clamp(48px, 6vw, 80px) !important; }
.pt-indexpage .entry-content .wp-block-column > * { margin-block-start: 0 !important; }
.pt-indexpage .pt-prog-hero .pt-lede { margin: 0 0 28px !important; max-width: 52ch; }
.pt-indexpage .pt-prog-hero .wp-block-buttons { margin: 0 !important; }

/* Hero eyebrow carries four colour chips instead of the tree icon. */
.pt-eyebrow--ages { padding: 9px 16px 9px 12px; gap: 9px; }

.pt-eyebrow--ages::before {
	content: "";
	width: 45px;
	height: 9px;
	flex: 0 0 auto;
	background-image:
		linear-gradient(#D6483B, #D6483B), linear-gradient(#2C6EB5, #2C6EB5),
		linear-gradient(#F2C230, #F2C230), linear-gradient(#E58A2B, #E58A2B);
	background-size: 9px 9px;
	background-position: 0 0, 12px 0, 24px 0, 36px 0;
	background-repeat: no-repeat;
	border-radius: 2px;
	mask: none;
	-webkit-mask: none;
}

/* Age quick-nav */
.pt-agenav {
	margin-top: clamp(36px, 5vw, 56px) !important;
	background: var(--wp--preset--color--white);
	border-radius: 24px;
	padding: 8px;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
	gap: 6px;
	box-shadow: 0 6px 18px rgba(46, 42, 38, 0.05);
}

.pt-agenav > * { margin: 0 !important; }

.pt-agenav a {
	display: flex;
	align-items: stretch;
	gap: 12px;
	padding: 14px 16px;
	border-radius: 18px;
	text-decoration: none;
}

.pt-agenav a:hover { background: var(--wp--preset--color--sand-light); }
.pt-agenav a::before { content: ""; width: 6px; border-radius: 3px; flex: 0 0 auto; background: var(--pt-accent); }
.pt-agenav__age  { display: block; font-size: 14px; font-weight: 600; color: var(--wp--preset--color--muted); }
.pt-agenav__name { display: block; font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: 19px; line-height: 1.15; color: var(--wp--preset--color--forest); margin-top: 2px; }

/* Program cards */
.pt-progcards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 440px), 1fr)); gap: 24px; }
.pt-progcards > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-progcard {
	background: var(--wp--preset--color--cream);
	border-radius: 28px;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	scroll-margin-top: 170px;
}

.pt-progcard > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.pt-progcard .pt-ph { border-radius: 0; aspect-ratio: 16 / 10; padding: 16px; }
.pt-progcard__body { padding: clamp(22px, 3vw, 32px); display: flex; flex-direction: column; gap: 10px; flex: 1 1 auto; }
.pt-progcard__body > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-progcard__age {
	align-self: flex-start;
	background: var(--pt-accent);
	color: var(--pt-accent-ink) !important;
	font-weight: 700;
	font-size: 14px;
	line-height: 1;
	padding: 8px 14px;
	border-radius: var(--wp--custom--radius--pill);
}

.pt-indexpage .entry-content .pt-progcard__body h2.wp-block-heading {
	font-size: clamp(26px, 2.6vw, 32px) !important;
	line-height: 1.1;
	margin: 4px 0 0 !important;
}

.pt-progcard__body p { font-size: 17px; line-height: 1.6; color: var(--wp--preset--color--body) !important; margin: 0; flex: 1 1 auto; }

.pt-progcard__link {
	align-self: flex-start;
	margin-top: 8px !important;
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 50px;
	padding: 0 22px;
	border-radius: var(--wp--custom--radius--pill);
	border: 2px solid var(--wp--preset--color--forest);
	background: var(--wp--preset--color--white);
	font-weight: 700;
	font-size: 16px;
	color: var(--wp--preset--color--forest) !important;
	text-decoration: none;
}

.pt-progcard__link:hover { background: var(--wp--preset--color--forest); color: var(--wp--preset--color--white) !important; }
.pt-progcard__link::after { content: ""; width: 20px; height: 20px; flex: 0 0 auto; background-color: currentColor; -webkit-mask: var(--pt-arrow) center/contain no-repeat; mask: var(--pt-arrow) center/contain no-repeat; }

/* Approach list card */
.pt-approach { background: var(--wp--preset--color--white); border-radius: 28px; padding: clamp(24px, 3.4vw, 40px); box-shadow: 0 8px 24px rgba(46, 42, 38, 0.06); }
.pt-approach > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.pt-approach__title { font-family: var(--wp--preset--font-family--heading); font-weight: 700; font-size: clamp(20px, 2vw, 24px); line-height: 1.2; color: var(--wp--preset--color--forest) !important; margin-top: 0 !important;
	margin-bottom: 20px !important; }
.pt-approach__list > * { margin: 0 !important; }

.pt-approach__list p {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 14px 0;
	border-top: 1px solid var(--wp--preset--color--sand-border);
	font-size: 17px;
	line-height: 1.4;
	font-weight: 600;
	color: var(--wp--preset--color--ink) !important;
}

.pt-approach__list p::before {
	content: "";
	width: 26px;
	height: 26px;
	flex: 0 0 auto;
	border-radius: 50%;
	background-color: var(--wp--preset--color--forest);
	background-image: var(--pt-tick);
	background-size: 22px 22px;
	background-position: center;
	background-repeat: no-repeat;
}

/* Parts of the day */
.pt-day {
	background: var(--wp--preset--color--sand-light);
	border-radius: 28px;
	padding: clamp(18px, 2.4vw, 28px);
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 130px), 1fr));
	gap: 10px;
}

.pt-day > * { margin: 0 !important; }

.pt-day p {
	background: var(--wp--preset--color--white);
	border-radius: 18px;
	padding: 18px 14px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
	text-align: center;
	font-weight: 700;
	font-size: 16px;
	line-height: 1.25;
	color: var(--wp--preset--color--ink) !important;
	margin: 0;
}

.pt-day p[data-icon]::before { font-size: 30px; color: var(--wp--preset--color--brown-light); }

.pt-indexpage .pt-balanced__head { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: clamp(16px, 4vw, 60px); align-items: start; margin-bottom: clamp(28px, 4vw, 44px); }
.pt-indexpage .pt-balanced__head > * { margin: 0 !important; }

:root {
	--pt-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='24' viewBox='0 -960 960 960' width='24'%3E%3Cpath d='M647-440H200q-17 0-28.5-11.5T160-480q0-17 11.5-28.5T200-520h447L451-716q-12-12-11.5-28t12.5-28q12-11 28-11.5t28 11.5l264 264q6 6 8.5 13t2.5 15q0 8-2.5 15t-8.5 13L508-188q-11 11-27.5 11T452-188q-12-12-12-28.5t12-28.5l195-195Z'/%3E%3C/svg%3E");
	--pt-tick: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M9.55 17.2 4.4 12.05l1.42-1.42 3.73 3.73 8.63-8.63 1.42 1.42z'/%3E%3C/svg%3E");
}

/* Card links sit inside a coloured-background card, so WP auto-contrast claims
   them. Match its specificity to keep the design's forest green. */
body .wp-site-blocks .pt-progcard .pt-progcard__link,
body .wp-site-blocks .pt-progcard .pt-progcard__link:visited {
	color: var(--wp--preset--color--forest) !important;
}

body .wp-site-blocks .pt-progcard .pt-progcard__link:hover {
	color: var(--wp--preset--color--white) !important;
	background: var(--wp--preset--color--forest) !important;
}

/* =========================================================
   AGE PILLS — specificity fix

   Design (Programs.dc.html): background accent, color #FFFFFF for red/blue and
   #3B2A12 / #3B2208 for yellow/orange, font-size 14px, line-height 1,
   padding 8px 14px -> 30px tall.

   `.pt-progcard__body p` is (0,2,1) and was overriding font-size, line-height
   AND colour on the pill. These selectors match or exceed it.
   ========================================================= */

.pt-progcard .pt-progcard__body p.pt-progcard__age,
body .wp-site-blocks .pt-progcard__body p.pt-progcard__age {
	font-size: 14px !important;
	line-height: 1 !important;
	font-weight: 700 !important;
	padding: 8px 14px !important;
	border-radius: var(--wp--custom--radius--pill) !important;
	align-self: flex-start;
	background: var(--pt-accent) !important;
	color: var(--pt-accent-ink) !important;
	flex: 0 0 auto;
}

/* Same guarantee for the other two pill variants. */
body .wp-site-blocks .pt-other .pt-other__age {
	font-size: 13px !important;
	line-height: 1 !important;
	padding: 6px 12px !important;
	color: var(--pt-accent-ink) !important;
	background: var(--pt-accent) !important;
}

body .wp-site-blocks .pt-prog-hero p.pt-eyebrow {
	font-size: 15px !important;
	line-height: 1 !important;
	padding: 9px 16px !important;
	color: var(--pt-accent-ink) !important;
	background: var(--pt-accent) !important;
}

body .wp-site-blocks .pt-prog-hero p.pt-eyebrow--ages {
	background: var(--wp--preset--color--sand) !important;
	color: var(--wp--preset--color--brown) !important;
	padding: 9px 16px 9px 12px !important;
}

/* The program strip belongs to the homepage only (it exists solely in
   Homepage A - Mascot.dc.html, not in Site Header.dc.html). It lives in the
   shared header part for markup convenience, so hide it everywhere else. */
.pt-progstrip { display: none !important; }
.pt-homepage .pt-progstrip { display: flex !important; }

/* =========================================================
   TEXT WRAPPING

   The design sets text-wrap:balance on every h1/h2 (14 occurrences) and
   text-wrap:pretty on body copy (47). Neither was implemented, which is why
   headings broke awkwardly. Browsers balance headings automatically with this;
   no manual <br> is needed, and the design contains none.
   ========================================================= */

.wp-site-blocks h1,
.wp-site-blocks h2,
.wp-site-blocks h3,
.pt-closing h2,
.pt-eyebrow {
	text-wrap: balance;
}

.wp-site-blocks p,
.pt-measure,
.pt-lede,
.pt-section__intro,
.pt-card__body p,
.pt-why__card p,
.pt-review p,
.pt-progcard__body p {
	text-wrap: pretty;
}

/* Program card photo: same 16/10 frame the placeholder uses, flush to the
   card's top corners. */
.pt-progcard__img {
	margin: 0 !important;
	border-radius: 0;
	line-height: 0;
}

.pt-progcard__img img {
	width: 100%;
	aspect-ratio: 16 / 10;
	object-fit: cover;
	display: block;
	border-radius: 0;
}

/* =========================================================
   PARAGRAPH SPACING IN PROGRAM COLUMNS

   Design: every body paragraph is margin:0 0 14px, last one flush. My earlier
   rule only matched p.pt-measure, so paragraphs the generator emits without
   that class (the green feature section, the sand section) ran together with
   no gap at all once block-gap was reset.
   ========================================================= */

.pt-progpage .entry-content .wp-block-column > p:not(.pt-eyebrow):not(.pt-lede):not(.pt-tag),
.pt-indexpage .entry-content .wp-block-column > p:not(.pt-eyebrow):not(.pt-lede) {
	margin: 0 0 14px !important;
}

.pt-progpage .entry-content .wp-block-column > p:last-child,
.pt-indexpage .entry-content .wp-block-column > p:last-child {
	margin-bottom: 0 !important;
}

/* The hero keeps its own larger rhythm. */
.pt-progpage .pt-prog-hero .pt-lede,
.pt-indexpage .pt-prog-hero .pt-lede { margin: 0 0 28px !important; }
.pt-progpage .pt-prog-hero .pt-eyebrow,
.pt-indexpage .pt-prog-hero .pt-eyebrow { margin: 0 0 20px !important; }

/* 4:3 photo frame (design uses this ratio for the green feature section). */
.pt-photo--43 img { aspect-ratio: 4 / 3; box-shadow: none; }

/* Crop anchoring: the 16:10 card frame was cutting the top off a subject whose
   head sits high in the source photo. */
.pt-focus-top img { object-position: center top !important; }

/* =========================================================
   SUBPAGES (Our Facility, Enrollment & Tours)
   Same type scale and rhythm as the Programs index.
   ========================================================= */

.pt-subpage .entry-content h1.wp-block-heading { font-size: clamp(38px, 5vw, 62px) !important; line-height: 1.04; margin: 0 !important; }
.pt-subpage .entry-content h2.wp-block-heading { font-size: clamp(28px, 3.4vw, 44px) !important; line-height: 1.1; margin-top: 0 !important;
	margin-bottom: 18px !important; }
.pt-subpage .pt-section { padding-top: clamp(48px, 6vw, 88px) !important; padding-bottom: clamp(48px, 6vw, 88px) !important; }
.pt-subpage .pt-section.pt-prog-hero { padding-top: clamp(18px, 2.5vw, 28px) !important; padding-bottom: clamp(48px, 6vw, 80px) !important; }
.pt-subpage .entry-content .wp-block-column > * { margin-block-start: 0 !important; }
.pt-subpage .entry-content .wp-block-column > p:not(.pt-eyebrow):not(.pt-lede) { margin: 0 0 14px !important; }
.pt-subpage .entry-content .wp-block-column > p:last-child { margin-bottom: 0 !important; }
.pt-subpage .pt-prog-hero .pt-eyebrow { margin: 0 0 20px !important; }
.pt-subpage .pt-prog-hero .pt-lede { margin: 0 0 28px !important; max-width: 50ch; }
.pt-subpage .pt-prog-hero .wp-block-buttons { margin: 0 !important; }

/* Hero split is bottom-aligned on these pages (align-items:end in the design). */
.pt-hero-end > .wp-block-columns { align-items: flex-end !important; margin-bottom: clamp(28px, 4vw, 44px) !important; }
.pt-hero-end > .wp-block-columns > .wp-block-column { align-self: flex-end !important; }

/* 21:9 banner photo */
.pt-ph--21x9 { aspect-ratio: 21 / 9; min-height: 260px; }
.pt-photo--21x9 img { aspect-ratio: 21 / 9; min-height: 260px; width: 100%; object-fit: cover; display: block; }

/* "A Look Inside" header row: heading left, supporting copy right */
.pt-inside__head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 12px 40px;
	margin-bottom: clamp(24px, 3.5vw, 40px);
}

.pt-inside__head > * { margin: 0 !important; }
.pt-inside__head p { max-width: 48ch; }

.pt-inside__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
	gap: 24px;
}

.pt-inside__grid > * { margin: 0 !important; }
.pt-inside__grid .pt-ph { border-radius: 28px; aspect-ratio: 4 / 3; padding: 16px; }
.pt-inside__grid img { border-radius: 28px; aspect-ratio: 4 / 3; width: 100%; object-fit: cover; display: block; }

/* Playground section on forest: heading white, supporting copy sand. */
.pt-subpage .pt-onforest h2 { color: var(--wp--preset--color--white) !important; }
.pt-subpage .pt-onforest > .wp-block-columns p { color: var(--wp--preset--color--sand-border) !important; }
.pt-subpage .pt-playground .entry-content h2,
.pt-playground h2.wp-block-heading { font-size: clamp(30px, 3.8vw, 48px) !important; line-height: 1.08; }

/* Our Facility corrections, measured against Our Facility.dc.html */

/* Playground heading is clamp(30px,3.8vw,48px), larger than the generic
   subpage h2 - needs to outrank .pt-subpage .entry-content h2 (0,3,1). */
.pt-subpage .entry-content .pt-playground h2.wp-block-heading {
	font-size: clamp(30px, 3.8vw, 48px) !important;
	line-height: 1.08;
}

/* "A Look Inside" supporting copy sits outside a column, so the column
   paragraph colour rule never reached it and auto-contrast claimed it. */
.pt-inside__head p,
.pt-subpage .entry-content .pt-inside__head p {
	color: var(--wp--preset--color--body) !important;
	font-size: clamp(16px, 1.4vw, 19px);
	line-height: 1.65;
}

/* aspect-ratio + min-height on an auto-width box makes the browser derive WIDTH
   from the min-height: at 390px the 21:9 banner computed to 607px wide and blew
   out the page. Pinning width:100% keeps the ratio driving height only. */
.pt-ph,
.pt-ph--21x9,
.pt-photo--21x9 img {
	width: 100%;
	max-width: 100%;
}

/* Below the banner's natural height the min-height is what distorts it, so drop
   it on small screens and let the ratio do the work. */
@media (max-width: 760px) {
	.pt-ph--21x9,
	.pt-photo--21x9 img {
		min-height: 0;
	}
}


/* Standalone icon data for ::before/::after that cannot carry data-icon
   (button links and <summary> markers). */
:root {
	--pt-icon-call: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M798-120q-125%200-247-54.5T329-329Q229-429%20174.5-551T120-798q0-18%2012-30t30-12h162q14%200%2025%209.5t13%2022.5l26%20140q2%2016-1%2027t-11%2019l-97%2098q20%2037%2047.5%2071.5T387-386q31%2031%2065%2057.5t72%2048.5l94-94q9-9%2023.5-13.5T670-390l138%2028q14%204%2023%2014.5t9%2023.5v162q0%2018-12%2030t-30%2012ZM241-600l66-66-17-94h-89q5%2041%2014%2081t26%2079Zm358%20358q39%2017%2079.5%2027t81.5%2013v-88l-94-19-67%2067ZM241-600Zm358%20358Z'/%3E%3C/svg%3E");
	--pt-icon-open-in-new: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20d='M200-120q-33%200-56.5-23.5T120-200v-560q0-33%2023.5-56.5T200-840h240q17%200%2028.5%2011.5T480-800q0%2017-11.5%2028.5T440-760H200v560h560v-240q0-17%2011.5-28.5T800-480q17%200%2028.5%2011.5T840-440v240q0%2033-23.5%2056.5T760-120H200Zm560-584L416-360q-11%2011-28%2011t-28-11q-11-11-11-28t11-28l344-344H600q-17%200-28.5-11.5T560-800q0-17%2011.5-28.5T600-840h200q17%200%2028.5%2011.5T840-800v200q0%2017-11.5%2028.5T800-560q-17%200-28.5-11.5T760-600v-104Z'/%3E%3C/svg%3E");
	--pt-icon-add: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20fill='%25231F5B34'%20d='M440-440H240q-17%200-28.5-11.5T200-480q0-17%2011.5-28.5T240-520h200v-200q0-17%2011.5-28.5T480-760q17%200%2028.5%2011.5T520-720v200h200q17%200%2028.5%2011.5T760-480q0%2017-11.5%2028.5T720-440H520v200q0%2017-11.5%2028.5T480-200q-17%200-28.5-11.5T440-240v-200Z'/%3E%3C/svg%3E");
	--pt-icon-remove: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20height='24'%20viewBox='0%20-960%20960%20960'%20width='24'%3E%3Cpath%20fill='%25231F5B34'%20d='M240-440q-17%200-28.5-11.5T200-480q0-17%2011.5-28.5T240-520h480q17%200%2028.5%2011.5T760-480q0%2017-11.5%2028.5T720-440H240Z'/%3E%3C/svg%3E");
}
/* ==========================================================================
   Enrollment & Tours — measured against Enrollment and Tours.dc.html
   ========================================================================== */

/* The design lays its splits out with grid auto-fit/minmax, which collapses at
   a width derived from the track minimum. WP columns are flex and collapse at a
   fixed 781px, so between ~781px and the design's own breakpoint the columns
   would be narrower than the design ever allows. Grid reproduces it exactly. */
.pt-enroll-hero__grid,
.pt-expect__grid,
.pt-visit__grid,
.pt-close2__grid {
	display: grid !important;
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}
.pt-enroll-hero__grid > .wp-block-column,
.pt-expect__grid > .wp-block-column,
.pt-visit__grid > .wp-block-column,
.pt-close2__grid > .wp-block-column {
	flex-basis: auto !important;
	min-width: 0;
}

.pt-enroll-hero__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr));
	gap: clamp(32px, 5vw, 64px);
	/* WP core sets align-items on .wp-block-columns with !important. */
	align-items: start !important;
}
.pt-enroll-hero__copy { padding-top: clamp(0px, 1.5vw, 16px); }

/* Hero h1 is clamp(38,4.6vw,58) here, not the shared subpage clamp(38,5vw,62). */
.pt-subpage .entry-content .pt-enroll-hero h1.wp-block-heading {
	font-size: clamp(38px, 4.6vw, 58px) !important;
	line-height: 1.04;
	margin-top: 0 !important;
	margin-bottom: 20px !important;
}
.pt-subpage .pt-enroll-hero .pt-eyebrow {
	line-height: 1.2;
	margin: 0 0 20px !important;
}
.pt-subpage .pt-enroll-hero .pt-lede {
	margin: 0 0 22px !important;
	max-width: 52ch;
}
.pt-subpage .pt-section.pt-enroll-hero {
	padding-top: clamp(18px, 2.5vw, 28px) !important;
	padding-bottom: clamp(48px, 6vw, 88px) !important;
}

/* Inline note with the blue child_care tile */
.pt-subpage .entry-content .pt-enroll-hero .wp-block-column > p.pt-note,
.pt-note {
	display: flex;
	align-items: center;
	gap: 12px;
	font-size: 17px;
	line-height: 1.5;
	font-weight: 600;
	color: var(--wp--preset--color--ink) !important;
	margin: 0 0 28px !important;
}
.pt-note__icon {
	width: 40px;
	height: 40px;
	flex: 0 0 auto;
	border-radius: 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #FFF7EA !important;
	font-size: 0;
}
.pt-note__icon::before { font-size: 22px; }
.pt-note__icon--blue {
	background: #2C6EB5;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.20), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-note__text { flex: 1 1 auto; }
.pt-note a {
	color: var(--wp--preset--color--forest) !important;
	text-decoration: underline;
	text-underline-offset: 3px;
	text-decoration-thickness: 2px;
}
.pt-note a:hover { color: #2E7D46 !important; }

/* Outline buttons that carry a leading icon */
.pt-btn--call > .wp-block-button__link,
.pt-btn--maps > .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	gap: 10px;
}
.pt-btn--call > .wp-block-button__link::before,
.pt-btn--maps > .wp-block-button__link::after {
	content: "";
	width: 1em;
	height: 1em;
	flex: 0 0 auto;
	background-color: currentColor;
	mask: var(--pt-icon) center / contain no-repeat;
	-webkit-mask: var(--pt-icon) center / contain no-repeat;
}
.pt-btn--call > .wp-block-button__link::before {
	--pt-icon: var(--pt-icon-call);
	font-size: 22px;
}
.pt-btn--maps > .wp-block-button__link::after {
	--pt-icon: var(--pt-icon-open-in-new);
	font-size: 20px;
}

/* ---------- 02 What to Expect ---------- */
.pt-expect__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr));
	gap: clamp(28px, 4vw, 60px);
	align-items: center;
}
.pt-subpage .entry-content .pt-expect h2.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 24px !important; }

.pt-steps {
	list-style: none !important;
	margin: 0 !important;
	padding: 0 !important;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.pt-steps > li {
	display: flex;
	align-items: center;
	gap: 16px;
	background: var(--wp--preset--color--cream);
	border-radius: 18px;
	padding: 14px 18px;
	font-size: 17px;
	line-height: 1.45;
	font-weight: 600;
	color: var(--wp--preset--color--ink) !important;
	margin: 0;
}
.pt-steps__n {
	width: 40px;
	height: 40px;
	flex: 0 0 auto;
	border-radius: 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: 21px;
	line-height: 1;
}
.pt-steps__n--red {
	background: #D6483B; color: #FFF7EA;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.20), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-steps__n--blue {
	background: #2C6EB5; color: #FFF7EA;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.20), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-steps__n--yellow {
	background: #F2C230; color: #3B2A12;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.16), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-steps__n--orange {
	background: #E58A2B; color: #3B2208;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.18), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-steps__t { flex: 1 1 auto; }

/* ---------- 03 Plan Your Visit ---------- */
.pt-subpage .entry-content .pt-visit h2.pt-visit__title {
	margin-top: 0 !important;
	margin-bottom: clamp(24px, 3.5vw, 40px) !important;
}
.pt-visit__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
	gap: 24px;
	align-items: stretch;
}
.pt-visit__grid > .wp-block-column { display: flex; }

.pt-visitcard {
	flex: 1 1 auto;
	background: var(--wp--preset--color--white);
	border-radius: 28px;
	padding: clamp(24px, 3.4vw, 40px);
	box-shadow: 0 8px 24px rgba(46, 42, 38, 0.06);
	display: flex;
	flex-direction: column;
	gap: 22px;
}
.pt-visitcard > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-visitcard__row {
	display: flex;
	gap: 16px;
	align-items: flex-start;
}
.pt-visitcard__row > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.pt-visitcard__icon {
	width: 44px;
	height: 44px;
	flex: 0 0 auto;
	border-radius: 11px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0;
	margin: 0 !important;
}
.pt-visitcard__icon::before { font-size: 24px; }
.pt-visitcard__icon--red {
	background: #D6483B; color: #FFF7EA !important;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.20), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-visitcard__icon--blue {
	background: #2C6EB5; color: #FFF7EA !important;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.20), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-visitcard__icon--yellow {
	background: #F2C230; color: #3B2A12 !important;
	box-shadow: inset 0 -5px 0 rgba(0, 0, 0, 0.16), inset 4px 4px 0 rgba(255, 255, 255, 0.20);
}
.pt-visitcard__body > * { margin-block-start: 0 !important; }
.pt-visitcard__label {
	margin: 0 0 4px !important;
	font-size: 14px;
	font-weight: 700;
	letter-spacing: 0.04em;
	line-height: normal;
	text-transform: uppercase;
	color: var(--wp--preset--color--muted) !important;
}
.pt-visitcard__value {
	margin: 0 !important;
	font-size: 18px;
	line-height: 1.5;
	font-weight: 600;
	color: #2E2A26 !important;
}
.pt-visitcard__body .pt-visitcard__value + .pt-visitcard__note { margin: 6px 0 0 !important; }
.pt-visitcard__note {
	margin: 0 !important;
	font-size: 16px;
	line-height: 1.55;
	color: var(--wp--preset--color--body) !important;
	text-wrap: pretty;
}
.pt-visitcard__phone {
	margin: 0 !important;
	font-size: 0;
}
.pt-visitcard__phone a {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 22px;
	line-height: 1.3;
	font-weight: 700;
	color: var(--wp--preset--color--forest) !important;
}
.pt-visitcard__phone a:hover { color: #2E7D46 !important; }

.pt-visitcard__cta {
	margin-top: auto !important;
	align-self: flex-start;
}
.pt-btn--maps > .wp-block-button__link {
	height: 52px;
	padding: 0 22px !important;
	gap: 8px;
	font-size: 16px;
}

.pt-map {
	flex: 1 1 auto;
	border-radius: 28px;
	overflow: hidden;
	min-height: 380px;
	background: var(--wp--preset--color--sand-border);
	box-shadow: 0 8px 24px rgba(46, 42, 38, 0.06);
	display: flex;
}
.pt-map iframe {
	border: 0;
	width: 100%;
	min-height: 380px;
	flex: 1 1 auto;
	display: block;
}

/* ---------- 04 FAQ ---------- */
.pt-faq__grid {
	display: flex !important;
	flex-wrap: wrap;
	gap: clamp(20px, 4vw, 60px);
	align-items: flex-start !important;
	margin-block-start: 0 !important;
}
.pt-faq__grid > .pt-faq__head { flex: 1 1 280px !important; }
.pt-faq__grid > .pt-faq__list {
	flex: 2 1 560px !important;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.pt-subpage .entry-content .pt-faq .wp-block-column > p.pt-faq__badge,
.pt-faq__badge {
	width: 44px;
	height: 44px;
	border-radius: 11px;
	background: #8A4FB5;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: 24px;
	line-height: 1;
	color: #FFF7EA !important;
	margin: 0 0 20px !important;
}
.pt-subpage .entry-content .pt-faq__head h2.wp-block-heading { margin: 0 !important; }

.pt-faqitem {
	background: var(--wp--preset--color--cream);
	border-radius: 20px;
	overflow: hidden;
	margin: 0 !important;
}
.pt-faqitem > summary {
	list-style: none;
	box-sizing: border-box;
	min-height: 64px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 20px;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 700;
	font-size: clamp(18px, 1.6vw, 21px);
	line-height: 1.25;
	color: var(--wp--preset--color--forest) !important;
}
.pt-faqitem > summary::-webkit-details-marker { display: none; }
.pt-faqitem > summary::marker { content: ""; }
.pt-faqitem > summary::after {
	content: "";
	box-sizing: border-box;
	width: 34px;
	height: 34px;
	flex: 0 0 auto;
	border-radius: 50%;
	background: var(--wp--preset--color--white);
	border: 2px solid var(--wp--preset--color--forest);
	background-image: var(--pt-icon-add);
	background-size: 22px 22px;
	background-position: center;
	background-repeat: no-repeat;
}
.pt-faqitem[open] > summary::after { background-image: var(--pt-icon-remove); }
.pt-faqitem > :not(summary),
.pt-faqitem > :not(summary) p {
	padding: 0 20px 20px;
	margin: 0 !important;
	font-size: 17px;
	line-height: 1.65;
	color: var(--wp--preset--color--body) !important;
	max-width: 62ch;
	text-wrap: pretty;
}
.pt-faqitem > :not(summary) p { padding: 0; max-width: none; }

/* ---------- 05 Closing invitation ---------- */
.pt-close2__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
	gap: clamp(28px, 4vw, 60px);
	align-items: center;
}
.pt-subpage .entry-content .pt-close2 h2.wp-block-heading {
	font-size: clamp(30px, 4vw, 48px) !important;
	line-height: 1.08;
	margin-top: 0 !important;
	margin-bottom: 18px !important;
}
.pt-subpage .entry-content .pt-close2 .wp-block-column > p.pt-close2__lede {
	margin: 0 0 28px !important;
	max-width: 48ch;
	color: var(--wp--preset--color--sand-border) !important;
}
.pt-subpage .entry-content .pt-close2 .wp-block-column > p.pt-close2__phone {
	margin: 22px 0 0 !important;
	font-size: 17px;
	line-height: 1.5;
	color: var(--wp--preset--color--sand-border) !important;
}
.pt-close2__phone a {
	color: var(--wp--preset--color--white) !important;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.pt-close2__phone a:hover { color: #F2C230 !important; }
.pt-close2 .wp-block-buttons { margin: 0 !important; }

body .wp-site-blocks .wp-block-button.pt-btn--yellow > a.wp-block-button__link,
.pt-btn--yellow > .wp-block-button__link {
	background: #F2C230 !important;
	color: #3B2A12 !important;
	font-weight: 800;
	padding: 0 32px;
	box-shadow: 0 4px 0 #B88F17;
}
.pt-btn--yellow > .wp-block-button__link:hover {
	background: #F6D25E !important;
	color: #3B2A12 !important;
}

/* ---------- Tour request form (Ninja Forms, styled to the design card) ----------
   Ninja Forms renders its own markup, so none of it carries `has-text-color`.
   WP 7.1 auto-contrast claims every such element, which is why the colours
   below are declared !important rather than left to inheritance. */

.pt-formcard {
	scroll-margin-top: 170px;
	background: var(--wp--preset--color--white);
	border-radius: 32px;
	padding: clamp(24px, 3.4vw, 40px);
	box-shadow: 0 18px 40px rgba(46, 42, 38, 0.10);
	border-top: 8px solid var(--wp--preset--color--forest);
}
.pt-formcard > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-subpage .entry-content .pt-formcard h2.pt-formcard__title {
	font-size: clamp(26px, 2.8vw, 34px) !important;
	line-height: 1.1;
	margin-top: 0 !important;
	margin-bottom: 10px !important;
}
.pt-formcard__lede {
	font-size: 16px;
	line-height: 1.6;
	color: var(--wp--preset--color--body) !important;
	margin: 0 0 10px !important;
}
.pt-formcard__req {
	font-size: 14px;
	font-weight: 700;
	line-height: normal;
	color: var(--wp--preset--color--muted) !important;
	margin: 0 !important;
}

/* Chrome Ninja Forms adds that the design does not have. The required-fields
   note is already in the card copy, and the title is the h2 above. */
.pt-formcard .nf-form-title,
.pt-formcard .nf-form-fields-required,
.pt-formcard .ninja-forms-req-symbol,
.pt-formcard .nf-debug-msg,
.pt-formcard .nf-input-limit,
.pt-formcard .submit-container .nf-field-label,
.pt-formcard .recaptcha-container .nf-field-label { display: none !important; }

.pt-formcard .nf-form-cont { margin-top: 18px !important; }
.pt-formcard .nf-form-wrap,
.pt-formcard .nf-form-layout,
.pt-formcard .nf-form-content { margin: 0 !important; padding: 0 !important; max-width: none !important; }

/* The design's field rhythm: one 18px gap everywhere, first/last side by side
   until the row can no longer hold two 190px tracks. */
.pt-formcard nf-fields-wrap {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 190px), 1fr));
	gap: 18px;
}
.pt-formcard nf-field { display: block; grid-column: 1 / -1; min-width: 0; }
.pt-formcard nf-field:has(.pt-half) { grid-column: span 1; }
.pt-formcard .nf-field-container { margin: 0 !important; }

.pt-formcard .nf-field-label { margin: 0 0 7px !important; }
.pt-formcard .nf-field-label label {
	display: block;
	margin: 0 !important;
	font-family: var(--wp--preset--font-family--body);
	font-weight: 700 !important;
	font-size: 16px !important;
	line-height: normal;
	color: var(--wp--preset--color--ink) !important;
}

.pt-formcard input.nf-element:not([type="submit"]),
.pt-formcard textarea.nf-element,
.pt-formcard select.nf-element {
	width: 100%;
	border: 2px solid #C9BCA4 !important;
	border-radius: 14px !important;
	background: var(--wp--preset--color--white) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: 500 !important;
	font-size: 17px !important;
	color: #2E2A26 !important;
	box-shadow: none !important;
}
.pt-formcard input.nf-element:not([type="submit"]) {
	height: 54px !important;
	padding: 0 16px !important;
}
.pt-formcard textarea.nf-element {
	min-height: 140px !important;
	/* The design's textarea is rows="5" with no height, which renders at
	   5 x 25.5px + 28px padding + 4px border = 159.5px. Ninja Forms ships
	   rows="2" and a hard height:200px, so the design height is restated. */
	height: 159.5px !important;
	display: block;
	padding: 14px 16px !important;
	line-height: 1.5 !important;
	resize: vertical;
}
.pt-formcard input.nf-element:focus-visible,
.pt-formcard textarea.nf-element:focus-visible {
	outline: 3px solid var(--wp--preset--color--blue);
	outline-offset: 3px;
}

/* Invalid state: the design swaps the border and prints the message in red. */
.pt-formcard .nf-error input.nf-element,
.pt-formcard .nf-error textarea.nf-element { border-color: #B3261E !important; }
.pt-formcard .nf-error-wrap,
.pt-formcard .nf-error-msg {
	margin: 7px 0 0 !important;
	font-size: 14px !important;
	font-weight: 700 !important;
	line-height: 1.4;
	color: #B3261E !important;
}
.pt-formcard .nf-error-wrap:empty { display: none; }

.pt-formcard input[type="submit"].nf-element {
	margin: 4px 0 0 !important;
	width: 100%;
	height: 60px;
	border: 0 !important;
	border-radius: var(--wp--custom--radius--pill) !important;
	background: var(--wp--preset--color--forest) !important;
	color: var(--wp--preset--color--white) !important;
	font-family: var(--wp--preset--font-family--body) !important;
	font-weight: 700 !important;
	font-size: 18px !important;
	box-shadow: 0 4px 0 var(--wp--preset--color--forest-dark) !important;
	cursor: pointer;
}
.pt-formcard input[type="submit"].nf-element:hover { background: #2E7D46 !important; }
.pt-formcard .nf-form-content .nf-field-container.submit-container { margin: 0 !important; }

/* reCAPTCHA renders nothing until the keys are entered; without this the empty
   field would still take a grid row and the 18px gap with it. */
.pt-formcard nf-field:has(.recaptcha-container):not(:has(iframe)) { display: none; }

/* Success state */
.pt-formcard .nf-response-msg { margin: 0 !important; padding: 0 !important; }
.pt-nf-success {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 16px;
	padding: clamp(8px, 2vw, 20px) 0;
}
.pt-nf-success__icon {
	width: 64px;
	height: 64px;
	flex: 0 0 auto;
	border-radius: 16px;
	background: var(--wp--preset--color--forest);
	box-shadow: inset 0 -7px 0 rgba(0, 0, 0, 0.22), inset 5px 5px 0 rgba(255, 255, 255, 0.18);
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--white) !important;
	font-size: 0;
}
.pt-nf-success__icon::before { font-size: 36px; }
.pt-nf-success h2 {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: clamp(26px, 2.8vw, 34px) !important;
	line-height: 1.1;
	color: var(--wp--preset--color--forest) !important;
	margin: 0 !important;
}
.pt-nf-success p {
	font-size: 18px !important;
	line-height: 1.6;
	color: var(--wp--preset--color--body) !important;
	margin: 0 !important;
	max-width: 44ch;
	text-wrap: pretty;
}

/* Breadcrumbs have no line-height in the design files, so they render at the
   font's normal. The theme's 1.6 made the crumb row 4px taller than the
   reference on every subpage. */
.pt-crumbs p,
.pt-crumbs p a { line-height: normal; }

/* The closing CTA sits 2px wider on each side than the hero pair in both
   Program Detail.dc.html and Our Facility.dc.html (32px filled, 28px outline). */
.pt-closing .wp-block-button:not(.is-style-outline) > .wp-block-button__link { padding: 0 32px; }
.pt-closing .wp-block-button.is-style-outline > .wp-block-button__link { padding: 0 28px; }

/* On success the design replaces the whole card with the confirmation, so the
   intro copy and the form itself go with it. Ninja Forms leaves the form in
   the DOM, so this is driven off the success block actually being present. */
.pt-formcard:has(.pt-nf-success) .pt-formcard__title,
.pt-formcard:has(.pt-nf-success) .pt-formcard__lede,
.pt-formcard:has(.pt-nf-success) .pt-formcard__req,
.pt-formcard:has(.pt-nf-success) .nf-form-layout,
.pt-formcard:has(.pt-nf-success) .nf-before-form,
.pt-formcard:has(.pt-nf-success) .nf-after-form { display: none !important; }
.pt-formcard:has(.pt-nf-success) .nf-form-cont { margin-top: 0 !important; }

/* wpautop wraps the success markup and leaves an empty paragraph behind it. */
.pt-nf-success p:empty { display: none; }

/* ==========================================================================
   About Us — measured against About.dc.html
   ========================================================================== */

/* Same grid-vs-flex reasoning as Enrollment: the design collapses at a width
   derived from its track minimum, WP columns collapse at a fixed 781px. */
.pt-about-hero__grid,
.pt-philo__grid,
.pt-environ__grid,
.pt-enrich2__grid {
	display: grid !important;
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
	align-items: center !important;
}
.pt-about-hero__grid > .wp-block-column,
.pt-philo__grid > .wp-block-column,
.pt-environ__grid > .wp-block-column,
.pt-enrich2__grid > .wp-block-column {
	flex-basis: auto !important;
	min-width: 0;
}

.pt-about-hero__grid {
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr));
	gap: clamp(28px, 5vw, 64px);
}
.pt-subpage .pt-about-hero .pt-lede { margin: 0 0 28px !important; max-width: 52ch; }

/* ---------- 02 Our Story ---------- */
.pt-subpage .entry-content .pt-story h2.pt-story__title {
	margin-top: 0 !important;
	margin-bottom: clamp(28px, 4vw, 44px) !important;
}
.pt-story__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 400px), 1fr));
	gap: 24px;
}
.pt-story__grid > * { margin: 0 !important; }

.pt-storycard {
	background: var(--wp--preset--color--cream);
	border-radius: 28px;
	padding: clamp(24px, 3.4vw, 40px);
	display: flex;
	flex-direction: column;
	gap: 18px;
}
.pt-storycard > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }
.pt-storycard p:not(.pt-storycard__year) {
	font-size: clamp(16px, 1.4vw, 18px);
	line-height: 1.65;
	color: var(--wp--preset--color--body) !important;
	text-wrap: pretty;
}

.pt-storycard__year {
	align-self: flex-start;
	border-radius: 14px;
	padding: 10px 18px 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: clamp(28px, 3vw, 36px);
	line-height: 1;
	width: -moz-max-content;
	width: max-content;
}
.pt-storycard__year--red {
	background: #D6483B; color: #FFF7EA !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}
.pt-storycard__year--blue {
	background: #2C6EB5; color: #FFF7EA !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}

/* ---------- 03 Philosophy / 04 Environment shared body copy ---------- */
.pt-philo__grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: clamp(28px, 4vw, 60px); }
.pt-environ__grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 380px), 1fr)); gap: clamp(28px, 4vw, 60px); }

.pt-subpage .entry-content .pt-philo h2.wp-block-heading,
.pt-subpage .entry-content .pt-environ h2.wp-block-heading,
.pt-subpage .entry-content .pt-enrich2 h2.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 18px !important; }

.pt-subpage .entry-content .wp-block-column > p.pt-body54:not(.pt-eyebrow) {
	font-size: clamp(16px, 1.4vw, 19px);
	line-height: 1.65;
	color: var(--wp--preset--color--body) !important;
	margin: 0 0 16px !important;
	max-width: 54ch;
	text-wrap: pretty;
}
.pt-subpage .entry-content .wp-block-column > p.pt-body54--last:not(.pt-eyebrow) { margin: 0 0 24px !important; }

/* The design puts the photo first in source order and uses wrap-reverse, so
   the photo sits below the copy once the row wraps. */
@media (max-width: 860px) {
	.pt-environ__grid > .pt-environ__photo { order: 2; }
	.pt-environ__grid > .pt-environ__copy { order: 1; }
}

.pt-subpage .entry-content .wp-block-column > p.pt-textlink:not(.pt-eyebrow) { margin: 0 !important; }
.pt-textlink a {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-height: 44px;
	font-weight: 700;
	font-size: 17px;
	color: var(--wp--preset--color--forest) !important;
}
.pt-textlink a:hover { color: #2E7D46 !important; }
.pt-textlink__label {
	text-decoration: underline;
	text-underline-offset: 4px;
	text-decoration-thickness: 2px;
}
.pt-textlink__arrow::before { font-size: 20px; }

/* ---------- 05 Enrichment on forest ---------- */
.pt-enrich2__grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap: clamp(28px, 4vw, 60px); }
.pt-subpage .entry-content .wp-block-column > p.pt-enrich2__lede:not(.pt-eyebrow) {
	font-size: clamp(16px, 1.4vw, 19px);
	line-height: 1.65;
	color: var(--wp--preset--color--sand-border) !important;
	margin-top: 0 !important;
	margin-bottom: 22px !important;
	max-width: 52ch;
	text-wrap: pretty;
}
.pt-subpage .entry-content .wp-block-column > p.pt-costpill:not(.pt-eyebrow) {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	background: #F2C230;
	color: #3B2A12 !important;
	font-weight: 800;
	font-size: 16px;
	line-height: 1.3;
	padding: 10px 18px;
	border-radius: var(--wp--custom--radius--pill);
	margin: 0 !important;
	/* The design leaves this as a plain inline-flex: it shrink-wraps on desktop
	   and is constrained by the column on mobile, where the copy wraps to two
	   lines. A max-content width stopped it wrapping and overflowed the page. */
}
.pt-costpill__icon { flex: 0 0 auto; color: #3B2A12 !important; font-size: 0; }
.pt-costpill__icon::before { font-size: 20px; }

/* ---------- 06 Care Built on Trust ---------- */
.pt-subpage .entry-content .pt-trust2 h2.pt-trust2__title {
	margin-top: 0 !important;
	margin-bottom: clamp(28px, 4vw, 44px) !important;
}
/* The design nests two 230px auto-fit lists inside a 500px auto-fit grid, which
   at every width resolves to the same thing as one 230px auto-fit grid. */
.pt-trust2__grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr));
	gap: 18px;
}
.pt-trust2__grid > * { margin: 0 !important; }

.pt-trust2__card {
	background: var(--wp--preset--color--white);
	border-radius: 24px;
	padding: 24px;
	display: flex;
	flex-direction: column;
	gap: 16px;
	box-shadow: 0 6px 18px rgba(46, 42, 38, 0.05);
}
.pt-trust2__card > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-trust2__icon {
	width: 48px;
	height: 48px;
	flex: 0 0 auto;
	border-radius: 12px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 0;
	margin: 0 !important;
}
.pt-trust2__icon::before { font-size: 26px; }
.pt-trust2__icon--red {
	background: #D6483B; color: #FFF7EA !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}
.pt-trust2__icon--blue {
	background: #2C6EB5; color: #FFF7EA !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.20), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}
.pt-trust2__icon--yellow {
	background: #F2C230; color: #3B2A12 !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.16), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}
.pt-trust2__icon--orange {
	background: #E58A2B; color: #3B2208 !important;
	box-shadow: inset 0 -6px 0 rgba(0, 0, 0, 0.18), inset 5px 5px 0 rgba(255, 255, 255, 0.20);
}
.pt-trust2__text {
	font-size: 17px;
	line-height: 1.45;
	font-weight: 700;
	color: var(--wp--preset--color--ink) !important;
	margin: 0 !important;
	text-wrap: pretty;
}

/* ---------- 07 Final CTA (cream card on a white section) ---------- */
.pt-about-cta .pt-closing { background: var(--wp--preset--color--cream); }

/* About's final CTA heading is clamp(30,4vw,48), larger than the shared subpage
   h2, and the card's flex gap puts 18px above it that .pt-closing does not. */
.pt-subpage .entry-content .pt-about-cta .pt-closing h2.wp-block-heading {
	font-size: clamp(30px, 4vw, 48px) !important;
	line-height: 1.08;
	margin-top: 18px !important;
}

/* About hero: the eyebrow is line-height 1.2 here (Programs uses 1), and the
   h1 carries a 20px gap that the shared subpage h1 rule zeroes out. */
.pt-subpage .pt-about-hero .pt-eyebrow { line-height: 1.2; }
.pt-subpage .entry-content .pt-about-hero h1.wp-block-heading { margin-top: 0 !important;
	margin-bottom: 20px !important; }

/* Every button row in every design file is gap:14px. Without this WP's default
   block gap applies, which is 10px wider and shows up wherever buttons sit
   side by side or wrap. */
.wp-block-buttons { gap: 14px; }
.pt-stickybar .wp-block-buttons { gap: 10px; }

/* Philosophy's closing paragraph ends its column, so it carries no bottom
   margin; Environment's is followed by the "Explore Our Facility" link and
   keeps the 24px from .pt-body54--last. */
.pt-subpage .entry-content .wp-block-column > p.pt-body54:last-child:not(.pt-eyebrow) {
	margin-bottom: 0 !important;
}

/* ==========================================================================
   404 — built from the same components as the rest of the site
   ========================================================================== */

.pt-404 {
	padding-top: clamp(56px, 8vw, 110px) !important;
	padding-bottom: clamp(56px, 8vw, 110px) !important;
}
.pt-404__inner {
	max-width: 640px;
	margin-inline: auto;
	text-align: center;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 18px;
}
.pt-404__inner > * { margin-block-start: 0 !important; margin-block-end: 0 !important; }

.pt-404__bus img {
	height: clamp(90px, 10vw, 120px);
	width: auto;
	display: block;
	mix-blend-mode: multiply;
}
.pt-404 h1.wp-block-heading {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 800;
	font-size: clamp(32px, 4.4vw, 54px) !important;
	line-height: 1.06;
	letter-spacing: -0.02em;
	color: var(--wp--preset--color--forest) !important;
	margin-top: 0 !important;
	margin-bottom: 0 !important;
	text-wrap: balance;
}
.pt-404__lede {
	font-size: clamp(17px, 1.5vw, 20px);
	line-height: 1.6;
	color: var(--wp--preset--color--body) !important;
	max-width: 52ch;
	text-wrap: pretty;
}
.pt-404 .wp-block-buttons { margin-top: 6px !important; }
.pt-404__help {
	font-size: 17px;
	line-height: 1.5;
	color: var(--wp--preset--color--body) !important;
	margin-top: 4px !important;
}
.pt-404__help a {
	color: var(--wp--preset--color--forest) !important;
	font-weight: 700;
	text-decoration: underline;
	text-underline-offset: 3px;
}
.pt-404__help a:hover { color: #2E7D46 !important; }
