input[type="checkbox"] {
    margin: 5px;
    appearance: none;
    -webkit-appearance: none;
    width: 3.1em;
    height: 1.5em;
    line-height: 1.5em;
    background-color: #ddd;
    border-radius: 3em;
    position: relative;
    cursor: pointer;
    outline: 0;
    border: none;
}

input[type="checkbox"]:checked {
    background-color: #0c0;
}

input[type="checkbox"]:after {
    position: absolute;
    content: "";
    width: 1.5em;
    height: 1.5em;
    border-radius: 50%;
    background-color: #fff;
    box-shadow: 0 0.1em 0.25em #999;
    left: 0;
}

input[type="checkbox"]:hover:after {
    box-shadow: 0 0.1em 0.5em #333;
    transition: box-shadow ease-in-out;
    transition-duration: 0.3s;
}

input[type="checkbox"]:checked:after {
    left: calc(100% - 1.4em);
}

input[type="checkbox"][disabled] {
    cursor: not-allowed;
}

input[type="checkbox"][disabled]:after {
    opacity: 0.7;
}

input[type="checkbox"]:checked[disabled] {
    background-color: #0c0;
}

input[type="checkbox"]:focus, input[type="checkbox"]:focus:after {
    transition: all ease-in-out;
    transition-duration: 200ms;
}
