Normal approach should we automate only functional flow not caring
about the UI things like font of text, font type of text, color of
text, background color, images, different panels on page etc.
In short, DO NOT DO THIS. Automating text/fonts/images is a terrible idea because they can change. Does your marketing team (if you have one) have access to the markup for your page? Can they make changes to the page on-demand? You must understand that automated tests, in general, are dumb. If a test cannot find something, it will fail. For example, you are testing this sentence on your page: "Hi, welcome to our website!", and your automated test looks something like this (example in Selenium pseudo-code):
driver.FindElement(By.LinkText(@"Hi, welcome to our Website!"));
That line above will fail. Do you see why? Someone spelled the word, "Website" with the 'W' in capitals, and the text on the website is lower-cased.
Strict approach automate each and every thing which is mentioned in
test-plan including images, text styling, colors etc.. etc..
things.(of course this one is time consuming process.)
Ultimately, it's up to you and your team which approach to take (I prefer C#/Selenium), and to test only the objects on the page that an end-user would interact with, like a
button. This will make your tests far more robust because, you are testing something that is more 'constant'. I wish you the best!