.rooster-admin-checks {
	@apply grid grid-cols-[repeat(auto-fill,minmax(16rem,1fr))] gap-x-4 gap-y-1;
}

.rooster-admin-check {
	@apply flex cursor-pointer items-start gap-2 py-1 text-sm leading-[1.4];
}

.rooster-admin-check input {
	@apply mb-0 ms-0 me-0 flex-none;
}

/* A check or a switch on WordPress's own form (0.68.5, Rooster One's request 48: a check in an island on the add-term
   form, its box touching its words): core's `.form-wrap label` (display block, 2px padding; 0,1,1) and
   `.form-table td fieldset label` (inline-block) outrank the recipe's one class, and a block has no gap. In the chrome
   and in an island the display (and the check's padding) holds at two classes; only what core sets, so a filter bar's
   switch stays centred, and a bare one (the input itself) keeps its own (kit.css). */
:is(.rooster-admin-has-chrome, .rooster-admin-island, .rooster-admin-app) .rooster-admin-check:where(:not(.is-bare)) {
	@apply flex py-1;
}

:is(.rooster-admin-has-chrome, .rooster-admin-island, .rooster-admin-app) .rooster-admin-switch:where(:not(.is-bare)) {
	@apply inline-flex;
}

/* A check's box on its label's first line, wherever the label sits (0.65.0, Rooster One's sweep: a check in a notice
   sat 1 px off, one in a product's <p> 4.5 px): the box takes its label's line height, and its top margin is half what
   that line has over the box's 16 px; over the choice control's m-0 and core's `.wp-admin p label input` (-4 px; this
   one is its equal and comes after it). A bare check (no text: a table's cell) keeps none. */
:is(.rooster-admin-has-chrome, .rooster-admin-island, .rooster-admin-app)
	.rooster-admin-check:where(:not(.is-bare))
	> input:is([type="checkbox"], [type="radio"]),
.rooster-admin-has-chrome p label input:is([type="checkbox"], [type="radio"]) {
	font-size: inherit;
	line-height: inherit;
	margin-top: 2px;
	margin-top: calc((1lh - 1rem) / 2);
}
