/* ==========================================================================
   Creative Waves — styles du thème
   ========================================================================== */

@import url("https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600&family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400&display=swap");

:root {
	--color-bois: #504336;
	--color-sauge: #bbbca5;
	--color-pierre: #f4f5f1;
	--color-pierre-dark: #ebebe6;
	--color-black: #000000;
	--color-white: #ffffff;
	--font-sans: "Inter", sans-serif;
	--font-serif: "Playfair Display", serif;
	--container: 80rem;
	--gutter: clamp(1.25rem, 4vw, 4rem);
	--transition: 300ms ease;
}

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

html {
	scroll-behavior: smooth;
}

body {
	margin: 0;
	overflow-x: hidden;
	background: var(--color-pierre);
	color: var(--color-bois);
	font-family: var(--font-sans);
	font-size: 1rem;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}

body.menu-open {
	overflow: hidden;
}

body.lightbox-open {
	overflow: hidden;
}

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

button,
input,
textarea,
select {
	font: inherit;
}

button,
a {
	-webkit-tap-highlight-color: transparent;
}

a {
	color: inherit;
}

h1,
h2,
h3,
p {
	margin-block-start: 0;
}

h1,
h2,
h3 {
	font-family: var(--font-serif);
	font-weight: 400;
	line-height: 1.15;
}

:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 4px;
}

.home-container,
.container {
	width: min(100% - (2 * var(--gutter)), var(--container));
	margin-inline: auto;
}

.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.screen-reader-text:focus {
	top: 1rem;
	left: 1rem;
	z-index: 10000;
	width: auto;
	height: auto;
	padding: 0.75rem 1rem;
	clip: auto;
	background: var(--color-white);
	color: var(--color-black);
}

/* Vagues décoratives globales. */
@keyframes wave-scroll {
	to {
		transform: translateX(-50%);
	}
}

.background-waves {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 0;
	width: 200vw;
	height: 100vh;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 320'%3E%3Cpath fill='none' stroke='%23504336' stroke-width='0.75' d='M0,160 C320,300 420,0 720,160 C1020,320 1120,0 1440,160'/%3E%3Cpath fill='none' stroke='%23bbbca5' stroke-width='0.75' d='M0,80 C320,220 420,-80 720,80 C1020,240 1120,-80 1440,80'/%3E%3C/svg%3E");
	background-size: 50% 100%;
	opacity: 0.2;
	pointer-events: none;
	animation: wave-scroll 40s linear infinite;
}

/* Header. */
@keyframes logo-splash {
	0% {
		transform: translate(-50%, 25vh) scale(5);
		opacity: 0;
	}

	10%,
	60% {
		transform: translate(-50%, 25vh) scale(5);
		opacity: 1;
	}

	100% {
		transform: translate(-50%, 0) scale(0.9);
		opacity: 1;
	}
}

@keyframes header-fade {
	to {
		opacity: 1;
	}
}

@keyframes splash-glass-fade {
	to {
		opacity: 0;
		visibility: hidden;
	}
}

.site-header {
	position: fixed;
	top: 0;
	right: 0;
	left: 0;
	z-index: 1000;
	height: 6rem;
	color: var(--color-bois);
	pointer-events: none;
}

.site-header--home::before {
	position: fixed;
	inset: 0;
	z-index: 0;
	background: rgb(244 245 241 / 85%);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	content: "";
	pointer-events: none;
      animation: splash-glass-fade 0.6s ease 1.2s forwards;
}

.admin-bar .site-header {
	top: 32px;
}

.site-header__glass {
	position: absolute;
	inset: 0;
	height: 6rem;
	border-bottom: 1px solid rgb(80 67 54 / 5%);
	background: rgb(244 245 241 / 85%);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	opacity: 1;
	pointer-events: auto;
	animation: none;
	transition: background-color var(--transition), box-shadow var(--transition);
}

.site-header--home .site-header__glass {
	opacity: 0;
      animation: header-fade 0.6s ease 1.2s forwards;
}

.site-header.is-scrolled .site-header__glass {
	background: rgb(244 245 241 / 94%);
	box-shadow: 0 0.5rem 2rem rgb(80 67 54 / 8%);
}

.site-header__grid {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: center;
	width: min(100% - 3rem, 100rem);
	height: 6rem;
	margin-inline: auto;
	pointer-events: auto;
}

.site-header__column {
	display: flex;
	align-items: center;
}

.site-header__column--left,
.site-header__column--right {
	gap: 2rem;
	opacity: 1;
	animation: none;
}

.site-header--home .site-header__column--left,
.site-header--home .site-header__column--right {
	opacity: 0;
      animation: header-fade 0.4s ease 1.8s forwards;
}

.site-header__column--left {
	justify-content: flex-start;
}

.site-header__column--center {
	justify-content: center;
}

.site-header__column--right {
	justify-content: flex-end;
	margin-left: auto;
}

.site-header__nav {
	display: flex;
	align-items: center;
	gap: 2rem;
}

.site-header__nav a,
.language-switcher {
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.site-header__nav a {
	text-decoration: none;
	transition: color var(--transition);
}

.site-header__nav a:hover,
.site-header__nav a:focus-visible,
.site-header__socials a:hover,
.site-header__socials a:focus-visible {
	color: var(--color-sauge);
}

.language-switcher {
	display: flex;
	align-items: center;
	gap: 0.375rem;
	font-size: 0.6rem;
}

.language-switcher__item {
	color: rgb(80 67 54 / 40%);
	font-weight: 300;
	text-decoration: none;
}

.language-switcher__item.is-active {
	color: var(--color-bois);
	font-weight: 500;
}

.language-switcher__separator {
	color: rgb(80 67 54 / 30%);
}

.site-header__logo {
	position: fixed;
	top: 1rem;
	left: 50vw;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--color-bois);
	text-decoration: none;
	transform: translate(-50%, 0) scale(0.9);
	transform-origin: center top;
	animation: none;
	transition: color 500ms ease;
}

.site-header--home .site-header__logo {
      animation: logo-splash 1.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
      pointer-events: none;
}

.site-header--home .site-header__logo.is-ready {
      pointer-events: auto;
}

.site-header__logo:hover,
.site-header__logo:focus-within {
	color: var(--color-sauge);
}

.site-header__logo-mark,
.site-header__logo--custom .custom-logo {
	width: auto;
	height: 4.6875rem;
}

.site-header__logo::before {
	position: absolute;
	inset: 0;
	background-color: currentColor;
	content: "";
	pointer-events: none;
	-webkit-mask: url("../images/logo-1.png") center / contain no-repeat;
	mask: url("../images/logo-1.png") center / contain no-repeat;
}

.site-header__logo-mark {
	opacity: 0;
}

.site-header__logo--custom .custom-logo-link {
	display: flex;
}

.site-header__logo--custom .custom-logo {
	max-width: 12rem;
	object-fit: contain;
}

.admin-bar .site-header__logo {
	top: calc(1rem + 32px);
}

.site-header__socials {
	display: flex;
	align-items: center;
	gap: 1rem;
	height: 1.25rem;
	padding-left: 1.5rem;
	border-left: 1px solid rgb(80 67 54 / 20%);
}

.site-header__socials a {
	display: flex;
	color: rgb(80 67 54 / 60%);
	transition: color var(--transition);
}

.site-header__socials svg {
	width: 1rem;
	height: 1rem;
	fill: currentColor;
}

.site-header__socials a:last-child svg {
	fill: none;
}

.menu-toggle,
.mobile-navigation,
.mobile-menu-overlay {
	display: none;
}

/* Hero. */
@keyframes cinematic-reveal {
	0% {
		clip-path: inset(50% 50% 50% 50%);
	}

	20% {
		clip-path: inset(49.8% 0 49.8% 0);
	}

	100% {
		clip-path: inset(0);
	}
}

@keyframes reveal-after-splash {
	from {
		transform: translateY(1.25rem);
		opacity: 0;
	}

	to {
		transform: translateY(0);
		opacity: 1;
	}
}

@keyframes reveal-explore {
	from {
		transform: translate(-50%, 1.25rem);
		opacity: 0;
	}

	to {
		transform: translate(-50%, 0);
		opacity: 1;
	}
}

@keyframes slow-zoom {
	to {
		transform: scale(1.1);
	}
}

@keyframes scroll-indicator {
	0% {
		transform: translateY(-100%);
		opacity: 0;
	}

	50% {
		opacity: 1;
	}

	100% {
		transform: translateY(200%);
		opacity: 0;
	}
}

.site-main--front-page {
	position: relative;
	z-index: 1;
}

.site-main--front-page section[id] {
	scroll-margin-top: 7rem;
}

.home-hero {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100svh;
	min-height: 40rem;
	overflow: hidden;
	background: rgb(244 245 241 / 85%);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
}

.home-hero__reveal,
.home-hero__slider,
.home-hero__slide,
.home-hero__veil {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.home-hero__reveal {
	clip-path: inset(50%);
      animation: cinematic-reveal 1.8s cubic-bezier(0.77, 0, 0.175, 1) 0.3s forwards;
}

.home-hero__veil {
	z-index: 2;
	background: linear-gradient(
		to bottom,
		rgb(80 67 54 / 8%) 0%,
		rgb(80 67 54 / 18%) 22%,
		rgb(54 44 34 / 48%) 52%,
		rgb(35 28 22 / 72%) 100%
	);
	mix-blend-mode: multiply;
	pointer-events: none;
}

.home-hero__slide {
	object-fit: cover;
	opacity: 0;
	transition: opacity 2s ease-in-out;
	animation: slow-zoom 15s linear infinite alternate;
}

.home-hero__slide.is-active {
	z-index: 1;
	opacity: 1;
}

.home-hero__content {
	position: relative;
	z-index: 3;
	display: flex;
	flex-direction: column;
	justify-content: center;
	width: min(100% - 3rem, 75rem);
	height: 100%;
	margin-inline: auto;
	opacity: 0;
	pointer-events: none;
      animation: reveal-after-splash 0.9s cubic-bezier(0.16, 1, 0.3, 1) 1.8s forwards;
}

.home-hero__content h1 {
	max-width: 56rem;
	margin-bottom: 0;
	color: var(--color-pierre);
	font-size: clamp(2.75rem, 5.5vw, 6rem);
	line-height: 1.05;
	text-shadow: 0 0.125rem 1rem rgb(0 0 0 / 22%);
}

.home-hero__content h1 em {
	color: var(--color-pierre);
	font-weight: 300;
}

.home-hero__content p {
	margin-top: 1.5rem;
	color: rgb(244 245 241 / 84%);
	font-size: clamp(0.7rem, 1vw, 0.875rem);
	letter-spacing: 0.3em;
	text-shadow: 0 0.125rem 0.75rem rgb(0 0 0 / 28%);
	text-transform: uppercase;
}

.home-hero__explore {
	position: absolute;
	bottom: 2rem;
	left: 50%;
	z-index: 4;
	display: flex;
	align-items: center;
	flex-direction: column;
	color: var(--color-bois);
	opacity: 0;
	text-decoration: none;
	transform: translateX(-50%);
	      animation: reveal-explore 0.75s cubic-bezier(0.16, 1, 0.3, 1) 2.15s forwards;
}

.home-hero__explore > span:first-child {
	margin-bottom: 1rem;
	color: var(--color-pierre);
	font-size: 0.55rem;
	font-weight: 500;
	letter-spacing: 0.3em;
	text-shadow: 0 0.125rem 0.75rem rgb(0 0 0 / 30%);
	text-transform: uppercase;
	transition: color var(--transition);
}

.home-hero__explore:hover > span:first-child {
	color: var(--color-sauge);
}

.home-hero__scroll-track {
	position: relative;
	display: block;
	width: 1px;
	height: 4rem;
	overflow: hidden;
	background: rgb(244 245 241 / 42%);
}

.home-hero__scroll-track span {
	position: absolute;
	top: 0;
	left: 0;
	width: 1px;
	height: 2rem;
	background: var(--color-bois);
	animation: scroll-indicator 2s ease-in-out infinite;
}

/* Sections communes et révélations. */
.home-section {
	position: relative;
	z-index: 2;
	padding-block: clamp(6rem, 10vw, 8rem);
}

.home-section__heading {
	margin-bottom: clamp(4rem, 8vw, 5rem);
	text-align: center;
}

.home-section__heading h2 {
	margin-bottom: 1rem;
	font-size: clamp(2rem, 4vw, 2.5rem);
}

.home-section__heading > span {
	display: block;
	width: 3rem;
	height: 1px;
	margin-inline: auto;
	background: var(--color-sauge);
}

.home-kicker {
	margin-bottom: 1.5rem;
	font-size: 0.6rem;
	font-weight: 500;
	letter-spacing: 0.3em;
	text-transform: uppercase;
}

.reveal {
	transform: translateY(2.5rem);
	opacity: 0;
	transition: transform 1s cubic-bezier(0.25, 0.46, 0.45, 0.94), opacity 1s ease;
}

.reveal.is-visible {
	transform: translateY(0);
	opacity: 1;
}

/* Expertises. */
.expertise-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(3rem, 5vw, 4rem);
}

.expertise-card {
	text-align: center;
}

.expertise-card__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 4rem;
	height: 4rem;
	margin: 0 auto 2rem;
	border: 1px solid rgb(187 188 165 / 30%);
	border-radius: 50%;
	color: var(--color-sauge);
	transition: color 500ms ease, background-color 500ms ease, transform 500ms ease;
}

.expertise-card:hover .expertise-card__icon {
	background: var(--color-sauge);
	color: var(--color-white);
	transform: translateY(-0.25rem);
}

.expertise-card__icon svg {
	width: 1.5rem;
	height: 1.5rem;
}

.expertise-card h3 {
	margin-bottom: 1rem;
	font-size: 1.5rem;
}

.expertise-card p {
	margin-bottom: 0;
	color: rgb(80 67 54 / 70%);
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.75;
}

/* Réalisations. */
.projects-section {
	overflow: hidden;
	background: rgb(235 235 230 / 30%);
}

.projects-section__intro {
	width: min(100% - (2 * var(--gutter)), 70rem);
	margin: 0 auto clamp(5rem, 8vw, 6.5rem);
	text-align: center;
}

.projects-section__intro .home-kicker {
	display: flex;
	align-items: center;
	flex-direction: column;
	gap: 1rem;
	margin-bottom: 1.5rem;
	color: var(--color-sauge);
}

.projects-section__intro .home-kicker::after {
	display: block;
	width: 3rem;
	height: 1px;
	background: var(--color-sauge);
	content: "";
}

.projects-section__intro .projects-section__title {
	max-width: 60rem;
	margin: 0 auto 1.5rem;
	font-size: clamp(1.75rem, 3vw, 2.5rem);
}

.projects-section__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 2.75rem;
	padding: 0.75rem 2rem;
	border: 1px solid var(--color-bois);
	color: var(--color-bois);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-decoration: none;
	text-transform: uppercase;
	transition: background-color var(--transition), color var(--transition), transform var(--transition);
}

.projects-section__cta:hover,
.projects-section__cta:focus-visible {
	background: var(--color-bois);
	color: var(--color-pierre);
	transform: translateY(-0.15rem);
}

.projects-showcase {
	position: relative;
	width: 100%;
}

.projects-showcase__stage {
	position: relative;
	height: clamp(28rem, 42vw, 36rem);
	width: 100%;
}

.projects-showcase__track {
	position: relative;
	height: 100%;
	width: 100%;
}

.showcase-project {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 1;
	display: block;
	width: clamp(19rem, 44vw, 50rem);
	aspect-ratio: 1.45;
	overflow: hidden;
	border-radius: 0.35rem;
	background: var(--color-sauge);
	box-shadow: 0 1.5rem 4rem rgb(80 67 54 / 12%);
	filter: saturate(0.45);
	opacity: 0.12;
	pointer-events: none;
	transform: translate(calc(-50% + var(--project-slide-offset, 0px)), -50%) scale(var(--project-slide-scale, 0.78));
	transition: transform 1.25s cubic-bezier(0.16, 1, 0.3, 1), opacity 1.25s ease, filter 1.25s ease;
}

.showcase-project.is-prev,
.showcase-project.is-next {
	z-index: 2;
	filter: none;
	opacity: 1;
	cursor: pointer;
	pointer-events: auto;
}

.showcase-project.is-far {
	z-index: 1;
	opacity: 0.12;
}

.showcase-project.is-active {
	z-index: 3;
	filter: none;
	opacity: 1;
	pointer-events: auto;
	transform: translate(calc(-50% + var(--project-slide-offset, 0px)), -50%) scale(1);
}

.showcase-project.is-hidden {
	opacity: 0;
	visibility: hidden;
}

.showcase-project::after {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: transparent;
	content: "";
	transition: background-color 1.25s ease;
}

.showcase-project.is-active::after {
	background: color-mix(in srgb, var(--color-bois) 76%, transparent);
}

.showcase-project img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.showcase-project__link {
	display: block;
	height: 100%;
	color: inherit;
	text-decoration: none;
}

.showcase-project__content {
	position: absolute;
	inset: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	flex-direction: column;
	justify-content: center;
	gap: 0.65rem;
	padding: clamp(1.5rem, 4vw, 4rem);
	color: var(--color-pierre);
	text-align: center;
	opacity: 0;
	transform: translateY(1rem);
	transition: opacity 800ms ease, transform 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.showcase-project.is-active .showcase-project__content {
	opacity: 1;
	transform: translateY(0);
}

.showcase-project__content h3 {
	margin: 0;
	font-size: clamp(1.8rem, 3.5vw, 3rem);
}

.showcase-project__cta,
.showcase-project__status {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3.25rem;
	margin-top: 1.25rem;
	padding: 0.85rem 2rem;
	border: 1px solid rgb(244 245 241 / 72%);
	color: var(--color-pierre);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.2em;
	text-transform: uppercase;
	transition: background-color var(--transition), color var(--transition);
}

.showcase-project__status {
	border-style: dashed;
	opacity: 0.8;
}

.showcase-project__link:hover .showcase-project__cta,
.showcase-project__link:focus-visible .showcase-project__cta {
	background: var(--color-pierre);
	color: var(--color-bois);
}

.showcase-project:focus-within {
	outline: none;
}

.showcase-project__link:focus-visible {
	outline: 2px solid var(--color-sauge);
	outline-offset: 0.35rem;
}

/* Archive de tous les projets. */
.projects-archive {
	padding: 0 !important;
	background: var(--color-pierre);
}

.projects-archive__intro {
	min-height: min(78vh, 52rem);
	background: var(--color-pierre-dark);
}

.projects-archive__intro-inner {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 3rem;
	min-height: min(78vh, 52rem);
	padding-top: 10rem;
	padding-bottom: clamp(4rem, 9vw, 8rem);
}

.projects-archive__intro-body {
	max-width: 48rem;
}

.projects-archive__intro h1 {
	margin: 0 0 2rem;
	color: var(--color-bois);
	font-size: clamp(3.5rem, 8vw, 7rem);
	line-height: 0.98;
}

.projects-archive__intro h1 em {
	color: var(--color-sauge);
}

.projects-archive__intro-copy {
	max-width: 34rem;
	margin: 0;
	color: rgb(80 67 54 / 76%);
	font-size: clamp(1rem, 1.5vw, 1.2rem);
	font-weight: 300;
	line-height: 1.8;
}

.projects-archive__scroll {
	display: inline-flex;
	align-items: center;
	flex-direction: column;
	gap: 1rem;
	padding-bottom: 0.5rem;
	color: var(--color-bois);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.2em;
	text-decoration: none;
	text-transform: uppercase;
}

.projects-archive__scroll i {
	display: block;
	width: 1px;
	height: 4rem;
	background: var(--color-sauge);
}

.projects-archive__selection {
	padding-block: clamp(5rem, 10vw, 9rem);
	background: var(--color-pierre);
}

.projects-archive__header {
	display: flex;
	align-items: end;
	justify-content: space-between;
	gap: 2rem;
	margin-bottom: clamp(3rem, 6vw, 5rem);
}

.projects-archive__header h2 {
	margin: 0;
	font-size: clamp(2.75rem, 6vw, 5.5rem);
}

.projects-archive__header > p {
	margin: 0 0 0.35rem;
	color: var(--color-sauge);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

.projects-archive__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: clamp(1.5rem, 4vw, 4rem);
	row-gap: clamp(3.5rem, 7vw, 7rem);
}

.projects-archive__card {
	display: block;
	color: var(--color-bois);
	text-decoration: none;
}

.projects-archive__media {
	position: relative;
	aspect-ratio: 1.35;
	overflow: hidden;
	background: var(--color-sauge);
}

.projects-archive__media::after {
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgb(35 28 22 / 12%), transparent 45%, rgb(35 28 22 / 30%));
	content: "";
	pointer-events: none;
}

.projects-archive__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 800ms cubic-bezier(0.16, 1, 0.3, 1);
}

.projects-archive__number,
.projects-archive__arrow {
	position: absolute;
	z-index: 1;
	color: var(--color-pierre);
}

.projects-archive__number {
	top: 1.5rem;
	left: 1.5rem;
	font-family: var(--font-serif);
	font-size: 1.1rem;
	font-style: italic;
}

.projects-archive__arrow {
	top: 1.25rem;
	right: 1.25rem;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid rgb(244 245 241 / 68%);
	border-radius: 50%;
	font-family: var(--font-serif);
	font-size: 1.2rem;
	transition: background-color var(--transition), color var(--transition), transform var(--transition);
}

.projects-archive__card-content {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.4rem 0 1rem;
	border-bottom: 1px solid rgb(80 67 54 / 16%);
}

.projects-archive__card-content h3 {
	margin: 0;
	font-size: clamp(1.6rem, 3vw, 2.6rem);
}

.projects-archive__card-content p {
	margin: 0;
	color: var(--color-sauge);
	font-size: 0.62rem;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.projects-archive__card:hover .projects-archive__media img,
.projects-archive__card:focus-visible .projects-archive__media img {
	transform: scale(1.045);
}

.projects-archive__card:hover .projects-archive__arrow,
.projects-archive__card:focus-visible .projects-archive__arrow {
	background: var(--color-pierre);
	color: var(--color-bois);
	transform: translate(0.15rem, -0.15rem);
}

.projects-archive__card:focus-visible {
	outline: 2px solid var(--color-sauge);
	outline-offset: 0.5rem;
}

.projects-archive__closing {
	padding-block: clamp(5rem, 10vw, 9rem);
	background: var(--color-bois);
	color: var(--color-pierre);
}

.projects-archive__closing-inner {
	text-align: center;
}

.projects-archive__closing h2 {
	margin: 0 auto 2rem;
	color: var(--color-pierre);
	font-size: clamp(2.5rem, 6vw, 5.5rem);
}

.projects-archive__closing a {
	color: var(--color-pierre);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-decoration: none;
	text-transform: uppercase;
}

.projects-archive__closing a span {
	margin-left: 0.5rem;
	font-size: 1rem;
}

/* Valeurs. */
.values-section {
	background: var(--color-pierre-dark);
}

.values-card {
	width: min(100% - (2 * var(--gutter)), 56rem);
	margin-inline: auto;
	padding: clamp(3rem, 7vw, 5rem);
	border: 1px solid rgb(80 67 54 / 5%);
	border-radius: 2rem;
	background: rgb(244 245 241 / 70%);
	box-shadow: 0 0.25rem 1rem rgb(80 67 54 / 5%);
	backdrop-filter: blur(12px);
	-webkit-backdrop-filter: blur(12px);
	text-align: center;
}

.values-card h2 {
	margin-bottom: 2.5rem;
	font-size: clamp(2rem, 4vw, 2.5rem);
}

.values-card p:not(.home-kicker) {
	max-width: 36rem;
	margin-inline: auto;
	color: rgb(80 67 54 / 60%);
	font-size: clamp(0.8rem, 1.5vw, 0.875rem);
	font-weight: 300;
	line-height: 1.8;
}

.values-card .values-card__lead {
	max-width: 42rem;
	margin-bottom: 2rem;
	color: rgb(80 67 54 / 80%);
	font-size: clamp(0.9rem, 1.6vw, 1rem);
}

.pill-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 3.25rem;
	margin-top: 2rem;
	padding: 0.8rem 2.5rem;
	border: 0;
	border-radius: 999px;
	background: var(--color-bois);
	color: var(--color-pierre);
	font-size: 0.7rem;
	font-weight: 500;
	letter-spacing: 0.2em;
	text-decoration: none;
	text-transform: uppercase;
	cursor: pointer;
	transition: color var(--transition), background-color var(--transition);
}

.pill-button:hover,
.pill-button:focus-visible {
	background: var(--color-sauge);
	color: var(--color-white);
}

/* Logos clients. */
.clients-section {
	position: relative;
	z-index: 2;
	padding-block: 5rem;
	overflow: hidden;
	border-block: 1px solid rgb(80 67 54 / 5%);
}

.clients-section h2 {
	margin-bottom: clamp(4rem, 6vw, 5rem);
	color: rgb(80 67 54 / 60%);
	font-family: var(--font-sans);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.3em;
	text-align: center;
	text-transform: uppercase;
}

@keyframes client-scroll {
	from {
		transform: translateX(0);
	}

	to {
		transform: translateX(-50%);
	}
}

.client-band {
	opacity: 0.5;
}

.client-band__track {
	display: flex;
	align-items: center;
	width: max-content;
	animation: client-scroll 42s linear infinite;
}

.client-logo {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 14rem;
	padding-inline: 3rem;
}

.client-logo img {
	width: auto;
	height: 1.5rem;
	max-width: 8rem;
	mix-blend-mode: multiply;
}

.client-logo--tom-ford img {
	height: 1rem;
}

.client-logo--text {
	font-family: var(--font-serif);
	font-size: 2rem;
	letter-spacing: 0.15em;
}

/* Actualités LinkedIn : les cartes ProFeed suivent la palette du site. */
.home-news {
	padding-block: clamp(3rem, 7vw, 6rem);
}

.home-news[hidden] {
	display: none;
}

.home-news__header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 2rem;
}

.home-news__header h2 {
	max-width: 42rem;
	margin-top: 1rem;
	margin-bottom: 0;
	font-size: clamp(2rem, 4vw, 2.5rem);
}

.home-news__eyebrow {
	color: var(--color-sauge);
}

.home-news__link {
	flex-shrink: 0;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid var(--color-sauge);
	color: var(--color-bois);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-decoration: none;
	text-transform: uppercase;
}

.home-news__link:hover,
.home-news__link:focus-visible {
	color: var(--color-sauge);
}

.home-news__intro {
	max-width: 42rem;
	margin: 0.5rem 0 2.5rem;
	color: rgb(80 67 54 / 70%);
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.8;
}

#actualites .profeedwp-feed {
	font-family: inherit;
	--lf-text-color: var(--color-bois);
	--lf-primary-color: var(--color-bois);
	--lf-background-color: var(--color-white);
	--lf-border-radius: 0;
	--lf-shadow-light: none;
	--lf-shadow-hover: 0 6px 20px rgb(80 67 54 / 8%);
}

#actualites .profeedwp-feed .profeedwp-feed-posts {
	align-items: stretch;
	gap: 1.5rem;
}

#actualites .profeedwp-feed .profeedwp-feed-post-link {
	display: flex;
	height: 100%;
}

#actualites .profeedwp-feed .profeedwp-feed-post {
	width: 100%;
	height: 100%;
	min-height: 0;
	border: 0;
	background: var(--color-white);
}

#actualites .profeedwp-feed .profeedwp-feed-post-image,
#actualites .home-news__image-empty {
	aspect-ratio: 3 / 2;
	flex-shrink: 0;
	overflow: hidden;
}

#actualites .profeedwp-feed .profeedwp-feed-post-image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.3s ease;
}

#actualites .home-news__image-empty {
	display: flex;
	align-items: center;
	justify-content: center;
	background: linear-gradient(135deg, #ededea, #f4f5f1);
	color: var(--color-bois);
}

#actualites .home-news__linkedin-logo {
	display: block;
	width: 4rem;
	height: 4rem;
}

#actualites .profeedwp-feed .profeedwp-feed-post .profeedwp-feed-post-content {
	display: flex;
	flex: 1;
	flex-direction: column;
	justify-content: flex-start;
	gap: 0;
	padding: 1.5rem;
}

#actualites .home-news__card-title {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	min-height: 2.6em;
	margin: 0;
	overflow: hidden;
	color: var(--color-bois);
	font-family: var(--font-serif);
	font-size: 1.4rem;
	font-weight: 400;
	line-height: 1.3;
}

#actualites .home-news__card-excerpt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	min-height: 4.95em;
	margin: 1rem 0 1.5rem;
	overflow: hidden;
	color: var(--color-bois);
	font-size: 0.9375rem;
	font-weight: 300;
	line-height: 1.65;
}

#actualites .home-news__card-read-more {
	align-self: flex-start;
	margin-top: auto;
	padding-top: 0.75rem;
	color: var(--color-bois);
	font-size: 0.75rem;
	font-weight: 500;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

#actualites .profeedwp-feed-post-link:hover .home-news__card-read-more {
	text-decoration: underline;
	text-underline-offset: 0.3em;
}

#actualites .profeedwp-feed-post-link:hover .profeedwp-feed-post-image img {
	transform: scale(1.025);
}

#actualites .profeedwp-feed-post-link:focus-visible {
	outline: 2px solid var(--color-sauge);
	outline-offset: 4px;
}

#actualites .profeedwp-feed-error {
	border-radius: 0;
	background: rgb(255 255 255 / 60%);
	color: var(--color-bois);
}

#actualites .profeedwp-feed-spinner {
	border-top-color: var(--color-sauge);
}

@media (min-width: 64rem) {
	.home-news__header {
		flex-wrap: wrap;
	}

	.home-news__header > div {
		flex-shrink: 0;
	}

	.home-news__header h2 {
		max-width: none;
		white-space: nowrap;
	}
}

@media (max-width: 47.9375rem) {
	.home-news__header {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.5rem;
	}

	.home-news__header h2 {
		font-size: clamp(1.75rem, 7vw, 2.25rem);
	}
}

/* Écosystème. */
.ecosystem-section {
	background: var(--color-pierre-dark);
}

.ecosystem-section__inner {
	width: min(100% - (2 * var(--gutter)), 56rem);
	margin-inline: auto;
	text-align: center;
}

.ecosystem-section h2 {
	margin-bottom: 2.5rem;
	font-size: clamp(2rem, 4vw, 2.5rem);
}

.ecosystem-section__inner > p:not(.home-kicker) {
	max-width: 42rem;
	margin: 0 auto 4rem;
	color: rgb(80 67 54 / 70%);
	font-size: 0.875rem;
	font-weight: 300;
	line-height: 1.8;
}

.ecosystem-links {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 1.5rem;
	font-size: 0.65rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.ecosystem-links a {
	color: rgb(80 67 54 / 60%);
	text-decoration: none;
	transition: color var(--transition);
}

.ecosystem-links a:hover,
.ecosystem-links a:focus-visible {
	color: var(--color-bois);
}

/* Contact. */
.contact-section {
	position: relative;
	z-index: 2;
	padding-block: clamp(6rem, 10vw, 8rem);
	background: var(--color-bois);
	color: var(--color-pierre);
}

.contact-section__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: clamp(4rem, 8vw, 6rem);
	row-gap: 2rem;
}

.contact-section__intro {
	display: flex;
	justify-content: center;
	flex-direction: column;
}

.contact-section h2 {
	margin-bottom: 1.5rem;
	font-size: clamp(2rem, 4vw, 2.5rem);
}

.contact-section address {
	margin-top: 2.5rem;
	padding-top: 2.5rem;
	border-top: 1px solid rgb(187 188 165 / 20%);
	font-size: 0.875rem;
	font-style: normal;
	font-weight: 300;
	letter-spacing: 0.04em;
}

.contact-section address p,
.contact-section address a {
	color: rgb(244 245 241 / 70%);
	text-decoration: none;
}

.contact-section address .contact-section__email {
	color: var(--color-sauge);
	transition: color var(--transition);
}

.contact-section address .contact-section__email:hover {
	color: var(--color-pierre);
}

.contact-form {
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

.contact-form p {
	margin: 0;
}

.contact-form .wpcf7-form-control-wrap {
	display: block;
}

.contact-form select {
	width: 100%;
	padding: 0.5rem 0;
	border: 0;
	border-bottom: 1px solid rgb(187 188 165 / 30%);
	border-radius: 0;
	outline: 0;
	background: transparent;
	color: var(--color-pierre);
	font: inherit;
	font-size: 0.875rem;
	font-weight: 300;
	transition: border-color var(--transition);
}

.contact-form select:focus {
	border-color: var(--color-pierre);
}

.contact-form__row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.5rem;
}

.contact-form__field {
	display: flex;
	flex-direction: column;
}

.contact-form label {
	margin-bottom: 0.5rem;
	color: var(--color-sauge);
	font-size: 0.65rem;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

.contact-form input,
.contact-form textarea {
	width: 100%;
	padding: 0.5rem 0;
	border: 0;
	border-bottom: 1px solid rgb(187 188 165 / 30%);
	border-radius: 0;
	outline: 0;
	background: transparent;
	color: var(--color-pierre);
	font-size: 0.875rem;
	font-weight: 300;
	transition: border-color var(--transition);
}

.contact-form input:focus,
.contact-form textarea:focus {
	border-color: var(--color-pierre);
}

.contact-form textarea {
	resize: vertical;
}

.contact-form .contact-form__required {
	color: var(--color-sauge);
}

.contact-form .wpcf7-acceptance {
	color: rgb(244 245 241 / 70%);
	font-size: 0.72rem;
	font-weight: 300;
	line-height: 1.6;
}

.contact-form .wpcf7-acceptance label {
	display: flex;
	align-items: flex-start;
	gap: 0.65rem;
	margin: 0;
	color: inherit;
	font-size: inherit;
	font-weight: inherit;
	letter-spacing: normal;
	line-height: inherit;
	text-transform: none;
}

.contact-form .wpcf7-acceptance input {
	width: auto;
	margin-top: 0.2rem;
	accent-color: var(--color-pierre);
}

.contact-form .wpcf7-spinner {
	margin: 0 0 0 0.75rem;
}

.contact-section .wpcf7-response-output {
	margin: 0;
	padding: 0.9rem 1rem;
	border: 1px solid rgb(187 188 165 / 40%);
	color: var(--color-sauge);
	font-size: 0.8rem;
	line-height: 1.5;
}

.contact-section .wpcf7-response-output:empty {
	display: none;
}

.contact-form__privacy-notice {
	grid-column: 2;
	margin: -1rem 0 0;
	color: rgb(244 245 241 / 62%);
	font-size: 0.72rem;
	font-weight: 300;
	line-height: 1.6;
}

.contact-form__privacy-notice a {
	color: var(--color-pierre);
	text-decoration: underline;
	text-decoration-color: var(--color-sauge);
	text-underline-offset: 0.2em;
}

.pill-button--light {
	align-self: flex-start;
	margin-top: 0;
	background: var(--color-pierre);
	color: var(--color-bois);
}

.contact-form__status {
	min-height: 1.5em;
	margin: -1rem 0 0;
	color: var(--color-sauge);
	font-size: 0.8rem;
}

/* Footer et templates WordPress secondaires. */
.site-footer {
	position: relative;
	z-index: 2;
	background: var(--color-white);
	color: var(--color-bois);
}

.site-footer__main {
	padding-block: clamp(3.5rem, 8vw, 6rem) clamp(3rem, 6vw, 5rem);
}

.site-footer__ornament {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin-bottom: clamp(3.5rem, 7vw, 5.5rem);
}

.site-footer__ornament::before,
.site-footer__ornament::after {
	height: 1px;
	background: rgb(183 154 113 / 55%);
	content: "";
}

.site-footer__ornament::before,
.site-footer__ornament::after {
	flex: 1;
}

.site-footer__ornament span {
	width: 0.65rem;
	height: 0.65rem;
	border-radius: 50%;
	background: rgb(183 154 113 / 90%);
}

.site-footer__grid {
	display: grid;
	grid-template-columns: minmax(15rem, 1.55fr) repeat(3, minmax(8rem, 0.8fr));
	gap: clamp(2rem, 5vw, 5rem);
}

.site-footer__brand {
	padding-right: 2rem;
}

.site-footer__logo {
	display: inline-flex;
	width: 5.75rem;
	color: var(--color-bois);
	text-decoration: none;
	transition: color var(--transition), transform var(--transition);
}

.site-footer__logo:hover,
.site-footer__logo:focus-visible {
	color: var(--color-sauge);
	transform: translateY(-0.2rem);
}

.site-footer__brand > p {
	max-width: 18rem;
	margin: 0.75rem 0 0;
	color: var(--color-bois);
	font-family: var(--font-serif);
	font-size: 1.05rem;
	line-height: 1.45;
}

.site-footer__column h2 {
	margin: 0 0 1.25rem;
	color: var(--color-bois);
	font-family: var(--font-sans);
	font-size: 0.65rem;
	font-weight: 600;
	letter-spacing: 0.22em;
	text-transform: uppercase;
}

.site-footer__links {
	display: flex;
	flex-direction: column;
	gap: 0.55rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.site-footer__links a {
	color: rgb(80 67 54 / 78%);
	font-size: 0.8rem;
	font-weight: 400;
	text-decoration: none;
	transition: color var(--transition), transform var(--transition);
}

.site-footer__links a:hover,
.site-footer__links a:focus-visible {
	color: var(--color-bois);
	transform: translateX(0.15rem);
}

.site-footer__socials {
	display: flex;
	gap: 0.8rem;
}

.site-footer__socials a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 2.2rem;
	height: 2.2rem;
	border: 1px solid var(--color-bois);
	border-radius: 0.55rem;
	color: var(--color-bois);
	transition: color var(--transition), background-color var(--transition), transform var(--transition);
	}

.site-footer__socials a:hover,
.site-footer__socials a:focus-visible {
	background: var(--color-bois);
	color: var(--color-white);
	transform: translateY(-0.15rem);
	}

.site-footer__socials svg {
	width: 1.25rem;
	height: 1.25rem;
	fill: currentColor;
	}

.site-footer__socials a:last-child svg {
	fill: none;
}

.site-footer__bottom {
	border-top: 1px solid rgb(80 67 54 / 14%);
	}

.site-footer__bottom-inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	min-height: 3.5rem;
}

.site-footer__bottom-inner p,
.site-footer__legal {
	margin: 0;
	font-size: 0.7rem;
}

.site-footer__legal {
	display: flex;
	gap: 2rem;
}

.site-footer__legal a {
	color: var(--color-bois);
	text-decoration: none;
	transition: color var(--transition);
}

.site-footer__legal a:hover,
.site-footer__legal a:focus-visible {
	color: var(--color-sauge);
}

.site-main:not(.site-main--front-page) {
	position: relative;
	z-index: 2;
	min-height: 70vh;
	padding-block: 10rem 6rem;
}

.content-layout {
	max-width: 60rem;
}

.posts-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2rem;
}

.post-card {
	overflow: hidden;
	background: var(--color-white);
}

.post-card__body {
	padding: 1.5rem;
}

.post-card__title a {
	text-decoration: none;
}

.entry-thumbnail {
	margin: 2rem 0;
}

/* Pages légales. */
.legal-page {
	padding: 0 !important;
	background: var(--color-pierre);
}

.legal-page__hero {
	display: flex;
	align-items: flex-end;
	min-height: min(64svh, 44rem);
	padding: 9rem var(--gutter) clamp(4rem, 8vw, 7rem);
	background: var(--color-pierre);
}

.legal-page__hero-inner {
	width: min(100%, 78rem);
}

.legal-page__hero .entry-header {
	margin: 0;
}

.legal-page__hero .entry-title {
	max-width: 58rem;
	margin: 0;
	color: var(--color-bois);
	font-size: clamp(2.75rem, 5.25vw, 5.5rem);
	font-weight: 400;
	letter-spacing: -0.035em;
	line-height: 0.98;
}

.legal-page__content {
	padding: clamp(5rem, 9vw, 8rem) 0 clamp(7rem, 12vw, 11rem);
	background: var(--color-white);
}

.legal-page__content .content-layout {
	max-width: 78rem;
}

.legal-page__entry {
	max-width: 52rem;
	margin-inline: 0;
}

.legal-page .entry-content {
	color: rgb(80 67 54 / 76%);
	font-size: 0.95rem;
	font-weight: 300;
	line-height: 1.9;
}

.legal-page .entry-content h2 {
	margin: clamp(3.5rem, 7vw, 5rem) 0 1.15rem;
	color: var(--color-bois);
	font-size: clamp(1.8rem, 3.5vw, 2.65rem);
	font-weight: 500;
	letter-spacing: -0.015em;
	line-height: 1.15;
}

.legal-page .entry-content h2:first-child {
	margin-top: 0;
}

.legal-page .entry-content h3 {
	margin: 2rem 0 0.75rem;
	color: var(--color-bois);
	font-size: 1.25rem;
	font-weight: 500;
}

.legal-page .entry-content p {
	margin-bottom: 1.25rem;
}

.legal-page .entry-content ul {
	margin: 0 0 1.5rem;
	padding-left: 1.25rem;
}

.legal-page .entry-content li + li {
	margin-top: 0.45rem;
}

.legal-page .entry-content a {
	color: var(--color-bois);
	text-decoration: underline;
	text-decoration-color: var(--color-sauge);
	text-underline-offset: 0.2em;
}

.legal-page .entry-content .legal-page__updated {
	margin-top: 3rem;
	color: rgb(80 67 54 / 55%);
	font-size: 0.72rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

/* Fiche projet. */
.project-page {
	padding: 0 !important;
	background: var(--color-pierre);
}

.project-page [hidden] {
	display: none !important;
}

.project-kicker {
	margin: 0 0 1.5rem;
	color: var(--color-sauge);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.25em;
	line-height: 1.3;
	text-transform: uppercase;
}

.project-kicker--light {
	color: var(--color-sauge);
}

.project-hero {
	position: relative;
	min-height: min(100svh, 58rem);
	background: var(--color-bois);
	color: var(--color-pierre);
	overflow: hidden;
}

.project-hero__image,
.project-hero__veil {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.project-hero__image {
	object-fit: cover;
	object-position: center;
	cursor: zoom-in;
	transform: scale(1.01);
}

.project-hero__image:focus-visible,
.project-image-frame img:focus-visible {
	outline: 2px solid var(--color-pierre);
	outline-offset: -0.5rem;
}

.project-hero__veil {
	background: linear-gradient(90deg, rgb(35 28 22 / 82%) 0%, rgb(35 28 22 / 38%) 54%, rgb(35 28 22 / 14%) 100%), linear-gradient(0deg, rgb(35 28 22 / 45%) 0%, transparent 55%);
	pointer-events: none;
}

.project-hero__content {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	flex-direction: column;
	min-height: min(100svh, 58rem);
	padding-top: 8rem;
	padding-bottom: 8rem;
	pointer-events: none;
}

.project-back-link {
	position: absolute;
	top: 9rem;
	left: var(--gutter);
	display: inline-flex;
	align-items: center;
	gap: 0.65rem;
	color: rgb(244 245 241 / 82%);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-decoration: none;
	text-transform: uppercase;
	pointer-events: auto;
	transition: color var(--transition), transform var(--transition);
}

.project-back-link span {
	font-size: 1.1rem;
	font-weight: 300;
	letter-spacing: 0;
}

.project-back-link:hover,
.project-back-link:focus-visible {
	color: var(--color-pierre);
	transform: translateX(-0.25rem);
}

.project-hero__content .project-kicker {
	margin-bottom: 1rem;
}

.project-hero h1 {
	max-width: 50rem;
	margin: 0 0 1.75rem;
	color: var(--color-pierre);
	font-size: clamp(3rem, 7vw, 7rem);
	line-height: 0.98;
}

.project-hero__meta {
	display: flex;
	align-items: center;
	gap: 1rem;
	color: rgb(244 245 241 / 84%);
	font-size: 0.75rem;
	font-weight: 400;
	letter-spacing: 0.08em;
}

.project-hero__meta span:nth-child(2) {
	color: var(--color-sauge);
}

.project-image-expand {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.75rem;
	border: 1px solid rgb(244 245 241 / 44%);
	border-radius: 999px;
	background: rgb(35 28 22 / 38%);
	color: var(--color-pierre);
	font-size: 0.62rem;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	cursor: pointer;
	transition: background-color var(--transition), border-color var(--transition), transform var(--transition);
}

.project-image-expand:hover,
.project-image-expand:focus-visible {
	border-color: var(--color-sauge);
	background: var(--color-bois);
	transform: translateY(-0.15rem);
}

.project-image-expand span {
	font-size: 1.25rem;
	font-weight: 300;
	line-height: 1;
}

.project-image-expand--hero {
	position: absolute;
	right: clamp(1.25rem, 4vw, 4rem);
	bottom: clamp(1.5rem, 4vw, 3.5rem);
	z-index: 2;
	min-height: 3.25rem;
	padding: 0.8rem 1.5rem;
}

.project-facts {
	width: 100%;
	margin-inline: auto;
	padding-block: 3.5rem;
	background: var(--color-white);
}

.project-facts__inner {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	width: min(100% - (2 * var(--gutter)), 78rem);
	margin-inline: auto;
}

.project-facts__item {
	padding-inline: clamp(1rem, 4vw, 4rem);
	text-align: center;
}

.project-facts__item + .project-facts__item {
	border-left: 1px solid rgb(80 67 54 / 12%);
}

.project-facts__item .project-kicker {
	margin-bottom: 1rem;
}

.project-facts__item p:last-child {
	margin: 0;
	font-family: var(--font-serif);
	font-size: clamp(1.1rem, 2vw, 1.4rem);
}

.project-introduction {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	align-items: center;
	gap: clamp(3rem, 8vw, 8rem);
	width: min(100% - (2 * var(--gutter)), 78rem);
	margin-inline: auto;
	padding-top: clamp(5rem, 9vw, 8rem);
	padding-bottom: clamp(3rem, 5vw, 5rem);
}

.project-introduction__copy {
	max-width: 35rem;
	padding-left: clamp(0rem, 3vw, 3rem);
}

.project-rule {
	display: block;
	width: 2.75rem;
	height: 1px;
	margin: -0.5rem 0 2rem;
	background: var(--color-sauge);
}

.project-introduction h2 {
	margin-bottom: 2rem;
	font-size: clamp(2.25rem, 4.5vw, 4rem);
	line-height: 1.08;
}

.project-introduction__copy > p:last-child {
	max-width: 30rem;
	margin-bottom: 0;
	color: rgb(80 67 54 / 72%);
	font-size: 0.95rem;
	font-weight: 300;
	line-height: 1.9;
}

.project-image-frame {
	position: relative;
	overflow: hidden;
	background: var(--color-sauge);
}

.project-image-frame img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	cursor: zoom-in;
}

.project-image-frame--intro {
	height: clamp(25rem, 45vw, 42rem);
}

.project-image-expand--icon {
	position: absolute;
	top: 1rem;
	right: 1rem;
	width: 2.75rem;
	height: 2.75rem;
	padding: 0;
	border-color: rgb(244 245 241 / 70%);
	background: rgb(35 28 22 / 44%);
}

.project-image-expand--icon span {
	font-size: 1.5rem;
}

.project-process {
	display: grid;
	grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
	gap: clamp(3rem, 7vw, 7rem);
	padding: clamp(4rem, 7vw, 7rem) var(--gutter) clamp(7rem, 12vw, 12rem);
	background: var(--color-white);
}

.project-process__feature {
	position: sticky;
	align-self: start;
	/* Le haut équivaut au centrage précédent, sans translation qui coupe la fin. */
	top: calc(15vh + clamp(3rem, 5vw, 5rem));
	height: min(70vh, 48rem);
	margin-top: clamp(2rem, 4vw, 4rem);
}

.project-process__timeline {
	position: relative;
	padding-top: 1rem;
}

.project-process__timeline::before {
	position: absolute;
	top: 7rem;
	bottom: 4rem;
	left: 1.2rem;
	width: 1px;
	background: rgb(187 188 165 / 70%);
	content: "";
}

.project-process__heading {
	max-width: 35rem;
	margin: 0 0 4rem 6.5rem;
}

.project-process__heading h2 {
	margin: 0;
	font-size: clamp(2rem, 4vw, 3.5rem);
}

.project-step {
	position: relative;
	display: grid;
	grid-template-columns: 5rem minmax(0, 1fr);
	gap: 1.5rem;
	margin-bottom: 4.5rem;
}

.project-step:last-child {
	margin-bottom: 0;
}

/* Galerie des visuels présents dans chaque dossier projet. */
.project-gallery-section {
	padding-top: clamp(3rem, 6vw, 5rem);
	padding-right: max(var(--gutter), calc((100vw - 78rem) / 2));
	padding-bottom: clamp(5rem, 10vw, 9rem);
	padding-left: max(var(--gutter), calc((100vw - 78rem) / 2));
	background: var(--color-pierre);
}

.project-gallery-section__header {
	margin-bottom: clamp(2rem, 4vw, 3rem);
}

.project-gallery {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1rem, 2.5vw, 2rem);
}

.project-gallery__item {
	height: clamp(16rem, 25vw, 26rem);
	margin: 0;
}

.project-gallery__item figcaption {
	position: absolute;
	bottom: 1.25rem;
	left: 1.5rem;
	z-index: 1;
	color: var(--color-pierre);
	font-size: 0.62rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
}

.project-gallery__item::after {
	position: absolute;
	inset: 45% 0 0;
	background: linear-gradient(0deg, rgb(35 28 22 / 62%), transparent);
	content: "";
	pointer-events: none;
}

@media (max-width: 48.875rem) {
	.project-gallery {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.project-gallery__item {
		height: min(56vw, 24rem);
	}
}

@media (max-width: 32rem) {
	.project-gallery {
		grid-template-columns: 1fr;
	}

	.project-gallery__item {
		height: min(82vw, 30rem);
	}
}

.project-step__index {
	position: relative;
	z-index: 1;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	width: 2.45rem;
	height: 2.45rem;
	padding-top: 0.4rem;
	border: 1px solid var(--color-sauge);
	border-radius: 50%;
	background: var(--color-white);
	color: var(--color-sauge);
	font-family: var(--font-serif);
	font-size: 0.95rem;
}

.project-step h3 {
	margin-bottom: 0.85rem;
	font-size: clamp(1.65rem, 3vw, 2.4rem);
}

.project-step p {
	max-width: 31rem;
	margin-bottom: 1.5rem;
	color: rgb(80 67 54 / 72%);
	font-size: 0.9rem;
	font-weight: 300;
	line-height: 1.8;
}

.project-image-frame--step {
	height: clamp(10rem, 18vw, 16rem);
}

.project-description {
	display: grid;
	grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
	align-items: center;
	gap: clamp(3rem, 9vw, 10rem);
	padding: clamp(5rem, 10vw, 9rem) max(var(--gutter), calc((100vw - 78rem) / 2));
	background: var(--color-bois);
	color: var(--color-pierre);
}

.project-description__title h2 {
	margin: 0;
	color: var(--color-pierre);
	font-size: clamp(2.5rem, 5vw, 4.5rem);
}

.project-description > p {
	max-width: 38rem;
	margin: 0;
	color: rgb(244 245 241 / 82%);
	font-family: var(--font-serif);
	font-size: clamp(1.05rem, 1.8vw, 1.35rem);
	line-height: 1.75;
	text-align: justify;
}

.project-related {
	padding: clamp(5rem, 10vw, 9rem) max(var(--gutter), calc((100vw - 78rem) / 2));
	background: var(--color-pierre);
}

.project-related__header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: 2rem;
	margin-bottom: 3.5rem;
}

.project-related__header h2 {
	margin: 0;
	color: var(--color-bois);
	font-size: clamp(2.5rem, 5.5vw, 5rem);
}

.project-related__back {
	flex-shrink: 0;
	padding-bottom: 0.75rem;
	color: var(--color-bois);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-decoration: none;
	text-transform: uppercase;
}

.project-related__back span {
	margin-left: 0.5rem;
	font-size: 1rem;
}

.project-related__cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
}

.project-related-card {
	position: relative;
	display: block;
	min-height: clamp(16rem, 27vw, 25rem);
	overflow: hidden;
	background: var(--color-sauge);
	color: var(--color-pierre);
	text-decoration: none;
}

.project-related-card::after {
	position: absolute;
	inset: 0;
	background: linear-gradient(0deg, rgb(35 28 22 / 74%), transparent 65%);
	content: "";
}

.project-related-card img {
	width: 100%;
	height: 100%;
	min-height: inherit;
	object-fit: cover;
	transition: transform 700ms ease;
}

.project-related-card span {
	position: absolute;
	bottom: 1.5rem;
	left: 1.5rem;
	z-index: 1;
	font-family: var(--font-serif);
	font-size: clamp(1.25rem, 2.2vw, 1.8rem);
}

.project-related-card:hover img,
.project-related-card:focus-visible img {
	transform: scale(1.05);
}

.project-lightbox {
	position: fixed;
	inset: 0;
	z-index: 2000;
	display: grid;
	place-items: center;
	width: 100vw;
	height: 100dvh;
	max-width: none;
	max-height: none;
	margin: 0;
	padding: 2rem;
	border: 0;
	background: transparent;
	color: var(--color-pierre);
}

.project-lightbox::backdrop {
	background: rgb(35 28 22 / 92%);
}

.project-lightbox__backdrop {
	position: absolute;
	inset: 0;
	z-index: 0;
	background: rgb(35 28 22 / 92%);
	backdrop-filter: blur(8px);
	-webkit-backdrop-filter: blur(8px);
}

.project-lightbox__dialog {
	position: relative;
	z-index: 1;
	display: grid;
	place-items: center;
	width: min(92vw, 72rem);
	height: min(88vh, 52rem);
}

.project-lightbox__dialog img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.project-lightbox__close {
	position: absolute;
	top: -0.5rem;
	right: -0.5rem;
	display: grid;
	place-items: center;
	width: 2.75rem;
	height: 2.75rem;
	border: 1px solid rgb(244 245 241 / 55%);
	border-radius: 50%;
	background: var(--color-bois);
	color: var(--color-pierre);
	font-size: 1.7rem;
	font-weight: 300;
	line-height: 1;
	cursor: pointer;
}

.project-lightbox__close:hover,
.project-lightbox__close:focus-visible {
	background: var(--color-sauge);
}

.project-card__link {
	display: block;
	height: 100%;
	color: inherit;
	text-decoration: none;
}

.projects-controls {
	display: grid;
	grid-template-columns: 3rem minmax(8rem, 1fr) auto 3rem;
	align-items: center;
	gap: clamp(1rem, 2.5vw, 2rem);
	width: min(100% - (2 * var(--gutter)), 78rem);
	margin: clamp(2rem, 5vw, 4rem) auto 0;
}

.projects-controls__button {
	display: grid;
	place-items: center;
	width: 3rem;
	height: 3rem;
	padding: 0;
	border: 1px solid rgb(183 154 113 / 70%);
	border-radius: 50%;
	background: transparent;
	color: var(--color-sauge);
	font-size: 1.3rem;
	font-weight: 300;
	line-height: 1;
	cursor: pointer;
	transition: color var(--transition), background-color var(--transition), opacity var(--transition), transform var(--transition);
}

.projects-controls__button:hover:not(:disabled),
.projects-controls__button:focus-visible:not(:disabled) {
	background: var(--color-sauge);
	color: var(--color-white);
	transform: translateY(-0.15rem);
}

.projects-controls__button:disabled {
	opacity: 0.35;
	cursor: not-allowed;
}

.projects-controls__progress {
	position: relative;
	height: 1px;
	background: rgb(183 154 113 / 30%);
}

.projects-controls__progress > span {
	position: relative;
	display: block;
	width: 20%;
	height: 1px;
	background: var(--color-sauge);
	transition: width 650ms cubic-bezier(0.16, 1, 0.3, 1);
}

.projects-controls__progress > span i {
	position: absolute;
	top: 50%;
	right: 0;
	width: 0.7rem;
	height: 0.7rem;
	border: 1px solid var(--color-sauge);
	border-radius: 50%;
	background: var(--color-pierre);
	transform: translate(50%, -50%);
}

.projects-controls__counter {
	min-width: 3.5rem;
	color: var(--color-sauge);
	font-size: 0.65rem;
	font-weight: 500;
	letter-spacing: 0.18em;
	text-align: center;
}

/* Sidebar mobile. */
@media (max-width: 63.99rem) {
	.site-header__column--left,
	.site-header__column--right {
		display: none;
	}

	.menu-toggle {
		position: absolute;
		top: 50%;
		right: 0;
		display: flex;
		justify-content: center;
		flex-direction: column;
		width: 2rem;
		height: 2rem;
		padding: 0.25rem;
		border: 0;
		background: transparent;
		color: var(--color-bois);
		opacity: 1;
		transform: translateY(-50%);
		cursor: pointer;
	}

	.menu-toggle svg {
		width: 2rem;
		height: 2rem;
	}

	.mobile-menu-overlay {
		position: fixed;
		inset: 0;
		z-index: 8;
		display: block;
		background: rgb(0 0 0 / 38%);
		backdrop-filter: blur(3px);
		-webkit-backdrop-filter: blur(3px);
		opacity: 0;
		visibility: hidden;
		pointer-events: auto;
		transition: opacity 400ms ease, visibility 400ms;
	}

	.mobile-menu-overlay.is-open {
		opacity: 1;
		visibility: visible;
	}

	.mobile-navigation {
		position: fixed;
		top: 0;
		right: 0;
		z-index: 9;
		display: block;
		width: 100%;
		max-width: none;
		height: 100dvh;
		padding: 7rem clamp(1.5rem, 6vw, 3rem) 2.5rem;
		background: rgb(244 245 241 / 98%);
		box-shadow: -1rem 0 3rem rgb(0 0 0 / 12%);
	opacity: 0;
		visibility: hidden;
		pointer-events: auto;
		transform: translateX(100%);
		transition: transform 450ms cubic-bezier(0.16, 1, 0.3, 1), opacity 300ms ease, visibility 450ms;
	}

	.mobile-navigation.is-open {
		opacity: 1;
		visibility: visible;
		transform: translateX(0);
	}

	.mobile-navigation__close {
		position: absolute;
		top: 2rem;
		right: 2rem;
		width: 2rem;
		height: 2rem;
		padding: 0;
		border: 0;
		background: transparent;
		color: var(--color-bois);
		cursor: pointer;
	}

	.mobile-navigation__close span {
		position: absolute;
		top: 50%;
		left: 0;
		width: 100%;
		height: 1px;
		background: currentColor;
		transform: rotate(45deg);
	}

	.mobile-navigation__close span:last-child {
		transform: rotate(-45deg);
	}

	.mobile-navigation__inner {
		display: flex;
		flex-direction: column;
		gap: 0.8rem;
	}

	.mobile-navigation__inner > a {
		font-family: var(--font-serif);
		font-size: clamp(2.25rem, 8vw, 3.5rem);
		line-height: 1.15;
		text-decoration: none;
	}

	.mobile-navigation__footer {
		display: flex;
		flex-wrap: wrap;
		gap: 0.75rem 1rem;
		margin-top: 2rem;
		padding-top: 1.5rem;
		border-top: 1px solid rgb(80 67 54 / 15%);
		font-size: 0.65rem;
		font-weight: 500;
		letter-spacing: 0.16em;
		text-transform: uppercase;
	}

	.mobile-navigation__footer a {
		text-decoration: none;
	}

	.admin-bar .mobile-navigation {
		top: 0;
		height: 100dvh;
	}
}

@media (min-width: 40rem) {
	.site-header,
	.site-header__glass,
	.site-header__grid {
		height: 7rem;
	}

	.site-header__logo-mark,
	.site-header__logo--custom .custom-logo {
		height: 5rem;
	}
}

@media (min-width: 80rem) {
	.site-header__column--left,
	.site-header__column--right,
	.site-header__nav {
		gap: 3rem;
	}
}

@media (max-width: 48.875rem) {
	.admin-bar .site-header {
		top: 0;
	}

	.admin-bar .site-header__logo {
		top: 1rem;
	}

	.admin-bar .mobile-navigation {
		top: 0;
		height: 100dvh;
	}
}

@media (max-width: 48rem) {
	.expertise-grid,
	.contact-section__grid,
	.project-introduction,
	.project-process,
	.project-description {
		grid-template-columns: 1fr;
	}

	.projects-archive__intro-inner {
		grid-template-columns: 1fr;
		align-items: end;
		min-height: min(82svh, 48rem);
		padding-top: 8rem;
		padding-bottom: 4rem;
	}

	.projects-archive__scroll {
		align-items: flex-start;
		flex-direction: row;
		gap: 1rem;
		padding-top: 1rem;
	}

	.projects-archive__scroll i {
		width: 3rem;
		height: 1px;
	}

	.projects-archive__header {
		align-items: flex-start;
		flex-direction: column;
		gap: 1rem;
	}

	.projects-archive__grid {
		grid-template-columns: 1fr;
		row-gap: 3rem;
	}

	.expertise-grid {
		gap: 4rem;
	}

	.contact-section__grid {
		row-gap: 2rem;
	}

	.contact-form__privacy-notice {
		grid-column: 1;
		margin-top: -1rem;
	}

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

	.site-footer__brand {
		grid-column: 1 / -1;
		padding-right: 0;
	}

	.site-footer__bottom-inner {
		align-items: flex-start;
		flex-direction: column;
		padding-block: 1.25rem;
	}

	.site-footer__legal {
		flex-wrap: wrap;
		gap: 0.75rem 1.5rem;
	}

	.posts-grid {
		grid-template-columns: 1fr;
	}

	.project-process__feature {
		position: relative;
		align-self: auto;
		top: auto;
		height: min(80vw, 34rem);
		margin-top: 0;
		transform: none;
	}

	.project-process__timeline {
		padding-top: 0;
	}

	.project-process__heading {
		margin-left: 0;
	}

	.project-description {
		gap: 2rem;
	}

	.project-description > p {
		max-width: 45rem;
	}
}

@media (max-width: 39.99rem) {
	.site-header__grid {
		width: calc(100% - 2rem);
	}

	.home-hero__content {
		width: calc(100% - 2.5rem);
	}

	.home-hero__content h1 {
		font-size: clamp(2.35rem, 10vw, 4rem);
	}

	.home-hero__explore {
		bottom: 1.25rem;
	}

	.home-hero__scroll-track {
		height: 3rem;
	}

	.projects-showcase__stage {
		height: clamp(22rem, 78vw, 32rem);
	}

	.showcase-project {
		width: calc(100% - (2 * var(--gutter)));
		aspect-ratio: 1.2;
	}

	.showcase-project.is-prev,
	.showcase-project.is-next {
		opacity: 1;
	}

	.showcase-project.is-far {
		opacity: 0;
	}

	.showcase-project__content {
		padding: 1.5rem;
	}

	.showcase-project__cta,
	.showcase-project__status {
		min-height: 3rem;
		padding-inline: 1.25rem;
		font-size: 0.58rem;
	}

	.ecosystem-links {
		align-items: center;
		flex-direction: column;
		gap: 0.75rem;
	}

	.ecosystem-links > span {
		display: block;
		width: 1.25rem;
		height: 1px;
		background: rgb(80 67 54 / 60%);
		font-size: 0;
	}

	.contact-form__row {
		grid-template-columns: 1fr;
		gap: 1.5rem;
	}

	.site-footer__grid {
		grid-template-columns: 1fr;
	}

	.project-hero__content {
		min-height: 100svh;
		padding-bottom: 7rem;
	}

	.project-back-link {
		top: 7.5rem;
		left: 1.25rem;
	}

	.project-hero h1 {
		max-width: 18rem;
		font-size: clamp(3rem, 15vw, 5rem);
	}

	.project-hero__meta {
		align-items: flex-start;
		flex-direction: column;
		gap: 0.5rem;
	}

	.project-hero__meta span:nth-child(2) {
		display: none;
	}

	.project-image-expand--hero {
		right: 1.25rem;
		bottom: 1.5rem;
		padding-inline: 1.15rem;
	}

	.project-facts {
		width: 100%;
		padding-block: 1rem;
	}

	.project-facts__inner {
		grid-template-columns: 1fr;
		width: 100%;
	}

	.project-facts__item {
		padding-block: 1.25rem;
	}

	.project-facts__item + .project-facts__item {
		border-top: 1px solid rgb(80 67 54 / 12%);
		border-left: 0;
	}

	.project-introduction {
		gap: 3rem;
		padding-block: 5.5rem;
	}

	.project-introduction__copy {
		padding-left: 0;
	}

	.project-image-frame--intro {
		height: 24rem;
	}

	.project-process {
		gap: 4rem;
		padding-top: 4rem;
		padding-bottom: 6rem;
	}

	.project-process__timeline::before {
		top: 5.75rem;
		bottom: 3rem;
	}

	.project-process__heading {
		margin-bottom: 3rem;
	}

	.project-step {
		grid-template-columns: 3.25rem minmax(0, 1fr);
		gap: 1rem;
		margin-bottom: 3.5rem;
	}

	.project-image-frame--step {
		height: 12rem;
	}

	.project-related__header {
		align-items: flex-start;
		flex-direction: column;
	}

	.project-related__cards {
		grid-template-columns: 1fr;
	}

	.project-related-card {
		min-height: 19rem;
	}

	.project-lightbox {
		padding: 1rem;
	}

	.project-lightbox__dialog {
		width: 100%;
		height: 76vh;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		scroll-behavior: auto !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}

	.reveal {
		transform: none;
		opacity: 1;
	}
}
