/** Shared opt-in inner-page primitives for portal and Kadence branch shells. */
:root {
	--ifj-container-content: 84rem;
	--ifj-container-narrow: 48rem;
	--ifj-gutter: clamp(1.25rem, 4vw, 4rem);
	--ifj-inner-section-space: clamp(3rem, 4vw, 4rem);
}

/* Remove Kadence's boxed-page spacing only when content opts into this system. */
.ifj-has-inner-page .content-area {
	margin-block: 0;
}

.ifj-has-inner-page .content-container.site-container {
	max-inline-size: none;
	padding-inline: 0;
}

.ifj-has-inner-page :where(.entry, .entry-content-wrap) {
	margin-inline: 0 !important;
	padding: 0;
	box-shadow: none;
}

.ifj-has-inner-page .entry-content {
	margin: 0;
}

.ifj-inner-page {
	--ifj-gutter: clamp(1.5rem, 4vw, 4rem);
	overflow: clip;
}

.ifj-inner-section:not(.alignfull, .ifj-inner-page__hero),
.ifj-section-container {
	box-sizing: border-box;
	inline-size: min(calc(100% - (2 * var(--ifj-gutter))), var(--ifj-container-content));
	margin-inline: auto;
}

.ifj-inner-page__hero,
.ifj-inner-section {
	padding-block: var(--ifj-inner-section-space);
}

.ifj-has-inner-page .entry-content .ifj-inner-page > :where(.ifj-inner-page__hero, .ifj-inner-section) {
	margin-block: 0;
}

.ifj-inner-page__hero,
.ifj-inner-section {
	scroll-margin-block-start: 9rem;
}

/* Shared inner-page hero component. */
.ifj-inner-page__hero {
	inline-size: 100%;
	max-inline-size: none;
	min-block-size: 0;
	box-sizing: border-box;
	padding-block: var(--ifj-space-lg);
	color: var(--ifj-noir);
	background: var(--ifj-blanc);
	border-block-end: 1px solid var(--ifj-ecume);
}

.ifj-inner-page__hero:not(.alignfull) {
	padding-inline: max(var(--ifj-gutter), calc((100% - var(--ifj-container-content)) / 2));
}

.ifj-inner-page__hero .ifj-editorial-introduction > * + * {
	margin-block-start: var(--ifj-space-sm);
}

.ifj-inner-page__hero :where(.has-lead-font-size, .ifj-inner-page__hero-intro) {
	max-inline-size: var(--ifj-container-narrow);
	color: var(--ifj-noir);
}

.ifj-inner-page__hero-media {
	min-inline-size: 0;
	margin: 0;
}

.ifj-inner-page__hero-media :where(img, video) {
	display: block;
	inline-size: 100%;
	block-size: auto;
}

.ifj-inner-page__hero-caption {
	margin-block-start: var(--ifj-space-xs);
	font-size: var(--ifj-font-size-meta);
}

.ifj-reading-width,
.ifj-editorial-introduction {
	max-inline-size: var(--ifj-container-narrow);
}

.ifj-reading-width > * + *,
.ifj-editorial-introduction > * + * {
	margin-block-start: var(--ifj-space-md);
}

.ifj-inner-page :where(h1, h2, h3) {
	margin-block-start: 0;
	overflow-wrap: normal;
	word-break: normal;
	text-wrap: balance;
}

.ifj-inner-page h1 {
	max-inline-size: 18ch;
	color: var(--ifj-bleu);
	font-size: var(--ifj-font-size-h1);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: normal;
}

.ifj-inner-page h2 {
	font-size: var(--ifj-font-size-h2);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: normal;
}

.ifj-inner-page h3 {
	font-size: var(--ifj-font-size-h3);
	font-weight: 700;
	line-height: 1.22;
	letter-spacing: normal;
}

.ifj-inner-page :where(p, li) {
	max-inline-size: 70ch;
}

.ifj-inner-page > .ifj-full-width-section {
	inline-size: 100%;
	max-inline-size: none;
	margin-inline: 0;
}

.ifj-inner-page .ifj-card-grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--ifj-space-md);
}

.ifj-about-mission,
.ifj-about-branches,
.ifj-about-partners {
	background: var(--ifj-blanc);
}

.ifj-about-axes {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0 clamp(2rem, 6vw, 6rem);
	margin-block-start: var(--ifj-space-xl);
	border-block-start: 1px solid var(--ifj-bleu);
}

.ifj-inner-page .ifj-about-axis {
	display: grid;
	grid-template-columns: 3rem minmax(0, 1fr);
	grid-template-rows: auto 1fr auto;
	gap: var(--ifj-space-xs) var(--ifj-space-md);
	padding-block: var(--ifj-space-lg);
	block-size: 100%;
	margin: 0;
}

.ifj-about-axis::after {
	grid-column: 1 / -1;
	block-size: 1px;
	margin-block-start: var(--ifj-space-md);
	background: var(--ifj-bleu);
	content: "";
}

.ifj-about-axis__number {
	grid-row: 1 / span 2;
	margin: 0;
	color: var(--ifj-bleu);
	font-weight: 700;
}

.ifj-inner-page .ifj-about-axis > :where(h3, p) {
	margin: 0;
}

.ifj-about-axis h3 {
	color: var(--ifj-bleu);
}

.ifj-inner-page > .ifj-about-network.has-background {
	padding-block: clamp(4rem, 6vw, 6rem);
	padding-inline: 0;
	color: var(--ifj-noir);
}

.ifj-about-branches > .ifj-reading-width {
	margin-block-end: var(--ifj-space-xl);
}

.ifj-branch-card {
	display: flex;
	min-inline-size: 0;
	flex-direction: column;
	gap: 0;
	background: var(--ifj-blanc);
	border: 1px solid var(--ifj-ecume);
}

.ifj-branch-card__media {
	display: block;
	inline-size: 100%;
	min-block-size: 0;
	margin: 0;
	aspect-ratio: 3 / 2;
	overflow: hidden;
}

.ifj-branch-card__media img {
	display: block;
	inline-size: 100%;
	block-size: 100%;
	object-fit: cover;
}

.ifj-branch-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 0;
	padding: var(--ifj-space-md);
	text-align: start;
}

.ifj-branch-card__body > * + * {
	margin-block-start: var(--ifj-space-sm);
}

.ifj-branch-card__logo {
	display: flex;
	align-items: center;
	min-block-size: var(--ifj-space-xl);
	margin-block: 0;
}

.ifj-branch-card__logo img {
	inline-size: auto;
	max-inline-size: 100%;
	block-size: auto;
	max-block-size: var(--ifj-space-xl);
	object-fit: contain;
	object-position: left center;
}

.ifj-branch-card h3 {
	font-size: var(--ifj-font-size-heading);
}

.ifj-branch-card__cta {
	margin-block-start: auto;
	padding-block-start: var(--ifj-space-md);
}

.ifj-branch-card__cta a {
	display: inline-flex;
	align-items: center;
	min-block-size: 2.75rem;
	color: var(--ifj-bleu);
	font-weight: 700;
}

/* Main media-libraries portal. */
.ifj-media-libraries-hero__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(18rem, 0.75fr);
	align-items: center;
	gap: clamp(var(--ifj-space-xl), 8vw, 8rem);
}

.ifj-media-libraries-hero__composition {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--ifj-space-sm);
	aspect-ratio: 3 / 2;
}

.ifj-media-libraries-hero__composition > .wp-block-group {
	min-block-size: 0;
}

.ifj-media-resources {
	border-block-end: 1px solid var(--ifj-ecume);
}

.ifj-media-resources__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0 clamp(2rem, 5vw, 5rem);
	margin-block-start: var(--ifj-space-xl);
	border-block-start: 1px solid var(--ifj-bleu);
}

.ifj-media-resource {
	min-inline-size: 0;
	padding-block: var(--ifj-space-lg);
	border-block-end: 1px solid var(--ifj-ecume);
}

.ifj-media-resource > * {
	margin-block: 0;
}

.ifj-media-resource > * + * {
	margin-block-start: var(--ifj-space-sm);
}

.ifj-media-resource h3 {
	color: var(--ifj-bleu);
}

.ifj-media-branches > .ifj-reading-width {
	margin-block-end: var(--ifj-space-xl);
}

.ifj-inner-page > .ifj-culturetheque.has-background {
	padding-block: clamp(4rem, 6vw, 6rem);
	padding-inline: 0;
	color: var(--ifj-blanc);
}

.ifj-culturetheque h2,
.ifj-culturetheque a {
	color: var(--ifj-blanc);
}

.ifj-culturetheque__actions {
	margin-block-start: var(--ifj-space-lg);
}

.ifj-culturetheque .wp-block-button__link {
	border: 2px solid var(--ifj-blanc);
	font-weight: 700;
}

.ifj-culturetheque .wp-block-button.is-style-outline .wp-block-button__link {
	color: var(--ifj-blanc);
	border-color: var(--ifj-blanc);
}

.ifj-culturetheque .is-style-outline .wp-block-button__link:hover,
.ifj-culturetheque .is-style-outline .wp-block-button__link:focus-visible {
	color: var(--ifj-bleu);
	background: var(--ifj-blanc);
}

.ifj-culturetheque__faq a {
	text-underline-offset: 0.2em;
}

.ifj-about-partners .ifj-reading-width {
	padding-block-end: var(--ifj-space-md);
}

.ifj-inner-page .ifj-inner-page-related {
	padding-block-end: clamp(4rem, 6vw, 6rem);
	background: var(--ifj-blanc);
	border-block-start: 1px solid var(--ifj-bleu);
}

.ifj-inner-page-related__heading {
	margin-block-end: var(--ifj-space-xl);
}

.ifj-inner-page .ifj-inner-page-related__grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--ifj-space-md);
	margin: 0;
	padding: 0;
	list-style: none;
}

.ifj-inner-page-related__item {
	display: flex;
	max-inline-size: none;
}

.ifj-inner-page-related__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--ifj-space-sm);
	inline-size: 100%;
	min-block-size: 6rem;
	box-sizing: border-box;
	padding: clamp(var(--ifj-space-sm), 2vw, var(--ifj-space-md));
	color: var(--ifj-bleu);
	background: var(--ifj-blanc);
	border: 1px solid var(--ifj-ecume);
	border-block-start: 0.25rem solid var(--ifj-bleu);
	box-shadow: 0 0.35rem 1rem rgb(53 88 162 / 8%);
	font-size: var(--ifj-font-size-body);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: normal;
	text-transform: none;
	text-decoration: none;
}

.ifj-inner-page-related__link::after {
	flex: 0 0 auto;
	content: "→";
}

.ifj-inner-page-related__link:hover,
.ifj-inner-page-related__link:focus-visible {
	color: var(--ifj-noir);
	background: var(--ifj-cumulus);
	border-block-start-color: var(--ifj-tournesol);
	outline-offset: 0.2rem;
}

/* Reusable service-page components. */
.ifj-service-overview__grid,
.ifj-destination-grid,
.ifj-level-grid {
	display: grid;
	margin: 0;
	padding: 0;
	list-style: none;
}

.ifj-inner-page .ifj-service-overview__grid,
.ifj-inner-page .ifj-destination-grid,
.ifj-inner-page .ifj-level-grid {
	padding-inline: 0;
}

.ifj-service-overview__grid {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--ifj-space-md);
}

.ifj-service-overview__item,
.ifj-destination-grid__item {
	max-inline-size: none;
}

.ifj-service-overview__link {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: var(--ifj-space-sm);
	min-block-size: 5.5rem;
	padding: var(--ifj-space-sm);
	color: var(--ifj-bleu);
	background: var(--ifj-blanc);
	border: 1px solid var(--ifj-ecume);
	border-block-start: 0.25rem solid var(--ifj-bleu);
	font-weight: 700;
	line-height: 1.25;
	text-decoration: none;
}

.ifj-service-overview__link::after,
.ifj-destination-link::after {
	grid-column: 2;
	content: "↓";
}

.ifj-destination-link::after {
	content: "→";
}

.ifj-service-overview__link:hover,
.ifj-service-overview__link:focus-visible,
.ifj-destination-link:hover,
.ifj-destination-link:focus-visible {
	color: var(--ifj-noir);
	background: var(--ifj-cumulus);
	border-block-start-color: var(--ifj-tournesol);
}

.ifj-service-overview__number {
	grid-row: 1 / span 2;
	font-weight: 700;
}

.ifj-course-section + .ifj-course-section,
.ifj-certification-block + .ifj-certification-block {
	border-block-start: 1px solid var(--ifj-ecume);
}

.ifj-course-section .ifj-reading-width h3 {
	margin-block-start: var(--ifj-space-lg);
}

.ifj-destination-grid {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--ifj-space-sm);
	margin-block-start: var(--ifj-space-lg);
}

.ifj-destination-grid-three {
	grid-template-columns: repeat(3, minmax(0, 1fr));
}

.ifj-destination-link {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--ifj-space-sm);
	min-block-size: 4.5rem;
	padding: var(--ifj-space-sm);
	color: var(--ifj-bleu);
	background: var(--ifj-blanc);
	border: 1px solid var(--ifj-ecume);
	border-block-start: 0.25rem solid var(--ifj-bleu);
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
}

.ifj-inner-page > .ifj-course-contact-surface.has-background,
.ifj-inner-page > .ifj-course-finder.has-background {
	padding-block: var(--ifj-inner-section-space);
	padding-inline: 0;
}

.ifj-course-contact-surface .ifj-reading-width,
.ifj-course-finder .ifj-reading-width {
	margin-inline-start: 0;
}

.ifj-course-actions {
	align-items: stretch;
	margin-block-start: var(--ifj-space-lg);
}

.ifj-course-actions .wp-block-button__link {
	block-size: 100%;
	box-sizing: border-box;
}

.ifj-course-certifications > .ifj-reading-width {
	margin-block-end: var(--ifj-space-lg);
}

.ifj-certification-block {
	padding-block: var(--ifj-space-lg);
	max-inline-size: var(--ifj-container-narrow);
}

.ifj-level-grid {
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: var(--ifj-space-xs);
	margin-block: var(--ifj-space-md);
}

.ifj-level-grid li {
	padding: var(--ifj-space-sm) var(--ifj-space-xs);
	color: var(--ifj-bleu);
	background: var(--ifj-cumulus);
	font-weight: 700;
	text-align: center;
}

.ifj-subsection-label {
	margin-block-start: var(--ifj-space-lg);
	color: var(--ifj-bleu);
	font-weight: 700;
}

.ifj-course-finder__closing {
	margin-block-start: var(--ifj-space-lg);
}

.ifj-inner-page-related-compact .ifj-inner-page-related__link {
	font-size: var(--ifj-font-size-body);
	line-height: 1.35;
}

/* Students and university-cooperation pages. */
.ifj-students-color-band { block-size: clamp(5rem, 10vw, 8rem); background: linear-gradient(90deg, var(--ifj-bleu) 0 25%, var(--ifj-tournesol) 25% 50%, var(--ifj-macaron) 50% 75%, var(--ifj-menthe) 75%); }
.ifj-students-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 1fr; align-items: stretch; gap: var(--ifj-space-md); margin-block-start: var(--ifj-space-lg); }
.ifj-student-card { display: flex; min-inline-size: 0; block-size: 100%; box-sizing: border-box; flex-direction: column; padding: var(--ifj-space-md); border: 1px solid var(--ifj-ecume); border-block-start: .25rem solid var(--ifj-bleu); }
.ifj-student-card > p { flex: 1; }
.ifj-student-card .wp-block-buttons { margin-block-start: auto; padding-block-start: var(--ifj-space-md); }
.ifj-student-card .wp-block-button__link { block-size: 100%; }
.ifj-students-child > .ifj-inner-section:not(.ifj-inner-page__hero) + .ifj-inner-section { border-block-start: 1px solid var(--ifj-ecume); }
.ifj-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ifj-space-sm); margin-block-start: var(--ifj-space-lg); padding: 0; list-style: none; counter-reset: ifj-student-step; }
.ifj-steps li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--ifj-space-sm); max-inline-size: none; min-block-size: 5.5rem; box-sizing: border-box; padding: var(--ifj-space-sm); color: var(--ifj-bleu); background: var(--ifj-blanc); border: 1px solid var(--ifj-ecume); border-block-start: .25rem solid var(--ifj-bleu); font-weight: 700; counter-increment: ifj-student-step; }
.ifj-steps li::before { display: grid; place-items: center; inline-size: 2rem; block-size: 2rem; color: var(--ifj-blanc); background: var(--ifj-bleu); content: counter(ifj-student-step, decimal-leading-zero); font-size: var(--ifj-font-size-small); }
.ifj-inner-page > .ifj-contact-panel.has-background {
	inline-size: 100%;
	max-inline-size: none;
	box-sizing: border-box;
	padding-block: var(--ifj-inner-section-space);
	padding-inline: max(var(--ifj-gutter), calc((100% - var(--ifj-container-content)) / 2));
}
.ifj-contact-panel > :where(h2, p, .wp-block-buttons) { max-inline-size: var(--ifj-container-narrow); }
.ifj-document-section .wp-block-file { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--ifj-space-xs) var(--ifj-space-md); align-items: center; max-inline-size: 56rem; padding: var(--ifj-space-md); border: 1px solid var(--ifj-ecume); border-inline-start: .25rem solid var(--ifj-bleu); }
.ifj-document-section .wp-block-file__button { min-block-size: 2.75rem; display: inline-flex; align-items: center; }

@media (max-width: 80rem) {
	.ifj-media-resources__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
	.ifj-students-grid,
	.ifj-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.ifj-inner-page .ifj-card-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ifj-inner-page .ifj-inner-page-related__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ifj-service-overview__grid,
	.ifj-destination-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ifj-level-grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 48rem) {
	.ifj-media-libraries-hero__layout {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--ifj-space-lg);
	}

	.ifj-media-libraries-hero__composition {
		max-inline-size: 32rem;
	}
	.ifj-inner-page__hero,
	.ifj-inner-section {
		scroll-margin-block-start: 8rem;
	}

	.ifj-about-axes {
		grid-template-columns: minmax(0, 1fr);
		margin-block-start: var(--ifj-space-lg);
	}

	.ifj-inner-page .ifj-about-axis {
		grid-template-columns: minmax(0, 1fr);
		grid-template-rows: auto;
		gap: var(--ifj-space-xs);
		padding-block: var(--ifj-space-md);
		text-align: start;
	}

	.ifj-about-axis__number {
		grid-row: auto;
	}

}

@media (max-width: 40rem) {
	.ifj-media-resources__grid {
		grid-template-columns: minmax(0, 1fr);
	}
	.ifj-students-grid,
	.ifj-steps { grid-template-columns: minmax(0, 1fr); }
	.ifj-inner-page .ifj-card-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.ifj-inner-page .ifj-inner-page-related__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.ifj-inner-page-related__link {
		min-block-size: 4.5rem;
	}

	.ifj-service-overview__grid,
	.ifj-destination-grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.ifj-level-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

}

@media print {
	.ifj-inner-page {
		overflow: visible;
	}
}
