/**
 * Page Camp'n'Ride - ce qui n'appartient qu'à elle.
 *
 * Le design system (socle.css) et ce que les pages de rubrique partagent
 * (pages.css) sont chargés avant : la galerie, les repères, les vignettes
 * d'événement, la F.A.Q. et la bande photo viennent de là. On trouve ici la
 * carte du prochain départ, la journée type, les deux colonnes du compris /
 * pas compris, et les trois régions.
 */

/* ---------- hero : le prochain départ à droite ---------- */
.exo2-camp .exo2-hhero-grid { grid-template-columns: minmax(0, 1fr) 380px; align-items: end; }
.exo2-camp-prochain { padding: 26px 28px 28px; }
.exo2-camp-prochain .exo2-h4 { margin: 6px 0 4px; }
.exo2-camp-prochain-date { font-size: 15px; color: var(--exo2-texte); }

.exo2-camp-prochain-meta { display: flex; flex-wrap: wrap; gap: 6px 8px; margin-top: 12px; }
.exo2-camp-prochain-meta span {
	font: 600 11px/1 var(--exo2-police); letter-spacing: .8px; text-transform: uppercase;
	color: var(--exo2-meta); padding: 6px 9px; box-shadow: var(--exo2-liseret);
}

/* Le prix : ce qui manquait le plus à la page d'avant. */
.exo2-camp-prix { margin: 20px 0 0; padding-top: 18px; border-top: 1px solid var(--exo2-ligne); }
.exo2-camp-prix b { display: block; font: italic 700 42px/1 var(--exo2-police-titre); color: #fff; letter-spacing: 1px; }
.exo2-camp-prix span { display: block; margin-top: 6px; font-size: 13px; color: var(--exo2-meta); }

.exo2-camp-etat { margin-top: 12px; font: 600 12px var(--exo2-police); letter-spacing: .6px; text-transform: uppercase; color: var(--exo2-meta); }
.exo2 .exo2-camp-etat.exo2-ev-ok { color: var(--exo2-corail); }

.exo2 .exo2-camp-prochain .exo2-btn { width: 100%; margin-top: 14px; }
.exo2-camp-prochain-note { margin: 16px 0 0; font-size: 12.5px; line-height: 1.6; color: var(--exo2-meta); }

/* Deux dates seulement pour l'instant : centrées, elles ne laissent pas la
   moitié droite de la section vide. Une troisième remplira la ligne. */
.exo2-camp .exo2-events { justify-content: center; }

/* ---------- le concept ---------- */
.exo2-camp-benefices { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.exo2-camp-benefice p { margin: 10px 0 0; color: var(--exo2-meta); font-size: 15px; line-height: 1.6; }

/*
 * La journée type.
 *
 * Une liste d'heures, pas des cartes : le lecteur suit une journée du café au
 * camp jusqu'à l'apéro entre les vans, et un trait vertical fait le fil.
 */
.exo2-camp-journee { display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.exo2 .exo2-camp-journee li {
	display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 0 30px;
	padding: 22px 0 22px 0; border-top: 1px solid var(--exo2-ligne); position: relative;
}
.exo2 .exo2-camp-journee li:last-child { border-bottom: 1px solid var(--exo2-ligne); }
.exo2-camp-heure {
	font: italic 700 19px var(--exo2-police-titre); color: var(--exo2-corail);
	letter-spacing: .6px; padding-top: 2px;
}
.exo2-camp-journee h3 { margin: 0; }
.exo2-camp-journee p { margin: 8px 0 0; color: var(--exo2-meta); font-size: 15px; line-height: 1.6; max-width: 760px; }

/* ---------- compris, pas compris ---------- */
.exo2-camp-compris { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; }
.exo2-camp-compris > div { padding: 26px 28px 28px; }
.exo2-camp-compris .exo2-h4 { margin: 0 0 18px; }
.exo2 .exo2-camp-compris .exo2-list { display: grid; gap: 12px; }
.exo2 .exo2-camp-compris .exo2-list li { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.55; }
.exo2 .exo2-camp-compris .exo2-coche,
.exo2 .exo2-camp-compris .exo2-croix { width: 17px; height: 17px; flex: none; margin-top: 3px; }
.exo2 .exo2-camp-compris .exo2-coche { color: var(--exo2-corail); }
/* Ce qui reste à la charge du client se dit sans dramatiser : gris, pas rouge. */
.exo2 .exo2-camp-compris .exo2-croix { color: var(--exo2-meta); }
.exo2-camp-charge li span { color: var(--exo2-meta); }

/* « Pas de van ? », en bandeau sous les deux colonnes. */
.exo2-camp-sansvan {
	display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap;
	margin-top: 24px; padding: 22px 26px; background: rgba(255, 255, 255, .04); box-shadow: var(--exo2-liseret);
}
.exo2-camp-sansvan b { display: block; color: #fff; font: 700 17px var(--exo2-police-titre); text-transform: uppercase; letter-spacing: .3px; }
.exo2-camp-sansvan p { margin: 6px 0 0; color: var(--exo2-meta); font-size: 15px; line-height: 1.55; max-width: 700px; }

/* ---------- les régions ---------- */
.exo2-camp-regions { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 22px; }
.exo2-camp-region { padding: 0; display: flex; flex-direction: column; overflow: hidden; }
.exo2-camp-region > figure { margin: 0; position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: #1a1a1a; }
.exo2-camp-region > figure img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .5s; }
.exo2-camp-region:hover > figure img { transform: scale(1.04); }
.exo2-camp-region > figure .exo2-badge { position: absolute; left: 12px; top: 12px; }
.exo2-camp-region-corps { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.exo2-camp-region-corps p { color: var(--exo2-meta); font-size: 14.5px; line-height: 1.55; margin: 9px 0 0; }
.exo2-camp-region-pied {
	display: flex; align-items: baseline; justify-content: space-between; gap: 12px;
	margin-top: auto; padding-top: 16px; border-top: 1px solid var(--exo2-ligne);
}
.exo2-camp-region-pied span { font-size: 13px; color: var(--exo2-meta); text-transform: capitalize; }
.exo2-camp-region-pied b { font: italic 700 19px var(--exo2-police-titre); color: #fff; letter-spacing: .6px; }
.exo2-camp-regions-note { margin-top: 22px; }

/* =======================================================================
   Le formulaire de privatisation, habillé au design system
   =======================================================================
   Leur balisage appartient au composant - conteneur .convertforms, champs
   .cf-input : on remplace leur apparence, pas leur structure. Sans cela, des
   champs blancs se posaient sur le fond sombre du tiroir.
   Repris de entreprises.css, qui a résolu le même problème avant. */
.exo2-camp-tiroir .convertforms { margin: 0; }
.exo2-camp-tiroir .convertforms .cf-label,
.exo2-camp-tiroir .convertforms .cf-control-label {
	font: 600 11px var(--exo2-police); letter-spacing: 1px; text-transform: uppercase;
	color: var(--exo2-meta); margin-bottom: 7px; display: block;
}
.exo2-camp-tiroir .convertforms .cf-required-label { color: var(--exo2-corail); }
.exo2-camp-tiroir .convertforms .cf-control-group { margin-bottom: 16px; }

.exo2-camp-tiroir .convertforms .cf-input,
.exo2-camp-tiroir .convertforms input[type="text"],
.exo2-camp-tiroir .convertforms input[type="email"],
.exo2-camp-tiroir .convertforms input[type="tel"],
.exo2-camp-tiroir .convertforms select,
.exo2-camp-tiroir .convertforms textarea {
	width: 100%; height: 44px; padding: 0 14px; border-radius: 0; box-shadow: none;
	background: #0d0d0d; color: #fff; border: 1px solid rgba(255, 255, 255, .22);
	font: 15px var(--exo2-police);
}
.exo2-camp-tiroir .convertforms textarea { height: auto; min-height: 110px; padding: 12px 14px; line-height: 1.5; }
.exo2-camp-tiroir .convertforms select {
	appearance: none;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23f56d52' stroke-width='2'><path d='M5 8l5 5 5-5'/></svg>");
	background-repeat: no-repeat; background-position: right 12px center; background-size: 16px;
}
.exo2-camp-tiroir .convertforms .cf-input::placeholder,
.exo2-camp-tiroir .convertforms textarea::placeholder { color: rgba(255, 255, 255, .35); }
.exo2-camp-tiroir .convertforms .cf-input:focus,
.exo2-camp-tiroir .convertforms .cf-input:focus-visible {
	outline: 2px solid var(--exo2-corail); outline-offset: 2px;
	border-color: rgba(255, 255, 255, .35); background: #0d0d0d; color: #fff;
}

/* Le bouton reprend celui du site : sans arrondi, en Josefin italique. */
.exo2-camp-tiroir .convertforms button[type="submit"],
.exo2-camp-tiroir .convertforms input[type="submit"],
.exo2-camp-tiroir .convertforms .cf-submit {
	background: var(--exo2-accent) var(--exo2-degrade); color: #fff;
	border: 0; border-radius: 0; box-shadow: var(--exo2-ombre);
	font: italic 700 13px/44px var(--exo2-police-titre); letter-spacing: 2px; text-transform: uppercase;
	padding: 0 34px 2px; cursor: pointer; width: 100%; height: auto;
}
.exo2-camp-tiroir .convertforms button[type="submit"]:hover,
.exo2-camp-tiroir .convertforms input[type="submit"]:hover { background-image: var(--exo2-degrade-survol); }

/* Conditions générales, mention reCAPTCHA et intertitre : discrets. */
.exo2-camp-tiroir .convertforms .cf-terms-text,
.exo2-camp-tiroir .convertforms .cf-terms-text p,
.exo2-camp-tiroir .convertforms .cf-recaptcha-terms,
.exo2-camp-tiroir .convertforms .grecaptcha-terms { font-size: 12.5px; line-height: 1.5; color: rgba(255, 255, 255, .45); }
.exo2 .exo2-camp-tiroir .convertforms a { color: var(--exo2-corail); }
.exo2-camp-tiroir .convertforms .cf-heading,
.exo2-camp-tiroir .convertforms h3, .exo2-camp-tiroir .convertforms h4 {
	color: #fff; font: 700 17px var(--exo2-police-titre); text-transform: uppercase;
	letter-spacing: .3px; margin: 10px 0 2px;
}
.exo2-camp-tiroir .convertforms .cf-response { color: var(--exo2-texte); }

/* =======================================================================
   Tablette
   ======================================================================= */
@media (max-width: 1200px) {
	.exo2-camp .exo2-hhero-grid { grid-template-columns: minmax(0, 1fr) 340px; gap: 34px; }
	.exo2-camp-benefices { grid-template-columns: minmax(0, 1fr); }
	.exo2-camp-regions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1024px) {
	.exo2-camp-compris { grid-template-columns: minmax(0, 1fr); }
}

/* =======================================================================
   Smartphone
   ======================================================================= */
@media (max-width: 960px) {
	.exo2-camp .exo2-hhero-grid { display: block; padding-top: 96px; padding-bottom: 36px; }
	.exo2-camp-prochain { margin-top: 28px; padding: 22px 20px 24px; }
	.exo2-camp-prix b { font-size: 36px; }
	.exo2-camp-regions { grid-template-columns: minmax(0, 1fr); }
	.exo2-camp-sansvan { display: block; }
	.exo2-camp-sansvan .exo2-btn { margin-top: 16px; width: 100%; }
	/* L'heure passe au-dessus de son moment : deux colonnes sur 340 px
	   laisseraient au texte moins de place qu'à la marge. */
	.exo2 .exo2-camp-journee li { grid-template-columns: minmax(0, 1fr); gap: 6px; padding: 18px 0; }
	.exo2-camp-compris > div { padding: 22px 20px 24px; }
}
