/**
 * Signature.fr — module Maoke mk_comptepro.
 *
 * L'affichage conditionnel du bloc professionnel, EN CSS SEUL.
 *
 * Pourquoi pas de JavaScript : `_partials/form-fields.tpl` du theme ne rend pas l'attribut `attr`
 * des FormField — l'amont Hummingbird non plus. Impossible donc de poser un `data-ps-*` sur nos
 * champs, et il ne reste que des identifiants a accrocher. `:has()` lit l'etat REEL de la case,
 * sans script, sans etat a synchroniser, et sans le scintillement d'un masquage au DOMContentLoaded.
 *
 * Degradation : sans `:has()` ou sans CSS, les trois champs sont simplement VISIBLES et facultatifs.
 * Le formulaire reste utilisable, et le HTML servi porte toute l'information (CLAUDE.md §8, GEO).
 *
 * ⚠️ Les selecteurs visent `section > *`, jamais `.mb-3` : la classe de l'enveloppe appartient au
 * theme, la structure non.
 */

#customer-form section > *:has(#field-pro_company),
#customer-form section > *:has(#field-pro_siret),
#customer-form section > *:has(#field-pro_vat_number) {
  display: none;
}

#customer-form section:has(#field-is_pro:checked) > *:has(#field-pro_company),
#customer-form section:has(#field-is_pro:checked) > *:has(#field-pro_siret),
#customer-form section:has(#field-is_pro:checked) > *:has(#field-pro_vat_number) {
  display: block;
}

/**
 * La mention de validation sous la case, revelee par la case elle-meme.
 *
 * Le `.form-text` vise est l'enfant DIRECT de l'enveloppe qui porte la case, pas un descendant de
 * `.form-check` : le gabarit emet le bloc `form_field_comment` apres avoir ferme celui-ci. Aucune
 * collision avec les regles ci-dessous, qui visent le `.form-text:last-child` des trois champs.
 *
 * La phrase vit dans le commentaire du champ et non dans son etiquette, pour qu'elle reste hors du
 * `<label>` : elle y serait avalee par le nom accessible de la case, et un clic dessus decocherait
 * celle-ci — c'est-a-dire ferait disparaitre le texte qu'on vient de lire.
 */
#customer-form section > *:has(#field-is_pro) > .form-text {
  display: none;
}

#customer-form section > *:has(#field-is_pro:checked) > .form-text {
  display: block;
}

/**
 * La mention « Optionnel » du theme, retiree sur ces trois champs.
 *
 * Elle est emise par le bloc `form_field_comment` pour tout champ dont `required` est faux — et ces
 * champs SONT facultatifs cote FormField, deliberement : un `required` HTML sur un champ masque
 * bloque l'envoi du formulaire sans rien afficher. L'obligation est conditionnelle et portee par le
 * serveur (hook validateCustomerFormFields) ; afficher « Optionnel » a cote la contredirait.
 *
 * C'est le DERNIER enfant de l'enveloppe : le gabarit emet l'etiquette, le champ, les erreurs, puis
 * cette mention.
 */
#customer-form section > *:has(#field-pro_company) > .form-text:last-child,
#customer-form section > *:has(#field-pro_siret) > .form-text:last-child,
#customer-form section > *:has(#field-pro_vat_number) > .form-text:last-child {
  display: none;
}

/**
 * Le marqueur d'obligation, repris A L'IDENTIQUE de `bootstrap/components/_labels.scss` du theme
 * (`.form-label.required::after`), y compris le texte de remplacement vide qui le retire des
 * lecteurs d'ecran. Le gabarit ne pose la classe `required` que sur les champs obligatoires au sens
 * de FormField ; ceux-ci ne le sont que si la case est cochee, mais ils ne s'affichent QUE dans ce
 * cas — le marqueur est donc toujours juste quand il est visible.
 */
#customer-form section > *:has(#field-pro_company) > .form-label::after,
#customer-form section > *:has(#field-pro_siret) > .form-label::after,
#customer-form section > *:has(#field-pro_vat_number) > .form-label::after {
  color: var(--bs-danger);
  content: "*" / " ";
}
