Solution #1, set padding: 0px;
Line up the text-input and button elements by setting the input's padding to 0px;
Rationale: The browser default styling on the text input sets padding automatically.
Because text inputs default to having a "box-sizing" of "content-box", the total width of the input element was the width property 100% plus the extra pixels added by the default padding.
Setting the text input's padding to 0px means that the total width is the width property + zero padding + zero border, so it lines up with the button below.
View the CSS changes inside the "style" tag of solution1.html to see this fix.