/* GGP Showcase shared page utilities. Enqueued site-wide (small).
   v1.1.0: v2 typography for CORE blocks on every /pages/ child (the theme
   ships Poppins on bare h1-h3 and p; custom-classed legacy pages override
   these at equal specificity from in-body styles, so they are unaffected).
   v2.0.0/v2.1.0: the neatness pass. WordPress injects width/height attributes on
   every content image and the theme's height:auto reset does not reach into
   custom blocks, so .ggp img gets its own guard (this was the tall-strip /
   giant-photo bug on every showcase page). Plus: one geometry for the page
   (text 720, visuals 1240 centered, marquee full-bleed), real section
   rhythm, centered band headings, styled separators, and air before the
   footer. */

.ggp-band {
	background: #f2f2f7;
	padding: clamp( 40px, 6vw, 72px ) clamp( 16px, 4vw, 24px );
	border-radius: 0;
}
@media ( prefers-contrast: more ) {
	.ggp-band { border-top: 1px solid #000; border-bottom: 1px solid #000; }
}

/* The theme's bare h1,h2,h3 { Poppins } beats inheritance, so headings are
   targeted directly (the documented trap). */
.parent-pageid-247 h1,
.parent-pageid-247 h2,
.parent-pageid-247 h3,
.parent-pageid-247 h4,
.parent-pageid-247 p,
.parent-pageid-247 li,
.parent-pageid-247 figcaption,
.parent-pageid-247 blockquote,
.parent-pageid-247 cite {
	font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
}
.parent-pageid-247 h1 { font-size: clamp( 2.125rem, 5.5vw, 3.25rem ); line-height: 1.06; letter-spacing: -0.028em; font-weight: 700; text-wrap: balance; }
.parent-pageid-247 h2 { font-size: clamp( 1.75rem, 4vw, 2.375rem ); line-height: 1.12; letter-spacing: -0.022em; font-weight: 700; text-wrap: balance; }
.parent-pageid-247 h3 { font-size: clamp( 1.3125rem, 2.6vw, 1.625rem ); line-height: 1.22; letter-spacing: -0.016em; font-weight: 600; text-wrap: balance; }
.parent-pageid-247 p,
.parent-pageid-247 li { font-size: 1.0625rem; line-height: 1.53; letter-spacing: -0.01em; }

.parent-pageid-247 .wp-block-button__link {
	font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable", "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: 1.0625rem; font-weight: 600; letter-spacing: -0.01em;
	background: #c8102e; color: #fff; border: 0; border-radius: 999px;
	padding: 12px 22px; min-height: 44px;
	display: inline-flex; align-items: center; justify-content: center;
	transition: background-color 120ms cubic-bezier( 0.25, 0.1, 0.25, 1 ), transform 120ms cubic-bezier( 0.25, 0.1, 0.25, 1 );
	-webkit-tap-highlight-color: transparent;
}
.parent-pageid-247 .wp-block-button__link:active { transform: scale( 0.97 ); background: #8f0b20; color: #fff; }
@media ( hover: hover ) { .parent-pageid-247 .wp-block-button__link:hover { background: #d4162f; color: #fff; } }
.parent-pageid-247 .wp-block-button__link:focus-visible { outline: 2px solid #c8102e; outline-offset: 3px; }
@media ( prefers-reduced-motion: reduce ) {
	.parent-pageid-247 .wp-block-button__link { transition: none; }
	.parent-pageid-247 .wp-block-button__link:active { transform: none; }
}

/* ---- The signature page skeleton -------------------------------------- */

.parent-pageid-247 .ggp-hero {
	text-align: center;
	max-width: 760px;
	margin: 0 auto;
	padding: clamp( 28px, 5vw, 56px ) 16px clamp( 20px, 3vw, 36px );
}
.parent-pageid-247 .ggp-hero-eyebrow {
	color: #c8102e;
	font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em;
	text-transform: uppercase; line-height: 1;
	margin: 0 0 16px;
}
.parent-pageid-247 .ggp-hero-h1 {
	font-size: clamp( 2.125rem, 5.5vw, 3.25rem );
	line-height: 1.06; letter-spacing: -0.028em; font-weight: 700;
	margin: 0 0 14px; text-wrap: balance;
}
.parent-pageid-247 .ggp-hero-lede {
	font-size: clamp( 1.125rem, 2.1vw, 1.3125rem );
	line-height: 1.42; letter-spacing: -0.014em;
	color: rgba( 60, 60, 67, 0.7 );
	max-width: 44ch; margin: 0 auto; text-wrap: pretty;
}

/* The reading measure. Text never runs the theme's 1600px again. */
.parent-pageid-247 .entry-content > h2,
.parent-pageid-247 .entry-content > h3,
.parent-pageid-247 .entry-content > h4,
.parent-pageid-247 .entry-content > p,
.parent-pageid-247 .entry-content > ul,
.parent-pageid-247 .entry-content > ol,
.parent-pageid-247 .entry-content > .wp-block-buttons,
.parent-pageid-247 .ggp-band > h2,
.parent-pageid-247 .ggp-band > h3,
.parent-pageid-247 .ggp-band > p,
.parent-pageid-247 .ggp-band > ul,
.parent-pageid-247 .ggp-band > ol {
	max-width: 720px;
	margin-left: auto;
	margin-right: auto;
}
.parent-pageid-247 .entry-content > .wp-block-columns,
.parent-pageid-247 .entry-content > .wp-block-media-text,
.parent-pageid-247 .ggp-band > .wp-block-columns {
	max-width: 1080px;
	margin-left: auto;
	margin-right: auto;
}

/* One geometry: text at 720, visuals at 1240, both on the same centre axis.
   The hero styles itself; everything else with a .ggp wrapper is a visual. */
.parent-pageid-247 .entry-content > .ggp:not( .ggp-hero ) {
	max-width: 1240px;
	margin: clamp( 28px, 4.5vw, 48px ) auto;
}
.parent-pageid-247 .ggp-band .ggp {
	max-width: 1240px;
	margin: clamp( 20px, 3.5vw, 36px ) auto;
}

/* WordPress injects width/height attributes on content images; the theme's
   height:auto reset does not reach custom blocks. Without this guard every
   showcase image renders at its natural pixel height. Kept at (0,1,1) on
   purpose: it only needs to beat the attribute (zero specificity), and every
   block rule like .ggp-ring .ring-img { height:100% } must stay on top. */
.ggp img { height: auto; }

/* Section rhythm: real air before each section head, tight bond after it. */
.parent-pageid-247 .entry-content > h2 { margin-top: clamp( 48px, 7vw, 80px ); margin-bottom: 14px; }
.parent-pageid-247 .entry-content > h3 { margin-top: clamp( 28px, 5vw, 48px ); margin-bottom: 10px; }
.parent-pageid-247 .entry-content > p,
.parent-pageid-247 .ggp-band > p { margin-top: 0; margin-bottom: 1.05em; }
.parent-pageid-247 .entry-content > ul,
.parent-pageid-247 .entry-content > ol,
.parent-pageid-247 .ggp-band > ul,
.parent-pageid-247 .ggp-band > ol { padding-left: 1.3em; margin-top: 0; margin-bottom: 1.1em; }
.parent-pageid-247 .entry-content > ul li,
.parent-pageid-247 .entry-content > ol li,
.parent-pageid-247 .ggp-band li { margin: 5px 0; }
.parent-pageid-247 .entry-content > .wp-block-buttons { margin-top: 22px; }

/* The grey band reads as one composed section: centered heading, breathing
   room above and below, columns on the shared axis. */
.parent-pageid-247 .entry-content > .ggp-band { margin-top: clamp( 48px, 7vw, 80px ); margin-bottom: clamp( 48px, 7vw, 80px ); }
.parent-pageid-247 .ggp-band > h2 { text-align: center; margin-top: 0; margin-bottom: clamp( 18px, 3vw, 28px ); }
.parent-pageid-247 .ggp-band > h2 + p { text-align: center; color: rgba( 60, 60, 67, 0.7 ); }
.parent-pageid-247 .ggp-band > .wp-block-columns { margin-top: clamp( 20px, 3.5vw, 36px ); margin-bottom: clamp( 20px, 3.5vw, 36px ); }
.parent-pageid-247 .ggp-band > *:last-child { margin-bottom: 0; }

/* Separators: a quiet 720 rule, never a full-width scratch. */
.parent-pageid-247 .entry-content hr,
.parent-pageid-247 .entry-content .wp-block-separator {
	max-width: 720px;
	width: 100%;
	margin: clamp( 40px, 6vw, 64px ) auto;
	border: 0;
	border-top: 1px solid rgba( 60, 60, 67, 0.29 );
	background: none;
	height: 0;
}

/* Captions everywhere match the system. */
.parent-pageid-247 figcaption {
	font-size: 0.8125rem;
	line-height: 1.35;
	color: rgba( 60, 60, 67, 0.7 );
	text-align: center;
}

/* The page never glues its last line to the footer. */
.parent-pageid-247 .entry-content { padding-bottom: clamp( 64px, 9vw, 112px ); }

/* Mobile: columns that stack keep the rhythm; nothing overflows sideways. */
@media ( max-width: 781px ) {
	.parent-pageid-247 .entry-content > .wp-block-columns,
	.parent-pageid-247 .ggp-band > .wp-block-columns { max-width: 720px; }
	.parent-pageid-247 .wp-block-columns .wp-block-column + .wp-block-column { margin-top: 10px; }
}

/* ---- v2.1.0 polish ----------------------------------------------------- */

/* The band sits inset from the page edge now, so it earns rounded corners. */
.parent-pageid-247 .ggp-band { border-radius: 24px; }

/* A band's closing line after columns joins the centered composition. */
.parent-pageid-247 .ggp-band > .wp-block-columns + p { text-align: center; }

/* Every page closes the same way: centered heading, centered line, centered
   CTA. The closer is always the last h2 on these pages. */
.parent-pageid-247 .entry-content > h2:last-of-type { text-align: center; }
.parent-pageid-247 .entry-content > h2:last-of-type ~ p { text-align: center; }
.parent-pageid-247 .entry-content > .wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	justify-content: center;
}

/* A portrait source must never run the compare frame to 1300px. */
.parent-pageid-247 .ggp-cmp .cmp-under .cmp-img {
	max-height: min( 72vh, 680px );
	object-fit: cover;
}

/* Even 4:5 rhythm in the sync columns; a stray landscape no longer breaks
   the beat. */
.parent-pageid-247 .ggp-sync .sync-item img {
	aspect-ratio: 4 / 5;
	object-fit: cover;
}

/* The marquee's max-content track must never widen its grid (the classic
   grid blowout; it pushed the page 1276px sideways on phones). Unscoped on
   purpose: the marquee also lives on pages outside parent 247. */
.ggp-vmq .vmq-flow { grid-template-columns: minmax( 0, 1fr ); }
.ggp-vmq .vmq-row { min-width: 0; }

/* The theme gives .entry-content no gutter of its own, so on phones the
   measure needs one. Bands and the hero carry their own padding. */
.parent-pageid-247 .entry-content > h2,
.parent-pageid-247 .entry-content > h3,
.parent-pageid-247 .entry-content > h4,
.parent-pageid-247 .entry-content > p,
.parent-pageid-247 .entry-content > ul,
.parent-pageid-247 .entry-content > ol,
.parent-pageid-247 .entry-content > .wp-block-buttons,
.parent-pageid-247 .entry-content > .wp-block-columns,
.parent-pageid-247 .entry-content > .wp-block-media-text,
.parent-pageid-247 .entry-content > .wp-block-separator {
	padding-left: 16px;
	padding-right: 16px;
}
.parent-pageid-247 .entry-content > ul,
.parent-pageid-247 .entry-content > ol { padding-left: calc( 16px + 1.3em ); }
