Dlaczego tak
Atrybut for etykiety wiąże ją z polem o takim samym id — tu etykieta wskazuje „email”, a pole ma id „mail”, więc powiązania nie ma i czytnik ekranu nie poda nazwy pola. Zgodność z atrybutem name nie wystarcza, bo name służy do wysyłania danych, a nie do łączenia etykiety z polem — to najczęstsza pomyłka. Placeholder nie zastępuje etykiety, a położenie etykiety nie ma znaczenia.