/*
 * Citizen
 *
 * Module: mediawiki.skinning.content.tables
 * Version: REL1_39
 *
 * Date: 2024-02-26
*/

// TODO: Revisit on MW 1.43 since Minerva table styles are merged upstream
.wikitable {
	display: block;
	max-width: max-content; // Needed for the border
	margin: var( --space-md ) 0;
	overflow-x: auto;
	font-size: var( --font-size-small );
	border-collapse: collapse;
	border-color: var( --border-color-base );
	border-radius: var( --border-radius-medium );
	box-shadow: var( --box-shadow-border );

	caption {
		padding: var( --space-xs ) var( --space-sm );
		font-size: var( --font-size-medium );
		font-weight: var( --font-weight-semi-bold );
		color: var( --color-emphasized );
		text-align: start;
	}

	tbody tr {
		&:hover {
			background-color: var( --background-color-button-quiet--hover );
		}
	}

	th {
		text-align: start;
	}

	th,
	td {
		padding: var( --space-xs ) var( --space-sm );
	}

	tr {
		&:first-of-type {
			th,
			td {
				&:first-child {
					border-left-width: 0;
					border-top-left-radius: var( --border-radius-medium );
				}

				&:last-child {
					border-right-width: 0;
					border-top-right-radius: var( --border-radius-medium );
				}
			}
		}

		&:last-of-type {
			th,
			td {
				&:first-child {
					border-left-width: 0;
					border-bottom-left-radius: var( --border-radius-medium );
				}

				&:last-child {
					border-right-width: 0;
					border-bottom-right-radius: var( --border-radius-medium );
				}
			}
		}
	}

	/* Add border separator between caption, tr, thead, tbody, tfoot */
	> :where( caption, tr, thead, tbody, tfoot ):not( [ hidden ] ) ~ :where( caption, tr, thead, tbody, tfoot ):not( [ hidden ] ),
	> :where( thead, tbody, tfoot ) > :where( tr, thead, tbody, tfoot ):not( [ hidden ] ) ~ :where( tr, thead, tbody, tfoot ):not( [ hidden ] ) {
		border-top: var( --border-width-base ) solid var( --border-color-base );
	}

	/* Reset border radius between thead tbody, tbody tfoot, etc. */
	> :where( thead, tbody, tfoot ):has( + :where( thead, tbody, tfoot ):not( :empty ) ) {
		tr:last-of-type {
			th,
			td {
				&:first-child {
					border-bottom-left-radius: var( --border-radius-sharp );
				}

				&:last-child {
					border-bottom-right-radius: var( --border-radius-sharp );
				}
			}
		}
	}

	> :where( thead, tbody, tfoot ) + :where( thead, tbody, tfoot ):not( :empty ) {
		tr:first-of-type {
			th,
			td {
				&:first-child {
					border-top-left-radius: var( --border-radius-sharp );
				}

				&:last-child {
					border-top-right-radius: var( --border-radius-sharp );
				}
			}
		}
	}

	&--border {
		tr {
			> :is( th, td ):not( [ hidden ] ) {
				border-right: var( --border-width-base ) solid var( --border-color-base );
				border-left: var( --border-width-base ) solid var( --border-color-base );

				&:first-child {
					border-left: 0;
				}

				&:last-child {
					border-right: 0;
				}
			}
		}
	}

	&--stripe {
		tbody tr:nth-child( even ) {
			background-color: var( --color-surface-2 );
		}
	}
}
