Just a little tip:
If you still want to use all the browser’s native support for radios and check boxes, like moving between them with ↑ and ↓ keys, set the css to:
position: fixed;
opacity: 0;
pointer-events: none;
This will keep all functionality but keep the input hidden, and won’t take up any layout space.
I’ve spent the last 3 hours figuring this out, but it does work!