Lots of UI and CSS tweaks. Split map.js into multiple files that focus on different aspects.