Я не думаю, что проблема заключается в тесном соединении CSS и Javascript, проблема в правильном использовании CSS.Если у вас есть фрагмент CSS, тесно связанный с определенной функцией (например, серая рамка), вам не следует повторно использовать его где-либо еще.Если есть его части, которые являются общими для всего сайта (например, базовый стиль), и части, относящиеся к функциональности этого одного элемента, то вам следует разделить класс на две части.
CSS служит двум целям - стилизациии идентификация элементов, которые должны появляться и функции одинаковы.Таким образом, если изменение класса что-то нарушает, значит, вы неправильно используете класс или должны были создать другой.Это больше, чем просто стилизация, это клей.
По аналогии с объектно-ориентированным программированием можно создавать унаследованные классы.Если у вас был класс, который использовался в одном месте, и вам нужно было сделать что-то немного другое в другом месте, вы бы не изменили этот класс, вы бы создали унаследованный класс для вашей новой ситуации, оставив исходный объект без изменений.В CSS вы создали бы другой класс и применили бы и класс стилей, и класс, специфичный для функциональности, к серому исчезающему блоку.Если вы хотите изменить основной стиль, вы можете безопасно обновить класс, который только обрабатывает это.Если вам нужно поработать над конкретным серым квадратом, вы работаете только с классом, уникальным для этой части функциональности.