.knobs{
  &[data-flow='compact']{
    .knobs__knob__toggle{
      align-self: flex-start;
      margin-top: 6px;
    }
  }

  &__knob{
    $self: &;
    display: flex;
    justify-content: flex-end;
    position: relative;
    line-height: var(--line-height);
    min-height: 24px;

    &:hover{
      #{$self}__reset{
        // transform: none;
      }

      #{$self}__label__text{
        opacity: 1;
      }
    }

    // only show the "rest" button if knob has changed.
    // this allows the user to know which one was changed, where many knobs exist
    &[data-changed]{
      #{$self}__reset{
        opacity: .75;
        pointer-events: auto;

        &:hover{
          opacity: 1;
          background: var(--textColor);
          color: var(--background);
          transition: 0s;
        }
      }
    }

    &__toggle{
      display: var(--knobs-toggle, none);
      order: 1;
      align-self: center;
      margin: 0 5px 0 0;
      appearance: none;
      width: 12px;
      height: 12px;
      outline: none;
      border-radius: 50%;
      position: relative;
      text-align: center;
      line-height: 10px;

      &::before{
        border: 1px solid var(--textColor);
        opacity: .4;
        border-radius: 3px;
      }

      &::after{
        content: '';
        height: 100%;
        z-index: 5;
        width: 999px;
        position: absolute;
        left: 0;
        pointer-events: none;
      }

      &:hover{
        &::before{
          opacity: 1;
        }
      }

      &:checked{
        &:hover ~ *{
          text-decoration: line-through;
          transition: .15s;
        }

        &::after{
          content: '✔';
          color: var(--textColor);
          font-size: 12px;
          text-shadow: -1px -2px var(--background), 3px -2px var(--background);
          position: relative;
          z-index: 1;
        }
      }

      &:not(:checked){
         ~ *{
          pointer-events: none !important;
          filter: grayscale(50%);
          opacity: .4;
          transition: .2s;

          ::-webkit-slider-thumb { pointer-events: none !important; }
          ::-moz-slider-thumb { pointer-events: none !important; }
        }
      }
    }

    &__reset{
      order: 0;
      pointer-events: none;
      margin-right: .5em;
      padding: 0;
      align-self: center;
      color: inherit;
      background: none;
      border: 0;
      cursor: pointer;
      opacity: .33;
      outline: none;
      border-radius: 50%;
      width: 2ch;
      height: 2ch;
      user-select: none;
      transition: .15s ease-out;
    }

    &__label__text {
      margin-right: 2ch;
      white-space: nowrap;
      display: flex;
      align-items: center;
      opacity: .8;
      transition: 80ms;

      // variable units (if exists)
      &::after{
        content: attr(data-units);
        opacity: .5;
        margin-left: 1ch;
      }
    }
  }
}