dj-audio wraps the native audio element with dj- controls (play/pause, seek, time). dj-video
wraps video.js and renders in light DOM; video.js's stylesheet is loaded in the page head as
an app prerequisite, and the engine is pulled from a CDN via the import map. Both emit
dj-play, dj-pause, dj-ended, and a throttled
dj-time; the log below records them.
Note: the video demo needs network access — video.js and the sample HLS stream are fetched from CDNs.