Needing it to be dynamic I need to style individual list items, looking at the above code, it obviously can't be done with that. So how do I change that to have individual stylings.
The wp_nav_menu() function outputs classes for the current list item, as well as for hierarchical menu entries (parent, ancestor). You can target these classes for highlighting current context.
Also, if you need to add arbitrary CSS classes to specific list items, you can do so from Dashboard -> Appearance -> Menus. Select a custom menu, and then edit the individual list item for which you want to add an arbitrary class. Look for the "CSS Classes" field.
(Note: you may need to enable display of the "CSS Classes" field, by clicking the "Screen Options" tab in the upper right-hand corner, and enabling the "CSS Classes" checkbox.)