Before that, I thought that the <label> hack was required. It's the only way to restyle a file input that works without JS, but at some point I decided that interacting with the content, and creating it, requires JS, while viewing still does not. It's simply easier this way.