@import 'mediawiki.mixins.less';

/* stylelint-disable selector-class-pattern */

/* Table Sorting */

// Reserve space for table sortable controls
// This selector is not perfect as it will not correctly handle cases with
// merged header cells, so ensure it is removed after the JS has run by using
// the :not( .jquery-tablesorter ) selector.
// It will still prevent a visible jump in the majority of simpler cases.
// The second selector in this rule is for after the JS has run.
.client-js .sortable:not( .jquery-tablesorter ) > * > tr:first-child > th:not( .unsortable ),
.jquery-tablesorter th.headerSort {
	background-image: url( images/sort_both.svg );
	cursor: pointer;
	background-repeat: no-repeat;
	background-position: center right;
	padding-right: 21px;
}

.jquery-tablesorter {
	th.headerSortUp {
		background-image: url( images/sort_up.svg );
	}

	th.headerSortDown {
		background-image: url( images/sort_down.svg );
	}
}

/* forced night mode */
html.skin-theme-clientpref-night.client-js {
	@media screen {
		.sortable:not( .jquery-tablesorter ) > * > tr:first-child > th.headerSort,
		.jquery-tablesorter th.headerSort {
			background-image: url( images/sort_both_inverted.svg );
		}

		.jquery-tablesorter {
			th.headerSortUp {
				background-image: url( images/sort_up_inverted.svg );
			}

			th.headerSortDown {
				background-image: url( images/sort_down_inverted.svg );
			}
		}
	}
}

/* stylelint-disable-next-line plugin/no-unsupported-browser-features */
@media screen and ( prefers-color-scheme: dark ) {
	/* automatic mode */
	html.skin-theme-clientpref-os.client-js {
		.sortable:not( .jquery-tablesorter ) > * > tr:first-child > th.headerSort,
		.jquery-tablesorter th.headerSort {
			background-image: url( images/sort_both_inverted.svg );
		}

		.jquery-tablesorter {
			th.headerSortUp {
				background-image: url( images/sort_up_inverted.svg );
			}

			th.headerSortDown {
				background-image: url( images/sort_down_inverted.svg );
			}
		}
	}
}
