New Enquiry is the right place to settle validation, because it carries a problem most forms do not have. It can be saved twice, at two different standards. A draft needs a customer and a title. A real enquiry needs a customer, a title, a source, a destination, at least one adult, an agent, no blacklist, and a billing address on the account.
So the form cannot simply be valid or invalid. It has to say, at every moment, which of the two things you can do right now and exactly what is standing between you and the other one. Everything else in the validation contract falls out of getting that right.
Drawn fresh from the Untitled kit and the system’s ruled tokens, not restyled from the originals.
Every input on the platform is built from this. The border carries the state, the message carries the reason, and the label never moves.
The disabled button never explains itself in a tooltip. The reason sits permanently beside it, in words, naming every outstanding condition rather than only the first, because a person who fixes one thing and finds the button still dead learns to distrust the form. The seven segment bar is the same idea in a glance: five solid, two open, and the two open ones are named in the sentence next to it.
Ruled 20 August: one button, not two. The risk with a button that changes its own meaning is that a person presses Save without noticing which save they got. The counter answers that before the press rather than after it: five of seven, and the two outstanding conditions named in the sentence beside it. The button label and the counter always agree, and if they ever could not, the counter is the one that is right.
There is no success state on a field. A green tick beside a correctly filled input is decoration: the person can see what they typed, and marking sixteen fields as correct to draw attention to two that are not is a worse way of saying the same thing than the counter at the foot of the form.