This uses standard radio buttons and checkboxes, but adds font icons for flexibility in considering touch devices that need a larger area. One can touch the icon or the label to select. This method places two different icons in the HTML, and just shows or hides the proper icon based on selection.
Radio ButtonSee the Pen by BrianSassaman (@BrianSassaman) on CodePen.