/* Nocturne des Evaux, accueil V2 (widgets)
   Sizes are in px: bootstrap.min.css sets html { font-size: 10px }, so rem would shrink everything.
   Rows carry the classes: nde (base) + nde--night / nde--mist (surface) + nde-section (padding) or nde-hero / nde-bare.
   Native Beaver Builder modules (heading, rich text, photo, button, button group) are styled through the row.
   Type: Exo 2, 700 for headings, 300 for text. One radius. Fluid scale up to 2560px. */

:root {
	--nde-night: #143454;
	--nde-night-deep: #0d2438;
	--nde-ink: #0f2236;
	--nde-ink-muted: #4d5d6e;
	--nde-blue: #024d83;
	--nde-cyan: #00dcff;
	--nde-paper: #ffffff;
	--nde-mist: #eef2f6;
	--nde-azure: #d9eaf6;
	--nde-alert-bg: #fdeceb;
	--nde-alert-line: #b3261e;
	--nde-alert-border: #e9b4b0;
	--nde-alert-ink: #6d1a14;
	--nde-line: #d3dce5;
	--nde-line-night: rgba(255, 255, 255, 0.16);
	--nde-on-night: #ffffff;
	--nde-on-night-muted: #b9c7d6;

	--nde-font: "Exo 2", "Helvetica Neue", Arial, sans-serif;
	--nde-text: clamp(17px, 0.45vw + 12px, 22px);
	--nde-text-small: clamp(15px, 0.3vw + 12px, 18px);
	--nde-label: clamp(13px, 0.25vw + 11px, 15px);
	--nde-h3: clamp(22px, 0.75vw + 14px, 30px);
	--nde-h2: clamp(38px, 3vw + 12px, 88px);
	--nde-h1: clamp(52px, 5.4vw + 8px, 124px);
	--nde-display: clamp(30px, 2.2vw + 12px, 56px);

	--nde-space-1: 8px;
	--nde-space-2: 12px;
	--nde-space-3: 16px;
	--nde-space-4: 24px;
	--nde-space-5: 32px;
	--nde-space-6: 48px;
	--nde-space-7: clamp(56px, 4vw, 96px);
	--nde-space-8: clamp(80px, 7vw, 176px);

	--nde-radius: 4px;
	--nde-wrap: 1760px;
	--nde-gutter: clamp(20px, 4.5vw, 120px);
	--nde-colgap: clamp(40px, 5vw, 140px);
	--nde-measure: 58ch; /* ~78 characters in Exo 2, whose "0" (the ch unit) is wide */
	--nde-header-h: clamp(68px, 4vw + 40px, 96px);
	--nde-admin-bar: 0px;
	--nde-sticky-top: calc(var(--nde-header-h) + var(--nde-admin-bar) + 48px);
}

body.admin-bar {
	--nde-admin-bar: 32px;
}

/* ---------- Base ---------- */

.nde-standalone {
	background: var(--nde-paper);
}

.nde {
	font-family: var(--nde-font);
	font-weight: 300;
	font-size: var(--nde-text);
	line-height: 1.55;
	color: var(--nde-ink);
	background: var(--nde-paper);
	-webkit-font-smoothing: antialiased;
	overflow-wrap: normal;
	word-wrap: normal;
}

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

.nde :is(h1, h2, h3, h4) {
	font-family: var(--nde-font);
	font-weight: 700;
	color: inherit;
	text-transform: none;
	letter-spacing: 0;
	margin: 0;
	padding: 0;
	overflow-wrap: normal;
	word-break: normal;
	hyphens: manual;
}

.nde h1 {
	font-size: var(--nde-h1);
	line-height: 0.98;
	letter-spacing: -0.015em;
	text-wrap: balance;
}

.nde h2 {
	font-size: var(--nde-h2);
	line-height: 1.02;
	letter-spacing: -0.01em;
	text-wrap: balance;
}

.nde h3 {
	font-size: var(--nde-h3);
	line-height: 1.35;
}

.nde p,
.nde ul,
.nde ol,
.nde dl,
.nde figure {
	margin: 0;
}

.nde strong,
.nde b {
	font-weight: 700;
}

.nde a {
	color: var(--nde-blue);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.2em;
	transition: color 150ms ease-out;
}

.nde a:hover {
	color: var(--nde-ink);
	text-decoration-thickness: 2px;
}

/* An inline link in running text carries a little more weight than the 300 around it. */
.nde .fl-rich-text a:not(.fl-button):not(.nde-btn),
.nde .nde-prose a:not(.fl-button):not(.nde-btn) {
	font-weight: 500;
}

.nde a:focus:not(:focus-visible),
.nde button:focus:not(:focus-visible),
.nde summary:focus:not(:focus-visible) {
	outline: 0;
}

.nde a:focus-visible,
.nde button:focus-visible,
.nde summary:focus-visible {
	outline: 2px solid var(--nde-blue);
	outline-offset: 3px;
	border-radius: var(--nde-radius);
}

.nde img,
.nde svg {
	display: block;
	max-width: 100%;
	height: auto;
}

.nde-muted {
	color: var(--nde-ink-muted);
}

.nde-sr {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

.nde--mist {
	background: var(--nde-mist);
}

.nde--night {
	background: var(--nde-night);
	color: var(--nde-on-night);
}

.nde--night .nde-muted {
	color: var(--nde-on-night-muted);
}

.nde--night a,
.nde--night a:hover {
	color: var(--nde-on-night);
}

.nde--night a:focus-visible,
.nde--night button:focus-visible,
.nde--night summary:focus-visible {
	outline-color: var(--nde-cyan);
}

.nde .nde-prose > * + * {
	margin-top: var(--nde-space-3);
}

/* ---------- Beaver Builder rows, columns, modules ---------- */

/* The sky clips itself, so the row does not have to: a clipping row would cut
   any positioned layer that needs to escape it. */
.fl-row.nde > .fl-row-content-wrap {
	position: relative;
}

.fl-row.nde[id] {
	scroll-margin-top: calc(var(--nde-header-h) + var(--nde-admin-bar));
}

/* !important: Beaver Builder writes per-row padding rules for every breakpoint, loaded after this file. */
.fl-row.nde-section > .fl-row-content-wrap {
	padding: var(--nde-space-8) var(--nde-gutter) !important;
}

/* !important: Beaver Builder sets max-width: none on full-width content rows. */
.fl-row.nde-section .fl-row-content {
	width: 100%;
	max-width: var(--nde-wrap) !important;
	margin-inline: auto !important;
}

.fl-row.nde-strip > .fl-row-content-wrap {
	padding: var(--nde-space-6) var(--nde-gutter) !important;
	border-top: 1px solid var(--nde-line-night);
}

.fl-row.nde-strip .fl-row-content {
	width: 100%;
	max-width: var(--nde-wrap) !important;
	margin-inline: auto !important;
}

.fl-row.nde-strip .fl-col-group {
	align-items: center;
}

.fl-row.nde-bare,
.fl-row.nde-bare > .fl-row-content-wrap {
	padding: 0 !important;
	background: transparent;
	overflow: visible;
}

.fl-row.nde .fl-col-group {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	width: 100%;
}

.fl-row.nde .fl-col-group::before,
.fl-row.nde .fl-col-group::after {
	display: none;
}

.fl-row.nde .fl-col,
.fl-row.nde .fl-col-content {
	float: none;
	position: static;
}

.fl-row.nde .fl-col-group + .fl-col-group {
	margin-top: var(--nde-space-7);
}

/* Modules sit above the sky; the sky widget fills the whole row */

.fl-row.nde .fl-module {
	position: relative;
	z-index: 1;
}

/* Header and footer rows: no stacking context, so the fixed header (z 60), mobile menu
   and loader (z 100) stay above every later row. */
.fl-row.nde-bare .fl-module,
.fl-row.nde-bare .fl-module-content,
.fl-row.nde-bare .fl-col,
.fl-row.nde-bare .fl-col-content,
.fl-row.nde-bare > .fl-row-content-wrap {
	position: static !important;
	z-index: auto !important;
	transform: none !important;
}

.fl-row.nde .fl-module:has(> .fl-module-content > .nde-sky),
.fl-row.nde .fl-module:has(> .fl-module-content > .nde-sky) > .fl-module-content {
	position: static;
	z-index: auto;
	margin: 0;
}

/* Vertical rhythm between modules in a column */

.fl-row.nde .fl-col-content > .fl-module + .fl-module {
	margin-top: var(--nde-space-5);
}

.fl-row.nde .fl-col-content > .fl-module-heading + .fl-module {
	margin-top: var(--nde-space-4);
}

.fl-row.nde .fl-col-content > .fl-module:has(> .fl-module-content > .nde-sky) + .fl-module {
	margin-top: 0;
}

.fl-row.nde .fl-col-content > .fl-module.nde-mt-lg {
	margin-top: var(--nde-space-6);
}

.fl-row.nde .fl-col-content > .fl-module.nde-mt-xl {
	margin-top: var(--nde-space-7);
}

/* Column helpers, set in the column "class" field */

/* Lines up a module under a timeline with the timeline's own text. */
.fl-row.nde .fl-col-content > .fl-module.nde-inset {
	padding-left: clamp(24px, 3vw, 48px);
}

.fl-row.nde .fl-col.nde-col-middle {
	align-self: center;
}

.fl-row.nde .fl-col.nde-sticky {
	position: sticky;
	top: var(--nde-sticky-top);
	align-self: flex-start;
}

.fl-col.nde-gap-r > .fl-col-content {
	padding-right: var(--nde-colgap);
}

.fl-col.nde-gap-l > .fl-col-content {
	padding-left: var(--nde-colgap);
}

.fl-row.nde .fl-col.nde-order-2 {
	order: 2;
}

.fl-row.nde .fl-col.nde-align-right > .fl-col-content {
	display: flex;
	flex-direction: column;
	align-items: flex-end;
	justify-content: center;
}

@media (max-width: 992px) {
	.fl-row.nde .fl-col {
		width: 100% !important;
	}

	.fl-col.nde-gap-r > .fl-col-content,
	.fl-col.nde-gap-l > .fl-col-content {
		padding-left: 0;
		padding-right: 0;
	}

	.fl-row.nde .fl-col.nde-sticky {
		position: static;
	}

	.fl-row.nde .fl-col.nde-order-2 {
		order: 0;
	}

	.fl-row.nde .fl-col.nde-align-right > .fl-col-content {
		align-items: flex-start;
	}

	.fl-row.nde-section .fl-col + .fl-col {
		margin-top: var(--nde-space-6);
	}
}

/* Native heading */

.nde .fl-module-heading .fl-heading,
.nde .fl-module-heading .fl-heading a,
.nde .fl-module-heading .fl-heading-text {
	color: inherit;
}

/* Native rich text, variants set in the module "class" field */

.nde .fl-rich-text {
	max-width: var(--nde-measure);
	font-family: var(--nde-font);
	color: inherit;
}

.nde .fl-rich-text > * + * {
	margin-top: var(--nde-space-3);
}

.nde .fl-rich-text ul,
.nde .fl-rich-text ol {
	padding-left: 1.2em;
}

.nde .fl-rich-text li + li {
	margin-top: var(--nde-space-1);
}

.nde .nde-lede .fl-rich-text,
.nde .fl-rich-text.nde-lede {
	font-size: clamp(18px, 0.6vw + 12px, 26px);
	color: var(--nde-ink-muted);
}

.nde--night .nde-lede .fl-rich-text,
.nde--night .fl-rich-text.nde-lede {
	color: var(--nde-on-night-muted);
}

.nde .nde-lead .fl-rich-text,
.nde .fl-rich-text.nde-lead {
	max-width: 30em;
	font-size: clamp(18px, 0.7vw + 12px, 28px);
	line-height: 1.45;
	color: var(--nde-on-night);
}

.nde .nde-small .fl-rich-text,
.nde .fl-rich-text.nde-small {
	/* ch is measured on "0", which is wide in Exo 2: the reading measure needs
	   to be tighter here than the shared --nde-measure. */
	max-width: 46ch;
	font-size: var(--nde-text-small);
	color: var(--nde-ink-muted);
}

.nde .nde-note .fl-rich-text,
.nde .fl-rich-text.nde-note {
	color: var(--nde-ink-muted);
}

.nde--night .fl-rich-text.nde-small,
.nde--night .fl-rich-text.nde-note {
	color: var(--nde-on-night-muted);
}

/* Native photo */

.nde .fl-photo,
.nde .fl-photo-content {
	display: block;
	width: 100%;
	text-align: left;
}

.nde .fl-photo-img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 0;
	box-shadow: none;
}

.nde .fl-photo-caption {
	margin-top: var(--nde-space-2);
	padding: 0;
	font-size: var(--nde-label);
	color: var(--nde-ink-muted);
	text-align: left;
}

.nde .nde-photo--21x9 .fl-photo-img,
.nde .nde-photo--4x5 .fl-photo-img,
.nde .nde-photo--3x2 .fl-photo-img {
	object-fit: cover;
}

.nde .nde-photo--21x9 .fl-photo-img {
	aspect-ratio: 21 / 9;
	object-position: 50% 35%;
}

.nde .nde-photo--4x5 .fl-photo-img {
	aspect-ratio: 4 / 5;
	object-position: 45% 50%;
}

.nde .nde-photo--3x2 .fl-photo-img {
	aspect-ratio: 3 / 2;
}

@media (max-width: 992px) {
	.nde .nde-photo--4x5 .fl-photo-img {
		aspect-ratio: 3 / 2;
	}
}

@media (max-width: 640px) {
	.nde .nde-photo--21x9 .fl-photo-img {
		aspect-ratio: 4 / 3;
	}
}

.nde .nde-reveal--photo .fl-photo-content {
	overflow: hidden;
}

/* Photo that matches the height of the content next to it: the module is absolutely
   positioned inside the column, so it can never push the row taller than that content. */
@media (min-width: 993px) {
	.fl-row.nde .fl-col.nde-col-fill {
		align-self: stretch;
	}

	.fl-row.nde .fl-col.nde-col-fill > .fl-col-content {
		position: relative;
		height: 100%;
	}

	.fl-row.nde .fl-col.nde-col-fill .nde-photo--fill {
		position: absolute;
		inset: 0 var(--nde-colgap) 0 0;
	}

	.fl-row.nde .nde-photo--fill .fl-module-content,
	.fl-row.nde .nde-photo--fill .fl-photo,
	.fl-row.nde .nde-photo--fill .fl-photo-content {
		height: 100%;
	}

	.fl-row.nde .nde-photo--fill .fl-photo-img {
		width: 100%;
		height: 100%;
		aspect-ratio: auto;
		object-fit: cover;
	}
}

/* ---------- Buttons ---------- */
/* Native button and button group. !important is deliberate: bb-theme, Bootstrap and the per-node
   button CSS generated by Beaver Builder all target these links with higher specificity. */

.nde a.fl-button,
.nde a.fl-button:link,
.nde a.fl-button:visited,
.nde a.fl-button:hover,
.nde a.fl-button:focus,
.nde a.fl-button:active,
.nde a.nde-btn,
.nde a.nde-btn:hover,
.nde a.nde-btn:focus,
.nde a.nde-btn:active {
	text-decoration: none !important;
	box-shadow: none !important;
	outline: 0;
	background-image: none !important;
}

.nde a.fl-button,
.nde a.nde-btn {
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	width: auto !important;
	min-height: 50px;
	padding: 12px 26px !important;
	border: 1px solid transparent !important;
	border-radius: var(--nde-radius) !important;
	font-family: var(--nde-font) !important;
	font-weight: 700 !important;
	font-size: var(--nde-text-small) !important;
	line-height: 1.2 !important;
	cursor: pointer;
	transition: background-color 150ms ease-out, color 150ms ease-out, border-color 150ms ease-out, transform 150ms ease-out;
}

.nde a.fl-button .fl-button-text,
.nde a.fl-button:hover .fl-button-text,
.nde a.fl-button *,
.nde a.fl-button:hover * {
	color: inherit !important;
	font: inherit !important;
}

.nde a.fl-button:hover,
.nde a.nde-btn:hover {
	transform: translateY(-2px);
}

.nde a.fl-button:active,
.nde a.nde-btn:active {
	transform: translateY(0);
}

.nde a.fl-button:focus-visible,
.nde a.nde-btn:focus-visible {
	outline: 2px solid var(--nde-blue) !important;
	outline-offset: 3px;
}

.nde--night a.fl-button:focus-visible,
.nde--night a.nde-btn:focus-visible {
	outline-color: var(--nde-cyan) !important;
}

/* Primary: navy on light surfaces, cyan on night */

.nde a.fl-button,
.nde a.fl-button:visited,
.nde a.nde-btn--primary {
	background-color: var(--nde-night) !important;
	color: var(--nde-on-night) !important;
}

.nde a.fl-button:hover,
.nde a.nde-btn--primary:hover {
	background-color: var(--nde-blue) !important;
	color: var(--nde-on-night) !important;
}

.nde--night a.fl-button,
.nde--night a.fl-button:visited,
.nde--night a.nde-btn--primary {
	background-color: var(--nde-cyan) !important;
	color: var(--nde-night-deep) !important;
}

.nde--night a.fl-button:hover,
.nde--night a.nde-btn--primary:hover {
	background-color: var(--nde-paper) !important;
	color: var(--nde-night-deep) !important;
}

/* A button with no link is a placeholder, not an action: it reads as unavailable. */

.nde button.fl-button,
.nde button.fl-button:hover {
	background-color: transparent !important;
	border-color: var(--nde-line) !important;
	color: var(--nde-ink-muted) !important;
	cursor: not-allowed;
	transform: none !important;
}

.nde--night button.fl-button,
.nde--night button.fl-button:hover {
	border-color: var(--nde-line-night) !important;
	color: var(--nde-on-night-muted) !important;
}

/* Quiet: outline. Every button after the first in a group with class nde-actions,
   every button in a group with class nde-actions--quiet */

.nde .nde-actions .fl-button-group-button:not(:first-child) a.fl-button,
.nde .nde-actions--quiet a.fl-button,
.nde a.nde-btn--quiet {
	background-color: transparent !important;
	border-color: currentColor !important;
	color: var(--nde-ink) !important;
}

.nde--night .nde-actions .fl-button-group-button:not(:first-child) a.fl-button,
.nde--night .nde-actions--quiet a.fl-button,
.nde--night a.nde-btn--quiet {
	color: var(--nde-on-night) !important;
}

.nde .nde-actions .fl-button-group-button:not(:first-child) a.fl-button:hover,
.nde .nde-actions--quiet a.fl-button:hover,
.nde a.nde-btn--quiet:hover {
	background-color: rgba(20, 52, 84, 0.06) !important;
}

.nde--night .nde-actions .fl-button-group-button:not(:first-child) a.fl-button:hover,
.nde--night .nde-actions--quiet a.fl-button:hover {
	background-color: rgba(255, 255, 255, 0.08) !important;
}

.nde .nde-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--nde-space-3) var(--nde-space-4);
}

.nde .fl-button-group-buttons {
	display: flex !important;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--nde-space-3) var(--nde-space-4);
}

/* In BB 2.11 the module element itself is the flex container: its clearfix pseudo-elements
   would become invisible flex items and take a gap. */
.nde .fl-button-group-buttons::before,
.nde .fl-button-group-buttons::after {
	display: none !important;
}

.nde .fl-button-group-button,
.nde .fl-button-group .fl-button-wrap {
	margin: 0 !important;
	padding: 0 !important;
	width: auto !important;
}

.nde .fl-button-wrap {
	text-align: left;
}

/* ---------- Motion ---------- */
/* Everything is visible without JavaScript. The html.nde-js class arms the hidden state. */

.nde-js .nde-reveal {
	opacity: 0;
	transform: translateY(28px);
	transition: opacity 600ms cubic-bezier(0.2, 0.7, 0.2, 1), transform 600ms cubic-bezier(0.2, 0.7, 0.2, 1);
	transition-delay: calc(min(var(--i, 0), 4) * 60ms);
}

.nde-js .nde-reveal.is-in {
	opacity: 1;
	transform: none;
}

.nde-js .nde-reveal.nde-reveal--photo {
	transform: none;
}

.nde-js .nde-reveal--photo .fl-photo-img {
	transform: scale(1.06);
	transition: transform 1400ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.nde-js .nde-reveal--photo.is-in .fl-photo-img {
	transform: none;
}

/* ---------- Sky ---------- */
/* Two star layers drifting at different speeds, stars twinkling in size and light, nine shooting stars,
   parallax on scroll and pointer. The sky fills the closest positioned ancestor. */

.nde-sky {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	overflow: hidden;
}

.nde-sky svg {
	width: 100%;
	height: 100%;
	max-width: none;
	transform: translate3d(calc(var(--mx, 0) * -16px), calc(var(--my, 0) * -10px + var(--sy, 0px)), 0);
	transition: transform 700ms cubic-bezier(0.2, 0.7, 0.2, 1);
	will-change: transform;
}

.nde-sky__layer--far {
	animation: nde-drift-far 80s ease-in-out infinite alternate;
}

.nde-sky__layer--near {
	animation: nde-drift-near 50s ease-in-out infinite alternate;
}

.nde-sky__star {
	fill: #fff;
	transform-box: fill-box;
	transform-origin: center;
	animation: nde-twinkle 5s ease-in-out infinite;
	animation-delay: calc(var(--d, 0) * -1s);
}

.nde-sky__star--bright {
	animation-name: nde-twinkle-bright;
	animation-duration: 4s;
}

.nde-sky__head {
	fill: #fff;
}

.nde-sky__shoot {
	stroke-width: 2;
	stroke-linecap: round;
	opacity: 0;
	animation: nde-shoot 9s linear infinite;
	animation-delay: calc(var(--s, 0) * 1.1s + 0.6s);
}

@keyframes nde-twinkle {
	0%, 100% { opacity: 0.2; transform: scale(0.7); }
	50% { opacity: 0.9; transform: scale(1.25); }
}

@keyframes nde-twinkle-bright {
	0%, 100% { opacity: 0.45; transform: scale(0.8); }
	50% { opacity: 1; transform: scale(1.5); }
}

@keyframes nde-drift-far {
	from { transform: translate(0, 0); }
	to { transform: translate(-28px, 14px); }
}

@keyframes nde-drift-near {
	from { transform: translate(0, 0); }
	to { transform: translate(-54px, 26px); }
}

@keyframes nde-shoot {
	0% { transform: translateX(0); opacity: 0; }
	2% { opacity: 1; }
	11% { transform: translateX(460px); opacity: 0; }
	100% { transform: translateX(460px); opacity: 0; }
}


/* ---------- Loader: logo, progress bar, stars and shooting stars ---------- */

.nde-loader {
	display: none;
	position: fixed;
	inset: 0;
	z-index: 100;
	align-items: center;
	justify-content: center;
	background: var(--nde-night);
	color: var(--nde-on-night);
	transform: translateY(0);
	transition: transform 700ms cubic-bezier(0.7, 0, 0.2, 1);
}

.nde-loading {
	overflow: hidden;
}

.nde-loading .nde-loader {
	display: flex;
}

.nde-loader.is-done {
	transform: translateY(-100%);
}

.nde-loader__mark {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--nde-space-5);
}

.nde-loader__logo {
	width: clamp(120px, 11vw, 200px);
	opacity: 0;
	transform: translateY(16px);
	animation: nde-loader-in 800ms cubic-bezier(0.2, 0.7, 0.2, 1) forwards;
}

.nde-loader__logo img {
	width: 100%;
	height: auto;
}

.nde-loader__line {
	display: block;
	width: clamp(120px, 11vw, 200px);
	height: 2px;
	background: var(--nde-line-night);
	overflow: hidden;
}

.nde-loader__line span {
	display: block;
	height: 100%;
	background: var(--nde-cyan);
	transform: scaleX(0);
	transform-origin: left;
	animation: nde-loader-line 1100ms cubic-bezier(0.4, 0, 0.2, 1) 250ms forwards;
}

.nde-loader.is-done .nde-loader__mark {
	opacity: 0;
	transition: opacity 250ms ease-out;
}

@keyframes nde-loader-in {
	to { opacity: 1; transform: none; }
}

@keyframes nde-loader-line {
	to { transform: scaleX(1); }
}

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

.nde-header {
	position: fixed;
	top: var(--nde-admin-bar);
	left: 0;
	right: 0;
	z-index: 60;
	height: var(--nde-header-h);
	background: var(--nde-night);
	color: var(--nde-on-night);
	border-bottom: 1px solid transparent;
	transition: border-color 250ms ease-out;
}

.nde-header.is-scrolled {
	border-bottom-color: var(--nde-line-night);
}

.nde-header__sky {
	opacity: 0.8;
}

.nde-skip {
	position: absolute;
	left: var(--nde-gutter);
	top: -100px;
	z-index: 10;
	padding: 8px 16px;
	background: var(--nde-paper);
	color: var(--nde-ink) !important;
	border-radius: var(--nde-radius);
}

.nde-skip:focus {
	top: 8px;
}

.nde__wrap {
	width: 100%;
	max-width: calc(var(--nde-wrap) + 2 * var(--nde-gutter));
	margin-inline: auto;
	padding-inline: var(--nde-gutter);
}

.nde-header__bar {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	gap: var(--nde-space-5);
	height: 100%;
}

.nde .nde-header__bar > a.nde-btn {
	min-height: 44px;
	padding: 10px 22px !important;
	font-size: 16px !important;
}

.nde-header__logo {
	flex: none;
	display: block;
}

.nde-header__logo img {
	width: clamp(56px, 3.6vw + 20px, 92px);
	height: auto;
}

.nde-header__nav {
	margin-left: auto;
}

.nde-header__nav ul {
	display: flex;
	flex-wrap: wrap;
	gap: 8px clamp(20px, 1.6vw, 40px);
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde .nde-header__nav a {
	position: relative;
	display: inline-block;
	padding-block: 8px;
	font-size: var(--nde-text-small);
	font-weight: 300;
	text-decoration: none;
	color: var(--nde-on-night);
}

.nde .nde-header__nav a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 2px;
	height: 1px;
	background: currentColor;
	transform: scaleX(0);
	transform-origin: left;
	transition: transform 260ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.nde .nde-header__nav a:hover::after,
.nde .nde-header__nav a:focus-visible::after {
	transform: scaleX(1);
}

.nde .nde-header__toggle {
	display: none;
	margin-left: auto;
	width: 48px;
	height: 48px;
	padding: 0;
	border: 1px solid var(--nde-line-night);
	border-radius: var(--nde-radius);
	background: transparent;
	color: inherit;
	cursor: pointer;
}

.nde-header__toggle svg {
	width: 22px;
	height: 22px;
	margin: auto;
	stroke: currentColor;
	stroke-width: 2;
	fill: none;
}

.nde-header__toggle path {
	transform-box: fill-box;
	transform-origin: center;
	transition: transform 300ms cubic-bezier(0.2, 0.7, 0.2, 1), opacity 200ms;
}

.nde-header__toggle[aria-expanded="true"] .l1 {
	transform: translateY(5px) rotate(45deg);
}

.nde-header__toggle[aria-expanded="true"] .l2 {
	opacity: 0;
	transform: scaleX(0);
}

.nde-header__toggle[aria-expanded="true"] .l3 {
	transform: translateY(-5px) rotate(-45deg);
}

.nde-header__navsky {
	display: none;
}

@media (max-width: 1100px) {
	.nde .nde-header__toggle {
		display: inline-flex;
		order: 3;
		margin-left: 0;
	}

	.nde-header__bar {
		gap: var(--nde-space-3);
	}

	.nde .nde-header__bar > a.nde-btn {
		margin-left: auto;
		padding-inline: 16px !important;
	}

	.nde-header__logo img {
		width: 56px;
	}

	.nde-header__nav {
		position: fixed;
		top: calc(var(--nde-header-h) + var(--nde-admin-bar));
		left: 0;
		right: 0;
		bottom: 0;
		margin: 0;
		display: flex;
		flex-direction: column;
		justify-content: center;
		overflow: auto;
		background: var(--nde-night);
		padding: var(--nde-space-6) var(--nde-gutter);
		opacity: 0;
		visibility: hidden;
		transform: translateY(-10px);
		transition: opacity 280ms ease-out, transform 420ms cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s linear 420ms;
	}

	.nde-header__nav.is-open {
		opacity: 1;
		visibility: visible;
		transform: none;
		transition: opacity 280ms ease-out, transform 520ms cubic-bezier(0.2, 0.7, 0.2, 1), visibility 0s;
	}

	.nde-header__navsky {
		display: block;
	}

	.nde-header__nav ul {
		position: relative;
		flex-direction: column;
		gap: 0;
		counter-reset: nde-nav;
	}

	.nde-header__nav li {
		opacity: 0;
		transform: translateY(18px);
		transition: opacity 360ms ease-out, transform 520ms cubic-bezier(0.2, 0.7, 0.2, 1);
		transition-delay: calc(var(--i, 0) * 55ms + 120ms);
	}

	.nde-header__nav.is-open li {
		opacity: 1;
		transform: none;
	}

	.nde .nde-header__nav a {
		display: flex;
		align-items: center;
		justify-content: space-between;
		padding-block: 16px;
		font-size: clamp(26px, 7vw, 40px);
		font-weight: 700;
		line-height: 1.1;
		border-bottom: 1px solid var(--nde-line-night);
	}

	.nde .nde-header__nav a::before {
		content: counter(nde-nav, decimal-leading-zero);
		counter-increment: nde-nav;
		order: 2;
		font-size: var(--nde-label);
		font-weight: 300;
		color: var(--nde-on-night-muted);
		font-variant-numeric: tabular-nums;
	}

	.nde .nde-header__nav a::after {
		display: none;
	}

	.nde-menu-open,
	.nde-menu-open body {
		overflow: hidden;
	}
}

/* ---------- Hero row ---------- */
/* Row: nde nde--night nde-hero. Column 1: nde-hero__text. Column 2: nde-hero__media. Header + hero = 100vh. */

.fl-row.nde-hero > .fl-row-content-wrap {
	display: flex;
	flex-direction: column;
	padding: calc(var(--nde-header-h) + var(--nde-admin-bar)) 0 0 !important;
	min-height: calc(100vh - var(--nde-admin-bar));
	min-height: calc(100svh - var(--nde-admin-bar));
}

.fl-row.nde-hero .fl-row-content {
	flex: 1;
	display: flex;
	width: 100%;
	max-width: none;
}

.fl-row.nde-hero .fl-col-group {
	flex: 1;
	align-items: stretch;
}

.fl-row.nde-hero .fl-col.nde-hero__text > .fl-col-content {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: var(--nde-space-2);
	height: 100%;
	/* Padding percentages resolve against the column, so the page-width offset needs vw here. */
	padding: var(--nde-space-6) clamp(32px, 4vw, 96px) var(--nde-space-6) max(var(--nde-gutter), calc((100vw - var(--nde-wrap)) / 2));
}

/* Wide screens: the text column is the left margin of the page plus half of the content width,
   so its usable width never shrinks and it lines up with the header and every section. */
@media (min-width: 1400px) {
	.fl-row.nde-hero .fl-col.nde-hero__text {
		width: calc(max(var(--nde-gutter), (100% - var(--nde-wrap)) / 2) + min(100% - 2 * var(--nde-gutter), var(--nde-wrap)) * 0.66) !important;
		flex: none;
	}

	.fl-row.nde-hero .fl-col.nde-hero__media {
		width: auto !important;
		flex: 1 1 0;
		min-width: 0;
	}
}

.fl-row.nde-hero .fl-col.nde-hero__media,
.fl-row.nde-hero .fl-col.nde-hero__media > .fl-col-content,
.fl-row.nde-hero .fl-col.nde-hero__media .fl-module,
.fl-row.nde-hero .fl-col.nde-hero__media .fl-module-content,
.fl-row.nde-hero .fl-col.nde-hero__media .fl-photo,
.fl-row.nde-hero .fl-col.nde-hero__media .fl-photo-content {
	height: 100%;
}

.fl-row.nde-hero .fl-col.nde-hero__media .fl-photo-img {
	height: 100%;
	object-fit: cover;
	object-position: 62% 40%;
}


@media (min-width: 993px) and (max-height: 960px) {
	.nde-hero {
		--nde-h1: clamp(44px, 3.6vw + 8px, 76px);
	}

	.fl-row.nde-hero .fl-col.nde-hero__text > .fl-col-content {
		padding-block: var(--nde-space-4);
	}

	.fl-row.nde-hero .fl-col-content > .fl-module + .fl-module {
		margin-top: var(--nde-space-5);
	}

.nde-hero .nde-lead .fl-rich-text,
.nde-hero .fl-rich-text.nde-lead {
		font-size: var(--nde-text-small);
	}
}

@media (max-width: 992px) {
	.fl-row.nde-hero > .fl-row-content-wrap {
		min-height: 0;
	}

	.fl-row.nde-hero .fl-col.nde-hero__text > .fl-col-content {
		min-height: 620px;
		padding: var(--nde-space-6) var(--nde-gutter);
	}

	.fl-row.nde-hero .fl-col.nde-hero__media .fl-photo-img {
		aspect-ratio: 4 / 3;
		height: auto;
	}
}

/* Facts widget */

.fl-module:has(> .fl-module-content > .nde-facts) {
	container-type: inline-size;
}

.nde-facts {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--nde-space-5) clamp(32px, 3vw, 56px);
	justify-content: start;
	padding-top: var(--nde-space-5);
	border-top: 1px solid var(--nde-line-night);
}

@container (min-width: 520px) {
	.nde-facts {
		grid-template-columns: repeat(2, minmax(0, max-content));
	}
}

@container (min-width: 1100px) {
	.nde-facts {
		grid-template-columns: repeat(3, minmax(0, max-content));
	}
}

.nde-facts dt {
	font-size: var(--nde-label);
	color: var(--nde-on-night-muted);
}

.nde-facts__line {
	display: block;
	font-size: var(--nde-text);
	font-weight: 300;
	line-height: 1.4;
}

.nde-facts dd a.nde-facts__link {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-decoration-color: rgba(255, 255, 255, 0.35);
	text-underline-offset: 0.25em;
}

.nde-facts dd a.nde-facts__link:hover {
	color: var(--nde-cyan);
	text-decoration: underline;
	text-underline-offset: 0.25em;
}

.nde-facts dd {
	min-width: 0;
	overflow-wrap: break-word;
	margin: 4px 0 0;
	font-weight: 700;
	font-size: var(--nde-h3);
	line-height: 1.35;
}

@media (min-width: 640px) {
	.nde-facts dd {
		white-space: nowrap;
	}

	.nde-facts dd:has(.nde-facts__line) {
		white-space: normal;
	}
}

/* Places widget */

.nde-places {
	max-width: 46em;
	font-size: var(--nde-text-small);
	color: var(--nde-on-night-muted);
}

.nde-places strong {
	color: var(--nde-on-night);
	font-size: 1.25em;
	/* Without this the enlarged number's line box overflows the paragraph's own. */
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

.nde-places__bar {
	height: 4px;
	margin-top: var(--nde-space-2);
	background: var(--nde-line-night);
	border-radius: 2px;
	overflow: hidden;
}

.nde-places__bar span {
	display: block;
	height: 100%;
	background: var(--nde-cyan);
	transform-origin: left;
	transform: scaleX(var(--p, 1));
	transition: transform 1400ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.nde-js .nde-places__bar:not(.is-in) span {
	transform: scaleX(0);
}

/* ---------- Figures widget (isotypes) ---------- */

.nde .nde-figures {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: var(--nde-space-6) var(--nde-space-7);
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde-figure {
	display: grid;
	grid-template-columns: clamp(56px, 4vw, 80px) minmax(0, 1fr);
	gap: var(--nde-space-4);
	align-items: start;
}

.nde-figure > span:last-child {
	padding-top: 2px;
}

.nde-figure__icon {
	display: block;
	width: 100%;
	aspect-ratio: 1;
}

.nde-figure__icon svg {
	width: 100%;
	height: 100%;
	fill: none;
	stroke: var(--nde-blue);
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	overflow: visible;
}

.nde--night .nde-figure__icon svg {
	stroke: var(--nde-on-night);
}

.nde-figure__value {
	display: block;
	font-weight: 700;
	font-size: var(--nde-display);
	line-height: 1;
	letter-spacing: -0.01em;
	font-variant-numeric: tabular-nums;
}

.nde-figure__label {
	display: block;
	margin-top: 8px;
	font-size: var(--nde-text-small);
	color: var(--nde-ink-muted);
}

.nde--night .nde-figure__label {
	color: var(--nde-on-night-muted);
}

/* Chrome lowercases [pathLength] in stylesheets, so shapes are selected by element. */

.nde-js .nde-figure__icon :is(path, circle, rect):not(.nde-iso__runner) {
	stroke-dasharray: 1;
	stroke-dashoffset: 1;
	transition: stroke-dashoffset 450ms cubic-bezier(0.2, 0.7, 0.2, 1);
	transition-delay: calc(var(--i, 0) * 60ms);
}

/* .nde-disc is not a .nde-figure, but its summary icon draws the same way. */
.nde-js :is(.nde-figure, .nde-disc).is-in .nde-figure__icon :is(path, circle, rect):not(.nde-iso__runner) {
	stroke-dashoffset: 0;
}

.nde-iso__beam {
	opacity: 0;
}

.nde-figure.is-in .nde-iso__beam {
	animation: nde-beam 3s ease-in-out infinite;
	animation-delay: calc(var(--b, 0) * 0.35s + 0.5s);
}

@keyframes nde-beam {
	0%, 60%, 100% { opacity: 0; }
	20%, 40% { opacity: 1; }
}

.nde-iso__hand {
	transform-origin: 32px 34px;
}

.nde-figure.is-in .nde-iso__hand {
	animation: nde-hand 30s linear infinite;
	animation-delay: 0.5s;
}

@keyframes nde-hand {
	to { transform: rotate(360deg); }
}

.nde-iso__runner {
	fill: var(--nde-cyan);
	stroke: none;
	offset-path: path("M6 32 C6 14 28 14 32 32 C36 50 58 50 58 32 C58 14 36 14 32 32 C28 50 6 50 6 32 Z");
	offset-rotate: 0deg;
	opacity: 0;
}

.nde-figure.is-in .nde-iso__runner {
	opacity: 1;
	animation: nde-run 6s linear infinite;
	animation-delay: 0.5s;
}

@keyframes nde-run {
	to { offset-distance: 100%; }
}

.nde-iso__lamp {
	opacity: 0;
}

.nde-figure.is-in .nde-iso__lamp {
	animation: nde-lamp 4s ease-in-out infinite;
	animation-delay: calc(var(--b, 0) * 1.3s + 0.5s);
}

@keyframes nde-lamp {
	0%, 100% { opacity: 0.35; }
	50% { opacity: 1; }
}

@media (max-width: 640px) {
	.nde .nde-figures {
		grid-template-columns: minmax(0, 1fr);
	}
}

/* ---------- Steps widget ---------- */

.nde .nde-steps {
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde-steps li {
	display: grid;
	grid-template-columns: clamp(48px, 4vw, 88px) minmax(0, 1fr);
	gap: var(--nde-space-4);
	padding-block: var(--nde-space-5);
	border-top: 1px solid var(--nde-line);
}

.nde-steps li:last-child {
	border-bottom: 1px solid var(--nde-line);
}

.nde-steps__num {
	font-weight: 700;
	font-size: var(--nde-display);
	line-height: 1;
	color: var(--nde-blue);
	font-variant-numeric: tabular-nums;
}

.nde-steps h3 + p {
	margin-top: var(--nde-space-2);
	max-width: var(--nde-measure);
}

/* ---------- Tables ---------- */

.nde .nde-table {
	width: 100%;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
	margin: 0;
	border: 0;
}

.nde .nde-table :is(th, td) {
	padding: var(--nde-space-4) var(--nde-space-4) var(--nde-space-4) 0;
	text-align: left;
	vertical-align: top;
	border: 0;
	border-bottom: 1px solid var(--nde-line);
	background: transparent;
	font-size: inherit;
}

.nde .nde-table thead th {
	font-size: var(--nde-label);
	font-weight: 700;
	color: var(--nde-ink-muted);
	border-bottom-color: var(--nde-ink);
	padding-top: 0;
}

.nde .nde-table tbody th {
	font-weight: 300;
}

.nde-pricing__table tbody th .nde-pricing__name {
	display: block;
	font-weight: 700;
	font-size: var(--nde-display);
	line-height: 1.1;
}

.nde-pricing__table tbody th .nde-pricing__who {
	display: block;
	margin-top: 6px;
	font-size: var(--nde-text-small);
	color: var(--nde-ink-muted);
}

.nde .nde-pricing__table td {
	white-space: nowrap;
	font-weight: 700;
	font-size: var(--nde-h3);
	padding-top: calc(var(--nde-space-4) + 4px);
}

@media (max-width: 767px) {
	.nde-pricing__table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
	}

	.nde-pricing__table,
	.nde-pricing__table tbody,
	.nde-pricing__table tr,
	.nde-pricing__table th,
	.nde-pricing__table td {
		display: block;
	}

	.nde-pricing__table tr {
		padding-block: var(--nde-space-4);
		border-bottom: 1px solid var(--nde-line);
	}

	.nde .nde-pricing__table tbody th {
		padding: 0 0 var(--nde-space-2);
		border: 0;
	}

	.nde .nde-pricing__table td {
		display: flex;
		justify-content: space-between;
		gap: var(--nde-space-3);
		padding: 6px 0;
		border: 0;
		font-size: var(--nde-text);
	}

	.nde-pricing__table td::before {
		content: attr(data-label);
		font-weight: 300;
		color: var(--nde-ink-muted);
	}
}

/* ---------- Timeline widget ---------- */

.nde .nde-timeline {
	position: relative;
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde-timeline::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 2px;
	background: var(--nde-cyan);
	transform-origin: top;
	transform: scaleY(var(--p, 1));
}

.nde-js .nde-timeline::before {
	transform: scaleY(var(--p, 0));
}

.nde-timeline li {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--nde-space-1);
	padding: var(--nde-space-5) 0 var(--nde-space-5) clamp(24px, 3vw, 48px);
	border-top: 1px solid var(--nde-line-night);
}

.nde-timeline__time {
	font-weight: 700;
	font-variant-numeric: tabular-nums;
	overflow-wrap: break-word;
	color: var(--nde-on-night);
}

.nde-timeline h3 + p {
	margin-top: var(--nde-space-2);
	max-width: var(--nde-measure);
}

@media (min-width: 640px) {
	.nde-timeline li {
		grid-template-columns: clamp(120px, 10vw, 180px) minmax(0, 1fr);
		gap: var(--nde-space-4);
	}

	.nde-timeline__time {
		line-height: 1.2;
		font-size: var(--nde-display);
	}

	.nde-timeline__time--word {
		font-size: var(--nde-h3);
		line-height: 1.35;
		padding-top: 5px;
	}
}

/* Plates block under the evening timeline (nested columns): illustration on the left,
   title + note + button on the right, both vertically centred, on the timeline's inset. */

.fl-row.nde .fl-col-group.fl-col-group-nested:has(.nde-plate__media) {
	margin-top: var(--nde-space-6);
	padding-left: clamp(24px, 3vw, 48px);
	align-items: center;
}

@media (min-width: 768px) {
	/* The left column takes the illustration's width, the text starts right after it. */
	.fl-row.nde .fl-col.nde-plate__media {
		flex: 0 0 auto;
		width: auto !important;
		max-width: 40%;
	}

	.fl-row.nde .fl-col.nde-plate__body {
		flex: 1 1 0;
		width: auto !important;
		min-width: 0;
	}
}

.fl-row.nde .fl-col.nde-plate__media > .fl-col-content {
	padding-right: var(--nde-space-5);
}

.nde .fl-module.nde-plate__img .fl-photo-img {
	width: 100%;
	max-width: 240px;
	height: auto;
}

.fl-row.nde .fl-col.nde-plate__body .fl-col-content > .fl-module + .fl-module {
	margin-top: var(--nde-space-3);
}

.fl-row.nde .fl-col.nde-plate__body .fl-col-content > .fl-module-button {
	margin-top: var(--nde-space-4);
}

@media (max-width: 767px) {
	.nde .fl-module.nde-plate__img .fl-photo-img {
		max-width: 180px;
	}

	.fl-row.nde .fl-col.nde-plate__media > .fl-col-content {
		padding-right: 0;
		padding-bottom: var(--nde-space-4);
	}
}

/* ---------- Results widget ---------- */

.nde-results h3 {
	margin-bottom: var(--nde-space-4);
}

.nde .nde-results__table tbody th {
	font-weight: 700;
	font-size: var(--nde-h3);
	white-space: nowrap;
}

.nde .nde-results__table td:last-child {
	font-weight: 700;
	font-size: var(--nde-display);
	line-height: 1.1;
	white-space: nowrap;
	text-align: right;
	padding-right: 0;
}

.nde .nde-results__table thead th:last-child {
	text-align: right;
	padding-right: 0;
}

.nde-results__runners {
	display: block;
	margin-top: 4px;
	font-size: var(--nde-text-small);
	color: var(--nde-ink-muted);
}

.nde-results__links {
	margin-top: var(--nde-space-6);
}

.nde .nde-results__linkslabel {
	margin-bottom: var(--nde-space-4);
	font-size: var(--nde-text-small);
	color: var(--nde-ink-muted);
}

.nde .nde-inline-list {
	display: inline;
	list-style: none;
	padding: 0;
}

.nde-inline-list li {
	display: inline;
}

.nde-inline-list li + li::before {
	content: " · ";
	color: var(--nde-ink-muted);
}

/* ---------- Infos widget ---------- */

.nde-infos {
	display: grid;
	gap: 0 clamp(48px, 5vw, 120px);
}

.nde-infos__item {
	display: grid;
	grid-template-columns: clamp(40px, 3vw, 56px) minmax(0, 1fr);
	gap: var(--nde-space-3) var(--nde-space-4);
	align-content: start;
	padding-block: var(--nde-space-5) var(--nde-space-6);
	border-top: 1px solid var(--nde-line);
}

.nde-infos__icon {
	grid-column: 1;
	grid-row: 1;
	width: 100%;
	aspect-ratio: 1;
}

.nde-infos__item h3 {
	grid-column: 2;
	grid-row: 1;
	align-self: center;
	margin-bottom: 0;
}

.nde-infos__item .nde-prose {
	grid-column: 2;
	grid-row: 2;
}

.nde-infos__item .nde-prose {
	max-width: var(--nde-measure);
}

@media (min-width: 768px) {
	.nde-infos {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (min-width: 1500px) {
	.nde-infos {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* ---------- FAQ widget ---------- */

.nde-faq__list {
	border-bottom: 1px solid var(--nde-line);
}

.nde-faq__list details {
	border-top: 1px solid var(--nde-line);
}

.nde-faq__list summary {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 24px;
	gap: var(--nde-space-3);
	align-items: start;
	padding-block: var(--nde-space-5);
	cursor: pointer;
	list-style: none;
	font-weight: 700;
	font-size: var(--nde-h3);
	line-height: 1.35;
	transition: color 200ms ease-out, transform 260ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.nde-faq__list summary:hover {
	color: var(--nde-blue);
	transform: translateX(6px);
}

.nde-faq__list summary::-webkit-details-marker {
	display: none;
}

.nde-faq__list summary::after {
	content: "";
	width: 12px;
	height: 12px;
	margin: 0.45em 0 0 auto;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform 200ms ease-out;
}

.nde-faq__list details[open] summary::after {
	transform: translateY(5px) rotate(-135deg);
}

.nde-faq__answer {
	max-width: var(--nde-measure);
	padding-bottom: var(--nde-space-6);
	overflow: hidden;
}

/* ---------- Disclosure: a button that opens a panel ---------- */

.nde-disc {
	border: 1px solid var(--nde-line);
	border-radius: var(--nde-radius);
	background: var(--nde-paper);
}

.nde--mist .nde-disc {
	background: var(--nde-paper);
}

.nde-disc + .nde-disc {
	margin-top: var(--nde-space-3);
}

.nde-disc__btn {
	display: flex;
	align-items: center;
	gap: var(--nde-space-4);
	padding: var(--nde-space-4) var(--nde-space-5);
	cursor: pointer;
	list-style: none;
	font-weight: 700;
	font-size: var(--nde-h3);
	line-height: 1.3;
	transition: background-color 200ms ease-out, color 200ms ease-out;
}

.nde-disc__btn::-webkit-details-marker {
	display: none;
}

.nde-disc__btn:hover {
	background: var(--nde-mist);
	color: var(--nde-blue);
}

.nde-disc__icon {
	flex: none;
	width: clamp(28px, 2vw, 36px);
	aspect-ratio: 1;
}

.nde-disc__label {
	flex: 1;
}

.nde-disc__btn::after {
	content: "";
	flex: none;
	width: 12px;
	height: 12px;
	margin-right: 6px;
	border-right: 2px solid currentColor;
	border-bottom: 2px solid currentColor;
	transform: rotate(45deg);
	transition: transform 200ms ease-out;
}

.nde-disc[open] .nde-disc__btn::after {
	transform: translateY(4px) rotate(-135deg);
}

.nde-disc__panel {
	overflow: hidden;
	padding: 0 var(--nde-space-5) var(--nde-space-5);
	font-size: var(--nde-text);
	line-height: 1.55;
}

.nde-disc__panel > * + * {
	margin-top: var(--nde-space-4);
}

.nde-disc__panel p,
.nde-disc__panel li {
	max-width: var(--nde-measure);
}

.nde-disc__panel .nde-table {
	margin-top: var(--nde-space-4);
}

.nde-disc[open] .nde-disc__btn {
	border-bottom: 1px solid var(--nde-line);
	margin-bottom: var(--nde-space-4);
}

.nde-pricing__intro {
	max-width: var(--nde-measure);
}

/* Inside a disclosure the price table stacks as soon as the panel gets narrow */
.nde-disc {
	container-type: inline-size;
}

@container (max-width: 760px) {
	.nde-disc .nde-pricing__table thead {
		position: absolute;
		width: 1px;
		height: 1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
	}

	.nde-disc .nde-pricing__table,
	.nde-disc .nde-pricing__table tbody,
	.nde-disc .nde-pricing__table tr,
	.nde-disc .nde-pricing__table th,
	.nde-disc .nde-pricing__table td {
		display: block;
	}

	.nde-disc .nde-pricing__table tr {
		padding-block: var(--nde-space-4);
		border-bottom: 1px solid var(--nde-line);
	}

	.nde .nde-disc .nde-pricing__table tbody th {
		padding: 0 0 var(--nde-space-2);
		border: 0;
	}

	.nde .nde-disc .nde-pricing__table td {
		display: flex;
		justify-content: space-between;
		gap: var(--nde-space-3);
		padding: 6px 0;
		border: 0;
		font-size: var(--nde-text);
	}

	.nde-disc .nde-pricing__table td::before {
		content: attr(data-label);
		font-weight: 300;
		color: var(--nde-ink-muted);
	}

	.nde-disc .nde-pricing__table tbody th .nde-pricing__name {
		font-size: var(--nde-h3);
	}
}

/* ---------- Prize / category blocks ---------- */

.nde .nde-prizes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--nde-space-4);
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde-prize {
	display: grid;
	grid-template-rows: auto auto auto 1fr;
	gap: var(--nde-space-2);
	height: 100%;
	padding: var(--nde-space-5);
	border: 1px solid var(--nde-line);
	border-radius: var(--nde-radius);
	background: var(--nde-paper);
}

.nde-prize__icon {
	width: clamp(44px, 3.4vw, 64px);
	aspect-ratio: 1;
	margin-bottom: var(--nde-space-3);
}

.nde-prize__flag {
	display: block;
	min-height: 1.2em;
	font-size: var(--nde-label);
	line-height: 1.2;
	font-weight: 700;
	color: var(--nde-blue);
}

.nde-prize:not(:has(.nde-prize__flag))::before {
	content: "";
	display: block;
	font-size: var(--nde-label);
	line-height: 1.2;
	min-height: 1.2em;
}

.nde-prize__title {
	font-size: var(--nde-h3);
}

.nde-prize__text {
	color: var(--nde-ink-muted);
}

.nde .nde-prizes > li {
	grid-template-columns: none;
}

/* ---------- Floating bar ---------- */

.nde-fb {
	background: transparent;
	position: fixed;
	inset-inline: 0;
	bottom: 12px;
	z-index: 70;
	padding: 0 12px;
	pointer-events: none;
}

@media (min-width: 768px) {
	.nde-fb {
		bottom: 24px;
		padding: 0 24px;
	}
}

/* The pill opens with clip-path, not max-width: no layout animation and nothing clipped once open. */
.nde-fb__pill {
	position: relative;
	margin: 0 auto;
	width: 100%;
	max-width: 1100px;
	height: 56px;
	border-radius: 9999px;
	background: var(--nde-night);
	opacity: 0;
	transform: translateY(12px);
	pointer-events: none;
	clip-path: inset(0 calc(50% - 28px) round 9999px);
	transition: clip-path 600ms cubic-bezier(0.22, 1, 0.36, 1), opacity 600ms cubic-bezier(0.22, 1, 0.36, 1), transform 600ms cubic-bezier(0.22, 1, 0.36, 1);
}

@media (min-width: 768px) {
	.nde-fb__pill {
		height: 64px;
	}
}

.nde-fb.is-open .nde-fb__pill {
	clip-path: inset(0 round 9999px);
	opacity: 1;
	transform: translateY(0);
	pointer-events: auto;
	box-shadow: 0 24px 48px rgba(13, 36, 56, 0.28);
}

.nde-fb__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	height: 100%;
	padding: 0 16px;
	opacity: 0;
	transition: opacity 350ms ease-out 150ms;
}

.nde-fb.is-open .nde-fb__inner {
	opacity: 1;
}

@media (min-width: 768px) {
	.nde-fb__inner {
		gap: 24px;
		padding: 0 28px;
	}
}

.nde-fb__left,
.nde-fb__social,
.nde-fb__right {
	display: flex;
	align-items: center;
	flex-shrink: 0;
}

.nde-fb__left {
	gap: 16px;
}

@media (min-width: 768px) {
	.nde-fb__left {
		gap: 28px;
	}
}

.nde-fb__lead {
	color: var(--nde-on-night);
	font-weight: 700;
	font-size: 14px;
	white-space: nowrap;
}

@media (max-width: 767px) {
	.nde-fb__lead {
		display: none;
	}
}

@media (min-width: 768px) {
	.nde-fb__lead {
		font-size: 16px;
	}
}

.nde-fb__social {
	gap: 16px;
	color: var(--nde-on-night);
}

.nde .nde-fb__social a {
	display: inline-flex;
	align-items: center;
	height: 22px;
	color: var(--nde-on-night);
	text-decoration: none;
	transition: opacity 200ms ease;
}

.nde .nde-fb__social a:hover {
	opacity: 0.75;
}

.nde-fb__social svg {
	height: 100%;
	width: auto;
}

.nde-fb__right {
	gap: 8px;
}

@media (min-width: 768px) {
	.nde-fb__right {
		gap: 12px;
	}
}

.nde .nde-fb__btn {
	display: inline-flex;
	align-items: center;
	padding: 8px 20px;
	border-radius: 9999px;
	background: var(--nde-cyan);
	color: var(--nde-night-deep);
	font-weight: 700;
	font-size: 14px;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color 200ms ease, color 200ms ease;
}

.nde .nde-fb__btn + .nde-fb__btn {
	background: transparent;
	border: 1px solid rgba(255, 255, 255, 0.45);
	color: var(--nde-on-night);
}

.nde .nde-fb__btn:hover {
	background: var(--nde-paper);
	color: var(--nde-night-deep);
}

@media (min-width: 768px) {
	.nde .nde-fb__btn {
		padding: 10px 28px;
		font-size: 16px;
	}
}

@media (max-width: 600px) {
	.nde-fb__inner {
		gap: 8px;
		padding: 0 10px;
	}

	.nde-fb__left,
	.nde-fb__social {
		gap: 12px;
	}

	.nde .nde-fb__social a {
		height: 18px;
	}

	.nde .nde-fb__btn {
		padding: 7px 14px;
		font-size: 13px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.nde-fb__pill,
	.nde-fb__inner {
		transition: opacity 300ms ease;
	}
}

/* ---------- Logos widget ---------- */

.nde .nde-logos {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(clamp(140px, 12vw, 220px), 1fr));
	gap: var(--nde-space-6) var(--nde-space-7);
	align-items: center;
	list-style: none;
	padding: 0;
	margin: 0;
}

.nde-logos a,
.nde-logos span {
	display: flex;
	align-items: center;
	justify-content: center;
	height: clamp(72px, 6vw, 120px);
}

.nde-logos img {
	max-height: 100%;
	width: auto;
	max-width: 100%;
	object-fit: contain;
	transition: transform 300ms cubic-bezier(0.2, 0.7, 0.2, 1);
}

.nde-logos a:hover img {
	transform: translateY(-3px);
}

.fl-row.nde-partners .fl-col-group + .fl-col-group {
	margin-top: var(--nde-space-8);
	padding-top: var(--nde-space-6);
	border-top: 1px solid var(--nde-line);
	align-items: center;
}

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

.nde-footer {
	position: relative;
	overflow: hidden;
	background: var(--nde-night-deep);
	color: var(--nde-on-night);
	padding-block: var(--nde-space-8) var(--nde-space-6);
	font-size: var(--nde-text-small);
}

.nde-footer > .nde__wrap {
	position: relative;
}

.nde-footer__grid {
	display: grid;
	gap: var(--nde-space-6) var(--nde-space-7);
}

.nde-footer__logo img {
	width: clamp(88px, 7vw, 140px);
}

.nde-footer h2 {
	font-size: var(--nde-label);
	line-height: 1.4;
	margin-bottom: var(--nde-space-3);
	letter-spacing: 0;
}

.nde-footer ul {
	list-style: none;
	padding: 0;
}

.nde-footer li + li {
	margin-top: var(--nde-space-2);
}

.nde sup {
	font-size: 0.6em;
	line-height: 0;
	vertical-align: super;
}

.nde .nde-footer__legal {
	margin-top: var(--nde-space-7);
	padding-top: var(--nde-space-4);
	border-top: 1px solid var(--nde-line-night);
	color: var(--nde-on-night-muted);
}

@media (min-width: 768px) {
	.nde-footer__grid {
		grid-template-columns: minmax(0, 5fr) repeat(3, minmax(0, 3fr));
	}
}
/* UABB adds two empty absolutely-positioned separators to every row. */
.fl-row.nde .uabb-row-separator {
	display: none;
}

/* ---------- Coaching band (light blue surface) ---------- */

.nde--azure {
	background: var(--nde-azure);
	color: var(--nde-night);
}

.nde--azure .nde-muted,
.nde--azure .nde-lede .fl-rich-text,
.nde--azure .fl-rich-text.nde-lede {
	color: var(--nde-blue);
}

.nde--azure a:not(.fl-button):not(.nde-btn) {
	color: var(--nde-blue);
}

.fl-row.nde-coaching > .fl-row-content-wrap {
	padding-block: var(--nde-space-6) !important;
}

.nde-coaching h2 {
	font-size: clamp(28px, 1.4vw + 16px, 48px);
}

.fl-row.nde-coaching .fl-col-content > .fl-module + .fl-module {
	margin-top: var(--nde-space-3);
}

.fl-row.nde-coaching .fl-col-content > .fl-module-rich-text + .fl-module {
	margin-top: var(--nde-space-4);
}

/* The lede runs the full column instead of wrapping at the reading measure. */
.nde .fl-rich-text.nde-line {
	max-width: none;
}

/* The Runningeneva logo is drawn for dark backgrounds: it sits on a navy tile. */
.nde .fl-module.nde-logo-tile {
	width: fit-content;
	max-width: 100%;
}

.nde .nde-logo-tile .fl-photo-content {
	display: block;
	width: fit-content;
	max-width: 100%;
	padding: 18px 24px;
	border-radius: var(--nde-radius);
	background: var(--nde-night);
}

.nde .nde-logo-tile .fl-photo-img {
	width: clamp(150px, 14vw, 230px);
	height: auto;
}

/* ---------- Alert inside an info block ---------- */

.nde-alert {
	grid-column: 2;
	display: grid;
	grid-template-columns: clamp(26px, 2vw, 34px) minmax(0, 1fr);
	gap: var(--nde-space-3);
	align-items: start;
	margin-top: var(--nde-space-4);
	padding: var(--nde-space-4);
	border: 1px solid var(--nde-alert-border);
	border-radius: var(--nde-radius);
	background: var(--nde-alert-bg);
	color: var(--nde-alert-ink);
}

.nde-alert .nde-prose {
	max-width: none;
	font-size: var(--nde-text-small);
}

.nde-alert .nde-prose strong {
	color: var(--nde-alert-line);
}

.nde-alert__icon {
	width: 100%;
	aspect-ratio: 1;
}

.nde .nde-alert__icon svg {
	stroke: var(--nde-alert-line);
}

.nde-infos__actions {
	grid-column: 2;
	margin-top: var(--nde-space-4);
}

/* ---------- Wider intro paragraph ---------- */

.nde .nde-wide .fl-rich-text,
.nde .fl-rich-text.nde-wide {
	max-width: 68ch;
}

/* ---------- Guest of honour ---------- */

/* The modifier is set in the module class field, so it lands on the .fl-module wrapper. */
.nde .nde-logos--guest .nde-logos {
	grid-template-columns: repeat(auto-fill, minmax(clamp(200px, 18vw, 320px), 1fr));
}

.nde-logos--guest .nde-logos a,
.nde-logos--guest .nde-logos span {
	justify-content: flex-start;
	height: auto;
}

/* An SVG logo keeps its intrinsic size inside a max-height box: set the width instead. */
.nde-logos--guest .nde-logos img {
	width: clamp(220px, 20vw, 340px);
	max-height: none;
	height: auto;
}

/* ---------- Beaver Builder editor ---------- */
/* Modules re-rendered by the editor never get .is-in: nothing may depend on it there. */

.fl-builder-edit .nde-loader {
	display: none !important;
}

html.nde-loading:has(> body.fl-builder-edit) {
	overflow: visible !important;
}

.fl-builder-edit .nde-reveal,
.fl-builder-edit .nde-reveal--photo .fl-photo-img {
	opacity: 1 !important;
	transform: none !important;
}

.fl-builder-edit .nde-figure__icon :is(path, circle, rect) {
	stroke-dashoffset: 0 !important;
}

.fl-builder-edit .nde-timeline::before,
.fl-builder-edit .nde-places__bar span {
	transform: none !important;
}

.fl-builder-edit .nde-iso__runner,
.fl-builder-edit .nde-iso__beam,
.fl-builder-edit .nde-iso__lamp {
	opacity: 1 !important;
}

/* ---------- Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	.nde *,
	.nde *::before,
	.nde *::after {
		animation: none !important;
		transition: none !important;
	}

	.nde-loader {
		display: none !important;
	}

	.nde-js .nde-reveal,
	.nde-js .nde-reveal--photo .fl-photo-img {
		opacity: 1;
		transform: none;
	}

	.nde-js .nde-figure__icon :is(path, circle, rect) {
		stroke-dashoffset: 0;
	}

	.nde-js .nde-timeline::before,
	.nde-js .nde-places__bar span {
		transform: none;
	}

	.nde-iso__runner,
	.nde-iso__beam,
	.nde-iso__lamp {
		opacity: 1;
	}
}
