Each die is rolled independently using crypto.getRandomValues() — the same cryptographically strong source used on the RNG page. Supports any number of sides, from a standard D6 to exotic polyhedral dice used in tabletop RPGs.
crypto.getRandomValues()