The 20 lines mentioned in the headline refer to the render algorithm itself, not including all the code for map loading, input handling, line drawing and html/css. Basically the lines 51 to 71 in your code.
Sure, my code is only a demonstration that you can fit everything in <100 lines. I remember that there were some sceptics in older HN discussions on this topic... :)
Again, thank you very much for all your education reverse engineering works!