/* ==========================================================================
   Rêves Nomades — SOCLE
   Variables, six ambiances de couleur, typographies, boutons et liens.
   Valeurs reprises telles quelles de la maquette validée
   (reference/maquette/Main.dc.html, jeu typographique « W&W »).
   Chargé sur le site ET dans l’éditeur de blocs.
   ========================================================================== */

:root {
	/* ---------- Palette « Vintage sombre » (validée le 22/10/2026) ----------
	   Teintes du nuancier Portland Gloss Paint ; les fonds noirs restent ceux de la maquette.
	   Chaque couleur du site passe par ces variables (voir docs/couleurs.md). Les versions
	   « -rgb » servent aux transparences. */
	--c-nuit: #12100e;
	--c-nuit-rgb: 18 16 14;
	--c-nuit-2: #1e1a15; /* fonds d’attente des photos, cartes sur fond nuit */
	--c-nuit-3: #1b1814; /* talon du billet */
	--c-noir: #000; /* étiquette « Visible jusqu’au… » */
	--c-papier: #f3e5cd; /* Papier du nuancier */
	--c-papier-rgb: 243 229 205;
	--c-papier-2: #e6d6be; /* fonds d’attente des photos produits */
	--c-papier-3: #efdfc5; /* textes clairs posés sur une photo */
	--c-papier-4: #e8dac0;
	--c-papier-5: #d9c7a7;
	--c-papier-photo: #e6d6bb; /* textes secondaires posés sur une photo */
	--c-gris: #b9a788; /* textes secondaires sur fond nuit */
	--c-sable: #c88f4b; /* J.58 Light Buff */
	--c-brun: #77612d; /* J.62 Middle Stone */
	--c-tilleul: #9db486; /* J.44 Nile Green */
	--c-foret: #1f3e21; /* J.26 Deep Leaf Green */
	--c-foret-rgb: 31 62 33;
	--c-vert: #2c552c; /* J.21 Brilliant Green */
	--c-verm: #ae3b28; /* J.37 Signal Red ravivé */
	--c-verm-fond: #931f0d; /* J.37 Signal Red */
	--c-verm-vif: #c34e3a; /* accent rouge posé sur fond sombre (survols, « Entrée libre ») */
	--c-verm-texte: #f3e5cd; /* texte posé sur le vermillon */
	--c-verm-texte-rgb: 243 229 205;
	--c-carmin: #521910; /* J.47 Indian Red */
	--c-carmin-rgb: 82 25 16;
	--c-carmin-2: #3f1a01; /* J.11 Middle Brown */
	--c-ete: #d9a660; /* J.61 Light Stone */
	--c-soleil: #f1d896; /* J.52 Pale Cream */
	--c-blanc: #fdf6e9;
	--c-ok: #3b6129; /* J.18 Grass Green */
	--c-bas: #783b0c; /* J.14 Golden Brown */

	/* Ambiances (une par section) : fond, texte, texte secondaire, surtitre, bouton, filets.
	   Tilleul et Papier sont en version sombre : vert profond (J.26) et olive (J.62 assombri). */
	--a-nuit-bg: var(--c-nuit);
	--a-nuit-fg: var(--c-papier);
	--a-nuit-fg2: var(--c-gris);
	--a-nuit-kick: var(--c-sable);
	--a-nuit-btn: var(--c-verm);
	--a-nuit-btn-fg: var(--c-blanc);
	--a-nuit-line: rgb(var(--c-papier-rgb) / .16);
	--a-tilleul-bg: #1f3e21;
	--a-tilleul-fg: #9db486;
	--a-tilleul-fg2: var(--c-papier);
	--a-tilleul-kick: #9db486;
	--a-tilleul-btn: #9db486;
	--a-tilleul-btn-fg: #081f14;
	--a-tilleul-line: rgb(157 180 134 / .3);
	--a-vermillon-bg: var(--c-verm-fond);
	--a-vermillon-fg: var(--c-verm-texte);
	--a-vermillon-fg2: var(--c-verm-texte);
	--a-vermillon-kick: var(--c-verm-texte);
	--a-vermillon-btn: var(--c-carmin);
	--a-vermillon-btn-fg: var(--c-blanc);
	--a-vermillon-line: rgb(var(--c-verm-texte-rgb) / .3);
	--a-papier-bg: #3a3221;
	--a-papier-fg: #9db486;
	--a-papier-fg2: var(--c-papier);
	--a-papier-kick: #9db486;
	--a-papier-btn: #9db486;
	--a-papier-btn-fg: #081f14;
	--a-papier-line: rgb(var(--c-papier-rgb) / .18);
	--a-ete-bg: var(--c-ete);
	--a-ete-fg: var(--c-carmin);
	--a-ete-fg2: var(--c-carmin-2);
	--a-ete-kick: var(--c-carmin);
	--a-ete-btn: var(--c-carmin);
	--a-ete-btn-fg: var(--c-blanc);
	--a-ete-line: rgb(var(--c-carmin-rgb) / .25);
	--a-soleil-bg: var(--c-soleil);
	--a-soleil-fg: var(--c-carmin);
	--a-soleil-fg2: var(--c-carmin-2);
	--a-soleil-kick: var(--c-carmin);
	--a-soleil-btn: var(--c-carmin);
	--a-soleil-btn-fg: var(--c-blanc);
	--a-soleil-line: rgb(var(--c-carmin-rgb) / .25);

	--verm: var(--c-verm);
	--verm-fond: var(--c-verm-fond);
	/* Titres : Barlow Condensed (équivalent libre du DIN Condensed). */
	--f-title: "Barlow Condensed", "Arial Narrow", sans-serif;
	--t-style: normal;
	--t-weight: 700;
	--t-case: uppercase;
	--t-track: .01em;
	/* Sous-titres : Barlow Condensed semi-gras. */
	--f-sub: "Barlow Condensed", "Arial Narrow", sans-serif;
	--s-style: normal;
	--s-weight: 600;
	--s-track: .05em;
	/* Textes et libellés : Hack (la police de Wheels and Waves). */
	--f-text: "Hack", ui-monospace, menlo, monospace;
	--f-label: "Hack", ui-monospace, menlo, monospace;
	--l-weight: 700;
	--l-track: .05em;
	/* Couleur des repères d’administration (comme dans la maquette). */
	--rn-repere: #e0a458;
	/* Les couleurs du site sont les mêmes pour tous : le navigateur ne doit pas les
	   transformer (mode sombre automatique de Chrome, qui rendait par exemple les trois
	   traits du menu marron et certains textes roses). */
	color-scheme: only light;
}

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

html {
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

body {
	margin: 0;
	background: var(--c-nuit);
	color: var(--c-papier);
	font-family: var(--f-text);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

a {
	color: inherit;
}

/* Enveloppe de toute la page (équivalent de « .rn » dans la maquette). */
.rn {
	overflow-x: hidden;
	overflow-x: clip;
}

/* ---------- Ambiances de couleur (une par section) ---------- */
.amb {
	background: var(--bg);
	color: var(--fg);
}

.amb-nuit {
	--bg: var(--a-nuit-bg);
	--fg: var(--a-nuit-fg);
	--fg2: var(--a-nuit-fg2);
	--kick: var(--a-nuit-kick);
	--btn-bg: var(--a-nuit-btn);
	--btn-fg: var(--a-nuit-btn-fg);
	--line: var(--a-nuit-line);
}

.amb-tilleul {
	--bg: var(--a-tilleul-bg);
	--fg: var(--a-tilleul-fg);
	--fg2: var(--a-tilleul-fg2);
	--kick: var(--a-tilleul-kick);
	--btn-bg: var(--a-tilleul-btn);
	--btn-fg: var(--a-tilleul-btn-fg);
	--line: var(--a-tilleul-line);
}

.amb-vermillon {
	--bg: var(--a-vermillon-bg);
	--fg: var(--a-vermillon-fg);
	--fg2: var(--a-vermillon-fg2);
	--kick: var(--a-vermillon-kick);
	--btn-bg: var(--a-vermillon-btn);
	--btn-fg: var(--a-vermillon-btn-fg);
	--line: var(--a-vermillon-line);
}

.amb-papier {
	--bg: var(--a-papier-bg);
	--fg: var(--a-papier-fg);
	--fg2: var(--a-papier-fg2);
	--kick: var(--a-papier-kick);
	--btn-bg: var(--a-papier-btn);
	--btn-fg: var(--a-papier-btn-fg);
	--line: var(--a-papier-line);
}

.amb-ete {
	--bg: var(--a-ete-bg);
	--fg: var(--a-ete-fg);
	--fg2: var(--a-ete-fg2);
	--kick: var(--a-ete-kick);
	--btn-bg: var(--a-ete-btn);
	--btn-fg: var(--a-ete-btn-fg);
	--line: var(--a-ete-line);
}

.amb-soleil {
	--bg: var(--a-soleil-bg);
	--fg: var(--a-soleil-fg);
	--fg2: var(--a-soleil-fg2);
	--kick: var(--a-soleil-kick);
	--btn-bg: var(--a-soleil-btn);
	--btn-fg: var(--a-soleil-btn-fg);
	--line: var(--a-soleil-line);
}

/* Sections posées sur une photo : le texte reste clair, la couleur choisie colore boutons et accents. */
.hero.amb:not(.amb-nuit),
.film.amb:not(.amb-nuit),
.adh.amb:not(.amb-nuit),
.soon-sec.amb:not(.amb-nuit) {
	--fg: var(--c-papier);
	--fg2: var(--c-papier-photo);
	--kick: var(--c-papier);
	--line: rgb(var(--c-papier-rgb) / .22);
}

/* ---------- Typographie ---------- */
.mono {
	font-family: var(--f-label);
	letter-spacing: var(--l-track);
	text-transform: uppercase;
	font-size: 11px;
	font-weight: var(--l-weight);
}

.disp {
	font-family: var(--f-title);
	font-style: var(--t-style);
	font-weight: var(--t-weight);
	text-transform: var(--t-case);
	letter-spacing: var(--t-track);
	font-optical-sizing: auto;
	line-height: .9;
}

.sr,
.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;
}

.wrap {
	max-width: 1360px;
	margin: 0 auto;
	padding: 0 clamp(16px, 4vw, 56px);
}

.sec {
	position: relative;
}

/* ---------- Boutons & liens ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	min-height: 52px;
	padding: 0 28px;
	background: var(--btn-bg);
	color: var(--btn-fg);
	text-decoration: none;
	border: 0;
	cursor: pointer;
	font-family: var(--f-label);
	font-size: 12px;
	letter-spacing: .06em;
	text-transform: uppercase;
	font-weight: var(--l-weight);
	transition: transform .35s cubic-bezier(.2, .7, .2, 1), filter .3s, background .3s, color .3s;
}

.btn:hover {
	filter: brightness(1.08);
	transform: translateY(-2px);
}

.btn .arr-i {
	transition: transform .35s;
}

.btn:hover .arr-i {
	transform: translateX(4px);
}

.btn.ghost {
	background: transparent;
	color: var(--fg);
	border: 1px solid currentcolor;
}

.btn.ghost:hover {
	background: var(--fg);
	color: var(--bg);
	filter: none;
}

/* Bouton désactivé : « Complet », « Inscriptions closes », « Événement terminé » */
.btn.is-closed {
	border-style: dashed;
	cursor: not-allowed;
	opacity: .8;
}

.btn.is-closed:hover {
	transform: none;
	filter: none;
	background: transparent;
	color: var(--fg);
}

/* Tampon « Complet », « Inscriptions closes », « Terminé » posé sur la photo d’un événement */
.stamp {
	position: absolute;
	top: 18px;
	right: 18px;
	z-index: 3;
	display: inline-block;
	padding: 7px 14px 6px;
	background: var(--verm);
	color: var(--c-blanc);
	border: 3px solid var(--c-blanc);
	outline: 3px solid var(--verm);
	font-family: var(--f-title);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	font-size: clamp(20px, 2.2vw, 32px);
	line-height: 1;
	white-space: nowrap;
	transform: rotate(-6deg);
	box-shadow: 0 14px 30px -12px rgba(0, 0, 0, .6);
	pointer-events: none;
}

.lnk {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	text-decoration: none;
	color: var(--fg);
	font-family: var(--f-label);
	font-weight: var(--l-weight);
	font-size: 12px;
	letter-spacing: var(--l-track);
	text-transform: uppercase;
	padding: 10px 0;
	border-bottom: 1px solid currentcolor;
	min-height: 44px;
}

button.lnk {
	background: none;
	border-width: 0 0 1px;
	border-style: solid;
	border-color: currentcolor;
	border-radius: 0;
	cursor: pointer;
}

.lnk.soft {
	color: var(--fg2);
}

.lnk .arr-i {
	transition: transform .35s;
}

.lnk:hover .arr-i {
	transform: translateX(4px);
}

/* Focus clavier visible partout. */
.rn a:focus-visible,
.rn button:focus-visible,
.rn input:focus-visible {
	outline: 2px solid var(--kick, var(--c-sable));
	outline-offset: 3px;
}

/* ---------- Têtes de section ---------- */
.shead {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	align-items: flex-end;
	gap: 20px;
	margin-bottom: clamp(24px, 3vw, 44px);
}

.shead h2 {
	margin: 8px 0 0;
	font-size: clamp(46px, 6vw, 96px);
	line-height: .9;
}

.shead .kick {
	color: var(--kick);
}

/* ---------- Carrousels (une image toutes les 4 s, retour au début à la fin) ---------- */
.sl-wrap {
	position: relative;
}

/* Défilement horizontal seulement : un glissé vertical posé sur une image fait défiler la
   page (overflow-y explicite, sinon le navigateur rend aussi le défilé défilable en hauteur). */
.gal {
	position: relative;
	display: flex;
	gap: clamp(12px, 1.6vw, 24px);
	overflow-x: auto;
	overflow-y: hidden;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-padding: 0 clamp(16px, 4vw, 56px);
	scrollbar-width: none;
	padding: 0 clamp(16px, 4vw, 56px) 4px;
	scroll-behavior: smooth;
}

.gal::-webkit-scrollbar {
	display: none;
}

/* Écran tactile : au-dessus d’un défilé, le navigateur ne gère que le défilement vertical de la
   page ; le glissé horizontal est suivi par le script (site.js, « glisser »). */
.rn-glisse {
	touch-action: pan-y;
}

.sl-arw {
	position: absolute;
	top: 50%;
	z-index: 4;
	width: 56px;
	height: 120px;
	display: grid;
	place-items: center;
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	color: var(--c-papier);
	cursor: pointer;
	opacity: .78;
	transform: translateY(-50%);
	filter: drop-shadow(0 1px 8px rgba(0, 0, 0, .6));
	transition: opacity .35s, transform .35s cubic-bezier(.2, .7, .2, 1);
}

.sl-arw.dark {
	color: var(--fg);
	filter: none;
	top: calc(50% - 22px);
}

.sl-arw.l {
	left: clamp(0px, 1vw, 16px);
}

.sl-arw.r {
	right: clamp(0px, 1vw, 16px);
}

.sl-arw:hover {
	opacity: 1;
}

.sl-arw.l:hover {
	transform: translate(-4px, -50%);
}

.sl-arw.r:hover {
	transform: translate(4px, -50%);
}

.sl-arw.off {
	opacity: 0;
	pointer-events: none;
}

/* Grain photographique posé sur les images : une petite texture de bruit, calculée une seule
   fois par le navigateur puis répétée, en simple transparence. (L’ancien grain, recalculé et
   fondu en « incrustation » à chaque image, ralentissait le défilement.) */
.grain {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='256' height='256'%3E%3Cfilter id='g' x='0' y='0' width='1' height='1' color-interpolation-filters='sRGB'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch' result='n'/%3E%3CfeColorMatrix in='n' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 .0723 .2432 .0245 0 -.17' result='c'/%3E%3CfeColorMatrix in='n' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -.0723 -.2432 -.0245 0 .17' result='f'/%3E%3CfeMerge%3E%3CfeMergeNode in='c'/%3E%3CfeMergeNode in='f'/%3E%3C/feMerge%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E") 0 0 / 256px 256px repeat;
	pointer-events: none;
	z-index: 0;
}

.scrim {
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(180deg, rgb(var(--c-nuit-rgb) / .6) 0%, rgb(var(--c-nuit-rgb) / .08) 30%, rgb(var(--c-nuit-rgb) / .18) 62%, rgb(var(--c-nuit-rgb) / .9) 100%);
}

@keyframes kb {
	from {
		transform: scale(1.03) translate(0, 0);
	}

	to {
		transform: scale(1.14) translate(-2%, -1.5%);
	}
}

@keyframes rise {
	from {
		opacity: 0;
		transform: translateY(26px);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

.rise {
	animation: rise 1.1s cubic-bezier(.2, .7, .2, 1) both;
}

.d1 {
	animation-delay: .08s;
}

.d2 {
	animation-delay: .2s;
}

.d3 {
	animation-delay: .34s;
}

.d4 {
	animation-delay: .48s;
}

/* Animation en boucle d’un élément hors de l’écran : en pause (le script le repère). */
.rn-pause,
.rn-pause::before,
.rn-pause::after {
	animation-play-state: paused !important;
}

/* ---------- Apparition au défilement : montée lente (le script la déclenche) ---------- */
[data-rv="wait"] {
	opacity: 0;
}

@media (max-width: 640px) {
	.sl-arw {
		width: 44px;
		height: 96px;
	}

	.sl-arw svg {
		width: 13px;
		height: 30px;
	}
}

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