В общем, я думаю, что лучше преобразовать цвета в HSV, а затем преобразовать оттенок (и обратно в исходное кодирование). Мы используем яркость (темные элементы) и насыщенность (невыбранные кнопки и т. Д.) В качестве семантического элемента, поэтому лучше его сохранить.
Таким образом, вы также поддерживаете контраст.
Но: нормальное HSV на самом деле не является истинным физиологическим HSV: наиболее используемая формула просто установлена для гаммы RGB и дает максимальный диапазон и является независимым от параметра. От реальности максимум V зависит от H (если вы хотите сравнить V между разными цветами) и другого эффекта.
И эти и другие визуальные эффекты (не в любом HSV) будут влиять на визуальный результат, так что вы можете сделать это программно (например, JavaScript, который читает и переопределяет все цвета, но это тема для других вопросов), но если вы сделать сайт профессионально, вы все равно должны вручную настроить некоторые элементы.
Примечание: последняя версия CSS и многие препроцессоры CSS позволяют вам использовать значения HSV и применять программно насыщенность, свет и изменения оттенков.