Используя [type = "radio"]: проверено, может быть очень легко настроить переключатель для проверенного состояния. Как настроить зависание или нажатое состояние? (возможно использовать обычную кнопку, потому что она имеет все эти состояния?)