/**
 * Grant Signature — fiches premium (premium/templates/)
 * HTML5 + CSS natif, sans framework. Tout le réglage visuel passe par les variables de :root.
 * Valeurs relevées sur la maquette Figma « Grant Signature » (fiche Single, 1440 px) ;
 * tailles de texte fluides à caler avec le designer.
 */

/* ───────────────────────────────────────────────
   TOKENS
   ─────────────────────────────────────────────── */

:root {
	/* Couleurs */
	--gp-color-bg: #f1f1f1;
	--gp-color-stone: #d4d3cf;
	--gp-color-sand: #b1ab9b;
	--gp-color-ink: #000;
	--gp-color-inverse: #fff;
	--gp-color-muted: rgb(0 0 0 / .5); /* mentions légales */

	/* Polices */
	--gp-font-sans: "Work Sans", system-ui, sans-serif;
	--gp-font-serif: "Roboto Serif", Georgia, serif;
	--gp-weight-light: 300;
	--gp-weight-regular: 400;
	--gp-weight-semibold: 600;
	--gp-weight-bold: 700;

	/* Tailles de texte (fluides 375 → 1440 px, valeur max = maquette) */
	--gp-text-display: clamp(2.5rem, .55rem + 9.2vw, 8.75rem); /* 140 : nom du bien */
	--gp-text-title: clamp(1.5rem, 1.32rem + .75vw, 2rem);    /* 32 : titres serif */
	--gp-text-lead: clamp(1.125rem, 1.04rem + .38vw, 1.375rem); /* 22 : highlights */
	--gp-text-large: clamp(1rem, .96rem + .19vw, 1.125rem);   /* 18 : chiffres clés, détails */
	--gp-text-body: 1rem;                                       /* 16 */
	--gp-text-small: .75rem;                                    /* 12 */
	--gp-text-lang: .875rem;                                    /* 14 : sélecteur de langue */
	--gp-tracking-display: -.02em;

	--gp-leading-tight: 1;
	--gp-leading-display: .8;    /* grand titre du hero (sur 2 lignes, lignes serrées) */
	--gp-hero-gap: .1;
	--gp-text-landing: clamp(.625rem, .537rem + .376vw, .875rem); /* accueil Signature : baseline, 10 px (375) → 14 px (1440) */
	--gp-text-landing-intro: clamp(.75rem, .706rem + .188vw, .875rem); /* accueil Signature : intro, 12 px (375) → 14 px (1440) */
	--gp-landing-logo: 66.6875rem;                 /* accueil Signature : largeur du grand logo (1067) */
	--gp-landing-overlay: rgb(0 0 0 / .25);        /* voile sur la photo de fond */           /* espace titre → adresse, en part de la taille du titre (.1 = 14 px en 1440) */
	--gp-leading-body: 1.52;
	--gp-measure: 80ch;          /* largeur max. des textes courants (≈ 80 caractères par ligne) */
	--gp-leading-specs: 1.7;
	--gp-leading-footer: 1.25;  /* coordonnées du footer : 3 lignes ≈ hauteur du logo */

	/* Espaces */
	--gp-gutter: clamp(1.25rem, .37rem + 3.756vw, 3.75rem); /* marges latérales : 20 (375) → 60 (1440) */
	--gp-header-top: clamp(1.25rem, .81rem + 1.878vw, 2.5rem); /* marge haute du header : 20 (375) → 40 (1440) */
	--gp-gap-blocks: clamp(1rem, .7rem + 1.3vw, 2rem);      /* 32 : entre deux blocs */
	--gp-gap-columns: clamp(1.5rem, 1rem + 2.5vw, 3.875rem); /* 62 : texte / image */
	--gp-space-xs: .5rem;
	--gp-space-s: 1rem;
	--gp-space-m: 2rem;
	--gp-space-l: clamp(2rem, 1.5rem + 2vw, 3.75rem);       /* 60 */
	--gp-space-xl: clamp(3rem, 2rem + 5vw, 7.5rem);         /* 120 */

	/* Composants */
	--gp-header-height: 5rem;
	--gp-header-bottom: 0rem;                       /* marge basse du header sur la photo */
	--gp-header-scrolled-pad: 1rem;                 /* 16 : marges haut/bas du header au défilement */
	--gp-header-duration: .5s;                      /* passage transparent → fond clair */
	--gp-header-shade: rgb(0 0 0 / .2);             /* voile en haut de la photo (lisibilité du logo) */
	--gp-header-shade-height: 9rem;                 /* hauteur du voile */
	--gp-logo-header: 7.5rem;    /* 120 : largeur du logo du header */
	--gp-button-size: 2.75rem;   /* 44 : flèches galerie */
	--gp-gap-gallery: .5625rem;  /* 9 : entre les photos de la galerie */
	--gp-gap-card: clamp(1rem, .7rem + 1.3vw, 2rem); /* 16 → 32 : entre deux biens de la grille Signature */
	--gp-lightbox-button: clamp(3rem, 2.5rem + 2vw, 4.5rem); /* flèches et croix du plein écran */
	--gp-transition: .25s ease;
	--gp-fade-duration: .4s;    /* fondu entre les photos du plein écran */

	/* Animations (sobres : opacité + léger mouvement, jamais de rebond) */
	--gp-ease: cubic-bezier(.16, 1, .3, 1);       /* départ franc, arrivée très douce */
	--gp-hero-zoom: 1.05;                          /* photo / vidéo du hero : dézoom d'entrée */
	--gp-hero-zoom-duration: 2.8s;
	--gp-hero-slide-fade: 2s;                      /* diaporama du hero : fondu entre deux photos (durée d'affichage : premium.js, 6 s) */
	--gp-hero-text-duration: 1.6s;
	--gp-reveal-distance: 2rem;                    /* montée des blocs au défilement */
	/* Durée des apparitions = portion du défilement : « cover 45% » = jusqu'à ce que le bloc ait parcouru 45 % de l'écran */
	--gp-reveal-range: entry 0% cover 45%;         /* textes */
	--gp-reveal-range-media: entry 0% cover 40%;   /* photos : fondu */
	--gp-reveal-range-zoom: entry 0% cover 85%;    /* photos : dézoom, très lent */
	--gp-reveal-zoom: 1.08;                        /* photos des blocs : léger dézoom en apparaissant */
	--gp-hover-zoom: 1.03;                         /* vignettes de la galerie au survol */
	--gp-hover-duration: 1.2s;
}


/* ───────────────────────────────────────────────
   BASE
   ─────────────────────────────────────────────── */

.gp-premium {
	position: relative; /* repère du header absolu : reste sous la barre d'admin WP (connecté) */
	margin: 0;
	background: var(--gp-color-bg);
	color: var(--gp-color-ink);
	font-family: var(--gp-font-sans);
	font-size: var(--gp-text-body);
	font-weight: var(--gp-weight-regular);
	line-height: var(--gp-leading-body);
	-webkit-font-smoothing: antialiased;
}

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

.gp-premium img,
.gp-premium svg,
.gp-premium iframe {
	display: block;
	max-width: 100%;
}

/* Imagify (WebP) entoure les images d'un <picture> : transparent pour la mise en page */
.gp-premium picture {
	display: contents;
}

/* Lightbox ouverte : la page ne défile plus */
html:has(.gp-lightbox[open]) {
	overflow: hidden;
}

.gp-premium a {
	color: inherit;
}

.gp-premium h1,
.gp-premium h2,
.gp-premium h3,
.gp-premium p,
.gp-premium ul,
.gp-premium dl,
.gp-premium dd,
.gp-premium figure {
	margin: 0;
}

.gp-premium ul {
	padding: 0;
	list-style: none;
}

.gp-premium button {
	font: inherit;
	color: inherit;
	cursor: pointer;
}

/* Aucun contour de focus (choix de design) */
.gp-premium :focus,
.gp-premium :focus-visible {
	outline: none;
}

.gp-logo {
	width: 100%;
	height: auto;
	overflow: visible; /* les lettres touchent le bas du cadre : pas de rognage à l'arrondi du pixel */
	color: currentColor;
}

.gp-title {
	font-family: var(--gp-font-serif);
	font-size: var(--gp-text-title);
	font-weight: var(--gp-weight-light);
	line-height: 1.15;
}

.gp-label {
	font-size: var(--gp-text-large);
	font-weight: var(--gp-weight-light);
	line-height: var(--gp-leading-body);
}

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

.gp-prose p + p {
	margin-top: 1em;
}

/* Texte long : « Lire plus » (disparaît à l'ouverture), suite en fondu, « Lire moins » en dessous.
   La suite enchaîne sans espace si la coupe est un simple retour à la ligne, avec 1em entre deux paragraphes */
.gp-more {
	margin-top: var(--gp-space-xs, .75em);
}

.gp-more[open] {
	margin-top: 0;
}

.gp-more--para[open] {
	margin-top: 1em;
}

.gp-more summary,
.gp-more__less {
	display: inline-block;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
	cursor: pointer;
	list-style: none;
}

.gp-more summary::-webkit-details-marker {
	display: none;
}

.gp-more summary:hover,
.gp-more__less:hover {
	text-decoration: none;
}

.gp-more[open] summary {
	display: none;
}

.gp-more__less {
	margin-top: var(--gp-space-xs, .75em);
}

.gp-more[open] .gp-more__content {
	animation: gp-more-in .6s ease-out;
}

@keyframes gp-more-in {
	from { opacity: 0; transform: translateY(.5rem); }
}

@media (prefers-reduced-motion: reduce) {
	.gp-more[open] .gp-more__content {
		animation: none;
	}
}

.gp-underline {
	text-decoration: underline;
	text-underline-offset: .15em;
}

.gp-media {
	overflow: hidden; /* cadre fixe pour le dézoom d'apparition */
}

.gp-media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.gp-button {
	display: inline-flex;
	gap: .5em;
	align-items: center;
	justify-content: center;
	padding: .75rem clamp(2rem, 4vw, 4.125rem);
	background: var(--gp-color-stone);
	text-decoration: none;
	text-transform: uppercase;
	transition: background var(--gp-transition);
}

.gp-button {
	cursor: pointer;
}

.gp-button:hover {
	background: var(--gp-color-sand);
}


/* ───────────────────────────────────────────────
   HEADER (fixe : blanc sur la photo, puis fond clair et noir au défilement)
   ─────────────────────────────────────────────── */

.gp-header {
	position: fixed;
	top: var(--wp-admin--admin-bar--height, 0px); /* sous la barre d'admin WP (connecté) */
	right: 0;
	left: 0;
	z-index: 10;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--gp-header-top) var(--gp-gutter) var(--gp-header-bottom);
	color: var(--gp-color-inverse);
	transition:
		padding var(--gp-header-duration) var(--gp-ease),
		background-color var(--gp-header-duration) var(--gp-ease),
		color var(--gp-header-duration) var(--gp-ease);
}

/* Léger voile noir en haut de la photo : logo lisible même sur une image claire */
.gp-header::before {
	content: "";
	position: absolute;
	inset: 0 0 auto;
	z-index: -1;
	height: var(--gp-header-shade-height);
	background: linear-gradient(var(--gp-header-shade), transparent);
	pointer-events: none;
	transition: opacity var(--gp-header-duration) var(--gp-ease);
}

/* Au défilement (classe posée par premium.js) */
.gp-header.is-scrolled {
	padding-block: var(--gp-header-scrolled-pad);
	background: var(--gp-color-bg);
	color: var(--gp-color-ink);
}

.gp-header.is-scrolled::before {
	opacity: 0;
}

.gp-header.is-scrolled .gp-lang ul {
	top: calc(100% + var(--gp-header-scrolled-pad)); /* collé au bas du header : un seul fond continu */
	padding-bottom: var(--gp-space-s);
	background: var(--gp-color-bg);
}

/* Barre d'admin WP en mobile : elle défile avec la page */
@media (max-width: 600px) {
	.admin-bar .gp-header {
		top: 0;
	}
}

.gp-header__logo {
	display: block;
	width: var(--gp-logo-header);
}

.gp-lang {
	position: relative;
	font-size: var(--gp-text-lang);
	font-weight: var(--gp-weight-semibold);
}

.gp-lang summary {
	display: flex;
	gap: .3rem;
	align-items: center;
	cursor: pointer;
	list-style: none;
}

.gp-lang summary::-webkit-details-marker {
	display: none;
}

.gp-lang__chevron {
	width: .3rem;
	transition: transform var(--gp-transition);
}

.gp-lang[open] .gp-lang__chevron {
	transform: rotate(180deg);
}

.gp-lang ul {
	position: absolute;
	top: 100%;
	left: calc(-1 * var(--gp-space-s));          /* langues alignées sous « FR » malgré la marge du fond */
	min-width: calc(100% + 2 * var(--gp-space-s));
	padding: var(--gp-space-xs) var(--gp-space-s);
}

.gp-lang a {
	display: block;
	padding: .15rem 0;
	text-decoration: none;
}


/* ───────────────────────────────────────────────
   HERO
   ─────────────────────────────────────────────── */

.gp-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: min(100svh, 64rem);
	padding: var(--gp-header-height) var(--gp-gutter) var(--gp-space-xl);
	background: var(--gp-color-ink);
	color: var(--gp-color-inverse);
	overflow: hidden;
}

.gp-hero > img,
.gp-hero > picture > img,
.gp-hero > video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Diaporama : photos superposées, fondu de l'une dans l'autre */
.gp-hero__slides,
.gp-hero__slide {
	position: absolute;
	inset: 0;
}

.gp-hero__slide {
	opacity: 0;
	transition: opacity var(--gp-hero-slide-fade) ease-in-out;
}

.gp-hero__slide.is-active {
	opacity: 1;
}

/* La nouvelle photo apparaît par-dessus l'ancienne, qui reste opaque dessous (pas de baisse de lumière) */
.gp-hero__slide.is-top {
	z-index: 1;
}

.gp-hero__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Lisibilité du texte blanc sur la photo */
.gp-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to top, rgb(0 0 0 / .35), transparent 45%);
	pointer-events: none;
}

.gp-hero__intro {
	position: relative;
	z-index: 1;
}

.gp-hero__title {
	font-size: var(--gp-text-display);
	font-weight: var(--gp-weight-semibold);
	line-height: var(--gp-leading-display);
	letter-spacing: var(--gp-tracking-display);
	overflow-wrap: break-word; /* alignement optique à gauche : style en ligne, cf. gp_premium_optical_offset() */
	text-wrap: balance;       /* sur 2 lignes : coupure équilibrée */
	text-box: trim-start cap; /* haut de la boîte = haut des majuscules (navigateurs récents) */
}

/* Espace sous le titre proportionnel à sa taille : laisse la place aux jambages (p, g)
   (.gp-hero en préfixe : passe devant le reset .gp-premium p) */
.gp-hero .gp-hero__address {
	margin-top: calc(var(--gp-text-display) * var(--gp-hero-gap));
	font-size: var(--gp-text-large);
	font-weight: var(--gp-weight-bold);
}


/* ───────────────────────────────────────────────
   BLOCS EN DEUX COLONNES (mobile : empilés)
   ─────────────────────────────────────────────── */

.gp-block {
	display: grid;
	margin-top: var(--gp-gap-blocks);
}

.gp-block .gp-media {
	aspect-ratio: 4 / 3;
}

/* Intro : chiffres clés + description | photo */
.gp-intro__text {
	padding: var(--gp-space-l) var(--gp-gutter);
}

/* .gp-intro en préfixe : passe devant le reset .gp-premium ul */
.gp-intro .gp-keyfacts {
	margin-bottom: var(--gp-space-l);
	font-size: var(--gp-text-large);
	font-weight: var(--gp-weight-light);
	line-height: var(--gp-leading-body);
	/* Bloc poussé contre la photo (comme la maquette), lignes alignées à gauche entre elles */
	width: fit-content;
	margin-left: auto;
	text-align: left;
}

/* Highlights : photo | liste */
.gp-highlights__text {
	display: grid;
	gap: var(--gp-space-s);
	align-content: start;
	padding: var(--gp-space-l) var(--gp-gutter);
}

.gp-highlights__list {
	font-family: var(--gp-font-serif);
	font-size: var(--gp-text-lead);
	font-weight: var(--gp-weight-light);
	line-height: 1.3;
}

/* Détails : tableau sur fond pierre | photo */
.gp-details__panel {
	padding: var(--gp-space-l) var(--gp-gutter);
	background: var(--gp-color-stone);
}

.gp-specs {
	max-width: 23.5rem;
	font-size: var(--gp-text-large);
	line-height: var(--gp-leading-specs);
}

.gp-specs__row {
	display: flex;
	gap: var(--gp-space-s);
	justify-content: space-between;
}

.gp-specs dd {
	font-weight: var(--gp-weight-light);
	text-align: right;
}

/* Documents utiles : dt | liste (shortcode [wpis-files] : .files, .files-download, .files-more, .files-zip) */
.gp-details__panel {
	display: flex;
	flex-direction: column;
	gap: var(--gp-space-l);
}

/* 2 colonnes (aussi en mobile), liste alignée à droite comme le tableau */
.gp-docs {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	gap: var(--gp-space-s);
	max-width: 23.5rem;
	font-size: var(--gp-text-large); /* même taille que le tableau au-dessus */
	line-height: var(--gp-leading-specs);
}

.gp-docs dd {
	font-weight: var(--gp-weight-light);
}

.gp-docs .files-download {
	margin: 0;
	padding: 0;
	list-style: none;
}

.gp-docs a {
	color: inherit;
	text-decoration: none;
}

.gp-docs .files-download a:hover {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}

/* Nom trop long : « … », le type (PDF…) reste visible */
.gp-docs .files-download a {
	display: flex;
	align-items: baseline;
	justify-content: flex-end;
	min-width: 0;
}

.gp-docs .files-name {
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

.gp-docs .files-type {
	flex: none;
	margin-left: .4em;
	color: var(--gp-color-muted);
	font-size: var(--gp-text-small);
}

/* « Voir plus » disparaît à l'ouverture, « Voir moins » sous la liste ; ZIP tout en bas */
.gp-docs .files-more summary,
.gp-docs .files-less,
.gp-docs .files-zip {
	display: inline-block;
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
	font: inherit;
	font-weight: var(--gp-weight-regular, 400);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
	cursor: pointer;
	list-style: none;
}

.gp-docs .files-more summary::-webkit-details-marker {
	display: none;
}

.gp-docs .files-more[open] summary {
	display: none;
}

.gp-docs .files-zip {
	margin-top: var(--gp-space-s);
}

.gp-docs .files-more summary:hover,
.gp-docs .files-less:hover,
.gp-docs .files-zip:hover {
	text-decoration: none;
}

/* Grande photo | plans */
.gp-plans__list {
	display: grid;
	gap: var(--gp-space-l); /* 32 → 60 entre deux plans */
	align-content: end;
	padding: var(--gp-space-l) var(--gp-gutter);
}

.gp-plans__plan img {
	width: 100%;
	max-width: 25rem; /* 400 */
	height: auto;
	mix-blend-mode: multiply; /* fond blanc des plans fondu dans le gris */
}

/* Adresse + quartier | carte */
.gp-location__text {
	display: flex;
	flex-direction: column;
	gap: var(--gp-space-l);
	justify-content: space-between;
	padding: var(--gp-space-m) var(--gp-gutter) var(--gp-space-l);
	background: var(--gp-color-stone);
}

.gp-location__map {
	min-height: 24rem;
	background: var(--gp-color-stone);
}

/* Carte JS : remplit la colonne */
.gp-location__map[data-gp-map] {
	height: 100%;
}

.gp-location__map iframe {
	width: 100%;
	height: 100%;
	min-height: inherit;
	border: 0;
	filter: grayscale(1) contrast(.9);
}


/* ───────────────────────────────────────────────
   GALERIE (défilement horizontal + plein écran)
   ─────────────────────────────────────────────── */

.gp-gallery {
	position: relative;
	margin-top: var(--gp-space-xl);
	padding-bottom: calc(var(--gp-button-size) + var(--gp-space-m));
}

/* .gp-gallery en préfixe : passe devant le reset .gp-premium ul */
.gp-gallery .gp-gallery__track {
	display: flex;
	gap: var(--gp-gap-gallery);
	padding-inline: var(--gp-gutter);
	scroll-padding-inline: var(--gp-gutter);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
}

.gp-gallery__track::-webkit-scrollbar {
	display: none;
}

.gp-gallery__item {
	flex: 0 0 clamp(16rem, 29.2vw, 26.25rem); /* 420 */
	scroll-snap-align: start;
}

.gp-gallery__open {
	display: block;
	width: 100%;
	padding: 0;
	overflow: hidden;
	border: 0;
	outline: 0;
	background: none;
	aspect-ratio: 4 / 3;
}

.gp-gallery__open img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	-webkit-user-drag: none; /* pas de glisser-déposer natif des photos */
	user-select: none;
	transition: transform var(--gp-hover-duration) var(--gp-ease);
}

.gp-gallery__open:hover img {
	transform: scale(var(--gp-hover-zoom));
}

.gp-gallery__nav,
.gp-gallery__fullscreen {
	position: absolute;
	display: grid;
	place-items: center;
	width: var(--gp-button-size);
	height: var(--gp-button-size);
	padding: 0;
	border: 0;
	background: var(--gp-color-bg);
	font-size: 2rem;
	font-weight: var(--gp-weight-light);
	line-height: 1;
}

.gp-gallery__nav {
	top: calc(50% - (var(--gp-button-size) + var(--gp-space-m)) / 2);
	z-index: 1;
	transform: translateY(-50%);
}

.gp-gallery__nav svg {
	width: 60%;
	height: 60%;
}

.gp-gallery__nav--prev {
	left: 0;
}

.gp-gallery__nav--next {
	right: 0;
}

.gp-gallery__nav[disabled] {
	opacity: .3;
	cursor: default;
}

.gp-gallery__fullscreen {
	right: var(--gp-gutter);
	bottom: 0;
	background: none;
}

.gp-gallery__fullscreen svg {
	width: 2.125rem;
}

/* Plein écran */
.gp-lightbox {
	width: 100vw;
	max-width: none;
	height: 100dvh;
	max-height: none;
	margin: 0;
	padding: 0;
	border: 0;
	background: var(--gp-color-ink);
	color: var(--gp-color-inverse);
}

.gp-lightbox::backdrop {
	background: var(--gp-color-ink);
}

.gp-lightbox[open] {
	display: grid;
	grid-template-columns: var(--gp-lightbox-button) 1fr var(--gp-lightbox-button);
	gap: var(--gp-space-s);
	align-items: center;
	padding: var(--gp-space-m) var(--gp-gutter);
}

.gp-lightbox__figure {
	height: calc(100dvh - 2 * var(--gp-space-m));
}

.gp-lightbox__figure {
	min-width: 0;
}

.gp-lightbox__figure > :not(.is-active) {
	display: none;
}

/* Fondu à chaque photo (<img> direct, ou <img> dans le <picture> d'Imagify) */
.gp-lightbox__figure > img.is-active,
.gp-lightbox__figure > .is-active img {
	animation: gp-fade var(--gp-fade-duration) ease both;
}

@keyframes gp-fade {
	from {
		opacity: 0;
	}
}

.gp-lightbox__figure img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.gp-lightbox__nav,
.gp-lightbox__close {
	display: grid;
	place-items: center;
	width: var(--gp-lightbox-button);
	height: var(--gp-lightbox-button);
	padding: 0;
	border: 0;
	background: none;
	color: inherit;
}

.gp-lightbox__nav svg,
.gp-lightbox__close svg {
	width: 60%;
	height: 60%;
}

.gp-lightbox__close {
	position: absolute;
	top: var(--gp-space-s);
	right: var(--gp-gutter);
	z-index: 1;
}

/* Mobile : photo bord à bord, flèches posées dessus (ombre légère pour rester lisibles sur une photo claire) */
@media (max-width: 47.99em) {
	.gp-lightbox[open] {
		gap: 0;
		padding: 0;
	}

	.gp-lightbox__figure {
		grid-row: 1;
		grid-column: 1 / -1;
		height: 100dvh;
	}

	.gp-lightbox__nav {
		position: relative;
		z-index: 1;
		grid-row: 1;
	}

	.gp-lightbox__nav--prev {
		grid-column: 1;
	}

	.gp-lightbox__nav--next {
		grid-column: 3;
	}

	.gp-lightbox__nav svg {
		filter: drop-shadow(0 0 .35rem rgb(0 0 0 / .5));
	}
}


/* ───────────────────────────────────────────────
   AGENT
   ─────────────────────────────────────────────── */

.gp-agent {
	padding: var(--gp-space-l) var(--gp-gutter);
}

.gp-agent__body {
	display: grid;
	gap: var(--gp-space-m);
	margin-top: var(--gp-space-l);
}

.gp-agent__photo {
	max-width: 24rem;
	aspect-ratio: 385 / 455;
}

.gp-agent__details {
	display: flex;
	flex-direction: column;
	gap: var(--gp-space-l);
	justify-content: space-between;
	max-width: 27rem;
}

.gp-agent__contact {
	display: grid;
	gap: var(--gp-space-m);
	justify-items: start;
}

.gp-agent__contact a:not(.gp-button, .gp-underline) {
	text-decoration: none;
}


/* ───────────────────────────────────────────────
   FOOTER
   ─────────────────────────────────────────────── */

.gp-footer {
	padding: var(--gp-space-l) var(--gp-gutter);
	background: var(--gp-color-sand);
}

.gp-footer__bottom {
	display: grid;
	gap: var(--gp-space-m);
}

/* Logo étiré sur la hauteur des coordonnées (lettres calées à gauche, proportions gardées) */
.gp-footer .gp-footer__logo {
	width: 100%;
	height: 100%;
	max-width: 48rem; /* 770 */
}

.gp-footer__contact {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	line-height: var(--gp-leading-footer);
}

.gp-footer__contact div {
	display: grid;
	grid-template-columns: 8.75rem 1fr; /* 140 */
}

.gp-footer__legal {
	max-width: 41rem;
	margin: var(--gp-space-l) auto 0;
	color: var(--gp-color-muted);
	font-size: var(--gp-text-small);
	text-align: center;
}

/* Retour vers le site principal */
.gp-footer .gp-footer__by {
	margin-bottom: var(--gp-space-xs);
	color: var(--gp-color-ink);
}

.gp-footer__by a {
	color: inherit;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}

.gp-footer__by a:hover {
	text-decoration: none;
}

.gp-footer__contact dd {
	font-weight: var(--gp-weight-light);
}

.gp-footer__contact a {
	text-decoration: none;
}


/* ───────────────────────────────────────────────
   PAGE SIGNATURE (accueil : image plein écran + grand logo, puis liste des biens)
   ─────────────────────────────────────────────── */

.gp-sr-only {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

/* Le grand logo de la page remplace celui du header… jusqu'au défilement */
.gp-premium--landing .gp-header__logo {
	transition: opacity var(--gp-header-duration) var(--gp-ease), visibility var(--gp-header-duration);
}

.gp-premium--landing .gp-header:not(.is-scrolled) .gp-header__logo {
	visibility: hidden;
	opacity: 0;
}

.gp-landing {
	position: relative;
	display: flex;
	align-items: center;
	min-height: 100svh;
	padding: var(--gp-header-height) var(--gp-gutter);
	overflow: hidden;
	background: var(--gp-color-ink);
	color: var(--gp-color-inverse);
}

.gp-landing__bg,
.gp-landing > picture > img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Lisibilité du texte blanc */
.gp-landing::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--gp-landing-overlay);
	pointer-events: none;
}

.gp-landing__intro {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: var(--gp-landing-logo);
	margin-inline: auto; /* bloc logo + textes centré : indépendant de l'image de fond */
}

.gp-landing .gp-landing__logo {
	width: 100%;
	height: auto;
	max-width: none;
}

/* Textes alignés sur le « S » de SIGNATURE (38,9 % de la largeur du logo) */
.gp-landing__texts {
	max-width: 19.125rem; /* 306 */
	margin: var(--gp-space-s) 0 0 38.9%;
}

.gp-landing .gp-landing__baseline {
	font-family: var(--gp-font-serif);
	font-size: var(--gp-text-landing);
	font-style: italic;
	line-height: 1.2;
}

.gp-landing__text {
	margin-top: var(--gp-space-l);
	font-size: var(--gp-text-landing-intro);
	font-weight: 500;
	line-height: 1.5;
}

.gp-archive {
	padding: var(--gp-space-xl) var(--gp-gutter);
	background: var(--gp-color-stone);
}

.gp-premium .gp-archive__title {
	margin-bottom: var(--gp-space-m);
	font-family: var(--gp-font-serif);
	font-size: var(--gp-text-title);
	font-weight: 300;
	line-height: 1.2;
}

/* Grille 2 colonnes serrées, grandes respirations entre les lignes */
.gp-archive .gp-archive__list {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gp-space-l) var(--gp-gap-card);
	padding: 0;
	list-style: none;
}

.gp-card__link {
	display: block;
	color: inherit;
	text-decoration: none;
}

/* Card 16:9 : la photo remplit le cadre, léger zoom au survol */
.gp-card__media {
	display: block;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--gp-color-ink);
}

.gp-card__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform var(--gp-hover-duration) var(--gp-ease);
}

.gp-card__link:hover .gp-card__media img {
	transform: scale(var(--gp-hover-zoom));
}

.gp-card__title {
	display: block;
	margin-top: var(--gp-space-s);
	font-size: .875rem;
	line-height: 1.4;
}

.gp-card__facts {
	display: flex;
	flex-wrap: wrap;
	gap: .25rem var(--gp-space-s);
	margin-top: .25rem;
	font-size: var(--gp-text-small);
	line-height: 1.15;
}

/* ───────────────────────────────────────────────
   TABLETTE (≥ 768 px)
   ─────────────────────────────────────────────── */

@media (min-width: 48em) {
	.gp-archive .gp-archive__list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.gp-footer__bottom {
		grid-template-columns: minmax(0, 1fr) auto;
		gap: var(--gp-space-xl);
		align-items: stretch;
	}

	.gp-agent__body {
		grid-template-columns: minmax(0, 24rem) minmax(0, 27rem);
		gap: var(--gp-gap-columns);
	}

	.gp-location {
		grid-template-columns: 1fr 1fr;
	}

	.gp-location__map {
		min-height: 36rem;
	}
}


/* ───────────────────────────────────────────────
   DESKTOP (≥ 1024 px) : colonnes de la maquette
   ─────────────────────────────────────────────── */

@media (min-width: 64em) {
	.gp-block {
		align-items: stretch;
	}

	.gp-block .gp-media {
		aspect-ratio: auto;
		height: 100%;
	}

	.gp-block--full {
		grid-template-columns: 1fr;
	}

	/* 708 | 62 | 670 */
	.gp-intro:not(.gp-block--full) {
		grid-template-columns: 708fr 670fr;
		gap: var(--gp-gap-columns);
	}

	.gp-intro__text {
		display: flex;
		flex-direction: column;
		padding: var(--gp-gutter) 0 0 var(--gp-gutter);
	}

	/* Description en bas de colonne : sa dernière ligne s'aligne sur le bas de la photo */
	.gp-intro__text .gp-prose {
		margin-top: auto;
	}

	.gp-intro__text .gp-prose > :last-child {
		margin-bottom: 0;
	}

	.gp-intro .gp-media {
		min-height: 43.875rem; /* 702 */
	}


	/* 709 | 733 */
	.gp-highlights:not(.gp-block--full) {
		grid-template-columns: 709fr 733fr;
	}

	.gp-highlights .gp-media {
		min-height: 33.25rem; /* 532 */
	}

	.gp-highlights__text {
		grid-template-columns: 7rem 1fr;
		gap: 0;
		padding: var(--gp-space-l) var(--gp-gutter) var(--gp-space-l) clamp(2rem, 9.3vw, 8.375rem); /* 134 */
	}

	/* 618 | 822 */
	.gp-details:not(.gp-block--full) {
		grid-template-columns: 618fr 822fr;
	}

	.gp-details__panel {
		padding: 2.8rem var(--gp-gutter);
	}

	/* Tableau en haut, documents calés au bas de la photo, même colonne à droite */
	.gp-details .gp-specs,
	.gp-details .gp-docs {
		width: 100%;
		margin-left: auto;
	}

	.gp-details .gp-docs {
		margin-top: auto;
	}

	.gp-details .gp-media {
		min-height: 38.5rem; /* 617 */
	}

	/* 936 | 45 | 459 */
	.gp-plans:not(.gp-block--full) {
		grid-template-columns: 936fr 504fr;
	}

	.gp-plans .gp-media {
		min-height: 32.9rem; /* 527 */
	}

	.gp-plans__list {
		padding: var(--gp-space-xl) 0 0 var(--gp-gap-columns);
	}

	/* 665 | 775, bloc haut (1024) */
	.gp-location {
		grid-template-columns: 665fr 775fr;
	}

	.gp-location__map {
		min-height: min(100svh, 64rem);
	}

	.gp-location__text {
		padding-right: var(--gp-gutter);
	}

	/* 430 px en 1440, grandit au-delà sans dépasser ~80 caractères par ligne */
	.gp-location__quartier {
		max-width: clamp(26.875rem, 29.86vw, var(--gp-measure));
	}

	.gp-agent__body {
		padding-left: clamp(2rem, 8.7vw, 7.8rem); /* 125 */
	}

	.gp-agent__details {
		max-width: 27rem;
	}
}


/* ───────────────────────────────────────────────
   ANIMATIONS
   Désactivées si « réduire les animations » est demandé (bloc suivant).
   Uniquement opacity + transform : aucun recalcul de mise en page.
   ─────────────────────────────────────────────── */

@media (prefers-reduced-motion: no-preference) {

	/* Hero : la photo (ou la vidéo) se pose doucement, puis le titre et l'adresse montent */
	.gp-hero > img,
	.gp-hero > picture > img,
	.gp-hero > video,
	.gp-hero__slides {
		animation: gp-settle var(--gp-hero-zoom-duration) var(--gp-ease) both;
	}

	.gp-hero__title {
		animation: gp-rise var(--gp-hero-text-duration) var(--gp-ease) .3s both;
	}

	.gp-hero__address {
		animation: gp-rise var(--gp-hero-text-duration) var(--gp-ease) .5s both;
	}

	/* Accueil Signature : même entrée que le hero d'un bien */
	.gp-landing > img,
	.gp-landing > picture > img {
		animation: gp-settle var(--gp-hero-zoom-duration) var(--gp-ease) both;
	}

	.gp-landing__title {
		animation: gp-fade-in var(--gp-hero-text-duration) var(--gp-ease) .3s both;
	}

	.gp-landing__texts {
		animation: gp-rise var(--gp-hero-text-duration) var(--gp-ease) .6s both;
	}

	/* Au défilement : chaque bloc apparaît en entrant à l'écran (géré par le navigateur, sans JS).
	   Navigateurs sans « scroll-driven animations » : contenu affiché tel quel. */
	@supports (animation-timeline: view()) {
		.gp-intro__text,
		.gp-highlights__text,
		.gp-specs,
		.gp-docs,
		.gp-plans__list,
		.gp-gallery,
		.gp-location__text > *,
		.gp-agent .gp-title,
		.gp-agent__details {
			/* (pas le footer : en bas de page, il ne défile jamais assez pour finir son apparition) */
			animation: gp-rise ease-out both;
			animation-timeline: view();
			animation-range: var(--gp-reveal-range);
		}

		.gp-block .gp-media,
		.gp-agent__photo {
			animation: gp-fade-in ease-out both;
			animation-timeline: view();
			animation-range: var(--gp-reveal-range-media);
		}

		/* Accueil : titre et cards montent (pas de zoom sur la photo : il bloquerait celui du survol) */
		.gp-archive__title,
		.gp-card {
			animation: gp-rise ease-out both;
			animation-timeline: view();
			animation-range: var(--gp-reveal-range);
		}

		.gp-block .gp-media img,
		.gp-agent__photo img {
			animation: gp-settle-soft ease-out both;
			animation-timeline: view();
			animation-range: var(--gp-reveal-range-zoom);
		}
	}
}

@keyframes gp-settle {
	from {
		transform: scale(var(--gp-hero-zoom));
	}
}

@keyframes gp-settle-soft {
	from {
		transform: scale(var(--gp-reveal-zoom));
	}
}

@keyframes gp-rise {
	from {
		opacity: 0;
		transform: translateY(var(--gp-reveal-distance));
	}
}

@keyframes gp-fade-in {
	from {
		opacity: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.gp-premium * {
		scroll-behavior: auto !important;
		transition: none !important;
		animation: none !important;
	}
}


/* ───────────────────────────────────────────────
   COOKIES (plugin GDPR Cookie Compliance) : bandeau et fenêtre « Réglages » aux couleurs Signature
   !important : le plugin injecte ses couleurs (fuchsia Grant) en CSS en ligne, avec des sélecteurs à id
   ─────────────────────────────────────────────── */

.gp-premium #moove_gdpr_cookie_info_bar,
.gp-premium #moove_gdpr_cookie_modal {
	--gp-cookie-line: rgb(0 0 0 / .15);
}

.gp-premium #moove_gdpr_cookie_info_bar *,
.gp-premium #moove_gdpr_cookie_modal * {
	font-family: var(--gp-font-sans) !important;
}

/* Bandeau */
.gp-premium #moove_gdpr_cookie_info_bar {
	background: var(--gp-color-bg) !important;
	border-top: 1px solid var(--gp-cookie-line) !important;
	box-shadow: none !important;
	color: var(--gp-color-ink) !important;
}

.gp-premium #moove_gdpr_cookie_info_bar .moove-gdpr-info-bar-container {
	padding: var(--gp-space-s) var(--gp-gutter) !important;
}

.gp-premium #moove_gdpr_cookie_info_bar .moove-gdpr-cookie-notice p {
	color: var(--gp-color-ink) !important;
	font-size: var(--gp-text-small) !important;
	font-weight: var(--gp-weight-regular) !important;
	line-height: var(--gp-leading-body) !important;
}

.gp-premium #moove_gdpr_cookie_info_bar .moove-gdpr-cookie-notice button.change-settings-button {
	color: inherit !important;
	text-decoration: underline !important;
	text-underline-offset: .2em;
}

/* Boutons : Accepter et Refuser à égalité (style .gp-button), Réglages en lien souligné */
.gp-premium #moove_gdpr_cookie_info_bar button.mgbutton,
.gp-premium #moove_gdpr_cookie_modal button.mgbutton {
	padding: .75rem 1.5rem !important;
	border: 0 !important;
	border-radius: 0 !important;
	background: var(--gp-color-stone) !important;
	box-shadow: none !important;
	color: var(--gp-color-ink) !important;
	font-size: var(--gp-text-small) !important;
	font-weight: var(--gp-weight-regular) !important;
	letter-spacing: .04em !important;
	text-transform: uppercase !important;
	opacity: 1 !important;
	transition: background var(--gp-transition) !important;
}

.gp-premium #moove_gdpr_cookie_info_bar button.mgbutton:hover,
.gp-premium #moove_gdpr_cookie_modal button.mgbutton:hover {
	background: var(--gp-color-sand) !important;
}

.gp-premium #moove_gdpr_cookie_info_bar button.moove-gdpr-infobar-settings-btn {
	padding-inline: .5rem !important;
	background: none !important;
	text-decoration: underline !important;
	text-underline-offset: .2em;
}

.gp-premium #moove_gdpr_cookie_info_bar button.moove-gdpr-infobar-settings-btn:hover {
	background: none !important;
	text-decoration: none !important;
}

/* Fenêtre « Réglages » */
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-content {
	border-radius: 0 !important;
	background: var(--gp-color-bg) !important;
	color: var(--gp-color-ink) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-left-content {
	background: var(--gp-color-stone) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-right-content {
	background: var(--gp-color-bg) !important;
}

/* Logo « GDPR » du plugin : remplacé par rien (le site a déjà son logo) */
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-company-logo-holder {
	display: none !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-tab-main .tab-title,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-title {
	color: var(--gp-color-ink) !important;
	font-family: var(--gp-font-serif) !important;
	font-size: var(--gp-text-title) !important;
	font-weight: var(--gp-weight-light) !important;
	line-height: 1.2 !important;
}

.gp-premium #moove_gdpr_cookie_modal .tab-title *,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-title * {
	font-family: var(--gp-font-serif) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-tab-main-content,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-tab-main-content p {
	color: var(--gp-color-ink) !important;
	font-size: var(--gp-text-body) !important;
	font-weight: var(--gp-weight-light) !important;
	line-height: var(--gp-leading-body) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-tab-main-content a {
	color: inherit !important;
	text-decoration: underline !important;
}

/* Menu de gauche */
.gp-premium #moove_gdpr_cookie_modal #moove-gdpr-menu li {
	margin-bottom: 1px !important;
}

.gp-premium #moove_gdpr_cookie_modal #moove-gdpr-menu li button {
	border: 0 !important;
	border-radius: 0 !important;
	background: transparent !important;
	color: var(--gp-color-ink) !important;
	font-size: var(--gp-text-small) !important;
	letter-spacing: .04em !important;
	text-transform: uppercase !important;
}

.gp-premium #moove_gdpr_cookie_modal #moove-gdpr-menu li button span {
	color: inherit !important;
}

.gp-premium #moove_gdpr_cookie_modal #moove-gdpr-menu li button:hover,
.gp-premium #moove_gdpr_cookie_modal #moove-gdpr-menu li.menu-item-selected button {
	background: var(--gp-color-bg) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-branding-cnt,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-branding-cnt a {
	color: var(--gp-color-muted) !important;
}

/* Bouton fermer */
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-close,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-close span {
	border: 0 !important;
	outline-color: var(--gp-color-ink) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-close {
	border-radius: 0 !important;
	background: var(--gp-color-ink) !important;
	box-shadow: none !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-close span {
	border-radius: 0 !important;
	background: var(--gp-color-ink) !important;
	color: var(--gp-color-inverse) !important;
}

/* Interrupteurs activé / désactivé */
.gp-premium #moove_gdpr_cookie_modal .cookie-switch .cookie-slider {
	background: var(--gp-color-sand) !important;
	box-shadow: none !important;
}

.gp-premium #moove_gdpr_cookie_modal .cookie-switch input:checked + .cookie-slider {
	background: var(--gp-color-ink) !important;
}

.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-status-bar,
.gp-premium #moove_gdpr_cookie_modal .moove-gdpr-modal-footer-content {
	border-color: var(--gp-cookie-line) !important;
}

.gp-premium #moove_gdpr_cookie_modal .gdpr-sr-label,
.gp-premium #moove_gdpr_cookie_modal .gdpr-sr-enable,
.gp-premium #moove_gdpr_cookie_modal .gdpr-sr-disable {
	color: var(--gp-color-ink) !important;
}

.gp-premium #moove_gdpr_cookie_modal .cookie-switch input:checked + .cookie-slider .gdpr-sr-enable {
	color: var(--gp-color-inverse) !important;
}
