/* ────────────────────────────────────────────────────────────────────────
 * Insights Child — stage.css
 *
 * Styles for the reusable Stage page template (Lower School, Upper School…).
 * Loaded only when template-stage.php is active.
 *
 * Lifted from insights-lower-school-v3.html. Brand tokens come from the
 * site-wide stylesheets (menu.css / header.css / homepage.css).
 *
 * Scoped under .stage-main so rules can't leak. Class names match the
 * reference 1:1 for easier debugging.
 * ───────────────────────────────────────────────────────────────────── */

/* ──────────────────────────────────────────────────────────────
 * 0. ASTRA BREAKOUT — Astra defaults to ast-separate-container +
 *    ast-right-sidebar, which caps main to ~792px in a 1240px
 *    container. Force the Stage template to render edge-to-edge
 *    so the hero, banner photos and 2-col chapters get their
 *    designed width.
 * ────────────────────────────────────────────────────────────── */
body.page-template-template-stage .ast-container,
body.page-template-template-stage .site-content > .ast-container {
	max-width: none;
	width: 100%;
	padding: 0;
	display: block;
}
body.page-template-template-stage #primary,
body.page-template-template-stage .content-area,
body.page-template-template-stage .ast-article-single,
body.page-template-template-stage .ast-article-post {
	max-width: none;
	width: 100%;
	padding: 0;
	margin: 0;
	float: none;
	background: transparent;
	box-shadow: none;
	border: 0;
}
/* Hide the (empty) Astra sidebar slot if the layout was set to "right sidebar". */
body.page-template-template-stage #secondary,
body.page-template-template-stage .widget-area {
	display: none !important;
}
/* And kill the entry-header that Astra inserts above the_content() since
   the template renders its own hero. */
body.page-template-template-stage .entry-header,
body.page-template-template-stage .ast-archive-description {
	display: none;
}

.stage-main {
	--paper: #FAFAFA;
	--warm:  #F0EAE0;
	--text-mute: rgba(26, 26, 26, 0.5);
	--text-dim:  rgba(26, 26, 26, 0.68);
	--line:      rgba(26, 26, 26, 0.08);
	--line-hi:   rgba(26, 26, 26, 0.14);

	font-family: 'Jost', sans-serif;
	color: var(--ink);
	line-height: 1.6;
}

@keyframes stageFadeUp {
	from { opacity: 0; transform: translateY(40px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* ──────────────────────────────────────────────────────────────
 * 1. INNER HERO — shorter than homepage, 16:7
 * ────────────────────────────────────────────────────────────── */
.stage-main .inner-hero {
	padding: 32px 0 0;
	position: relative;
}
.stage-main .inner-hero-wrap {
	position: relative;
	max-width: 1320px;
	margin: 0 auto;
	width: calc(100% - 64px);
	aspect-ratio: 16 / 7;
	background-color: #2D1010;
	overflow: hidden;
	border-radius: 32px;
	box-shadow: 0 24px 64px -24px rgba(26, 26, 26, 0.18);
}
.stage-main .inner-hero-img {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	z-index: 1;
}
.stage-main .inner-hero-wrap::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(180deg, rgba(26, 26, 26, 0.45) 0%, rgba(26, 26, 26, 0.30) 40%, rgba(26, 26, 26, 0.40) 70%, rgba(26, 26, 26, 0.75) 100%),
		radial-gradient(ellipse at center, rgba(26, 26, 26, 0.35) 0%, transparent 65%);
	pointer-events: none;
	z-index: 2;
}
.stage-main .inner-hero-text {
	position: absolute;
	inset: 0;
	z-index: 3;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 60px 48px;
	pointer-events: none;
}
.stage-main .inner-hero-eyebrow {
	font-size: 12px;
	letter-spacing: 0.28em;
	text-transform: uppercase;
	color: #FFFFFF;
	font-weight: 700;
	margin-bottom: 22px;
	text-shadow: 0 1px 16px rgba(0, 0, 0, 0.7), 0 1px 3px rgba(0, 0, 0, 0.5);
	opacity: 0;
	transform: translateY(20px);
	animation: stageFadeUp 0.9s ease 0.3s forwards;
}
.stage-main .inner-hero-eyebrow::before {
	content: "";
	display: block;
	width: 48px;
	height: 2px;
	background: var(--crimson-bright);
	margin: 0 auto 16px;
}
.stage-main .inner-hero-title {
	font-family: 'Jost', sans-serif;
	font-size: clamp(40px, 5.5vw, 76px);
	font-weight: 500;
	letter-spacing: -0.025em;
	line-height: 1.04;
	color: #FFFFFF;
	max-width: 920px;
	margin: 0;
	text-shadow: 0 2px 28px rgba(0, 0, 0, 0.55), 0 1px 4px rgba(0, 0, 0, 0.4);
	opacity: 0;
	transform: translateY(28px);
	animation: stageFadeUp 1s ease 0.5s forwards;
}
.stage-main .inner-hero-title em {
	font-style: italic;
	color: rgba(255, 255, 255, 0.88);
	font-weight: 400;
}

/* ──────────────────────────────────────────────────────────────
 * 2. INTRO
 * ────────────────────────────────────────────────────────────── */
.stage-main .intro {
	padding: 112px 0 88px;
}
.stage-main .narrow {
	max-width: 720px;
	margin: 0 auto;
	padding: 0 32px;
}
.stage-main .intro p {
	font-family: 'Jost', sans-serif;
	font-style: italic;
	font-size: clamp(20px, 2.2vw, 28px);
	line-height: 1.4;
	color: var(--ink);
	text-align: center;
	letter-spacing: -0.01em;
	margin: 0;
}
.stage-main .intro p em {
	font-style: normal;
	color: var(--crimson);
	font-weight: 500;
}

/* ── 2-col intro: photo on one side, paragraphs + CTA on the other ── */
.stage-main .intro--split {
	padding: 96px 0 80px;
}
.stage-main .intro--split .intro-inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: 64px;
	align-items: center;
}
/* Default (photo-left): photo column first */
.stage-main .intro--split .intro-photo { order: 0; }
.stage-main .intro--split .intro-text  { order: 1; }
/* Photo-right variant: swap column order */
.stage-main .intro--split.intro--photo-right .intro-photo { order: 1; }
.stage-main .intro--split.intro--photo-right .intro-text  { order: 0; }

.stage-main .intro--split .intro-photo {
	margin: 0;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 24px 56px -28px rgba(26, 26, 26, 0.2);
}
.stage-main .intro--split .intro-photo-img {
	aspect-ratio: 4 / 5;
	background-size: cover;
	background-position: center;
}
.stage-main .intro--split .intro-photo-caption {
	margin-top: 12px;
	padding: 0 4px;
	font-size: 13px;
	font-style: italic;
	color: var(--text-dim);
}

.stage-main .intro--split .intro-text {
	min-width: 0;
	max-width: 620px;
}
/* Inside the 2-col intro, paragraphs are calm body text — not the huge
   italic display style used in the legacy centred layout. */
.stage-main .intro--split .intro-text-body p {
	font-family: 'Jost', sans-serif;
	font-style: normal;
	font-size: 18px;
	line-height: 1.7;
	color: var(--ink);
	text-align: left;
	letter-spacing: 0;
	margin: 0 0 16px;
}
.stage-main .intro--split .intro-text-body p:last-child { margin-bottom: 0; }
.stage-main .intro--split .intro-text-body p em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 500;
}
.stage-main .intro--split .intro-text-body p strong { font-weight: 600; color: var(--ink); }
.stage-main .intro--split .intro-text > .prospectus-cta {
	margin-top: 28px;
}

/* ──────────────────────────────────────────────────────────────
 * 3. CHAPTERS — text + side photo, alternating
 * ────────────────────────────────────────────────────────────── */
.stage-main .ks-section {
	padding: 88px 0;
}
.stage-main .ks-section:first-of-type {
	padding-top: 32px;
}
.stage-main .ks-inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
}
.stage-main .ks-head {
	max-width: 720px;
	margin-bottom: 48px;
}
.stage-main .ks-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 14px;
}
.stage-main .ks-head h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(34px, 4vw, 56px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.04;
	margin: 0 0 14px;
	color: var(--ink);
}
.stage-main .ks-head h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .ks-ages {
	font-family: 'Jost', sans-serif;
	font-style: italic;
	font-size: 15px;
	color: var(--text-dim);
}
.stage-main .ks-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
}
/* Reverse layout — swap photo and text columns. */
.stage-main .ks-section.reverse .ks-grid { direction: rtl; }
.stage-main .ks-section.reverse .ks-grid > * { direction: ltr; }

.stage-main .ks-body p {
	font-size: 17px;
	line-height: 1.75;
	color: var(--ink);
	margin: 0 0 20px;
}
.stage-main .ks-body p:last-child {
	margin-bottom: 0;
}
.stage-main .ks-body p em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 500;
}
.stage-main .ks-body strong {
	font-weight: 600;
	color: var(--ink);
}

/* ── Photo card ── */
.stage-main .ks-photo {
	position: relative;
	aspect-ratio: 4 / 5;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 24px 56px -20px rgba(26, 26, 26, 0.20);
	margin: 0;
}
.stage-main .ks-photo-img {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
}
.stage-main .ks-photo.tone-warm .ks-photo-img {
	background-image: linear-gradient(160deg, #E8DBC5 0%, #C28B3D 65%, #6E2323 130%);
}
.stage-main .ks-photo.tone-cool .ks-photo-img {
	background-image: linear-gradient(160deg, #5C7A8F 0%, #2D2D2D 80%);
}
.stage-main .ks-photo.tone-crimson .ks-photo-img {
	background-image: linear-gradient(160deg, #8B1A1A 0%, #5C1010 100%);
}
.stage-main .ks-photo-caption {
	position: absolute;
	bottom: 18px;
	left: 22px;
	font-family: 'Jost', sans-serif;
	font-style: italic;
	font-size: 12px;
	letter-spacing: 0.04em;
	color: rgba(255, 255, 255, 0.85);
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
	z-index: 2;
}
.stage-main .ks-photo-caption::before {
	content: "—";
	color: var(--crimson-bright);
	margin-right: 8px;
	font-style: normal;
}
.stage-main .ks-photo::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 55%, rgba(0, 0, 0, 0.5) 100%);
	pointer-events: none;
}

/* ──────────────────────────────────────────────────────────────
 * 4. BANNER PHOTO — full-bleed chapter break
 * ────────────────────────────────────────────────────────────── */
.stage-main .banner-photo {
	padding: 32px 0;
}
.stage-main .banner-photo-wrap {
	max-width: 1320px;
	margin: 0 auto;
	width: calc(100% - 64px);
	aspect-ratio: 21 / 8;
	border-radius: 8px;
	overflow: hidden;
	position: relative;
	background-image: linear-gradient(165deg, #C28B3D 0%, #6E2323 55%, #1a1a1a 100%);
	background-size: cover;
	background-position: center;
	box-shadow: 0 24px 64px -24px rgba(26, 26, 26, 0.22);
}
.stage-main .banner-photo-wrap::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 60%, rgba(0, 0, 0, 0.55) 100%);
}
.stage-main .banner-photo-caption {
	position: absolute;
	bottom: 24px;
	left: 32px;
	font-family: 'Jost', sans-serif;
	font-style: italic;
	font-size: 13px;
	letter-spacing: 0.04em;
	color: rgba(255, 255, 255, 0.88);
	text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6);
	z-index: 2;
}
.stage-main .banner-photo-caption::before {
	content: "—";
	color: var(--crimson-bright);
	margin-right: 10px;
	font-style: normal;
}

/* ──────────────────────────────────────────────────────────────
 * 4b. CURRICULUM AT A GLANCE — optional 4-col card grid
 *     Toggle: stage_show_curriculum_cards (ACF). Default OFF for Lower
 *     School, ON for Upper School and other age bands.
 * ────────────────────────────────────────────────────────────── */
.stage-main .curriculum {
	padding: 96px 0;
	border-top: 1px solid var(--line);
}
.stage-main .curriculum-head {
	max-width: 1320px;
	margin: 0 auto 56px;
	padding: 0 32px;
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 32px;
	flex-wrap: wrap;
}
.stage-main .curriculum-head .curr-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 14px;
}
.stage-main .curriculum-head h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(32px, 4vw, 52px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.05;
	max-width: 560px;
	margin: 0;
	color: var(--ink);
}
.stage-main .curriculum-head h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .curriculum-head .curr-note {
	font-style: italic;
	font-size: 15px;
	color: var(--text-dim);
	max-width: 360px;
	line-height: 1.45;
}
.stage-main .curriculum-grid {
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 32px;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
	border-top: 1px solid var(--line);
	border-left: 1px solid var(--line);
}
.stage-main .curr-card {
	padding: 32px 28px 36px;
	border-right: 1px solid var(--line);
	border-bottom: 1px solid var(--line);
	position: relative;
	background: #FFFFFF;
	transition: background 0.3s ease;
}
.stage-main .curr-card:hover {
	background: var(--paper);
}
.stage-main .curr-card::before {
	content: "";
	position: absolute;
	top: 0;
	left: 28px;
	width: 32px;
	height: 2px;
	background: var(--crimson);
	transition: width 0.35s cubic-bezier(0.65, 0, 0.25, 1);
}
.stage-main .curr-card:hover::before {
	width: 64px;
}
.stage-main .curr-card-num {
	font-size: 11px;
	letter-spacing: 0.22em;
	color: var(--text-mute);
	font-weight: 600;
	margin-bottom: 18px;
}
.stage-main .curr-card-name {
	font-family: 'Jost', sans-serif;
	font-size: 22px;
	font-weight: 600;
	letter-spacing: -0.015em;
	color: var(--ink);
	margin-bottom: 10px;
	line-height: 1.1;
}
.stage-main .curr-card-desc {
	font-size: 14px;
	line-height: 1.55;
	color: var(--text-dim);
}

/* ──────────────────────────────────────────────────────────────
 * 5. PULL QUOTE
 * ────────────────────────────────────────────────────────────── */
.stage-main .pull-quote {
	padding: 96px 0;
	background: var(--paper);
}
.stage-main .pull-quote-inner {
	max-width: 880px;
	margin: 0 auto;
	padding: 0 32px;
	text-align: center;
}
.stage-main .pull-quote blockquote {
	font-family: 'Jost', sans-serif;
	font-style: italic;
	font-size: clamp(24px, 2.8vw, 36px);
	font-weight: 400;
	line-height: 1.35;
	letter-spacing: -0.015em;
	color: var(--ink);
	max-width: 760px;
	margin: 0 auto 28px;
}
.stage-main .pull-quote blockquote::before {
	content: "";
	display: block;
	width: 36px;
	height: 2px;
	background: var(--crimson);
	margin: 0 auto 28px;
}
.stage-main .pull-quote blockquote em {
	font-style: normal;
	color: var(--crimson);
	font-weight: 500;
}
.stage-main .pull-quote cite {
	font-style: normal;
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--text-mute);
	font-weight: 600;
}

/* ──────────────────────────────────────────────────────────────
 * 6. THERAPIES CALLOUT
 * ────────────────────────────────────────────────────────────── */
.stage-main .therapies {
	padding: 88px 0;
}
.stage-main .therapies-inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
}
.stage-main .therapies-content {
	max-width: 480px;
}
.stage-main .therapies .ks-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 14px;
}
.stage-main .therapies h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(32px, 3.4vw, 44px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.04;
	margin: 0 0 20px;
	color: var(--ink);
}
.stage-main .therapies h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .therapies-body p {
	font-size: 17px;
	line-height: 1.75;
	color: var(--ink);
	margin: 0 0 20px;
}
.stage-main .therapies-body ul {
	list-style: none;
	margin: 16px 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 6px 24px;
}
.stage-main .therapies-body ul li {
	font-size: 14px;
	color: var(--text-dim);
	padding: 6px 0;
	letter-spacing: 0.01em;
}
.stage-main .therapies-body ul li::before {
	content: "—";
	color: var(--crimson);
	margin-right: 10px;
}

/* ──────────────────────────────────────────────────────────────
 * 7. WHERE NEXT — 2-card CTA grid
 * ────────────────────────────────────────────────────────────── */
.stage-main .where-next {
	padding: 96px 0 128px;
	border-top: 1px solid var(--line);
}
.stage-main .where-next-head {
	max-width: 1320px;
	margin: 0 auto 56px;
	padding: 0 32px;
	text-align: center;
}
.stage-main .where-next-head .tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 18px;
}
.stage-main .where-next-head h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(32px, 4vw, 52px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.05;
	color: var(--ink);
	margin: 0;
}
.stage-main .where-next-head h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .where-next-cards {
	max-width: 1320px;
	margin: 0 auto;
	padding: 0 32px;
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}
.stage-main .wn-card {
	position: relative;
	aspect-ratio: 5 / 4;
	border-radius: 6px;
	overflow: hidden;
	background-color: #2D1010;
	cursor: pointer;
	transition: transform 0.4s ease, box-shadow 0.4s ease;
	color: #FFFFFF;
	text-decoration: none;
}
.stage-main .wn-card:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 56px -16px rgba(26, 26, 26, 0.25);
}
.stage-main .wn-card-img {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	transition: transform 1s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.stage-main .wn-card:nth-child(1) .wn-card-img:not([style*="url"]) {
	background-image: linear-gradient(160deg, #5C2424, #1a1a1a);
}
.stage-main .wn-card:nth-child(2) .wn-card-img:not([style*="url"]) {
	background-image: linear-gradient(160deg, #8B1A1A, #5C1010);
}
.stage-main .wn-card:hover .wn-card-img {
	transform: scale(1.05);
}
.stage-main .wn-card::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(0, 0, 0, 0.20) 0%, transparent 50%, rgba(0, 0, 0, 0.80) 100%);
}
.stage-main .wn-card-content {
	position: absolute;
	bottom: 0;
	left: 0;
	right: 0;
	z-index: 2;
	padding: 40px;
	color: #FFFFFF;
}
.stage-main .wn-card-content .tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, 0.8);
	font-weight: 700;
	margin-bottom: 12px;
}
.stage-main .wn-card-content h3 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(26px, 2.8vw, 36px);
	font-weight: 500;
	letter-spacing: -0.02em;
	color: #FFFFFF;
	margin: 0 0 12px;
	line-height: 1.05;
}
.stage-main .wn-card-content p {
	font-size: 15px;
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.85);
	max-width: 420px;
	margin: 0 0 20px;
}
.stage-main .wn-card-content .arrow {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-size: 12px;
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--crimson-bright);
	transition: gap 0.3s;
}
.stage-main .wn-card:hover .arrow { gap: 16px; }
.stage-main .wn-card-content .arrow::after {
	content: "→";
	transition: transform 0.3s;
}

/* ──────────────────────────────────────────────────────────────
 * 8. SCROLL-TRIGGERED REVEALS
 *     `.reveal` elements fade up when they enter the viewport
 *     (handled by stage.js).
 * ────────────────────────────────────────────────────────────── */
/* SLOW CINEMATIC REVEALS — long fade + rise for body, deeper scale for photos */
.stage-main .reveal {
	opacity: 0;
	transform: translateY(48px);
	transition: opacity 1.8s cubic-bezier(0.16, 0.84, 0.24, 1),
	            transform 1.8s cubic-bezier(0.16, 0.84, 0.24, 1);
	will-change: opacity, transform;
}
.stage-main .reveal.scale-in {
	transform: translateY(40px) scale(0.94);
	transition: opacity 2.2s cubic-bezier(0.16, 0.84, 0.24, 1),
	            transform 2.2s cubic-bezier(0.16, 0.84, 0.24, 1);
}
/* Title-focused reveal: smaller rise, gentle blur-clarify feel via opacity. */
.stage-main .reveal.title-reveal {
	transform: translateY(28px);
	transition: opacity 1.6s cubic-bezier(0.2, 0.7, 0.2, 1),
	            transform 1.6s cubic-bezier(0.2, 0.7, 0.2, 1);
}
.stage-main .reveal.in {
	opacity: 1;
	transform: translateY(0) scale(1);
}

/* Stagger delays — generous so adjacent elements feel like a sequence, not a blur. */
.stage-main .reveal.delay-1 { transition-delay: 0.20s; }
.stage-main .reveal.delay-2 { transition-delay: 0.40s; }
.stage-main .reveal.delay-3 { transition-delay: 0.60s; }
.stage-main .reveal.delay-4 { transition-delay: 0.80s; }
.stage-main .reveal.delay-5 { transition-delay: 1.00s; }

/* When a section is .reveal AND .in, stagger its first-level children
   (tag → heading → intro/body → photo) one after another. */
.stage-main .reveal.in > .subjects-tag,
.stage-main .reveal.in > .enrichment-tag,
.stage-main .reveal.in > .ks-tag {
	animation: stageChildIn 1.4s cubic-bezier(0.2, 0.7, 0.2, 1) both;
	animation-delay: 0.05s;
}
.stage-main .reveal.in > h2,
.stage-main .reveal.in > .subjects-head-text > h2,
.stage-main .reveal.in > .enrichment-text > h2 {
	animation: stageChildIn 1.6s cubic-bezier(0.2, 0.7, 0.2, 1) both;
	animation-delay: 0.25s;
}
.stage-main .reveal.in > .subjects-intro,
.stage-main .reveal.in > .subjects-head-text > .subjects-intro,
.stage-main .reveal.in > .enrichment-text > .enrichment-body {
	animation: stageChildIn 1.6s cubic-bezier(0.2, 0.7, 0.2, 1) both;
	animation-delay: 0.45s;
}

@keyframes stageChildIn {
	from { opacity: 0; transform: translateY(20px); }
	to   { opacity: 1; transform: translateY(0); }
}

/* Inner-hero text already uses CSS keyframes (stageFadeUp) — slow them too. */
.stage-main .inner-hero-eyebrow {
	animation-duration: 1.4s !important;
	animation-delay: 0.35s !important;
}
.stage-main .inner-hero-title {
	animation-duration: 1.8s !important;
	animation-delay: 0.6s !important;
}

@media (prefers-reduced-motion: reduce) {
	.stage-main .reveal,
	.stage-main .reveal.in > * {
		opacity: 1;
		transform: none !important;
		transition: none !important;
		animation: none !important;
	}
}

/* ──────────────────────────────────────────────────────────────
 * 9. RESPONSIVE — tablet/mobile
 * ────────────────────────────────────────────────────────────── */
@media (max-width: 960px) {
	.stage-main .narrow { padding: 0 20px; }

	.stage-main .inner-hero { padding: 16px 0 0; }
	.stage-main .inner-hero-wrap {
		aspect-ratio: 5 / 4;
		width: calc(100% - 40px);
		border-radius: 18px;
	}
	.stage-main .inner-hero-title { font-size: 32px; }

	.stage-main .intro { padding: 64px 0 56px; }
	.stage-main .ks-section { padding: 56px 0; }
	.stage-main .ks-section:first-of-type { padding-top: 24px; }
	.stage-main .ks-inner,
	.stage-main .therapies-inner { padding: 0 20px; }
	.stage-main .ks-grid,
	.stage-main .therapies-inner {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	/* Reverse → standard order on mobile (text always first). */
	.stage-main .ks-section.reverse .ks-grid { direction: ltr; }
	.stage-main .ks-head { margin-bottom: 28px; }
	.stage-main .ks-body p { font-size: 16px; }
	.stage-main .ks-photo { aspect-ratio: 4 / 3; }

	.stage-main .banner-photo { padding: 16px 0; }
	.stage-main .banner-photo-wrap {
		aspect-ratio: 5 / 3;
		width: calc(100% - 40px);
	}

	.stage-main .pull-quote { padding: 64px 0; }

	.stage-main .therapies { padding: 64px 0; }
	.stage-main .therapies-body ul { grid-template-columns: 1fr; }

	.stage-main .curriculum { padding: 64px 0; }
	.stage-main .curriculum-head {
		margin-bottom: 32px;
		padding: 0 20px;
	}
	.stage-main .curriculum-grid {
		grid-template-columns: 1fr 1fr;
		padding: 0 20px;
	}
	.stage-main .curr-card { padding: 24px 20px 28px; }

	.stage-main .where-next { padding: 64px 0 88px; }
	.stage-main .where-next-cards {
		grid-template-columns: 1fr;
		gap: 18px;
		padding: 0 20px;
	}
	.stage-main .wn-card { aspect-ratio: 16 / 11; }
	.stage-main .wn-card-content { padding: 28px; }
}

/* ════════════════════════════════════════════════════════════
 * PROSPECTUS CTA — pill button under intro
 * ════════════════════════════════════════════════════════════ */
.stage-main .prospectus-cta-section {
	padding: 8px 0 56px;
}
.stage-main .prospectus-cta-inner {
	max-width: 760px;
	margin: 0 auto;
	padding: 0 32px;
	text-align: center;
}
.stage-main .prospectus-cta {
	display: inline-flex;
	align-items: center;
	gap: 14px;
	padding: 16px 28px;
	background: #8B1A1A;
	color: #FFFFFF;
	font-family: 'Jost', sans-serif;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	text-decoration: none;
	border-radius: 4px;
	transition: background 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease, gap 0.25s ease;
	box-shadow: 0 10px 24px -10px rgba(139, 26, 26, 0.5);
}
.stage-main .prospectus-cta:hover {
	background: #5C1010;
	transform: translateY(-1px);
	gap: 18px;
	box-shadow: 0 14px 32px -12px rgba(139, 26, 26, 0.6);
}
.stage-main .prospectus-cta-arrow {
	display: inline-block;
	font-size: 16px;
	font-weight: 500;
	transform: translateY(1px);
}

/* ════════════════════════════════════════════════════════════
 * SUBJECTS ACCORDION
 *   Designed to sit inside the same rhythm as .ks-section: cream
 *   background, no card surface, left-aligned eyebrow + heading,
 *   hairline rules between rows. No detached "widget" feel.
 * ════════════════════════════════════════════════════════════ */
.stage-main .subjects-block {
	padding: 88px 0;
}
.stage-main .subjects-inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
}
/* Default: left-aligned head, 920px max so paragraphs aren't too narrow */
.stage-main .subjects-head {
	max-width: 920px;
	margin: 0 0 56px;
	text-align: left;
}
/* When a side photo is set, switch to a 2-col grid (text left, photo right). */
.stage-main .subjects-head.subjects-head--with-photo {
	max-width: none;
	display: grid;
	grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
	gap: 64px;
	align-items: center;
	margin-bottom: 72px;
}
.stage-main .subjects-head-text { min-width: 0; }
.stage-main .subjects-head-photo {
	margin: 0;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 24px 56px -28px rgba(26, 26, 26, 0.2);
}
.stage-main .subjects-head-photo-img {
	aspect-ratio: 4 / 5;
	background-size: cover;
	background-position: center;
}
.stage-main .subjects-head-photo-caption {
	margin-top: 12px;
	font-size: 13px;
	font-style: italic;
	color: var(--text-dim);
	text-align: left;
}
.stage-main .subjects-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 14px;
}
.stage-main .subjects-head h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(34px, 4vw, 56px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.04;
	color: var(--ink);
	margin: 0 0 18px;
}
.stage-main .subjects-head h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .subjects-intro {
	font-size: 17px;
	line-height: 1.7;
	color: var(--text-dim);
	max-width: 760px;
	margin: 0;
}
.stage-main .subjects-intro p { margin: 0; }
.stage-main .subjects-intro p + p { margin-top: 12px; }

/* Accordion — open list, hairlines top/bottom. Sits wider than the head
   text so subject names breathe across the page. */
.stage-main .subjects-accordion {
	max-width: 980px;
	margin: 8px 0 0;
	border-top: 1px solid var(--line);
}
.stage-main .subject-row {
	border-bottom: 1px solid var(--line);
}
.stage-main .subject-row > summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 26px 4px;
	cursor: pointer;
	list-style: none;
	user-select: none;
	transition: padding-left 0.25s ease, color 0.2s ease;
}
.stage-main .subject-row > summary::-webkit-details-marker { display: none; }
.stage-main .subject-row > summary:hover {
	padding-left: 10px;
}
.stage-main .subject-row > summary:hover .subject-name {
	color: var(--crimson);
}
.stage-main .subject-row > summary:focus-visible {
	outline: 2px solid var(--crimson);
	outline-offset: 4px;
	border-radius: 2px;
}
.stage-main .subject-name {
	font-family: 'Jost', sans-serif;
	font-size: clamp(20px, 2.2vw, 26px);
	font-weight: 500;
	letter-spacing: -0.015em;
	color: var(--ink);
	transition: color 0.2s ease;
}
.stage-main .subject-chev {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 22px;
	font-weight: 300;
	color: var(--crimson);
	transition: transform 0.3s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.stage-main .subject-row[open] > summary .subject-chev {
	transform: rotate(45deg);
}
.stage-main .subject-body {
	padding: 4px 4px 36px;
	max-width: 720px;
	animation: stage-subject-open 0.35s cubic-bezier(0.2, 0.6, 0.2, 1);
}
.stage-main .subject-section-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin: 24px 0 12px;
}
.stage-main .subject-section-tag:first-child {
	margin-top: 0;
}
.stage-main .subject-section-body p {
	font-size: 17px;
	line-height: 1.7;
	color: var(--ink);
	margin: 0 0 14px;
}
.stage-main .subject-section-body p:last-child { margin-bottom: 0; }
.stage-main .subject-section-body p em { font-style: italic; color: #8B1A1A; font-weight: 500; }
.stage-main .subject-section-body p strong { font-weight: 600; color: #1a1a1a; }
.stage-main .subject-section-body ul {
	margin: 8px 0 12px;
	padding: 0;
	list-style: none;
}
.stage-main .subject-section-body ul li {
	position: relative;
	padding: 4px 0 4px 20px;
	font-size: 15px;
	line-height: 1.6;
	color: rgba(26, 26, 26, 0.82);
}
.stage-main .subject-section-body ul li::before {
	content: "—";
	position: absolute;
	left: 0;
	color: #8B1A1A;
	font-weight: 600;
}
@keyframes stage-subject-open {
	from { opacity: 0; transform: translateY(-4px); }
	to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
	.stage-main .subject-chev,
	.stage-main .subject-body { animation: none; transition: none; }
}

/* ════════════════════════════════════════════════════════════
 * ENRICHMENT — calm text section, matches chapter rhythm
 * ════════════════════════════════════════════════════════════ */
.stage-main .enrichment-block {
	padding: 88px 0;
	border-top: 1px solid var(--line);
}
.stage-main .enrichment-inner {
	max-width: 1280px;
	margin: 0 auto;
	padding: 0 32px;
}
/* When a side photo is set, switch to a 2-col grid: PHOTO LEFT, text right
   — alternates with the Subjects head (photo-right). Wellington-style. */
.stage-main .enrichment-inner.enrichment-inner--with-photo {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
	gap: 64px;
	align-items: center;
}
.stage-main .enrichment-text {
	max-width: 720px;
	min-width: 0;
}
.stage-main .enrichment-photo {
	margin: 0;
	border-radius: 6px;
	overflow: hidden;
	box-shadow: 0 24px 56px -28px rgba(26, 26, 26, 0.2);
}
.stage-main .enrichment-photo-img {
	aspect-ratio: 4 / 5;
	background-size: cover;
	background-position: center;
}
.stage-main .enrichment-photo-caption {
	margin-top: 12px;
	font-size: 13px;
	font-style: italic;
	color: var(--text-dim);
	text-align: left;
}
.stage-main .enrichment-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin-bottom: 14px;
}
.stage-main .enrichment-block h2 {
	font-family: 'Jost', sans-serif;
	font-size: clamp(34px, 4vw, 56px);
	font-weight: 500;
	letter-spacing: -0.02em;
	line-height: 1.04;
	color: var(--ink);
	margin: 0 0 28px;
}
.stage-main .enrichment-block h2 em {
	font-style: italic;
	color: var(--crimson);
	font-weight: 400;
}
.stage-main .enrichment-body {
	max-width: 720px;
}
.stage-main .enrichment-body p {
	font-size: 17px;
	line-height: 1.7;
	color: var(--ink);
	margin: 0 0 16px;
}
.stage-main .enrichment-body p em { font-style: italic; color: var(--crimson); font-weight: 500; }
.stage-main .enrichment-body p strong { font-weight: 600; color: var(--ink); }
.stage-main .enrichment-section-tag {
	font-size: 11px;
	letter-spacing: 0.22em;
	text-transform: uppercase;
	color: var(--crimson);
	font-weight: 700;
	margin: 32px 0 12px;
	max-width: 720px;
}
/* When the Subjects accordion is followed directly by Enrichment (no
   middle banner photo), give them clear breathing room with a hairline. */
.stage-main .subjects-block + .enrichment-block {
	border-top: 1px solid var(--line);
}
/* …but if a banner photo sits between them, drop the hairline so we
   don't double-up on visual dividers. */
.stage-main .banner-photo + .enrichment-block {
	border-top: none;
}

@media (max-width: 960px) {
	.stage-main .subjects-head.subjects-head--with-photo,
	.stage-main .enrichment-inner.enrichment-inner--with-photo,
	.stage-main .intro--split .intro-inner {
		grid-template-columns: 1fr;
		gap: 32px;
	}
	/* Photo always stacks ABOVE the text on mobile, regardless of desktop side. */
	.stage-main .enrichment-inner.enrichment-inner--with-photo .enrichment-photo,
	.stage-main .intro--split .intro-photo { order: -1; }
	.stage-main .intro--split.intro--photo-right .intro-photo { order: -1; }
	.stage-main .intro--split.intro--photo-right .intro-text { order: 0; }
	.stage-main .subjects-head-photo-img,
	.stage-main .enrichment-photo-img,
	.stage-main .intro--split .intro-photo-img { aspect-ratio: 16 / 11; }
}

@media (max-width: 760px) {
	.stage-main .intro--split { padding: 56px 0 48px; }
	.stage-main .intro--split .intro-inner { padding: 0 20px; }
	.stage-main .intro--split .intro-text-body p { font-size: 16px; }
	.stage-main .prospectus-cta-section { padding: 0 0 40px; }
	.stage-main .prospectus-cta { padding: 14px 22px; font-size: 12px; }
	.stage-main .subjects-block { padding: 56px 0; }
	.stage-main .subjects-inner { padding: 0 20px; }
	.stage-main .subjects-head { margin-bottom: 32px; }
	.stage-main .subjects-head.subjects-head--with-photo { margin-bottom: 40px; }
	.stage-main .subject-row > summary { padding: 20px 4px; }
	.stage-main .subject-body { padding: 4px 4px 28px; }
	.stage-main .subject-section-body p { font-size: 16px; }
	.stage-main .enrichment-block { padding: 56px 0; }
	.stage-main .enrichment-inner { padding: 0 20px; }
	.stage-main .enrichment-body p { font-size: 16px; }
}
