/* The checkbox */
.checkbox
{
    line-height: 2rem;

    position: relative;

    display: block;

    height: 28px;
    margin-bottom: 1rem;
    padding-left: 35px;

    cursor: pointer;
    /* Hide the browser's default checkbox */
    /* Create a custom checkbox */
    /* On mouse-over, add a grey background color */
    /* When the checkbox is checked, add a blue background */
}
.checkbox input
{
    position: absolute;

    width: 0; 
    height: 0;

    cursor: pointer;

    opacity: 0;
}
.checkbox .checkmark
{
    position: absolute;
    top: 3px;
    left: 0;

    width: 25px;
    height: 25px;

    border: 2px solid #cfd8dc;
    background-color: transparent;
    /* Create the checkmark/indicator (hidden when not checked) */
}
.checkbox .checkmark:after
{
    position: absolute;
    top: 3px;
    left: 8px;

    display: none;

    width: 6px;
    height: 11px;

    content: '';
    -webkit-transform: rotate(45deg);
       -moz-transform: rotate(45deg);
        -ms-transform: rotate(45deg);
         -o-transform: rotate(45deg);
            transform: rotate(45deg); 

    border: solid white;
    border-width: 0 2px 2px 0;
}
.checkbox:hover input ~ .checkmark
{
    border: 2px double #1f4e79;
}
.checkbox:hover input:disabled ~ .checkmark
{
    border: 2px solid #cfd8dc;
}
.checkbox input:checked ~ .checkmark
{
    border: 2px double #1f4e79;
    background-color: #1f4e79;
    /* Show the checkmark when checked */
}
.checkbox input:checked ~ .checkmark:after
{
    display: block;
}
.checkbox input:checked:disabled ~ .checkmark
{
    border: 2px double #cfd8dc;
    background-color: #fff;
}
.checkbox input:checked:disabled ~ .checkmark:after
{
    border-color: rgba(31, 78, 121, .5);
}

/* The Radio */
:focus
{
    outline: none !important;
}

.radio
{
    margin-bottom: .5rem; 
    margin-left: 1rem;

    cursor: pointer;
}
.radio label
{
    position: relative;

    display: inline-block;

    padding-left: 5px; 

    cursor: pointer;
}
.radio label::before
{
    position: absolute;
    top: 6px;
    left: 0;

    display: inline-block;

    width: 17px;
    height: 17px;
    margin-left: -20px;

    content: '';
    -webkit-transition: border .15s ease-in-out;
       -moz-transition: border .15s ease-in-out;
         -o-transition: border .15s ease-in-out;
            transition: border .15s ease-in-out; 

    border: 1px solid #cfd8dc;
    border-radius: 50%;
    background-color: transparent;
}
.radio label::after
{
    position: absolute;
    top: 9px;
    left: 3px;

    display: inline-block;

    width: 11px;
    height: 11px;
    margin-left: -20px;

    content: ' ';
    -webkit-transition: -webkit-transform .1s cubic-bezier(.8, -.33, .2, 1.33);
       -moz-transition:         transform .1s cubic-bezier(.8, -.33, .2, 1.33), -moz-transform .1s cubic-bezier(.8, -.33, .2, 1.33);
         -o-transition:      -o-transform .1s cubic-bezier(.8, -.33, .2, 1.33);
            transition: -webkit-transform .1s cubic-bezier(.8, -.33, .2, 1.33);
            transition:         transform .1s cubic-bezier(.8, -.33, .2, 1.33);
            transition:         transform .1s cubic-bezier(.8, -.33, .2, 1.33), -webkit-transform .1s cubic-bezier(.8, -.33, .2, 1.33), -moz-transform .1s cubic-bezier(.8, -.33, .2, 1.33), -o-transform .1s cubic-bezier(.8, -.33, .2, 1.33); 
    -webkit-transform: scale(0, 0);
       -moz-transform: scale(0, 0);
        -ms-transform: scale(0, 0);
         -o-transform: scale(0, 0);
            transform: scale(0, 0);

    border-radius: 50%;
    background-color: #1f4e79;
}
.radio input[type='radio']
{
    opacity: 0;
}
.radio input[type='radio']:checked + label::after
{
    -webkit-transform: scale(1, 1);
       -moz-transform: scale(1, 1);
        -ms-transform: scale(1, 1);
         -o-transform: scale(1, 1);
            transform: scale(1, 1);
}
.radio input[type='radio']:disabled + label
{
    opacity: .65;
}
.radio input[type='radio']:disabled + label::before
{
    cursor: not-allowed;
}
