/* https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/ */

:root {
  --slider-height: 7.2em;
  --thumb-shadow: -3px 3px 3px rgba(0, 0, 0, .1);
  --thumb-color: #f7f7f7;
  --track-color: rgba(0, 0, 0, .9);
  --track-radius: 3px;
}

input[type=range] {
  -webkit-appearance: none; /* Hides the slider so that custom slider can be made */
  width: 100%; /* Specific width is required for Firefox. */
  background: transparent; /* Otherwise white in Chrome */
}

input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
}

input[type=range]:focus {
  outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */
}

input[type=range]::-ms-track {
  width: 100%;
  cursor: pointer;

  /* Hides the slider so custom styles can be added */
  background: transparent; 
  border-color: transparent;
  color: transparent;
}

input[type=range]::-webkit-slider-thumb {
  -webkit-appearance: none;
  border: 1px solid var(--border-color);
  height: var(--slider-height);
  width: 16px;
  background: var(--thumb-color);
  box-shadow: var(--thumb-shadow);
  cursor: pointer;
  margin-top: calc(-1 * var(--slider-height) / 2 + 4px); /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */
}

/* All the same stuff for Firefox */
input[type=range]::-moz-range-thumb {
  border: 1px solid var(--border-color);
  height: var(--slider-height);
  width: 16px;
  background: var(--thumb-color);
  box-shadow: var(--thumb-shadow);
  cursor: pointer;
}

/* All the same stuff for IE */
input[type=range]::-ms-thumb {
  border: 1px solid var(--border-color);
  height: var(--slider-height);
  width: 16px;
  background: var(--thumb-color);
  box-shadow: var(--thumb-shadow);
  cursor: pointer;
}

input[type=range]::-webkit-slider-runnable-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  background: var(--track-color);
  border-radius: var(--track-radius);
}

input[type=range]:focus::-webkit-slider-runnable-track {
  background: var(--track-color);
}

input[type=range]::-moz-range-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  background: var(--track-color);
  border-radius: var(--track-radius);
}

input[type=range]::-ms-track {
  width: 100%;
  height: 8.4px;
  cursor: pointer;
  background: transparent;
  border-color: transparent;
  border-width: 16px 0;
  border-radius: var(--track-radius);
  color: transparent;
}
input[type=range]::-ms-fill-lower {
  background: var(--track-color);
  border: 0.2px solid #010101;
}
input[type=range]:focus::-ms-fill-lower {
  background: var(--track-color);
}
input[type=range]::-ms-fill-upper {
  background: var(--track-color);
  border: 0.2px solid #010101;
  box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d;
}
input[type=range]:focus::-ms-fill-upper {
  background: #367ebd;
}