Есть задача организовать поддержку различных цветовых решений для интерфейса. Все стили на less, сгруппированы в компоненты. Т.е. разметка всегда общая, отличаются только цвета элементов. 
Мне видится два пути:
1. Для каждого элемента определить персональную переменную с цветом, исходя из контекста элемента (например @loginFormBg, @SerachButtonTextColor) и потом просто для каждой темы указать нужные цвета для этих переменных. 
Но тут есть явный минус в виде огромного кол-ва переменных, которые зачастую будут содержать одни и те же цветовые значения. 
2. Вынести в название переменной идентификатор темы, а внутри каждого класса сделать фактически if, который в зависимости от идентификатора темы будет использовать нужное значение. 
.sidebar {
    width: 220px;
    margin: 10px 0;
    & when (@theme = default) {background: @black;}
    & when (@theme = fireCat) {background: @fc_red;}
}
3. Третий вариант в виде расширения существующих классов в отдельном файле темы не рассматриваю, т.к.
во-первых, получу кучу дублирования в названиях классов и, как следствие, увеличение размера css,
во-вторых, нарушу структуру кода.
Есть ли какие-то еще красивые решения?