<p>체크되어 있지 않은 체크박스</p>
<input type="checkbox">
<hr>
<p>체크되어 있는 체크박스</p>
<input type="checkbox" checked>
브라우저에서 실제 표시된 모습
크롬 브라우저에서 표현되는 체크박스
크롬 브라우저에서 표현되는 체크박스 캡쳐화면
[type="checkbox"] {
    background-color: red;
    border-radius: 50%;
}
[type="checkbox"] {
    width: 50px;
    height: 50px;
}
브라우저에서 실제 표시된 모습
[type="checkbox"] {
    width: 50px;
    height: 50px;
    accent-color: red;
}
브라우저에서 실제 표시된 모습
[type="checkbox"] {
    width: 50px;
    height: 50px;
    accent-color: yellow;
}
브라우저에서 실제 표시된 모습 체크 아이콘 모양은 가독성과 대비를 보장하기 위해서 브라우저가 자동으로 색상을 지정합니다.
실제 적용된 모습 미리보기
<input type="checkbox" name="checkbox-test"> <!--체크되지 않은 체크박스 -->
<input type="checkbox" name="checkbox-test" checked> <!--체크되어 있는 상태의 체크박스 -->
[type="checkbox"] {
    appearance: none; /* 기본(네이티브) 모양을 제거 */
    box-sizing: border-box;
    background-clip: content-box;
    padding: 0.25em;
    width: 1.5em;
    height: 1.5em;
    border: 1px solid gray;
    cursor: pointer;
}
[type="checkbox"]:checked {
    border-color: yellowgreen;
    background-color: yellowgreen;
}
실제 적용된 모습 미리보기 - 동그라미 체크박스
<div class="control-container">
    <input type="checkbox" id="a" class="screen-reader">
    <div class="label-box">
        <span class="check-icon" aria-hidden="true"></span>
        <label for="a">체크되어 있지 않은 체크박스</label>
    </div>
</div>
<div class="control-container">
    <input type="checkbox" checked id="b" class="screen-reader">
    <div class="label-box">
        <span class="check-icon" aria-hidden="true"></span>
        <label for="b">체크되어 있는 체크박스</label>
    </div>
</div>
.control-container {
    display: flex;
    position: relative;
}
.control-container + .control-container {
    margin-top: 0.7em;
}
.screen-reader { /* 스크린 리더를 고려해서 체크박스를 화면에서 숨김 */
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    border: 0;
    overflow: hidden;
    margin: -1px;
    clip-path: inset(50%);
}
.label-box {
    position: relative;
}
.check-icon {
    width: 1.4em;
    height: 1.4em;
    border-radius: 50%;
    background-color: #fff;
    border: 1px solid gray;
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
}
.check-icon::before {
    content: "";
    position: absolute;
    box-sizing: border-box;
    width: 30%;
    height: 55%;
    left: 50%;
    top: 50%;
    transform: translateX(-50%) translateY(-70%) rotateZ(40deg);
    border-right: 1.7px solid gray;
    border-bottom: 1.7px solid gray;
}
label {
    padding-left: 2.2em;
    position: relative;
    cursor: pointer;
}
[type="checkbox"]:checked + .label-box .check-icon {
    border-color:  yellowgreen;
    background-color: yellowgreen;
}
[type="checkbox"]:checked + .label-box .check-icon::before {
    border-color: #fff;
}