A contact form that reads like a console session: numbered lines, prompts that type themselves, choices printing in one after another, and a transmission log on send.
Underneath it is an ordinary <form> — real labels, real
required, a real action. Every message is announced to screen
readers, every step works from the keyboard, and if the script never loads the same
markup still submits. Press H to hide the control panel.
Six steps, one visible at a time until each is answered. Choices advance by themselves; typed answers advance on Enter or the confirm button. Switch the preset in the panel to rebuild the same markup as a wizard or a plain inline form.
The same engine, given a fields array instead of markup. It
writes the labels, controls and steps, then enhances them. Handy for a form whose
questions come from a CMS — pair it with the same fields rendered server-side and the
no-script path stays intact.
This form is never handed to the engine — it is what a visitor gets when the script fails to load or is blocked. Same fields, same names, native validation, native submit. That is the whole progressive-enhancement claim, shown rather than asserted.