Typing 0000 left Completed greyed out with nothing on screen to explain why. The rules were only ever enforced by the disabled button: the info box lists them, but it is static text that never reacts to what was typed.
- add getPasscodeRuleError, returning the broken rule as a message key
- show it under the Pass code field, in the same style as the mismatch error already used by this form
- judge only a finished four digits, so a prefix like 000 on the way to a valid code is not called a mistake
- derive isValidPasscode from that check, so the button and the error line cannot disagree about what is acceptable
Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com