/* Formulaire de demande — compléments à la feuille de la maquette (qui porte
   déjà .form--etapes, .champ, .case, .etapes-jauge, .recap).
   Même poids de préfixe que la couche de fidélité. */

body .elementor.elementor.elementor.elementor .up-form { position: relative; }

/* Sans script : les étapes s'enchaînent, séparées. */
body .elementor.elementor.elementor.elementor .up-form:not(.est-pilote) .etape + .etape {
  margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--trait);
}

/* Piège à robots : hors écran, jamais réduit à 1 px (débordement horizontal). */
body .elementor.elementor.elementor.elementor .up-form-piege {
  position: absolute !important; left: -10000px; top: auto; width: 1px; height: 1px; overflow: hidden;
}

body .elementor.elementor.elementor.elementor .up-form-message {
  margin: 0 0 1.25rem; padding: 1rem 1.15rem; border-radius: var(--rayon);
  font-size: .9375rem; line-height: 1.5; font-weight: 500;
}
body .elementor.elementor.elementor.elementor .up-form-succes {
  background: #eef7f1; color: var(--verifie); border: 1px solid color-mix(in srgb, var(--verifie) 40%, transparent);
}
body .elementor.elementor.elementor.elementor .up-form-erreur {
  background: #fdf1f0; color: var(--signal); border: 1px solid color-mix(in srgb, var(--signal) 35%, transparent);
}
body .elementor.elementor.elementor.elementor .up-form .erreur:empty { display: none; }
body .elementor.elementor.elementor.elementor .up-form .est-invalide :is(input, select, textarea) { border-color: var(--signal); }

/* Dépôt de photos : zone cliquable, champ natif masqué (mais atteignable au clavier). */
body .elementor.elementor.elementor.elementor .up-depot { display: grid; gap: .45rem; font-size: .875rem; font-weight: 700; }
body .elementor.elementor.elementor.elementor .up-depot-zone {
  display: grid; justify-items: center; gap: .3rem; padding: 1.25rem 1rem;
  border: 1.5px dashed var(--trait-fort); border-radius: var(--rayon);
  background: var(--papier); color: var(--encre-douce); text-align: center; cursor: pointer;
  font-weight: 400; transition: border-color .15s var(--doux), background-color .15s var(--doux);
}
body .elementor.elementor.elementor.elementor .up-depot-zone strong { color: var(--encre); font-weight: 700; }
body .elementor.elementor.elementor.elementor .up-depot-zone small { font-size: .8125rem; }
body .elementor.elementor.elementor.elementor .up-depot-zone .i { width: 26px; height: 26px; color: var(--bleu-heros); }
body .elementor.elementor.elementor.elementor .up-depot-zone:hover,
body .elementor.elementor.elementor.elementor .up-depot-zone.est-survolee { border-color: var(--bleu-heros); background: #f3f7f9; }
body .elementor.elementor.elementor.elementor .up-depot-input {
  position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; clip-path: inset(50%);
}
body .elementor.elementor.elementor.elementor .up-depot-input:focus-visible + .up-depot-liste,
body .elementor.elementor.elementor.elementor .up-depot:focus-within .up-depot-zone { outline: 3px solid var(--signal); outline-offset: 3px; }
body .elementor.elementor.elementor.elementor .up-depot-liste { margin: 0; padding: 0; list-style: none; display: grid; gap: .25rem; font-weight: 500; }
body .elementor.elementor.elementor.elementor .up-depot-liste li::before { content: "– "; }
body .elementor.elementor.elementor.elementor .up-depot .aide { font-weight: 400; color: var(--encre-douce); }

body .elementor.elementor.elementor.elementor .up-form [data-envoyer][aria-busy="true"] { opacity: .7; cursor: progress; }
body .elementor.elementor.elementor.elementor .up-form .form-actions .btn { min-height: 44px; }

/* Le widget s'efface : c'est le <form> qui occupe la place de celui de la
   maquette dans la grille (sinon marges auto + largeur ajustée au contenu). */
body .elementor.elementor.elementor.elementor .elementor-widget-up-formulaire-demande,
body .elementor.elementor.elementor.elementor .elementor-widget-up-formulaire-demande > .elementor-widget-container { display: contents; }

/* Le thème (Blocksy) impose ses hauteurs de champs et décale les légendes :
   la maquette ne les déclare pas, il faut donc les neutraliser ici. */
body .elementor.elementor.elementor.elementor .up-form :is(input:not([type=checkbox]):not([type=radio]):not([type=file]), select) { height: auto; min-height: 0; }
body .elementor.elementor.elementor.elementor .up-form textarea { height: auto; }
body .elementor.elementor.elementor.elementor .up-form legend { margin-inline: 0; float: none; width: auto; }
