One rule
Use real form elements first. A label, input, fieldset, legend, and button already carry meaning that browsers, keyboards, and assistive tech understand.
Labels are not placeholders
A placeholder disappears when someone starts typing. It is a hint, not a label. Your repo should show labels that stay visible, especially for forms like contact, registration, feedback, or payment interest.
Connect a label to one control with for and id. This also makes the label clickable, which helps on phone screens.