В теме с переменными я только поверхностно, по этому немного переживаю, что какая то дичь получилась ^^..
Ничёси поверхностно)). Заморочился прямо...
Если требуется такое тонкое управление цветом где нибудь в скрипте, то подход вполне имеет право на жизнь. Но если не требуется, то это дичь ))). И "состояния" тоже в root стоило бы поместить с объединением в более глобальные переменные, потому что запись в элементах с calc, уж это точно дичь