src/forms/radio/style.scss
.radio { position: relative; }
.radio > label > input {
position: absolute;
margin: 0;
padding: 0;
opacity: 0;
z-index: -1;
box-sizing: border-box;
}
.radio > label > .icon {
position: absolute;
top: .15rem;
left: 0;
display: block;
width: 1.4rem;
height: 1.4rem;
text-align: center;
user-select: none;
border-radius: .7rem;
background-repeat: no-repeat;
background-position: center center;
background-size: 50% 50%;
}
.radio:not(.active) > label > .icon {
background-color: #ddd;
border: 1px solid #bbb;
}
.radio > label > input:focus ~ .icon {
outline: 0;
border: 1px solid #66afe9;
box-shadow: inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);
}
.radio.active > label > .icon {
background-size: 1rem 1rem;
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxjaXJjbGUgY3g9IjUiIGN5PSI1IiByPSI0IiBmaWxsPSIjZmZmIi8+PC9zdmc+);
}
.radio.active .btn-default { filter: brightness(75%); }
.radio.disabled > label > .icon,
.radio.readonly > label > .icon,
.btn.readonly {
filter: alpha(opacity=65);
box-shadow: none;
opacity: .65;
}
label.btn > input[type=radio] {
position: absolute;
clip: rect(0,0,0,0);
pointer-events: none;
}