/*
  Font family is Nunito Sans. Its fallback is Helvetica
*/
/*
  Font sizes have been converted to rem considering a base size of 16px.
*/
/*
*  Z-Index
*  
*  The z-index CSS property sets the z-order of a positioned element and its descendants or flex items. 
*  Overlapping elements with a larger z-index cover those with a smaller one.
*  
*  REF: https://developer.mozilla.org/en-US/docs/Web/CSS/z-index
*  REF: https://www.smashingmagazine.com/2019/04/z-index-component-based-web-application/  
*/
/**
 * Define media query values
 */
.switch {
  position: relative;
  display: inline-block;
}
.switch--size-tall {
  width: 56px;
  height: 32px;
}
.switch--size-standard {
  width: 42px;
  height: 24px;
}
.switch--size-short {
  width: 32px;
  height: 18px;
}
.switch .focus:focus-visible {
  display: flex;
  position: absolute;
  border: 2px solid var(--color-focus, #c226fb);
  border-radius: 4px;
  width: 100%;
  height: 100%;
  top: -4px;
  left: -4px;
  padding-right: 4px;
  padding-bottom: 4px;
  outline: none;
}

.switch input {
  opacity: 100;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: var(--color-content-ghost, #8c8c8c);
  -webkit-transition: 0.4s;
  transition: 0.4s;
  border-radius: 34px;
}
.slider--size-tall::before {
  position: absolute;
  content: " ";
  left: 4px;
  bottom: 4px;
  top: 4px;
  background-color: var(--color-content-bright, white);
  -webkit-transition: 0.4s;
  transition: 0.4s;
  border-radius: 50%;
  width: 24px;
  height: 24px;
}
.slider--size-standard::before {
  position: absolute;
  content: " ";
  left: 3px;
  bottom: 3px;
  top: 3px;
  background-color: var(--color-content-bright, white);
  -webkit-transition: 0.4s;
  transition: 0.4s;
  border-radius: 50%;
  width: 18px;
  height: 18px;
}
.slider--size-short::before {
  position: absolute;
  content: " ";
  left: 2.25px;
  bottom: 2.25px;
  top: 2.25px;
  background-color: var(--color-content-bright, white);
  -webkit-transition: 0.4s;
  transition: 0.4s;
  border-radius: 50%;
  width: 13.5px;
  height: 13.5px;
}
.slider--deselected-disabled {
  cursor: not-allowed;
  background-color: var(--color-content-ghost, #8c8c8c);
  opacity: 0.5;
}

input:checked + .slider {
  background-color: var(--color-surface-primary, #1e6bf1);
}
input:checked + .slider--selected-disabled {
  cursor: not-allowed;
  opacity: 0.5;
}

input:focus + .slider {
  box-shadow: 0 0 1px #3f7de8;
}
input:focus + .slider--selected-disabled {
  box-shadow: 0 0 1px #b9cbd3;
}
input:focus + .slider--deselected-disabled {
  box-shadow: 0 0 1px #d2dfe6;
}

input:checked + .slider--size-tall::before {
  -webkit-transform: translateX(24px);
  -ms-transform: translateX(24px);
  transform: translateX(24px);
}
input:checked + .slider--size-standard::before {
  -webkit-transform: translateX(18px);
  -ms-transform: translateX(18px);
  transform: translateX(18px);
}
input:checked + .slider--size-short::before {
  -webkit-transform: translateX(13.75px);
  -ms-transform: translateX(13.75px);
  transform: translateX(13.75px);
}