Nice Job! The code is easy to read and well organized.
You should add error states to the inputs and error handling in the javascript. Also, using the keyup event instead of change will allow the app to update as keys are pressed giving it a very reactive feel but thats a matter of choice.
Overall it's well done and functions well.