The hash-mode router point is the one that bites most SPAs. The link looks right in review, then the router treats #main as a route and nothing moves. The tabindex="-1" on main is a nice detail as well, since without it some browsers scroll to the target but leave focus in the header, so the next Tab goes back to the nav.