Browsers are complex because their job is to parse and render an enormous number of documents that conform poorly to a collection of overly permissive specs in a manner that won’t disappoint people used to having those documents render correctly despite being buggy.