/* stylelint-disable order/properties-alphabetical-order */
/* stylelint-disable no-duplicate-selectors */
body {
  overscroll-behavior: none;
  /*
  Firefox custom scrollbars
  https://drafts.csswg.org/css-scrollbars-1/
  */
  scrollbar-color: var(--disabled) var(--surface-2xl); /* colors don't change on body scrollbar, only scrollable containers  */
  scrollbar-width: thin;
}

/*
Chrome custom scrollbars (hasn't implemented spec)
https://webkit.org/blog/363/styling-scrollbars/
https://css-tricks.com/the-current-state-of-styling-scrollbars/

.has-scrollbars-always is manually added at application boot time
*/
.has-scrollbars-always ::-webkit-scrollbar {
  height: 0.75rem; /* vertical */
  width: 0.75rem; /* horizontal */
}

.has-scrollbars-always ::-webkit-scrollbar-track,
.has-scrollbars-always ::-webkit-scrollbar-corner {
  background-color: var(--surface-2xl);
}

.has-scrollbars-always ::-webkit-scrollbar-thumb {
  background-color: var(--disabled);
  border: 2px solid var(--surface-2xl);
  border-radius: 0.75rem;
  min-height: 2rem;
}

.has-scrollbars-always ::-webkit-scrollbar-thumb:hover {
  background-color: var(--primary-idle);
}

@supports (--css: variables) {
	input[type="range"].multirange {
		padding: 0;
		margin: 0;
		display: inline-block;
		vertical-align: top;
	}
		input[type="range"].multirange::-moz-range-thumb {
			transform: scale(1); /* FF doesn't apply position it seems */
		}

	input[type="range"].multirange.original {
		position: absolute;
	}

		input[type="range"].multirange.original::-webkit-slider-thumb {
			position: relative;
			z-index: 2;
		}

		input[type="range"].multirange.original::-moz-range-thumb {
			z-index: 2;
		}

		input[type="range"].multirange::-moz-range-track {
			border-color: transparent; /* needed to switch FF to "styleable" control */
		}

	input[type="range"].multirange.middle {
		position: absolute;
		-webkit-appearance: none;
	}
		input[type="range"].multirange.middle:focus {
			outline: none;
		}
		input[type="range"].multirange.middle::-moz-range-thumb {
			position: relative;
			z-index: 1;
			height: 9px;
			width: var(--size);
			margin-top: 6px;
			margin-bottom: 6px;
			background: transparent;
			cursor: pointer;
			border: 0;
		}
		input[type="range"].multirange.middle::-webkit-slider-thumb {
			position: relative;
			z-index: 1;
			height: 9px;
			width: var(--size);
			margin-top: 6px;
			margin-bottom: 6px;
			background: transparent;
			-webkit-appearance: none;
			cursor: pointer;
		}

	input[type="range"].multirange.ghost {
		position: relative;
		background: var(--track-background);
		--track-background: linear-gradient(to right,
				transparent var(--low), var(--range-color) 0,
				var(--range-color) var(--high), transparent 0
			) no-repeat 0 45% / 100% 40%;
		--range-color: hsl(190, 80%, 40%);
	}

		input[type="range"].multirange.ghost::-webkit-slider-runnable-track {
			background: var(--track-background);
		}

		input[type="range"].multirange.ghost::-moz-range-track {
			background: var(--track-background);
		}
		input[type="range"].multirange.ghost::-webkit-slider-thumb {
			position: relative;
			z-index: 2;
		}
		input[type="range"].multirange.ghost::-moz-range-thumb {
			z-index: 2;
		}
}

/* IE */
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {

	input[type="range"].multirange {
		padding: 0;
		vertical-align: top;
	}
		input[type="range"].multirange::-ms-track {
			color: transparent; /* Hide tick marks */
			background: transparent;
			border: 0;
		}
		input[type="range"].multirange::-ms-fill-lower {
			background: transparent;
		}
		input[type="range"].multirange::-ms-fill-upper {
			background: transparent;
		}
	
	input[type="range"].multirange.original {
		position: absolute;
	}
		input[type="range"].multirange.original::-ms-track {
			background: hsl(190, 80%, 40%);
		}
		input[type="range"].multirange.original::-ms-fill-lower {
			background: #ddd;
		}

	input[type="range"].multirange.middle {
		position: absolute;
	}

	input[type="range"].multirange.ghost {
		position: relative;
	}
		input[type="range"].multirange.ghost::-ms-fill-upper {
			background: #ddd;
		}

	/* Switch colors when inputs are switched, see JavaScript */

	input[type="range"].multirange.switched.original::-ms-fill-lower {
		background: transparent;
	}
	input[type="range"].multirange.switched.original::-ms-fill-upper {
		background: #ddd;
	}

	input[type="range"].multirange.switched.ghost::-ms-fill-upper {
		background: transparent;
	}
	input[type="range"].multirange.switched.ghost::-ms-fill-lower {
		background: #ddd;
	}
}

