/* Bloc « Besoin d'un conseil » — Metaconcept Core.
   Tous les jetons viennent du socle. Aucune couleur écrite en dur. */

.mc-devis {
	--mc-devis-filet: var(--mc-filet, rgba(77, 77, 77, 0.16));
}

.mc-devis__grille {
	display: grid;
	/* UN TIERS À GAUCHE, DEUX TIERS À DROITE.
	   -----------------------------------------------------------------
	   Deux moitiés égales d'abord, puisque c'était la maquette. Mais une
	   fois les champs rangés deux par deux, une demi-largeur ne leur
	   suffisait plus : « Nom et prénom » et « Société » côte à côte dans
	   240 px tiennent, sans plus. Le texte de gauche, lui, est court — il
	   n'avait pas besoin de la moitié de la page.

	   Le formulaire prend donc les deux tiers. Il y gagne environ 180 px,
	   de quoi que ses deux colonnes respirent, et la colonne de gauche
	   reste au-dessus de 56 caractères par ligne, ce qui est confortable
	   à lire. Décision du 01/10.

	   minmax(0, …) et non 1fr/2fr seuls : le plancher automatique d'une
	   piste de grille est min-content, et un mot long du formulaire
	   élargirait sa colonne au détriment de l'autre. Le rapport reste
	   celui qu'on a écrit. */
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
	gap: 56px;
	align-items: start;
}

/* ------------------------------------------------------------------
   1. Colonne de gauche
   ------------------------------------------------------------------ */

.mc-devis__kicker {
	margin: 0 0 10px;
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--mc-or, #D5AE05);
}

.mc-devis__titre {
	margin: 0 0 14px;
}

.mc-devis__accroche {
	margin: 0 0 28px;
	max-width: 56ch;
}

/* ------------------------------------------------------------------
   2. La carte d'équipe
   ------------------------------------------------------------------ */

.mc-devis__equipe {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 28px;
	padding: 20px 16px;
	border: 1px solid var(--mc-devis-filet);
	border-radius: var(--mc-rayon-carte, 12px);
	background: #fff;
}

.mc-devis__equipe-liste {
	flex: 1 1 260px;
	min-width: 0;
}

/* La grille de [mc_equipe] se resserre ici : des visages côte à côte dans
   une colonne étroite, pas trois cartes de page d'équipe.

   LES VISAGES RESTENT CÔTE À CÔTE. J'avais basculé la liste en vertical
   parce que la colonne, passée à un tiers, ne laissait plus que 87 px par
   personne et coupait « Nathalie Dolso » en deux. C'était une décision de
   mise en page, pas une correction : elle n'était pas à moi, et elle a
   été refusée le 01/10.

   La contrainte reste entière : trois noms doivent tenir sur une ligne
   dans environ 340 px. On la résout en reprenant la place là où elle ne
   sert à rien — le rembourrage de la carte, l'écart entre les colonnes,
   la taille de la photo — et non en changeant la disposition. Mesuré :
   309 px utiles, trois pistes de 96 px, le plus long nom en occupe 88. */
.mc-devis__equipe-liste .mc-equipe {
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}

.mc-devis__equipe-liste .mc-equipe__personne {
	gap: 6px;
}

.mc-devis__equipe-liste .mc-equipe__photo {
	width: 52px;
	height: 52px;
}

.mc-devis__equipe-liste .mc-equipe__nom {
	font-size: 0.6875rem;
	line-height: 1.25;
}

.mc-devis__equipe-liste .mc-equipe__role {
	font-size: 0.625rem;
	line-height: 1.25;
}

.mc-devis__equipe-mot {
	flex: 1 1 200px;
	min-width: 0;
	padding-left: 28px;
	border-left: 1px solid var(--mc-devis-filet);
	font-size: 0.875rem;
	line-height: 1.5;
}

/* ------------------------------------------------------------------
   3. Les gages
   ------------------------------------------------------------------ */

.mc-devis__gages {
	margin: 24px 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 10px;
}

.mc-devis__gage {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	font-size: 0.9375rem;
}

/* La coche est dessinée en CSS : pas d'image à charger, et elle suit la
   couleur d'action sans qu'on ait à produire deux fichiers. */
.mc-devis__gage::before {
	content: "";
	flex: 0 0 18px;
	width: 18px;
	height: 18px;
	margin-top: 3px;
	border-radius: 50%;
	background: var(--mc-action, #D87A00)
		url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")
		no-repeat center;
}

/* ------------------------------------------------------------------
   4. La carte formulaire
   ------------------------------------------------------------------ */

.mc-devis__carte {
	padding: 24px;
	border: 1px solid var(--mc-devis-filet);
	border-radius: var(--mc-rayon-carte, 12px);
	background: #fff;
	box-shadow: 0 12px 32px rgba(0, 0, 0, 0.05);
}

.mc-devis__carte-titre {
	margin: 0 0 6px;
}

.mc-devis__carte-sous {
	margin: 0 0 16px;
	font-size: 0.9375rem;
	color: #6B6B6B;
}

/* Le formulaire est celui de Contact Form 7 : on habille ses champs
   sans présumer de sa structure, qui change d'un formulaire à l'autre. */

/* ------------------------------------------------------------------
   DEUX CHAMPS PAR LIGNE — LA HAUTEUR DU FORMULAIRE
   ------------------------------------------------------------------

   LE CONSTAT. Huit champs empilés, le formulaire dépassait la colonne de
   gauche de près de 400 px : la carte descendait seule dans le vide
   pendant que le texte s'arrêtait au tiers. Relevé le 01/10 sur la gamme.

   LA RÈGLE. Contact Form 7 enveloppe chaque champ dans un <p>. Au-delà de
   820 px de large, ces <p> se rangent deux par deux. Reprennent toute la
   largeur : la zone de message, le bouton, les cases à cocher (une
   acceptation RGPD coupée en deux serait illisible), le retour d'erreur,
   et tout enfant qui n'est pas un <p> — on ne sait pas ce que c'est, donc
   on ne le coupe pas.

   POURQUOI :has() ET PAS UNE CLASSE. Ajouter une classe demanderait de
   modifier chaque formulaire dans l'administration de CF7 — donc de s'en
   souvenir au prochain formulaire créé. La règle lit la structure réelle
   et vaut pour tous, y compris ceux qui n'existent pas encore. :has() est
   accepté par tous les navigateurs depuis fin 2023 ; là où il ne l'est
   pas, la grille ne s'applique pas et le formulaire reste en une colonne,
   comme avant. Rien ne casse. */

/* ------------------------------------------------------------------
   LA MISE EN COLONNES APPARTIENT AU FORMULAIRE, PAS À LA FEUILLE DE STYLE
   ------------------------------------------------------------------

   PREMIÈRE VERSION, ABANDONNÉE. La feuille mettait d'office les champs
   deux par deux et devinait lesquels devaient rester pleine largeur. Ça
   ne pouvait pas marcher, et la capture du 01/10 montre pourquoi : dans
   le formulaire réel, un commentaire HTML mal fermé produisait un <p>
   vide qui occupait la première cellule et poussait « Nom et prénom » à
   droite ; le code postal, enveloppé dans un [group] de champs
   conditionnels, sortait en <div> et non en <p> et prenait donc toute la
   largeur ; et des champs cachés, enfants directs du <form>, mangeaient
   des rangées entières.

   Aucune règle CSS ne peut savoir que « Nom » va avec « Société » et pas
   avec « Pays ». Celui qui le sait, c'est celui qui écrit le formulaire.

   LE CONTRAT. Dans Contact Form 7, on enveloppe les champs à apparier :

       <div class="mc-duo">
       <p><label>[text* nom placeholder "Nom et prénom*"]</label></p>
       <p><label>[text* societe placeholder "Société*"]</label></p>
       </div>

   Chaque enfant direct de .mc-duo occupe une colonne — un <p>, un
   [group] conditionnel, n'importe quoi. .mc-trio existe pour trois.
   Hors de ces enveloppes, rien ne change : un champ par ligne.

   Sous 820 px, les paires se défont : un champ à moitié large sur un
   téléphone ne se remplit pas. */

.mc-devis__form .mc-duo,
.mc-devis__form .mc-trio {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	column-gap: 14px;
	/* Les champs d'une même rangée s'alignent par le bas : si l'un porte
	   une étiquette et l'autre pas, ce sont les cadres de saisie qui se
	   répondent, pas le haut des blocs. */
	align-items: end;
}

@media (min-width: 820px) {
	.mc-devis__form .mc-duo {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.mc-devis__form .mc-trio {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

/* Un [group] de champs conditionnels place un <div> autour du champ :
   sans cette remise à zéro, il ajoute sa propre marge sous la rangée. */
.mc-devis__form .mc-duo > *,
.mc-devis__form .mc-trio > * {
	margin-bottom: 0;
}

.mc-devis__form .mc-duo > * > p:last-child,
.mc-devis__form .mc-trio > * > p:last-child {
	margin-bottom: 0;
}

.mc-devis__form .mc-duo,
.mc-devis__form .mc-trio {
	margin-bottom: 10px;
}

/* Un paragraphe sans champ — ce que produit un commentaire HTML laissé
   dans le formulaire — ne doit pas creuser un trou dans la carte. */
.mc-devis__form form > p:empty {
	display: none;
}

/* LE DÉCALAGE DE 16 PX ENTRE DEUX CHAMPS D'UNE MÊME RANGÉE.
   -------------------------------------------------------------------
   Divi pose, à la racine de sa feuille, deux règles de rythme
   typographique :

       p               { padding-bottom: 1em }
       p:last-of-type  { padding-bottom: 0 }

   Dans une colonne de texte c'est juste : chaque paragraphe respire,
   sauf le dernier. Dans une paire de champs, c'est un piège — le
   PREMIER <p> de la paire hérite du 1em, le SECOND est « dernier de son
   type » et n'a rien. Deux champs au balisage rigoureusement identique
   se retrouvaient décalés de 16 px, le gauche plus haut que le droit.
   Relevé le 01/10, mesuré : 60 px contre 44.

   Un champ de formulaire n'est pas un paragraphe de texte : son rythme
   vient de sa marge, pas d'un rembourrage. On remet donc le rembourrage
   à zéro pour tout le formulaire, et la marge ci-dessous porte seule
   l'écartement. Deux classes dans le sélecteur suffisent à passer
   devant la règle de Divi : aucun !important. */
.mc-devis__form p {
	margin: 0 0 10px;
	padding-bottom: 0;
}

/* LE SEUL !important DE CE FICHIER, ET IL EST SUBI.
   -------------------------------------------------------------------
   Le CSS du personnalisateur de thème contient, parmi ses 331 règles :

       p.mt-form-postalcode { padding-bottom: 1em !important }

   Écrite pour un autre formulaire, à une autre époque. Elle vise la
   classe que le [group pays] pose sur le code postal, et un !important
   ne se contourne pas par la spécificité : il faut lui répondre sur le
   même registre, ou supprimer la règle.

   LA VRAIE RÉPARATION EST LA SUPPRESSION, dans Apparence > Personnaliser
   > CSS additionnel. Cette ligne-ci n'est qu'un cautère, limitée au
   formulaire du bloc devis pour ne rien casser ailleurs ; elle pourra
   partir le jour où la règle d'origine aura disparu. */
.mc-devis__form p.mt-form-postalcode {
	padding-bottom: 0 !important;
}

.mc-devis__form label {
	display: block;
	font-size: 0.75rem;
	font-weight: 600;
	margin-bottom: 3px;
}

.mc-devis__form input[type="text"],
.mc-devis__form input[type="email"],
.mc-devis__form input[type="tel"],
.mc-devis__form input[type="url"],
.mc-devis__form select,
.mc-devis__form textarea {
	width: 100%;
	padding: 9px 13px;
	border: 1px solid var(--mc-devis-filet);
	border-radius: 10px;
	background: #fff;
	font-size: 0.875rem;
	font-family: inherit;
}

.mc-devis__form textarea {
	min-height: 88px;
	resize: vertical;
}

.mc-devis__form input:focus,
.mc-devis__form select:focus,
.mc-devis__form textarea:focus {
	outline: 2px solid var(--mc-action, #D87A00);
	outline-offset: 1px;
	border-color: transparent;
}

.mc-devis__form .wpcf7-submit {
	width: 100%;
	padding: 12px 24px;
	font-size: 0.9375rem;
	font-weight: 600;
	cursor: pointer;
}

.mc-devis__note {
	margin: 14px 0 0;
	font-size: 0.75rem;
	line-height: 1.5;
	color: #767676;
}

.mc-devis__absent {
	margin: 0;
	padding: 14px 16px;
	border: 1px dashed var(--mc-action, #D87A00);
	border-radius: 10px;
	font-size: 0.875rem;
}

/* ------------------------------------------------------------------
   5. Mobile
   ------------------------------------------------------------------ */

@media (max-width: 980px) {

	.mc-devis__grille {
		grid-template-columns: minmax(0, 1fr);
		gap: 32px;
	}

	.mc-devis__equipe-mot {
		padding-left: 0;
		padding-top: 20px;
		border-left: 0;
		border-top: 1px solid var(--mc-devis-filet);
	}
}
