/* checkbox - base */
.checkbox { padding-left: 15px; }
.checkbox label { min-width: 250px; display: inline-block; vertical-align: middle; position: relative; padding-left: 5px; }
.checkbox label::before { content: ""; display: inline-block; position: absolute; width: 17px; height: 17px; left: 0; top: 3px; margin-left: -20px; border: 1px solid #cccccc; border-radius: 3px; background-color: #fff; transition: border 0.15s ease-in-out, color 0.15s ease-in-out; }
.checkbox label::after { display: inline-block; position: absolute; width: 16px; height: 16px; left: 0; top: 0; margin-left: -20px; font-size: 18px; line-height: 17px; color: #555555; }
.checkbox input[type="checkbox"], .checkbox input[type="radio"] { opacity: 0; z-index: 1; cursor: pointer; }
.checkbox input[type="checkbox"]:focus + label::before, .checkbox input[type="radio"]:focus + label::before { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; }
.checkbox input[type="checkbox"]:checked + label::after, .checkbox input[type="radio"]:checked + label::after { font-family: "bootstrap-icons"; font-weight: normal; content: "\f26a"; /* bi-check-circle-fill */ }

/* checkbox - indeterminate state (drawn dash, no icon font) */
.checkbox input[type="checkbox"]:indeterminate + label::after, .checkbox input[type="radio"]:indeterminate + label::after { display: block; content: ""; width: 10px; height: 3px; background-color: #555555; border-radius: 2px; margin-left: -16.5px; margin-top: 7px; }

/* checkbox - disabled state */
.checkbox input[type="checkbox"]:disabled, .checkbox input[type="radio"]:disabled { cursor: not-allowed; }
.checkbox input[type="checkbox"]:disabled + label, .checkbox input[type="radio"]:disabled + label { opacity: 0.65; }
.checkbox input[type="checkbox"]:disabled + label::before, .checkbox input[type="radio"]:disabled + label::before { background-color: #eeeeee; cursor: not-allowed; }

/* checkbox - modifiers */
.checkbox.checkbox-circle label::before { border-radius: 50%; }
.checkbox.checkbox-inline { margin-top: 0; }

/* checkbox - color variants (checked) */
.checkbox-primary input[type="checkbox"]:checked + label::before, .checkbox-primary input[type="radio"]:checked + label::before { background-color: #337ab7; border-color: #337ab7; }
.checkbox-danger input[type="checkbox"]:checked + label::before, .checkbox-danger input[type="radio"]:checked + label::before { background-color: #d9534f; border-color: #d9534f; }
.checkbox-info input[type="checkbox"]:checked + label::before, .checkbox-info input[type="radio"]:checked + label::before { background-color: #5bc0de; border-color: #5bc0de; }
.checkbox-warning input[type="checkbox"]:checked + label::before, .checkbox-warning input[type="radio"]:checked + label::before { background-color: #f0ad4e; border-color: #f0ad4e; }
.checkbox-success input[type="checkbox"]:checked + label::before, .checkbox-success input[type="radio"]:checked + label::before { background-color: #5cb85c; border-color: #5cb85c; }
.checkbox-primary input[type="checkbox"]:checked + label::after, .checkbox-primary input[type="radio"]:checked + label::after, .checkbox-danger input[type="checkbox"]:checked + label::after, .checkbox-danger input[type="radio"]:checked + label::after, .checkbox-info input[type="checkbox"]:checked + label::after, .checkbox-info input[type="radio"]:checked + label::after, .checkbox-warning input[type="checkbox"]:checked + label::after, .checkbox-warning input[type="radio"]:checked + label::after, .checkbox-success input[type="checkbox"]:checked + label::after, .checkbox-success input[type="radio"]:checked + label::after { color: #fff; }

/* checkbox - color variants (indeterminate) */
.checkbox-primary input[type="checkbox"]:indeterminate + label::before, .checkbox-primary input[type="radio"]:indeterminate + label::before { background-color: #337ab7; border-color: #337ab7; }
.checkbox-danger input[type="checkbox"]:indeterminate + label::before, .checkbox-danger input[type="radio"]:indeterminate + label::before { background-color: #d9534f; border-color: #d9534f; }
.checkbox-info input[type="checkbox"]:indeterminate + label::before, .checkbox-info input[type="radio"]:indeterminate + label::before { background-color: #5bc0de; border-color: #5bc0de; }
.checkbox-warning input[type="checkbox"]:indeterminate + label::before, .checkbox-warning input[type="radio"]:indeterminate + label::before { background-color: #f0ad4e; border-color: #f0ad4e; }
.checkbox-success input[type="checkbox"]:indeterminate + label::before, .checkbox-success input[type="radio"]:indeterminate + label::before { background-color: #5cb85c; border-color: #5cb85c; }
.checkbox-primary input[type="checkbox"]:indeterminate + label::after, .checkbox-primary input[type="radio"]:indeterminate + label::after, .checkbox-danger input[type="checkbox"]:indeterminate + label::after, .checkbox-danger input[type="radio"]:indeterminate + label::after, .checkbox-info input[type="checkbox"]:indeterminate + label::after, .checkbox-info input[type="radio"]:indeterminate + label::after, .checkbox-warning input[type="checkbox"]:indeterminate + label::after, .checkbox-warning input[type="radio"]:indeterminate + label::after, .checkbox-success input[type="checkbox"]:indeterminate + label::after, .checkbox-success input[type="radio"]:indeterminate + label::after { background-color: #fff; }

/* radio - base */
.radio { padding-left: 20px; }
.radio label { display: inline-block; vertical-align: middle; position: relative; padding-left: 5px; }
.radio label::before { content: ""; display: inline-block; position: absolute; width: 17px; height: 17px; left: 0; margin-left: -20px; border: 1px solid #cccccc; border-radius: 50%; background-color: #fff; transition: border 0.15s ease-in-out; }
.radio label::after { display: inline-block; position: absolute; content: " "; width: 11px; height: 11px; left: 3px; top: 3px; margin-left: -20px; border-radius: 50%; background-color: #555555; transform: scale(0, 0); transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33); }
.radio input[type="radio"] { opacity: 0; z-index: 1; cursor: pointer; }
.radio input[type="radio"]:focus + label::before { outline: thin dotted; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; }
.radio input[type="radio"]:checked + label::after { transform: scale(1, 1); }

/* radio - disabled state */
.radio input[type="radio"]:disabled { cursor: not-allowed; }
.radio input[type="radio"]:disabled + label { opacity: 0.65; }
.radio input[type="radio"]:disabled + label::before { cursor: not-allowed; }

/* radio - modifiers */
.radio.radio-inline { margin-top: 0; }

/* radio - color variants */
.radio-primary input[type="radio"] + label::after { background-color: #337ab7; }
.radio-primary input[type="radio"]:checked + label::before { border-color: #337ab7; }
.radio-primary input[type="radio"]:checked + label::after { background-color: #337ab7; }
.radio-danger input[type="radio"] + label::after { background-color: #d9534f; }
.radio-danger input[type="radio"]:checked + label::before { border-color: #d9534f; }
.radio-danger input[type="radio"]:checked + label::after { background-color: #d9534f; }
.radio-info input[type="radio"] + label::after { background-color: #5bc0de; }
.radio-info input[type="radio"]:checked + label::before { border-color: #5bc0de; }
.radio-info input[type="radio"]:checked + label::after { background-color: #5bc0de; }
.radio-warning input[type="radio"] + label::after { background-color: #f0ad4e; }
.radio-warning input[type="radio"]:checked + label::before { border-color: #f0ad4e; }
.radio-warning input[type="radio"]:checked + label::after { background-color: #f0ad4e; }
.radio-success input[type="radio"] + label::after { background-color: #5cb85c; }
.radio-success input[type="radio"]:checked + label::before { border-color: #5cb85c; }
.radio-success input[type="radio"]:checked + label::after { background-color: #5cb85c; }

/* styled modifier - simple check icon instead of check-circle */
input[type="checkbox"].styled:checked + label::after, input[type="radio"].styled:checked + label::after { font-family: "bootstrap-icons"; font-weight: normal; content: "\f633"; /* bi-check-lg */ }