/*
 * Formulaires du site (lib/forms_public.php) — styles neutres du cœur, pour tous les thèmes.
 * Couleurs reprises du thème quand il les définit (--accent, --text, --bg) ; un thème peut ajouter
 * assets/forms.css pour les siennes. Aucune largeur fixe : rien ne déborde sur un téléphone.
 */
.nbf { --nbf-accent: var(--accent, #2457c5); --nbf-text: var(--text, #1d2125); --nbf-bg: var(--bg, #fff);
  --nbf-border: color-mix(in srgb, var(--nbf-text) 28%, transparent); --nbf-err: #b3261e; --nbf-ok: #1e6b3a;
  margin: 2rem 0; max-width: 46rem; min-width: 0; }
.nbf *, .nbf *::before, .nbf *::after { box-sizing: border-box; }
.nbf__title { margin: 0 0 .5rem; }
.nbf__intro { margin: 0 0 1rem; }
.nbf__note { margin: 0 0 1rem; font-size: .9em; opacity: .85; }
.nbf__grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem 1.25rem; }
@media (min-width: 640px) {
  .nbf__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .nbf__field { grid-column: 1 / -1; }
  .nbf__field--half { grid-column: auto; }
}
.nbf__field { min-width: 0; margin: 0; padding: 0; border: 0; }
.nbf__label { display: block; font-weight: 600; margin: 0 0 .3rem; padding: 0; }
.nbf__sublabel { display: block; font-size: .92em; margin: 0 0 .25rem; }
.nbf__req { color: var(--nbf-err); }
.nbf__help { margin: 0 0 .35rem; font-size: .9em; opacity: .85; }
.nbf__input { display: block; width: 100%; max-width: 100%; font: inherit; color: var(--nbf-text); background: var(--nbf-bg);
  border: 1px solid var(--nbf-border); border-radius: .5rem; padding: .6rem .75rem; min-height: 2.75rem; }
.nbf__input--short { max-width: 8rem; }
textarea.nbf__input { min-height: 8rem; resize: vertical; }
.nbf__input:focus-visible, .nbf__choice input:focus-visible, .nbf__submit:focus-visible { outline: 3px solid color-mix(in srgb, var(--nbf-accent) 55%, transparent); outline-offset: 2px; }
.nbf__field--error .nbf__input, .nbf__input[aria-invalid="true"] { border-color: var(--nbf-err); border-width: 2px; }
.nbf__error { margin: .35rem 0 0; color: var(--nbf-err); font-weight: 600; font-size: .92em; }
.nbf__choices { display: grid; gap: .4rem; }
.nbf__choice { display: flex; align-items: flex-start; gap: .55rem; min-width: 0; }
.nbf__choice input { flex: none; width: 1.25rem; height: 1.25rem; margin: .15rem 0 0; accent-color: var(--nbf-accent); }
.nbf__choice label { min-width: 0; overflow-wrap: anywhere; }
.nbf__privacy { display: inline-block; margin: .3rem 0 0 1.8rem; }
.nbf__range { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr)); gap: .75rem; }
.nbf__range-part { min-width: 0; }
.nbf__actions { margin: 1.25rem 0 0; }
.nbf__submit { font: inherit; font-weight: 600; cursor: pointer; border: 0; border-radius: 999px; padding: .75rem 1.5rem; min-height: 2.75rem;
  background: var(--nbf-accent); color: #fff; max-width: 100%; }
.nbf__submit[aria-disabled="true"] { opacity: .6; cursor: progress; }
.nbf__alert, .nbf__summary { border: 2px solid var(--nbf-err); border-radius: .5rem; padding: .75rem 1rem; margin: 0 0 1rem; color: var(--nbf-err); }
.nbf__summary p { margin: 0 0 .4rem; }
.nbf__summary ul { margin: 0; padding-left: 1.2rem; }
.nbf__summary a { color: inherit; }
.nbf__ok { border: 2px solid var(--nbf-ok); border-radius: .5rem; padding: .75rem 1rem; color: var(--nbf-ok); }
.nbf__ok p { margin: 0; }
.nbf__challenge { grid-column: 1 / -1; margin: 1rem 0 0; }
/* piège à robots : hors de l'écran (pas display:none, que certains robots repèrent) */
.nbf__hp { position: absolute !important; left: -10000px !important; top: auto; width: 1px; height: 1px; overflow: hidden; }
.nbf__sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
@media (prefers-reduced-motion: no-preference) { .nbf__input { transition: border-color .15s; } }
