Как вариант, если нужна стилизация lable в зависимости от состояния инпута, можно поместить label и input в один блок:
<div>
<input type="radio" id="example">
<label for="example"></label>
</div>
И в css писать правило:
input:checked + label{
background: red;
}
Клик по лэйблу так же меняет состояние радио инпута.
Те стили, которые вы хотели использовать для label, используйте для родительского блока.
Кастомный инпут можно сделать с помощью псевдоэлементов label'a, а настоящий инпут сделать невидимым