/* Card background must be light, e.g. #f0ede5 */
.cb-brute {
display: inline-flex; align-items: center;
gap: 10px; cursor: pointer; user-select: none;
}
.cb-brute__input { display: none; }
.cb-brute__box {
width: 24px; height: 24px;
border: 2.5px solid #1a1a1a;
box-shadow: 3px 3px 0 #1a1a1a;
background: #fff;
display: flex; align-items: center;
justify-content: center;
font-size: 14px; color: transparent;
cursor: pointer;
transition:
transform .12s, box-shadow .12s,
background .12s, color .12s;
}
.cb-brute__input:checked + .cb-brute__box {
background: #1a1a1a; color: #fff;
transform: translate(2px, 2px);
box-shadow: 1px 1px 0 #1a1a1a;
} <!-- Requires a light background on the parent -->
<label class="cb-brute">
<input class="cb-brute__input" type="checkbox" checked />
<span class="cb-brute__box" aria-hidden="true">✓</span>
<span>Brutalist checkbox</span>
</label>
Live preview Edit any tab — preview updates live Ready