About this set
Checkboxes and radio buttons built for dark surfaces, where a light-theme control loses its border and reads as a smudge. The set has a bordered checkbox pair, a radio pair and a selectable card that pairs a checkbox with a title and a description. Every control sits on a slightly raised surface colour with a mid-grey border that stays visible against the near-black page, and the selected state uses a bright cyan accent: the checkbox fills cyan with a dark tick, the radio shows a cyan dot, and the card border turns cyan. Use it for developer tools, dashboards and settings screens in a dark theme. The plain CSS version uses hidden real inputs with drawn sibling boxes, and the card uses :has() for its selected and focused states. The Bootstrap version runs under data-bs-theme=”dark” with .form-check-input controls and a .card, restyled through –bs-form-check-bg, –bs-card-bg and SVG background images. The Tailwind version uses arbitrary colour values with peer-checked and has-[:checked].
What’s included
- Checkbox pair, radio pair and selectable card
- Borders tuned to stay visible on near-black
- Cyan accent with a dark tick for contrast
- Bootstrap version uses data-bs-theme="dark"
- No JavaScript
Accessibility
All controls are real inputs labelled by their visible text, and the radio pair has role="radiogroup" with an aria-label. Borders reach 3:1 against both the page and the raised surface, and captions and descriptions reach 4.5:1. Keyboard focus draws a 2px cyan outline around the box, circle or card, and transitions are disabled under prefers-reduced-motion.
Customise it
Plain CSS: change #22d3ee for the accent, #6b7891 for the borders and #161b23 for the control surface. Bootstrap: set --choice-accent, --choice-border and --choice-surface on .choice-dark and edit the SVG fills. Tailwind: swap the [#22d3ee], [#6b7891] and [#161b23] values in the classes.






