/* ============================================================
   IFS Formulaires — site. Base de formulaire (classes ifsf-*) écrite avec des valeurs
   concrètes : le template du site complète/écrase ces règles (radios du questionnaire,
   bouton, panneau « Votre mélange »).
   ============================================================ */

.ifs-form, .ifs-form *, .ifs-form *::before, .ifs-form *::after { box-sizing: border-box; }
.ifs-form form { margin: 0; }
.ifs-form .ifsf-form-wrap { width: 100%; }
.ifs-form .ifsf-fields { display: flex; flex-wrap: wrap; margin: -8px; }
.ifs-form .ifsf-control-group { padding: 8px; width: 100%; max-width: 100%; flex-grow: 1; margin: 0; border: 0; min-width: 0; }
.ifs-form .ifsf-one-half { width: 50%; }
.ifs-form .ifsf-one-third { width: 33.333%; }
.ifs-form .ifsf-two-thirds { width: 66.666%; }
.ifs-form .ifsf-one-fourth { width: 25%; }
.ifs-form .ifsf-three-fourths { width: 75%; }
.ifs-form .ifsf-control-input { display: flex; flex-direction: column; gap: 9px; }
.ifs-form .ifsf-control-input-desc { opacity: .85; font-size: .9em; }
.ifs-form .ifsf-label { display: block; margin-bottom: .45em; line-height: 1.3; font-weight: 600; }
.ifs-form .ifsf-label .ifsf-required-label { color: #c0532c; font-weight: 400; }
.ifs-form legend.ifsf-label { cursor: default; float: none; width: auto; padding: 0; }
.ifs-form .ifsf-input {
	width: 100%; max-width: 100%; font: inherit; font-size: 15px; color: var(--text, #1d3d49);
	background: #fff; border: 1.5px solid var(--border-2, #cfe0e5); border-radius: var(--radius-input, 12px);
	padding: 12px 14px; margin: 0; outline: 0; box-shadow: none; line-height: 1.4;
}
.ifs-form .ifsf-input:focus { border-color: var(--accent, #1799b8); }
.ifs-form .ifsf-input[type="checkbox"], .ifs-form .ifsf-input[type="radio"] { width: auto; padding: 0; border: 0; border-radius: 0; margin: 0; }
.ifs-form textarea.ifsf-input { overflow: auto; resize: vertical; }
.ifs-form .ifsf-select { position: relative; }
.ifs-form .ifsf-select select { width: 100%; appearance: none; -webkit-appearance: none; padding-right: 36px; background: #fff; }
.ifs-form .ifsf-select::after {
	content: ""; position: absolute; right: 16px; top: 0; bottom: 0; margin: auto; width: 0; height: 0;
	border-style: solid; border-width: 6px 6px 0 6px; border-color: #7f9aa3 transparent transparent transparent; pointer-events: none;
}
.ifs-form .ifsf-list { display: flex; flex-direction: column; gap: 4px; }
.ifs-form .ifsf-list-auto-columns { flex-direction: row; flex-wrap: wrap; gap: 18px; }
.ifs-form .ifsf-checkbox-group, .ifs-form .ifsf-radio-group { display: flex; align-items: center; gap: 8px; padding: 2px 0; }
.ifs-form .ifsf-checkbox-group .ifsf-label, .ifs-form .ifsf-radio-group .ifsf-label { margin: 0; font-weight: 400; user-select: none; }
.ifs-form .ifsf-checkbox-group input, .ifs-form .ifsf-radio-group input { flex-shrink: 0; }
.ifs-form .ifsf-heading { margin: 0; }
.ifs-form .ifsf-text-center { text-align: center; }
.ifs-form .ifsf-btn {
	display: inline-block; font: inherit; font-size: 16px; font-weight: 800; color: #fff;
	background: var(--accent, #1799b8); border: 0; border-radius: var(--radius-pill, 999px);
	padding: 15px 34px; cursor: pointer; position: relative; line-height: 1.2; transition: background .15s ease, transform .15s ease;
}
.ifs-form .ifsf-btn:hover { background: var(--accent-hover, #127a94); }
.ifs-form .ifsf-btn.is-disabled, .ifs-form .ifsf-btn:disabled { background: #9bb6be; cursor: not-allowed; transform: none; }

/* Réponse (succès / erreur) */
.ifs-form .ifsf-response { display: none; width: 100%; margin-bottom: 20px; padding: 14px 18px; border-radius: var(--radius-sm, 12px); text-align: center; font-size: 15px; line-height: 1.5; }
.ifs-form.ifsf-success .ifsf-response { display: block; background: var(--green-pale, #eef7e3); border: 1.5px solid #cfe6a8; color: var(--green-text, #3f6d12); font-weight: 600; }
.ifs-form.ifsf-success.ifsf-success-hideform .ifsf-fields { display: none !important; }
.ifs-form.ifsf-success.ifsf-success-hideform .ifsf-response { margin-bottom: 0; }
.ifs-form.ifsf-error .ifsf-response { display: block; background: #fdf2ee; border: 1.5px solid #f0c9bb; color: #a5502f; font-weight: 600; }
.ifs-form .ifsf-error-field .ifsf-input:not([type="radio"]):not([type="checkbox"]) { border-color: #e07a4f; }
.ifs-form .ifsf-error-field > legend.ifsf-label, .ifs-form .ifsf-error-field .ifsf-control-label .ifsf-label { color: #a5502f; }

/* Piège à robots : hors écran, jamais rempli par un humain */
.ifs-form .ifs-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; padding: 0; }

/* Captcha Joomla (altcha) */
.ifs-form .ifs-captcha altcha-widget { display: block; max-width: 100%; }

@media (max-width: 640px) {
	.ifs-form .ifsf-one-half, .ifs-form .ifsf-one-third, .ifs-form .ifsf-two-thirds, .ifs-form .ifsf-one-fourth, .ifs-form .ifsf-three-fourths { width: 100%; }
}

/* Newsletter : accroche en gras à côté de la case, explication en dessous (1.1.0). */
.ifs-form .ifs-newsletter .ifsf-checkbox-group .ifsf-label strong { font-weight: 700; }
.ifs-form .ifs-newsletter .ifsf-control-input-desc { margin: 4px 0 0 26px; }

/* 1.3.2 : respiration au-dessus du formulaire quand il suit un titre (ex. « Envoyez-moi un message ») */
.ifs-formulaire { margin-top: 1.25rem; }

/* 1.5.0 : cases à cocher alimentées par les articles (regroupées par catégorie, maximum, lien « détails ») */
.ifs-form .ifsf-articles-groupe + .ifsf-articles-groupe { margin-top: 12px; }
.ifs-form .ifsf-articles-categorie { margin: 0 0 4px; font-weight: 700; }
.ifs-form .ifsf-articles-max { display: block; }
.ifs-form .ifsf-articles-lien { font-size: .85em; margin-left: auto; padding-left: 8px; white-space: nowrap; }
.ifs-form .ifsf-checkbox-group input:disabled + .ifsf-label { opacity: .5; }
.ifs-form .ifsf-articles-vide { margin: 0; opacity: .85; font-style: italic; }
.ifs-form .ifsf-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* 1.6.0 : champs conditionnels (« afficher si… ») — l'enveloppe ne compte pas dans la grille */
.ifs-form .ifsf-cond { display: contents; }
.ifs-form .ifsf-cond[hidden] { display: none; }

/* 1.8.0 : groupes de champs (cadre, titre facultatif ; masqués d'un bloc par leur condition) */
.ifs-form .ifsf-groupe { margin: 8px 0; padding: 18px 20px 12px; border: 1.5px solid var(--border-2, #cfe0e5); border-radius: var(--radius-sm, 12px); background: rgba(255, 255, 255, .5); }
.ifs-form .ifsf-groupe-titre { float: none; width: auto; margin: 0 0 6px; padding: 0 6px; font-size: 1.05em; font-weight: 700; }
.ifs-form .ifsf-groupe-aide { margin: 0 0 8px; }
.ifs-form .ifsf-groupe-champs { margin: 0 -8px; }
