Вот рабочий пример -
https://jsfiddle.net/p5d281wg/6/
Чтоб внутри инпута был отступ достаточно добавить паддинги, а чтоб эти паддинги не растягивали элемент добавляется box-size: border-box;
З.Ы. Обычно всем элементам делается box-size: border-box;
*, *::before, *::after {
box-size: border-box;
}