.container {
  line-height: 0;
  height: var(--range-handle-size);
  padding: calc(var(--space) / 2) 0;
  display: flex;
  align-content: center;
  align-items: center;
}

/* Size */
.small {
  --range-bar-size: 6px;
  --range-handle-size: 20px;
}

.normal {
  --range-bar-size: 10px;
  --range-handle-size: 26px;
}

.large {
  --range-bar-size: 14px;
  --range-handle-size: 32px;
}

/* Intents */
.default {
  --range-color: var(--ui-grey-50);
  --range-outline-color: color-mod(var(--ui-grey-50) alpha(30%));
  --range-track-border-color: color-mod(var(--ui-grey-50) alpha(60%));
}

.primary {
  --range-color: var(--color-primary);
  --range-outline-color: color-mod(var(--color-primary) alpha(30%));
  --range-track-border-color: color-mod(var(--color-primary) alpha(60%));
}

.info {
  --range-color: var(--color-info);
  --range-outline-color: color-mod(var(--color-info) alpha(30%));
  --range-track-border-color: color-mod(var(--color-info) alpha(60%));
}

.success {
  --range-color: var(--color-success);
  --range-outline-color: color-mod(var(--color-success) alpha(30%));
  --range-track-border-color: color-mod(var(--color-success) alpha(60%));
}

.danger {
  --range-color: var(--color-danger);
  --range-outline-color: color-mod(var(--color-danger) alpha(30%));
  --range-track-border-color: color-mod(var(--color-danger) alpha(60%));
}

.warning {
  --range-color: var(--color-warning);
  --range-outline-color: color-mod(var(--color-warning) alpha(30%));
  --range-track-border-color: color-mod(var(--color-warning) alpha(60%));
}

.range {
  /* Track */
  position: relative;
  width: 100%;
  height: var(--range-bar-size);
  border: 1px solid var(--range-track-border-color);
  box-sizing: border-box;
  background: var(--ui-white);
  border-radius: calc(var(--range-bar-size) / 2);

  /* Handle */
  & :global(.rangeslider__fill) {
    top: 0;
    display: block;
    height: 100%;
    transition: background-color calc(var(--transition-duration) / 1.5) linear;
    border-radius: calc(var(--range-bar-size) / 2) 0 0
      calc(var(--range-bar-size) / 2);
    background-color: var(--range-color);
    box-shadow: 0 0 0 1px var(--range-color);
    transform: translateZ(0);
  }

  /* Handle */
  & :global(.rangeslider__handle) {
    position: absolute;
    top: 50%;
    display: block;
    width: var(--range-handle-size);
    height: var(--range-handle-size);
    cursor: pointer;
    border-radius: 1000px;
    background-color: var(--ui-white);
    box-sizing: border-box;
    border: 1px solid var(--range-color);
    transform: translateZ(0) translateX(-50%) translateY(-50%);
    transition: box-shadow calc(var(--transition-duration) / 2) linear,
      border calc(var(--transition-duration) / 2) linear;
    outline: none;

    &:focus,
    &:active {
      box-shadow: 0 0 0 3px var(--range-outline-color);
    }

    &:active {
      border-width: 2px;
    }
  }
}

&.horizontal {
  height: var(--range-default-bar-size);
  cursor: pointer;
  border-radius: calc(var(--range-default-bar-size) / 2);
  background-color: var(--range-background-color);
  box-shadow: inset 0 0 0 var(--range-default-border-width)
    var(--range-default-color-base);
}