*,
*::before,
*::after {
box-sizing:border-box;
}
Поставьте и все заработает. Так происходит потому что вы указали ширину в 100% для input, но стандартный border-box у браузеров стоит content-box, который не учитывает padding и border в размер ширины