/*
 * RangeSlider
 */

.rangeSlider {
  --slider: var(--range-slider, #d7dada);
  --handle-inactive: var(--range-handle-inactive, #99a2a2);
  --handle: var(--range-handle, #838de7);
  --handle-focus: var(--range-handle-focus, #4a40d4);
  --handle-border: var(--range-handle-border, var(--handle));
  --range-inactive: var(--range-range-inactive, var(--handle-inactive));
  --range: var(--range-range, var(--handle-focus));
  --range-limit: var(--range-range-limit, #99a2a280);
  --float-inactive: var(--range-float-inactive, var(--handle-inactive));
  --float: var(--range-float, var(--handle-focus));
  --float-text: var(--range-float-text, white);
}

.rangeSlider {
  position: relative;
  border-radius: 100px;
  height: 0.5em;
  margin: 1em;
  transition: opacity 0.2s ease;
  user-select: none;
}

.rangeSlider * {
  user-select: none;
}

.rangeSlider.pips {
  margin-bottom: 1.8em;
}

.rangeSlider.pip-labels {
  margin-bottom: 2.8em;
}

.rangeSlider.vertical {
  display: inline-block;
  border-radius: 100px;
  width: 0.5em;
  min-height: 200px;
}

.rangeSlider.vertical.pips {
  margin-right: 1.8em;
  margin-bottom: 1em;
}

.rangeSlider.vertical.pip-labels {
  margin-right: 2.8em;
  margin-bottom: 1em;
}

.rangeSlider .rangeHandle {
  position: absolute;
  display: block;
  height: 1.4em;
  width: 1.4em;
  top: 0.25em;
  bottom: auto;
  transform: translateY(-50%) translateX(-50%);
  z-index: 2;
}

.rangeSlider.reversed .rangeHandle {
  transform: translateY(-50%) translateX(50%);
}

.rangeSlider.vertical .rangeHandle {
  left: 0.25em;
  top: auto;
  transform: translateY(50%) translateX(-50%);
}

.rangeSlider.vertical.reversed .rangeHandle {
  transform: translateY(-50%) translateX(-50%);
}

.rangeSlider .rangeNub,
.rangeSlider .rangeHandle:before {
  position: absolute;
  left: 0;
  top: 0;
  display: block;
  border-radius: 10em;
  height: 100%;
  width: 100%;
  transition: box-shadow 0.2s ease;
}

.rangeSlider .rangeHandle:before {
  content: '';
  left: 1px;
  top: 1px;
  bottom: 1px;
  right: 1px;
  height: auto;
  width: auto;
  box-shadow: 0 0 0 0px var(--handle-border);
  opacity: 0;
}

.rangeSlider.hoverable:not(.disabled) .rangeHandle:hover:before {
  box-shadow: 0 0 0 8px var(--handle-border);
  opacity: 0.2;
}

.rangeSlider.hoverable:not(.disabled) .rangeHandle.press:before,
.rangeSlider.hoverable:not(.disabled) .rangeHandle.press:hover:before {
  box-shadow: 0 0 0 12px var(--handle-border);
  opacity: 0.4;
}

.rangeSlider.range:not(.min):not(.max) .rangeNub {
  border-radius: 10em 10em 10em 1.6em;
}

.rangeSlider.range .rangeHandle:nth-of-type(1) .rangeNub {
  transform: rotate(-135deg);
}

.rangeSlider.range .rangeHandle:nth-of-type(2) .rangeNub {
  transform: rotate(45deg);
}

.rangeSlider.range.reversed .rangeHandle:nth-of-type(1) .rangeNub {
  transform: rotate(45deg);
}

.rangeSlider.range.reversed .rangeHandle:nth-of-type(2) .rangeNub {
  transform: rotate(-135deg);
}

.rangeSlider.range.vertical .rangeHandle:nth-of-type(1) .rangeNub {
  transform: rotate(135deg);
}

.rangeSlider.range.vertical .rangeHandle:nth-of-type(2) .rangeNub {
  transform: rotate(-45deg);
}

.rangeSlider.range.vertical.reversed .rangeHandle:nth-of-type(1) .rangeNub {
  transform: rotate(-45deg);
}

.rangeSlider.range.vertical.reversed .rangeHandle:nth-of-type(2) .rangeNub {
  transform: rotate(135deg);
}

.rangeSlider .rangeFloat {
  display: block;
  position: absolute;
  left: 50%;
  top: -0.5em;
  transform: translate(-50%, -100%);
  font-size: 1em;
  text-align: center;
  opacity: 0;
  pointer-events: none;
  white-space: nowrap;
  transition: all 0.2s ease;
  font-size: 0.9em;
  padding: 0.2em 0.4em;
  border-radius: 0.2em;
}

.rangeSlider .rangeHandle.active .rangeFloat,
.rangeSlider.hoverable .rangeHandle:hover .rangeFloat {
  opacity: 1;
  top: -0.2em;
  transform: translate(-50%, -100%);
}

.rangeSlider .rangeBar,
.rangeSlider .rangeLimit {
  position: absolute;
  display: block;
  transition: background 0.2s ease;
  border-radius: 1em;
  height: 0.5em;
  top: 0;
  user-select: none;
  z-index: 1;
}

.rangeSlider.vertical .rangeBar,
.rangeSlider.vertical .rangeLimit {
  width: 0.5em;
  height: auto;
}

.rangeSlider {
  background-color: #d7dada;
  background-color: var(--slider);
}

.rangeSlider .rangeBar {
  background-color: #99a2a2;
  background-color: var(--range-inactive);
}

.rangeSlider.focus .rangeBar {
  background-color: #838de7;
  background-color: var(--range);
}

.rangeSlider .rangeLimit {
  background-color: #99a2a280;
  background-color: var(--range-limit);
}

.rangeSlider .rangeNub {
  background-color: #99a2a2;
  background-color: var(--handle-inactive);
}

.rangeSlider.focus .rangeNub {
  background-color: #838de7;
  background-color: var(--handle);
}

.rangeSlider .rangeHandle.active .rangeNub {
  background-color: #4a40d4;
  background-color: var(--handle-focus);
}

.rangeSlider .rangeFloat {
  color: white;
  color: var(--float-text);
  background-color: #99a2a2;
  background-color: var(--float-inactive);
}

.rangeSlider.focus .rangeFloat {
  background-color: #4a40d4;
  background-color: var(--float);
}

.rangeSlider.disabled {
  opacity: 0.5;
}

.rangeSlider.disabled .rangeNub {
  background-color: #d7dada;
  background-color: var(--slider);
}

/**
 * RangePips
 */

.rangeSlider {
  --pip: var(--range-pip, lightslategray);
  --pip-text: var(--range-pip-text, var(--pip));
  --pip-active: var(--range-pip-active, darkslategrey);
  --pip-active-text: var(--range-pip-active-text, var(--pip-active));
  --pip-hover: var(--range-pip-hover, darkslategrey);
  --pip-hover-text: var(--range-pip-hover-text, var(--pip-hover));
  --pip-in-range: var(--range-pip-in-range, var(--pip-active));
  --pip-in-range-text: var(--range-pip-in-range-text, var(--pip-active-text));
}

.rangePips {
  position: absolute;
  height: 1em;
  left: 0;
  right: 0;
  bottom: -1em;
  font-variant-numeric: tabular-nums;
}

.rangePips.vertical {
  height: auto;
  width: 1em;
  left: 100%;
  right: auto;
  top: 0;
  bottom: 0;
}

.rangePips .pip {
  height: 0.4em;
  position: absolute;
  top: 0.25em;
  width: 1px;
  white-space: nowrap;
}

.rangePips.vertical .pip {
  height: 1px;
  width: 0.4em;
  left: 0.25em;
  top: auto;
  bottom: auto;
}

.rangePips .pipVal {
  position: absolute;
  top: 0.4em;
  transform: translate(-50%, 25%);
}

.rangePips.vertical .pipVal {
  position: absolute;
  top: 0;
  left: 0.4em;
  transform: translate(25%, -50%);
}

.rangePips .pip {
  transition: all 0.15s ease;
}

.rangePips .pipVal {
  transition:
    all 0.15s ease,
    font-weight 0s linear;
}

.rangePips .pip {
  color: lightslategray;
  color: var(--pip-text);
  background-color: lightslategray;
  background-color: var(--pip);
}

.rangePips .pip.selected {
  color: darkslategrey;
  color: var(--pip-active-text);
  background-color: darkslategrey;
  background-color: var(--pip-active);
}

.rangePips.hoverable:not(.disabled) .pip:hover {
  color: darkslategrey;
  color: var(--pip-hover-text);
  background-color: darkslategrey;
  background-color: var(--pip-hover);
}

.rangePips .pip.in-range {
  color: darkslategrey;
  color: var(--pip-in-range-text);
  background-color: darkslategrey;
  background-color: var(--pip-in-range);
}

.rangePips .pip.selected {
  height: 0.75em;
}

.rangePips.vertical .pip.selected {
  height: 1px;
  width: 0.75em;
}

.rangePips .pip.selected .pipVal {
  font-weight: bold;
  top: 0.75em;
}

.rangePips.vertical .pip.selected .pipVal {
  top: 0;
  left: 0.75em;
}

.rangePips.hoverable:not(.disabled) .pip:not(.selected):hover {
  transition: none;
}

.rangePips.hoverable:not(.disabled) .pip:not(.selected):hover .pipVal {
  transition: none;
  font-weight: bold;
}
