Love it, thanks for posting. I'm in the process of building a similar app for Latin. How did you handle loading the word data in the sidebar? Is all that data stored statically, or are you using fetch API to get it from a database?
It's all in the initial HTML payload. Each word in Italian, its translation in English, and the corresponding sidenote, if any, all have a common `data-id`. When the mouse hovers on a word, the corresponding note gets a `.visible` class via JS.