It is easier to help you if you share your HTML and CSS in JSBin, JSFiddle or Codepen, for example.
You have added display: block to input and .form-control, that it is the same target and also inputs are block elements, it could be interesting use inline-block if you want to add some margin on top and bottom but the input behave as an inline element.
I guess you are having problems because your parent element has not size set.
You can use this line in your code to make it easier to size everything:
I am sorry this is not a solution but it might help you to understand your problem.
You also can use Browser Dev Tools; open it with F12 key or Inspect and check wich styles are applying and wich ones not working. And you could make test in real time too.
P.S. When you want zero padding, for example, or other property you should use 0, without units:
main {
padding: 0 10em;
}
Let us know how are you doing. Good work by the way!!