.x-switch {
  position: relative;
  display: inline-block;
  width: 40px;
  height: 20px;
}
.x-switch.disabled {
  opacity: 0.6;
  pointer-events: none;
}
.x-switch.inset {
  width: 48px;
  height: 28px;
}
.x-switch--track {
  position: absolute;
  top: 3px;
  left: 2px;
  right: 2px;
  bottom: 3px;
  background-color: currentColor;
  border-radius: 7px;
  opacity: 0.38;
  -webkit-transition: opacity 0.3s ease-out;
  transition: opacity 0.3s ease-out;
}
.inset .x-switch--track {
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 14px;
}
.x-switch.active:not(.loading) .x-switch--track {
  opacity: 1;
}
.x-switch--thumb {
  position: absolute;
  width: 20px;
  height: 20px;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
      -ms-flex-align: center;
          align-items: center;
  -webkit-box-pack: center;
      -ms-flex-pack: center;
          justify-content: center;
  border-radius: 50%;
  font-size: 16px;
  background-color: #fff;
  -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
          box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);
  -webkit-transition: 0.3s ease-out;
  transition: 0.3s ease-out;
}
.x-switch.inset .x-switch--thumb {
  top: 4px;
  left: 4px;
  -webkit-box-shadow: none;
          box-shadow: none;
}
.x-switch.active .x-switch--thumb, .x-switch.active .x-switch--ripple {
  -webkit-transform: translateX(20px);
          transform: translateX(20px);
}
.x-switch--ripple {
  position: absolute;
  top: -8px;
  left: -8px;
  width: 20px;
  height: 20px;
  padding: 8px;
  border-radius: 50%;
  overflow: hidden;
  -webkit-box-sizing: content-box;
          box-sizing: content-box;
  -webkit-transition: 0.3s ease-out;
  transition: 0.3s ease-out;
}
.x-switch.inset .x-switch--ripple {
  top: -4px;
  left: -4px;
}