Module:Flex columns/sandbox/styles.css

/* edit summary for the main module: invert media queries, remove float fallback as flex is well-supported by all MediaWiki-supported browsers, add gap using @supports fallback to padding and large note to go with it, remove unnecessary box-sizing */




/* I wonder why this clears, also seems suspect for a general flex-columns
 * module, see below >div selector rules
 */
.flex-columns-container {
	clear: both;
}

.flex-columns-container > .flex-columns-column {
	display: flex;
	flex-direction: column;
}

/* TODO: these two rules seem suspect for a general flex-columns module and
 * should be moved to some portal-specific variant probably
 * also would need to remove the rule declaring the columns to be display: flex
 * and their associated flex-direction
 */
.flex-columns-container > .flex-columns-column > div {
	flex: 1 0 auto;
}

.flex-columns-container > .flex-columns-column > div.flex-columns-noflex {
	flex: 0;
}

/* the padding in the @supports not case really should just categorically be
 * `gap` rules because having more than two columns flexing isn't pretty
 * with the padding version. however, flex `gap` was released in 2018 for
 * Firefox and 2020 for everyone else, so it's fairly new. honestly kind of
 * surprised that css-sanitizer doesn't yell about it. some percent of browsers
 * (~1.5% pageviews total) right now for the targeted environment (desktop) of
 * these rules will interpret this as `gap` for grid, so they will have no
 * padding and no flex `gap`. seems like a reasonable tradeoff
 * TODO: remove @supports at-rule sometime in 2023 or 2024 when a more
 * significant ratio of viewing browsers support `gap` in flex
 */
@supports (gap: 1em) {
	@media screen and (min-width: 720px) {
		.flex-columns-container {
			gap: 1em;
		}
	}
}

@supports not (gap: 1em) {
	@media screen and (min-width: 720px) {
		.flex-columns-container > .flex-columns-column {
			padding: 0 0.5em;
		}
	
		.flex-columns-container > .flex-columns-column:first-child {
			padding-left: 0;
		}
	
		.flex-columns-container > .flex-columns-column:last-child {
			padding-right: 0;
		}
	}
}

@media screen and (min-width: 720px) {
	.flex-columns-container {
		display: flex;
		flex-wrap: wrap;
	}
	
	.flex-columns-container > .flex-columns-column {
		flex: 1;
		min-width: 360px;
	}
}