Нужно использовать label, связывать его по id с radio, сам radio прятать. Щелкать будем по label, он будет передавать на radio, работать будет. А label стилизуем как угодно, например:
Делаем необходимую разметку:
<div>
<input id="first" type="radio" name="first" value="first">
<label for="first">надпись</label>
<input id="second" type="radio" name="second" value="second">
<label for="second">надпись</label>
</div>
В стилях пишем:
Прячем брутальные переключатели
input[type=radio] {
display: none;
}
label стилизуем как угодно, можно сделать рамку, стили будут применяться к тексту "надпись". Если надо галочку или точку (вместо стандартного переключателя), стилизуем псевдоэлемент :before.