.funkyradio {

  div {
    clear: both;
    overflow: hidden;
  }

  label {
    width: 100%;
    border-radius: 3px;
    border: 1px solid #d1d3d4;
    font-weight: normal;
  }

  input[type="radio"],
  input[type="checkbox"] {

    &:empty {
      display: none;

      ~ label {
        position: relative;
        line-height: 2.5em;
        text-indent: 3.25em;
        margin-top: 2em;
        cursor: pointer;
        user-select: none;

        &:before {
          position: absolute;
          display: block;
          top: 0;
          bottom: 0;
          left: 0;
          content: '';
          width: 2.5em;
          background: #d1d3d4;
          border-radius: 3px 0 0 3px;
        }
      }
    }

    &:hover:not(:checked) ~ label {
      color: #888;

      &:before {
        content: '\2714'; // '\f06e' eye
        text-indent: .9em;
        color: #c2c2c2;
      }
    }

    &:checked ~ label {
      color: #777;

      &:before {
        content: '\2714';
        text-indent: .9em;
        color: #333;
        background-color: #ccc;
      }
    }

    &:focus ~ label:before {
      box-shadow: 0 0 0 3px #999;
    }
  }

  &-default {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #333;
        background-color: #ccc;
      }
    }
  }

  &-primary {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #fff;
        background-color: #337ab7;
      }
    }
  }

  &-success {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #fff;
        background-color: #5cb85c;
      }
    }
  }

  &-danger {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #fff;
        background-color: #d9534f;
      }
    }
  }

  &-warning {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #fff;
        background-color: #f0ad4e;
      }
    }
  }

  &-info {
    input[type="radio"],
    input[type="checkbox"] {
      &:checked ~ label:before {
        color: #fff;
        background-color: #5bc0de;
      }
    }
  }
}

ul.funkyradio {
  li {
    list-style: none;
    display: inline;
    //clear: both;
    //overflow: hidden;
  }
  padding-left: 0;
  input[type="radio"],
  input[type="checkbox"] {
    &:empty {
      ~ label {
        margin: 0;
      }
    }
  }
}
