Shadow roots, explained with live examples | Dark Hacker News