You've specified the footer element as display:table-row so the browser will construct an anonymous display:table parent as none exists and default to the shrinkwrap behaviour of tables. Set the footer to display:table and 100% width and it will stretch across.
I would then use 3 display:table cells across that footer so that you can vertically align the contents easily with vertical-align:middle on the table-cell elements. Just place your content in these table-cell elements and also set text-align on each cell as required (left center and right) instead of using floats.
For your menu you could use a border-bottom instead of text-decoration:underline. Or if you want more control over where the line is then use :after to draw a line under the menu. Set the menu to position:relative and then something like: