Review

Работает - значит зачет.
За читерство тут https://github.com/Jabher/NinjaPro/blob/master/script.js#L28 отдельный зачет, даже не сообразил сразу.
А вот с читаемостью, аккуратностью и соблюдением нотации (и целостности кода) довольно большие проблемы: document.getElementById, который работает везде, можно заменить на document.querySelector, раз уж пользуешься viewport units (что есть зло в десктопе, так как vh не пересчитывается при вертикальном изменении размера окна в хроме), очень много повторяющегося кода, большинство переменных нечитаемы, используется транслит с сокращениями и так далее. В общем смотри коммиты, там все описано.
Верстку и стили не смотрел особо - там по 10 строк и там и там, толком они ничего не скажут.