This is a very clean way to replace browsers native radio and checkbox buttons with custom ones by using a pseudo element on the label. You can even use a glyph if you want (like a check ✔ for example) with a CSS property content
on the .custom_input input[type="radio/checkbox"]:checked + .label:before {}
.
See the Pen Custom CSS Radio/CheckBox Buttons by Pedro Lopes (@ORiOn16) on CodePen.