Envoyez-nous un message — nous répondrons à l'adresse courriel fournie.
{# Double-submit guard: a slow POST (mobile especially) invites an impatient
second tap that races the first — that's what produced the duplicate
quiz attempt and the duplicate-signup 500. On first submit we mark the
form and, on the next tick (so the clicked button's name/value still
posts), disable its submit controls; any further submit is blocked.
Forms that fail native HTML5 validation never fire 'submit', so they
aren't locked. No-JS clients are unaffected (the server handles races
too). #}