(function flexible(window, document) { var docel = document.documentelement; var dpr = window.devicepixelratio || 1; // adjust body font size function setbodyfontsize() { if (document.body) { document.body.style.fontsize = 12 * dpr + "px"; } else { document.addeventlistener("domcontentloaded", setbodyfontsize); } } setbodyfontsize(); // set 1rem = viewwidth / 10 function setremunit() { var rem = docel.clientwidth / 24; docel.style.fontsize = rem + "px"; } setremunit(); // reset rem unit on page resize window.addeventlistener("resize", setremunit); window.addeventlistener("pageshow", function(e) { if (e.persisted) { setremunit(); } }); // detect 0.5px supports if (dpr >= 2) { var fakebody = document.createelement("body"); var testelement = document.createelement("div"); testelement.style.border = ".5px solid transparent"; fakebody.appendchild(testelement); docel.appendchild(fakebody); if (testelement.offsetheight === 1) { docel.classlist.add("hairlines"); } docel.removechild(fakebody); } })(window, document);