transform`ом за мышкай можешь двигать, если нужно чтобы осталось место от него пустое, либо position: fixed чтобы он "вырвался"
Толку отменять событие и вызывать его же честно говоря не могу найти
Радиальный градиент на фон, кружок поменьше поверх чтобы визуально получилось кольцо. Ну и значения в градиенте соответствующие заполнению можно посчитать, вынести через сцц-переменную чтобы скриптом менять только ее а не весь градиент
masakosas, область видимости никак не меняется при использовании асинхронных функций.
В асинк функции обязательно вызывать другой асинк только если ты его ждешь - await