.switch input {
    display: none;
}
.switch i {
    display: inline-block;
    cursor: pointer;
    padding-right: 20px;
    transition: all ease 0.2s;
    -webkit-transition: all ease 0.2s;
    border-radius: 20px;
    box-shadow: inset 0 0 1px rgba(0,0,0,.5);
}
.switch i:before {
    display: block;
    content: '';
    width: 20px;
    height: 20px;
    border-radius: 20px;
    background: white;
    box-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.switch :checked + i {
    padding-right: 0;
    padding-left: 20px;
    box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px #58cb34;
    -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px #58cb34;
}

.switch.red :checked + i {
    box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px red;
    -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px red;
}

/* ORIGINAL
.switch input {
    display: none;
}
.switch i {
    display: inline-block;
    cursor: pointer;
    padding-right: 20px;
    transition: all ease 0.2s;
    -webkit-transition: all ease 0.2s;
    border-radius: 20px;
    box-shadow: inset 0 0 1px rgba(0,0,0,.5);
}
.switch i:before {
    display: block;
    content: '';
    width: 20px;
    height: 20px;
    border-radius: 20px;
    background: white;
    box-shadow: 0 1px 2px rgba(0,0,0,.5);
}
.switch :checked + i {
    padding-right: 0;
    padding-left: 20px;
    box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px #e3eddc;
    -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px #e3eddc;
}

.switch.red :checked + i {
    box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px red;
    -webkit-box-shadow: inset 0 0 1px rgba(0,0,0,.5), inset 0 0 40px red;
}
*/