/* ═══════════════════════════════════════════════════════════════════════════════════════════════
   gravity-socle.css — LE complément de style des formulaires Gravity Forms de tous les sites
   (socle 2.6.2, thème Orbital, 27/10/2026)

   Le style vient d'Orbital (thème recommandé par Gravity Forms). Le socle lui donne les valeurs du site par le
   mécanisme officiel de Gravity (filtre gform_default_styles = « réglages de style » du bloc) : couleur
   d'accent (cases cochées), couleur et texte du bouton, arrondi des champs. Gravity en tire ses variables
   --gf-color-*, --gf-radius… dans le bloc <style> qu'il pose devant chaque formulaire.

   Ce fichier ne fait QUE ce que ces réglages ne couvrent pas :
     1. des variables d'Orbital qu'il ne règle pas lui-même (survol, arrondi et taille du bouton, taille du texte
        des champs, trait et halo du champ actif, majuscules et ombre du bouton ; 2.6.2 : graisse des libellés,
        taille et style de la phrase RGPD, hauteur des champs, « champs_hauts ») ;
     2. quelques sélecteurs : bouton aligné (droite par défaut sur nos sites), message de confirmation, case RGPD,
        champ RGPD et champs hauts (classes socle-gf-rgpd / socle-gf-haut posées par le socle à l'affichage).
   Aucun !important. Tout est limité à .gform-theme--orbital (un formulaire en ancien balisage ou laissé en
   « Gravity Forms 2.5 » — bons de commande, paiement — n'est pas touché), sauf la confirmation.

   Chargé par le socle (securiser-site.php) seulement sur les pages qui affichent un formulaire, APRÈS les
   styles de Gravity Forms, avec la date du fichier comme version.

   Valeurs PAR SITE : option socle_gravity (reglages/gravity-presentation.tsv). Variables --socle-gf-* posées
   par le socle sur :root seulement quand le site les règle ; sinon, valeur d'Orbital. Ne pas modifier ce
   fichier pour un site : régler l'option.
   ═══════════════════════════════════════════════════════════════════════════════════════════════ */

/* --- 1. Variables d'Orbital (posées sur l'enveloppe ; .gform_wrapper.gform-theme--orbital passe devant
       .gform-theme--framework où Gravity les définit, sans toucher au bloc <style> de Gravity) ----------- */
.gform_wrapper.gform-theme--orbital {
    /* Bouton : survol et focus = couleurs du site, sinon la teinte plus foncée calculée par Gravity */
    --gf-ctrl-btn-bg-color-hover-primary: var(--socle-gf-bouton-survol, var(--gf-color-primary-darker));
    --gf-ctrl-btn-bg-color-focus-primary: var(--socle-gf-bouton-survol, var(--gf-color-primary-darker));
    --gf-ctrl-btn-color-hover-primary:    var(--socle-gf-bouton-survol-texte, var(--gf-color-primary-contrast));
    --gf-ctrl-btn-color-focus-primary:    var(--socle-gf-bouton-survol-texte, var(--gf-color-primary-contrast));
    --gf-ctrl-btn-radius:                 var(--socle-gf-bouton-rayon, var(--gf-radius));
    --gf-ctrl-btn-text-transform:         var(--socle-gf-bouton-casse, none);
    --gf-ctrl-btn-shadow:                 var(--socle-gf-bouton-ombre, 0 1px 4px rgba(18, 25, 97, .08));
    --gf-ctrl-btn-shadow-hover:           var(--gf-ctrl-btn-shadow);
    /* Texte des champs à 16 px (Orbital : 14 px) : pas de zoom automatique de l'iPhone quand on touche un champ */
    --gf-ctrl-font-size:                  16px;
    /* Champ actif (2.6.1) : trait (focus) et halo (outline d'Orbital : 3 px, décalé de 1 px) aux couleurs du site,
       sinon ceux d'Orbital (couleur du bouton, halo à 65 %) */
    --gf-ctrl-border-color-focus:         var(--socle-gf-focus, var(--gf-color-primary));
    --gf-ctrl-outline-color-focus:        var(--socle-gf-halo, rgba(var(--gf-color-primary-rgb), .65));
    /* Libellés des champs (2.6.2, standard : semi-gras 600 ; Orbital : 500). Libellés « primaires » seulement (au-dessus
       du champ, légende d'un groupe de cases) ; « (Nécessaire) » suit ; textes des cases et sous-libellés inchangés. */
    --gf-ctrl-label-font-weight-primary:  var(--socle-gf-libelle-graisse, var(--gf-font-weight-secondary));
}

/* --- 2a. Bouton aligné (réglage « bouton_alignement » ; Orbital le met à gauche) et taille de son texte
       (« bouton_taille », 2.6.1). La taille est posée ICI et non sur l'enveloppe : le bloc <style> de Gravity
       (sélecteur #gform_wrapper_N, plus fort) redéfinit --gf-ctrl-btn-font-size sur l'enveloppe ; la valeur la plus
       proche du bouton l'emporte. Sans réglage : --gf-ctrl-btn-font-size-md = la valeur d'Orbital (14 px, taille
       de champ « md », la seule utilisée par le socle). ------------------------------------------------------- */
.gform_wrapper.gform-theme--orbital .gform_footer,
.gform_wrapper.gform-theme--orbital .gform_page_footer {
    justify-content: var(--socle-gf-bouton-alignement, flex-start);
    --gf-ctrl-btn-font-size: var(--socle-gf-bouton-taille, var(--gf-ctrl-btn-font-size-md));
}

/* --- 2b. Case RGPD (champ « consentement ») : case alignée sur la première ligne d'un texte long ---------- */
.gform_wrapper.gform-theme--orbital .ginput_container_consent {
    align-items: start;
}
.gform_wrapper.gform-theme--orbital .ginput_container_consent input[type=checkbox] {
    margin-block-start: .15em;
}

/* --- 2b bis. Phrase RGPD (2.6.2, standard : 13 px italique) : description du champ RGPD (consentement, ou case unique
       « Données personnelles » / « J'accepte… », classe socle-gf-rgpd posée par le socle). Variables de description
       d'Orbital redéfinies sur le champ seulement : le message d'erreur du champ (variables « -error » de l'enveloppe)
       et les autres descriptions ne changent pas. ---------------------------------------------------------------- */
.gform_wrapper.gform-theme--orbital .gfield.socle-gf-rgpd {
    --gf-ctrl-desc-font-size:  var(--socle-gf-rgpd-taille, var(--gf-font-size-tertiary));
    --gf-ctrl-desc-font-style: var(--socle-gf-rgpd-style, var(--gf-font-style-tertiary));
}

/* --- 2b ter. Champs plus hauts (2.6.2, « champs_hauts », standard depuis la décision de Delphine du 27/10/2026 : 48 px ;
       Orbital : 38). Variable d'Orbital --gf-ctrl-size (hauteur des champs texte, e-mail, téléphone, liste déroulante)
       redéfinie sur le champ : elle passe devant celle du bloc <style> de Gravity (posée sur l'enveloppe). Les zones de
       texte (--gf-ctrl-textarea-height) et les cases (--gf-ctrl-choice-size) ne changent pas. La classe socle-gf-haut
       n'est posée que si le réglage est actif (champs_hauts:false sur un site = hauteur d'Orbital). ------------- */
.gform_wrapper.gform-theme--orbital .gfield.socle-gf-haut {
    --gf-ctrl-size: var(--socle-gf-champ-hauteur, 48px);
}

/* --- 2c. Message de confirmation (texte simple) et composant .dm-confirm (Bibliotheque_CSS base.css §11 bis)
       Orbital n'habille pas la confirmation. Par défaut : filet vert à gauche sur fond vert pâle ; réglages 2.6.1 :
       « confirmation_cadre » (filet de 1 px tout autour), couleurs « confirmation » (défaut du cadre : l'accent du
       site) et « confirmation_fond ». ------------------------------------------------------------------------ */
.gform_confirmation_wrapper .gform_confirmation_message {
    padding: 24px;
    margin: 1.5rem 0;
    border: var(--socle-gf-confirmation-cadre, 0px) solid var(--socle-gf-confirmation, var(--socle-gf-succes, #2e7d4f));
    border-left: 3px solid var(--socle-gf-confirmation, var(--socle-gf-succes, #2e7d4f));
    background: var(--socle-gf-confirmation-fond, rgba(46, 125, 79, .06));
    border-radius: var(--socle-gf-bouton-rayon, 3px);
}
.gform_confirmation_message .dm-confirm { margin: -24px; }
.dm-confirm { background-color: #ffffff; border: 1px solid #c9ced3; border-left: 3px solid var(--socle-gf-accent, #333333);
    border-radius: 12px; padding: 32px; animation: socleGfConfirm .5s ease both; }
.dm-confirm__titre { position: relative; margin: 0 0 12px; padding-left: 38px; font-size: 20px; font-weight: 600; line-height: 1.3; }
.dm-confirm__titre::before { content: "\2713"; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
    width: 26px; height: 26px; line-height: 26px; text-align: center; font-size: 14px; font-weight: 700;
    color: #ffffff; background-color: var(--socle-gf-succes, #2e7d4f); border-radius: 50%; }
.dm-confirm__texte { margin: 0 0 14px; padding-left: 38px; font-size: 16px; line-height: 1.7; }
.dm-confirm__note { margin: 0; padding-left: 38px; font-size: 14px; line-height: 1.6; color: #6b7280; }
.dm-confirm--sombre { background-color: rgba(255, 255, 255, .08); border: 1px solid rgba(255, 255, 255, .2); border-left: 3px solid var(--socle-gf-accent, #333333); }
.dm-confirm--sombre .dm-confirm__titre, .dm-confirm--sombre .dm-confirm__texte { color: #ffffff; }
.dm-confirm--sombre .dm-confirm__note { color: rgba(255, 255, 255, .82); }
@keyframes socleGfConfirm { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
@media (prefers-reduced-motion: reduce) { .dm-confirm { animation: none; } }

/* --- Texte « Formulaires » de la politique de confidentialité ([socle_formulaires_rgpd]) ------------------ */
.socle-formulaires-rgpd h3, .socle-formulaires-rgpd h4 { margin-top: 1.2em; }
.socle-formulaires-rgpd ul { margin-bottom: 1em; }
