.input__checkbox { display: inline-flex; margin: 1px 0; overflow: hidden; } .input__checkbox:not(.input__checkbox--disabled) { cursor: pointer; } .input__checkbox--radio .input__checkbox__display, .input__checkbox--radio .input__checkbox__display__icon { border-radius: 100%; } .input__checkbox__input { display: inline-block; position: absolute; z-index: -1000; top: -100%; } .input__checkbox__display { display: inline-block; width: 20px; height: 20px; border: 1px solid #222; background: #222; color: #fff; border-radius: 2px; box-shadow: inset 0 0 4px #111; transition: border-color .2s; } .input__checkbox__display__icon { background-color: var(--accent-colour); background-size: 28px 28px; background-image: radial-gradient(ellipse at center, rgba(255, 255, 255, .2) 0%, rgba(0, 0, 0, .4) 100%); box-shadow: 0 0 2px #111; border-radius: 2px; margin: 2px; width: 14px; height: 14px; opacity: 0; transition: opacity .2s; } .input__checkbox__input:checked ~ .input__checkbox__display .input__checkbox__display__icon { opacity: 1; } .input__checkbox:not(.input__checkbox--disabled):hover .input__checkbox__display, .input__checkbox:not(.input__checkbox--disabled) .input__checkbox__input:focus ~ .input__checkbox__display { border-color: var(--accent-colour); } .input__checkbox__text { display: inline-block; margin-left: 4px; } .input__checkbox--disabled { opacity: .5; }