@charset "UTF-8";

/*
This is needed because Chrome sometimes thinks the bundled stylesheet is Windows-1252 instead of UTF-8 for some reason.
Also, ensure this file is saved *without* the UTF-8 BOM.
*/

@font-face {
	font-family: SegoeUI-Light;
	font-display: swap;
	src:
		local('Segoe UI Light'),
		local('SegoeUI-Light'),
		local('Segoe WP Light')/*,
		url(/versionless/webfonts/segoeui_light.woff2) format('woff2'),
		url(/versionless/webfonts/segoeui_light.woff) format('woff'),
		url(/versionless/webfonts/segoeui_light.ttf) format('truetype')*/
}

@font-face {
	font-family: SegoeUI-SemiLight;
	font-display: swap;
	src:
		local('Segoe UI Semilight'),
		local('SegoeUI-Semilight'),
		local('Segoe WP Semilight')/*,
		url(/versionless/webfonts/segoeui_semilight.woff2) format('woff2'),
		url(/versionless/webfonts/segoeui_semilight.woff) format('woff'),
		url(/versionless/webfonts/segoeui_semilight.ttf) format('truetype')*/
}

@font-face {
	font-family: SegoeUI;
	font-display: swap;
	src:
		local('Segoe UI'),
		local('SegoeUI'),
		local('Segoe WP')/*,
		url(/versionless/webfonts/segoeui_regular.woff2) format('woff2'),
		url(/versionless/webfonts/segoeui_regular.woff) format('woff'),
		url(/versionless/webfonts/segoeui_regular.ttf) format('truetype')*/
}

@font-face {
	font-family: SegoeUI-SemiBold;
	font-display: swap;
	src:
		local('Segoe UI Semibold'),
		local('SegoeUI-Semibold'),
		local('Segoe WP Semibold')/*,
		url(/versionless/webfonts/segoeui_semibold.woff2) format('woff2'),
		url(/versionless/webfonts/segoeui_semibold.woff) format('woff'),
		url(/versionless/webfonts/segoeui_semibold.ttf) format('truetype')*/
}


body {
	/*font-family: -apple-system,BlinkMacSystemFont,SegoeUI-SemiBold,Segoe UI,Roboto,Noto Sans,Ubuntu,Droid Sans,Helvetica Neue,sans-serif; commented out because I don't think `SegoeUI-SemiBold` should be a body font. But see in User.master.css though... */
	font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Droid Sans,Helvetica Neue,sans-serif;
	font-weight: 400;
	font-size: 14px; /* This is Rss1's font-size on <body>, the Chrome default is 16px otherwise. */
	padding: 1px 0.5em; /* Padding is `0 10px` in the old style, 0.5em is 7px in this sheet. */
	padding: 1px 10px; /* Nvm, 10px honestly looks better. */
	max-width: 1360px;
	max-width: 1600px; /* 1600px wide with the shop-chat sidebar */
	margin: 0 auto;

	/* This is the background from the Fabric.css I was experimenting with. I don't think this really adds any value... */
	/*background-image: linear-gradient(to bottom, white, white 50px, #fafafa);*/

	background-color: white;
	background-color: var(--color-background);

	color: black;
	color: var(--color-foreground);
}

[hidden] {
	display: none !important;
}

html.sandbox {
	border: 3px solid #dbb307;
	border-radius: 15px;
}

/*
@media screen and (min-width: 1900px) {
	body {
		max-width: 2048px;
	}
}
*/

.isPopupOrPreview > body {
	margin: 0;
	padding: 1em 0;
}
@media screen and (min-width: 1360px) {
	.isPopupOrPreview > body {
		margin: 0 auto;
	}
}

	.isPopupOrPreview > body > .announcements-infobar,
	.isPopupOrPreview > body > .announcements-modal, /* Or maybe show modal announcements inside popups? */
	.isPopupOrPreview > body > header,
	.isPopupOrPreview > body > nav,
	.isPopupOrPreview > body > footer,
	html:not(.isPopup) .onlyPopup,
	html:not(.isPopup) .hasOnlyPopup { /* `.hasOnlyPopup` is a server-side-rendered class indicating the element contains only `.onlyPopup` content, so the container element can be hidden too. It sucks that CSS's :empty can't work like that. */
		display: none;
	}

	/* Because the popup header is hidden, adjust the margins/padding of the <section.pageHeader> so it visually becomes the popup heading. */
	/* I wonder if these should be moved to User.master.css? */
	html.isPopupOrPreview.popup-noHeader > body {
		padding: 1px; /* 1px padding to stop elements getting "grazed" by the parent <iframe>'s border-radius corners. */
	}
	html.isPopupOrPreview.popup-noHeader > body section.pageHeader:first-of-type {
		margin-top: 1px;
		position: -webkit-sticky;
		position: sticky;
		z-index: 11;
		top: 1px;
		top: 0;

		/* ooh: this looks good and fixes the 1px jump problem: */
		margin: -1px;
		margin-bottom: 2px;
	}
	html.isPopupOrPreview:not(.popup-noHeader) > body section.pageHeader .noHeader { /* TODO: Make `noHeader`, `onlyPopup`, etc more consistent and intuitive. Perhaps don't define them in HTML at all and get PopupDialogs.ts to add them to the DOM? */
		display: none;
	}

.hidden {
	display: none;
}

img {
}
video:focus {
	outline: none;
}

	/* Loading activity spinner? Use img.isLoading::after? */

/* .actions */

div.actions {

}
*:not(.pageHeader) > div.actions {
	border-radius: 5px;

	/* Fabric/Fluent button box-shadow style, but 0.04 opacity instead of 0.08: */
	box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 4px 1px;

	border: 1px solid #ccc;
	border-color: var(--color-table-act-border);
}

div.actions {
	display: flex;
	padding: 1em;
	margin: 1em 0;
}
	dialog div.actions {
		/* This style rule is intended for confirmations of destructive actions, see PopupDialog.ts and Tables.ts. */
		justify-content: space-between;
		padding: 0.5em;
	}
		dialog .actions button {
		}

	.actions > .beginsGroup {
		margin-left: auto !important;
	}

@media (max-width: 767px) {
	.cut767 {
		display: none !important;
	}
}
@media (max-width: 640px) {

	div.actions {
		display: flex;
		flex-direction: column;
		align-items: stretch;
	}
		div.actions > * {
			margin: 0.25em !important;
			text-align: center;
		}
}

h2,
h3,
h4 {
	border-bottom: 1px solid #ddd;
	border-bottom-color: var(--color-container3);
}

time,
.no-break {
	white-space: nowrap;
}

.hasNotes {
	cursor: help;
	text-decoration: underline;
	text-decoration-style: dotted;
}

button.vin-decoded {
	background-color: #13b42b;
	border-color: #13b42b;
	text-align: left;
}

button.vin-possible {
	background-color: #ff6a00;
	border-color: #ff6a00;
	text-align: left;
}

button.vin-history {
	text-align: left;
}
	button.vin-history > div.line1 {
		font-size: 1.5em;
	}
	button.vin-history > div.line1 > span:first-child {
		font-weight: bold;
		background-color: white;
		background-color: var(--color-accent-text);
		color: #1356b4;
		color: var(--color-accent-fore);
		/*text-decoration: underline;*/

		/* I thought this would make it easier to tell the two spans apart, but it looks awful.
		padding-right: 0.5em;
		margin-right: 0.5em;
		*/
	}
	button.vin-history > div.line2 {
		white-space: normal; /* Allow wrapping for Customer Name + Business name */
	}

@keyframes rotate360 {
	0% {
		transform: rotate(0deg);
	}
	100% {
		transform: rotate(360deg);
	}
}

/* Misc content-specific, but shared by multiple pages: */
ul.colorSchemes {
	padding: 0;
	margin: 0;
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-start;
	list-style: none;
}
	ul.colorSchemes > li {
		width: 24px;
		height: 24px;
		display: inline-block;
		padding: 0;
		margin: 0.25em;
		margin: 2px; /* Packing them tightly looks better and doesn't wrap at smaller window sizes. */
		border: 1px solid black;
		border: 1px inset #aaa;

		background-color: attr(data-accent);
		cursor: pointer;
	}

/* Using CSS for better rendering of `title=""` attributes - this requires a script to suppress browsers' default `title=""` rendering though. */
.titleHelp[title],
.titleHelp[data-title] {
	cursor: help;
	text-decoration: underline;
	text-decoration-style: dotted;
	text-decoration-skip: objects;
	position: relative; /* This concerns stacking contexts. */
}
.titleHelp[title]:hover,
.titleHelp[data-title]:hover,
.titleHelp[title]:active,
.titleHelp[data-title]:active {
	position: relative; /* This concerns stacking contexts. */
}

.ins-status-span .titleHelp[title],
.ins-status-span .titleHelp[data-title] {
	text-decoration: none;
}
.titleHelp[title][data-emoji],
.titleHelp[data-title][data-emoji] {
	text-decoration: none;
}

	.titleHelp[title]::before,
	.titleHelp[data-title]::before {
		content: attr(title);

		position: absolute;
		z-index: 102; /* z-index 11 to overlay the position: sticky <thead> cells, UPDATE: Now 102 because the checklist labels are `z-index: 101`. */

		background-color: white;
		background-color: var(--color-background);

		padding: 0.25em 0.5em;
		padding: 0.5em 0.75em;

		box-shadow: 1px 1px 4px 1px rgba( 0, 0, 0, 0.2 ); /* can we get the triangle-pointer-border trick to work here? */

		border-radius: 5px;
		max-width: 26em;
		white-space: normal;

		width: 15em;
		width: max-content; /* This works, and I don't know why! */

		bottom: 0;

		pointer-events: none; /* So the ::before box doesn't cause the :hover area to be expanded */

		opacity: 0; /* visibility: hidden; */
		transition: opacity 0.2s;

		font-weight: normal;

		color: black;
		color: var(--color-foreground);
	}
	.titleHelp[data-title]::before {
		content: attr(data-title);
	}

	.titleHelp[title]:hover,
	.titleHelp[data-title]:hover {
		transition: opacity 0; /* So it instantly appears, but fades away when :hover isn't set. */
	}
	.titleHelp[title]:hover::before,
	.titleHelp[data-title]:hover::before {
		opacity: 1;
	}

	label.titleHelp { /* For Checkboxes. */
		text-decoration-skip: none; /* Hmm, Chrome only supports `text-decoration-skip-ink:` instead. */
	}

	.titleHelp[title].openLeft::before,
	.titleHelp[data-title].openLeft::before,
	.ins-status-span .titleHelp[title]::before,
	.ins-status-span .titleHelp[data-title]::before {
		/* Quick workaround to stop these exceeding the right-edge of the viewport. */
		right: 0;
		bottom: 10px;
	}
	.titleHelp[title].openTop::before,
	.titleHelp[data-title].openTop::before {
		/* Quick workaround for Vehicle Notes tooltips that are rendered with an "effective z-index" behind the position: sticky <th> elements - I think the stacking-contexts are messed-up, so the quick-fix is to have the tooltips positioned below and to the right-of the Notes icon, rather than positioned above them. */
		right: auto;
		left: 16px; /* The slight right bump is because when it's `right: 0;` then the Notes icon in the next <tr> will have an effective z-index over this tooltip box, ugh. */
		bottom: auto;
		top: 0;
	}

	.field label.titleHelp::before {
		bottom: auto;
		top: -3em;
		left: 1em;
	}

@media screen and (max-width: 640px) {
	/* Render .titleHelp mini-popups as `position: fixed` so they never exceed the bounds of the viewport and cause awkward horizontal scrolling on narrow mobile devices.... which is difficult to diagnose because they're invisible until hovered-over. */
	.titleHelp[title]::before,
	.titleHelp[data-title]::before {
		max-width: 300px; /* The iPhone was 320px across btw, so 300px is fine. */

		position: fixed;
		left: 1em;
		right: 1em;
		/* In a fight between `max-width` and left/right, who wins? */
	}
}

/* Odometer <span class="odometer"> or <td class="odometer">:
Color, font-size, and bold are set only in InspectionList's view. */

.odometer {
	white-space: nowrap;
}
.odometer.odoUnable {
	/* The dotted underline and help cursor are added by 'titleHelp' */
}
.odometer.odoUnread {
}
.odometer.odoValid {
}


/* Chips */
ul.chips {
	display: block;
	list-style: none;
	padding: 0;
	margin: 0;

	line-height: 1.8;
	word-break: break-word;
	word-break: break-all; /* `break-all` is probably okay for all uses */
	min-width: 150px;
}
	ul.chips:empty {
		min-width: 0;
	}

	ul.chips > li {
		display: inline;
		margin: 0.25em;
		padding: 0;
	}
		ul.chips > li > a,
		ul.chips > li > label {
			border-radius: 11px;
			padding: 3px 7px;

			border: 1px solid #1356b4;
			border: 1px solid var(--color-accent);
		}
		ul.chips > li > a:hover,
		ul.chips > li > label:hover {
			background-color: #1462ce;
			background-color: var(--color-accent);

			color: white;
			color: var(--color-accent-text);
		}

		ul.chips > li > a:link,
		ul.chips > li > a:visited {
			color: inherit;
			text-decoration: none;
		}

		ul.chips > li > a:link:hover,
		ul.chips > li > a:visited:hover {
			color: white;
			color: var(--color-accent-text);

			text-decoration: none;
		}

		ul.chips > li.enabled > a {
		}
		ul.chips > li.disabled > a {
			opacity: 0.5;
		}
@media screen and (max-width: 1023px) {
	ul.chips {
		min-width: 150px;
		word-break: break-all;
	}
	ul.chips:empty {
		min-width: 0;
		min-width: unset;
	}
}

/* Admin data (hmm, move this to User.master.css?) */
.adminData {
	display: none;
}
#adminDataVisible:not(:checked) ~   .adminData,
#adminDataVisible:not(:checked) ~ * .adminData {
	display: none;
}
#adminDataVisible:checked ~   .adminData,
#adminDataVisible:checked ~ * .adminData {
	/*display: unset; - Don't do this because it causes `<section>` and `<div>` elements to fallback to `display: inline;` argh!. So instead I'll have to do it with a rule for each known element I want it for. */
	/*display: revert; - I think this is the CSS keyword to use, though I don't fully understand it (and not to be confused with `unset`, `initial`, ): https://developer.mozilla.org/en-US/docs/Web/CSS/revert */
}
#adminDataVisible:checked ~   nav li.adminData,
#adminDataVisible:checked ~ * nav li.adminData {
	display: block;
}

nav li#impersonateShopMainUserLI {
	font-size: 80%;
}
	nav li#impersonateShopMainUserLI input[type=number]::-webkit-outer-spin-button,
	nav li#impersonateShopMainUserLI input[type=number]::-webkit-inner-spin-button {
		-webkit-appearance: none;
		margin: 0;
	}

	nav li#impersonateShopMainUserLI input[type=number] {
		-moz-appearance:textfield;
	}

/* Task Options indicators */
/* Note these styles WILL conflict with those in InspectionChecklistRows.css, but the properties are the same so that's okay. */

.taskRequired,
.taskInternal,
label.internal::after {
	/* These elements don't use emojis, so use this style: */
	display: inline-block;
	width: 15px;
	height: 15px;
	margin: 0.25em;
	vertical-align: middle;

	background-repeat: no-repeat;
	background-size: contain;
}
	.taskRequired > span,
	.taskInternal > span {
		display: none;
	}

	.unitName .taskRequired {
		width: 10px;
		height: 10px;
	}

label.internal::after {
	background-image: url("/images/Actions/Vis_Hidden_Black.svg");
	background-image: var(--image-hidden-black);
	content: '';
	/*margin-left: auto; /* Hmm, this doesn't work, I guess because everything is inline, even though the <label> is `display: block;`. It also breaks the layout on checklist and audit pages. */
	float: right; /* This works. */
	margin-left: 0.5em; /* Needed for layout in audit and checklist pages. */
}

.taskRequired {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
}
.taskInternal {
	background-image: url("/images/Actions/Vis_Hidden_Black.svg");
	background-image: var(--image-hidden-black);
}
.taskLocked {

}
.taskValueOpt {

}
.taskValueReq {
	/* https://stackoverflow.com/questions/32413731/color-for-unicode-emoji */
	color: transparent;
	text-shadow: 0 0 0 red;
}

/*
Inspection List: RO# and Status columns' styles: as used in some of InspectionList, InspectionList's History details table, VehicleInformationPage, and ROCompletionReportPage
*/

td.ins-roNo {
	/*line-height: 1.1;*/
}
	span.odometer {
		font-size: smaller;
	}
	span.odometer.odoUnable {
		color: #e54444;
	}
	span.odometer.odoUnread {
		color: orange;
	}
	span.odometer.odoValid {
		color: #15a355
	}

td.ins-status {
	white-space: nowrap;
}
	td.ins-status .ins-status-span {
		/*display: inline-flex;*/
		display: flex;
		align-items: center;
	}
		.ins-status-span > * {
			margin: 0 0.25em;
		}

		.ins-status-span > span:first-child {
			margin-left: 0;
		}

		.ins-status-span span.ins-status-completed,
		.ins-status-span span.ins-status-audited,
		.ins-status-span span.ins-status-sent {
			color: #15a355;
		}
		.ins-status-span span.ins-status-complete-not-sent,
		.ins-status-span span.ins-status-audited-not-sent {
			/*color: red;*/
			color: orange;
			/*font-weight: bold;*/
			/* I think shading the entire cell is better than fiddling with the text. */
		}

		.ins-status-span > a {
			margin: 0 0.25em;
		}
		.ins-status-span .ins-status-images {
			margin-left: auto;
		}

		a.auditLink:link {
			color: red;
		}
		a.auditLink:visited {
			color: #e54444;
		}
		a.auditLink:hover {
			color:  #1356b4;
		}

	td.ins-status > span:nth-child(2) {
		font-size: smaller;
	}

/* .inspectionFunctions - this is used for more things than just Inspections now, it needs a new name. Perhaps `.iLikeBigButtonsAndICannotLie`? */

.inspectionFunctionsPanel {
	display: flex;
	flex-wrap: wrap;
	/*
	justify-content: space-between;
	justify-content: space-around;
	justify-content: space-evenly;
	*/
	flex-grow: 10; /* flex-grow: 10 to give it more ooomph vs the inspection microTable which I do want to grow, just not by much. */
	flex-shrink: 0;
	gap: 1em;

	/* New approach: */

	display: grid;
	grid-template-columns: repeat( auto-fit, minmax( 18em, 1fr ) );
}
@media screen and (min-width: 1024px) {
	.inspectionFunctionsPanel {
		padding-left: 2em;
	}
	.inspectionFunctionsPanel > div {
		padding: 1em;
	}
}

@media screen and (max-width: 1023px) {
	.inspectionFunctionsPanel {
		padding-left: 1em;
		gap: 0.5em;
		font-size: 90%;
	}
	.inspectionFunctionsPanel > div {
		padding: 0.5em;
	}
}
		.inspectionFunctionsPanel ul {
			margin: 0;
			padding: 0;
			list-style: none;
		}

		.inspectionFunctionsPanel > div {
			border-radius: 7px;
			padding: 1em;
			border: 1px solid rgb(177, 199, 230);
			border: 1px solid var(--color-accent-light); /* TODO: I want to make this have a subtle chisel effect, but I'm unsure what the best approach is. */

			flex-basis: 240px;
			max-width: 25em;
			flex-grow: 1;
			flex-shrink: 1;
		}
			.inspectionFunctionsPanel > div > *:first-child { /* e.g. <div class="inspectionFunctionsPanel"><div class="inspectionFunctionsOther"><h4> */
				margin-top: 0;
			}

			.inspectionFunctionsPanel > div h4,
			.inspectionFunctionsPanel > div p {
				margin: 0.25em 0;
				border: none;
			}

				.inspectionFunctionsPdf {
					display: flex;
				}
					.inspectionFunctionsPdf > a:first-child {
						/* "View PDF Report */
						flex-grow: 1;
						margin-right: 8px;
					}
					.inspectionFunctionsPdf > a:last-child {
						/* "Refresh (PDF Report)" */
						flex-basis: 33%;
						flex-shrink: 1;
					}


.inspectionFunctions > *:first-child {
	margin-top: 0;
}

.inspectionFunctions > li > label.button > input[type=file] {
	display: none;
}

.inspectionFunctions > li > label.button > progress,
.inspectionFunctions > li > label.button > span {
	width: 100%;
	display: block;
}

.inspectionFunctions > li > label.button.busy {
	pointer-events: none; /* As we can't disable labels and I don't want to disable an input inside the event-handler as I think that will braek things... */
}

.inspectionFunctions > li > label.button:not(.busy) > progress,
.inspectionFunctions > li > label.button:not(.busy) > span {
	display: none;
}


ul.inspectionFunctions {
	margin: 0;
	padding: 0;
	list-style: none;

	/*display: flex;*/
}
	ul.inspectionFunctions > li {
		margin: 0.5em;
	}

		ul.inspectionFunctions > li > label.button {
			padding-top: 0.2em;
			padding-bottom: 0.2em;

			width: 10em;
			text-align: center;
		}

		ul.inspectionFunctions > li > label.button.busy {
			pointer-events: none; /* As we can't disable labels and I don't want to disable an input inside the event-handler as I think that will braek things... */
		}

	ul.inspectionFunctions a.button,
	ul.inspectionFunctions button,
	ul.inspectionFunctions label.button {
		width: 100%;
		box-sizing: border-box;
		text-align: center;

		padding-top: 0.2em;
		padding-bottom: 0.2em;

		white-space: normal;
		word-break: break-word;
	}
		ul.inspectionFunctions a.button:active,
		ul.inspectionFunctions button:active,
		ul.inspectionFunctions label.button:active {
		}


	ul.inspectionFunctions li {
		margin: 8px 0;
	}

/*  */

ul > li.inspectionFunctionsPdfOptionsToggle {
	margin: 0;
}
	li.inspectionFunctionsPdfOptionsToggle > label[for].trigger {
		font-size: 0.8em;
	}

.inspectionFunctionsPdfOptions {
    display: flex;
    flex-direction: column;
    font-size: 80%;

	margin: 0.5em 0;
}
	.inspectionFunctionsPdfOptions > label {
		margin-top: 0.25em;
		display: flex;
		justify-content: space-between;
	}

	.inspectionFunctionsPdfOptions > label > select {
		padding: 0;
	}

/*  */

img.userAvatar {
	object-fit: cover;
	border-radius: 12px;
	width: 24px;
	height: 24px;
}

/* InspectionConclusion styling in various places: */
tr.conclusion-archived {
	color: #999;
}
tr.conclusion-legacy {
}
tr.conclusion-new {
	background-color: gold; /* Or maybe just an inner glow instead of whole-row highlight? */
}
tr.conclusion-audited {
}


a.vehicleDetails,
button.vehicleDetails {
	/* Don't use the smaller "C"-logo, users had no idea it was CarFax!
	background-image: url("/images/Content/CarFax-C.svg");
	background-image: var(--image-carFaxCompact);
	background-size: 50%; / * So the image's width is 50% of the button's width. * /
	*/
	background-image: url("/images/Content/CarFax-Full.svg");
	background-image: var(--image-carFaxFull);
	background-size: contain;
	background-position: center center;
	background-repeat: no-repeat;
	background-size: 85%; /* This looks nicer than `contain` */
	width: 75px;
}
	a.vehicleDetails > span,
	button.vehicleDetails > span {
		display: none;
	}
	a.vehicleDetails > span:first-child,
	button.vehicleDetails > span:first-child {
		display: block;
		width: 18px;
		height: 18px;
	}

a.vehicleDetails.wide,
button.vehicleDetails.wide {

}
	a.vehicleDetails.wide > span,
	button.vehicleDetails.wide > span {
		display: none;
	}
		a.vehicleDetails.wide > span[data-emoji],
		button.vehicleDetails.wide > span[data-emoji] {
			display: none;
		}

	a.vehicleDetails.wide > span:first-child,
	button.vehicleDetails.wide > span:first-child {
		display: block;
		width: auto;
		height: auto;
		visibility: hidden;
	}

	td.actions button.vehicleDetails > span:first-child,
	td.actions .button.vehicleDetails > span:first-child {
	}



/* --------------- */

/* Don't show the "Avatar" text in `<th class="avatarCol">`: */
table > * > tr > *.avatarCol {
	width: 1px;
	text-align: center;
}
table > thead > tr > th.avatarCol {
	font-size: 0;
	color: transparent;
}
table > tbody > tr > td.avatarCol {
}

th.avatarCol {
	font-size: 0;
	border-right: none;
}
th.avatarCol + th.adminCol {
	border-left: none;
	border-right: none;
}
th.avatarCol + th.adminCol + th {
	border-left: none;
}
th.avatarCol + th:not(.adminCol) {
	border-left: none;
}

td.avatarCol {
	text-align: center;
}
td.avatarCol + td {
	border-left: none;
	border-right: none;
}
td.avatarCol + td.adminCol + td {
	border-left: none;
}
th.avatarCol + th:not(.adminCol) {
	border-right: none;
}

td.avatarCol img.userAvatar {
	max-width: 28px; /* This is the biggest size without increasing row height. */
	max-height: 28px;
}


:root {
	/* Keep this in sync with RssColorScheme.cs::Render! (idea: use RssColorScheme.cs to render this T4 file?) */
	/* Setting baseline colors for when `User.master` isn't used: */
	--color-background      : white;
	--color-table-background: white;
	--color-offwhite        : #fcfcfc;
	--color-offwhite        : #f9f9f9;
	--color-offwhite-10     : rgba( 249, 249, 249, 1.0 );
	--color-offwhite-09     : rgba( 249, 249, 249, 0.9 );
	--color-offwhite-08     : rgba( 249, 249, 249, 0.8 );
	--color-offwhite-00     : rgba( 249, 249, 249, 0.0 );
	--color-container0      : #fafafa; /* 250 / 256 == 0.976 * 256 ; */
	--color-container1      : #f7f7f7; /* 247 / 256 == 0.964 * 256 ; Used by fieldset */
	--color-container2      : #eeeeee; /* 238 / 256 == 0.929 * 256 ; Used by `fieldset > fieldset` and `.checkboxList.restrictedHeight` */
	--color-container3      : #dedede; /* 221 / 256 == 0.863 * 256 ; Used by `fieldset > fieldset > fieldset` and `.checkboxList.restrictedHeight` */
	--color-container4      : #cccccc; /* 204 / 256 == 0.796 * 256 ; Used by `.field details:hover` */
	--color-text-disabled   : #999999;
	--color-text-summary    : #666666;
	--color-control-border  : #a9a9a9;
	--color-foreground      : black;

	/* Accent and accet-derived colors: */
	--color-accent          : #1356b4;
	--color-accent2         : #1462ce; /* Do we want to use this anywhere? This was the old current-tab color. */
	--color-accent-fade     : #5e94de; /* Fade is the same as `--color-accent` but with Saturation set to 50% of `--color-accent`'s current Saturation */
	--color-accent-pale     : #F0F8FF; /* 'aliceblue'. Pale is the same as `--color-accent` but with fixed 97% Lightness */
	--color-accent-text     : white;   /* Color for text where the accent is used as a background */
	--color-accent-fore     : #1356b4; /* Color for text where the text is meant to have the accent color. Possibly darker shade of the accent color where greater contrast is needed by text. */
	--color-accent-light    : rgb(177, 199, 230); /* Accent color blended at 33.33% opacity over white. This color was from Photoshop which does blending slightly differently to the simple straight-alpha approach. */
	--color-accent-dark     : rgb( 21,  59, 118); /* Accent color blended at 66.66% opacity over black. #153b76 */
	--color-accent-focus    : rgba( 19, 86, 180, 0.80 );
	--color-accent-hover    : rgba( 19, 86, 180, 0.33 ); /* IMPORTANT NOTE: This is alpha-transparent! Originally `rgba(20, 98, 206, 0.32)` */
	--color-button-text-shad: rgba(  0,  0,   0, 0.50 ); /* Should be the opposite of `--color-accent-text` */

	--color-table-hover-th  : #f0fff0; /* Also consider #a4ffa4 */
	--color-table-hover-td  : #CCFFCC;
	--color-table-selected  : #edffed;
	--color-table-border    : #dddddd;
	--color-table-act-border: #cccccc;
	--color-table-border-2  : #cccccc;

	/* ---------------------- Checklist colors: */

	--color-none: #eeeeee;
	--color-nota: #eeeeee;
	--color-chek: #999999;
	--color-pass: #d5f3bb;
	--color-warn: #fff8cc;
	--color-fail: #fcd6ce;
	--color-note: #cee7fc;

	--color-nota-fade: #dddddd;
	--color-chek-fade: #aaaaaa;
	--color-pass-fade: #e1eed3;
	--color-warn-fade: #faf6e1;
	--color-fail-fade: #ebd9d5; /* These colors were obtained by using `filter: greyscale(0.5)` on the <td>. We can't use `filter:` or `opacity:` to do this normally because that will create a new z-index stacking-order (see link) which we don't want: https://stackoverflow.com/questions/25764404/why-does-stacking-order-change-on-webkit-filter-hover */

	--color-note-border: #999999;
	--color-chek-border: #999999;
	--color-pass-border: green;
	--color-warn-border: #e8bf38;
	--color-fail-border: #af7171;

	/* ---------------------- Manager and Mechanic Report Good/Bad colors: */
	/*
		Other colors used in the past:
		background-color: #BD0F18; -- Dark Red
		background-color: #3F8F90; -- Dark Green
		background-color: #f0fff3; -- Light Green
		background-color: #ffdadc; -- Light Red
		background-color: #dbffe2; -- Light Green

		--color-report-bad-light : #fff0f1;
		--color-report-bad-med   : #fdc6cc;
		--color-report-bad-heavy : #feaab3;

		--color-report-good-light: #f0fff3;
		--color-report-good-med  : #c4efcd;
		--color-report-good-heavy: #9de1ab;

	*/
	--color-report-bad-value       : #fff0f1;
	--color-report-bad-perc        : #fdc6cc;
	--color-report-bad-value-hover : #ffdadc;
	--color-report-bad-perc-hover  : #feaab3;

	--color-report-good-value      : #f0fff3;
	--color-report-good-perc       : #c4efcd;
	--color-report-good-value-hover: #dbffe2;
	--color-report-good-perc-hover : #9de1ab;


	/* Let's see how this works: */
	transition:
		color            1.5s ease,
		background-color 1.5s ease;
}
:root #accessibleColorsToggle:checked ~ * {
	--color-pass: #bbccf3; /* Blue, rather than green. */
	--color-warn: #fff8cc;
	--color-fail: #e2bdb5; /* Darker shade of red to differentiate from similar brightness+saturation of Warn color. */

	--color-pass-fade: #c5cde0;
	--color-warn-fade: #faf6e1;
	--color-fail-fade: #d1bfbc;

	--color-pass-border: #1356b4;
	--color-warn-border: #e8bf38;
	--color-fail-border: #af7171;

	--color-checklist-border: #b1b1b1;
}

@media screen and (prefers-color-scheme: dark) {
	:root:not(.lightMode) {
		--color-background      : #313131;
		--color-table-background: #222222;
		--color-offwhite        : #444444;
		--color-offwhite-10     : rgba( 68, 68, 68, 1.0 );
		--color-offwhite-09     : rgba( 68, 68, 68, 0.9 );
		--color-offwhite-08     : rgba( 68, 68, 68, 0.8 );
		--color-offwhite-00     : rgba( 68, 68, 68, 0.0 );
		--color-container0      : #373737; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("FA") ) )` */
		--color-container1      : #3A3A3A; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("F7") ) )` */
		--color-container2      : #434343; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("EE") ) )` */
		--color-container3      : #535353; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("DE") ) )` */
		--color-container4      : #656565; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("CC") ) )` */
		--color-text-disabled   : #777777;
		--color-text-summary    : #999999;
		--color-control-border  : #888888; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("A9") ) )` */
		--color-foreground      : #cccccc;

/* Don't override these, to ensure RssColorScheme overrides them: */
/*		--color-accent          : #1356b4; */
/*		--color-accent2         : #1462ce; */

		/* These are overridden by RssColorScheme in User.master: */
		--color-accent-fade     : #5e94de;
		--color-accent-pale     : var(--color-accent-dark);

		--color-accent-text     : #ddd;
		--color-accent-fore     : #1356b4;
		--color-accent-light    : rgb( 21,  59, 118);
		--color-accent-dark     : rgb(177, 199, 230);
		--color-accent-focus    : rgba(19, 86, 180, 0.80);
		--color-accent-hover    : rgba(19, 86, 180, 0.33);

		--color-table-hover-th  : #4a634a;
		--color-table-hover-td  : #4a634a;
		--color-table-selected  : #4a634a;
		--color-table-border    : #333333;
		--color-table-act-border: #444444;
		--color-table-border-2  : #676767;

		--color-none: #222222;
		--color-nota: #222222;
		--color-chek: #999999;
		--color-pass: #4a634a;
		--color-warn: #b1a767;
		--color-fail: #8a5246;
		--color-note: #1356b4;

		--color-report-bad-light : #470005;
		--color-report-bad-med   : #5D030E;
		--color-report-bad-heavy : #960210;

		--color-report-good-light: #00440E;
		--color-report-good-med  : #1B612A;
		--color-report-good-heavy: #20692F;

		/* ------- */

		--color-report-bad-value       : #470005;
		--color-report-bad-perc        : #7C0412;
		--color-report-bad-value-hover : #880007;
		--color-report-bad-perc-hover  : #960210;

		--color-report-good-value      : #00470E;
		--color-report-good-perc       : #14491F;
		--color-report-good-perc       : #1d652c; /* This looks better */
		--color-report-good-value-hover: #006614;
		--color-report-good-perc-hover : #20692F;
	}
}

/* Unfortunately it is necessary to repeat the property assignments - until CSS gains support for mixins/traits/macros: */
:root.darkMode {
		--color-background      : #313131;
		--color-table-background: #222222;
		--color-offwhite        : #444444;
		--color-offwhite-10     : rgba( 68, 68, 68, 1.0 );
		--color-offwhite-09     : rgba( 68, 68, 68, 0.9 );
		--color-offwhite-08     : rgba( 68, 68, 68, 0.8 );
		--color-offwhite-00     : rgba( 68, 68, 68, 0.0 );
		--color-container0      : #373737; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("FA") ) )` */
		--color-container1      : #3A3A3A; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("F7") ) )` */
		--color-container2      : #434343; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("EE") ) )` */
		--color-container3      : #535353; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("DE") ) )` */
		--color-container4      : #656565; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("CC") ) )` */
		--color-text-disabled   : #777777;
		--color-text-summary    : #999999;
		--color-control-border  : #888888; /* Calculated using Excel: `=DEC2HEX( HEX2DEC("31") + ( 256 - HEX2DEC("A9") ) )` */
		--color-foreground      : #cccccc;

/* Don't override these, to ensure RssColorScheme overrides them: */
/*		--color-accent          : #1356b4; */
/*		--color-accent2         : #1462ce; */

		/* These are overridden by RssColorScheme in User.master: */
		--color-accent-fade     : #5e94de;
		--color-accent-pale     : var(--color-accent-dark);

		--color-accent-text     : #ddd;
		--color-accent-fore     : #1356b4;
		--color-accent-light    : rgb( 21,  59, 118);
		--color-accent-dark     : rgb(177, 199, 230);
		--color-accent-focus    : rgba(19, 86, 180, 0.80);
		--color-accent-hover    : rgba(19, 86, 180, 0.33);

		--color-table-hover-th  : #4a634a;
		--color-table-hover-td  : #4a634a;
		--color-table-selected  : #4a634a;
		--color-table-border    : #333333;
		--color-table-act-border: #444444;
		--color-table-border-2  : #676767;

		--color-none: #222222;
		--color-nota: #222222;
		--color-chek: #999999;
		--color-pass: #4a634a;
		--color-warn: #b1a767;
		--color-fail: #8a5246;
		--color-note: #1356b4;

		--color-report-bad-light : #470005;
		--color-report-bad-med   : #5D030E;
		--color-report-bad-heavy : #960210;

		--color-report-good-light: #00440E;
		--color-report-good-med  : #1B612A;
		--color-report-good-heavy: #20692F;

		/* ------- */

		--color-report-bad-value       : #470005;
		--color-report-bad-perc        : #7C0412;
		--color-report-bad-value-hover : #880007;
		--color-report-bad-perc-hover  : #960210;

		--color-report-good-value      : #00470E;
		--color-report-good-perc       : #14491F;
		--color-report-good-perc       : #1d652c; /* This looks better */
		--color-report-good-value-hover: #006614;
		--color-report-good-perc-hover : #20692F;
}

.darkLightModeToggle > a::after {
	content: '';
	display: inline;
}

:root:not(.lightMode):not(.darkMode) .darkLightModeToggle a::after {
	content: ': Auto ☀️';
}
@media screen and (prefers-color-scheme: dark) {
	:root:not(.lightMode):not(.darkMode) .darkLightModeToggle a::after {
		content: ': Auto 🌒';
	}
}
:root.darkMode .darkLightModeToggle a::after {
	content: ': On 🌒';
}
:root.lightMode .darkLightModeToggle a::after {
	content: ': Off ☀️'; /* It annoys me that some sites use Full-moon to represent the sun, lol. */
}


/*
	* https://webkit.org/blog/8840/dark-mode-support-in-webkit/
	* https://css-tricks.com/dark-modes-with-css/
*/

:root {
    /*color-scheme: light dark; Disabled on 2020-04-03 because it doesn't work right without more work. */
}


@supports ( padding: env(safe-area-inset-bottom) ) {

	body {
		padding-top   : calc( env(safe-area-inset-top)           );
		padding-right : calc( env(safe-area-inset-right)  + 10px );
		padding-bottom: calc( env(safe-area-inset-bottom) + 10px );
		padding-left  : calc( env(safe-area-inset-left)   + 10px );
	}
}

	/*
<header>
	<h1>
		<a>
			<img />
		</a>
	</h1>

	<address></address>

	<nav>
		<ul class="mainNav">
			<li>...
			<li>...
		</ul>
	</nav>

	<div id="greetingContainer">
	</div>

</header>
	*/

header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	padding-top: 8px;

	position: relative;
}
	/* Header structural styles: */
	header > h1 {
		margin: 0;
		padding: 0;
	}
	h1 > a > img {
		font-size: 8pt; /* To prevent the flash of large blue text for the alt="" text before the image loads. */
		display: block;
		width: auto; /* Explicit `width/height: auto` stops the browser from using the width="" height="" attributes for the box dimensions. */
		height: auto;

		max-width: 400px;
		max-height: 100px;
		object-fit: scale-down;
	}

	/* Reduce maximum size of shop logo below 1280px (i.e. include 1280px) */
	@media (max-width: 1280px) {
		header h1 > a > img {
			max-width: 300px;
			max-height: 75px;
			object-fit: scale-down;
		}
	}

	html.sandbox h1 > a > img {
		min-height: 117px; /* without this `min-height` (or `min-width`) any SVG images just collapse down to 0x0px. I'll admit I don't understand why... */
	}

/* Hide the shop logo image in dark-mode by default (as many of them are opaque graphic+texts-on-white images) - unless the browser supports color-burn which blends those images against a dark background great. */
@media screen and (prefers-color-scheme: dark) {
	:root:not(.lightMode) header > h1 {
		display: none;
	}
	:root:not(.lightMode) a:not(.button) {
		color: #4d9cff;
	}
	:root:not(.lightMode) nav li > a:not(.button),
	:root:not(.lightMode) nav li > a:not(.button):link,
	:root:not(.lightMode) nav li > a:not(.button):visited {
		color: var(--color-accent-dark); /* Need to do this, grumble. */
	}
}
:root.darkMode header > h1 {
	display: none;
}
:root.darkMode a:not(.button) {
	color: #4d9cff;
}
:root.darkMode nav li > a:not(.button),
:root.darkMode nav li > a:not(.button):link,
:root.darkMode nav li > a:not(.button):visited {
	color: var(--color-accent-dark); /* Need to do this, grumble. */
}
@supports (mix-blend-mode: color-burn) {
	@media screen and (prefers-color-scheme: dark) {
		:root:not(.lightMode) header > h1 {
			display: unset;
			mix-blend-mode: color-burn; /* Wow, this works great! */
			opacity: 0.2; /* This helps reduce the pain of the image's white background (if any) when any element is being transitioned. This is a bug in Chrome 80+ that still isn't fixed. */
			/* Hmm, an alternative is to use the image as a mask over black - is that possible? Does it work with 100% opaque images, just invert them so white is transparent? Or should RssBlobs pre-generate dark-mode images for us? */
		}
	}
	:root.darkMode header > h1 {
		display: unset;
		mix-blend-mode: color-burn;
		opacity: 0.2;
	}
}

	header > address {
		font-style: normal;
		font-size: 12px;
		margin: 0 2em;
	}

	header > nav {
		flex-grow: 1;
		margin: 0;
	}

	header > div#greetingContainer {
		display: none;
	}
		header > div#greetingContainer .userTimeWrapper {
			display: none;
		}

	header > div#greetingContainer.impersonated {
		/* HACK: But it works for now. */
		display: block;
		position: absolute;
		top: 3px;
		right: 1em;
	}

/* Hide address when at 1080px or narrower (includes 1024px): */
@media (max-width: 1080px) {
	header > h1 {
		margin: 0;
		margin-right: 0.5em;
	}
	header > address {
		display: none;
	}
}

@media (max-width: 768px) {
	header {
		justify-content: center;
	}
}

/* Navigation */
/*

	<nav>
		<ul>
			<li><a href="#"></a></li>
			<li><a href="#"></a></li>
			<li>
				<a href="#"></a>
				<div>
					<ul>
						<li><a href="#"></a></li>
						<li><a href="#"></a></li>
					</ul>
				</div>
			</li>
		</ul>
	</nav>

*/


@media (min-width: 640px) /* width >= 640px */ {
	label[for=showMenuTrigger] {
		display: none !important;
	}
}
@media (max-width: 639px) /* width < 640px */ {
	label[for=showMenuTrigger] {
	}
		input#showMenuTrigger:checked + label[for=showMenuTrigger]::before {
			background-image: url("/images/Checkbox-White-Checked.svg");
			background-image: var(--image-checkbox-checked-white);
		}
		input#showMenuTrigger:not(:checked) + label[for=showMenuTrigger]::before {
			background-image: url("/images/Checkbox-White-Unchecked.svg");
			background-image: var(--image-checkbox-unchecked-white);
		}

	header > nav {
		position: relative;
		display: block;
		width: 100%;
	}
		header > nav > ul {
			position: absolute;
			top: 0;
			left: 0;
			right: 0;
			z-index: 11;
			z-index: 105;
		}
	#showMenuTrigger:checked ~ nav {
	}
	#showMenuTrigger:not(:checked) ~ nav {
		display: none;
	}
	header > nav > ul {
		flex-direction: column;
		align-items: stretch;
		overflow: visible;
	}
	header > nav > ul > li {
		display: block;
	}
	header > nav > ul > li > a,
	header > nav > ul > li > label {
	}
	header > nav > ul > li:last-child > div {
		right: auto;
	}

	/* Because `nav > ul` won't have `overflow: hidden;`, the non-rounded corners of the <li><a> hover will bleed through. */
	header > nav > ul > li:first-child > a {
		border-top-left-radius: 6px;
		border-top-right-radius: 6px;
	}
	header > nav > ul > li:last-child > a {
		border-bottom-left-radius: 6px;
		border-bottom-right-radius: 6px;
	}
}

header ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

nav > ul {
	display: flex;
	align-items: center;

	margin: 0;
	padding: 0;

	list-style: none;

	background-color: #ffffff;
	background-color: #f9f9f9;
	background-color: var(--color-offwhite);

	box-shadow: rgba(0, 0, 0, 0.08) 0px 2px 4px 1px;
	transition: background-color 0.1s, color 0.2s;

	border-radius: 6px;
	/*
	overflow: hidden; So the border-radius of the <ul> clips the <a> hover backgrounds
	*/
}
nav > ul:hover {
	color: white;
	color: var(--color-accent-fore);
	color: var(--color-accent-dark);

	background-color: rgb(177, 199, 230);
	background-color: var(--color-accent-light);
}

	nav > ul > li {
		/* So the badges don't cause a wrap within their navbar area, erk! */
		white-space: nowrap;
	}
	nav > ul > li:first-child > a {
		border-top-left-radius: 6px;
		border-bottom-left-radius: 6px;
	}
	nav > ul > li:last-child > a {
		border-top-right-radius: 6px;
		border-bottom-right-radius: 6px;
	}

	nav > ul > li.beginsGroup  {
		margin-left: auto;
		margin-right: 0;
	}
	nav > ul > li.beginsGroup ~ li  {
		margin-left: 0;
		margin-right: 0;
	}
		nav > ul > li > a,
		nav > ul > li > label[for].trigger {
			font-size: 20px;
			font-size: 18px; /* This looks better */
			font-size: 16px; /* Better still... */
			font-size: 14px; /* This just looks better... */

			line-height: 36px;
			line-height: 35px; /* Ooooh, better! Perfectly vertically centered now */

			margin: 0;
			padding-top   : 0.25em;
			padding-right : 1.00em;
			padding-bottom: 0.25em;
			padding-left  : 1.00em;

			display: flex;
			align-items: center;

			/*position: relative; <-- I think this was enabled for earlier positioned elements, not needed anymore - AND it creates a new stacking-context that breaks popups and AssetList. */
			white-space: nowrap; /* e.g. don't wrap the <> when there's a badge visible (as the badge is rendered inside the <a> now, not as a sibling. */

			transition:
				background-color 0.1s,
				color 0.2s,
				transform 0.1s;
		}

		nav > ul > li > label[for].trigger:active {
			/* Need to assert padding to override `label[for].trigger:active` in Buttons2.css: */
			padding-top   : 0.25em;
			padding-right : 1.00em;
			padding-bottom: 0.25em;
			padding-left  : 1.00em;
		}
			nav > ul > li > label[for].trigger::before {
				margin-top: -8px; /* Move the checkbox square down a bit (from -10px). `align-items: baseline` looks worse. */
			}

		@media (prefers-reduced-motion: reduce) {
			nav > ul > li > a,
			nav > ul > li > label {
				transition:
					/* Don't transition the `transform:` property. */
					background-color 0.1s,
					color 0.2s;
			}
		}
		nav > ul > li > a:not(.button):not(:link) {
			cursor: default; /* This is to avoid the I-beam cursor for the "Reports" and "Settings" menu-items which are not proper hyperlinks. */
		}

		header > nav > ul > li img.userAvatar {
			margin: 0;
			margin-right: 0.25em;
			margin-right: 0.50em;
			vertical-align: -7px;
			max-width: 24px;
			max-height: 24px;
		}

	nav li {
		font-family: -apple-system,BlinkMacSystemFont,SegoeUI-SemiBold,Segoe UI,Roboto,Noto Sans,Ubuntu,Droid Sans,Helvetica Neue,sans-serif;
		font-weight: 600;
		font-weight: 400;
	}
		/* Top-level and sub-menu links and triggers: */
		nav li > a:not(.button),
		nav li > a:not(.button):link,
		nav li > a:not(.button):visited,
		nav li > label[for].trigger {
			color: #153b76;
			color: var(--color-accent-dark);
			text-decoration: none;
			/*text-shadow: 0px 1px #dadada;*/
			transition: color 0.1s, background-color 0.1s;
		}
		nav li > label[for].trigger {
			display: flex; /* Better than `inline-flex` from Triggers.css */
		}

			nav li > label[for].trigger::before {
				/* This color is masked by the checkbox image. It should be the same as the label's text `color:`. */
				background-color: #153b76;
				background-color: var(--color-accent-dark);
			}

		nav li > a:not(.button):hover,
		nav li > label[for].trigger:hover {
			background-color: rgba(19, 86, 180, 0.33);
			background-color: var(--color-accent);

			color: white;
			color: var(--color-accent-text);
		}
			nav li > label[for].trigger:hover::before {
				/* This color is masked by the checkbox image. It should be the same as the label's text `color:`. */
				background-color: white;
				background-color: var(--color-accent-text);
			}

		/* Only top-level links and triggers: */
		nav > ul > li:hover > a:not(.button),
		nav > ul > li:hover > label[for].trigger {
			/* This rule is to keep the top-level menu item colored when the submenu is what has :hover (as the <a> and <label> won't be) */
			background-color: rgba(19, 86, 180, 0.33);
			background-color: var(--color-accent);

			color: white;
			color: var(--color-accent-text);
		}

		nav > ul > li > label[for].trigger {
			background: unset;
			box-shadow: none;
			margin: 0;
			border: none;
			line-height: 35px !important;
			border-radius: 0;
			text-shadow: none;
		}
		nav > ul > li > label[for].trigger:hover {
			/* This is the top-level Shop Chat <label>, not the User-Menu label. */
			background-color: rgba(19, 86, 180, 0.33) !important;
			background-color: var(--color-accent)  !important;
			box-shadow: unset !important;
		}
		nav > ul > li > label[for].trigger:active {
			background-color: rgba( 19, 86, 180, 0.80 ) !important;
			background-color: var(--color-accent-focus) !important;
			box-shadow: unset !important;
		}

		#shopChatUnreadBadge {
		}
		#shopChatUnreadBadge[data-count-red="0"] {
			display: none;
		}

		/* Hide `#shopChatUnreadBadge` when the chat window is open: */
		#chatVisible:not(:checked) ~ * #shopChatUnreadBadge {
		}
		#chatVisible:checked ~ * #shopChatUnreadBadge {
			display: none;
		}

		nav > ul > li > a:not(.button) > span.userInitials {
			margin-right: 0.5em;
		}

/* Navigation submenus. Same general style as InspectionImagesMenu: */

nav > ul > li > div {
	padding: 0.25em; /* Using 0.25em gives me 4px on one side but 3px on the other side, grrr. */
	padding: 4px;

	margin-top: -5px;

	z-index: 999;
	position: absolute;

	display: flex;
	flex-direction: column;

	background-color: #f9f9f9;
	background-color: var(--color-offwhite);

	box-shadow: 3px 3px  8px     rgba( 0, 0, 0, 0.2 );
	box-shadow: 6px 6px 30px 0px rgba( 0, 0, 0, 0.3 );

	border: 1px solid #1356b4;
	border-color: var(--color-accent);
	border-radius: 7px;

	transition: opacity 0.2s, transform 0.1s;
}
	@supports ( backdrop-filter: blur(10px) ) {
		nav > ul > li > div {
			backdrop-filter: blur(10px);
			background-color: var(--color-offwhite-08);
		}
	}
	@supports ( -webkit-backdrop-filter: blur(10px) ) {
		nav > ul > li > div {
			-webkit-backdrop-filter: blur(10px);
			background-color: var(--color-offwhite-08);
		}
	}

nav > ul > li > div {
	opacity: 0;
	transform: translateY(-6px);
	pointer-events: none;
}
nav > ul > li:last-child > div {
	right: 0;
}

nav > ul > li:hover > div {
	opacity: 1;
	transform: translateY(0);
	pointer-events: all;
}

nav > ul > li > div hr {
	border: none;
	height: 1px;
	border-bottom: 1px solid #1356b4;
	border-bottom-color: var(--color-accent);
	margin-left: 0.5em;
	margin-right: 0.5em;
}

@media (prefers-reduced-motion: reduce) {
	nav > ul > li > div {
		transform: none;
		transition: opacity 0.2s;
	}
	nav > ul > li:hover > div {
		transform: none;
	}
} /* END @media */

	nav > ul > li > div > ul {
		list-style: none;
		padding: 0;
		margin: 0;
		box-sizing: border-box;
		width: 100%;
	}
		nav > ul > li > div > ul > li {
			padding: 0;
			margin: 1px 0;
			display: block;
			box-sizing: border-box;
			width: 100%;
		}

			nav > ul > li > div > ul > li > label[for].trigger {
				/* Remove styles from Buttons2.css, before setting new ones in the a/label/button style below: */
				color: #153b76;
				color: var(--color-accent-dark);
				border: none;
				background: none;
				text-shadow: none;
				box-shadow: none;

				line-height: normal;
				padding: 0.3em 0.5em; /* 0.25em is too narrow. */
				margin: 0;
				border-radius: 5px;
			}
			nav > ul > li > div > ul > li > label[for].trigger:active {
				line-height: normal;
				padding: 0.3em 0.5em;
				padding-left: calc( 0.5em + 1px );
				padding-right: calc( 0.5em - 1px );
			}
				nav > ul > li > div > ul > li > label[for].trigger:active::before {
					position: relative;
					left: -1px;
				}

			nav > ul > li > div > ul > li > a,
			nav > ul > li > div > ul > li > label,
			nav > ul > li > div > ul > li > button {
				display: block;
				text-align: left;
				text-align: match-parent;

				width: 100%;
				box-sizing: border-box;

				padding: 0.3em 0.5em; /* 0.25em is too narrow. */
				margin: 0; /* Remember: margin does not interact with `box-sixing`! So setting this to a non-zero value will make <a> wider than the <li> */
				border-radius: 5px;
			}
			nav > ul > li > div > ul > li > a:hover {
				background-color: #1356b4;
				background-color: var(--color-accent);
				color: white;
				color: var(--color-accent-text);
			}
			nav > ul > li > div > ul > li > button {
				padding: 0;
			}
			nav > ul > li > div > ul > li > label {
			}
				nav > ul > li > div > ul > li > label[for].trigger:not(.disabled):hover {
					background-color: #1356b4;
					background-color: var(--color-accent);
					color: white;
					color: var(--color-accent-text);
				}

@media (max-width: 960px) {

	/*nav > ul > li > div > ul > li > label[for].trigger {*/
	nav li.labelForTriggerWrapper > label {
		display: none !important;
	}
}
@media (max-width: 767px) { /* Not 768px, but narrower; */

	ul.mainNav {
		flex-wrap: wrap;
	}
}

/* 2020-10-19: Badges: */
nav > ul > li span.badge {
	display: inline-block;
	/*width: 1.5em;*/
	height: 1.5em;
	line-height: 1.5em;

	text-align: center;

	margin: -1em;
	margin-left: -0.5em;
	padding: 0 0.5em;

	position: relative; /* This avoids problems caused by absolute positioning, I think? */
	top: -8px;
	left: 5px;

	z-index: 10; /* So the badge appears on-top of the hover background-color of sibling navigation links */
}
nav > ul > li > a > span.badge {
	top: -15px;
}

nav > ul > li span.badge {
	background-color: #1356b4;
	background-color: var(--color-accent);
	color: white;
	color: var(--color-accent-text);
	font-weight: bold;

	border-radius: 1em; /* This should render as a rounded-rect that expands horizontally */
}
nav > ul > li span.badge.isBlu {
	background-color: cornflowerblue;
	color: white;
	font-weight: bold;
}
nav > ul > li span.badge.isRed /* `isRed` is more important than `isBlu` btw */ {
	background-color: red;
	color: white;
	font-weight: bold;
}

/* Giving the snooze badge a 1px purple border just looks bad... in a "cheap"-looking way, and I don't know why. */
/*
#snoozeBadge {
	width: 32px;
	height: 32px;
	top: -15px;

	background-color: white;
	background-color: var(--color-background);

	border-radius: 16px;
	border: 1px solid #5655D4;

	padding: 0 !important;
}
	#snoozeBadge::before {
		content: '';
		background-color: white;
		display: block;
		width: 32px;
		height: 32px;

		width: 28px;
		height: 28px;
		top: -15px;

		background-color: #2c31c7;
		background-color: #5655D4; / * Apple's screen-time logo color * /

		mask-repeat: no-repeat;
		mask-position: center center;
		mask-size: contain;
		mask-image: var(--image-snooze);

		-webkit-mask-repeat: no-repeat;
		-webkit-mask-position: center center;
		-webkit-mask-size: contain;
		-webkit-mask-image: var(--image-snooze);
	}
*/
#snoozeBadge {
	content: '';
	background-color: white;
	display: block;
	width: 32px;
	height: 32px;

	width: 28px;
	height: 28px;
	top: -15px;

	background-color: #2c31c7;
	background-color: #5655D4; /* Apple's screen-time logo color */

	mask-repeat: no-repeat;
	mask-position: center center;
	mask-size: contain;
	mask-image: var(--image-snooze);

	-webkit-mask-repeat: no-repeat;
	-webkit-mask-position: center center;
	-webkit-mask-size: contain;
	-webkit-mask-image: var(--image-snooze);

	/*  */

	/*transition: transform 0.1s;*/
}
nav > ul > li:hover #snoozeBadge {
	/*transform: translateY(-20px);*/
}

/* 2020-10-29: Hide the Conclusions count badge if it's just old Conclusions (i.e. `isBlu`). Still render it to HTML though, so scripts can update the badge if necessary. */
nav > ul > li span.badge.conclusions:not(.isRed) {
	display: none;
}


nav > ul > li span.badge.titleHelp[data-title] {
	text-decoration: none;
	cursor: help;
}
nav > ul > li span.badge.titleHelp[data-title]:hover {
	position: absolute;
}
	nav > ul > li span.badge.titleHelp[data-title]::before {
		bottom: -50px;
	}



/* Same as the above, but for popups - which should only have the compact header when narrower than ~960px (as many popups are configured to be `95vw`, and 95% of 1024px is 972px. */
/*
	UDPDATE: Nah, this doesn't work because many popups are much narrower (E.g. FindingDetailsPage) and they shouldn't have their pageHeader changed, gah.
	Ideally this would be using CSS Grid layout without @media rules so that content is re-flowed automagically: https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/
*/
@media only screen and (max-width: 799px) {
	html.isPopup .cut {
		display: none;
	}
}
@media only screen and (max-width: 480px) {
	.cut480 {
		display: none;
	}


	/* Squeeze another 10px (5px from each side) of space: */
	body {
		padding: 1px 5px;
	}
	@supports ( padding: env(safe-area-inset-bottom) ) {
		body {
			padding-right : calc( env(safe-area-inset-right) + 5px );
			padding-left  : calc( env(safe-area-inset-left)  + 5px );
		}
	}
}
@media only screen and (max-width: 960px) {
	.cut960 {
		display: none;
	}
}

/*
	<footer>
		<a href="/">
			<img src="/static-assets/images/footerLogo-rev-JwPZhzxj83-TWalH.png" alt="Repair Shop Solutions Logo" width="184" height="57">
		</a>
		<nav>
			<ul class="footer-nav">
				<li><a href="/help/customer-service" class="">Customer Service</a></li>
				<li><a href="/help/sitemap" class="">Sitemap</a></li>
				<li><a href="/help/terms-and-conditions" class="">Terms &amp; Conditions</a></li>
				<li><a href="/help/privacy-policy" class="">Privacy Policy</a></li>
			</ul>
		</nav>
		<p>Copyright etc</p>
	</footer>
*/

footer {
    width: 100%;
	box-sizing: border-box;

	margin: 1em auto;
	padding: 1em;

	border: 1px solid #ccc;
	border-color: var(--color-table-act-border);
    border-radius: 5px;

	display: flex;
    justify-content: space-around;
    align-items: center;
	flex-wrap: wrap;

	/* Fabric/Fluent button box-shadow style, but 0.04 opacity instead of 0.08: */
	box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 4px 1px;
}
	@supports (mix-blend-mode: color-burn) {
		@media screen and (prefers-color-scheme: dark) {
			:root:not(.lightMode) footer img {
				mix-blend-mode: color-burn; /* Wow, this works great! */
				opacity: 0.2;
			}
		}
		:root.darkMode footer img {
			mix-blend-mode: color-burn; /* Wow, this works great! */
			opacity: 0.2;
		}
	}

	footer > nav {
		background-position: left top;
	}

	@media (max-width: 767px) {
		/* For viewports narrower than 768px, so not iPads - but this will include those 7-inch Android tablets. */
		ul.footer-nav {
			display: none;
		}
	}

		footer > nav > ul {
			list-style: none;
			display: flex;
			margin: 0;
			padding: 0;
		}
			footer > nav > ul > li {
				color: #1356b4;
				color: var(--color-accent-dark);
				text-decoration: none;
				text-align: center;
			}
				footer > nav > ul > li > a {
					color: #1356b4;
					color: var(--color-accent-dark);
					text-decoration: none;
				}
				footer > nav > ul > li > a:hover {
					color: black;
				}

	footer > p {
		font-size: smaller;
		color: #666;
		/*
		margin: 1em auto 0 auto;
		flex-basis: 100%;
		*/
		margin: 1em;
		text-align: center;
	}

/* div#mainWrapper, <main> and Chat: */
/* NOTE: This is concerned ONLY with the layout and sizing of the containers, not their other styling, nor the layout of their contents. */

div#mainWrapper {
}

@media screen and ( max-width: 1270px ) {
	div#mainWrapper {
		display: flex;
		flex-direction: column;
		gap: 1em;
	}
		div#mainWrapper > aside#chatSection {
			resize: vertical;
			flex-basis: 10em; /* 10em tall */
			flex-grow: 0;
		}
		div#mainWrapper > main {
		}
}

@media screen and ( min-width: 1271px ) {
	:root:not(.chatTop) div#mainWrapper {
		display: flex;
		flex-direction: row-reverse;
		justify-content: stretch;
		gap: 1em;
	}
		:root:not(.chatTop) div#mainWrapper > aside#chatSection {
			resize: none;
			/*
			flex-basis: 10em; / * 10em wide * /
			flex-basis: 15vw; / * Heh, resizing the window makes this hurt my brain * /
			flex-basis: 20em;
			*/
			flex-grow: 0;
		}
		:root:not(.chatTop) div#mainWrapper > main {
			flex-grow: 1;
		}


	:root.chatTop div#mainWrapper {
		display: flex;
		flex-direction: column;
		gap: 1em;
	}
		:root.chatTop div#mainWrapper > aside#chatSection {
			resize: vertical;
			flex-basis: 10em; /* 10em tall */
		}
		:root.chatTop div#mainWrapper > main {
		}
}

@media screen and ( min-width: 1360px ) {
	:root:not(.chatTop) div#mainWrapper > aside#chatSection {
		flex-grow: 0;
	}
}

@media screen and (max-width: 1024px) {
	/* `<iframe id="launcher">` is ZenDesk's.  */
	body.hasDialogs iframe#launcher {
		display: none;
	}
}

label[for="snoozeNotifications"] > span {
	margin-left: 0.25em;
}
htmlisPopup > body.front {
}

html:not(isPopup) > body.front {
	max-width: 920px; /* 940px, minus's #wrapper's 10px padding on both sides */
	margin-left: auto;
	margin-right: auto;
}

/* The `htmlisPopup` rule will hide <header>, so no need to use this rule prefix below here. */

/*
	<header>
		<h1></h1>
		<div>
			<nav class="accountNav">
				<p></p>
				<ul class="account-buttons"></ul>
			</nav>
			<nav>
				<ul class="mainNav"></ul>
			</nav>
		</div>
	</header>

*/

body.front header > div {
	flex-basis: 100%;
	margin: 0;
	margin-left: 1em;
}

	body.front header > div > nav.accountNav {
		flex-basis: 58px;
	}

body.front header ul.mainNav {
	/*width: 506px;*/
	flex-grow: 2;
	margin-left: 1em;
}
	body.front header.noUserSession ul.mainNav {
		justify-content: space-around;
	}
	body.front header.hasUserSession ul.mainNav {
		justify-content: flex-start;
	}

	body.front header ul.mainNav li a {
	}

	body.front header ul.mainNav > li > a {
		margin: 0;
		padding-top: 0;
		padding-right: calc( 1em + 2px ); /* Same as User.master, but using 1em instead of `0.5em + 1vw` because it makes the UI break if the window is too wide. */
		padding-bottom: 0;
		padding-left: calc( 1em  );
	}

/* Styles removed from User.master.css but still needed by Front.master: */

body.front ul.mainNav > li:hover > a,
body.front ul.mainNav > li > a:hover {
	background-color: rgba( 127, 127, 127, 0.2 );
	border-radius: 0;
}

body.front header {
	display: flex;
	flex-wrap: nowrap;
	align-items: flex-start; /* i.e. vertical-align: top */

	padding: 8px 0;
}
	body.front header > h1 {

		/* Reset style.css: */
		margin: 0;
		padding: 0;
		font-size: inherit;
		font-family: inherit;
		color: inherit;
		clear: none;
	}

	body.front header > address {
		font-style: normal;
		margin: 0 10px;
	}

	body.front header > div {
		margin-left: auto;
		display: flex;
		flex-direction: column;

		justify-content: space-around;
		justify-content: space-evenly; /* IE11 doesn't support `space-evenly`. */

		align-self: stretch;
	}

	body.front header > div > nav.accountNav {
		text-align: right;
	}
		body.front header > div.front {
			justify-content: space-between;
		}

	body.front header ul {
		list-style: none;
	}

	body.front header > div > nav {
		justify-content: flex-end;
		flex-basis: 69px; /* 69px height */ /* "nice" */
	}

		body.front header > div > nav > p {
			margin: 0 0.5em 0 0; /* To give it the same spacing as the `account-buttons` do. Note the default rule for <p> gives it a 10px bottom margin (so always check that when investigating baseline alignment issues) ugh. */
		}

		body.front header > div > nav,
		body.front header > div > nav > ul.account-buttons {
			display: inline-flex;
			flex-wrap: wrap;
			align-items: center;
			margin: 0;
			padding: 0;
			list-style: none;
		}

		body.front header > div > nav > ul.account-buttons {
			border: none;
			box-shadow: none;
			background: none;
		}
		body.front header > div > nav > ul.account-buttons:hover {
			background: none;
		}

		body.front header > div > nav > ul.account-buttons > li {
			margin-left: 0.5em;
		}

		body.front header > div > nav > ul.account-buttons > li a,
		body.front header > div > nav > ul.account-buttons > li button {
			text-transform: uppercase;
			font-size: 1em;
			text-decoration: none;
		}

		body.front header > div > nav > ul.account-buttons button {
			cursor: pointer;
			display: inline;
			font-family: inherit;
		}

		body.front header > div > nav > ul.account-buttons a:link,
		body.front header > div > nav > ul.account-buttons a:visited,
		body.front header > div > nav > ul.account-buttons button {
			color: white;
			color: var(--color-accent-text);
		}

		body.front header > div > nav > ul.account-buttons button,
		body.front header > div > nav > ul.account-buttons a.button {
			/*padding: 6px 16px 6px 16px !important;*/
			padding: 0.25em 1em !important;
		}

		body.front header > div > nav > ul.account-buttons button:active,
		body.front header > div > nav > ul.account-buttons a.button:active {
			/*padding: 6px 16px 6px 16px !important;*/
			padding-left: calc( 1em  + 1px ) !important;
			padding-right: calc( 1em - 1px ) !important;
		}

@media (max-width: 767px) {
	/* For viewports narrower than 768px, so not iPads - but this will include those 7-inch Android tablets. */

	body.front header {
		/*flex-wrap: wrap;*/
		justify-content: center;
		padding: 0;
	}
		body.front header > h1 {
			margin: 0;
		}
		body.front header > div {
			margin: auto;
			justify-content: center;

			flex-basis: 100%;
			box-sizing: border-box;
			flex-shrink: 1;
			flex-grow: 0;
		}
			body.front header > div > time {
				display: none;
			}
		body.front header > address {
			display: none;
		}

		body.front header > div > nav.accountNav {
			flex-wrap: wrap;
			justify-content: center;
			flex-basis: auto;
		}
			body.front header > div > nav > ul.account-buttons {
				margin: 0 auto;
				padding: 0;

				flex-wrap: wrap;
				justify-content: center;
			}

			body.front header > div > nav > ul.account-buttons > li {
				margin: 0.25em;
			}

	body.front ul.mainNav {
		flex-wrap: wrap;
		background-image: none;

		/* This is cool: from http://simurai.com/lab/2011/08/21/brushed-metal */
		/*
		background-image:
			-webkit-repeating-linear-gradient( top, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,0) 6%  , hsla(0,0%,100%, .1) 7.5%),
			-webkit-repeating-linear-gradient( top, hsla(0,0%,  0%,0) 0%, hsla(0,0%,  0%,0) 4%  , hsla(0,0%,  0%,.03) 4.5%),
			-webkit-repeating-linear-gradient( top, hsla(0,0%,100%,0) 0%, hsla(0,0%,100%,0) 1.2%, hsla(0,0%,100%,.15) 2.2%),
			linear-gradient(180deg, hsl(0,0%,78%) 0%, hsl(0,0%,90%) 47%, hsl(0,0%,78%) 53%, hsl(0,0%,70%)100%);


		background-image:
			linear-gradient( to right, hsla( 0, 0%, 78%, 0.2 ) 0%, hsla( 0, 0%, 90%, 0.2) 47%, hsla( 0, 0%, 78%, 0.2 ) 53%, hsla( 0, 0%, 60%, 0.5 ) 100% ),
			repeating-linear-gradient( to bottom, hsla( 0, 0%, 100%, 0 ) 0%, hsla( 0, 0%, 100%, 0) 6.0%, hsla( 0,0%, 100%, 0.1  ) 7.5% ),
			repeating-linear-gradient( to bottom, hsla( 0, 0%,   0%, 0 ) 0%, hsla( 0, 0%,   0%, 0) 4.0%, hsla( 0,0%,   0%, 0.03 ) 4.5% ),
			repeating-linear-gradient( to bottom, hsla( 0, 0%, 100%, 0 ) 0%, hsla( 0, 0%, 100%, 0) 1.2%, hsla( 0,0%, 100%, 0.15 ) 2.2% ),
			linear-gradient( 180deg, hsl( 0, 0%, 78% ) 0%, hsl( 0, 0%, 90% ) 47%, hsl( 0, 0%, 78% ) 53%, hsl( 0, 0%, 70% ) 100% );

		box-shadow: inset 0 -10px 10px -10px #000000; /* https://stackoverflow.com/questions/12081814/have-an-issue-with-box-shadow-inset-bottom-only/12082032

		*/
	}
		body.front ul.mainNav > li {

		}
			body.front ul.mainNav > li > span {
				display: none;
			}
}

@media (max-width: 374px) { /* i.e. iPhone 4S/5/5S/SE width (320px) but not iPhone 6/6S/7/8 width (375px) */
	body.front header {
		flex-direction: column;
	}
		body.front header > h1 {
			margin: 0.25em auto;
		}
}

/* END User.master.css */

@media (max-width: 1023px) {
	body.front header {
		/*flex-wrap: wrap;*/
	}

	body.front header ul.mainNav {
		margin-left: 1em; /* To give it spacing between itself and the logo image in <h1> */
		border: none;
	}

		body.front header ul.mainNav li a {
			height: auto;
		}

		/* Hide the ridged borders: */
		body.front header .mainNav li a::before,
		body.front header .mainNav li a::after {
			display: none;
		}

		body.front header > div {
			margin: 0 !important;
		}

	body.front header > h1 > a > img {
		width: 100%;
		box-sizing: border-box;
	}

	body.front header > div > nav.accountNav {
		flex-basis: 32px; /* So `.mainNav` vertically aligns with the logo image. */
	}

	body.front section.pageHeader {
		margin-top: 0;
	}
}

@media (max-width: 767px) {

	body.front header {
		flex-direction: column;
		align-items: center;
	}
		body.front header > * {
			margin: 0.25em auto;
		}

	html:not(isPopup) > body.front {
		width: auto;
	}

	body.front header ul.mainNav {
		width: auto;
		margin-left: 0;
	}

	body.front header ul.mainNav li a {
		font-size: 110%;
	}
}


/* Logo Animation: */

body.front header > h1 > a.logo {
	display: block;
	line-height: 0;
	position: relative;
	transition: all 2s ease-in-out;
}

	body.front header > h1 > a.logo > span { /* The spans are the `.logoArrowOne/Two/Three` */
		transition: all 2s ease-in-out;

		/* logoArrowOne is higher-res than logoArrowTwo, so use it for all of them. */
		background-image: url("/images/logoArrowOne.png");
		background-image: var(--image-logo-arrow);
		background-position: center center;
		background-repeat: no-repeat;

		position: absolute;

		/*outline: 1px solid red;*/
		cursor: pointer;
	}

	.logo:hover > .logoArrowLeft {
		transform: scale(0.6) rotate(-140deg);
	}
	.logo:hover > .logoArrowMiddle {
		transform: rotate(-160deg);
	}
	.logo:hover > .logoArrowRight {
		transform: scale(0.6) rotate(-140deg);
	}

.logoArrowLeft {
	top   : 29.0%;
	right : 62.4%;
	bottom: 19.6%;
	left  : 22.6%;

	animation: arrowLeft 2.5s ease-in-out;
}

.logoArrowMiddle {
	top   : 14.5%;
	right : 38.9%;
	bottom: 12.8%;
	left  : 38.9%;

	animation: arrowMiddle 2.5s ease-in-out;
}

.logoArrowRight {
	top   : 29.0%;
	right : 22.6%;
	bottom: 19.6%;
	left  : 62.4%;

	animation: arrowRight 2.5s ease-in-out;
}

.logoArrowLeft,
.logoArrowRight {
	transform: scale(0.6) rotate(0deg);
}

@keyframes arrowLeft {
	from {
		transform: scale(0.6) rotate(-180deg);
		opacity: 0;
	}
	to {
		transform: scale(0.6) rotate(-10deg);
		opacity: 1;
	}
}
@keyframes arrowMiddle {
	from {
		transform: rotate(-160deg);
		opacity: 0;
	}
	to {
		transform: rotate(0deg);
		opacity: 1;
	}
}
@keyframes arrowRight {
	from {
		transform: scale(0.6) rotate(-140deg);
		opacity: 0;
	}
	to {
		transform: scale(0.6) rotate(0deg);
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	.logoArrowLeft,
	.logoArrowMiddle,
	.logoArrowRight {
		animation: none;
	}
}

html.sandbox > body.front header > h1 > a.logo > span {
	display: none;
}
/* See also: User.master.css */
button {
	box-sizing: content-box; /* Chrome's stylesheet defaults to `box-sizing: border-box` for some reason. */
}

button,
a.button,
label[for].trigger,
label[for].adjacentCheckboxLabel,
label.button {

	display: inline-block;
	line-height: 1.15; /* This is needed to stop certain text (i.e. emojis) affecting the line-height and making some elements bigger than others. */
	white-space: nowrap;

	border: 3px solid #1356b4;
	border-color: var(--color-accent);
	border-radius: 5px;

	font-size: 1em;
	font-family: inherit;

	/*padding: 0.25em 0.5em;  -3px + 6px looks better, imo */
	/*padding: 3px 6px;*/
	padding: 4px 8px 4px 8px; /* ...this looks better-still - this is 8px vertical, 16px horizontal, plus 1px border. */
	padding: 1px 5px 1px 5px; /* ...this looks better-still - this is 8px vertical, 16px horizontal, plus 1px border. */

	margin: 0; /* Safari and Chrome differ in the `margin` defaults for <button> */

	color: white;
	color: var(--color-accent-text);
	background-color: #1356b4;
	background-color: var(--color-accent);

	transition:
		background-color 0.2s ease-in-out,
		color            0.2s ease-in-out,
		box-shadow       0.2s ease-in-out;

	text-decoration: none;
	cursor: pointer;
	touch-action: manipulation; /* This should remove the awkward delay in touch-devices (iOS Safari) when tapping toggles. This is not the same thing as the 300ms delay that existed prior to 2013 (though both scenarios may involved `touch-action`): https://developers.google.com/web/updates/2013/12/300ms-tap-delay-gone-away */

	user-select: none;
	-ms-user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;

	/* Fabric/Fluent button box-shadow style: */
	box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.08); /* Reminder: `box-shadow: <x-offset> <y-offset> <blur> <spread> <color>;` */

	/* This looks good too: */
	text-shadow: 0 1px rgba(0, 0, 0, 0.5);
	text-shadow: 0 1px var(--color-button-text-shad);
}
	button                           span.cut,
	a.button                         span.cut,
	label[for].trigger               span.cut,
	label[for].adjacentCheckboxLabel span.cut,
	label.button                     span.cut {
/*		white-space: normal; // `white-space: normal` results in a computed-style of `white-space-collapse: collapse;` which removes any inner-whitespace in `.cut` elements, whereas we want to preserve it. */
		white-space: pre-wrap; /* `white-space: pre-wrap` results in `white-space-collapse: preserve;` which is what we want. */
/*		outline: 1px solid red; // For troubleshooting whitespace issues. */
	}

	section.pageHeader button,
	section.pageHeader a.button,
	section.pageHeader label[for].trigger,
	section.pageHeader label[for].adjacentCheckboxLabel,
	section.pageHeader label.button {
		box-shadow: rgba(0, 0, 0, 0.12) 0px 2px 4px 1px;
	}


	label[for].trigger::before,
	label[for].adjacentCheckboxLabel::before {
		transition: background-color 0.2s ease-in-out;
	}
	label[for].trigger:hover::before,
	label[for].adjacentCheckboxLabel:hover::before {
		transition: none;
	}

/* Interaction states: */
button:not(:disabled):hover,
a.button:not(.disabled):hover,
label[for].trigger:not(.disabled):hover,
label[for].adjacentCheckboxLabel:not(.disabled):hover,
label.button:hover {
	background-color: #333333;
	color: white;

	box-shadow: 0px 2px 7px 3px rgba(0, 0, 0, 0.2);

	transition: none; /* Don't transition *on enter :hover* - it makes it feel far more responsive. */
}

td button:not(:disabled):hover,
td a.button:not(:disabled):hover,
td label.button:not(:disabled):hover {
	box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.16) ;
	text-shadow: none;
}


/* While <button>, <fieldset>, <input />, <select>, <option>, and <textarea> have the `disabled` attribute, <a> and <label> do not, hence the `.disabled` CSS class name. */
button:disabled,
a.disabled,
label[for].trigger.disabled,
label[for].adjacentCheckboxLabel.disabled,
label.button.disabled {
	background-color: #999;
	cursor: not-allowed;
	border: 3px solid transparent;
}

button:focus,
a.button:focus,
label[for].trigger:focus,
label[for].adjacentCheckboxLabel:focus,
label.button:focus {

	/* Same as input[type=...]:focus in Forms.css: */
	/*
	outline: 3px solid rgba(19, 86, 180, 0.8);
	outline-color: var(--color-accent-focus);
	outline-offset: -4px;
	*/

	background-color: #333333;
	color: white;
	transition: none; /* For instant UI visual feedback. The transition from :not(:focus) to :focus is instant, but the transition from :focus to :not(:focus) is transitioned btw. */
}

button:focus-visible,
a.button:focus-visible,
label[for].trigger:focus-visible,
label[for].adjacentCheckboxLabel:focus-visible,
label.button:focus-visible {

	/*
		This 3px dotted effect is good, but only suitable for keyboard-driven focus, not mouse-driven focus.
		Browsers do not yet support `:focus-visible` which is meant to differentiate between mouse vs. keyboard-driven focus.
		(Chrome/WebKit and Mozilla do, but only as an experimental feature)
		In future we'll enable this for keyboard-driven focus - until then, use the more subtle "inside outline" defined below:

	outline: 3px dotted #1356b4;
	outline: 3px dotted -webkit-focus-ring-color;
	outline-offset: 5px;
	*/

	/* I'd like to use a box-shadow effect - but it's a pain because CSS doesn't support "appending" box-shadow layers or background-layers to any that are already inherited, but here's this instead: */
	--color-focus: white;

	outline: 1px dotted white;
	outline: 1px dotted invert; /* Only IE supports 'invert', annoyingly. */
	outline: 1px dotted var(--color-focus);
	outline: 1px dotted var(--color-accent-focus);
	outline: 3px solid var(--color-accent-focus);

	/*outline: 3px solid -webkit-focus-ring-color;*/
	outline-offset: 2px; /* `outline-offset` doesn't work if `outline-style: auto;` */
	outline-offset: -4px;
	outline-offset: 2px; /* 2px is outside the box, -4px is inside the box. */
}
button:-moz-focusring,
a.button:-moz-focusring,
label[for].trigger:-moz-focusring,
label[for].adjacentCheckboxLabel:-moz-focusring,
label.button:-moz-focusring {
	outline: 3px solid var(--color-accent-focus);
	outline-offset: -4px;
	outline-offset: 2px;
}

	button:focus:hover,
	a.button:focus:hover,
	label[for].trigger:focus:hover,
	label[for].adjacentCheckboxLabel:focus:hover,
	label.button:focus:hover,

	button:focus:active,
	a.button:focus:active,
	label[for].trigger:focus:active,
	label[for].adjacentCheckboxLabel:focus:active,
	label.button:focus:active {
	}

	button.pale:focus,
	a.button.pale:focus,
	label[for].pale.trigger:focus,
	label[for].pale.adjacentCheckboxLabel:focus,
	label.button.pale:focus {
	}

button:active, /* active aka "pressed" */
a.button:active,
label[for].trigger:active,
label[for].adjacentCheckboxLabel:active,
label.button:active {

	/* Original padding is `padding: 4px 8px;` --> `padding: 4px 8px 4px 8px`, 8px total vertical, 16px total horizontal. */
	/* So this padding maintains the button's dimensions but shifts the text around: */
	/* UPDATE: Ugh - applying any changes to the vertical padding of the button (even if adds up to the same amount) breaks how `baseline` works and it shifts the line around, so for now - just move the text horizontally. */

/*	padding: 5px 7px 3px 9px !important;*/
/*	padding: 3px 5px 1px 7px !important; <-- this causes the baseline to move */
/*	padding: 5px 5px 3px 7px !important;*/
	padding: 1px 4px 1px 6px;

	/* Fade-out box-shadow when :active */
	/* Inspiration: https://codepen.io/sandstedt/pen/QjGjYR  */
	box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.01) !important;
}

	button:active:focus,
	a.button:active:focus,
	label[for].trigger:active:focus,
	label[for].adjacentCheckboxLabel:active:focus,
	label.button:active:focus {

	}


/* Alternatve colors: */


/* Dotted outlines (Windows-style) just... don't look good: */
/*
button:focus,
a.button:focus,
label[for].trigger:focus {
	outline-offset: 2px;
	outline-style: dotted;
	outline-color: black;
}
*/

/* This may be an improvement, but still has sharp corners: */
/*
button:focus,
a.button:focus,
label[for].trigger:focus {
	outline-offset: -2px;
	outline-style: dashed;
	outline-color: white;
}
*/

button.destructive:not(:disabled) {
	background-color: #b41313;
	transition: box-shadow 0.2s;

	box-shadow:
		/* <x-offset> <y-offset> <blur> <spread> <color> */
		0px 2px 4px 1px rgba(0, 0, 0, 0.08) /* Same as .button */;

}
button.destructive:not(:disabled):hover {
	background-color: #620d0d;

	box-shadow:
		/* <x-offset> <y-offset> <blur> <spread> <color> */
		0px 2px 4px 1px rgba(0, 0, 0, 0.08) /* Same as .button */,
		0px 0px 20px 1px rgba(255, 0, 0, 0.2) /* Danger warning */;
}

/* Margin between buttons in div.actions: */
div.actions button,
div.actions a.button,
div.actions label[for].adjacentCheckboxLabel,
div.actions label.button.trigger,
div.actions label.button.adjacentCheckboxLabel {
	margin-right: 0.5em;
	text-transform: uppercase;
}

button.linkButton {
	display: inline;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
	background: none;
	border: none;
	text-shadow: none;
	color: inherit;
	box-shadow: none;

	padding: 0.3em 0.5em;

	color: #1356b4;
    color: var(--color-accent-fore);
    color: var(--color-accent-dark);
    text-decoration: none;
    /* text-shadow: 0px 1px #dadada; */
    transition: color 0.1s, background-color 0.1s;
}
button.linkButton:hover {
	background-color: rgba(19, 86, 180, 0.33);
    background-color: var(--color-accent);
    color: white;
    color: var(--color-accent-text);
}

a.button[target="_blank"],
button.popupRequired {
}
	a.button[target="_blank"]::after,
	button.popupRequired::after {
		display: inline-block;
		content: '';
		vertical-align: baseline;
		width: 14px;
		height: 14px;
		background-image: url("/images/UI/External.svg");
		background-image: var(--image-open-external);
		background-size: contain;
	}

	/* ...except for: */
	a.button[target="_blank"].insAssDownload::after {
		/* Note that we *do* want to show the popup indicator in `ul.tabs > li > a[target="_blank"]` btw. */
		display: none;
	}
/* Table buttons: */
/* IMPORTANT: this file should be ordered immediately after Buttons2.css, not Tables.css. */

/* Buttons in tables: much lighter style to avoid distracting the user or looking too heavy: */

td.actions a.button,
td.actions button,
td.actions label[for] {

	display: inline-block;
    line-height: 1.15;

	border: 1px solid #ccc;
	border: 1px solid var(--color-table-act-border);

    border-radius: 5px;
    font-size: inherit;
    font-family: inherit;

    padding: 4px 8px 4px 8px;
    background-color: white;
    background-color: var(--color-table-background);
    color: black;
    color: var(--color-foreground);

	box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 4px 1px;
	text-shadow: none;

    transition:
		background-color 0.2s ease-in-out,
		color            0.2s ease-in-out,
		border-color     0.2s ease-in-out,
		box-shadow       0.2s ease-in-out;
    text-decoration: none;
    cursor: pointer;
}
	td.actions a.button:hover,
	td.actions button:hover,
	td.actions label[for]:hover {
		color: white;
		color: var(--color-accent-text);
		background-color: #1356b4;
		background-color: var(--color-accent);

		text-shadow: 0 1px rgba(0, 0, 0, 0.5);
		text-shadow: 0 1px var(--color-button-text-shad);
	}

	td.actions a.button:disabled,
	td.actions button:disabled,
	td.actions label[for]:disabled {
		background-color: white;
		background-color: var(--color-table-background);
		color: #aaa;
		cursor: not-allowed;
		opacity: 0.8;
	}
	td.actions a.button:disabled:hover,
	td.actions button:disabled:hover,
	td.actions label[for]:disabled:hover {
		color: #aaa;
		text-shadow: none;
		opacity: 0.8;
	}

	td.actions a.button:active,
	td.actions button:active,
	td.actions label[for]:active {
		 padding: 4px 7px 4px 9px;
	}

td.actions a.button,
td.actions button {
/*	margin-right: 0.5em;*/
}

@media screen and (max-width: 1023px) {
	td.actions {
		/* Re-enable wrapping in the actions cell. */
		white-space: normal;
	}
		td.actions a.button,
		td.actions button,
		td.actions label[for] {
			display: block;
			margin: 0.25em 0;
			text-align: center;
			width: 100%;
			box-sizing: border-box;
		}
		td.actions .disabled,
		td.actions button[disabled] {
			display: none;
		}
}

/* table.hoverActions styles: */
@media screen and (min-width: 1024px) {

	table.hoverActions {
	}
		table.hoverActions > thead > tr > th.actions {
			font-size: 0;
			padding: 0;
		}
		table.hoverActions > tbody > tr > td.actions {
			position: relative;
			padding: 0;
			border-left-color: transparent;
		}

			table.hoverActions > tbody > tr > td.actions > div {
				position: absolute;
				top: 0;
				right: 0;
				height: 100%; /* Does this work better than `bottom: 0;`? */

				display: flex;
				align-items: center;
				justify-content: space-between;

				background-color: white;
				background-color: #f9f9f9;
				background-color: var(--color-offwhite);

				background-color: #CCFFCC;
				background-color: var(--color-table-hover-td);

				/*box-shadow: -5px 0 10px 14px white; <-- This adds the shadow to the other sides, but I ony want it on the left edge, so use ::before instead */
				padding-left: 1em;
				padding-right: 0.5em;
			}
				table.hoverActions > tbody > tr > td.actions > div::before {
					content: '';
					display: block;
					pointer-events: none; /* `pointer-events: none;` prevents this gradient box from preventing users hovering the Customer Notes tooltip. */

					position: absolute;
					right: 100%;

					width: 75px;
					height: 100%;

					/*outline: 1px solid blue;*/
					background-image: linear-gradient( 90deg, rgba( 255, 255, 255, 0 ) 0%, rgba( 255, 255, 255, 1 ) 100% );
					background-image: linear-gradient( 90deg, var(--color-offwhite-00) 0%, var(--color-offwhite-10) 100% );

					background-image: linear-gradient( 90deg, #CCFFCC00 0%, #CCFFCCFF 100% );
					background-image: linear-gradient( 90deg, #CCFFCC00 0%, var(--color-table-hover-td) 100% );
				}

			table.hoverActions.shiftActions > tbody > tr:not(.hasDetails.detailsVisible) > td.actions > div {
				right: var(--shift-actions);
			}
			table.hoverActions.shiftActions  > tbody > tr.hasDetails.detailsVisible > td.actions > div {
				right: 0;
			}
			table.hoverActions.shiftActions > tbody > tr.hasDetails.detailsVisible > td.actions > div > *:last-child {
				margin-right: calc( 0.25em + var(--shift-actions) );
			}

			/* This gives a fade-in animation and no fade-out animation:
			table.hoverActions > tbody > tr:not(:hover) > td.actions > div {
				opacity: 0;
				transition: none;
			}
			table.hoverActions > tbody > tr:hover > td.actions > div {
				opacity: 1;
				transition: opacity 0.2s;
			}
			*/

			/* This gives no fade-in animation, but has fade-out: */
			table.hoverActions > tbody > tr:not(:hover) > td.actions > div {
				opacity: 0;
				transition: opacity 0.2s;
			}
			table.hoverActions > tbody > tr:hover > td.actions > div {
				opacity: 1;
				transition: none;
			}
				td.actions > div > * {
					margin: auto 0.25em;
				}

	/* When the details row is visible ALWAYS show the div.actions as though it's in the details area, so no hover required: */

	table.hoverActions > tbody > tr.hasDetails.detailsVisible + tr.details.visible > td.detailsColumn {
		/*padding-top: 50px; /* HACK: This is content-specific! Better idea: set it in page-specific CSS, e.g. InspectionList.css */
	}

	table.hoverActions > tbody > tr.hasDetails.detailsVisible > td.actions > div {
		opacity: 1;
		top: calc( 100% + 1px );
		z-index: 1;
		/*right: 0; - No, don't enable this. It's too jarring and distracting, and stops being able to use the History button as a toggle. */
	}

	table.hoverActions > tbody > tr.hasDetails:not(.detailsVisible) > td.actions > div .cut {
		display: none;
	}

	table.hoverActions > tbody > tr.hasDetails.detailsVisible > td.actions > div .cut {
	}

	/* ----  */

	table.hoverActions > tbody > tr > td.actions a.button,
	table.hoverActions > tbody > tr > td.actions button,
	table.hoverActions > tbody > tr > td.actions label[for] {

		border-width: 3px;

		border-color: white;
		border-color: var(--color-table-background); /* Same as `td.actions a.button, td.actions button, td.actions label[for]`'s background-color  */

		padding: 1px 5px 1px 5px;
		padding: 2px 6px 2px 6px; /* This looks nicer. */

		text-transform: uppercase;
	}

	table.hoverActions > tbody > tr > td.actions a.button:not(.disabled):hover,
	table.hoverActions > tbody > tr > td.actions button:not(:disabled):hover,
	table.hoverActions > tbody > tr > td.actions label[for]:not(.disabled):hover {
		background-color: black;
		background-color: #1356b4;
		background-color: var(--color-accent);

/*		box-shadow: 0px 2px 4px 1px rgb(0 0 0 / 16%); */
/*		box-shadow: 0px 2px 4px 1px rgba(0,0,0,50%); / * This really does make the light borders look ugly... */
		box-shadow: 0px 2px 4px 1px rgba(0,0,0,25%);

		border-color: #1356b4;
		border-color: var(--color-accent);
	}

	table.hoverActions > tbody > tr > td.actions a.button:not(.disabled):active,
	table.hoverActions > tbody > tr > td.actions button:not(:disabled):active,
	table.hoverActions > tbody > tr > td.actions label[for]:not(.disabled):active {
		/* Same as Buttons2.css `button:not(:disabled):hover` */
		background-color: #333333;
		color: white;
	}

	/* Hide the emojis in the .hoverActions for a cleaner look: */
	table.hoverActions > tbody > tr > td.actions a.button   span[data-emoji]:not([data-emoji="U1F698"]) /* ...but the emoji is still needed for the CarFax button */,
	table.hoverActions > tbody > tr > td.actions button     span[data-emoji],
	table.hoverActions > tbody > tr > td.actions label[for] span[data-emoji] {
		display: none;
	}
}

/* Forms, inputs and controls: (from Rss.Identity - `Style-Forms.css`) */

/*
	Notes on font-sizes!

	These font-size keywords:
		{
			xx-small
			x-small
			small
			medium
			large
			x-large
			xx-large
			xxx-large
		}
		* Are all *absolute* sizes, but their actual size is undefined by the CSS spec.
		* But `medium == 100%` font-size.



	These font-size keywords:
		{
			smaller
			larger
		}
		* Are relative, and are *meant* to be the same percentage-change as `small` is to `medium` and `medium` is to `large`.
		* They're commutative, so each (cascading? nested? inherited?) `font-size: larger;` increases whatever the inherited font-size was by the same %.
*/

input,
select,
textarea {
	font-size: larger;
	padding: 0.25em;
}
	input::placeholder {
		color: #bbb;
	}
	/* TODO: Why doesn't this work?
	input::placeholder,
	input:-ms-input-placeholder,
	input::-ms-input-placeholder {
		color: white;
	}*/

	textarea[readonly],
	textarea:read-only,
	input[readonly],
	input:read-only {
		background: #eee;
	}

	select.read-only {
		background: #eee !important;
		pointer-events: none;
	}

	input[type=search] {
		border-radius: 0; /* iOS / Safari seems to set a very round border-radius here. */
	}

	::-webkit-search-cancel-button {
		cursor: pointer;
	}

input[type=text],
input[type=tel],
input[type=email],
input[type=password],
input[type=datetime-local],
input[type=datetime],
input[type=date],
input[type=url],
input[type=search],
input[type=number],
select,
textarea {
	border: 1px solid #a9a9a9;
	border-color: var(--color-control-border);

	box-shadow: 1px 1px 4px #ebebeb;
	box-shadow: 1px 1px 4px rgba( 0, 0, 0, 0.08 );

	font-family: inherit;
	transition: box-shadow 0.1s; /* <-- This doesn't work for transitioning `inset` to non-inset box-shadows. */
}
	input[type=text]:hover,
	input[type=tel]:hover,
	input[type=email]:hover,
	input[type=password]:hover,
	input[type=datetime-local]:hover,
	input[type=datetime]:hover,
	input[type=date]:hover,
	input[type=url]:hover,
	input[type=search]:hover,
	input[type=number]:hover,
	/*select:hover, // exclude select because select isn't a text input field, so having an inset shadow feels weird */
	textarea:hover {
		/*box-shadow: 1px 1px 4px #1462ce;*/
		box-shadow:
			inset 1px 1px 4px rgba(20, 98, 206, 0.32),  /* Same as #1462ce, but 0.32 alpha. */
			/*1px 1px 4px rgba(20, 98, 206, 0.32),*/
			1px 1px 4px #ebebeb;

		box-shadow:
			inset 1px 1px 4px var(--color-accent-hover),  /* Same as #1462ce, but 0.32 alpha. */
			/*1px 1px 4px rgba(20, 98, 206, 0.32),*/
			1px 1px 4px #ebebeb;

		box-shadow:
			inset 1px 1px 4px var(--color-accent-hover),  /* Same as #1462ce, but 0.32 alpha. */
			/*1px 1px 4px rgba(20, 98, 206, 0.32),*/
			1px 1px 4px rgba( 0, 0, 0, 0.08 );

		/*animation: inputFieldBoxShadow 0.1s ease-in;*/
	}
	select:hover {
		box-shadow: 1px 1px 4px rgba(20, 98, 206, 0.32);
		box-shadow: 1px 1px 4px var(--color-accent-focus);
	}

	@keyframes inputFieldBoxShadow {
		/*
		0% {
			box-shadow:
				inset 0   0   0   rgba( 0, 0, 0, 0    ),
				      1px 1px 4px rgba( 0, 0, 0, 0.08 );
		}
		50% {
			box-shadow:
				inset 0 0 0 rgba(0,0,0,0),
				      0 0 0 rgba(0,0,0,0);
		}
		100% {
			box-shadow:
				inset 1px 1px 4px var(--color-accent-hover),
				      1px 1px 4px #ebebeb;

			box-shadow:
				inset 1px 1px 4px var(--color-accent-hover),
				      1px 1px 4px rgba( 0, 0, 0, 0.08 );
		}
		*/
	}

	input[type="text"          ]:focus:not(:focus-visible),
	input[type="tel"           ]:focus:not(:focus-visible),
	input[type="email"         ]:focus:not(:focus-visible),
	input[type="password"      ]:focus:not(:focus-visible),
	input[type="datetime-local"]:focus:not(:focus-visible),
	input[type="datetime"      ]:focus:not(:focus-visible),
	input[type="date"          ]:focus:not(:focus-visible),
	input[type="url"           ]:focus:not(:focus-visible),
	input[type="search"        ]:focus:not(:focus-visible),
	input[type="number"        ]:focus:not(:focus-visible),
	select:focus:not(:focus-visible),
	textarea:focus:not(:focus-visible) {
		/*border: 1px solid #1462ce; <-- don't use border to indicate focus! */

		/* I'd like to use a box-shadow effect, but here's this instead: */
		outline: 3px solid rgba(19, 86, 180, 0.30);
		outline: 3px solid rgba(19, 86, 180, 0.8);
		/* Neat trick to change the alpha component of an RGB value, but requires a special custom-property value: https://stackoverflow.com/questions/40010597/how-do-i-apply-opacity-to-a-css-color-variable/41265350#41265350 */
		outline-color: var(--color-accent-focus);

		/*outline: 3px solid -webkit-focus-ring-color;*/
		outline-offset: 2px; /* `outline-offset` doesn't work if `outline-style: auto;` */
		outline-offset: -4px;
	}

	textarea:focus {
		outline-offset: -2px; /* Looks slightly nicer */
	}

	input[type="text"          ]:focus-visible,
	input[type="tel"           ]:focus-visible,
	input[type="email"         ]:focus-visible,
	input[type="password"      ]:focus-visible,
	input[type="datetime-local"]:focus-visible,
	input[type="datetime"      ]:focus-visible,
	input[type="date"          ]:focus-visible,
	input[type="url"           ]:focus-visible,
	input[type="search"        ]:focus-visible,
	input[type="number"        ]:focus-visible,
	select:focus-visible,
	textarea:focus-visible {
		outline: 3px solid #1356b4;
		outline: 3px solid -webkit-focus-ring-color; /* Now that Chrome 86 is out - the default color is black still for some reason. How does Chrome get the rounded corners on the outline though? */
		outline-color: var(--color-accent);
		outline-offset: -4px; /* `outline-offset` doesn't work if `outline-style: auto;` */
		outline-offset: 2px; /* 2px is outside the box, -4px is inside the box. */
	}

	input[type=text]:-moz-focusring,
	input[type=tel]:-moz-focusring,
	input[type=email]:-moz-focusring,
	input[type=password]:-moz-focusring,
	input[type=datetime-local]:-moz-focusring,
	input[type=datetime]:-moz-focusring,
	input[type=date]:-moz-focusring,
	input[type=url]:-moz-focusring,
	input[type=search]:-moz-focusring,
	input[type=number]:-moz-focusring,
	select:-moz-focusring,
	textarea:-moz-focusring {
		outline: 3px solid #1356b4;
		outline-color: var(--color-accent);
		outline-offset: -4px; /* `outline-offset` doesn't work if `outline-style: auto;` */
	}

	input[type=number] {
		text-align: right;
	}

	input[type=number].nospinner::-webkit-outer-spin-button,
	input[type=number].nospinner::-webkit-inner-spin-button,
	input[type=date].nospinner::-webkit-inner-spin-button,
	input[type=date].nospinner::-webkit-inner-spin-button {
		/* https://stackoverflow.com/questions/3790935/can-i-hide-the-html5-number-input-s-spin-box */
		-webkit-appearance: none;
		margin: 0;
	}
	input[type=number].nospinner,
	input[type=date].nospinner {
		-moz-appearance: textfield; /* Firefox */
	}

	@media screen and (prefers-color-scheme: dark) {
		:root:not(.lightMode) input[type=text],
		:root:not(.lightMode) input[type=tel],
		:root:not(.lightMode) input[type=email],
		:root:not(.lightMode) input[type=password],
		:root:not(.lightMode) input[type=datetime-local],
		:root:not(.lightMode) input[type=datetime],
		:root:not(.lightMode) input[type=date],
		:root:not(.lightMode) input[type=url],
		:root:not(.lightMode) input[type=search],
		:root:not(.lightMode) input[type=number],
		:root:not(.lightMode) select,
		:root:not(.lightMode) textarea  {
			background-color: var(--color-background) !important;
			color: var(--color-foreground) !important;
		}
	}
	:root.darkMode input[type=text],
	:root.darkMode input[type=tel],
	:root.darkMode input[type=email],
	:root.darkMode input[type=password],
	:root.darkMode input[type=datetime-local],
	:root.darkMode input[type=datetime],
	:root.darkMode input[type=date],
	:root.darkMode input[type=url],
	:root.darkMode input[type=search],
	:root.darkMode input[type=number],
	:root.darkMode select,
	:root.darkMode textarea  {
		background-color: var(--color-background) !important;
		color: var(--color-foreground) !important;
	}

optgroup {
	font-style: normal; /* Firefox renders them as Bold+Italic, for some reason. I'm fine with Bold, just not Italics. */
}

/*
@supports ( -moz-appearance: none ) {
	select {
		-moz-appearance: none;
		background-image: url("/images/Chevron-Down-Black.svg");
		background-image: var(--image-chevron-down-black);
		background-size: 14pt;
		background-repeat: no-repeat;
		background-position-x: right 4.5pt;
		background-position-y: center;
	}
	select:focus,
	select:active {
		background-image: url("/images/Chevron-Up-Black.svg");
		background-image: var(--image-chevron-up-black);
	}
}
*/

form {
	transition: opacity 0.5s;
}

form.busy {
	opacity: 0.5;
	cursor: wait !important;
	transition: opacity 0.5s;
}
	form.busy input,
	form.busy button,
	form.busy a,
	form.busy label[for],
	form.busy label.checkboxLabel {
		pointer-events: none; /* Don't set `pointer-events` on <form> because that stops `cursor: wait` from working. UPDATE: Hmm, still not working, damn. */
		cursor: wait !important;
	}

label[for] {
	cursor: pointer;
}

.field {
	margin: 1em 0;
	max-width: 20em;

	clear: both;
}
	.field > label,
	.field > span,
	.field > .fieldSplit label {
		/*display: inline-block;*/
		font-size: smaller;
		display: block;
	}

		.field > label.required > span:only-child,
		.field > label.required > span.requiredIndicator,
		.field > .fieldSplit label > span:only-child { /* `:only-child` is there so it doesn't style most (all, I hope!) other fields that use spans for other reasons. I should add a dedicated className for this... */
			float: right;
			color: #967474;
		}

		.field > label.dynRequired::after,
		.field > .fieldSplit label.dynRequired::after {
			content: '(Required)';
			display: inline;
			float: right;
			color: #967474;
		}

	.field > input[type=text]:not([hidden]),
	.field > input[type=tel]:not([hidden]),
	.field > input[type=email]:not([hidden]),
	.field > input[type=password]:not([hidden]),
	.field > input[type=datetime-local]:not([hidden]),
	.field > input[type=datetime]:not([hidden]),
	.field > input[type=date]:not([hidden]),
	.field > input[type=url]:not([hidden]),
	.field > input[type=search]:not([hidden]),
	.field > input[type=number]:not([hidden]),
	.field > input[type=file]:not([hidden]),
	.field > select:not([hidden]),
	.field > textarea:not([hidden]) {
		display: block;
	}

	.field > input[hidden],
	.field > select[hidden],
	.field > textarea[hidden] {
		display: none;
	}

	.field > input[type=text],
	.field > input[type=tel],
	.field > input[type=email],
	.field > input[type=password],
	.field > input[type=datetime-local],
	.field > input[type=datetime],
	.field > input[type=date],
	.field > input[type=url],
	.field > input[type=search],
	.field > input[type=number],
	.field > input[type=file],
	.field > select,
	.field > textarea {
		width: 100%;
		box-sizing: border-box;
	}

	.field > textarea {
		width: 100%;
		resize: vertical;
	}

	.field > select:not(:disabled) {
		cursor: pointer;
	}

	.field > textarea:not([rows]) {
		height: 6em;
	}

	input[type=email],
	input[type=tel],
	input[autocomplete=email],
	input[autocomplete=username],
	input[autocomplete=new-username],
	input[autocomplete=current-username] {
		text-transform: lowercase;
	}

	/*@supports selector(input[type="color"i]::-webkit-color-swatch-wrapper) { - grumble, this breaks Bundler. */

		input[type="color"] {
			padding: 0;
			cursor: pointer;

			/* Same as `input[type=text]` */

			border: 1px solid #a9a9a9;
			border-color: var(--color-control-border);

			box-shadow: 1px 1px 4px #ebebeb;
			box-shadow: 1px 1px 4px rgba( 0, 0, 0, 0.08 );

			font-family: inherit;
			transition: box-shadow 0.1s; /* <-- This doesn't work for transitioning `inset` to non-inset box-shadows. */
		}
			input[type="color"]::-webkit-color-swatch-wrapper { /* There's a `[type="color"]` case-insensitive flag is in Chrome's user-agent-styles.css, curiou - I can't use it here because it breaks BundlerMinifier, grumble. */
				padding: 0; /* This is how you get the no-border look. */
				margin: 0; /* ...just for good-measure. */
			}
				input[type="color"]::-webkit-color-swatch {
				}
	/*}*/



	.field > label.checkboxLabel {
		/*margin-left: 2em;*/
	}
		.field > label.checkboxLabel > input[type=checkbox] {
			/*margin-left: -1em;*/
			/*float: left;*/
		}

	.field > span:empty,
	.field > .errors:empty {
		display: none;
	}
	.field > span {
		margin: 0.25em 0;
	}
		.field > span.description {
			color: #888;
		}
	.field > output {
		font-size: smaller;
		padding: 0.1em; /* To give it a slight indent */
	}

	input.input-validation-error {
		border: 1px solid red;
	}
	span.field-validation-error {
		color: red;
	}

	.field span > button {
		font-size: smaller;
	}

	.field.smol {
		max-width: 10em;
	}
	.field.big {
		max-width: 40em;
	}
	.field.wide {
		max-width: none;
	}

	.field .sublist {
		padding-left: 1em;
	}
		.field > .sublist > label {
			display: block;
			font-size: smaller;
		}

.fieldRow {
	display: flex;
	flex-wrap: wrap;
	margin: 0.5em 0;

	/*
	border: 1px solid #dadada;
	border-radius: 5px;
	*/
}
	.fieldRow > .field {
		margin: 1em 0.5em;
		flex-shrink: 0;
		flex-grow: 0;
		flex-basis: 20em;
	}

	.fieldColumn {
		display: flex;
		flex-direction: column;
	}

.field > .fieldSplit {
	display: flex;
	justify-content: space-between;
}
	.field > .fieldSplit > div {
		flex-shrink: 1;
		margin-right: 0.125em;
		margin-left: 0.125em;
	}
	.field > .fieldSplit > div:first-child {
		margin-left: 0;
	}
	.field > .fieldSplit > div:last-child {
		margin-right: 0;
	}

	.field > .fieldSplit input[type=text],
	.field > .fieldSplit input[type=tel],
	.field > .fieldSplit input[type=email],
	.field > .fieldSplit input[type=password],
	.field > .fieldSplit input[type=datetime-local],
	.field > .fieldSplit input[type=datetime],
	.field > .fieldSplit input[type=date],
	.field > .fieldSplit input[type=url],
	.field > .fieldSplit input[type=search],
	.field > .fieldSplit input[type=number],
	.field > .fieldSplit input[type=file],
	.field > .fieldSplit select,
	.field > .fieldSplit textarea {
		width: 100%;
		box-sizing: border-box;
		min-width: 0; /* Firefox's interpretation of the flexbox rules bestows an intrinsic min-width to flex-items that they cannot shrink smaller than, even with `flex-shrink: 999`. Chrome doesn't apply a min-width for some reason. See https://stackoverflow.com/questions/36247140/why-dont-flex-items-shrink-past-content-size */
	}

	.field > .fieldSplit > button:last-child {
		margin: 0.25em 0 0.25em 0.25em;
	}

	.field > .fieldSplit.baseline {
		/* Verify that these properties can be moved into the `.field > .fieldSplit` rule (i.e. so they don't negatively affect existing split fields) */
		align-items: baseline;
	}
		.field > .fieldSplit.baseline > span:first-child {
			padding: 0.25em;
		}

	/*

	<div class="field">
		<div class="fieldSplit">
			<div>
				<label for="<%: c.IdFor( m => m.MainOwnerUser.FirstName ) %>">First name</label>
				<input type="text" <%= c.IdNameValueFor( m => m.MainOwnerUser.FirstName ) %> />
			</div>

			<div>
				<label for="<%: c.IdFor( m => m.MainOwnerUser.LastName ) %>">Last name</label>
				<input type="text" <%= c.IdNameValueFor( m => m.MainOwnerUser.LastName ) %> />
			</div>
		</div>

		<span class="errors"><%: c.AllErrorsFor( m => m.MainOwnerUser.FirstName ) %></span>
		<span class="errors"><%: c.AllErrorsFor( m => m.MainOwnerUser.LastName ) %></span>
	</div>

	*/

.fieldsetContainer {
	/*
	`fr` == "fraction of available space in container"

	grid-column: <grid-column-start> / <grid-column-end>; TODO: how does `span` work and why doesn't `grid-column: 1 / 4` mean "span from 1 to 4"?
	grid-row   : <grid-row-start>    / <grid-row-end>;
	*/

	display: grid;
	grid-template-columns: 1fr 1fr; /* No commas between columns! */
	grid-column-gap      : 1em;
	grid-row-gap         : 1em;

	/* Auto-columns to the rescue! */
	grid-template-columns: repeat( auto-fit, minmax( 22em, 1fr ) );
}
	.fieldsetContainer > fieldset {
		margin: 0; /* Because `grid-gap: 1em` is defined above. */
	}

fieldset {
	border-radius: 5px;
	border: 1px solid #ccc;
	border-color: var(--color-container4);
	margin: 1.5em;

	background: #f7f7f7;
	background: var(--color-container1);

	box-sizing: border-box;
}
	fieldset.rootFieldset {
		margin: 0;
	}
@media ( max-width: 1023px ) {
	fieldset {
		margin: 0;
	}
}

	fieldset fieldset {
		background: #eeeeee;
		background: var(--color-container2);
		width: 20em;
		margin: 1em 0.25em;
	}
		fieldset fieldset fieldset {
			background: #d7d7d7;
			background: var(--color-container3);
		}

		fieldset fieldset .field {
			margin: 0.5em 0;
		}

ul.checkboxList {
	list-style-type: none;
	padding: 0;
}
	ul.checkboxList.restrictHeight {
		max-height: 250px;
		overflow: auto;
		border-radius: 5px;
		transition: background-color 0.2s;

		border: 1px solid #a9a9a9;
		box-shadow: 1px 1px 4px #ebebeb;
		box-shadow: 1px 1px 4px rgba( 0, 0, 0, 0.08 );
	}
		ul.checkboxList.restrictHeight:hover {
			background-color: #dedede;
			background-color: var(--color-container3);
			transition: background-color 0.2s;
		}

	label.forCheckbox,
	ul.checkboxList > li {
		margin: 0.1em 0;
		padding: unset;
		border-radius: 5px;
	}
	label.forCheckbox:hover,
	ul.checkboxList > li:hover {
		background-color: #eeeeee;
		background-color: var(--color-container2);
		color: black;
		color: var(--color-foreground);
	}
		label.forCheckbox,
		ul.checkboxList > li > label {
			cursor: pointer;

			/* Outward-indent the first line of the text to make room for the checkbox, but add padding to compensate. */
			display: block;
			text-indent: -17px;
			padding: 0.3em;
			padding-left: 21px;

			/* Hmm, something happened and the above rules don't look good anymore, so here's this: */
			text-indent: -25px;
			padding-left: 30px;
		}
		label.forCheckbox > input[type=checkbox],
		ul.checkboxList > li > label > input[type=checkbox] {
			/*
			margin: 0;
			position: relative;
			top: 2px;
			*/
		}
		label.checkboxLabel {
			cursor: pointer;
			border-radius: 5px;
			user-select: none; /* To prevent text-selection when double-clicking to toggle the checkbox */
		}
		label.checkboxLabel:hover {
			background: #ccc;
			background-color: var(--color-container4);
			color: black;
			color: var(--color-foreground);
		}

.field > ul.checkboxList {
	display: inline-block;
	margin: 0;
	vertical-align: top;
}
.field.checkboxList {
	margin: 0;
}

.addressFieldset {
}
	.addressFieldset > .field {
		display: flex;
		flex-wrap: wrap;
		align-items: baseline;
		margin: 0.5em 0;
	}
		.addressFieldset > .field > label {
			flex-shrink: 0;
			width: 10em;
		}
		.addressFieldset > .field > input {
			flex-shrink: 1;
			flex-grow: 1;
			width: auto;
		}
		.addressFieldset > .field > span {
			flex-shrink: 0;
			width: 100%;
		}

/* <meter> appearance:
* The range is split into 3 parts based on min, low, high, and max: [ T1: min < low, T2: low < high, T3: high < max ] - however these parts do not dictate the color!
* The value of the optimum attribute dictates which part gets which color (or more specifically, which of the 3 pseudo-classes are applied to each part (optimum: green, sub-optimum: yellow, sub-sub-optimum: red)
* When `optimum` points to a value in T3, then T1 is red, T2 is yellow, T3 is green
* When `optimum` points to a value in T2, then T1 and T3 are yellow, T2 is green, nothing is red.
* When `optimum` points to a value in T1, then T1 is green, T2 is yellow, T3 is red
*/

meter.passwordStrength {
/* As of Chrome 52, setting `-webkit-appearance: none` breaks <meter>, so don't use it anymore. This is by-design: https://www.chromestatus.com/feature/5668635896971264 */
	width: 100%;
	height: 10px;
	display: block;

/* Needed for Firefox: */
	-moz-appearance: none;
	background: #EEE;
}
/* We cannot combine the -webkit and -moz selectors together in the same rules because if any single selector for a rule fails then the entire rule is ignored, gah. */

	/* -webkit: */
	/* The pseudo-element and pseudo-class names are listed in Chromium's html.css file: https://github.com/chromium/chromium/blob/2ca8c5037021c9d2ecc00b787d58a31ed8fc8bcb/third_party/blink/renderer/core/css/html.css */
	meter::-webkit-meter-bar /* This is the track, not the indicator bar itself. */ {
		background: #EEE;
	}
	meter::-webkit-meter-optimum-value {
		background: #86CC00;
	}
	meter::-webkit-meter-suboptimum-value { /* VS complains this is invalid and thinks it's "::-webkit-meter-suboptimal-value". VS is wrong. */
		background: #FFDB1A;
	}
	meter::-webkit-meter-even-less-good-value {
		background: #CC4600;
	}

	/* -moz: */
	meter::-moz-meter-bar {
		background: #EEE;
	}
	meter:-moz-meter-optimum::-moz-meter-bar {
		background: #86CC00;
	}
	meter:-moz-meter-sub-optimum::-moz-meter-bar {
		background: #FFDB1A;
	}
	meter:-moz-meter-sub-sub-optimum {
		background: #CC4600;
	}

/*

<div class="field" id="shopLogoField">
	<label for="logoImage">Shop logo</label>

	<label for="logoImage" class="currentShopLogo">

		<img src="file.png" alt="Current shop logo" id="shopLogoPreviewImg" />

	</label>

	<p>Images should be sized at least 600 pixels wide or 250 pixels tall for best quality when printed.</p>

	<input type="file" id="logoImage" name="logoImage" accept="image/*" onchange="onFileUploadChangedForImagePreview( this, 'shopLogoPreviewImg' )" />
	<span class="errors">...</span>
</div>

*/

label.currentShopLogo {
	border: 1px solid #999;
	border-radius: 5px;
	display: flex;
	align-items: center;
	flex-direction: column;
	background-color: white;
	padding: 1em;
}
	label.currentShopLogo > img {
		margin: auto;
		width: 100%;
		object-fit: scale-down; /* Scale-down is the same as 'contain' except it won't stretch a small image to be larger, so this makes small images appear small, but big images appear normal-sized. */
	}
label.currentShopLogo:hover {
	box-shadow:
		inset 1px 1px 4px var(--color-accent-hover),
		1px 1px 4px rgba( 0, 0, 0, 0.08 );
}

/* Form validation errors: */
p.errors,
span.errors {
	color: red;

	/* Highlight errors on page-load: */
	/* Cool trick: https://codepen.io/ariona/pen/LEEadb/ - you can't use `transition` to animate gradients, but you can animate background-position. */
}
p.warnings,
span.warnings {
	color: orange; /* Is that enough contrast on-white? */
}

div.errors {
	border: 1px solid palevioletred;
	border-radius: 5px;
	margin: 1em 0;
	padding: 0 1em;
}

/*
.validationSummary > ul,
ul.validationSummary {
	margin: 0.5em 0;
	margin-bottom: -0.5em; / * Because the following `section.pageHeader`'s top-margin compensates for it. * /
	padding: 0.5em;
	padding: 0;
	list-style: none;

	display: flex;
	flex-direction: column;
	align-items: center;

	border: 1px solid #ffbdbd;
	border-radius: 7px;

	background-color: #fff3f2;
}
	.validationSummary > ul > li,
	ul.validationSummary > li {
		margin: 0.25em;
		padding: 0.25em;
	}
*/

ul.interPageMessages {
	margin: 0.5em 0;
	padding: 0.5em;
	padding: 0;
	list-style: none;

	display: flex;
	flex-direction: column;
	align-items: center;

	border: 1px solid #ddd;
	border-radius: 7px;

	/* TODO: Different background-colors on each <li> based on its message class? Allow arbitrary CSS class names associated with each message? */
	background-color: #CCFFCC /* Same color as table row hover */;

	position: relative;
}
	ul.interPageMessages > li.closeInterPageMessages {
		position: absolute;
		top: 0;
		right: 0;
		margin: 0;
		padding: 0;
	}
		ul.interPageMessages > li.closeInterPageMessages > button {
			margin: 0.25em;
		}

	ul.interPageMessages > li {
		margin: 0.25em;
		padding: 0.25em;
	}

	:root.darkMode ul.interPageMessages {
		color: black;
	}
	@media screen and (prefers-color-scheme: dark) {
		ul.interPageMessages {
			color: black;
		}
	}

@supports (-webkit-appearance: checkbox) or (-moz-appearance: checkbox) {
}

/* Form help <details><summary> */

.field details {
	padding: 0 0.25em;
	/* padding-top: 0; /* Need zero top padding otherwise the details will have a visible but non-clickable. UPDATE: Or use negative margins...  */

	/*
	background: #f7f7f7;
	background: var(--color-container1);
	*/

	/*border-radius: 7px;*/

	cursor: default; /* Why is I-Beam the default for an interactive element?! */

	transition: box-shadow 0.2s;/*background-color 0.2s; - don't transition background-color, it makes it feel laggy*/

	/* When this set then the text needs `padding-left: 0.25em` but that makes it look weird.
	border-bottom-left-radius: 5px;
	border-bottom-right-radius: 5px;
	*/
}
.field input + span.errors:empty + details,
.field select + span.errors:empty + details {
	margin-top: 3px; /* Otherwise it covers the bottom border of the <input>. */
}

.field details[open] {
	background: #f7f7f7;
	background: var(--color-container1);
	box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.08);
	box-shadow: none;
}
.field details[open],
.field details:hover {
	background-color: #dedede;
	background-color: var(--color-container3);
}
.field details:active {
	background-color: #cccccc;
	background-color: var(--color-container4);
}
	.field details > summary {
		display: block; /* 2021-03-18: Chrome is changing from `summary { display: block; }` to `display: list-item`, btw. https://chromestatus.com/feature/6730096436051968 */

		padding-top: 0.5em; /* To make up for the lack of `padding-top` in the <details> */
		padding: 0.1em;
		cursor: pointer; /* It's the <summary> that opens when clicked when collapsed, not the entire <details> element. */

		font-size: small;

		/* UPDATE: try this: */
		margin-top   : -0.25em;
		margin-right : -0.25em;
		margin-bottom: -0.25em;
		margin-left  : -0.25em;

		color: #666;
		color: var(--color-text-summary);
	}
	.field:hover details       > summary,
	.field       details[open] > summary {
		opacity: 1;
	}
		.field details > summary::before {
			display: inline-block;
			content: '';
			width: 16px;
			height: 16px;
			width: 14px; /* Better... */
			height: 14px;
			width: 1em; /* DrakeMeme.jpg */
			height: 1em;

			vertical-align: text-bottom;
			margin-right: 0.25em;

			background-image: url("/images/Results/Help.svg");
			background-image: var(--image-help);
			background-size: contain;
			background-repeat: no-repeat;
		}

	.field details > summary:focus {
		outline: 3px solid rgba(19, 86, 180, 0.8);
		outline-color: var(--color-accent-focus);
		outline-offset: 3px;

		outline: none;
	}
	.field details > summary:focus:hover,
	.field details > summary:focus:active {
		outline: none;
	}

	.field details > summary::-webkit-details-marker {
		/* TODO: I want to make sure this looks good in Firefox, et al. */
		color: #1356b4;
		color: var(--color-accent);
	}
	.field details > summary::marker {
		 /* 2021-03-18: Chrome is deprecating `summary::-webkit-details-marker` and using `::marker` instead. https://chromestatus.com/feature/6730096436051968 */
		color: #1356b4;
		color: var(--color-accent);
	}

	.field details > *:nth-child(2) {
		/* Assuming there will only ever be 1 child of a <details> */
		/*padding: 0.25em 1em;*/
	}
	.field details > ul:nth-child(2) {
		padding-right: 1.5em; /* As opposed to Chrome's default of `padding-inline-start: 40px;` */
	}

.field label + details {
	margin: 0.25em 0;
}
	.field label + details > summary {

	}

ul.field.checkboxList > li > .labelAndDetails {
	display: flex;
	align-items: baseline;
}
	ul.field.checkboxList > li > .labelAndDetails > label {
		flex-grow: 1;
	}
	ul.field.checkboxList > li > .labelAndDetails > details {
		position: static;
		flex-basis: 5em;
		flex-shrink: 0;
	}
	ul.field.checkboxList > li > .labelAndDetails > details[open] > summary + * {
		position: absolute;

		width: 10em;
		padding: 0.25em;

		background: #f7f7f7;
		background: var(--color-container1);
		box-shadow: 0px 2px 4px 1px rgba(0, 0, 0, 0.08);
	}

	ul.field.checkboxList > li > details {
		padding-left: 30px;
	}

input[type] ~ details {
	border-top-left-radius: 0;
	border-top-right-radius: 0;
	border-bottom-left-radius: 7px;
	border-bottom-right-radius: 7px;
	padding-bottom: 7px;
	padding-left: 4px;
}

@media ( min-width: 640px /* Arbitrary width, but it's the minimum space required to show 20em-wide details to the side of field inputs */ ) {

	/* This feels like a bit of a hack because of the use of absolute positioning instead of say, using `div.field { display: grid; }` (which results in a mess thanks to suboptimal default grid child placement) */
	.field:not(.checkboxList),
	ul.field.checkboxList > li {
		position: relative; /* Hold on, is this safe? */
	}

	/*
	.field details {
		position: absolute;
		left: 21em; / * `.field` has `max-width: 21em` * /
		left: calc( 100% + 1em ); / * This works fine, actually. * /
		width: 20em;
	}
	ul.field.checkboxList > li details {
		top: 0;
		right: 0;
		left: auto;
		bottom: auto;
		width: 5em;
	}
	.field.wide details {
		top: -4px;
		left: 21em;
		padding: 0 0 0 0.25em;
	}

	.field details[open] {
		z-index: 20;
	}

	.field details:active,
	.field details:focus-within {
		z-index: 21; / * This keeps the most-recently-clicked on <details> on-top. * /
	}

		.field details > summary::-webkit-details-marker {
			/ * TODO: I want to make sure this looks good in Firefox, et al. * /
		}
	*/
}

/* <form> elements used to reload iframes for preview purposes: */
form.previewForm {
	display: none;
}

iframe.previewIFrame {
	height: 100%;
	height: 300px; /* `height: 100%` doesn't work when the parent has `min-height` but not `height`. This is just easier. */
	height: 200px; /* 200px to be more compact, though more complex Tasks in Small-phone viewports will exceed this. */
	width: 100%;

	margin: 0 auto;

	resize: none;
	/* Don't enable horizontal nor vertical resize because it messes with everything. */

	box-sizing: content-box;

	border: 3px solid var(--color-accent);
	border-radius: 7px;
}

/*
	Android/Material-style on/off switch checkboxes:

	<input />        - Hidden, must be prior adjacent sibling of <label>
	<label>          - The track
	<label>::after   - The thumb
*/

input[type=checkbox].onoff {
	display: none;
}
input[type=checkbox].onoff + label { /* Caution: The ASP.NET Core <input type="checkbox" /> tag-helper will render the <input type="hidden" value="false" /> element immediately after the checkbox if the <form> tag-helper is not used. */
	position: relative;
	display: inline-block;
	height: 11px;
	margin: 0.5em;
	background: #c8c8c8;
	border-radius: 100px;
	cursor: pointer;
	transition: all 0.3s ease;

	/* Hide <label> text: */
	color: transparent;
	user-select: none;
	-ms-user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;
	width: 35px;
}
	input[type=checkbox].onoff + label::after {
		position: absolute;
		left: -2px;
		top: -3px;
		display: block;
		width: 16px;
		height: 16px;
		border-radius: 100px;
		background: #fff;
		box-shadow: 1px 2px 4px 2px rgba(0,0,0,0.15);
		content: '';
		transition: all 0.3s ease;
	}
		input[type=checkbox].onoff + label:hover::after {
			background-color: #1356b4;
			background-color: var(--color-accent);
			/*box-shadow: 1px 2px 4px 2px rgba(0,0,0,0.2);*/
		}
		input[type=checkbox].onoff + label:hover::after {
			box-shadow: 1px 2px 4px 2px rgba(0,0,0,0.2);
		}
		input[type=checkbox].onoff + label:active::after {
			transform: scale(1.15, 0.85);
		}

		input[type=checkbox].onoff:checked + label {
			background-color: #bdc9db;
			background-color: var(--color-accent-fade);
		}
		input[type=checkbox].onoff:checked + label::after {
			left: 20px;
			background: #5e94de; /* Hmm, this is a lighter shade... */
			background-color: var(--color-accent);
		}
		input[type=checkbox].onoff:checked + label:hover::after {
			background-color: #1356b4;
			background-color: var(--color-accent);
			transition: background-color 0.1s ease;
		}

		input[type=checkbox].onoff:disabled + label {
			background: #d5d5d5;
/*			pointer-events: none;*/
			cursor: not-allowed;
		}
		input[type=checkbox].onoff:disabled + label::after {
			background: #bcbdbc;
			cursor: not-allowed;
		}
		input[type=checkbox].onoff:disabled:checked + label::after {
			background-color: #1356b4;
			background-color: var(--color-accent);
			opacity: 0.8;
		}

span.onoff-absent /* Placeholder to have the same metrics to prevent table rows having different heights. */ {
	display: inline-block;
	height: 11px;
	margin: 0.5em;
	width: 35px;
}
/*

	<input type="radio" id="tab0_trigger" class="trigger" name="tabs" checked="checked" />
	<input type="radio" id="tab1_trigger" class="trigger" name="tabs" />
	<input type="radio" id="tab2_trigger" class="trigger" name="tabs" />
	<input type="radio" id="tab3_trigger" class="trigger" name="tabs" />
	<input type="radio" id="tab4_trigger" class="trigger" name="tabs" />

	<div>

		<ul class="tabs">
			<li><label for="tab0_trigger">Company info</label></li>
			<li><label for="tab1_trigger">Import data</label></li>
			<li><label for="tab2_trigger">Assign company</label></li>
			<li><label for="tab3_trigger">Subscription</label></li>
			<li><label for="tab4_trigger">Delete company</label></li>
		</ul>

		<div class="triggered t1">

			Tab 1 content

		</div>

		<div class="triggered t2">

			Tab 2 content

		</div>

		<div etc...

	</div>

*/

ul.tabs {
	display: flex;
	/*margin: 0.5em;*/
	margin: 0.5em 0;
	padding: 0.5em;

	border-radius: 6px;

	/* New lighter style: */
	background-color: #fafafa;
	background-color: var(--color-accent-pale);

	box-shadow: inset 0 5px 10px 1px rgba(0, 0, 0, 0.1);

	justify-content: space-between;
    justify-content: space-around;
    /*justify-content: space-evenly; `space-around` looks better */

	padding-bottom: 0;

	border-bottom: 3px solid #1356b4;
	border-bottom: 3px solid var(--color-accent);
}

@media ( max-width: 767px ) {
	ul.tabs {
		flex-wrap: wrap;
	}
}

	ul.tabs > li {
		display: inline-block;
		margin: 0 10px;
		padding: 0.5em 0;
		white-space: nowrap;

		user-select: none;
		-ms-user-select: none;
		-webkit-user-select: none;
		-moz-user-select: none;

		position: relative;

		--tab-color: rgb(177, 199, 230);
		--tab-color: var(--color-accent-light);

		--tab-fore: black;
		--tab-fore: var(--color-foreground);
	}
	ul.tabs > li.active {
		--tab-color: #1356b4;
		--tab-color: var(--color-accent);

		--tab-fore: white;
		--tab-fore: var(--color-accent-text);
	}
	ul.tabs > li:hover {
		--tab-color: #5e94de;
		--tab-color: var(--color-accent-fade);

		--tab-fore: white;
		--tab-fore: var(--color-accent-text);
	}

	ul.tabs > li:first-child {
		padding-left: 0;
	}

		ul.tabs > li::before,
		ul.tabs > li::after {
			content: '';
			display: block;

			position: absolute;
			bottom: 0;

			width: 17px;
			height: 17px;

			mask-size: 17px 17px;
			mask-repeat: no-repeat;

			-webkit-mask-size: 17px 17px;
			-webkit-mask-repeat: no-repeat;
		}

		ul.tabs > li::before {
			/* Left side: */
			left: -16px;

			mask-position: right 1px;
			mask-image: var(--image-tab-left);

			-webkit-mask-position: right 1px;
			-webkit-mask-image: var(--image-tab-left);
		}
		ul.tabs > li::after {
			/* Right side: */
			right: -16px;

			mask-position: left 1px;
			mask-image: var(--image-tab-right);

			-webkit-mask-position: left 1px;
			-webkit-mask-image: var(--image-tab-right);
		}

		ul.tabs > li > label[for],
		ul.tabs > li > a,
		ul.tabs > li::before,
		ul.tabs > li::after {
			color: var(--tab-fore);
			background-color: var(--tab-color);
		}

		/* -------------------- */

		ul.tabs > li > label[for],
		ul.tabs > li > a {
			padding: 0.5em 0.75em;
			border-top-left-radius: 15px;
			border-top-right-radius: 15px;
			cursor: pointer;
		}
		ul.tabs > li:hover > label[for],
		ul.tabs > li:hover > a {
		}

input.trigger.t0:checked ~     ul.tabs li:nth-child(1) label[for],
input.trigger.t1:checked ~     ul.tabs li:nth-child(2) label[for],
input.trigger.t2:checked ~     ul.tabs li:nth-child(3) label[for],
input.trigger.t3:checked ~     ul.tabs li:nth-child(4) label[for],
input.trigger.t4:checked ~     ul.tabs li:nth-child(5) label[for],
input.trigger.t5:checked ~     ul.tabs li:nth-child(6) label[for],
input.trigger.t6:checked ~     ul.tabs li:nth-child(7) label[for],
input.trigger.t7:checked ~     ul.tabs li:nth-child(8) label[for],
input.trigger.t8:checked ~     ul.tabs li:nth-child(9) label[for],

input.trigger.t0:checked ~ * > ul.tabs li:nth-child(1) label[for],
input.trigger.t1:checked ~ * > ul.tabs li:nth-child(2) label[for],
input.trigger.t2:checked ~ * > ul.tabs li:nth-child(3) label[for],
input.trigger.t3:checked ~ * > ul.tabs li:nth-child(4) label[for],
input.trigger.t4:checked ~ * > ul.tabs li:nth-child(5) label[for],
input.trigger.t5:checked ~ * > ul.tabs li:nth-child(6) label[for],
input.trigger.t6:checked ~ * > ul.tabs li:nth-child(7) label[for],
input.trigger.t7:checked ~ * > ul.tabs li:nth-child(8) label[for],
input.trigger.t8:checked ~ * > ul.tabs li:nth-child(9) label[for] {
}

ul.tabs > li.active > a {
}

label[for]:active {
}

ul.tabs li {
	position: relative;
	transition: transform 0.1s;
	transform-origin: bottom;
}

input.trigger.t0:active ~     ul.tabs li:nth-child(1),
input.trigger.t1:active ~     ul.tabs li:nth-child(2),
input.trigger.t2:active ~     ul.tabs li:nth-child(3),
input.trigger.t3:active ~     ul.tabs li:nth-child(4),
input.trigger.t4:active ~     ul.tabs li:nth-child(5),
input.trigger.t5:active ~     ul.tabs li:nth-child(6),
input.trigger.t6:active ~     ul.tabs li:nth-child(7),
input.trigger.t7:active ~     ul.tabs li:nth-child(8),
input.trigger.t8:active ~     ul.tabs li:nth-child(9),

input.trigger.t0:active ~ * > ul.tabs li:nth-child(1),
input.trigger.t1:active ~ * > ul.tabs li:nth-child(2),
input.trigger.t2:active ~ * > ul.tabs li:nth-child(3),
input.trigger.t3:active ~ * > ul.tabs li:nth-child(4),
input.trigger.t4:active ~ * > ul.tabs li:nth-child(5),
input.trigger.t5:active ~ * > ul.tabs li:nth-child(6),
input.trigger.t6:active ~ * > ul.tabs li:nth-child(7),
input.trigger.t7:active ~ * > ul.tabs li:nth-child(8),
input.trigger.t8:active ~ * > ul.tabs li:nth-child(9) {

/*	--tab-fore: white;
	--tab-fore: var(--color-accent-text);*/

	--tab-color: #1356b4;
	--tab-color: var(--color-accent);

	transform: rotateX(-20deg);
}

input.trigger.t0:checked ~     ul.tabs li:nth-child(1),
input.trigger.t1:checked ~     ul.tabs li:nth-child(2),
input.trigger.t2:checked ~     ul.tabs li:nth-child(3),
input.trigger.t3:checked ~     ul.tabs li:nth-child(4),
input.trigger.t4:checked ~     ul.tabs li:nth-child(5),
input.trigger.t5:checked ~     ul.tabs li:nth-child(6),
input.trigger.t6:checked ~     ul.tabs li:nth-child(7),
input.trigger.t7:checked ~     ul.tabs li:nth-child(8),
input.trigger.t8:checked ~     ul.tabs li:nth-child(9),

input.trigger.t0:checked ~ * > ul.tabs li:nth-child(1),
input.trigger.t1:checked ~ * > ul.tabs li:nth-child(2),
input.trigger.t2:checked ~ * > ul.tabs li:nth-child(3),
input.trigger.t3:checked ~ * > ul.tabs li:nth-child(4),
input.trigger.t4:checked ~ * > ul.tabs li:nth-child(5),
input.trigger.t5:checked ~ * > ul.tabs li:nth-child(6),
input.trigger.t6:checked ~ * > ul.tabs li:nth-child(7),
input.trigger.t7:checked ~ * > ul.tabs li:nth-child(8),
input.trigger.t8:checked ~ * > ul.tabs li:nth-child(9) {

	--tab-fore: white;
	--tab-fore: var(--color-accent-text);

	--tab-color: #1356b4;
	--tab-color: var(--color-accent);
}

/* Hyperlink mode: */
ul.tabs > li > a:link,
ul.tabs > li > a:visited {
	text-decoration: none;
}

ul.tabs > li > a:link,
ul.tabs > li > a:visited {
}

ul.tabs > li.active > a:link,
ul.tabs > li.active > a:visited {
}

ul.tabs > li:hover > a:link,
ul.tabs > li:hover > a:visited {
}

ul.tabs > li > a[target="_blank"] {
}
	ul.tabs > li > a[target="_blank"]::after {
		display: inline-block;
		content: '';
		vertical-align: baseline;
		width: 14px;
		height: 14px;
		margin-left: 0.25em;

		background-image: url("/images/UI/External.svg");
		background-image: var(--image-open-external);
		background-size: contain;
	}

table {
	width: 100%;
	/*border-collapse: collapse; - commented out because border-collapse doesn't work with border-radius, see below. */
	border-spacing: 0; /*  Use `border-spacing: 0;` instead of `border-collapse: collapse;` to have border-radius working on table cell borders, not just their backgrounds. */
	box-sizing: border-box;
}
	body > section >                           table,
	body > section >        div.tableWrapper > table,
	body > section > form > div.tableWrapper > table,
	body > section > form >                    table {
		box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 4px 1px;
	}

table > tbody > tr > th,
table > tbody > tr > td {
	/* Adding this so that cells aren't transparent and show the underlying inset box-shadow from the table-wrapper div (when visible on small-screen devices). */
	background-color: white;
	background-color: var(--color-table-background);
}

table > thead > tr > th,
table > thead > tr > td {
	position: relative; /* Fail-safe for IE/older-browsers, so the descendants with `position: absolute;` don't fill the page and block everything. */
	position: -webkit-sticky;
    position: sticky;
    top: 0;
	z-index: 10;
}
table > thead > tr > th,
table > thead > tr > td
table > tfoot > tr > th,
table > tfoot > tr > td {
	background-color: #1356b4;
	background-color: var(--color-accent);
    color: white;
    color: var(--color-accent-text);
    font-weight: normal;
    padding: 0.5em;
}

table > thead > tr {
	/* Adding this because Chrome seems to *sometimes* add a 1px gap between <th> cells that looks like an awkward column separator line. */
	background-color: #1356b4;
	background-color: var(--color-accent);
}

/* Show nested table headers below parent table's sticky headers (assuming 33px rendered height of parent)  */
table table > thead > tr > th,
table table > thead > tr > td,
table table > tfoot > tr > th,
table table > tfoot > tr > td {
	top: 32px;
	z-index: 9;
	background-color: #5e94de;
	background-color: var(--color-accent-fade);
	color: #fff;
	color: var(--color-accent-text);
}
table table table > thead > tr > th,
table table table > thead > tr > td {
	top: 64px;
	z-index: 8;
	background-color:  rgb( 21,  59, 118);
	background-color: var(--color-accent-dark);
	color: #fff;
	color: var(--color-accent-text);
	color: var(--color-background);
}
table table table table > thead > tr > th,
table table table table > thead > tr > td {
	top: 96px;
	z-index: 7;
}
table table table table table > thead > tr > th,
table table table table table > thead > tr > td {
	top: 128px;
	z-index: 6;
}

table > tfoot > tr > th,
table > tfoot > tr > td {
	background-color: #F0F8FF;
	background-color: var(--color-accent-pale);

	border-left  : 1px solid #ddd;
	border-bottom: 1px solid #ddd;
	border-color: var(--color-table-border);

	color: black;
	color: var(--color-foreground);
}
/* Nested <tfoot> background color: */
table table > tfoot > tr > th,
table table > tfoot > tr > td {
	background-color: rgb(177, 199, 230);
	background-color: var(--color-accent-light);
	color: black;
	color: var(--color-foreground);
}
table table table > tfoot > tr > th,
table table table > tfoot > tr > td {
	background-color: white;
	background-color: var(--color-background);
	color: black;
	color: var(--color-foreground);
}
table table table table > tfoot > tr > th,
table table table table > tfoot > tr > td {
	background-color: white;
	background-color: var(--color-background);
	color: black;
	color: var(--color-foreground);
}
table table table table table > tfoot > tr > th,
table table table table table > tfoot > tr > td {
	background-color: white;
	background-color: var(--color-background);
	color: black;
	color: var(--color-foreground);
}
	/* Note that these rules mean that if a <table> does NOT have a <thead> (but has an explicit <tbody>) then the first row of the <tbody> will have the rounded corners, phew! */
	table > tbody:first-child > tr:first-child > th,
	table > tbody:first-child > tr:first-child > td {
		border-top: 1px solid #ddd;
		border-top-color: var(--color-table-border);
	}

	table > thead:first-child > tr:first-child > th:first-child,
	table > thead:first-child > tr:first-child > td:first-child,
	table > tbody:first-child > tr:first-child > th:first-child,
	table > tbody:first-child > tr:first-child > td:first-child {
		border-top-left-radius: 5px;
	}
	table > thead:first-child > tr:first-child > th:last-child,
	table > thead:first-child > tr:first-child > td:last-child,
	table > tbody:first-child > tr:first-child > td:last-child {
		border-top-right-radius: 5px;
	}

	table > tbody:last-child > tr:last-child > td:first-child,
	table > tfoot:last-child > tr:last-child > td:first-child,
	table > tbody:last-child > tr:last-child > th:first-child,
	table > tfoot:last-child > tr:last-child > th:first-child {
		border-bottom-left-radius: 5px;
	}
	table > tbody:last-child > tr:last-child > td:last-child,
	table > tfoot:last-child > tr:last-child > td:last-child {
		border-bottom-right-radius: 5px;
	}

	table .adminCol {
	}
	#adminDataVisible:not(:checked) ~ * table .adminCol,
	#adminDataVisible:not(:checked) ~   table .adminCol {
		/* Remember, don't use `display: none;` to hide table columns because that breaks colspan. */

		/* Grumble: https://stackoverflow.com/questions/51013243/html-table-cell-width-0-not-working */
		width: 0;
		padding: 0;
		margin: 0;
		max-width: 0;
		overflow: hidden;
		border-left: none;
		border-right: none;
		box-sizing: border-box;
		font-size: 0;

		/* I don't want to use `opacity: 0;` because it causes a gap in <thead>, so how's this? */
		color: transparent;
	}

	#adminDataVisible:checked ~ * table .adminCol,
	#adminDataVisible:checked ~   table .adminCol {
		width: auto;
	}

	/* Top-left corner (i.e. first <thead> or first <tbody>'s first <th> or <td>): */
	#adminDataVisible:not(:checked) ~ * table > *:first-child > tr:first-child > *.adminCol:first-child + *,
	#adminDataVisible:not(:checked) ~   table > *:first-child > tr:first-child > *.adminCol:first-child + * {
		border-top-left-radius: 7px;
	}
	#adminDataVisible:not(:checked) ~ * table > *:first-child > tr:first-child > *.adminCol:first-child + .adminCol + *,
	#adminDataVisible:not(:checked) ~   table > *:first-child > tr:first-child > *.adminCol:first-child + .adminCol + * {
		border-top-left-radius: 7px;
	}
	#adminDataVisible:not(:checked) ~ * table > *:first-child > tr:first-child > *.adminCol:first-child + .adminCol + .adminCol + *,
	#adminDataVisible:not(:checked) ~   table > *:first-child > tr:first-child > *.adminCol:first-child + .adminCol + .adminCol + * { /* Yes, there are tables with 3 leading .adminCols (The "/inspection-types/" page, for example) */
		border-top-left-radius: 7px;
	}

	/* Bottom-left corner (i.e. last <tbody> or last <tfoot>'s first <th> or <td>): */
	#adminDataVisible:not(:checked) ~ * table > *:last-child > tr:last-child > *.adminCol:first-child + *,
	#adminDataVisible:not(:checked) ~   table > *:last-child > tr:last-child > *.adminCol:first-child + * {
		border-bottom-left-radius: 7px;
	}
	#adminDataVisible:not(:checked) ~ * table > *:last-child > tr:last-child > *.adminCol:first-child + .adminCol + *,
	#adminDataVisible:not(:checked) ~   table > *:last-child > tr:last-child > *.adminCol:first-child + .adminCol + * {
		border-bottom-left-radius: 7px;
	}
	#adminDataVisible:not(:checked) ~ * table > *:last-child > tr:last-child > *.adminCol:first-child + .adminCol + .adminCol + *,
	#adminDataVisible:not(:checked) ~   table > *:last-child > tr:last-child > *.adminCol:first-child + .adminCol + .adminCol + * { /* Yes, there are tables with 3 leading .adminCols (The "/inspection-types/" page, for example) */
		border-bottom-left-radius: 7px;
	}


table > tbody > tr > th,
table > tbody > tr > td {
	/*border: 1px solid #ddd;*/
	border-left: 1px solid #ddd;
	border-bottom: 1px solid #ddd;
	border-color: var(--color-table-border);
}
	table > tbody > tr > th:last-child,
	table > tbody > tr > td:last-child {
		border-right: 1px solid #ddd;
		border-color: var(--color-table-border);
	}

table > tbody > tr > th {
	text-align: left;
    font-weight: normal;
}

table > tbody > tr > th,
table > tbody > tr > td {
	padding: 0.25em 0.5em;
}

table > tfoot > tr > th:last-child,
table > tfoot > tr > td:last-child {
	border-right: 1px solid #ddd;
	border-color: var(--color-table-border);
}

/* Table row hover coloring moved to end of file so it doesn't get overridden by banded row styles. */

td.colspan + td.actions {
	border-left: none;
}

/* n = numeric, d = date */
td.n,
th.n,
td.d,
th.d {
	text-align: right;
	white-space: nowrap;
}

th.shrink,
td.shrink {
	width: 1px; /* `width: 0` won't work. */
	white-space: nowrap;
}

/* Banded rows / Zebra-striping: */

table.banded {

}
	table.banded:not(.hasDetails) > tbody > tr:nth-child(even),
	table.banded.hasDetails       > tbody > tr:nth-child(2n+1) {

	}

	table.banded:not(.hasDetails) > tbody > tr:nth-child(odd)  > th,
	table.banded:not(.hasDetails) > tbody > tr:nth-child(odd)  > td,
	table.banded.hasDetails       > tbody > tr:nth-child(4n+1) > th,
	table.banded.hasDetails       > tbody > tr:nth-child(4n+1) > td {
		background-color: #eee;
	}

/* Checkbox column:

	<tr>
	<tr class="selected">
		<td class="selector">
			<label>
				<input type="checkbox" onclick="(toggle <tr> class 'selected')" />

*/

tbody > tr.row-selected {

}
	tbody > tr.row-selected > td {
		background-color: #edffed;
		background-color: var(--color-table-selected);
	}

thead > tr > th.row-selector,
thead > tr > th.row-expand {
	padding: 0;
	margin: 0;
	min-width: 2em; /* I need to set both `min-width` and `width` to avoid them collapsing in small screens, weird. */
	width: 2em;
}

tbody > tr > th.row-selector,
tbody > tr > td.row-selector,
tbody > tr > th.row-expand,
tbody > tr > td.row-expand {
	padding: 0;
	margin: 0;
	position: relative;
	width: 2em;
}
	th.row-selector > label,
	td.row-selector > label,
	th.row-expand > label,
	td.row-expand > label {
		/* Make the <label> fill the cell, option 1:

		display: block;
		width: 100%;
		height: 100%;
		margin: 0;
		text-align: center;
		box-sizing: border-box;

		Option 2: */

		display: flex;
		align-items: center;
		justify-content: center;

		position: absolute;
		top: 0;
		right: 0;
		bottom: 0;
		left: 0;

		padding: 0.25em;
		cursor: pointer;
	}

		th.row-selector > label > input[type=checkbox],
		td.row-selector > label > input[type=checkbox],
		th.row-expand   > label > input[type=checkbox],
		td.row-expand   > label > input[type=checkbox] {
			cursor: pointer;
			vertical-align: middle;
		}

		tr.noDetails > td.row-expand > * {
			visibility: hidden;
		}

/* Sortable columns: */
/* Using triangle border trick: https://stackoverflow.com/questions/17639562/add-sorting-arrows-to-th-like-table-sorter */

thead > tr > th.sortable {
	/*position: relative; all <th> have position: sticky now, so this isn't needed. */
	/*padding-right: 16px; /* Ensure there's room */
}
	thead > tr > th.sortable > a {
		color: #eee;
		color: var(--color-container2);
		text-decoration: none;
		cursor: pointer; /* Necessary for client-side cases where the <a> isn't an a:link */
	}
		thead > tr > th.sortable.d,
		thead > tr > th.sortable.n {
			/*padding-right: 1.5em;*/
		}

	thead > tr > th.sortable > a:hover {
		color: white;
		color: var(--color-table-background); /* Probably inappropriate, but also probably works... */
	}

	thead > tr > th.sortable > a::after {
		position: absolute;

		box-sizing: border-box;

		border-color: transparent;
		border-style: solid;
		border-left-width: 6px;
		border-right-width: 6px;
		border-top-width: 6px;
		border-bottom-width: 6px;

		user-select: none;
		-ms-user-select: none;
		-webkit-user-select: none;
		-moz-user-select: none;

		content: '';
	}

	thead > tr > th.sortable.asc > a::after {
		top: -6px;
		left: calc( 50% - 6px );
	}
	thead > tr > th.sortable.desc > a::after {
		bottom: -6px;
		left: calc( 50% - 6px );
	}


/*
* sortable:not(.asc):not(.desc) : hidden, because .asc or .desc must be specified! Note that Tables.ts automatically adds `.asc` to all `th.sortable` if `.desc` if missing.

* sortable.sorting.asc  : white up-pointing triangle.
* sortable.sorting.desc : white down-pointing triangle.

* sortable.asc          : very faint up-pointing triangle.
* sortable.desc         : very faint down-pointing triangle.

* sortable.asc :hover   : faint up-pointing triangle.
* sortable.desc:hover   : faint down-pointing triangle.

*/

	thead > tr > th.sortable.asc  > a::after {
		opacity: 0.2;
		border-color       : transparent;
		border-bottom-color: white;
		border-bottom-color: var(--color-background);
	}
	thead > tr > th.sortable.desc > a::after {
		opacity: 0.2;
		border-color    : transparent;
		border-top-color: white;
		border-top-color: var(--color-background);
	}

	thead > tr > th.sortable.sorting.asc > a::after {
		opacity: 1.0;
	}
	thead > tr > th.sortable.sorting.desc > a::after {
		opacity: 1.0;
	}

	thead > tr > th.sortable > a:hover::after {
		opacity: 0.8;
	}

/* Paging links and actions buttons in tables */
/*


	<div class="tablePageControls">

		<div class="selectedRowActions">

		</div>

		<div class="paging">

			<ul>
				<li class="on"><a href="#">1</a></li>
				<li class="  "><a href="#">2</a></li>
				<li class="  "><a href="#">3</a></li>
			</ul>

			<p>Page 1 of 2 (123 items)</p>

			<select><!-- Page size options --></select>

		</div>

	</div>

*/

.tablePageControls {
	display: flex;
	align-items: center;

	margin: 1em 0;
	border: 1px solid #ccc;
	padding: 1em;
}

.paging {
	display: flex;
	align-items: center;

	padding: 0;
	margin: 0 0 0 auto; /* So it's right-aligned even if it's the only child of `tablePageControls` */
}
	.paging > * {
		margin: 0 1em;
	}

	.paging > ul {
		display: flex;
		flex-wrap: wrap;
		padding: 0;

		list-style: none;

		border: 1px solid #1356b4;
		border: 1px solid var(--color-accent);

		box-shadow: rgba(0, 0, 0, 0.08) 0px 2px 4px 1px;

		border-radius: 7px;
		overflow: hidden;
	}

		.paging > ul > li {
			margin: 0 2px;
			padding: 0;
			list-style: none;
			text-align: center;
		}
		.paging > ul > li:first-child,
		.paging > ul > li:last-child {
			margin: 0;
		}

			.paging > ul > li > a:link,
			.paging > ul > li > a:visited {
				display: block;

				box-sizing: border-box;
				min-width: 26px;
				height: 26px;
				line-height: 26px;

				padding: 0 0.5em;

				color: black;
				color: var(--color-foreground);
				text-decoration: none;
			}
			.paging li.on > a {
				font-weight: bold;
			}

			.paging > ul > li.on > a {
				color: white;
				color: var(--color-accent-text);
				background-color: #1356b4;
				background-color: var(--color-accent-light);
			}

			.paging > ul > li > a:hover {
				color: white;
				color: var(--color-accent-text);
				background-color: #1356b4;
				background-color: var(--color-accent);
			}

/* (Buttons in tables styles moved to "Tables.Buttons.css") */

td.actions,
td.activeToggle,
td.radioColumn {
	width: 1px; /* Shrink these columns as much as possible... (note that `width: 0;` doesn't work) */
	white-space: nowrap; /* ...but not enough to cause cell wrapping. */
}

td.radioColumn {
	text-align: center;
}
	td.radioColumn input[type=radio] {
		/* I did think about making these radio inputs look like the onoff Material-design toggle switches, but radio buttons aren't checkboxes, soooo we'll continue to use default styling. */
		width: 20px;
		height: 20px;
	}

tr.details {
	transform-origin: top center;
	/*transition: transform 0.1s; - avoiding `transition: transform` to prevent rogue stacking-contexts. */
}
tr.details:not(.visible) {
	/*transform: scaleY(0);*/
}
tr.details:not(.visible) > * {
	display: none;
}
tr.details.visible {
	/*transform: scaleY(1);*/
	animation-name: showDetailsRowContent2;
	animation-fill-mode: forwards;
	animation-duration: 0.1s;

	background-color: aliceblue;
	background-color: var(--color-accent-pale);
}

/*
tr.details:not(.visible) {
	animation-duration: 1s;
	animation-name: scaleDownAndDisappear;
	animation-fill-mode: forwards;
}
tr.details.visible {
	animation-duration: 1s;
	animation-name: scaleDownAndDisappear;
	animation-fill-mode: forwards;
	animation-direction: reverse; /* Trying this instead of having a separate animation * /
	/ *animation-play-state: running* /
}
*/

/* Idea: animation-fill-mode! */
/* UPDATE: Oh dear this is hideous (no, it wasn't conflicting with the old styles). * /
@keyframes scaleDownAndDisappear {
	from {
	}
	1% {
		transform: scaleY(1);
	}
	99% {
		transform: scaleY(0); / * Do we need the 1% and 99% frames in this case? * /
	}
	to {
		display: none; / * Use this with `animation-fill-mode: forwards;` > "The target will retain the computed values set by the last keyframe encountered during execution" * /
	}
}

@keyframes appearAndScaleUp {
	from {
		display: unset;
	}
	1% {
		transform: scaleY(0);
	}
	99% {
		transform: scaleY(1);
	}
	to {
		transform: none;
	}
}
*/

@media (prefers-reduced-motion: reduce) {
	tr.details {
		transition: none;
		animation: none !important;
	}
	tr.details:not(.visible) {
		transform: none;
		display: none;
		transition: none;
		animation: none;
	}
	tr.details.visible {
		display: table-row;
	}
}

tr.details.visible {
	display: table-row;
	background-color: aliceblue;
	background-color: var(--color-accent-pale);
}
	tr.details.visible > th,
	tr.details.visible > td {
		/* Need to set background-color on <th>/<td> specifically as the default white overrides the inherited <tr> background-color */
		background-color: aliceblue;
		background-color: var(--color-accent-pale);
	}

	tr.details.visible > td {
		/* Add an inset box-shadow to the top of the details rows, so it looks like a drop-shadow being cast by the non-details row above. */
		/* The "one-side-only" effect is acheived by using a negative shadow spread value (so the box-shadow is bigger than the <td>) and then moving it downwards to make up for it. */

		/*box-shadow: inset 0px 20px 9px -20px rgba(0,0,0,0.2);*/
		/* To avoid faffing around with workarounds for iOS+Safari's buggy rendering of inset box-shadows (see below), just use a background image gradient for the same effect: */

		background-image: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 100%);
		background-image: linear-gradient(to bottom, rgba(0,0,0,0.12) 0%, 33%, rgba(0,0,0,0) 100%); /* Yes, CSS supports specifying the midpoint! */
		background-size: 100% 10px;
		background-repeat: no-repeat;
		background-position: left top;
	}
	/*
	@supports (-webkit-touch-callout: none) {
		/ * Workaround for this issue in iOS Safari until it gets fixed: https://medium.com/@andrea.verlicchi/inset-box-shadow-rendering-bug-on-safari-ios-13-4-6bf4256a1ee0 * /
		/ * This should be fixed in Safari 14.1 or Safari 15: https://bugs.webkit.org/show_bug.cgi?id=209930 * /
		tr.details.visible > td {
			box-shadow: inset 0px 10px 5px -5px rgba(0,0,0,0.2);
		}
	}
	@supports (position: -webkit-sticky) {
		/ * This also targets Safari - and Chrome - but we can undo it for Chrome below: * /
		tr.details.visible > td {
			box-shadow: inset 0px 10px 5px -5px rgba(0,0,0,0.2);
		}
		@supports (position: sticky) {
			tr.details.visible > td {
				box-shadow: inset 0px 20px 9px -20px rgba(0,0,0,0.2);
			}
		}
	}
	*/

	tr.details.visible > td > div { /* max-height doesn't work on <td> */
		/*animation: showDetailsRowContent 0.2s;*/
	}

tr.hasDetails {
	cursor: pointer /* Because the whole row has an onclick="" handler. */;
}

tr.hasDetails.detailsVisible {
	background-color: aliceblue;
	background-color: var(--color-accent-pale);
}
	tr.hasDetails.detailsVisible > th,
	tr.hasDetails.detailsVisible > td {
		background-color: aliceblue;
		background-color: var(--color-accent-pale);
	}

tr.hasDetails > td:not(.inputCol):not(.actions) {
	transition: transform 0.2s, box-shadow 0.2s;
}
tr.hasDetails > td:not(.inputCol):not(.actions):active {
	transform: translateX(1px) translateY(1px);
	box-shadow: inset 4px 4px 4px rgba( 0, 0, 0, 0.2 );
}

@keyframes hideDetailsRow {
	from {
		display: table-cell;
	}
	to {
		display: none;
	}
}

@keyframes showDetailsRowContent {
	from {
		opacity: 0;
		max-height: 0;
		display: none;
	}
	1% {
		display: block;
	}
	99% {
		max-height: 300px;
	}
	to {
		max-height: none;
		opacity: 1;
	}
}

@keyframes showDetailsRowContent2 {
	from {
		opacity: 0;
		transform: scaleY(0);
	}
	1% {
	}
	99% {
		opacity: 1;
		transform: scaleY(1);
	}
	to {
		opacity: 1;
		transform: none; /* To remove any stacking-contexts created by the `transform`. */
	}
}

th.row-expand > label > input[type=checkbox],
td.row-expand > label > input[type=checkbox] {
	display: none;
}

	th.row-expand > label > input[type=checkbox] + span,
	td.row-expand > label > input[type=checkbox] + span {
		display: block;

		width: 16px;
		height: 16px;
		cursor: pointer;

		background-image: url("/images/Chevron-Right-Black.svg");
		background-image: var(--image-chevron-right-black);

		background-repeat: no-repeat;
		background-position: center center;
		background-size: 16px 16px;
	}

	:root.darkMode th.row-expand > label > input[type=checkbox] + span,
	:root.darkMode td.row-expand > label > input[type=checkbox] + span {
		background-image: url("/images/Chevron-Right-White.svg");
		background-image: var(--image-chevron-right-white);
	}
	:root.darkMode .reorder-handle {
		background-image: url("/images/UI/Drag_White.svg");
		background-image: var(--image-draghandle-white);
	}
	@media screen and (prefers-color-scheme: dark) {
		th.row-expand > label > input[type=checkbox] + span,
		td.row-expand > label > input[type=checkbox] + span {
			background-image: url("/images/Chevron-Right-White.svg");
			background-image: var(--image-chevron-right-white);
		}
		.reorder-handle {
			background-image: url("/images/UI/Drag_White.svg");
			background-image: var(--image-draghandle-white);
		}
	}

	thead > tr > th.row-expand > label > input[type=checkbox] + span {
		background-image: url("/images/Chevron-Right-White.svg");
		background-image: var(--image-chevron-right-white);
	}

	td.row-expand > label > input[type=checkbox]:not(:checked) + span {
		transform: rotate(0);
		transition: transform 0.2s;
	}

	th.row-expand > label > input[type=checkbox]:checked + span,
	td.row-expand > label > input[type=checkbox]:checked + span {
		transform: rotate(90deg);
		transition: transform 0.2s;
	}

/* Drag and drop reordering of table rows: */

thead > tr > .reorder {
	font-size: 0;
	overflow: hidden;
}

.reorder-handle {

	width: 2em;

	background-image: url("/images/UI/Drag_Black.svg");
	background-image: var(--image-draghandle-black);

	background-repeat: no-repeat;
	background-position: center center;
	background-size: 16px 16px;

	cursor: move;
	cursor: grab;
	cursor: -moz-grab;
	cursor: -webkit-grab;
}
	.reorder-handle:active {
		cursor: move;
		cursor: grabbing;
		cursor: -moz-grabbing;
		cursor: -webkit-grabbing;
	}

.reorder-ghost {
	background-color: #C8EBFB;
}

td > div.tableWrapper {

	margin: 2em 1em;
}

@media only screen and (max-width: 1023px) {

	.paging > ul {

	}
		.paging > ul > li {
			margin: 0;
			flex-grow: 1;
			flex-shrink: 1;
		}
			.paging > ul > li > a {
				padding: 0;
			}

	div.tableWrapper {
		overflow-x: auto;

		padding: 1em;
		box-shadow: inset 3px 3px 7px 2px rgba(0, 0, 0, 0.2);
		border-radius: 7px;
	}
		div.tableWrapper > table {
			width: 100%;
		}
	td > div.tableWrapper {
		margin: 1em 0.5em;
	}

	.tablePageControls {
		flex-direction: column;
	}
		.tablePageControls > .paging {
			display: block;
			margin: 1em 0;
		}
			.tablePageControls > .paging > ul {
				margin: 0;
				padding: 0;
			}
			.tablePageControls > .paging > p {
				margin: 0.25em 0;
				padding: 0;
			}

			.selectedRowActions {
				display: flex;
				flex-wrap: wrap;
				justify-content: flex-start;
			}
				.selectedRowActions > * {
					margin: 0.25em;
					flex-grow: 1;
				}

	/*
		Because `div.tableWrapper` has `overflow-x: auto` in this @media block, it means the `position: sticky;` table headers wont' work anymore.
		See https://stackoverflow.com/a/47878455/159145 - in short: ancestors of a `position: sticky` element cannot have `overflow != 'visible'`.
		https://css-tricks.com/dealing-with-overflow-and-position-sticky/
	*/

	table > thead > tr > th,
	table > thead > tr > td {
		position: relative; /* Don't use `position: static;`, that breaks the `.row-selector` and `.row-expand` (and other absolutely-positioned cell contents). */
		top: 0;
	}
}

@media (pointer: coarse), (pointer: none) {
	.paging {
		font-size: larger;
	}
}

/*  */

table:not(.nohover) > tbody > tr:not(.details):hover > th ,
table:not(.nohover) > tfoot > tr:not(.details):hover > th {
	background-color: #f0fff0;
	background-color: var(--color-table-hover-th);
	color: black;
	color: var(--color-foreground);
}
table:not(.nohover) > tbody > tr:not(.details):hover > td,
table:not(.nohover) > tfoot > tr:not(.details):hover > td {
	background-color: #CCFFCC;
	background-color: var(--color-table-hover-td);
	color: black;
	color: var(--color-foreground);
}


/*
	Micro-Tables:
	* <thead> optional.
	* Minimal cell padding (both th and td)
	* No grid-lines between rows.
	* No sticky headers.
	* <tbody> rows are assumed to have usually 2 columns (<th> then <td>) and have this form: <tr><th>Row header</th><td>data 1</td><td>data 2</td></tr>
	* Nested <table> inside <td.tableCell> are blended-in.
*/

/* <table class="microTable"> */

/* Remove internal borders in details table: */
table.microTable th,
table.microTable td {

}
	table.microTable > tbody > tr:not(:last-child) > th,
	table.microTable > tbody > tr:not(:last-child) > td  {
		border-bottom: none;
	}
	table.microTable > tbody > tr > th {
		text-align: right;
		white-space: nowrap;
		color: #888;
	}


	table.microTable table > thead > tr > * {
		background-color: #fafafa;
		background-color: var(--color-container0);

		color: var(--color-foreground);
		padding: 0.1em 0.25em;
		border: 1px solid #eee;
		border-color: var(--color-table-border);

		position: static; /* Disable position: sticky; */
	}

	table.microTable table > tbody > tr > *,
	table.microTable table > thead > tr:hover > * {
		/* Disable :hover color */
		background-color: #fafafa !important;
		background-color: var(--color-container0) !important;
	}

/* <table> child of <table.microTable><tbody><tr><td.tableCell> are rendered as though they were a "reverse-<td colspan="">" (i.e. as though this cell was comprised of sub-columns)  */
table.microTable > tbody > tr > td.tableCell {
	padding: 0;
}
	table.microTable > tbody > tr > td.tableCell > table {
		border-left: none;
		border-right: none;
		border-collapse: collapse; /* Using border-collapse in this case because we can't using border-radius. */

		margin-top: 0.25em;
		margin-bottom: 0.25em;
	}

	table.microTable > tbody > tr > td.tableCell > table > thead > tr > *:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody > tr > *:first-child {
		border-left: none;
	}
	table.microTable > tbody > tr > td.tableCell > table > thead > tr > *:last-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody > tr > *:last-child {
		border-right: none;
	}

	table.microTable > tbody > tr > td.tableCell > table > thead:first-child > tr:first-child > th:first-child,
	table.microTable > tbody > tr > td.tableCell > table > thead:first-child > tr:first-child > td:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody:first-child > tr:first-child > th:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody:first-child > tr:first-child > td:first-child {
		border-top-left-radius: 0;
	}
	table.microTable > tbody > tr > td.tableCell > table > thead:first-child > tr:first-child > th:last-child,
	table.microTable > tbody > tr > td.tableCell > table > thead:first-child > tr:first-child > td:last-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody:first-child > tr:first-child > td:last-child {
		border-top-right-radius: 0;
	}

	table.microTable > tbody > tr > td.tableCell > table > tbody:last-child > tr:last-child > td:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tfoot:last-child > tr:last-child > td:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tbody:last-child > tr:last-child > th:first-child,
	table.microTable > tbody > tr > td.tableCell > table > tfoot:last-child > tr:last-child > th:first-child {
		border-bottom-left-radius: 0;
	}
	table.microTable > tbody > tr > td.tableCell > table > tbody:last-child > tr:last-child > td:last-child,
	table.microTable > tbody > tr > td.tableCell > table > tfoot:last-child > tr:last-child > td:last-child {
		border-bottom-right-radius: 0;
	}


/* JSON Object properties table (log views, mostly). Column 1 = Property Name, Column 2 = JSON Type, Column 3 = Value */
table.propertiesTable > * > tr > *:nth-child(1),
table.propertiesTable > * > tr > *:nth-child(2) {
	/* Shrink the Name and Type columns but don't wrap. */
	width: 1px;
	white-space: nowrap;
}


/* Table data-bars + sparklines + micro-charts + etc */
table > tbody > tr > td[data-value] {
	position: relative;
}
	table > tbody > tr > td[data-value]::after {
		/* From RSS Insights: */
		content: '';
		position: absolute;
		bottom: 0;
		left: 0;
		right: 0;
		height: 7px;
		transition: height 0.2s;
		background-image: linear-gradient( to right, #07306C, #07306C var(--perc), transparent var(--perc), transparent );
	}

	table > tbody > tr > td[data-value].min::after {
		background-image: linear-gradient( to right, red, red var(--perc), transparent var(--perc), transparent );
	}

	table > tbody > tr > td[data-value].max::after {
		background-image: linear-gradient( to right, green, green var(--perc), transparent var(--perc), transparent );
	}

	table > tbody > tr > td[data-value].bad::after,
	table > tbody > tr > td[data-value].min.bad::after,
	table > tbody > tr > td[data-value].max.bad::after {
		background-image: linear-gradient( to right, red, red var(--perc), transparent var(--perc), transparent );
	}

	table > tbody > tr:hover > td[data-value]::after {
		height: 7px;
	}

/* Fun-fact: This works in Chrome (v116):


	table > tbody:has( > tr > td:nth-child(1):hover ) > tr > td:nth-child(1),
	table > tbody:has( > tr > td:nth-child(2):hover ) > tr > td:nth-child(2),
	table > tbody:has( > tr > td:nth-child(3):hover ) > tr > td:nth-child(3) {
		background-color: #ccc;
	}


*/
/*
section.taskMain {
	display: grid;
	grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) );
	column-gap: 1em;
}
	section.taskMain > fieldset {
		width: auto;
	}

	section.taskMain > div.actions {
		width: 100%;
	}
*/

section.taskMain {
	/*
	display: flex;
	flex-wrap: wrap;
    align-items: stretch;

	display: grid;
	grid-template-columns: 1fr 1fr;
	*/
}
	section.taskMain > fieldset {
		flex-basis: 40%;
		flex-grow: 1;
		flex-shrink: 1;
	}
	section.taskMain > div.actions {
		flex-basis: 100%;
		flex-grow: 1;
		flex-shrink: 1;
	}

	section.taskMain > .taskFieldPreview {
		/* Doesn't work, argh:
		display: flex;
		flex-direction: column;
		align-items: stretch;
		justify-content: stretch;
		*/

		/* Plan B: (hold on, how does the Type Preview page do it?) */
		display: block;
		position: relative;
	}
		section.taskMain > .taskFieldPreview .previewWrapper {
			/*
			height: 100%;
			width: 100%;
			flex-basis: 100%;
			*/
			/*
			position: absolute;
			top: 1.5em;
			right: 1em;
			bottom: 1em;
			left: 1em;
			*/

			/*min-height: 300px;*/
			margin: 1em auto;
		}

fieldset.taskDetails > div.fields {
/*	display: grid;*/
/*	grid-template-columns: repeat(auto-fit, minmax(20em, 1fr));*/
/*	grid-template-rows: repeat(auto-fit, minmax(20em, 1fr));*/
/*	grid-auto-flow: column;*/

/*	outline: 1px solid blue;*/

	display: flex;
	flex-wrap: wrap;

	/* These don't look good because there's an odd number of items and they invariably wrap into 2 rows...
	justify-content: space-between;
	justify-content: space-evenly;
	*/
	gap: 1em;
}
	fieldset.taskDetails > div.fields {
	/*	display: grid;*/
	/*	grid-template-columns: repeat(auto-fit, minmax(20em, 1fr));*/
	/*	grid-template-rows: repeat(auto-fit, minmax(20em, 1fr));*/
	/*	grid-auto-flow: column;*/

	/*	outline: 1px solid blue;*/

		display: flex;
		flex-wrap: wrap;

	}
		fieldset.taskDetails > div.fields > * {
	/*		outline: 1px solid red;*/

			box-sizing: border-box;
			flex-basis: 195px;
			flex-grow: 0;
			flex-shrink: 0;
			margin: 0.25em;
		}
			fieldset.taskDetails > div.fields > div.fieldGroup,
			fieldset.taskDetails > div.fields > div.field {
				flex-basis: 20em;
				flex-shrink: 1;
				flex-grow: 1;
			}

			fieldset.taskDetails > div.fields > div.fieldGroup {
				flex-grow: 0;
			}

				fieldset.taskDetails > div.fields > div.fieldGroup > div.field.fieldCategoryAndName {
					flex-basis: 20em;
					min-width: 20em;
				}

			fieldset.taskDetails > div.fields > div.fieldGroup.taskFieldEssentials {
			}
			fieldset.taskDetails > div.fields > div.field.taskFieldResult {
			}
			fieldset.taskDetails > div.fields > div.field.taskFieldNotes {
			}
			fieldset.taskDetails > div.fields > div.field.taskFieldConclusion {
			}
			fieldset.taskDetails > div.fields > div.field.taskFieldMedia {
			}

.field.taskFieldType {
	margin-bottom: 0;
}

/* Value1-4: */

.taskValues table {
	width: auto;
	margin: auto;
}
.taskValues table > tbody > tr > th,
.taskValues table > tbody > tr > td {
	white-space: nowrap;
}
.taskValues table > tbody > tr > td {
}
.taskValues table input,
.taskValues table select {
	font-size: inherit;
}

.taskValues table > thead > tr > td,
.taskValues table > thead > tr > th {
	/* Normal darker accent table header background. */
	padding: 0 0.25em;
}

/* When all 4 are "None", hide the Name and Unit rows to save space: */
#value1Trigger:not(:checked) +
#value2Trigger:not(:checked) +
#value3Trigger:not(:checked) +
#value4Trigger:not(:checked) ~ * .taskValueAny {
	/*display: none; - it looks weird when it's cut-off. */
}

#value1Trigger:not(:checked) +
#value2Trigger:not(:checked) +
#value3Trigger:not(:checked) +
#value4Trigger:not(:checked) ~ table > thead > tr > * {
	background-color: rgb(177, 199, 230);
    background-color: var(--color-accent-light);
}

/* Alternative UI using buttons/radio-labels (less clicking!): */
/* TODO: Move this to Buttons2.css eventually? */
fieldset.taskFieldsRadios div.field.radios {
	/*max-width: none;*/
}
fieldset.taskFieldsRadios div.field.radiosCol {
	/*max-width: 22em;*/
}
	fieldset.taskFieldsRadios div.field.radiosCol > label[for] {
		display: flex !important; /* Normally `inline-flex` */
		/*width: 15em;*/
		margin: 0.25em 0;
		padding: 0.25em 0.50em 0.25em 0.50em;
		padding: 1px 5px 1px 5px; /* Same as `.button`: Looks just as nice and is more compact */

		border-width: 1px; /* Makes them less heavy */

		text-shadow: none;
	}
	fieldset.taskFieldsRadios div.field.radiosCol > label[for]:hover {
	}
	fieldset.taskFieldsRadios div.field.radiosCol > label[for]:active {
		/* Need to redefine this. */
		padding: 0.25em 0.50em 0.25em 0.50em; /* Up state */
		padding: 0.25em 0.40em 0.25em 0.60em; /* Down state */

		padding: 1px 4px 1px 6px; /* Same as `.button:active` */
	}
		fieldset.taskFieldsRadios div.field.radiosCol > label[for]:active::before {
			position: relative;
			left: -0.25em;
			left: -0.10em;
		}

/* Icons (yey!): */

fieldset.taskFieldsRadios div.field.radiosCol > label[for] > span {
	display: inline-block;
	margin-right: 1em;
}

li.taskOptions > label {
	display: flex !important;
	justify-content: flex-start;
	padding-left: 0 !important;
}

fieldset.taskFieldsRadios div.field.radiosCol > label[for]::after,
li.taskOptions > label::after {
	display: inline-block;
	content: '';
	margin-left: auto;

	height: 20px;
	margin-top: 4px;
	margin-bottom: 4px;

	/*outline: 1px solid red;*/

	background-size: contain;
	background-repeat: no-repeat;
	background-position-x: 0, 27px, 54px, 81px;

	/* Make them smaller to be more compact: */
	height: 18px;
	margin-top: 2px;
	margin-bottom: 2px;
	background-position-x: 0, 18px, 36px, 54px;
}
li.taskOptions > label::after {
	height: 18px;
}

fieldset.taskFieldsRadios div.field.radiosCol.taskOptions {
	padding: 0;
}
	fieldset.taskFieldsRadios div.field.radiosCol.taskOptions > label.internalTask {
		--test: true;
	}
		fieldset.taskFieldsRadios div.field.radiosCol.taskOptions > label.internalTask::after {
			width: 24px;
			background-image: url("/images/Actions/Vis_Hidden_Black.svg");
			background-image: var(--image-hidden-black);
		}
		fieldset.taskFieldsRadios div.field.radiosCol.taskOptions > input.trigger.t2:checked ~ label.internalTask::after {
			width: 24px;
			background-image: url("/images/Actions/Vis_Hidden_White.svg");
			background-image: var(--image-hidden-white);
		}

fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_None"]::after {

}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_NANone"]::after {
	background-image: url("/images/Results/Result_NA.svg");
	background-image: var(--image-nota);
	width: 24px;
}

fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_PassWarnFail"]::after {
	background-image:
		url("/images/Results/Result_Pass.svg")
		url("/images/Results/Result_Warning.svg"),
		url("/images/Results/Result_Fail.svg");

	background-image:
		var(--image-pass),
		var(--image-warn),
		var(--image-fail);

	width: calc( 24px + 3px + 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px + 0px + 18px );
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_NAPassWarnFail"]::after {
	background-image:
		url("/images/Results/Result_NA.svg"),
		url("/images/Results/Result_Pass.svg"),
		url("/images/Results/Result_Warning.svg"),
		url("/images/Results/Result_Fail.svg");

	background-image:
		var(--image-nota),
		var(--image-pass),
		var(--image-warn),
		var(--image-fail);

	width: calc( 24px + 3px + 24px + 3px + 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px + 0px + 18px + 0px + 18px );
}

fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_YesNo"]::after {
	background-image:
		url("/images/Results/Result_Pass.svg"),
		url("/images/Results/Result_Fail.svg");

	background-image:
		var(--image-pass),
		var(--image-fail);

	width: calc( 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px );
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_NAYesNo"]::after {
	background-image:
		url("/images/Results/Result_NA.svg"),
		url("/images/Results/Result_Pass.svg"),
		url("/images/Results/Result_Fail.svg");

	background-image:
		var(--image-nota),
		var(--image-pass),
		var(--image-fail);

	width: calc( 24px + 3px + 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px + 0px + 18px );
}

fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_Check"]::after {
	background-image: url("/images/Results/Result_Checked.svg");
	background-image: var(--image-check);
	width: 24px;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="resultType_NACheck"]::after {
	background-image:
		url("/images/Results/Result_NA.svg"),
		url("/images/Results/Result_Checked.svg");

	background-image:
		var(--image-nota),
		var(--image-check);

	width: calc( 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px );
}

/* ----- */

fieldset.taskFieldsRadios div.field.radiosCol > label.resultIsRequired::after {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
	width: 24px;
}

/* ----- */

fieldset.taskFieldsRadios div.field.radiosCol > label[for="notesMode_None"]::after {
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="notesMode_Optional"]::after {
	background-image: url("/images/Results/Result_Notes.svg");
	background-image: var(--image-notes);
	width: 24px;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="notesMode_RequiredWarnFail"]::after {
	background-image: url("/images/Results/Result_Notes.svg");
	background-image: var(--image-notes);
	width: 24px;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="notesMode_RequiredAlways"]::after {
	background-image:
		url("/images/Results/Required_Red.svg"),
		url("/images/Results/Result_Notes.svg");
	background-image:
		var(--image-required),
		var(--image-notes);

	width: calc( 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px );
}

/* ----- */

fieldset.taskFieldsRadios div.field.radiosCol > label[for="concMode_None"]::after {
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="concMode_OptionalWarnFail"]::after {
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="concMode_RequiredWarnFail"]::after {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
	width: 24px;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="concMode_Required"]::after {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
	width: 24px;
}


fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_None"]::after {
	margin-left: 0;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_Optional"]::after {
	margin-left: 0;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_RequiredWarnFail"]::after {
	margin-left: 0;
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);

	width: calc( 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px );
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_RequiredAlways"]::after {
	margin-left: 0;
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);

	width: calc( 24px + 3px + 24px );
	width: calc( 18px + 0px + 18px );
}


fieldset.taskFieldsRadios div.field.radiosCol > label[for] > span[data-emoji] {
	margin-left: auto;
}

fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_None"] > span[data-emoji] {
	display: none;
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_Optional"] > span[data-emoji] {
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_RequiredWarnFail"] > span[data-emoji] {
	position: relative;
	left: calc( 24px + 3px + 24px );
/*	left: calc( 18px + 0px + 18px );*/
}
fieldset.taskFieldsRadios div.field.radiosCol > label[for="mediaMode_RequiredAlways"] > span[data-emoji] {
	position: relative;
	left: calc( 24px + 3px + 24px );
/*	left: calc( 18px + 0px + 18px );*/
}

/* ------ */

li.taskOptions.optIsRequired > label::after {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
	width: 24px;
}
li.taskOptions.optIsInternal > label::after {
	background-image: url("/images/Actions/Vis_Hidden_Black.svg");
	background-image: var(--image-hidden-black);
	width: 24px;
}

/* ------ */

/*
TODO: Where does the "Galaxy Tab A 7.0" go? It's 1280x800 but its browser has a weird pixel ratio.
That was/is our standard-issue around 2017-2018: https://www.gsmarena.com/samsung_galaxy_tab_a_7_0_(2016)-7880.php
*/

#previewSizeSmolPhone:checked ~ .previewWrapper {
	width: 320px; /* iPhone 1 through iPhone 5S, oh, and the iPhone SE (2016) */
}
#previewSizeMedPhone:checked ~ .previewWrapper {
	width: 375px; /* iPhone X */
}
#previewSizePhablet:checked ~ .previewWrapper {
	width: 428px; /* iPhone 12 Pro Max */
}
#previewSizeTablet:checked ~ .previewWrapper {
	width: 768px; /* iPad (Portrait) */
}
#previewSizeDesktop1:checked ~ .previewWrapper {
	width: 1024px; /* Any PC since 2001. And any iPad in landscape. */
}
#previewSizeDesktop2:checked ~ .previewWrapper {
	width: 1280px;
}
#previewSizeFill:checked ~ .previewWrapper {
	width: 100%;
}

/* ---- */

.taskFieldsValuesAndDocs {
	display: flex;
	justify-content: stretch;
}
	.taskFieldsValuesAndDocs > * {
		flex-basis: 50%;
		flex-grow: 1;
		flex-shrink: 1;
	}
@supports ( gap: 1em ) {
	.taskFieldsValuesAndDocs {
		margin: 1.5em;
		padding: 0;
		gap: 1.5em; /* Supported in Chrome since 84, phew! */
	}
		.taskFieldsValuesAndDocs > * {
			margin: 0;
		}
}
	.taskFieldsValues {
	}
	.taskFieldsDocs {
	}
		.taskFieldsDocs details {
			position: static !important;
		}

@media screen and (max-width: 1023px) {
	.taskFieldsValuesAndDocs {
		flex-wrap: wrap;
	}
}

/* Inputs+Labels that are enabled/disabled based on the currently selected Task ResultType: */

div.field.radios {
	/*transition: background-color 0.2s;*/
	border-radius: 5px;
	padding: 0;
	margin: 0;
}

/* -------- Measurement radio trigger rules: */

input.trigger.tValue_1_0:not(:checked) ~   .triggered.tValue_1_0,
input.trigger.tValue_1_0:not(:checked) ~ * .triggered.tValue_1_0,
input.trigger.tValue_1_1:not(:checked) ~   .triggered.tValue_1_1,
input.trigger.tValue_1_1:not(:checked) ~ * .triggered.tValue_1_1,
input.trigger.tValue_1_2:not(:checked) ~   .triggered.tValue_1_2,
input.trigger.tValue_1_2:not(:checked) ~ * .triggered.tValue_1_2,
input.trigger.tValue_2_0:not(:checked) ~   .triggered.tValue_2_0,
input.trigger.tValue_2_0:not(:checked) ~ * .triggered.tValue_2_0,
input.trigger.tValue_2_1:not(:checked) ~   .triggered.tValue_2_1,
input.trigger.tValue_2_1:not(:checked) ~ * .triggered.tValue_2_1,
input.trigger.tValue_2_2:not(:checked) ~   .triggered.tValue_2_2,
input.trigger.tValue_2_2:not(:checked) ~ * .triggered.tValue_2_2,
input.trigger.tValue_3_0:not(:checked) ~   .triggered.tValue_3_0,
input.trigger.tValue_3_0:not(:checked) ~ * .triggered.tValue_3_0,
input.trigger.tValue_3_1:not(:checked) ~   .triggered.tValue_3_1,
input.trigger.tValue_3_1:not(:checked) ~ * .triggered.tValue_3_1,
input.trigger.tValue_3_2:not(:checked) ~   .triggered.tValue_3_2,
input.trigger.tValue_3_2:not(:checked) ~ * .triggered.tValue_3_2,
input.trigger.tValue_4_0:not(:checked) ~   .triggered.tValue_4_0,
input.trigger.tValue_4_0:not(:checked) ~ * .triggered.tValue_4_0,
input.trigger.tValue_4_1:not(:checked) ~   .triggered.tValue_4_1,
input.trigger.tValue_4_1:not(:checked) ~ * .triggered.tValue_4_1,
input.trigger.tValue_4_2:not(:checked) ~   .triggered.tValue_4_2,
input.trigger.tValue_4_2:not(:checked) ~ * .triggered.tValue_4_2 {
	display: none;
}

table.taskFieldsValuesTable label[for].trigger::before {
	--checkbox-image-state: var(--state-rad-unchecked);
}

input.trigger.tValue_1_0:checked ~   label[for].trigger.tValue_1_0::before,
input.trigger.tValue_1_0:checked ~ * label[for].trigger.tValue_1_0::before,
input.trigger.tValue_1_1:checked ~   label[for].trigger.tValue_1_1::before,
input.trigger.tValue_1_1:checked ~ * label[for].trigger.tValue_1_1::before,
input.trigger.tValue_1_2:checked ~   label[for].trigger.tValue_1_2::before,
input.trigger.tValue_1_2:checked ~ * label[for].trigger.tValue_1_2::before,
input.trigger.tValue_2_0:checked ~   label[for].trigger.tValue_2_0::before,
input.trigger.tValue_2_0:checked ~ * label[for].trigger.tValue_2_0::before,
input.trigger.tValue_2_1:checked ~   label[for].trigger.tValue_2_1::before,
input.trigger.tValue_2_1:checked ~ * label[for].trigger.tValue_2_1::before,
input.trigger.tValue_2_2:checked ~   label[for].trigger.tValue_2_2::before,
input.trigger.tValue_2_2:checked ~ * label[for].trigger.tValue_2_2::before,
input.trigger.tValue_3_0:checked ~   label[for].trigger.tValue_3_0::before,
input.trigger.tValue_3_0:checked ~ * label[for].trigger.tValue_3_0::before,
input.trigger.tValue_3_1:checked ~   label[for].trigger.tValue_3_1::before,
input.trigger.tValue_3_1:checked ~ * label[for].trigger.tValue_3_1::before,
input.trigger.tValue_3_2:checked ~   label[for].trigger.tValue_3_2::before,
input.trigger.tValue_3_2:checked ~ * label[for].trigger.tValue_3_2::before,
input.trigger.tValue_4_0:checked ~   label[for].trigger.tValue_4_0::before,
input.trigger.tValue_4_0:checked ~ * label[for].trigger.tValue_4_0::before,
input.trigger.tValue_4_1:checked ~   label[for].trigger.tValue_4_1::before,
input.trigger.tValue_4_1:checked ~ * label[for].trigger.tValue_4_1::before,
input.trigger.tValue_4_2:checked ~   label[for].trigger.tValue_4_2::before,
input.trigger.tValue_4_2:checked ~ * label[for].trigger.tValue_4_2::before {
	--checkbox-image-state: var(--state-rad-checked);
}

input.trigger.tValue_1_0:checked ~ * .triggered.t32,
input.trigger.tValue_2_0:checked ~ * .triggered.t33,
input.trigger.tValue_3_0:checked ~ * .triggered.t34,
input.trigger.tValue_4_0:checked ~ * .triggered.t35 {
	visibility: hidden; /* Don't use `display: none;` as it messses-up the table layout */
}

table.taskFieldsValuesTable {
	width: 100%;
}
	table.taskFieldsValuesTable > * > tr > *:nth-child(1) {
		width: 5em;
	}
	table.taskFieldsValuesTable > * > tr > *:nth-child(2) {
		width: 10em;
	}
/* Top-right-corner - but this obscures the inspection-search button in the top-right corner, and if the close button is in the top-right then if you rapidly click the toast close button you'll end-up clicking the logout button by mistake.

.rssToast {
	position: fixed;
	top: 30px;
	right: 30px;

	background: white;
	border-radius: 15px;
	border: 3px solid #2376EB;
	box-shadow: 10px 10px 70px 0px rgba(0,0,0,0.5);
	padding: 1em;

	max-width: 25em;
}
	.rssToast button {
		padding: 0.25em 0.5em;
		color: white;
	}
	.rssToast p a:link,
	.rssToast p a:visited {
		color: blue;
		text-decoration: underline;
	}

	.rssToast > button.closeButton {
		position: absolute;
		top: 5px;
		right: 5px;
	}
*/

/* Top-edge mode - constrained such that it will never overlap the Logout button and doesn't occlude any other controls. */

.rssToast {
	position: fixed;
	top: 1em;
	left: 0;
	right: 120px; /* So it doesn't cover the logout button */
	z-index: 200;

	padding: 1em;
	margin: 0 auto;
	max-width: 800px;

	display: flex;
	align-items: baseline;
	/*justify-content: space-between;*/

	background-color: white;
	border: 3px solid #2376EB;
	border-radius: 15px;
	box-shadow: 10px 10px 70px 0px rgba(0,0,0,0.5);

	animation: aWildToastAppeared 2s;
}
.rssToast.wide {
	max-width: 1000px;
}

	.rssToast > h3.messageTitle {
		margin: 0;
		margin-right: 1em;
		border: none;
		padding: 0;
	}
	.rssToast > p.messageText {
		margin: 0;
		flex-grow: 1;
	}
	.rssToast > ul.actions {
		/* Inherits display: flex, padding: 1em; margin: 1em 0; */
		margin: 0;
		padding: 0;
		list-style: none;
		display: flex;
		align-items: baseline;
	}
		.rssToast > ul.actions > li {

		}
			.rssToast > ul.actions > li > a {
				/*
				display: inline-block; / * To match same general layout as <button> UPDATE: This isn't aligned anymore. * /
				margin: 0.25em 0.5em;
				*/
			}

	.rssToast > ul.actions > li > a.button,
	.rssToast > ul.actions > li > button.closeButton,
	.rssToast > ul.actions > li > button.snoozeButton {
		margin: 0.25em;
	}
	.rssToast button.closeButton.closeAllToasts {
	}

@keyframes aWildToastAppeared {
	from {
		top: 0;
		background-color: orange;
	}
	50% {
		top: 1em;
	}
	to {
		background-color: white;
	}
}

@media (max-width: 799px) {
	/* 768px is a lot of tablets and they should get this style too: */

	.rssToast {
		left: 0;
		top: 0;
		right: 0;

		max-width: auto;
		box-shadow: 5px 5px 35px 0px rgba(0,0,0,0.2); /* Less heavy drop-shadow, methinks. */
		border-radius: 0;
		padding: 0.1em;
	}
	.rssToast.wide {
		max-width: auto;
	}
}
/* ====================== BEGIN Triggers.v2.Rules.tt ========================= */

/* Triggers: */

input.trigger,
input.adjacentCheckbox {
	display: none;
}
label[for].trigger,
label[for].adjacentCheckboxLabel {
	display: inline-flex;
	align-items: center;

	--trigger-label-forecolor: var(--color-accent-text); /* i.e. white (by default) */

	--checkbox-image-state: var(--image-trigger-undefined); 
	--state-chk-checked  : var(--image-checkbox-checked-black); /* Ignore the "-black" part of the name. It's used as a mask. */
	--state-chk-unchecked: var(--image-checkbox-unchecked-black);
	--state-rad-checked  : var(--image-radio-checked-black);
	--state-rad-unchecked: var(--image-radio-unchecked-black);
}
label[for].trigger.pale,
label[for].adjacentCheckboxLabel.pale {
	/* The `.pale` class *only* means that the label has `background-color: var(--color-accent-pale)` and `color: var(--color-foreground);` instead of `var(--color-accent)` when the trigger is unchecked. */
	background-color: #F0F8FF;
	background-color: var(--color-accent-pale);

	--trigger-label-forecolor: var(--color-foreground); /* i.e. black (by default) */

	color: black;
	color: var(--color-foreground);
	color: var(--trigger-label-forecolor);

	text-shadow: none;
}
label[for].trigger:hover,
label[for].adjacentCheckboxLabel:hover {
	background-color: rgb( 21,  59, 118) !important;
	background-color: var(--color-accent-dark) !important;

	--trigger-label-forecolor: var(--color-background);
	text-shadow: none;
}
label[for].trigger:active,
label[for].adjacentCheckboxLabel:active {
}
	label[for].trigger::before,
	label[for].adjacentCheckboxLabel::before {
		content: '';
		display: inline-block;
		width: 22px;
		height: 22px;
		vertical-align: middle;

		/* These negative margins are to prevent the ::before pseudoelement causing the size of the <label> to grow. */
		margin-top: -10px;
		margin-bottom: -10px;
		margin-left: -4px;
		margin-right: 1px;

		/* --------- */

		background-color: white;
		background-color: var(--trigger-label-forecolor);

		mask-repeat: no-repeat;
		mask-position: center center;
		mask-size: contain;
		mask-image: var(--checkbox-image-state);

		-webkit-mask-repeat: no-repeat;
		-webkit-mask-position: center center;
		-webkit-mask-size: contain;
		-webkit-mask-image: var(--checkbox-image-state);
	}

/* ====================== Named Triggers ========================= */

/* ---------------------- Checkbox :checked ---------------------- */
input#adminDataVisible[   type="checkbox"]:checked ~ * label[for="adminDataVisible"   ],
input#adminDataVisible[   type="checkbox"]:checked ~   label[for="adminDataVisible"   ],
input#chatVisible[        type="checkbox"]:checked ~ * label[for="chatVisible"        ],
input#chatVisible[        type="checkbox"]:checked ~   label[for="chatVisible"        ],
input#suppressZendesk[    type="checkbox"]:checked ~ * label[for="suppressZendesk"    ],
input#suppressZendesk[    type="checkbox"]:checked ~   label[for="suppressZendesk"    ],
input#chatEmbiggen[       type="checkbox"]:checked ~ * label[for="chatEmbiggen"       ],
input#chatEmbiggen[       type="checkbox"]:checked ~   label[for="chatEmbiggen"       ],
input#advSearchVisible[   type="checkbox"]:checked ~ * label[for="advSearchVisible"   ],
input#advSearchVisible[   type="checkbox"]:checked ~   label[for="advSearchVisible"   ],
input#snoozeNotifications[type="checkbox"]:checked ~ * label[for="snoozeNotifications"],
input#snoozeNotifications[type="checkbox"]:checked ~   label[for="snoozeNotifications"],
input#showMenuTrigger[    type="checkbox"]:checked ~ * label[for="showMenuTrigger"    ],
input#showMenuTrigger[    type="checkbox"]:checked ~   label[for="showMenuTrigger"    ],

input[type="checkbox"].adjacentCheckbox:checked + label[for].adjacentCheckboxLabel {
	--checkbox-image-state: var(--state-chk-checked);
}

/* ---------------------- Checkbox :not(:checked) ---------------------- */
input#adminDataVisible[   type="checkbox"]:not(:checked) ~ * label[for="adminDataVisible"   ],
input#adminDataVisible[   type="checkbox"]:not(:checked) ~   label[for="adminDataVisible"   ],
input#chatVisible[        type="checkbox"]:not(:checked) ~ * label[for="chatVisible"        ],
input#chatVisible[        type="checkbox"]:not(:checked) ~   label[for="chatVisible"        ],
input#suppressZendesk[    type="checkbox"]:not(:checked) ~ * label[for="suppressZendesk"    ],
input#suppressZendesk[    type="checkbox"]:not(:checked) ~   label[for="suppressZendesk"    ],
input#chatEmbiggen[       type="checkbox"]:not(:checked) ~ * label[for="chatEmbiggen"       ],
input#chatEmbiggen[       type="checkbox"]:not(:checked) ~   label[for="chatEmbiggen"       ],
input#advSearchVisible[   type="checkbox"]:not(:checked) ~ * label[for="advSearchVisible"   ],
input#advSearchVisible[   type="checkbox"]:not(:checked) ~   label[for="advSearchVisible"   ],
input#snoozeNotifications[type="checkbox"]:not(:checked) ~ * label[for="snoozeNotifications"],
input#snoozeNotifications[type="checkbox"]:not(:checked) ~   label[for="snoozeNotifications"],
input#showMenuTrigger[    type="checkbox"]:not(:checked) ~ * label[for="showMenuTrigger"    ],
input#showMenuTrigger[    type="checkbox"]:not(:checked) ~   label[for="showMenuTrigger"    ],

input[type="checkbox"].adjacentCheckbox:not(:checked) + label[for].adjacentCheckboxLabel {
	--checkbox-image-state: var(--state-chk-unchecked);
}


/* ---------------------- Radio :checked ---------------------- */

input.trigger.assetKindsMedias:checked ~ * label.trigger.assetKindsMedias::before,
input.trigger.assetKindsSystem:checked ~ * label.trigger.assetKindsSystem::before,
input[type="radio"].adjacentCheckbox:checked + label[for].adjacentCheckboxLabel {
	--checkbox-image-state: var(--state-rad-checked);
}

/* ---------------------- Radio :not(:checked) ---------------------- */

input.trigger.assetKindsMedias:not(:checked) ~ * label.trigger.assetKindsMedias::before,
input.trigger.assetKindsSystem:not(:checked) ~ * label.trigger.assetKindsSystem::before,
input[type="radio"].adjacentCheckbox:not(:checked) + label[for].adjacentCheckboxLabel {
	--checkbox-image-state: var(--state-rad-unchecked);
}

/* ---------------------- Visible only when :checked (i.e. hidden when `:not(:checked)`) ---------------- */
input#adminDataVisible:not(   :checked) ~ * .tAdmin,
input#adminDataVisible:not(   :checked) ~   .tAdmin,
input#chatVisible:not(        :checked) ~ * .tChat,
input#chatVisible:not(        :checked) ~   .tChat,
input#suppressZendesk:not(    :checked) ~ * .tZendesk,
input#suppressZendesk:not(    :checked) ~   .tZendesk,
input#chatEmbiggen:not(       :checked) ~ * .tChatEmbiggen,
input#chatEmbiggen:not(       :checked) ~   .tChatEmbiggen,
input#advSearchVisible:not(   :checked) ~ * .advSearch,
input#advSearchVisible:not(   :checked) ~   .advSearch,
input#snoozeNotifications:not(:checked) ~ * .snoozeIndica,
input#snoozeNotifications:not(:checked) ~   .snoozeIndica {
	display: none;
}

/* ---------------------- Visible when :not(:checked) (i.e. hidden when `:checked`) ---------------- */
input#snoozeNotifications:checked ~ * .rssToast,
input#snoozeNotifications:checked ~   .rssToast {
	display: none;
}

/* ====================== Numbered Triggers ========================= */
/*
	Use named triggers for all global or multi-page triggers, that way we can avoid conflicts.
	Numbered triggers are fine provided they're scoped to a *single* page.
*/
input.trigger.t0[type="checkbox"] ~ * label[for].trigger.t0,
input.trigger.t0[type="checkbox"] ~   label[for].trigger.t0,
input.trigger.t1[type="checkbox"] ~ * label[for].trigger.t1,
input.trigger.t1[type="checkbox"] ~   label[for].trigger.t1,
input.trigger.t2[type="checkbox"] ~ * label[for].trigger.t2,
input.trigger.t2[type="checkbox"] ~   label[for].trigger.t2,
input.trigger.t3[type="checkbox"] ~ * label[for].trigger.t3,
input.trigger.t3[type="checkbox"] ~   label[for].trigger.t3,
input.trigger.t4[type="checkbox"] ~ * label[for].trigger.t4,
input.trigger.t4[type="checkbox"] ~   label[for].trigger.t4,
input.trigger.t5[type="checkbox"] ~ * label[for].trigger.t5,
input.trigger.t5[type="checkbox"] ~   label[for].trigger.t5,
input.trigger.t6[type="checkbox"] ~ * label[for].trigger.t6,
input.trigger.t6[type="checkbox"] ~   label[for].trigger.t6,
input.trigger.t7[type="checkbox"] ~ * label[for].trigger.t7,
input.trigger.t7[type="checkbox"] ~   label[for].trigger.t7,
input.trigger.t8[type="checkbox"] ~ * label[for].trigger.t8,
input.trigger.t8[type="checkbox"] ~   label[for].trigger.t8,
input.trigger.t9[type="checkbox"] ~ * label[for].trigger.t9,
input.trigger.t9[type="checkbox"] ~   label[for].trigger.t9,
input.trigger.t10[type="checkbox"] ~ * label[for].trigger.t10,
input.trigger.t10[type="checkbox"] ~   label[for].trigger.t10,
input.trigger.t11[type="checkbox"] ~ * label[for].trigger.t11,
input.trigger.t11[type="checkbox"] ~   label[for].trigger.t11,
input.trigger.t12[type="checkbox"] ~ * label[for].trigger.t12,
input.trigger.t12[type="checkbox"] ~   label[for].trigger.t12,
input.trigger.t13[type="checkbox"] ~ * label[for].trigger.t13,
input.trigger.t13[type="checkbox"] ~   label[for].trigger.t13,
input.trigger.t14[type="checkbox"] ~ * label[for].trigger.t14,
input.trigger.t14[type="checkbox"] ~   label[for].trigger.t14,
input.trigger.t15[type="checkbox"] ~ * label[for].trigger.t15,
input.trigger.t15[type="checkbox"] ~   label[for].trigger.t15,
input.trigger.t16[type="checkbox"] ~ * label[for].trigger.t16,
input.trigger.t16[type="checkbox"] ~   label[for].trigger.t16,
input.trigger.t17[type="checkbox"] ~ * label[for].trigger.t17,
input.trigger.t17[type="checkbox"] ~   label[for].trigger.t17,
input.trigger.t18[type="checkbox"] ~ * label[for].trigger.t18,
input.trigger.t18[type="checkbox"] ~   label[for].trigger.t18,
input.trigger.t19[type="checkbox"] ~ * label[for].trigger.t19,
input.trigger.t19[type="checkbox"] ~   label[for].trigger.t19,
input.trigger.t20[type="checkbox"] ~ * label[for].trigger.t20,
input.trigger.t20[type="checkbox"] ~   label[for].trigger.t20,
input.trigger.t21[type="checkbox"] ~ * label[for].trigger.t21,
input.trigger.t21[type="checkbox"] ~   label[for].trigger.t21,
input.trigger.t22[type="checkbox"] ~ * label[for].trigger.t22,
input.trigger.t22[type="checkbox"] ~   label[for].trigger.t22,
input.trigger.t23[type="checkbox"] ~ * label[for].trigger.t23,
input.trigger.t23[type="checkbox"] ~   label[for].trigger.t23,
input.trigger.t24[type="checkbox"] ~ * label[for].trigger.t24,
input.trigger.t24[type="checkbox"] ~   label[for].trigger.t24,
input.trigger.t25[type="checkbox"] ~ * label[for].trigger.t25,
input.trigger.t25[type="checkbox"] ~   label[for].trigger.t25,
input.trigger.t26[type="checkbox"] ~ * label[for].trigger.t26,
input.trigger.t26[type="checkbox"] ~   label[for].trigger.t26,
input.trigger.t27[type="checkbox"] ~ * label[for].trigger.t27,
input.trigger.t27[type="checkbox"] ~   label[for].trigger.t27,
input.trigger.t28[type="checkbox"] ~ * label[for].trigger.t28,
input.trigger.t28[type="checkbox"] ~   label[for].trigger.t28,
input.trigger.t29[type="checkbox"] ~ * label[for].trigger.t29,
input.trigger.t29[type="checkbox"] ~   label[for].trigger.t29,
input.trigger.t30[type="checkbox"] ~ * label[for].trigger.t30,
input.trigger.t30[type="checkbox"] ~   label[for].trigger.t30,
input.trigger.t31[type="checkbox"] ~ * label[for].trigger.t31,
input.trigger.t31[type="checkbox"] ~   label[for].trigger.t31,
input.trigger.t32[type="checkbox"] ~ * label[for].trigger.t32,
input.trigger.t32[type="checkbox"] ~   label[for].trigger.t32,
input.trigger.t33[type="checkbox"] ~ * label[for].trigger.t33,
input.trigger.t33[type="checkbox"] ~   label[for].trigger.t33,
input.trigger.t34[type="checkbox"] ~ * label[for].trigger.t34,
input.trigger.t34[type="checkbox"] ~   label[for].trigger.t34,
input.trigger.t35[type="checkbox"] ~ * label[for].trigger.t35,
input.trigger.t35[type="checkbox"] ~   label[for].trigger.t35,
input.trigger.t36[type="checkbox"] ~ * label[for].trigger.t36,
input.trigger.t36[type="checkbox"] ~   label[for].trigger.t36,
input.trigger.t37[type="checkbox"] ~ * label[for].trigger.t37,
input.trigger.t37[type="checkbox"] ~   label[for].trigger.t37,
input.trigger.t38[type="checkbox"] ~ * label[for].trigger.t38,
input.trigger.t38[type="checkbox"] ~   label[for].trigger.t38,
input.trigger.t39[type="checkbox"] ~ * label[for].trigger.t39,
input.trigger.t39[type="checkbox"] ~   label[for].trigger.t39 {
	--label-checked-image  : var(--state-chk-checked);
	--label-unchecked-image: var(--state-chk-unchecked);
}
input.trigger.t0[type="radio"] ~ * label[for].trigger.t0,
input.trigger.t0[type="radio"] ~   label[for].trigger.t0,
input.trigger.t1[type="radio"] ~ * label[for].trigger.t1,
input.trigger.t1[type="radio"] ~   label[for].trigger.t1,
input.trigger.t2[type="radio"] ~ * label[for].trigger.t2,
input.trigger.t2[type="radio"] ~   label[for].trigger.t2,
input.trigger.t3[type="radio"] ~ * label[for].trigger.t3,
input.trigger.t3[type="radio"] ~   label[for].trigger.t3,
input.trigger.t4[type="radio"] ~ * label[for].trigger.t4,
input.trigger.t4[type="radio"] ~   label[for].trigger.t4,
input.trigger.t5[type="radio"] ~ * label[for].trigger.t5,
input.trigger.t5[type="radio"] ~   label[for].trigger.t5,
input.trigger.t6[type="radio"] ~ * label[for].trigger.t6,
input.trigger.t6[type="radio"] ~   label[for].trigger.t6,
input.trigger.t7[type="radio"] ~ * label[for].trigger.t7,
input.trigger.t7[type="radio"] ~   label[for].trigger.t7,
input.trigger.t8[type="radio"] ~ * label[for].trigger.t8,
input.trigger.t8[type="radio"] ~   label[for].trigger.t8,
input.trigger.t9[type="radio"] ~ * label[for].trigger.t9,
input.trigger.t9[type="radio"] ~   label[for].trigger.t9,
input.trigger.t10[type="radio"] ~ * label[for].trigger.t10,
input.trigger.t10[type="radio"] ~   label[for].trigger.t10,
input.trigger.t11[type="radio"] ~ * label[for].trigger.t11,
input.trigger.t11[type="radio"] ~   label[for].trigger.t11,
input.trigger.t12[type="radio"] ~ * label[for].trigger.t12,
input.trigger.t12[type="radio"] ~   label[for].trigger.t12,
input.trigger.t13[type="radio"] ~ * label[for].trigger.t13,
input.trigger.t13[type="radio"] ~   label[for].trigger.t13,
input.trigger.t14[type="radio"] ~ * label[for].trigger.t14,
input.trigger.t14[type="radio"] ~   label[for].trigger.t14,
input.trigger.t15[type="radio"] ~ * label[for].trigger.t15,
input.trigger.t15[type="radio"] ~   label[for].trigger.t15,
input.trigger.t16[type="radio"] ~ * label[for].trigger.t16,
input.trigger.t16[type="radio"] ~   label[for].trigger.t16,
input.trigger.t17[type="radio"] ~ * label[for].trigger.t17,
input.trigger.t17[type="radio"] ~   label[for].trigger.t17,
input.trigger.t18[type="radio"] ~ * label[for].trigger.t18,
input.trigger.t18[type="radio"] ~   label[for].trigger.t18,
input.trigger.t19[type="radio"] ~ * label[for].trigger.t19,
input.trigger.t19[type="radio"] ~   label[for].trigger.t19,
input.trigger.t20[type="radio"] ~ * label[for].trigger.t20,
input.trigger.t20[type="radio"] ~   label[for].trigger.t20,
input.trigger.t21[type="radio"] ~ * label[for].trigger.t21,
input.trigger.t21[type="radio"] ~   label[for].trigger.t21,
input.trigger.t22[type="radio"] ~ * label[for].trigger.t22,
input.trigger.t22[type="radio"] ~   label[for].trigger.t22,
input.trigger.t23[type="radio"] ~ * label[for].trigger.t23,
input.trigger.t23[type="radio"] ~   label[for].trigger.t23,
input.trigger.t24[type="radio"] ~ * label[for].trigger.t24,
input.trigger.t24[type="radio"] ~   label[for].trigger.t24,
input.trigger.t25[type="radio"] ~ * label[for].trigger.t25,
input.trigger.t25[type="radio"] ~   label[for].trigger.t25,
input.trigger.t26[type="radio"] ~ * label[for].trigger.t26,
input.trigger.t26[type="radio"] ~   label[for].trigger.t26,
input.trigger.t27[type="radio"] ~ * label[for].trigger.t27,
input.trigger.t27[type="radio"] ~   label[for].trigger.t27,
input.trigger.t28[type="radio"] ~ * label[for].trigger.t28,
input.trigger.t28[type="radio"] ~   label[for].trigger.t28,
input.trigger.t29[type="radio"] ~ * label[for].trigger.t29,
input.trigger.t29[type="radio"] ~   label[for].trigger.t29,
input.trigger.t30[type="radio"] ~ * label[for].trigger.t30,
input.trigger.t30[type="radio"] ~   label[for].trigger.t30,
input.trigger.t31[type="radio"] ~ * label[for].trigger.t31,
input.trigger.t31[type="radio"] ~   label[for].trigger.t31,
input.trigger.t32[type="radio"] ~ * label[for].trigger.t32,
input.trigger.t32[type="radio"] ~   label[for].trigger.t32,
input.trigger.t33[type="radio"] ~ * label[for].trigger.t33,
input.trigger.t33[type="radio"] ~   label[for].trigger.t33,
input.trigger.t34[type="radio"] ~ * label[for].trigger.t34,
input.trigger.t34[type="radio"] ~   label[for].trigger.t34,
input.trigger.t35[type="radio"] ~ * label[for].trigger.t35,
input.trigger.t35[type="radio"] ~   label[for].trigger.t35,
input.trigger.t36[type="radio"] ~ * label[for].trigger.t36,
input.trigger.t36[type="radio"] ~   label[for].trigger.t36,
input.trigger.t37[type="radio"] ~ * label[for].trigger.t37,
input.trigger.t37[type="radio"] ~   label[for].trigger.t37,
input.trigger.t38[type="radio"] ~ * label[for].trigger.t38,
input.trigger.t38[type="radio"] ~   label[for].trigger.t38,
input.trigger.t39[type="radio"] ~ * label[for].trigger.t39,
input.trigger.t39[type="radio"] ~   label[for].trigger.t39 {
	--label-checked-image  : var(--state-rad-checked);
	--label-unchecked-image: var(--state-rad-unchecked);
}

input.trigger.t0:checked ~ * label[for].trigger.t0,
input.trigger.t0:checked ~   label[for].trigger.t0,
input.trigger.t1:checked ~ * label[for].trigger.t1,
input.trigger.t1:checked ~   label[for].trigger.t1,
input.trigger.t2:checked ~ * label[for].trigger.t2,
input.trigger.t2:checked ~   label[for].trigger.t2,
input.trigger.t3:checked ~ * label[for].trigger.t3,
input.trigger.t3:checked ~   label[for].trigger.t3,
input.trigger.t4:checked ~ * label[for].trigger.t4,
input.trigger.t4:checked ~   label[for].trigger.t4,
input.trigger.t5:checked ~ * label[for].trigger.t5,
input.trigger.t5:checked ~   label[for].trigger.t5,
input.trigger.t6:checked ~ * label[for].trigger.t6,
input.trigger.t6:checked ~   label[for].trigger.t6,
input.trigger.t7:checked ~ * label[for].trigger.t7,
input.trigger.t7:checked ~   label[for].trigger.t7,
input.trigger.t8:checked ~ * label[for].trigger.t8,
input.trigger.t8:checked ~   label[for].trigger.t8,
input.trigger.t9:checked ~ * label[for].trigger.t9,
input.trigger.t9:checked ~   label[for].trigger.t9,
input.trigger.t10:checked ~ * label[for].trigger.t10,
input.trigger.t10:checked ~   label[for].trigger.t10,
input.trigger.t11:checked ~ * label[for].trigger.t11,
input.trigger.t11:checked ~   label[for].trigger.t11,
input.trigger.t12:checked ~ * label[for].trigger.t12,
input.trigger.t12:checked ~   label[for].trigger.t12,
input.trigger.t13:checked ~ * label[for].trigger.t13,
input.trigger.t13:checked ~   label[for].trigger.t13,
input.trigger.t14:checked ~ * label[for].trigger.t14,
input.trigger.t14:checked ~   label[for].trigger.t14,
input.trigger.t15:checked ~ * label[for].trigger.t15,
input.trigger.t15:checked ~   label[for].trigger.t15,
input.trigger.t16:checked ~ * label[for].trigger.t16,
input.trigger.t16:checked ~   label[for].trigger.t16,
input.trigger.t17:checked ~ * label[for].trigger.t17,
input.trigger.t17:checked ~   label[for].trigger.t17,
input.trigger.t18:checked ~ * label[for].trigger.t18,
input.trigger.t18:checked ~   label[for].trigger.t18,
input.trigger.t19:checked ~ * label[for].trigger.t19,
input.trigger.t19:checked ~   label[for].trigger.t19,
input.trigger.t20:checked ~ * label[for].trigger.t20,
input.trigger.t20:checked ~   label[for].trigger.t20,
input.trigger.t21:checked ~ * label[for].trigger.t21,
input.trigger.t21:checked ~   label[for].trigger.t21,
input.trigger.t22:checked ~ * label[for].trigger.t22,
input.trigger.t22:checked ~   label[for].trigger.t22,
input.trigger.t23:checked ~ * label[for].trigger.t23,
input.trigger.t23:checked ~   label[for].trigger.t23,
input.trigger.t24:checked ~ * label[for].trigger.t24,
input.trigger.t24:checked ~   label[for].trigger.t24,
input.trigger.t25:checked ~ * label[for].trigger.t25,
input.trigger.t25:checked ~   label[for].trigger.t25,
input.trigger.t26:checked ~ * label[for].trigger.t26,
input.trigger.t26:checked ~   label[for].trigger.t26,
input.trigger.t27:checked ~ * label[for].trigger.t27,
input.trigger.t27:checked ~   label[for].trigger.t27,
input.trigger.t28:checked ~ * label[for].trigger.t28,
input.trigger.t28:checked ~   label[for].trigger.t28,
input.trigger.t29:checked ~ * label[for].trigger.t29,
input.trigger.t29:checked ~   label[for].trigger.t29,
input.trigger.t30:checked ~ * label[for].trigger.t30,
input.trigger.t30:checked ~   label[for].trigger.t30,
input.trigger.t31:checked ~ * label[for].trigger.t31,
input.trigger.t31:checked ~   label[for].trigger.t31,
input.trigger.t32:checked ~ * label[for].trigger.t32,
input.trigger.t32:checked ~   label[for].trigger.t32,
input.trigger.t33:checked ~ * label[for].trigger.t33,
input.trigger.t33:checked ~   label[for].trigger.t33,
input.trigger.t34:checked ~ * label[for].trigger.t34,
input.trigger.t34:checked ~   label[for].trigger.t34,
input.trigger.t35:checked ~ * label[for].trigger.t35,
input.trigger.t35:checked ~   label[for].trigger.t35,
input.trigger.t36:checked ~ * label[for].trigger.t36,
input.trigger.t36:checked ~   label[for].trigger.t36,
input.trigger.t37:checked ~ * label[for].trigger.t37,
input.trigger.t37:checked ~   label[for].trigger.t37,
input.trigger.t38:checked ~ * label[for].trigger.t38,
input.trigger.t38:checked ~   label[for].trigger.t38,
input.trigger.t39:checked ~ * label[for].trigger.t39,
input.trigger.t39:checked ~   label[for].trigger.t39 {
	background-color: #1356b4;
	background-color: var(--color-accent);

	--trigger-label-forecolor: var(--color-accent-text);
	--checkbox-image-state: var(--label-checked-image);
}
input.trigger.t0:not(:checked) ~ * label[for].trigger.t0,
input.trigger.t0:not(:checked) ~   label[for].trigger.t0,
input.trigger.t1:not(:checked) ~ * label[for].trigger.t1,
input.trigger.t1:not(:checked) ~   label[for].trigger.t1,
input.trigger.t2:not(:checked) ~ * label[for].trigger.t2,
input.trigger.t2:not(:checked) ~   label[for].trigger.t2,
input.trigger.t3:not(:checked) ~ * label[for].trigger.t3,
input.trigger.t3:not(:checked) ~   label[for].trigger.t3,
input.trigger.t4:not(:checked) ~ * label[for].trigger.t4,
input.trigger.t4:not(:checked) ~   label[for].trigger.t4,
input.trigger.t5:not(:checked) ~ * label[for].trigger.t5,
input.trigger.t5:not(:checked) ~   label[for].trigger.t5,
input.trigger.t6:not(:checked) ~ * label[for].trigger.t6,
input.trigger.t6:not(:checked) ~   label[for].trigger.t6,
input.trigger.t7:not(:checked) ~ * label[for].trigger.t7,
input.trigger.t7:not(:checked) ~   label[for].trigger.t7,
input.trigger.t8:not(:checked) ~ * label[for].trigger.t8,
input.trigger.t8:not(:checked) ~   label[for].trigger.t8,
input.trigger.t9:not(:checked) ~ * label[for].trigger.t9,
input.trigger.t9:not(:checked) ~   label[for].trigger.t9,
input.trigger.t10:not(:checked) ~ * label[for].trigger.t10,
input.trigger.t10:not(:checked) ~   label[for].trigger.t10,
input.trigger.t11:not(:checked) ~ * label[for].trigger.t11,
input.trigger.t11:not(:checked) ~   label[for].trigger.t11,
input.trigger.t12:not(:checked) ~ * label[for].trigger.t12,
input.trigger.t12:not(:checked) ~   label[for].trigger.t12,
input.trigger.t13:not(:checked) ~ * label[for].trigger.t13,
input.trigger.t13:not(:checked) ~   label[for].trigger.t13,
input.trigger.t14:not(:checked) ~ * label[for].trigger.t14,
input.trigger.t14:not(:checked) ~   label[for].trigger.t14,
input.trigger.t15:not(:checked) ~ * label[for].trigger.t15,
input.trigger.t15:not(:checked) ~   label[for].trigger.t15,
input.trigger.t16:not(:checked) ~ * label[for].trigger.t16,
input.trigger.t16:not(:checked) ~   label[for].trigger.t16,
input.trigger.t17:not(:checked) ~ * label[for].trigger.t17,
input.trigger.t17:not(:checked) ~   label[for].trigger.t17,
input.trigger.t18:not(:checked) ~ * label[for].trigger.t18,
input.trigger.t18:not(:checked) ~   label[for].trigger.t18,
input.trigger.t19:not(:checked) ~ * label[for].trigger.t19,
input.trigger.t19:not(:checked) ~   label[for].trigger.t19,
input.trigger.t20:not(:checked) ~ * label[for].trigger.t20,
input.trigger.t20:not(:checked) ~   label[for].trigger.t20,
input.trigger.t21:not(:checked) ~ * label[for].trigger.t21,
input.trigger.t21:not(:checked) ~   label[for].trigger.t21,
input.trigger.t22:not(:checked) ~ * label[for].trigger.t22,
input.trigger.t22:not(:checked) ~   label[for].trigger.t22,
input.trigger.t23:not(:checked) ~ * label[for].trigger.t23,
input.trigger.t23:not(:checked) ~   label[for].trigger.t23,
input.trigger.t24:not(:checked) ~ * label[for].trigger.t24,
input.trigger.t24:not(:checked) ~   label[for].trigger.t24,
input.trigger.t25:not(:checked) ~ * label[for].trigger.t25,
input.trigger.t25:not(:checked) ~   label[for].trigger.t25,
input.trigger.t26:not(:checked) ~ * label[for].trigger.t26,
input.trigger.t26:not(:checked) ~   label[for].trigger.t26,
input.trigger.t27:not(:checked) ~ * label[for].trigger.t27,
input.trigger.t27:not(:checked) ~   label[for].trigger.t27,
input.trigger.t28:not(:checked) ~ * label[for].trigger.t28,
input.trigger.t28:not(:checked) ~   label[for].trigger.t28,
input.trigger.t29:not(:checked) ~ * label[for].trigger.t29,
input.trigger.t29:not(:checked) ~   label[for].trigger.t29,
input.trigger.t30:not(:checked) ~ * label[for].trigger.t30,
input.trigger.t30:not(:checked) ~   label[for].trigger.t30,
input.trigger.t31:not(:checked) ~ * label[for].trigger.t31,
input.trigger.t31:not(:checked) ~   label[for].trigger.t31,
input.trigger.t32:not(:checked) ~ * label[for].trigger.t32,
input.trigger.t32:not(:checked) ~   label[for].trigger.t32,
input.trigger.t33:not(:checked) ~ * label[for].trigger.t33,
input.trigger.t33:not(:checked) ~   label[for].trigger.t33,
input.trigger.t34:not(:checked) ~ * label[for].trigger.t34,
input.trigger.t34:not(:checked) ~   label[for].trigger.t34,
input.trigger.t35:not(:checked) ~ * label[for].trigger.t35,
input.trigger.t35:not(:checked) ~   label[for].trigger.t35,
input.trigger.t36:not(:checked) ~ * label[for].trigger.t36,
input.trigger.t36:not(:checked) ~   label[for].trigger.t36,
input.trigger.t37:not(:checked) ~ * label[for].trigger.t37,
input.trigger.t37:not(:checked) ~   label[for].trigger.t37,
input.trigger.t38:not(:checked) ~ * label[for].trigger.t38,
input.trigger.t38:not(:checked) ~   label[for].trigger.t38,
input.trigger.t39:not(:checked) ~ * label[for].trigger.t39,
input.trigger.t39:not(:checked) ~   label[for].trigger.t39 {
	--checkbox-image-state: var(--label-unchecked-image);
}

input.trigger.t0:checked ~ * .triggered-not.t0,
input.trigger.t0:checked ~   .triggered-not.t0,
input.trigger.t1:checked ~ * .triggered-not.t1,
input.trigger.t1:checked ~   .triggered-not.t1,
input.trigger.t2:checked ~ * .triggered-not.t2,
input.trigger.t2:checked ~   .triggered-not.t2,
input.trigger.t3:checked ~ * .triggered-not.t3,
input.trigger.t3:checked ~   .triggered-not.t3,
input.trigger.t4:checked ~ * .triggered-not.t4,
input.trigger.t4:checked ~   .triggered-not.t4,
input.trigger.t5:checked ~ * .triggered-not.t5,
input.trigger.t5:checked ~   .triggered-not.t5,
input.trigger.t6:checked ~ * .triggered-not.t6,
input.trigger.t6:checked ~   .triggered-not.t6,
input.trigger.t7:checked ~ * .triggered-not.t7,
input.trigger.t7:checked ~   .triggered-not.t7,
input.trigger.t8:checked ~ * .triggered-not.t8,
input.trigger.t8:checked ~   .triggered-not.t8,
input.trigger.t9:checked ~ * .triggered-not.t9,
input.trigger.t9:checked ~   .triggered-not.t9,
input.trigger.t10:checked ~ * .triggered-not.t10,
input.trigger.t10:checked ~   .triggered-not.t10,
input.trigger.t11:checked ~ * .triggered-not.t11,
input.trigger.t11:checked ~   .triggered-not.t11,
input.trigger.t12:checked ~ * .triggered-not.t12,
input.trigger.t12:checked ~   .triggered-not.t12,
input.trigger.t13:checked ~ * .triggered-not.t13,
input.trigger.t13:checked ~   .triggered-not.t13,
input.trigger.t14:checked ~ * .triggered-not.t14,
input.trigger.t14:checked ~   .triggered-not.t14,
input.trigger.t15:checked ~ * .triggered-not.t15,
input.trigger.t15:checked ~   .triggered-not.t15,
input.trigger.t16:checked ~ * .triggered-not.t16,
input.trigger.t16:checked ~   .triggered-not.t16,
input.trigger.t17:checked ~ * .triggered-not.t17,
input.trigger.t17:checked ~   .triggered-not.t17,
input.trigger.t18:checked ~ * .triggered-not.t18,
input.trigger.t18:checked ~   .triggered-not.t18,
input.trigger.t19:checked ~ * .triggered-not.t19,
input.trigger.t19:checked ~   .triggered-not.t19,
input.trigger.t20:checked ~ * .triggered-not.t20,
input.trigger.t20:checked ~   .triggered-not.t20,
input.trigger.t21:checked ~ * .triggered-not.t21,
input.trigger.t21:checked ~   .triggered-not.t21,
input.trigger.t22:checked ~ * .triggered-not.t22,
input.trigger.t22:checked ~   .triggered-not.t22,
input.trigger.t23:checked ~ * .triggered-not.t23,
input.trigger.t23:checked ~   .triggered-not.t23,
input.trigger.t24:checked ~ * .triggered-not.t24,
input.trigger.t24:checked ~   .triggered-not.t24,
input.trigger.t25:checked ~ * .triggered-not.t25,
input.trigger.t25:checked ~   .triggered-not.t25,
input.trigger.t26:checked ~ * .triggered-not.t26,
input.trigger.t26:checked ~   .triggered-not.t26,
input.trigger.t27:checked ~ * .triggered-not.t27,
input.trigger.t27:checked ~   .triggered-not.t27,
input.trigger.t28:checked ~ * .triggered-not.t28,
input.trigger.t28:checked ~   .triggered-not.t28,
input.trigger.t29:checked ~ * .triggered-not.t29,
input.trigger.t29:checked ~   .triggered-not.t29,
input.trigger.t30:checked ~ * .triggered-not.t30,
input.trigger.t30:checked ~   .triggered-not.t30,
input.trigger.t31:checked ~ * .triggered-not.t31,
input.trigger.t31:checked ~   .triggered-not.t31,
input.trigger.t32:checked ~ * .triggered-not.t32,
input.trigger.t32:checked ~   .triggered-not.t32,
input.trigger.t33:checked ~ * .triggered-not.t33,
input.trigger.t33:checked ~   .triggered-not.t33,
input.trigger.t34:checked ~ * .triggered-not.t34,
input.trigger.t34:checked ~   .triggered-not.t34,
input.trigger.t35:checked ~ * .triggered-not.t35,
input.trigger.t35:checked ~   .triggered-not.t35,
input.trigger.t36:checked ~ * .triggered-not.t36,
input.trigger.t36:checked ~   .triggered-not.t36,
input.trigger.t37:checked ~ * .triggered-not.t37,
input.trigger.t37:checked ~   .triggered-not.t37,
input.trigger.t38:checked ~ * .triggered-not.t38,
input.trigger.t38:checked ~   .triggered-not.t38,
input.trigger.t39:checked ~ * .triggered-not.t39,
input.trigger.t39:checked ~   .triggered-not.t39 {
	display: none;
}

input.trigger.t0:not(:checked) ~ * .triggered.t0,
input.trigger.t0:not(:checked) ~   .triggered.t0,
input.trigger.t1:not(:checked) ~ * .triggered.t1,
input.trigger.t1:not(:checked) ~   .triggered.t1,
input.trigger.t2:not(:checked) ~ * .triggered.t2,
input.trigger.t2:not(:checked) ~   .triggered.t2,
input.trigger.t3:not(:checked) ~ * .triggered.t3,
input.trigger.t3:not(:checked) ~   .triggered.t3,
input.trigger.t4:not(:checked) ~ * .triggered.t4,
input.trigger.t4:not(:checked) ~   .triggered.t4,
input.trigger.t5:not(:checked) ~ * .triggered.t5,
input.trigger.t5:not(:checked) ~   .triggered.t5,
input.trigger.t6:not(:checked) ~ * .triggered.t6,
input.trigger.t6:not(:checked) ~   .triggered.t6,
input.trigger.t7:not(:checked) ~ * .triggered.t7,
input.trigger.t7:not(:checked) ~   .triggered.t7,
input.trigger.t8:not(:checked) ~ * .triggered.t8,
input.trigger.t8:not(:checked) ~   .triggered.t8,
input.trigger.t9:not(:checked) ~ * .triggered.t9,
input.trigger.t9:not(:checked) ~   .triggered.t9,
input.trigger.t10:not(:checked) ~ * .triggered.t10,
input.trigger.t10:not(:checked) ~   .triggered.t10,
input.trigger.t11:not(:checked) ~ * .triggered.t11,
input.trigger.t11:not(:checked) ~   .triggered.t11,
input.trigger.t12:not(:checked) ~ * .triggered.t12,
input.trigger.t12:not(:checked) ~   .triggered.t12,
input.trigger.t13:not(:checked) ~ * .triggered.t13,
input.trigger.t13:not(:checked) ~   .triggered.t13,
input.trigger.t14:not(:checked) ~ * .triggered.t14,
input.trigger.t14:not(:checked) ~   .triggered.t14,
input.trigger.t15:not(:checked) ~ * .triggered.t15,
input.trigger.t15:not(:checked) ~   .triggered.t15,
input.trigger.t16:not(:checked) ~ * .triggered.t16,
input.trigger.t16:not(:checked) ~   .triggered.t16,
input.trigger.t17:not(:checked) ~ * .triggered.t17,
input.trigger.t17:not(:checked) ~   .triggered.t17,
input.trigger.t18:not(:checked) ~ * .triggered.t18,
input.trigger.t18:not(:checked) ~   .triggered.t18,
input.trigger.t19:not(:checked) ~ * .triggered.t19,
input.trigger.t19:not(:checked) ~   .triggered.t19,
input.trigger.t20:not(:checked) ~ * .triggered.t20,
input.trigger.t20:not(:checked) ~   .triggered.t20,
input.trigger.t21:not(:checked) ~ * .triggered.t21,
input.trigger.t21:not(:checked) ~   .triggered.t21,
input.trigger.t22:not(:checked) ~ * .triggered.t22,
input.trigger.t22:not(:checked) ~   .triggered.t22,
input.trigger.t23:not(:checked) ~ * .triggered.t23,
input.trigger.t23:not(:checked) ~   .triggered.t23,
input.trigger.t24:not(:checked) ~ * .triggered.t24,
input.trigger.t24:not(:checked) ~   .triggered.t24,
input.trigger.t25:not(:checked) ~ * .triggered.t25,
input.trigger.t25:not(:checked) ~   .triggered.t25,
input.trigger.t26:not(:checked) ~ * .triggered.t26,
input.trigger.t26:not(:checked) ~   .triggered.t26,
input.trigger.t27:not(:checked) ~ * .triggered.t27,
input.trigger.t27:not(:checked) ~   .triggered.t27,
input.trigger.t28:not(:checked) ~ * .triggered.t28,
input.trigger.t28:not(:checked) ~   .triggered.t28,
input.trigger.t29:not(:checked) ~ * .triggered.t29,
input.trigger.t29:not(:checked) ~   .triggered.t29,
input.trigger.t30:not(:checked) ~ * .triggered.t30,
input.trigger.t30:not(:checked) ~   .triggered.t30,
input.trigger.t31:not(:checked) ~ * .triggered.t31,
input.trigger.t31:not(:checked) ~   .triggered.t31,
input.trigger.t32:not(:checked) ~ * .triggered.t32,
input.trigger.t32:not(:checked) ~   .triggered.t32,
input.trigger.t33:not(:checked) ~ * .triggered.t33,
input.trigger.t33:not(:checked) ~   .triggered.t33,
input.trigger.t34:not(:checked) ~ * .triggered.t34,
input.trigger.t34:not(:checked) ~   .triggered.t34,
input.trigger.t35:not(:checked) ~ * .triggered.t35,
input.trigger.t35:not(:checked) ~   .triggered.t35,
input.trigger.t36:not(:checked) ~ * .triggered.t36,
input.trigger.t36:not(:checked) ~   .triggered.t36,
input.trigger.t37:not(:checked) ~ * .triggered.t37,
input.trigger.t37:not(:checked) ~   .triggered.t37,
input.trigger.t38:not(:checked) ~ * .triggered.t38,
input.trigger.t38:not(:checked) ~   .triggered.t38,
input.trigger.t39:not(:checked) ~ * .triggered.t39,
input.trigger.t39:not(:checked) ~   .triggered.t39 {
	display: none;
}


input.trigger.t0:disabled ~ * label[for].trigger.t0,
input.trigger.t0:disabled ~   label[for].trigger.t0,
input.trigger.t1:disabled ~ * label[for].trigger.t1,
input.trigger.t1:disabled ~   label[for].trigger.t1,
input.trigger.t2:disabled ~ * label[for].trigger.t2,
input.trigger.t2:disabled ~   label[for].trigger.t2,
input.trigger.t3:disabled ~ * label[for].trigger.t3,
input.trigger.t3:disabled ~   label[for].trigger.t3,
input.trigger.t4:disabled ~ * label[for].trigger.t4,
input.trigger.t4:disabled ~   label[for].trigger.t4,
input.trigger.t5:disabled ~ * label[for].trigger.t5,
input.trigger.t5:disabled ~   label[for].trigger.t5,
input.trigger.t6:disabled ~ * label[for].trigger.t6,
input.trigger.t6:disabled ~   label[for].trigger.t6,
input.trigger.t7:disabled ~ * label[for].trigger.t7,
input.trigger.t7:disabled ~   label[for].trigger.t7,
input.trigger.t8:disabled ~ * label[for].trigger.t8,
input.trigger.t8:disabled ~   label[for].trigger.t8,
input.trigger.t9:disabled ~ * label[for].trigger.t9,
input.trigger.t9:disabled ~   label[for].trigger.t9,
input.trigger.t10:disabled ~ * label[for].trigger.t10,
input.trigger.t10:disabled ~   label[for].trigger.t10,
input.trigger.t11:disabled ~ * label[for].trigger.t11,
input.trigger.t11:disabled ~   label[for].trigger.t11,
input.trigger.t12:disabled ~ * label[for].trigger.t12,
input.trigger.t12:disabled ~   label[for].trigger.t12,
input.trigger.t13:disabled ~ * label[for].trigger.t13,
input.trigger.t13:disabled ~   label[for].trigger.t13,
input.trigger.t14:disabled ~ * label[for].trigger.t14,
input.trigger.t14:disabled ~   label[for].trigger.t14,
input.trigger.t15:disabled ~ * label[for].trigger.t15,
input.trigger.t15:disabled ~   label[for].trigger.t15,
input.trigger.t16:disabled ~ * label[for].trigger.t16,
input.trigger.t16:disabled ~   label[for].trigger.t16,
input.trigger.t17:disabled ~ * label[for].trigger.t17,
input.trigger.t17:disabled ~   label[for].trigger.t17,
input.trigger.t18:disabled ~ * label[for].trigger.t18,
input.trigger.t18:disabled ~   label[for].trigger.t18,
input.trigger.t19:disabled ~ * label[for].trigger.t19,
input.trigger.t19:disabled ~   label[for].trigger.t19,
input.trigger.t20:disabled ~ * label[for].trigger.t20,
input.trigger.t20:disabled ~   label[for].trigger.t20,
input.trigger.t21:disabled ~ * label[for].trigger.t21,
input.trigger.t21:disabled ~   label[for].trigger.t21,
input.trigger.t22:disabled ~ * label[for].trigger.t22,
input.trigger.t22:disabled ~   label[for].trigger.t22,
input.trigger.t23:disabled ~ * label[for].trigger.t23,
input.trigger.t23:disabled ~   label[for].trigger.t23,
input.trigger.t24:disabled ~ * label[for].trigger.t24,
input.trigger.t24:disabled ~   label[for].trigger.t24,
input.trigger.t25:disabled ~ * label[for].trigger.t25,
input.trigger.t25:disabled ~   label[for].trigger.t25,
input.trigger.t26:disabled ~ * label[for].trigger.t26,
input.trigger.t26:disabled ~   label[for].trigger.t26,
input.trigger.t27:disabled ~ * label[for].trigger.t27,
input.trigger.t27:disabled ~   label[for].trigger.t27,
input.trigger.t28:disabled ~ * label[for].trigger.t28,
input.trigger.t28:disabled ~   label[for].trigger.t28,
input.trigger.t29:disabled ~ * label[for].trigger.t29,
input.trigger.t29:disabled ~   label[for].trigger.t29,
input.trigger.t30:disabled ~ * label[for].trigger.t30,
input.trigger.t30:disabled ~   label[for].trigger.t30,
input.trigger.t31:disabled ~ * label[for].trigger.t31,
input.trigger.t31:disabled ~   label[for].trigger.t31,
input.trigger.t32:disabled ~ * label[for].trigger.t32,
input.trigger.t32:disabled ~   label[for].trigger.t32,
input.trigger.t33:disabled ~ * label[for].trigger.t33,
input.trigger.t33:disabled ~   label[for].trigger.t33,
input.trigger.t34:disabled ~ * label[for].trigger.t34,
input.trigger.t34:disabled ~   label[for].trigger.t34,
input.trigger.t35:disabled ~ * label[for].trigger.t35,
input.trigger.t35:disabled ~   label[for].trigger.t35,
input.trigger.t36:disabled ~ * label[for].trigger.t36,
input.trigger.t36:disabled ~   label[for].trigger.t36,
input.trigger.t37:disabled ~ * label[for].trigger.t37,
input.trigger.t37:disabled ~   label[for].trigger.t37,
input.trigger.t38:disabled ~ * label[for].trigger.t38,
input.trigger.t38:disabled ~   label[for].trigger.t38,
input.trigger.t39:disabled ~ * label[for].trigger.t39,
input.trigger.t39:disabled ~   label[for].trigger.t39 {
/*	--color-accent-dark: --color-accent-fade;*/
	--color-accent-dark: #bbbbbb;
/*	--color-accent-pale: --color-accent-fade;*/
	--color-accent-pale: #cccccc;
/*	pointer-events: none;*/
	cursor: not-allowed;
}


/* ====================== Special-cases ========================= */
input#suppressZendesk:checked ~ iframe[data-product="web_widget"],
input#suppressZendesk:checked ~ div > iframe#launcher {
	display: none !important;
}

input#suppressZendesk:checked ~ #clearfeed-root {
	display: none !important;
}

/* ====================== END Triggers.v2.Rules.tt ========================= */
.announcements-infobar {
	display: flex;
	flex-direction: column;
	margin-top: 1em;

	/*position: absolute;*/
	/*position: -webkit-sticky;*/
	/*position: sticky;*/
	/*top: 0;*/

	max-width: 940px;
	margin: 1em auto 1em auto;
}
/* Fix for RSS1's default stylesheet: */
	.ann-infobar > p {
		margin: 0.25em 0.5em;
	}
	.ann-infobar .ann-controls button {
		/* Render as text: */
		background: none;
		border: none;
		padding: 0.4em 0.75em;
		margin: 0;
		font-family: inherit;
		font-size: inherit;
		color: black;
		cursor: pointer;

		-moz-appearance: none;
		-webkit-appearance: none;
	}
		.ann-infobar.ann-promotional .ann-controls button:hover,
		.ann-infobar.ann-information .ann-controls button:hover {
			background-color: #1356b4;
			background-color: var(--color-accent);
			color: white;
		}

		.ann-infobar.ann-warning .ann-controls button:hover,
		.ann-infobar.ann-critical .ann-controls button:hover {
			background: black;
			color: white;
		}

.announcements-modal /* Hmm, shouldn't this be a <dialog> now? So it can use the standard <dialog> styles we already have too. */ {
	position: fixed;
    top: 0;
    height: 100vh;
    left: 0;
    width: 100vw;
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
	z-index: 300; /* Appear in front of everything else. */
}
	.announcements-modal h3 {
		padding: 0;
		font-size: 18pt;
		margin: 0;
		margin-bottom: 0.5em;
	}
	.ann-modal .ann-controls button {
		/* Render as big button: */
		display: block;
		padding: 0.5em 1em;
		color: white;
	}

	.announcement a:link {
		color: blue;
	}
	.announcement a:visited {
		color: purple;
	}
		.announcement a:link:hover {
			color: lightblue;
		}
		.announcement a:visited:hover {
			color: mediumpurple;
		}
	.announcement a:hover {
		/*color: orange;*/
	}

	.announcements-infobar > .ann-infobar {
		border-radius: 5px;
		order: -1;
		flex-grow: 10;
		padding: 0.25em 0.5em;
		margin: 0.25em;

		display: flex;
	}
		.ann-infobar > p {
			flex-grow: 1;
		}
		.ann-infobar > .ann-controls {
			flex-shrink: 1;
			/*margin: 0.25em 0.5em; /* match `.ann-infobar > p` */
		}

	.announcements-modal > .ann-modal {
		padding: 1.5em;
		border-radius: 10px;
		border-width: 3px;
		flex-grow: 0;
		flex-shrink: 0;
		width: 500px;
		box-shadow: 5px 5px 15px 0px rgba(0, 0, 0, 0.34);
	}

	.ann-infobar.ann-promotional {
		border: 1px solid #1356b4;
		background-color: white;
		color: black;

		/* Use same colors as scheme, so it doesn't stand-out: */
		background-color: var(--color-background);
		color: var(--color-foreground);
	}
	.ann-infobar.ann-information {
		border: 3px solid #1356b4;
		background-color: #dcffeb;
		color: black;
	}
		.ann-infobar.ann-information p:first-child::before {
			content: 'ℹ️';
			display: inline;
		}
	.ann-infobar.ann-warning {
		border: 1px solid gold;
		background-color: palegoldenrod;
		color: black;
	}
		.ann-infobar.ann-warning p:first-child::before {
			content: '⚠️';
			display: inline;
		}
	.ann-infobar.ann-critical {
		border: 1px solid red;
		background-color: lightsalmon;
		color: black;
	}
		.ann-infobar.ann-critical p:first-child::before {
			content: '🚫';
			display: inline;
		}

	.ann-modal.ann-promotional {
		border: 1px solid #1356b4;
		background-color: white;
	}
	.ann-modal.ann-information {
		border: 1px solid #1356b4;
		background-color: white;
	}
	.ann-modal.ann-warning {
		border: 1px solid gold;
		background-color: white;
	}
	.ann-modal.ann-critical {
		border: 1px solid red;
		background-color: white;
	}

/* 2019-09-25: New main design elements: TODO: `ul.actions` should be renamed as it can be confused with div.actions usually located in the footer. */
/*
	<section class="pageHeader">
		<h2>Page title</h2>
		<ul class="actions">
			<li>
				<a class="button">New Beta Widget</a>
			</li>
			<li>
				<a class="button">New Alpha Widget</a>
			</li>
		</ul>
		<div class="quickSearch">
		</div>
	</section>

	<section class="advSearch">
		<label class="field">
			Text
			<select />
		</label>
	</section>

2021-03-11: Here's a better approach which gives me much better layouts when the <h2> is too wide and elements need to wrap.
	Note that you cannot use `grid-template-columns: repeat( auto-fit, min-content )` because you cannot use "intrinsic values" (e.g. `min-content`, `max-content`, etc) with `repeat` and `auto-fit` nor `auti-fill`, argh!


	<section class="pageHeader">
		<h2>Page title</h2>
		<div>
			<ul class="actions">
				<li>
					<a class="button">New Beta Widget</a>
				</li>
				<li>
					<a class="button">New Alpha Widget</a>
				</li>
			</ul>
			<div class="quickSearch">
			</div>
		</div>
		<ul class="popupActions">
			<li><button>Expand</button></li>
			<li><button>Close</button></li>
		</ul>
	</section>

	It's hard to choose between `margin-left: auto`, `margin-right: auto` (on items), and `justify-content: space-between` in the flex-parent (with and without `flex-grow`, argh!), especially when there's nested flex containers.
		Also, using `text-align: left` or `text-align: center` for the <h2>, ugh,
	But I'm thinking:

	.pageHeader {
		display: flex;
		flex-wrap: wrap;

	}
		.pageHeader > h2 {

		}
		.pageHeader > div {
			display: flex;
			flex-wrap: wrap;
		}
			.pageHeader > div > ul.actions {
			}
			.pageHeader > div > div.quickSearch {
			}
		.pageHeader > .popupActions {
			display: none;
		}

	/* TODO: Think about this more... * /
	.isPopup .pageHeader > div {
		order: 3;
	}
	.isPopup .pageHeader > .popupActions {
		order: 2;
	}
*/

section.pageHeader {

	background-color: #ffffff;
	background-color: rgb(177, 199, 230);
	background-color: var(--color-accent-light);

	/* This box-shadow is closer to the original Microsoft Fabric.css I styled our boxes on. */
	/* However it only works well with white/light blocks, not coloured blocks, where a lighter shadow works. */
	/* box-shadow: 0 3.2px 7.2px 0 rgba(0,0,0,.132), 0 0.6px 1.8px 0 rgba(0,0,0,.108); */

	box-shadow: rgba(0, 0, 0, 0.08) 0px 2px 4px 1px;
	transition: background-color 0.1s, color 0.2s;

	border-radius: 6px;

	margin: 1em 1px; /* 1px horizontal margin because the box-shadow needs 1px to be seen. */
	padding: 0.5em 1em;

	display: flex;
	justify-content: space-between; /* If there's only 3 children (<h2>, ul.actions, and div.quickSearch) then space-between is good */
	align-items: center;
	flex-wrap: wrap;

	text-transform: uppercase;
}
	section.pageHeader[hidden] {
		display: none;
	}

	section.pageHeader:hover {
	}

	section.pageHeader p,
	section.pageHeader div:not(.quickSearch):not(.pageHeaderContent) {
		text-transform: none;
	}

	section.pageHeader > h2 + div.pageHeaderContent {
		display: flex;
		flex-wrap: wrap;
		align-items: center;
	}
		section.pageHeader > h2 + div.pageHeaderContent > ul.actions {
			margin-left: auto !important;
			margin-right: auto !important;
		}

	section.pageHeader > h2 {
		margin: 0;
		padding: 0;

		font-size: 1.2em;
		color: #1356b4;
		color: var(--color-accent-fore);
		color: var(--color-accent-dark);

		white-space: nowrap;

		text-shadow: 0 1px 0px rgba( 255, 255, 255, 0.5 );
	}
	@media screen and (prefers-color-scheme: dark) {
		:root:not(.lightMode) section.pageHeader > h2 {
			text-shadow: none;
		}
	}
	:root.darkMode section.pageHeader > h2 {
		text-shadow: none;
	}

	section.pageHeader > h2,
	section.pageHeader > h3,
	section.pageHeader > h4 {
		border: none;
	}

	section.pageHeader ul {
		list-style: none;
		margin: 0;
		padding: 0;
	}

	section.pageHeader ul.actions {
		display: flex;
		border: none;
		text-transform: uppercase;
		list-style: none;
		padding: 0;
	}
		section.pageHeader ul.actions > li {
			margin-top: 0;
			margin-right: 1em;
			margin-bottom: 0;
			margin-left: 0;
		}
		/* When ul.actions is the last element (there's no quickSearch) then don't have extra spacing on the right side so it contacts the right side of the .pageHeader */
		section.pageHeader ul.actions:last-child > li:last-child {
			margin-right: 0;
		}
		section.pageHeader ul.actions > li.beginsGroup:not(:first-child) {
			margin-left: auto;
			margin-left: 3em;
		}
		/*
		@media only screen and (max-width: 799px) {
			section.pageHeader > ul.actions > li.beginsGroup {
				margin-left: 1em;
			}
		}
		*/

		section.pageHeader ul.actions > li > a,
		section.pageHeader ul.actions > li > button,
		section.pageHeader .quickSearch a,
		section.pageHeader .quickSearch button {
			/* This has to be on the <a> and <button> elements directly because the user-agent style sets `text-transform: none;` on those same elements. */
			text-transform: uppercase;

			/* Safari on iOS has 2px top and bottom margins on <button> by default but not <a> which results in wonky pageHeaders. */
			margin-top: 0;
			margin-bottom: 0;
		}



/* .quickSearch and .advSearch: */

section.pageHeader .quickSearch[data-quicksearch-instant=true] button[type=submit] {
	/*display: none;*/ /* As the script will submit the form automatically, no need to have the button taking up space. UPDATE: Unless there's a search textbox, of course, ugh */
}

section.pageHeader div.quickSearch {
	display: flex;
	align-items: baseline;
	align-items: center;
}
	section.pageHeader div.quickSearch > * {
		margin: 0 0 0 0.5em;
	}

section.advSearch {
	margin: 1em 0;
	display: flex;
	gap: 0.5em;
	align-items: baseline; /* You'd think this one would look better than 'center', but no. */
	align-items: center;
	align-items: stretch;
}

	div.quickSearch .field,
	section.advSearch .field {
		margin: auto;
	}

	section.advSearch label.field.checkboxLabel {
		margin-left: 1em;
	}

	section.pageHeader div.quickSearch > label.field {
		display: flex;
		align-items: baseline;
		align-items: center; /* Safari *still* has a 5-year-old bug where it won't align empty <input type="text" /> elements with baseline correctly: https://bugs.webkit.org/show_bug.cgi?id=142968  */
		text-transform: none;

		text-shadow: 0 1px 0px rgba( 255, 255, 255, 0.5 );
	}
	@media screen and (prefers-color-scheme: dark) {
		:root:not(.lightMode) section.pageHeader div.quickSearch > label.field {
			text-shadow: none;
		}
	}
	:root.darkMode section.pageHeader div.quickSearch > label.field {
		text-shadow: none;
	}

	section.pageHeader input[type=text],
	section.pageHeader input[type=search],
	section.pageHeader input[type=date],
	section.pageHeader input[type=number],
	section.pageHeader input[type=email],
	section.pageHeader input[type=tel],
	section.pageHeader select {
		border: 1px solid #aaa;
		border-radius: 4px;
		color: #222;
		display: inline-block;
		width: auto;
		max-width: 10em;
		margin-left: 0.5em;
	}

	section.pageHeader input[type=text]:not(:focus):not(:hover),
	section.pageHeader input[type=search]:not(:focus):not(:hover),
	section.pageHeader input[type=date]:not(:focus):not(:hover),
	section.pageHeader input[type=number]:not(:focus):not(:hover),
	section.pageHeader input[type=email]:not(:focus):not(:hover),
	section.pageHeader input[type=tel]:not(:focus):not(:hover),
	section.pageHeader select:not(:focus):not(:hover) {
		box-shadow: none;
	}

	section.advSearch input[type=text],
	section.advSearch input[type=tel],
	section.advSearch input[type=email],
	section.advSearch input[type=password],
	section.advSearch input[type=datetime-local],
	section.advSearch input[type=datetime],
	section.advSearch input[type=date],
	section.advSearch input[type=url],
	section.advSearch input[type=search],
	section.advSearch select,
	section.advSearch textarea,
	.paging select {
		font-size: smaller;
		border-radius: 4px;
		width: auto;
		max-width: 20em;
	}

	/* <select> needs special behaviour: https://stackoverflow.com/questions/10672586/how-to-make-select-elements-shrink-to-max-width-percent-style-within-fieldset */
	section.advSearch select {
		min-width: none; /* hmm, why is VS saying this is an invalid value? */
		max-width: none;
		width: 100%;
	}

	.paging select {
		display: inline-block;
	}

	section.advSearch input[type=checkbox],
	section.advSearch input[type=radio] {

	}

	div.quickSearch button[type=submit],
	section.advSearch button[type=submit] {
		cursor: pointer;
		text-transform: uppercase; /* Browsers' built-in stylesheets have an explicit `text-transform: none;` */
	}

	/* I would like section.advSearch <label> elements to comfortably wrap - I understand CSS grid is better than flexbox for this, but it would need grid auto columns which are difficult for me to understand right now. */
	/* These resources look useful and more helpful than MDN's incomplete documentation or the beginner-level tutorials and CSS generators that only generate fixed column layouts, not auto-column layouts:
		https://gridbyexample.com/examples/example18/ /* Note there is `width: 600px;` defined on .wrapper which prevents auto-columns from working. Remove the width to make it work.
		https://css-tricks.com/auto-sizing-columns-css-grid-auto-fill-vs-auto-fit/
		Not useful for auto-columns, but useful overall: http://grid.malven.co/
	*/

@media only screen and (max-width: 1023px) {

	html:not(.isPopup) .cut {
		display: none;
	}

	html:not(.isPopup) section.pageHeader {
		flex-direction: column;
		align-items: stretch;
	}
		html:not(.isPopup) section.pageHeader > h2 {
			text-align: center;
			margin: 0.25em;
		}
		html:not(.isPopup) section.pageHeader > ul.actions,
		html:not(.isPopup) section.pageHeader > * > ul.actions {
			margin: 0.25em;
			justify-content: space-between;
			justify-content: center;
			flex-wrap: wrap;
			background-color: rgb( 21,  59, 118);
			background-color: var(--color-accent-dark);
			background-color: var(--color-accent-hover); /* TODO: Make this color blend a named color. */
			padding: 0.25em;
			border-radius: 6px;
		}
			html:not(.isPopup) section.pageHeader > ul.actions > li,
			html:not(.isPopup) section.pageHeader > * > ul.actions > li {
				margin: 0;
				margin: 0.25em;
			}
		html:not(.isPopup) section.pageHeader div.quickSearch {
			margin: 0.25em;
			justify-content: space-between;
			justify-content: center;
			flex-wrap: wrap;
		}
			html:not(.isPopup) section.pageHeader div.quickSearch > * {
				margin: 0.25em;
			}

		html:not(.isPopup) section.advSearch {
			/*
			flex-direction: column;
			align-content: stretch;
			*/
			display: grid;
			grid-template-columns: repeat( auto-fit, minmax( 250px, 1fr ) );
			padding: 0.5em;
		}
			html:not(.isPopup) section.advSearch > * {
				margin: 0.25em;
			}
			html:not(.isPopup) section.advSearch .field {
				max-width: none;
				margin: 0.25em;
			}
			html:not(.isPopup) section.advSearch select {
				width: auto;
				max-width: 20em;
			}
}

@media only screen and (min-width: 1024px) {

section.pageHeader.altLayout {
	/*
	padding: 0.5em;
	padding: 0 0.5em;
	*/
	gap: 0.25em;

	display: grid;
	grid-template-rows   : auto auto;
	grid-template-columns: auto auto;
}
	section.pageHeader.altLayout > h2 {
		grid-column-start: 1;
		grid-column-end  : 2;
	}
	section.pageHeader.altLayout > ul.actions {
		grid-column-start: 1;
		grid-column-end  : 3;
		grid-row-start   : 2;
		grid-row-end     : 3;
		justify-self: center;

		justify-content: space-between;
		justify-content: center;
		background-color: rgb( 21,  59, 118);
		background-color: var(--color-accent-dark);
		background-color: var(--color-accent-hover); /* TODO: Make this color blend a named color. */
		border-radius: 6px;

		margin: 0.5em auto;
		padding: 0.5em;
		width: 66vw;
	}
	section.pageHeader.altLayout > .quickSearch {
		grid-column-start: 2;
		grid-column-end  : 3;
		grid-row-start   : 1;
		grid-row-end     : 2;
		justify-self: right;
	}
		section.pageHeader.altLayout > .quickSearch input[type=text],
		section.pageHeader.altLayout > .quickSearch input[type=tel],
		section.pageHeader.altLayout > .quickSearch input[type=email],
		section.pageHeader.altLayout > .quickSearch input[type=password],
		section.pageHeader.altLayout > .quickSearch input[type=datetime-local],
		section.pageHeader.altLayout > .quickSearch input[type=datetime],
		section.pageHeader.altLayout > .quickSearch input[type=date],
		section.pageHeader.altLayout > .quickSearch input[type=url],
		section.pageHeader.altLayout > .quickSearch input[type=search],
		section.pageHeader.altLayout > .quickSearch input[type=number],
		section.pageHeader.altLayout > .quickSearch select {
			padding: 0.15em;
			padding: 2px;

			font-size: 90%;
		}
}


section.pageHeader.shadowClone {
	position  : absolute;
	left      : 0;
/*	opacity   : 0.5;*/
	visibility: hidden;
}
	section.pageHeader.shadowClone * {
		outline: 1px solid blue;
	}
div.assetsListOuter {
	background-color: #eee;
	background-color: var(--color-container2);
    border-radius: 7px;
	padding: 0.5em;

	margin: 0.5em 0;
}

ul.assetsList {
    display: grid;

	/* Why didn't I see this article until now?! https://css-tricks.com/look-ma-no-media-queries-responsive-layouts-using-css-grid/ */
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	grid-auto-rows: auto;

	grid-gap: 0.25em;
/*	align-items: center;*/
	justify-items: start;

	padding: 1em; /* Extra padding to stop the Assets Controls popup from touching or exceeding the width of the viewport and causing scrollbars to appear. */
	margin: 0;
	margin-top: 1em;
	list-style: none;
}
	ul.assetsList:empty {
		/* In late 2018 the CSS Selectors Level 4 spec changed to make `:empty` behave the same as `:-moz-only-whitespace` - but as of early 2020 browsers still don't support that, so make sure the element REALLY IS empty first! */
		display: none;
	}

/* <li>: */

ul.assetsList > li {
	background-color: #999;
	border-radius: 7px;

	min-width: 200px; /* Note this matches the grid-template-columns rule above. */
	height: 100px; /* 100px min height to make the thumbnail still easily clickable when the controls are visible */

	margin: 0 auto 0 auto;

	position: relative;

	display: flex;
	justify-content: center;
	align-items: center;
}

	ul.assetsList > li > a,
	ul.assetsList > li > label {
		position: absolute;
		left: 0;
		top: 0;
		right: 0;
		bottom: 0;

		overflow: hidden;
	}
	/* Don't forget to copy this into InspectionReport.css if you update it */
		ul.assetsList > li > a.videoLink::after,
		ul.filmstrip > li.video::after {
			content: '🎥';
			content: '▶️';
			font-size: 24pt;
			display: flex;
			flex-direction: column;
			justify-content: center;
			align-items: center;

			position: absolute;
			text-align: center;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;
			pointer-events: none;
			z-index: 11; /* The other elements have `z-index: 10;` */
		}
		ul.filmstrip > li {
			position: relative;
		}
		ul.filmstrip > li.video::after {
			font-size: 14pt; /* Because these <li> elements are smaller. */
		}

		/* Due to the tiiiiiiiny AssetList rendering size in the Checklist page, the "Play" button emoji obscures it entirely, so shrink it down: */
		html.checklistPage td.taskColumn ul.assetsList > li > a.videoLink::after {
			font-size: 8pt;
		}

		ul.assetsList > li > a > img,
		ul.assetsList > li > label > img /* For active, completed, and error'd uploads */ {
			/*width: 150px;*/
			/*height: 150px;*/
			width: 100%;
			height: 100%;
			/*max-height: 125px;*/
			object-fit: contain;
			/*object-fit: cover;*/
			transition: transform 0.2s;
		}
			ul.assetsList > li:hover > a > img {
				transition: transform 0.2s;
				transform: scale(1.1);
				border-radius: 5px;
			}
				ul.assetsList > li.itemImageMenuOpen:hover > a > img {
					transform: none; /* Needed because of `overflow: visible`, otherwise the image sticks out. */
					transition: none;
				}

	ul.assetsList > li.hiddenAsset {
		/*opacity: 0.8 !important; Don't use this - it creates a new stacking context unnecessarily which makes it impossible to see the asset controls. */
	}
		ul.assetsList > li.hiddenAsset span.assetTitle {
			color: #999;
		}

		ul.assetsList > li.hiddenAsset span.assetTitle,
		ul.assetsList > li.hiddenAsset span.assetTitle:empty {
			display: block;
		}
		ul.assetsList > li.hiddenAsset span.assetTitle::before {
			content: 'Hidden: ';
			display: inline;
		}
		ul.assetsList > li.hiddenAsset span.assetTitle:empty::before {
			content: 'Hidden';
		}

	ul.assetsList > li.newAssetUpload > label {
		/* The parent <li> already has `display: flex;` btw. */
		display: flex;
		align-self: stretch;
		flex-basis: 100%;

		cursor: pointer;

		align-items: stretch;
		justify-content: stretch;
		flex-direction: column;
	}
	ul.assetsList > li.newAssetUpload.required > label::after {
		display: inline-block;
		content: '';

		background-image: url("/images/Results/Required_Red.svg");
		background-image: var(--image-required);
		width: 16px;
		height: 16px;
	}

		ul.assetsList > li.newAssetUpload > label > span:first-child {
			margin: auto;
		}
		ul.assetsList > li.newAssetUpload > label > input[type=file] {
			display: none;
		}

	ul.assetsList > li.asset.asset-pending {

	}
		ul.assetsList > li.asset.asset-pending > label {
		}
			ul.assetsList > li.asset.asset-pending > label > progress {
				display: none;
				/* As much as I'd like a sexy rotary/radial progress-indicator, it's using up too much time for now. Another simple possibility is a 50% opaque black progress bar that covers the entire <li>? */
			}
			ul.assetsList > li.asset.asset-pending > label > span.assetTitle {
			}
			ul.assetsList > li.asset.asset-pending > label > img {
			}

ul.assetsList > li.asset.asset-pending.uploadFailed {
	border: 1px solid #cc0000;
	background-color: rgba(255, 0, 0, 0.05);
}
.uploadErrorMessage {
	color: #cc0000;
	border: 1px solid #cc0000;
	padding: 2px 4px;
	border-radius: 4px;
	background-color: rgba(255, 0, 0, 0.05);
	display: inline-block;
}

ul.assetsList > li span.assetTitle {
	position: absolute;
	z-index: 10;
	padding: 0.25em 0.5em;
	margin: 0.5em;
	font-size: 75%;
	color: white;
	border-radius: 5px;
	background-color: rgba( 0, 0, 0, 0.5 );

	/* Using `text-shadow` to stroke the text just doesn't look good. */
}
	ul.assetsList > li span.assetTitle:empty {
		display: none;
	}
ul.assetsList > li span.assetTitle.videoLength {
	bottom: 0;
	right: 0;
	font-size: 90%;
}

/* This is for the widgets running along the top of the AssetList area, *not* the controls associated with each Asset (see `AssetList.Controls.css` for that). */
ul.assetListControls {
	margin: 0;
	padding: 0;
	display: flex;
	list-style: none;

	cursor: default; /* Prevent the I-beam cursor from appearing when the mouse-cursor moves-between controls. I don't know why Chrome does this... */
}
/* For small sizes - Inspection.Add */
@media screen and (max-width: 768px) {
	ul.assetListControls {
		flex-direction: column;
		align-items: center;
	}
}
	ul.assetListControls > li {
		margin: 0.25em;
	}
	ul.assetListControls > li.title {
		text-align: center;
		margin: auto; /* auto vertical margins makes it vertically centred without faffing around with line-height or flex align-items: baseline, phew! */
	}
	@media screen and (max-width: 1023px) {
		ul.assetListControls > li.title {
			display: none;
		}
	}

	ul.assetListControls > li.assetFilterControl {
		margin-left: auto;
	}
	ul.assetListControls > li.title + li.assetFilterControl {
		margin-left: 0;
	}
	@media screen and (max-width: 1023px) {
		ul.assetListControls > li.title + li.assetFilterControl {
			margin-left: auto;
		}
	}

		ul.assetListControls > li > button,
		ul.assetListControls > li > label:not(.trigger) {
			width: 10em;
			text-align: center;
		}
			ul.assetListControls > li > label:not(.trigger) > span {

			}
			ul.assetListControls > li > label:not(.trigger) > input {
				display: none;
			}

/* AssetList AssetKind Filters: */
		ul.assetListControls > li > label.trigger {
		}
		ul.assetListControls > li > label.trigger::before {
			background-image: url("/images/Radio-White-Unchecked.svg");
			background-image: var(--image-radio-unchecked-white);
		}

		input.trigger.assetKindsMedias:checked ~ * label.trigger.assetKindsMedias::before,
		input.trigger.assetKindsSystem:checked ~ * label.trigger.assetKindsSystem::before {
			background-image: url("/images/Radio-White-Checked.svg");
			background-image: var(--image-radio-checked-white);
		}



		input.trigger.assetKindsMedias:checked ~ * li.assetMedia,
		input.trigger.assetKindsMedias:checked ~ * li.assetAttachment,

		input.trigger.assetKindsSystem:checked ~ * li.assetSystem,
		input.trigger.assetKindsSystem:checked ~ * li.assetSystemHidden {
			opacity: 1;
			transition: opacity 0.2s; /* formerly: opacity, flex-basis and min-width: https://codepen.io/thomas-eilermann/pen/grjEjE */
		}

		li.veryHiddenAsset {
			/* These should never be rendered at all, but just-in-case: */
			display: none !important;
		}

		/* See `GetAssetStatusClass` */
		input.trigger.assetKindsMedias:not(:checked) ~ * li.mediaAsset,
		input.trigger.assetKindsMedias:not(:checked) ~ * li.attachmentAsset {
			/* i.e. the "Media (n)" radio button is unchecked, therefore hide all Media and Attachment-group assets: */
			display: none;
		}

		input.trigger.assetKindsSystem:not(:checked) ~ * li.systemAsset {
			/* i.e. the "System (n)" radio button is unchecked, therefore hide all System-group assets: */
			display: none; /* The fancy effects don't work now that we're using `display: grid;` - I don't know how to animate the removal of an element from a grid, hmm... */
		}

	li.assetFilterControl label {
	}
	li.assetFilterControl label[data-count="0"] {
		/*display: none;*/
		opacity: 0.4;
	}
	li.assetFilterControl label[data-count="0"]:hover {
		opacity: 0.8;
		transition: opacity 0.2s;
	}
		li.assetFilterControl label::after {
			content: ' (' attr(data-count) ')'; /* CSS uses whitespace to concatenate strings: https://stackoverflow.com/questions/24427945/multiple-content-attr-values */
			display: inline;
			margin-left: 4px;
		}

/* .addableAssets */
*:not(dialog) > div.addableAssets {
	position: absolute;
	z-index: 20;
	z-index: 103; /* 103 so it appears in-front of `.titleHelp[title]::before`, which includes emojis. */
	left: 5em;
	right: 5em;

	background-color: #f9f9f9;
	background-color: var(--color-offwhite);

	padding: 0.5em;
	margin: 0;
	margin-bottom: 2em; /* To give it some space when this causes the page-height to increase. */

	border-radius: 7px;

	box-shadow: rgba(0, 0, 0, 0.08) 0px 2px 4px 1px;
	box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 20px 20px; /* This one is more imposing and makes the popup stand-out more. */
}
@supports ( backdrop-filter: blur(10px) ) {
	*:not(dialog) > div.addableAssets {
		backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}
@supports ( -webkit-backdrop-filter: blur(10px) ) {
	*:not(dialog) > div.addableAssets {
		-webkit-backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}

	div.addableAssets > .addableAssetsTitle {
		justify-content: space-between;
		align-items: baseline;

		margin: 0.5em;
	}
	div.addableAssets > .addableAssetsTitle:not([hidden]) {
		display: flex;
	}

		div.addableAssets > .addableAssetsTitle > p {
			margin: 0;
			margin: 0 0.25em; /* To match the margin of each <li> */
		}
		div.addableAssets > .addableAssetsTitle > label.button.closeButton {
			margin: 0;
			margin: 0 0.25em; /* To match the margin of each <li> */
		}

	div.addableAssets > ul {
		margin: 0.5em;
		padding: 0;
	}

	/* 2020-09-06: Scott wants addableAssets thumbnails to be larger: */
		div.addableAssets > ul > li {
			max-width: 300px;
			flex-basis: 250px;
			height: 150px;
		}
		@media screen and (max-width: 1279px) {
			div.addableAssets > ul > li {
				max-width: 125px;
				flex-basis: 100px;
				height: 100px;
			}
		}

			div.addableAssets > ul > li > a {
			}
				div.addableAssets > ul > li > a > .assetTitle {
					opacity: 0;
					transition: opacity 0.2s;
				}
				div.addableAssets > ul > li:hover > a > .assetTitle {
					opacity: 1.0;
				}
				div.addableAssets > ul > li > a > img {
				}

li.assetListControl.disabled > label {
	cursor: not-allowed;
	transition: none;
}

/* .userMediaUpload */
li.userMediaUpload {
	/* Hidden by default unless userMedia is available - though I'd like it to remain hidden unless a camera is present without needing to ask for permission... */
	display: none;
}
html.hasUserMedia li.userMediaUpload {
	display: list-item;
}
	html.hasUserMedia li.userMediaUpload div.addableAssets {
		/* Using 90% opacity because Chrome doesn't apply the blur backdrop-filter consistently (GPU glitch?) */
		background-color: rgba( 249, 249, 249, 0.9 );
		background-color: var(--color-offwhite-09);
	}


#cameraFloatingDialog {
	/* This div also has `.addableAssets` applied. */
	position: fixed;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;

	margin: auto;

	max-width: 90vw;
	max-height: 90vh;

	width: 800px;
	width: fit-content;

	height: 600px;
	height: fit-content;
}
	#cameraFloatingDialog > .previewContainer {
		display: flex;
		flex-direction: column;
		justify-content: stretch;
		padding: 0 2em;
	}
	#cameraFloatingDialog > .previewContainer {

	}
		#cameraFloatingDialog > div.previewContainer > * {
			margin-left: auto;
			margin-right: auto;
		}

		#cameraFloatingDialog > div.previewContainer > canvas,
		#cameraFloatingDialog > div.previewContainer > video {
			border-radius: 7px;
			width: min-content;
			height: min-content;
/*			max-width: 75vw;
			max-height: 50vh;*/
			cursor: pointer;
/*			object-fit: contain;*/
		}

		#cameraFloatingDialog > div.previewContainer:not(.snapshotPreview) > canvas {
			display: none;
		}
		#cameraFloatingDialog > div.previewContainer:not(.snapshotPreview) > video {
			display: block;
		}
		#cameraFloatingDialog > div.previewContainer:not(.snapshotPreview) > div.actions > button.captureButton {
			display: inline-block;
		}
		#cameraFloatingDialog > div.previewContainer:not(.snapshotPreview) > div.actions > button.retakeButton {
			display: none;
		}

	#cameraFloatingDialog > div.previewContainer.snapshotPreview {
	}
		#cameraFloatingDialog > div.previewContainer.snapshotPreview > canvas {
			display: block;
		}
		#cameraFloatingDialog > div.previewContainer.snapshotPreview > video {
			display: none;
		}
		#cameraFloatingDialog > div.previewContainer.snapshotPreview > div.actions > button.captureButton {
			display: none;
		}
		#cameraFloatingDialog > div.previewContainer.snapshotPreview > div.actions > button.retakeButton {
			display: inline-block;
		}

/* ----- TAsset2 quick hacks to give SubjectAssets in the same <ul> as InspectionAssets a special border */
ul.assetsList > li.secondaryAssetList {
	outline: 10px solid white;
	outline-color: #1356b4;
	outline-color: var(--color-accent);
}

.emoji-align{
	vertical-align: text-top
}

div.assetsListOuter > div.uploadStatus {
	display: none;
	align-items: center;
	justify-content: space-between;
	gap: 0.5em;
	padding: 4px 8px;
	border-radius: 6px;
	background-color: #ffe6e6;
	color: #a94442;
	font-size: 0.85em;
	font-weight: 500;
	box-shadow: 0 1px 3px rgba(0,0,0,0.1);
	position: relative;
}


/* This stylesheet is for the popup/hover controls on each Asset <li>, not the controls elsewhere in the AssetList. */

ul.assetsList > li .controls {
	position: absolute;
	/*
	bottom: 0;
	left: 0;
	right: 0;
	*/
	bottom: -35px;

	/* Old black look: */
	/*
	background-color: rgba( 0, 0, 0, 0.5 );
	*/
	/* New white look, same as InspectionItemAssetMenu: */
	background-color: #f9f9f9;
	background-color: var(--color-offwhite);

	box-shadow: 3px 3px  8px     rgba( 0, 0, 0, 0.2 );
	box-shadow: 6px 6px 30px 0px rgba( 0, 0, 0, 0.3 );

	border: 1px solid black;
	border: 1px solid var(--color-accent);
	border-radius: 7px;

	z-index: 15;
	z-index: 200;/* <-- Need to raise it from 15 to 200 because elements with z-index: 100+ get in the way (TODO: Perhaps use the StaticAssets T4 to print-out a listing of all defined z-indexes in CSS) and warn when any listed style-rules might get overlapped?) */

	display: flex;
	justify-content: space-around;
	padding: 0.25em;

	opacity: 1;
	transition: opacity 0.2s;
}
ul.assetsList > li .controls.upper {
	top: -35px;
	bottom: auto;
}
ul.assetsList > li .controls.lower {
	top: auto;
	bottom: -35px;
}

ul.assetsList:not(:hover) > li .controls {
	display: none;
}
ul.assetsList > li:not(:hover):not(.itemImageMenuOpen) .controls {
	opacity: 0;
	/*pointer-events: none;*/
	z-index: 5;
}
ul.assetsList > li .controls:focus-within {
	opacity: 1 !important;
	z-index: 16 !important;
}
@supports ( backdrop-filter: blur(10px) ) {
	ul.assetsList > li .controls {
		backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}
@supports ( -webkit-backdrop-filter: blur(10px) ) {
	ul.assetsList > li .controls {
		-webkit-backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}

	ul.assetsList > li .controls > a,
	ul.assetsList > li .controls > label,
	ul.assetsList > li .controls > button {
		-webkit-appearance: none;
		text-decoration: none;
		/*padding: 0.25em 0.5em;*/
		margin: 0.25em;


		border-radius: 3px;

		/* Old black look: */
		/*
		background-color: transparent;
		border: 1px solid white;
		color: white;
		*/
		cursor: pointer;

		font-size: inherit;
		font-weight: inherit;
		font-family: inherit;
		line-height: inherit;
		flex-basis: 3em;
		/*height: 3em;*/
		box-sizing: border-box;

		background-size: contain;
		background-repeat: no-repeat;
		background-position: center center;
	}

	ul.assetsList > li .controls > select {
		height: 27px; /* HACK: Chrome seems to set a default height that's waaaay too tall and explicit `padding: 0;` really doesn't help much. */
		font-size: 11pt;
		border-radius: 3px;
		padding: 0;
		box-sizing: border-box;
		align-self: center;
	}

	ul.assetsList > li .controls > a > span,
	ul.assetsList > li .controls > label > span,
	ul.assetsList > li .controls > button > span {
		/*display: none;*/
	}

	.hasMenuOpen::after {
		/* Contains the Unicode "countersink" symbol which looks like a downward pointing arrow - just needs a bit of nudging to look good: */
		content: '⌵';
		display: inline-block; /* `transform:` cannot be used on `inline` elements. */
		transition: transform 0.2s;
		font-size: 18px;
		margin: -10px 2px 0 2px;
	}
	.itemImageMenuOpen .hasMenuOpen::after {
		transform: translateY(3px) rotate(-180deg); /* +180 for clockwise, -180deg for counter-clockwise: https://stackoverflow.com/questions/4072869/how-to-determine-direction-of-rotation-in-css3-transitions */
	}

	ul.assetsList > li .controls > a:hover,
	ul.assetsList > li .controls > label:hover,
	ul.assetsList > li .controls > button:hover {
		background-color: black;
		color: white;
	}

		/* Visibility: */
		ul.assetsList > li > input.image-visibility {
			display: none;
		}
		ul.assetsList > li > input.image-visibility:not(:checked) ~ a.imageLink::before {
			content: 'Hidden';
			position: absolute;
			right: 0;
			z-index: 10;
			padding: 0.25em 0.5em;
			margin: 0.5em;
			font-size: 120%;
			color: white;
			border-radius: 5px;
			background-color: rgba( 0, 0, 0, 0.5 );
			display: inline;
		}
			ul.assetsList > li > input.image-visibility:not(:checked) ~ a.imageLink > img {
				opacity: 0.3;
				transition: opacity 0.2s;
			}
			ul.assetsList > li:hover > input.image-visibility:not(:checked) ~ a.imageLink > img {
				opacity: 1.0;
				transition: opacity 0.2s;
			}

div.customerFields {
	display: contents;
}

div.customerFields .field.customerNames,
div.customerFields .field.companyName {
	box-sizing: content-box;
	max-height: 60px; /* Defaults to 14px (margin-top), 50px (content height), 14px (margin-bottom) == 78px total. */
	transition:
		margin 0.2s,
		opacity 0.2s,
		max-height 0.2s;
}

table tbody.inspectionLifetime {
}
	table tbody.inspectionLifetime span.titleHelp {
		text-decoration: none;
		cursor: default;
	}
		table tbody.inspectionLifetime span.titleHelp::before {
			display: none;
		}

		table tbody.inspectionLifetime > tr > td {
			/* Prevent line-breaks inside timeline lines: */
			white-space: nowrap;
		}

		table tbody.inspectionLifetime span[data-emoji] {
			display: inline-block;
			margin-left: 0.5em;
		}


/* Inspection Details `<table class="inspectionDetailsTable inspectionItemsCounts"` */
table.inspectionDetailsTable.inspectionItemsCounts,
table.inspectionDetailsTable.inspectionResultsCounts {
	background-color: transparent !important;
}
	table.inspectionDetailsTable.inspectionItemsCounts   > thead > tr > th,
	table.inspectionDetailsTable.inspectionResultsCounts > thead > tr > th {
		background-color   : #fafafa;
		background-color   : var(--color-container0);
		background-position: center center;
		background-repeat  : no-repeat;
		background-size    : 20px;
	}
	table.inspectionDetailsTable.inspectionItemsCounts   > thead > tr > th {
	}
	table.inspectionDetailsTable.inspectionResultsCounts > thead > tr > th {
		font-size: 0;
		height: 24px;
	}

table.inspectionDetailsTable > thead > tr {
	font-size: 80%;
}
	table.microTable table.inspectionDetailsTable > thead > tr > th {
		position: relative;
		top: auto;
		right: auto;
		bottom: auto;
		left: auto;
	}
		table.inspectionDetailsTable > thead > tr > th > abbr {
			position: absolute !important;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;

			z-index: 110;
		}
			table.inspectionDetailsTable > thead > tr > th > abbr[data-title]::before {
				font-size: 9pt;
				z-index: 111; /* Argh, this doesn't work... but we can work-around it with this cunning trick: */
				bottom: 28px;
			}

			/* The timeline does dominate the view somewhat, so make the text smaller. */
			table.microTable > tbody.inspectionLifetime > * {
				font-size: smaller; /* `smaller` is the relative unit, which is fine. Just don't use `small` (which is absolute) */
			}

table.inspectionDetailsTable.inspectionItemsCounts > thead > tr > th.itemsRequired {
	background-image: url("/images/Results/Required_Red.svg");
	background-image: var(--image-required);
	background-size: 16px;
	font-size: 0;
}
table.inspectionDetailsTable.inspectionItemsCounts > thead > tr > th.itemsInvalid {
	background-image: url("/images/Results/Exclamation_Red.svg");
	background-image: var(--image-invalid);
	background-size: 16px;
	font-size: 0;
}
table.inspectionDetailsTable.inspectionItemsCounts > thead > tr > th.itemsChecked {
	background-image: url("/images/Results/Checked.svg");
	background-image: var(--image-checked);
	background-size: 16px;
	font-size: 0;
}
/*
table.inspectionDetailsTable > thead > tr > th.itemsRecs {
	background-image: url("/images/Results/Recs.svg");
	background-image: var(--image-recs);
}
table.inspectionDetailsTable > thead > tr > th.itemsRecs:hover {
	/ * Don't show this to non-Anglophone users, the gesture means to cuckold, apparently: https://en.wikipedia.org/wiki/Sign_of_the_horns * /
	background-image: url("/images/Results/Recs-EasterEgg.svg");
	background-image: var(--image-recs-easter-egg);
}
*/
/* Actually, text looks better than a small detailed icon. */
table.inspectionDetailsTable > thead > tr > th.itemsRecs,
table.inspectionDetailsTable > thead > tr > th.itemsRecs > abbr,
table.inspectionDetailsTable > thead > tr > th.itemsPriority,
table.inspectionDetailsTable > thead > tr > th.itemsPriority > abbr {
	font-size: inherit;
	position: static !important;
}
table.inspectionDetailsTable > thead > tr > th.itemsRecs,
table.inspectionDetailsTable > thead > tr > th.itemsPriority  {
	padding: 0;
}
table.inspectionDetailsTable > thead > tr > th.itemsRecs > abbr::before,
table.inspectionDetailsTable > thead > tr > th.itemsPriority > abbr::before {
	bottom: auto;
}

	table.inspectionResultsCounts > thead > tr > th.itemNota {
		background-image: url("/images/Results/Result_NA.svg");
		background-image: var(--image-nota);
	}
	table.inspectionResultsCounts > thead > tr > th.itemPass {
		background-image: url("/images/Results/Result_Pass.svg");
		background-image: var(--image-pass);
	}
	table.inspectionResultsCounts > thead > tr > th.itemNotes {
		background-image: url("/images/Results/Result_Notes.svg");
		background-image: var(--image-notes);
	}
	table.inspectionResultsCounts > thead > tr > th.itemWarn {
		background-image: url("/images/Results/Result_Warning.svg");
		background-image: var(--image-warn);
	}
	table.inspectionResultsCounts > thead > tr > th.itemFail {
		background-image: url("/images/Results/Result_Fail.svg");
		background-image: var(--image-fail);
	}


div.inspectionImageAssignmentMenu,
div.inspectionImageAssignmentMenu > ul > li > ul {

	position: absolute;
	top: 100%; /* So the top edge is at the same y-coord as the bottom edge of its position container. */

	background-color: #f9f9f9;
	background-color: var(--color-offwhite);

	box-shadow: 3px 3px  8px     rgba( 0, 0, 0, 0.2 );
	box-shadow: 6px 6px 30px 0px rgba( 0, 0, 0, 0.3 );

	padding: 0.25em;

	border: 1px solid black;
	border: 1px solid var(--color-accent);
	border-radius: 7px;

	user-select: none;
	-ms-user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;

	max-height: 80vh;
	/*overflow: auto;*/
}
	@supports ( backdrop-filter: blur(10px) ) {
		div.inspectionImageAssignmentMenu {
			backdrop-filter: blur(10px);
			background-color: var(--color-offwhite-08);
		}
		div.inspectionImageAssignmentMenu > ul > li > ul {
/*			backdrop-filter: blur(10px); -- This doesn't work in Chrome for some reason.
			background-color: var(--color-offwhite-08); */
		}
	}
	@supports ( -webkit-backdrop-filter: blur(10px) ) {
		div.inspectionImageAssignmentMenu {
			-webkit-backdrop-filter: blur(10px);
			background-color: var(--color-offwhite-08);
		}
		div.inspectionImageAssignmentMenu > ul > li > ul {
/*			-webkit-backdrop-filter: blur(10px); -- Disabling it in Safari just-in-case it has the same bug as Chrome.
			background-color: var(--color-offwhite-08);*/
		}
	}

	div.inspectionImageAssignmentMenu {
		max-width: 250px;
		z-index: 200;
	}

	div.inspectionImageAssignmentMenu.open-bottom {
	}

	div.inspectionImageAssignmentMenu.open-bottom > ul > li > ul {
	}

	div.inspectionImageAssignmentMenu > ul > li > ul.open-tasks-growdown {
		top: -7px !important;
		bottom: auto !important;
	}

div.inspectionImageAssignmentMenu > p:first-child /* This contains the Inspection Type name */ {
    margin: 0.25em;
    text-align: center;
    font-weight: bold;
}
	.inspectionImageAssignmentMenu > p.warning {
		font-size: smaller;
		padding: 0 0.5em 0 0.5em;
		line-height: 1.4;
	}

div.inspectionImageAssignmentMenu li {
	padding: 0;
	margin: 0;
}

div.inspectionImageAssignmentMenu li > span,
div.inspectionImageAssignmentMenu li > label,
div.inspectionImageAssignmentMenu li > button {
	display: block;
	padding: 0.3em 0.5em; /* 0.25em is too narrow. */
	margin: 0.2em;
	border-radius: 5px;

	/* Undo unwanted <label> styles inherited from legacy stylesheets on open-new-inspection.aspx: */
	font-weight: normal;
	font-size: inherit;
	line-height: 20px /* apply same line-height to both span and label, the legacy stylesheet only sets it to one of them */;
}
div.inspectionImageAssignmentMenu li > button {
	/* Undo these: */
	border: none;
	font-size: 12.6px; /* HACK: What's the em size here? */

	box-sizing: border-box;
	width: 100%; /* Despite being `display: block;`, it didn't have implicit 100% width. Why? */
    text-align: left;

	background: none;
	color: black;
	color: var(--color-foreground);
	text-shadow: none;
	/* Grrr, it's got less spacing outside its right edge and I don't know why but it's okay for now. */

}

	div.inspectionImageAssignmentMenu li.open > span,
	div.inspectionImageAssignmentMenu li.open > label,
	div.inspectionImageAssignmentMenu li.open > button,
	div.inspectionImageAssignmentMenu li:hover > span,
	div.inspectionImageAssignmentMenu li:hover > label,
	div.inspectionImageAssignmentMenu li:hover > button {
		background-color: #1356b4;
		background-color: var(--color-accent);
		color: white;
		color: var(--color-accent-text);
	}

	div.inspectionImageAssignmentMenu > ul > li > span,
	div.inspectionImageAssignmentMenu li:hover > label,
	div.inspectionImageAssignmentMenu li:hover > button {
		cursor: pointer; /* Why on :hover? that's redundant... can't it go in the prev rule? */
	}

	div.inspectionImageAssignmentMenu input[type=checkbox] {
		margin: 0 0.5em 0 0;
		position: relative;
		top: 2px; /* Apply slight vertical movement to align the checkbox with the text's middle-line (not the baseline). Unfortunately various `vertical-align:` attempts just don't work. */
	}

div.inspectionImageAssignmentMenu > ul {
	/* Categories <ul> */
	list-style: none;
	width: 100%;

	margin: 0;
	padding: 0;

	font-size: 90%; /* 13px instead of 14px */
}

	div.inspectionImageAssignmentMenu > ul > li {
		/* Category <li> */
		position: relative;
		padding: 0;
		margin: 0;
		/* TODO: Show arrow on right-edge (or left-edge). */
	}
		div.inspectionImageAssignmentMenu > ul > li > span {
			background-image: url("/images/Chevron-Right-Black.svg");
			background-image: var(--image-chevron-right-black);

			background-repeat: no-repeat;
			background-position: 98% center;
			background-size: 9px;

			padding-right: 2em;
			padding-left: 0.5em;
		}
		div.inspectionImageAssignmentMenu > ul > li.open > span,
		div.inspectionImageAssignmentMenu > ul > li:hover > span {
			background-image: url("/images/Chevron-Right-White.svg");
			background-image: var(--image-chevron-right-white);
		}

		div.inspectionImageAssignmentMenu.open-right > ul > li > span {
			background-image: url("/images/Chevron-Left-Black.svg");
			background-image: var(--image-chevron-left-black);

			background-position: left center;

			padding-right: 0.5em;
			padding-left: 2em;
		}
		div.inspectionImageAssignmentMenu.open-right > ul > li.open > span,
		div.inspectionImageAssignmentMenu.open-right > ul > li:hover > span {
			background-image: url("/images/Chevron-Left-White.svg");
			background-image: var(--image-chevron-left-white);
		}

		div.inspectionImageAssignmentMenu > ul > li > ul {
			/* Tasks <ul> */
			display: none;
			list-style: none;

			z-index: 201;
		}
/*
			div.inspectionImageAssignmentMenu > ul > li:hover > ul {
				display: block;
				top: -7px;
				max-width: 250px;
				width: 250px; / * I can't figure out how to make an absolutely-positioned child of an absolutely-positioned element to expand to max-width, otherwise it pretends it has `width: 0;` and breaks every word, but using `whitespace: nowrap` adds its own problems. * /
				left: calc( 100% - 20px );

				animation: 0.1s linear dummyAnim;
			}
*/
			div.inspectionImageAssignmentMenu > ul > li > ul.open {
				display: block;
				width: 100%;
				min-width: 200px; /* Otherwise a menu on the right-edge of the page will be squashed. */
				min-width: 250px; /* 250px looks better: less word-wrapping too. */
				overflow: auto;
			}

			div.inspectionImageAssignmentMenu > ul > li > ul.open.closing {
				animation: closeSubmenuAnim 0.2s ease-out;
				pointer-events: none;
/*				z-index: 199; / * So it animates *behind* the root menu * /
/*				z-index: -1;*/
			}

			@keyframes closeSubmenuAnim {
				from {
					opacity: 1;
					transform: scale(1);
				}
				to {
					opacity: 0;
					/*transform: scale(0.8) translateX(-200px);*/
					/*transform: scale(0.8);*/
				}
			}

			div.inspectionImageAssignmentMenu.open-right > ul > li > ul {
				left: auto;
				right: calc( 100% - 12px ); /* 12px to cover-up the chevron */
			}

			div.inspectionImageAssignmentMenu > ul > li > ul > li {
				/* Task <li> */
				cursor: pointer;
			}

div.inspectionImageAssignmentMenu > ul > li > ul > li.iiTodo,
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiTodo label { /* Repeating for the <label> coloroverride set by the legacy CSS, ugh: */
	/*color: #888;*/
}
	div.inspectionImageAssignmentMenu > ul > li > ul > liiiTodo:hover,
	div.inspectionImageAssignmentMenu > ul > li > ul > li.iiTodo:hover label { /* Repeating for the <label> coloroverride set by the legacy CSS, ugh: */
		color: white;
	}

div.inspectionImageAssignmentMenu > ul > li > ul > li.iiNote,
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiNote label {
	/*color: white; Notes */

}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiPass,
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiPass label {
	/*color: green;*/

}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiWarn,
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiWarn label {
	/*color: orange;*/

}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiFail,
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiFail label {
	/*color: red;*/

}

div.inspectionImageAssignmentMenu > ul > li > ul > li.iiTodo {

}

div.inspectionImageAssignmentMenu > ul > li > ul > li > label {
	background-repeat: no-repeat;
    background-position: 98% center;
    background-size: auto 18px;

	/* Outward-indent the first line of the text to make room for the checkbox, but add padding to compensate. */
    text-indent: -20px;
    padding-left: calc( 20px + 0.5em );

	padding-right: 20px;
}

div.inspectionImageAssignmentMenu > ul > li > ul > li.iiNote > label {
	background-image: url("/images/NounProject/noun_Information_488911.svg");
	background-image: var(--image-notes);
}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiPass > label {
	background-image: url("/images/NounProject/noun_CheckMark_835.svg");
	background-image: var(--image-pass);
}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiWarn > label {
	background-image: url("/images/NounProject/noun_Warning_488896.svg");
	background-image: var(--image-warn);
}
div.inspectionImageAssignmentMenu > ul > li > ul > li.iiFail > label {
	background-image: url("/images/NounProject/noun_fail_334199.svg");
	background-image: var(--image-fail);
}

@keyframes dummyAnim {
	0% {
		opacity: 1;
	}
	100% {
		opacity: 1;
	}
}

@media (pointer: coarse), (pointer: none) {

	div.inspectionImageAssignmentMenu li > span,
	div.inspectionImageAssignmentMenu li > label {
		padding-top   : 0.5em;
		padding-bottom: 0.5em;
	}
}
dialog {
	/* Replace Chrome's ugly default style: */
    border-radius: 15px;
	box-shadow: 5px 5px 20px 11px rgba(0,0,0,0.4);
	border: none;

	width: 50vw;
	box-sizing: border-box;
	padding: 1em; /* Note Chrome's default padding is 1em too - copied over in case some browsers are different. */

	/* And vertically center it by using auto margins with T,R,B,L:0 anchors: (Chrome defaults to margin: auto, left/right: 0 but not top/bottom: 0) */
	margin: auto;
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;

	transition: width 0.2s, height 0.2s;

	z-index: 50;

	background-color: white;
	background-color: var(--color-background);
	color: black;
	color: var(--color-foreground);
}
	@media screen and (prefers-color-scheme: dark) {
		:root:not(.lightMode) dialog {
			background-color: black; /* Black stands-out against the just-off-black of the page background, which is ideal, actually. */
		}
	}
	:root.darkMode dialog {
		background-color: black;
	}

	dialog[open] {
		animation: dialogOpening 0.2s;
		/* Animating for the dialog close event is non-trivial, see here: https://www.robsimpson.me/tutorials/getting-started-with-the-html5-dialog-element/ */
	}

	dialog[open].closing {
		animation: dialogClosing 0.2s;
	}

dialog:focus {
	outline: none;
}

dialog.fillViewport {

	width     : auto !important; /* To override .iframe, .image, .video's hardcoded width and height. */
	height    : auto !important;
	min-width : 0    !important; /* MDN says that 'none' should work but it doesn't in my experience, also the default value is '0' anyway. Also 'auto' means "set an automatic min-width", not "there is no min-width". */
	min-height: 0    !important;
	max-width : none !important;
	max-height: none !important;

	border-radius: 0;
	resize: none !important;
}

:root.hasFillViewportDialog {
	overflow: hidden;
	scrollbar-width: none; /* Firefox */
	-ms-overflow-style: none;
}
	:root.hasFillViewportDialog::-webkit-scrollbar {
		display: none;
		width: 0;
	}

dialog.iframe,
dialog.addableAssetsDialog,
dialog.laborPicker,
dialog.image {
	/* Until we get content-aware sizing using offscreen iframe loading, let's used a constrained size: */
    width: 50vw;
    height: 50vh;
	min-width: 640px;
    min-height: 480px;
	box-sizing: border-box;

	flex-direction: column;

	resize: both;
	overflow: hidden; /* When `overflow: visible;` (or visible because it's `auto`) then `resize: both;` doesn't take-effect. */
	border-bottom-right-radius: 0; /* So the resize grip is visible */
}
dialog.laborPicker {
	/* `width: 50vw` is a bit narrow... especially when the Audit page is opened in a popup. */
	width: 70vw;
}

dialog.addableAssetsDialog {
	width: 90vw;
	/*overflow: visible;*/
	display: flex;
	justify-content: stretch;

	box-shadow: rgba(0, 0, 0, 0.08) 0px 2px 4px 1px;
	box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 20px 20px; /* This one is more imposing and makes the popup stand-out more. */
}
dialog.addableAssetsDialog > div.addableAssets {
	flex-grow: 1;
	flex-shrink: 1;
	overflow: auto;
}
@supports ( backdrop-filter: blur(10px) ) {
	dialog.addableAssetsDialog {
		backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}
@supports ( -webkit-backdrop-filter: blur(10px) ) {
	dialog.addableAssetsDialog {
		-webkit-backdrop-filter: blur(10px);
		background-color: var(--color-offwhite-08);
	}
}

	dialog.image {
		width: 75vw;
		height: 75vh;
	}

	dialog.iframe[open],
	dialog.image[open] {
		display: flex;
	}

	dialog.notrans,
	dialog.iframe:active,
	dialog.addableAssetsDialog:active,
	dialog.laborPicker:active,
	dialog.image:active {
		transition: none; /* Disable transitions when the user is resizing the dialog, otherwise it really lags. */
		/*box-shadow: 5px 5px 20px 11px rgba(0,0,0,0.6); I thought a darker shadow when active would be a useful hint, but it actually doesn't work well at all. */
	}

	dialog.iframe              > header,
	dialog.addableAssetsDialog > header,
	dialog.laborPicker         > header,
	dialog.image               > header {
		display: flex;
		padding: 0;
		padding-bottom: 5px;
	}
		dialog.iframe              > header > h2,
		dialog.addableAssetsDialog > header > h2,
		dialog.laborPicker         > header > h2,
		dialog.image               > header > h2 {
			margin: 0;
			border: none; /* Hide the default bottom border */
		}

		dialog.iframe              > header > div.windowControls,
		dialog.addableAssetsDialog > header > div.windowControls,
		dialog.laborPicker         > header > div.windowControls,
		dialog.image               > header > div.windowControls {
			margin-left: auto;
			margin-right: 0;
		}

		dialog.disallowShrink:not(.allowShrink) > header > div.windowControls > button.popupSzToggleButton {
			display: none;
		}

		dialog > header > div.windowControls > button {
			/* See `.commands` styling below. */
		}

	dialog.image {
		background-color: black;
	}
		dialog.image > header {
			position: absolute;
			top: 1em;
			right: 1em;
			z-index: 11; /* The prev/next buttons have z-index: 10 btw. */
		}
			dialog.image > header > h2 {
				display: none;
			}

	dialog.iframe > iframe,
	dialog.image > div.imageWrapper > img,
	dialog.image > div.imageWrapper > video {
		width: 100%;
		flex-grow: 1;
		flex-shrink: 1;
		flex-basis: 100%;
		box-sizing: border-box;
		/*height: 100%;*/
		max-height: 100%;
		max-width: 100%;
		border: none;
		/* `width/height: -webkit-fit-content;` is recogized by Chrome, but disabled on iframes, even when the iframe loads content from the same origin. */
		border-radius: 10px; /* I'm surprised this works - and it doesn't seem to interfere with Windows scrollbars either. */

		/* hmmm,, [Esc] to close the iframe dialog doesn't seem to work when the iframe has focus - but if the dialog has focus it does work - I'll need to use postMessage or similar, methinks. */
	}

dialog::backdrop {
	-webkit-backdrop-filter: blur(2px); /* 2020-01-05: iOS Safari and macOS Safari still need vendor prefix. */
    backdrop-filter: blur(2px);
	background-color: rgba(0, 0, 0, 0.2);
	/*cursor: pointer; (this really doesn't feel right, unfortunately) */
}

dialog + .backdrop { /* Firefox, etc polyfill: https://github.com/GoogleChrome/dialog-polyfill/issues/115 - Also, as of 2020-04-27, Firefox doesn't support <dialog> natively, nor does it support backdrop-filter, so make the backdrop darker to compensate. */
	background-color: rgba(0, 0, 0, 0.5);
}

/* Nested popup rules: */
html.isPopup > body > dialog.fillViewport {
	padding: 0;
}

html.isPopup > body > dialog::backdrop {
	background-color: rgba( 255, 255, 255, 0.2); /* If it's a nested popup (e.g. Customer Lookup from New Inspectio Details popup), Use a white shade instead of grey/black so it blends with the white dialog border better. */
}
html.isPopup > body > dialog + .backdrop {
	background-color: rgba( 255, 255, 255, 0.2); /* If it's a nested popup (e.g. Customer Lookup from New Inspectio Details popup), Use a white shade instead of grey/black so it blends with the white dialog border better. */
}

@keyframes dialogOpening {
	from {
		transform: scale(0);
		filter: blur(10px);
		opacity: 0;
	}
	to {
		transform: scale(1);
		filter: blur(0);
		opacity: 1;
	}
}

@keyframes dialogClosing {
	from {
		transform: scale(1);
		filter: blur(0);
		opacity: 1;
	}
	to {
		transform: scale(0);
		filter: blur(10px);
		opacity: 0;
	}
}

/* The minifier in Mads' extension does not like @keyframes inside @media even though it's permitted by the CSS 3 grammar. Curiously the bundler is fine though. So we can't do this: * /
@media (prefers-reduced-motion: reduce) {
	@keyframes dialogOpening {
		from {
			opacity: 0;
		}
		to {
			opacity: 1;
		}
	}

	@keyframes dialogClosing {
		from {
			opacity: 1;
		}
		to {
			opacity: 0;
		}
	}
}
...and need to do this instead, grumble: */
@keyframes dialogOpening_nomotion {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes dialogClosing_nomotion {
	from { opacity: 1; }
	to   { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
	dialog[open] {
		animation: dialogOpening_nomotion 0.2s;
	}
	dialog[open].closing {
		animation: dialogClosing_nomotion 0.2s;
	}
}


/* IDEA: Clicking the background or a minimize button will "minimize" the dialog and remove the background, allowing the user to interact with the page and return to an incomplete dialog
	- but obviously this won't work when the user navigates - and how to transition from `dialog.showModal()` to just `dialog.show()` without it flashing due to having to have a hidden state for at least 1 frame?

	- can we add a titlebar element to the dialogs that allows the users to drag them around and resize them too?
	- I don't understand why people are referring to them as 'native' dialogs when they're very simple and really don't expose anything we can't do by-hand - it maybe saves at most a few lines of code *per project*.
*/

/* From: https://loading.io/css/
	<dialog><div class="loadingSpinner"></div></dialog>
*/
.loadingSpinner {
	display: inline-block;
	width: 80px;
	height: 80px;

	position: absolute;
	margin: auto;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
}
	.loadingSpinner::after {
		content: " ";
		display: block;
		width: 64px;
		height: 64px;
		margin: 8px;
		border-radius: 50%;
		border: 6px solid rgba(0, 0, 0, 0.2);
		border-color: rgba(0,0,0,0.4) transparent rgb(128, 128, 128) transparent;
		border-color: rgba(0,0,0,0.4) transparent var(--color-accent) transparent;
		animation: rotate360 1.2s linear infinite;
	}

/* Putting this rule here because the visual output is the same, even though this should be in Buttons2.css */
button.busy {
	position: relative;
	white-space: nowrap;
}
	button.busy::after {
		content: " ";
		display: inline-block;
		/* vertical-align: middle; */
		width: 16px;
		height: 16px;
		width: 24px;
		height: 24px;
		margin: 0;
		border-radius: 50%;
		border: 3px solid rgba(0, 0, 0, 0.2); /* Should be 2.25px to stay proportionate, let's see how this looks. */
		border-width: 4px;

		border-top-color: #1356b4;
		border-top-color: var(--color-accent);
		border-right-color: transparent;
		border-bottom-color: #1356b4;
		border-bottom-color: var(--color-accent);
		border-left-color: transparent;

		animation: rotate360 1.2s linear infinite;
		position: absolute;
		/* ...where did these 69px + 4px come from?
		left: 69px;
		top: 4px;
		*/

		margin-top: -8px;
		margin-left: -8px;
		margin-top: -12px;
		margin-left: -12px;
		top: 50%;
		left: 50%;
	}

/* Filmstrip view - this isn't technically specific to InspectionImages, so... */

dialog > div.imageWrapper {

	flex-basis: 100%;
	flex-grow: 1;
	flex-shrink: 10;

	display: flex;
	justify-content: center;

	overflow: hidden; /* <-- this is the important part, otherwise the layout just breaks. */
	position: relative;

	/* background-image is set on the div directly in PopupDialogs.ts */
	background-repeat: no-repeat;
	background-position: center center;
	background-size: contain;
	background-size: auto;

	transition: filter 0.5s;
}
dialog > div.imageWrapper.isLoading {
	filter: blur(10px);
}

	dialog > div.imageWrapper > img {
		object-fit: scale-down;
		max-height: 100%;
		max-width: 100%;
	}

	dialog > div.imageWrapper > span {
		/* Same as `ul.inspectionImages > li span.imageTitle` in InspectionImages.css */
		position: absolute;
		z-index: 10;
		padding: 0.25em 0.5em;
		margin: 0.5em;
		font-size: 120%;
		color: white;
		border-radius: 5px;
		background-color: rgba( 0, 0, 0, 0.5 );
	}
		dialog > div.imageWrapper > span:empty {
			display: none;
		}

	dialog > div.imageWrapper > button.prev,
	dialog > div.imageWrapper > button.next {
		position: absolute;
		width: 50px;
		top: 50px;
		top: 100px; /* Adding some headroom to allow video play-buttons in the bottom-left-corner to be clickable. */
		bottom: 0;
		bottom: 100px;
		z-index: 10;

		font-size: 36pt;
		color: white;
		border-color: transparent;
		background-color: transparent;
		text-shadow: 1px 1px 3px black;
		border-radius: 7px;
		box-shadow: none;
	}
		dialog > div.imageWrapper > button:disabled {
			display: none;
		}
		dialog > div.imageWrapper > button:hover {
			background-color: rgba( 50, 50, 50, 0.8 );
			filter: blur( 0.2 );
		}
		dialog > div.imageWrapper > button.prev {
			left: 0;
		}
		dialog > div.imageWrapper > button.next {
			right: 0;
		}

	dialog > div.imageWrapper > button.editButton {
		color: white;
		border-color: transparent;
		/*background-color: rgba( 50, 50, 50, 0.8 );*/

		position: absolute;
		top: 0;
		left: 0;
		z-index: 11;

		font-size: larger;
	}

	/* When div.commands is a child of the dialog: */
	dialog > header > div.commands,
	dialog > div.commands {
		display: flex;
		justify-content: space-between;
		/*width: 1%; <-- Where did this come from? */
		margin: 0;
		margin-left: auto;
	}

	/* When div.commands need to overlay the image: */
	dialog > div.imageWrapper > div.commands {
		display: flex;
		justify-content: flex-start;
		margin: 0;

		position: absolute;
		top: 0;
		left: 0;
	}

	dialog div.commands > button {
		margin: 0 0.55em;
	}

dialog > ul.filmstrip {
	/*
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	*/
	flex-basis: 150px;
	flex-grow: 0;
	flex-shrink: 0;
}

ul.filmstrip {

	list-style: none;
    padding: 0;
    margin: 0;
    display: flex; /* TODO: Change this to `display: grid;` once I figure out how automatic columns work. */
    align-items: center;
    /* overflow-x: auto; */
    justify-content: flex-start;

	flex-wrap: wrap;

	user-select: none;
	-ms-user-select: none;
	-webkit-user-select: none;
	-moz-user-select: none;
}
	ul.filmstrip > li {
		flex-shrink: 1;
		flex-basis: 50px; /* weird, why is this not working? */
		flex-grow: 1;

		margin: 0.25em;
		border: 3px solid transparent;
		border-radius: 5px;

		padding: 0;
		position: relative;
		transition: border-color 0.2s;

		min-width: 50px;
		min-height: 50px;
		max-width: 50px;
		max-height: 50px;
	}
	ul.filmstrip > li:hover {
		border-color: rgba( 255, 255, 255, 1.0 );
		/*transition: border-color 0.2s; No transition to hover state, only on return to default state. */
	}
	ul.filmstrip > li.active {
		border-color: #1356b4;
		border-color: var(--color-accent);
		/*transition: border-color 0.2s; No transition to hover state, only on return to default state. */
	}

		ul.filmstrip > li > span {
			/* Title */
			display: none;
		}
			ul.filmstrip > li:hover > span:not(:empty) {
				display: block;
				position: absolute;
				top: -50px;

				white-space: nowrap;

				z-index: 10;
				padding: 0.25em 0.5em;
				margin: 0.5em;
				font-size: 120%;
				color: white;
				border-radius: 5px;
				background-color: rgba( 0, 0, 0, 0.5 );
			}
			ul.filmstrip > li:last-child:hover > span:not(:empty) {
				right: 0;
			}

		ul.filmstrip > li > img {
			display: block;
			width: 100%;
			height: 100%;
			min-width: 50px;
			min-height: 50px;
			max-width: 50px; /* 50px works better than 150px until we get `display: grid` working. */
			max-height: 50px;
			cursor: pointer;

			object-fit: contain;
		}
		/*ul.filmstrip > li > img:hover {
			outline: 2px solid white;
		}*/
		/* can't use `img::after`, boo! https://stackoverflow.com/questions/5843035/does-before-not-work-on-img-elements */
		/*ul.filmstrip > li > img::after {*/
		/*
		ul.filmstrip > li:hover::after {
			content: ' ';
			display: block;
			position: absolute;
			top: 0;
			right: 0;
			bottom: 0;
			left: 0;

			box-shadow: 0 0 3px white;
			cursor: pointer;
		}*/

/* Image-Editor stuff - maybe move to its own stylesheet file? */
div.imageEditorWrapper {
	position: fixed;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 200;

	background-color: #666;
}
	div.imageEditorWrapper > iframe {
		height: 100%;
		width: 100%;
		border: none;

		height: 100%;
		width: 100%;
	}

div.imageEditorWrapper.loading {
	animation: 1s ease-in imageEditorIntroPart1;
	/*`opacity: 1` when the intro animation ends*/
}
	div.imageEditorWrapper.loading > iframe {
		/*visibility: hidden;*/
	}

div.imageEditorWrapper.loaded {
	opacity: 1;
/*	animation: 0.5s ease-in imageEditorIntroPart2;*/
}
	div.imageEditorWrapper.loaded > iframe {
		visibility: visible;
/*		animation: 0.5s ease-in imageEditorIntroPart3;*/
	}

@keyframes imageEditorIntroPart1 {
	from {
		opacity: 0;
		transform: scale(0);
	}
	to {
		opacity: 1;
		transform: scale(1);
	}
}

@keyframes imageEditorIntroPart1_nomotion {
	from { opacity: 0; }
	to   { opacity: 1; }
}

@keyframes imageEditorIntroPart2 {
	from {
		opacity: 0.5;
	}
	to {
		opacity: 1;
	}
}

@keyframes imageEditorIntroPart3 {
	from {
		opacity: 0;
	}
	to {
		opacity: 1;
	}
}

@media (prefers-reduced-motion: reduce) {
	div.imageEditorWrapper.loading {
		animation: 1s ease-in imageEditorIntroPart1_nomotion;
	}
}


/* This is in Main.css
html:root.isPopup > body > div#mainWrapper > main > section.pageHeader:first-child {
	position: sticky;
	left: 0;
	top: 0;
	right: 0;

	z-index: 11;
}
*/

/* Original concept + style: zero-width container with abs-positioned circles so it doesn't affect page layout at all, albiet but might overlap other stuff. */
/*
span.otherUsersSpan {
	position: relative;
	user-select: none;
	-moz-user-select: none;
	-webkit-user-select: none;
	-ms-user-select: none;

	height: 24px;
}
	span.otherUser {
		position: absolute;
		top: 0;
		left: 0;

		display: block;
		opacity: 1;

		border: 1px solid red;
		background-color: white;

		pointer-events: none;
	}
	span.otherUser:hover {
		/ *opacity: 0.8;* /
	}

	span.otherUser:nth-child(2) {
		left: -10px;
	}
	span.otherUser:nth-child(3) {
		left: -20px;
	}
	span.otherUser:nth-child(4) {
		left: -30px;
	}
	span.otherUser:nth-child(5) {
		left: -40px;
	}
	span.otherUser:nth-child(6) {
		left: -50px;
	}

/ * Position hacks for now: * /
#checklistSection h3 > label > span.otherUsersSpan {
	margin-right: 8em;
}
	#checklistSection h3 > label > span.otherUsersSpan > span[data-user-id] {

	}
*/

/* New layout: flex, and yes, it can take up space in the document: */
span.otherUsersSpan {
	display: inline-flex;

	max-width: 100px;

	height: 24px;

	overflow-wrap: normal; /* This is because Chat.css (and maybe other stylesheets) sets `overflow-wrap: anywhere` which breaks (har-har) otherUsersSpan */
}
	.otherUsersSpan:hover > span.otherUser {
	}
	.otherUsersSpan > span.otherUser {
		display: inline-block;
		width: 24px;
		height: 24px;
		margin-left: -10px;
	}
	/*
	.otherUsersSpan > span.otherUser {
		box-shadow: 0px 0px 5px 1px #1356b4;
		box-shadow: 0px 0px 5px 1px var(--color-accent);
	}
	*/
	/* Need to use the box-shadow with the .userInitials or userAvatar because of the border-radius. */

	.otherUsersSpan > span.otherUser.inspectionPage_3 .userInitials,
	.otherUsersSpan > span.otherUser.inspectionPage_3 .userAvatar {
		/* Checklist page, blue: */
		box-shadow: 0px 0px 5px 1px blue;
	}
	.otherUsersSpan > span.otherUser.inspectionPage_4 .userInitials,
	.otherUsersSpan > span.otherUser.inspectionPage_4 .userAvatar {
		/* Audit page, red: */
		box-shadow: 0px 0px 5px 1px red;
	}
	.otherUsersSpan > span.otherUser.inspectionPage_5 .userInitials,
	.otherUsersSpan > span.otherUser.inspectionPage_5 .userAvatar {
		/* Report page, green: */
		box-shadow: 0px 0px 5px 1px green;
	}

span.userInitials {
	display: inline-block;
	width: 24px;
	height: 24px;
	line-height: normal;

	overflow: hidden;
	overflow-wrap: normal; /* This is because Chat.css (and maybe other stylesheets) sets `overflow-wrap: anywhere` which breaks (har-har) otherUsersSpan */

	color: white;
	font-size: large;
	font-weight: bold;
	border-radius: 12px; /* Circle: border-radius = height/2 */
	background-color: #bbb;
	cursor: default; /* So it isn't the I-beam, but how do we allow any `pointer` to be inherited? */
}
/* https://www.colourlovers.com/palette/4772460/Blocks_With_Colour */
/* https://www.colourlovers.com/palette/4772456/Full_Of_Colours */
/* Not using these any more as user-identity-hash-based colors are more useful to people because they're consistent between page-loads.
span.otherUser.conref1 span.userInitials {
	background-color: #88C87E;
	color: white;
}
span.otherUser.conref2 span.userInitials {
	background-color: #E6D932;
	color: black;
}
span.otherUser.conref3 span.userInitials {
	background-color: #883470;
	color: white;
}
span.otherUser.conref4 span.userInitials {
	background-color: #338DFB;
	color: white;
}
span.otherUser.conref5 span.userInitials {
	background-color: #347B75;
	color: white;
}
*/

span.otherUser span.displayName {
	display: none;
}

#chatSection > section.pageHeader {
	/* It's a bit uglier, but still a lot better than the ugly wrapping of the Shop Chat whenn the main content area can't shrink any further: */
	flex-wrap: nowrap;
	overflow: hidden;
}
	#chatSection > .pageHeader .actions {
	}
	#chatSection > .pageHeader > ul.actions > li:last-child {
		margin-right: 0;
	}

	#chatSection > .pageHeader .quickSearch {
		display: none;
	}

#chatSection.offline {
	/*opacity: 0.8;*/
}
	#chatSection.offline section.pageHeader h2 {

	}
	#chatSection.offline {
		--color-accent: #999; /* lol, we can do this? */
	}

	#chatSection.offline .connectionStatus::after {
		display: inline;
		margin-left: auto;
		content: 'Status: Offline';
	}

	#chatSection.connecting .connectionStatus::after {
		display: inline;
		margin-left: auto;
		content: 'Status: Connecting...';
	}
	#chatSection.connected .connectionStatus::after {
		display: inline;
		margin-left: auto;
		content: 'Status: Connected';
	}

#chatSection.loading {
	cursor: wait;
}

/* -------- */
/*
	Chat area modes:

	.top
	.side
	.top-expanded
	.side-wide
	.side-float

	When viewport smaller than 1270px: only use .top and .top-expanded

	Hide userlist in mobile, there's no room for it, nor any need, imo.
*/



#chatContentSection .chatMessageList {
	transition: height 0.2s;
}

@media screen and ( max-width: 1270px ) {
	#chatContentSection {
		display: grid;
		grid-template-columns: 1fr 25vw;
		grid-template-rows   : auto min-content;
		gap: 0.5em 0.5em;
	}
		#chatContentSection #chatUserList {
			grid-column-start: 2;
			grid-column-end  : 3;
			grid-row-start   : 1;
			grid-row-end     : 2;
		}
		#chatContentSection .chatMessageList {
			grid-column-start: 1;
			grid-column-end  : 2;
			grid-row-start   : 1;
			grid-row-end     : 2;
		}
		#chatContentSection > #chatComposeArea {
			grid-column-start: 1;
			grid-column-end  : 3;
			grid-row-start   : 2;
			grid-row-end     : 3;
		}

	#chatEmbiggen:not(:checked) ~ #chatContentSection .chatMessageList {
		height: 20vh;
		min-height: 10em;
		min-height: 10lh; /* 2020-12-02: No-one supports `lh` and `rlh` yet. */
	}
	#chatEmbiggen:checked ~ #chatContentSection .chatMessageList {
		height: 60vh;
	}
}
@media screen and ( min-width: 1271px ) {
	:root.chatTop #chatContentSection {
		display: grid;
		grid-template-columns: 1fr 25vw;
		grid-template-rows   : auto min-content;
		gap: 0.5em 0.5em;
	}
		:root.chatTop #chatContentSection #chatUserList {
			grid-column-start: 2;
			grid-column-end  : 3;
			grid-row-start   : 1;
			grid-row-end     : 2;
		}
		:root.chatTop #chatContentSection .chatMessageList {
			grid-column-start: 1;
			grid-column-end  : 2;
			grid-row-start   : 1;
			grid-row-end     : 2;
		}
		:root.chatTop #chatContentSection > #chatComposeArea {
			grid-column-start: 1;
			grid-column-end  : 3;
			grid-row-start   : 2;
			grid-row-end     : 3;
		}

	:root.chatTop #chatEmbiggen:not(:checked) ~ #chatContentSection .chatMessageList {
		height: 20vh;
		min-height: 10em;
		min-height: 10lh; /* 2020-12-02: No-one supports `lh` and `rlh` yet. */
	}
	:root.chatTop #chatEmbiggen:checked ~ #chatContentSection .chatMessageList {
		height: 60vh;
	}
}

@media screen and ( min-width: 1271px ) {

	:root:not(.chatTop) #chatSection {
		/*height: 100%; This doesn't work... I want the chatSection's height to match the <main> element (i.e. have the lowest priority), but how? */
		min-width: 15em;
	}

	:root:not(.chatTop) #chatSection .onlyNarrow {
		display: none;
	}

	:root:not(.chatTop) #chatContentSection {
		display: flex;
		flex-direction: column;
		gap: 0.5em;

		/*
		height: calc( 100vh - 0.5em );
		position: sticky;
		top: 0.25em;
		bottom: 0.25em;
		*/

		/*
		position: sticky;
		top: 0;
		bottom: 0;
		*/
		/*outline: 1px solid blue;*/
	}
		:root:not(.chatTop) #chatContentSection #chatUserList {
			max-height: 25vh;
		}
		:root:not(.chatTop) #chatContentSection .chatMessageList {
			max-height: 80vh; /* This will do for now... */
			max-height: 60vh;
			/*
			position: sticky;
			top: 0;
			height: 80vh;

			justify-self: flex-start;
			*/
		}

	:root.chatTop #chatEmbiggen ~ #chatContentSection {
		display: grid;
		grid-template-columns: 1fr 25vw;
		grid-template-rows   : auto 1fr;
		gap: 0.5em 0.5em;

		transition: height 0.2s;
	}
		:root.chatTop #chatEmbiggen ~ #chatContentSection .chatMessageList {

		}
}

@media screen and ( min-width: 1271px ) and ( max-width: 1650px ) {

	:root:not(.chatTop) .chatMessageList .chatMessage > p,
	:root:not(.chatTop) .chatMessageList .eventMessage > p {
		font-size: smaller;
	}
}

/* -------- */

#chatUserList,
.chatMessageList {
	border: 1px solid #ccc;
	border-color: var(--color-table-act-border);
	border-radius: 5px;
	box-shadow: rgba(0, 0, 0, 0.04) 0px 2px 4px 1px;

	overflow: auto;
	margin-top: 0.5em;
	margin-bottom: 0.5em;
}
.chatMessageList {
	overflow: auto;
}
	.chatMessageList .chatSeparator {
		font-size: small;
		color: #999;
		margin-top: 1em;
		border-top: 1px solid #aaa;
		display: flex;
	}
		.chatMessageList .chatSeparator time {
			display: inline-block;
			margin: -1em auto 0 auto;
			background-color: white;
			padding: 0.25em;
		}

	/* .message ( .chatMessage | .eventMessage ): */
	.chatMessageList .message {
		display: flex;
		align-items: baseline;
		margin: 0.25em 0.5em;

		position: relative;

		/*word-break: break-all; - Prefer `overflow-wrap` to `word-break` as word-break will break words that don't need to be wrapped, but overflow-wrap only breaks when necessary. */
		overflow-wrap: anywhere;
	}
		.chatMessageList .message > span.meta {
			visibility: hidden;
			position: absolute;
			right: 0;
			font-size: xx-small;
			color: #999;

			overflow-wrap: normal;
		}
		.chatMessageList .message:hover > span.meta {
			visibility: visible;
		}

		/* .chatMessage: */
		.chatMessageList .chatMessage > p {
			border-radius: 7px;
			padding: 0.25em 0.5em;
			margin: 0;

			max-width: 20em;
		}
		.chatMessageList .chatMessage:not(.mine) > p {
			background-color: #f7f7f7;
			background-color: var(--color-container1);
			color: black;
			color: var(--color-foreground);
		}
		.chatMessageList .chatMessage.mine > p {
			background-color: #1356b4;
			background-color: var(--color-accent);
			color: white;
			color: var(--color-accent-text);
		}

		/* Hide `.otherUser` in consecutive messages and make them more compact: */
		.chatMessageList .chatMessage.mine + .chatMessage.mine {
			margin-top: 0;
		}
			.chatMessageList .chatMessage.mine + .chatMessage.mine > p {
				border-top-left-radius: 0;
				border-top-right-radius: 0;
			}
			.chatMessageList .chatMessage.mine + .chatMessage.mine > span.otherUser {
				visibility: hidden;
				height: 1px;
				align-self: normal;
			}

		/* .eventMessage: */
		.chatMessageList .eventMessage > p {
			padding: 0.25em;
			margin: 0.25em;
			color: #7f7f7f; /* #7F is 50% grey so it should work in dark-mode and normal mode */
			max-width: 20em;
		}
		.chatMessageList .eventMessage:hover > p {
			color: black;
			color: var(--color-foreground);
		}

		.chatMessage .displayName {
			visibility: hidden;
		}
		.chatMessage:hover .displayName {
			position: absolute;
			top: -1.5em;
			display: inline;
			visibility: visible;

			background-color: white;
			background-color: var(--color-background);

			color: black;
			color: var(--color-foreground);

			padding: 0.25em 0.5em;
			border-radius: 7px;
			box-shadow: 2px 2px 4px 1px #00000024;
			box-shadow: 2px 2px 4px 1px var(--color-button-text-shad);
		}

/* -------- */

ul#chatUserList {
	list-style: none;
	padding: 0;

	/*
	margin-top: 0;
	margin-bottom: 0;
	*/
	margin-top: 0.5em;
	margin-bottom: 0.5em;

	overflow: auto;
}
	ul#chatUserList > li {
		margin: 0;
		padding: 0.25em 0.5em;
	}
		ul#chatUserList > li img.userAvatar,
		ul#chatUserList > li span.userInitials {
			vertical-align: middle;
		}
		ul#chatUserList > li .displayName {
			display: inline;
		}

/* -------- */

#chatSection #chatComposeArea {
	display: grid;
	grid-template-columns: 1fr min-content;
	grid-template-rows   : auto 1fr;
	row-gap: 0;
	column-gap: 0.5em;
}
	#chatSection #chatComposeArea > textarea {
		grid-column-start: 1;
		grid-column-end  : 2;
		grid-row-start   : 1;
		grid-row-end     : 2;
	}
	#chatSection #chatComposeArea > button {
		grid-column-start: 2;
		grid-column-end  : 3;
		grid-row-start   : 1;
		grid-row-end     : 2;
	}
	#chatSection #chatComposeArea > p {
		grid-column-start: 1;
		grid-column-end  : 3;
		grid-row-start   : 2;
		grid-row-end     : 3;

		margin: 0;
	}

/* */

#chatSection #chatComposeArea > textarea {
	box-sizing: border-box;
	margin: 0;
	resize: none;

	max-height: 10em;
	max-height: 10lh; /* 10 * line-height */
}

#chatSection #chatComposeArea > textarea {

	box-sizing: border-box;
	margin: 0;
	resize: vertical;
	width: 100%; /* <-- This is needed in Firefox, otherwise the <textarea> is sliiiightly too wide for the sidebar and pushes the Send button out. */

	border-radius: 5px;
	border: 1px solid #ccc;
	transition: background-color 0.1s, border 0.1s;
	box-shadow: none; /* Otherwise it gives the textarea soft edges which don't look good */
	font: inherit; /* For smaller font-sizes mainly. */

	background-color: rgba( 255, 255, 255, 0.5 );
}
#chatSection #chatComposeArea > textarea:hover {
	background-color: white;
	background-color: white;
	outline: none;
	border: 1px solid #999;
	transition: background-color 0.1s, border 0.1s;
}
#chatSection #chatComposeArea > textarea:focus {
	background-color: white;
	background-color: white;
	outline: none;
	border: 1px solid #999;
	transition: background-color 0.1s, border 0.1s;
}
#chatSection #chatComposeArea > textarea:active {
	background-color:  rgba( 249, 249, 249, 0.8 );
	background-color: var(--color-offwhite-08);
	outline: none;
	border: 1px solid #1462ce;
	border-color: var(--color-accent);
	transition: background-color 0.1s, border 0.1s;
	box-shadow: inset 0 0 5px 0px rgba(0,0,0,0.21);
}

/* -------- */

#chatSection #chatComposeArea > button {
	box-sizing: content-box;
	width: 24px;
	height: 24px;

	/* TODO: How to show the black version when the accent-color is too light? */
	background-size: contain;
	background-position: center center;
	background-repeat: no-repeat;
	background-image: url("/images/Actions/Send_White.svg");
	background-image: var(--image-send-white);
}
	#chatSection #chatComposeArea > button > span {
		display: none;
	}

.inspectionInfoSection {
	display: flex;
	flex-wrap: wrap;
}
.inspectionNotesSection {
}

.inspectionNotesSection > div.inspectionOdoNotesFields {
	display: grid;
	grid-template-rows: auto auto;

	/*
	<section class="inspectionNotesSection">
		<div class="inspectionOdoNotesFields">
			<div class="field vehicleOdoVinColor">
				[ <div class="subfield odoField" id="requiredOdoField"></div> | <div class="subfield odoField" id="optionalOdoField"></div> ]
				<div class="subfield vehicleVin"></div>
				<div class="subfield vehicleColor"></div>
			</div>
			<div class="field notes"></div>
			<div class="field notes"></div>
			<div class="field notes"></div>
		</div>
	</section>

	*/
}
@media screen and (max-width: 767px) {
	.inspectionNotesSection > div.inspectionOdoNotesFields {
		display: flex;
		flex-direction: column;
		flex-wrap: nowrap;
	}
}

	div.inspectionOdoNotesFields > div.field.vehicleOdoVinColor {
		grid-column-start: 1;
		grid-column-end: 2;
		grid-row-start: 1;
		grid-row-end: 2;
	}
	div.inspectionOdoNotesFields > div.field.subjectNotes {
		grid-column-start: 2;
		grid-column-end: 3;
		grid-row-start: 1;
		grid-row-end: 2;
	}
	div.inspectionOdoNotesFields > div.field.inspectionNotes {
		grid-column-start: 3;
		grid-column-end: 4;
		grid-row-start: 1;
		grid-row-end: 2;
	}

	div.inspectionOdoNotesFields > div.field > label > span,
	div.inspectionOdoNotesFields > div.field > label[for] {
		font-weight: bold;
	}
	div.inspectionOdoNotesFields > div.field {
		max-width: none;
		box-sizing: border-box;

		background-color: #f0f0f0;
		background-color: var(--color-container1);

		border-radius: 5px;
		margin: 0.5em;
		padding: 0.5em;

		font-size: 90%;
	}
	div.inspectionOdoNotesFields > div.field > label {
		display: flex;
		margin-bottom: 2px;
	}
		div.inspectionOdoNotesFields > div.field > label > span:not(.labelText) {
			display: block;
			margin-left: auto;
/*			font-size: 80%;*/
			align-self: center;
		}

	.field.vehicleOdoVinColor {
		position: relative;
	}
		.field.vehicleOdoVinColor > .subfield#requiredOdoField {
			margin-top: 1em; /* HACK: Make room for the absolutely-positioned `<label for>` below: */
		}
			.field.vehicleOdoVinColor > .subfield#requiredOdoField > label[for] {
				position: absolute;
				right: 0;
				top: 0;
				margin: 0.5em;
			}

		#requiredOdoField label[for="Header_Odometer"].required > span {
			display: inline-block;
			width: 15px;
			height: 15px;
			margin: 0.25em;
			overflow: hidden;
			font-size: 0;

			background-repeat: no-repeat;
			background-size: contain;
			background-image: url("/images/Results/Required_Red.svg");
			background-image: var(--image-required);
		}

.inspectionFieldsTiles {
	display: flex;
	flex-wrap: wrap;
}
	.inspectionFieldsTiles > .inspectionFieldsTilesGroup {
		display: contents;
	}

	.inspectionFieldsTiles > div:not(.inspectionFieldsTilesGroup),
	.inspectionFieldsTiles > .inspectionFieldsTilesGroup > div {
		flex-basis: 150px;
		flex-grow: 1;
		flex-shrink: 2;

		box-sizing: border-box;

		background-color: #f0f0f0;
		background-color: var(--color-container1);

		border-radius: 5px;
		margin: 0.5em;
		padding: 0.5em;

		font-size: 90%;
	}
	.inspectionFieldsTiles div[hidden] {
		display: none !important; /* just making sure, as `[hidden]` is very easy to accidentally override. */
	}

	.inspectionFieldsTiles > div.grow {
		flex-grow: 10;
	}
		.inspectionFieldsTiles > div > b {
			/* Uncomment this to make the square headings slightly more legible, but uses much more vertical space. */
			/*display: block;*/
		}
		.inspectionFieldsTiles .subjectSummary {
			flex-grow: 5;
		}

		.inspectionFieldsTiles > div.field {
			max-width: none;
		}
		.inspectionFieldsTiles > div.field > label {
			display: flex;
			margin-bottom: 2px;
		}
			.inspectionFieldsTiles > div.field > label > span:not(.labelText) {
				display: block;
				margin-left: auto;
/*				font-size: 80%;*/
				align-self: center;
			}
			.inspectionFieldsTiles > div.field > label > span:first-child {
			}

	.inspectionFieldsTiles div.odoField {
		/*
		min-width: 17em;
		max-width: 20em;
		flex-basis: 14em;
		*/
		flex-grow: 0;
	}
		.inspectionFieldsTiles #requiredOdoField > span#requiredOdoFieldLabel {
			display: flex;
			flex-direction: column;
			align-items: flex-start;
			/*
			display: flex;
			justify-content: space-between;
			align-items: center;
			align-items: baseline;
			position: relative;
			*/
		}
			.inspectionFieldsTiles #requiredOdoField > span#requiredOdoFieldLabel span.cut {
				display: contents; /* Otherwise spacing gets removed, I don't know why. */
			}
			.inspectionFieldsTiles #requiredOdoField > span#requiredOdoFieldLabel > label {
				margin-bottom: 0.25em;
			}
			.inspectionFieldsTiles #requiredOdoField > span#requiredOdoFieldLabel > label.trigger[for] {
				margin-bottom: 0.5em;
				/*
				margin-top: -6px;
				/ * margin-bottom: -11px; * /
				position: absolute;
				right: 0;
				*/
			}
		.inspectionFieldsTiles .odoField input[type=number] {
			/* The `size=""` attribute is not valid on `<input type="number" />`, but it is on other types, FYI. */
			width: 7em;
			text-align: right;
		}
		.inspectionFieldsTiles .odoField input[type=number],
		.inspectionFieldsTiles .odoField input[type=text] {
			font-size: 120%; /* To compensate for the `font-size: 90%` elsewhere */
		}
		.inspectionFieldsTiles .odoField input[type=number] {

		}


	.inspectionFieldsTiles > div.field > label > span.labelText {
		font-weight: bold;
	}

	.inspectionFieldsTiles > div.field > label.internal::after {
		float: none;
		margin-left: auto;
	}


/* HACK: */
.inspectionNotesSection.fauxChecklist .inspectionFieldsTiles > div  {
	flex-basis: auto;
}

label.odoUnitLabel {
}
label.odoUnitLabel:hover {
}
label.odoUnitLabel:active {
}
	/*
	label.odoUnitLabel > input[type=text] {
		appearance: none;
		-webkit-appearance: none;
		-moz-appearance: none;
		border: 1px solid transparent;
		background-color: transparent;

		width: 2em;
	}
	label.odoUnitLabel:hover > input[type=text] {
		border: 1px solid #a9a9a9;
		border-color: var(--color-control-border);
	}
	label.odoUnitLabel > input:active,
	label.odoUnitLabel > input:focus {
	}
	label.odoUnitLabel > input:focus-visible {
	}
	label.odoUnitLabel > input:not(:focus):not(:active) {
		cursor: pointer;
	}
	label.odoUnitLabel > input:placeholder-shown {
	}
	*/
	label.odoUnitLabel > input[type=text] {
		width: 2em;
	}
	label.odoUnitLabel > input::placeholder {
		font-size: 90%;
	}

div.subfield {
	margin-bottom: 0.5em; /* This also leaves enough gap for the `:focus-visible` outline to not by occluded by the next .subfield. */
}
div.subfield:last-child {
	margin-bottom: 0;
}
	div.subfield.odoField > label:first-child {
		display: none;
	}

span.odoInputAndUnitWrapper {
	display: flex;

}
	span.odoInputAndUnitWrapper > label.odoUnitLabel {
	}

div.subfield.odoField > div.odoValue,
div.subfield.vehicleVin {
	display: flex;
	flex-direction: row;
	align-items: baseline;
}
	div.subfield.odoField > div.odoValue > label:first-child,
	div.subfield.vehicleVin              > label:first-child {
		flex-basis: 3em;
/*		max-width: 3em; */
/*		min-width: 3em; */
		width: 3em;
	}
	div#requiredOdoField.subfield.odoField > div.odoValue > label:first-child {
		flex-basis: 4em;
		width: 4em;
	}

	div.subfield.odoField > div.odoValue > input[type=number] {
		flex-grow: 1;
	}

	div.subfield.odoField > div.odoExcuse {
		display: flex;
		flex-direction: column;
	}
		div.subfield.odoField > div.odoExcuse > input[type=text] {
			/*margin-left: 3em; <-- This doesn't work as-expected due to the font-size: on this <input/>, ahhh. */
			flex-grow: 1;
		}

	div.subfield.vehicleVin > input[type=text] {
		flex-grow: 1;
	}

div.subfield > .errors:empty {
	display: none;
}

div.subfield.vehicleColor {

}
	div.subfield.vehicleColor > label.checkboxLabel {
		display: flex;
		align-items: baseline;
	}
		div.subfield.vehicleColor > label.checkboxLabel > input[type=checkbox] {

		}

		div.subfield.vehicleColor > label.checkboxLabel > input[type=color] {
			transition: opacity, 0.2s, visibility, 0.2s;
			margin-right: auto;

			height: 20px;
			align-self: center;
		}
		div.subfield.vehicleColor > label.checkboxLabel > input[type=checkbox]:not(:checked) ~ input[type=color] {
			visibility: hidden;
			opacity: 0;
		}

		div.subfield.vehicleColor > label.checkboxLabel > input[type=color] {

		}
	div.subfield.vehicleColor > label {

	}

dialog.laborPicker {
	display: flex;
	flex-direction: column;
}

div.laborPicker {
	flex-shrink: 2;
	flex-grow: 2;

	display: flex;
	flex-direction: column;
	align-items: stretch;
	align-content: stretch;
	justify-content: flex-start;
	justify-content: stretch; /* <-- `justify-content: stretch` will grow elements with `height: auto;` (or `width: auto;` when in `flex-direction: row;`) */

/*	height: 500px; /* ...for now */

/*	resize: both; /* hmm? or only when in <dialog> - in which case it's the `dialog` that has `resize:`, not this div. */
}

/* ------- */

div.laborPicker > .laborPickerSearchBar {
}
	div.laborPicker > .laborPickerSearchBar > div {
		display: flex;
		align-items: baseline;
		gap: 0.5em;
	}
		div.laborPicker > .laborPickerSearchBar > div > label {
			display: contents; /* Does this break <label> clicking `for=""` */
		}
			div.laborPicker > .laborPickerSearchBar > div > label > span {
			}
			div.laborPicker > .laborPickerSearchBar > div > label > input[type=search] {
				flex-grow: 5;
				margin: 0.5em;
			}

		div.laborPicker > .laborPickerSearchBar > div > button {
		}


/* ------- */

div.laborPicker > .laborPickerColumns {
	/* As a flex-child of div.laborPicker: */
	flex-grow: 1;
	flex-shrink: 1;
	flex-basis: 100%; /* <-- Right? */
	flex-basis: 300px; /* <-- Nope, setting a px works perfectly, not a percentage - weird. */
	min-height: 0; /* This is necessary: https://stackoverflow.com/questions/43311943/prevent-content-from-expanding-grid-items */
	min-height: 200px; /* Methinks this is more sensible. */

	/* As a grid-parent of the `div.laborPickerColumns > div`: */
	display: grid;
	grid-template-columns: 1fr 1fr; /* 2x50% columns, right? */
	grid-template-columns: 1fr 2fr; /* nope. Categories don't need that much space. */
	grid-template-rows: 1fr;
	gap: 1em;
}
	div.laborPicker > .laborPickerColumns > div {
		overflow: auto;
	}

	div.laborPicker > .laborPickerColumns > div.laborPickerCategories {
		/* aaah, this is important: (but shouldn't auto-placement work too?) */
		grid-column-start: 1;
		grid-column-end: 2; /* Chrome says: "The display: block property prevents grid-column-end from having an effect. Try setting display to something other than block." - wat? */
		grid-row-start: 1;
		grid-row-end: 2;
	}
	div.laborPicker > .laborPickerColumns > div.laborPickerJobs {
		grid-column-start: 2;
		grid-column-end: 3;
		grid-row-start: 1;
		grid-row-end: 2;
	}

/* ----- */

.laborPickerColumns > div > table {
	width: 100%;
	border-collapse: collapse;

	font-size: 80%;
}
	.laborPickerColumns > div > table > thead {

	}
		.laborPickerColumns > div > table > thead > tr {

		}
			.laborPickerColumns > div > table > thead > tr > * {
				position: sticky;
				top: 0;
				/*background-color: white; /* TODO: Color-scheme color? */

				padding: 0.25em; /* Instead of 0.5em */
			}

	.laborPickerColumns > div > table > tbody {

	}
		.laborPickerColumns > div > table > tbody > tr {
			/* Use `scroll-margin-top` to ensure `scrollIntoView()` works despite the sticky <thead>. */
			scroll-margin-top: 21px;
			scroll-margin-top: calc( 1.5em + 0.5em ); /* Close approximation of the effective height of the <thead><tr><th> */
		}
			.laborPickerColumns > div > table > tbody > tr > * {

			}

		.laborPickerColumns > div > table > tbody > tr.laborPickerJobCategoryHeaderRow {
		}
			.laborPickerColumns > div > table > tbody > tr.laborPickerJobCategoryHeaderRow > * {
				position: sticky;
				top: 0;
/*				background-color: white; /* TODO: Color-scheme color? */
				background-color: rgb(177, 199, 230);
				background-color: var(--color-accent-light);
			}

		.laborPickerColumns > div > table > tbody > tr.laborPickerCategoryBookmark > * {
			cursor: pointer;
		}
		.laborPickerColumns > div > table > tbody > tr.laborPickerJobRow > * {
			cursor: pointer;
		}

/* ----- */

/* NOTE: Some styles for `dialog.laborPicker` are in PoupDialogs.css */

/*
dialog.laborPicker > header { -- actually, yes, let's use the default header.
	display: none;
}*/

dialog.laborPicker {
	display: flex;
	flex-direction: column;
}

dialog.laborPicker section.pageHeader > h3 {
	margin: 0;
}

dialog.laborPicker > header > div.windowControls.commands > button:not(.wndCtrl) {
	background-color: rgb(177, 199, 230);
	background-color: var(--color-accent-light);
}

/* ----- */
.motoVisualsPopup {
    background-color: #cccccc;
    width: 70em;
    max-height: 90vh;
    max-width: 50vw;
    z-index: 1000;
    overflow-y: scroll;
    resize: both;
    border: 3px solid var(--color-accent);
    border-radius: 7px;
    padding: 10px;
}

#motoVisualsSearch {
    display: flex;
    width: 90%;
    padding-bottom: 10px;
}

    #motoVisualsSearch label {
        font-weight: bold;
        margin-right: 10px;
    }

    #motoVisualsSearch input {
        flex: 1;
        padding: 5px;
    }

#motoVisualsPopupClose,
#motoVisualsVideoPopupClose {
    position: absolute;
    right: 15px;
    top: 5px;
    border-radius: 50%;
}

.motoVisualsPopup .results-container {
    max-height: 85vh;
    overflow-y: auto;
}

.motoVisualsPopup .results-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.motoVisualsPopup .result-item {
    display: flex;
    align-items: flex-start;
    padding: 10px;
    border-bottom: 1px solid var(--color-accent);
}

    .motoVisualsPopup .result-item:last-child {
        border-bottom: none;
    }

.motoVisualsPopup .result-number {
    margin-right: 10px;
    color: var(--color-foreground);
    font-size: 14px;
}

.motoVisualsPopup .result-content {
    display: flex;
    flex: 1;
    align-items: center;
    gap: 10px;
}

.motoVisualsPopup .result-text {
    flex: 1;
    color: var(--color-foreground);
}

    .motoVisualsPopup .result-text h3 {
        margin: 0 0 5px 0;
        font-size: 16px;
        border-bottom: none;
    }

    .motoVisualsPopup .result-text p {
        margin: 0 0 10px 0;
        font-size: 14px;
    }

.motoVisualsPopup .attach-button {
    padding: 5px 10px;
    background: var(--color-accent);
    border: none;
    border-radius: 4px;
    color: #fff;
    font-size: 14px;
    cursor: pointer;
}

    .motoVisualsPopup .attach-button:hover {
        background: var(--color-accent-dark);
    }

.motoVisualsPopup .result-thumbnail {
    position: relative;
    width: 100px;
    height: 60px;
}

    .motoVisualsPopup .result-thumbnail img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        border-radius: 4px;
    }

.motoVisualsPopup .play-icon {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 20px;
    color: #fff;
    opacity: 0.8;
}


#motoVisualsVideoDesc {
    text-overflow: ellipsis;
}

#motoVisualsVideo iframe {
    margin: 5px auto;
    border: 1px solid var(--color-accent);
    border-radius: 7px;
}


/*
Example usage:

	selector {
		background-image: url("/images/Logo/logoArrowOne.png");
		background-image: var(--image-logo-arrow);
	}

	selector {
		background-image: url("/images/UI/Chevron-Left-Black.svg");
		background-image: var(--image-chevron-left-black);
	}

	selector {
		background-image: url("/images/UI/Chevron-Left-White.svg");
		background-image: var(--image-chevron-left-white);
	}

	selector {
		background-image: url("/images/UI/Chevron-Right-Black.svg");
		background-image: var(--image-chevron-right-black);
	}

	selector {
		background-image: url("/images/UI/Chevron-Right-White.svg");
		background-image: var(--image-chevron-right-white);
	}

	selector {
		background-image: url("/images/UI/Chevron-Up-Black.svg");
		background-image: var(--image-chevron-up-black);
	}

	selector {
		background-image: url("/images/UI/Chevron-Up-White.svg");
		background-image: var(--image-chevron-up-white);
	}

	selector {
		background-image: url("/images/UI/Chevron-Down-Black.svg");
		background-image: var(--image-chevron-down-black);
	}

	selector {
		background-image: url("/images/UI/Chevron-Down-White.svg");
		background-image: var(--image-chevron-down-white);
	}

	selector {
		background-image: url("/images/UI/Snooze.svg");
		background-image: var(--image-snooze);
	}

	selector {
		background-image: url("/images/Inputs/Undefined.svg");
		background-image: var(--image-trigger-undefined);
	}

	selector {
		background-image: url("/images/Inputs/Radio-Black-Unchecked.svg");
		background-image: var(--image-radio-unchecked-black);
	}

	selector {
		background-image: url("/images/Inputs/Radio-Black-Checked.svg");
		background-image: var(--image-radio-checked-black);
	}

	selector {
		background-image: url("/images/Inputs/Checkbox_Black_Unchecked.svg");
		background-image: var(--image-checkbox-unchecked-black);
	}

	selector {
		background-image: url("/images/Inputs/Checkbox_Black_Checked.svg");
		background-image: var(--image-checkbox-checked-black);
	}

	selector {
		background-image: url("/images/UI/Drag_Black.svg");
		background-image: var(--image-draghandle-black);
	}

	selector {
		background-image: url("/images/UI/Drag_White.svg");
		background-image: var(--image-draghandle-white);
	}

	selector {
		background-image: url("/images/UI/External.svg");
		background-image: var(--image-open-external);
	}

	selector {
		background-image: url("/images/Results/Exclamation_Red.svg");
		background-image: var(--image-invalid);
	}

	selector {
		background-image: url("/images/Results/Help.svg");
		background-image: var(--image-help);
	}

	selector {
		background-image: url("/images/Results/Required_Red.svg");
		background-image: var(--image-required);
	}

	selector {
		background-image: url("/images/Results/Checked.svg");
		background-image: var(--image-checked);
	}

	selector {
		background-image: url("/images/Results/Unchecked.svg");
		background-image: var(--image-unchecked);
	}

	selector {
		background-image: url("/images/Actions/Vis_Hidden_Black.svg");
		background-image: var(--image-hidden-black);
	}

	selector {
		background-image: url("/images/Actions/Vis_Hidden_White.svg");
		background-image: var(--image-hidden-white);
	}

	selector {
		background-image: url("/images/Actions/Send_White.svg");
		background-image: var(--image-send-white);
	}

	selector {
		background-image: url("/images/Actions/Send_Black.svg");
		background-image: var(--image-send-black);
	}

	selector {
		background-image: url("/images/Results/Result_Fail.svg");
		background-image: var(--image-fail);
	}

	selector {
		background-image: url("/images/Results/Result_NA.svg");
		background-image: var(--image-nota);
	}

	selector {
		background-image: url("/images/Results/Result_Notes.svg");
		background-image: var(--image-notes);
	}

	selector {
		background-image: url("/images/Results/Result_Pass.svg");
		background-image: var(--image-pass);
	}

	selector {
		background-image: url("/images/Results/Result_Warning.svg");
		background-image: var(--image-warn);
	}

	selector {
		background-image: url("/images/Results/Result_Checked.svg");
		background-image: var(--image-check);
	}

	selector {
		background-image: url("/images/TabsCorners/Left.svg");
		background-image: var(--image-tab-left);
	}

	selector {
		background-image: url("/images/TabsCorners/Right.svg");
		background-image: var(--image-tab-right);
	}

	selector {
		background-image: url("/images/Content/CarFax-C.svg");
		background-image: var(--image-carFaxCompact);
	}

	selector {
		background-image: url("/images/Content/CarFax-Full.svg");
		background-image: var(--image-carFaxFull);
	}

*/

:root {

	/* logo-arrow :: Logo/logoArrowOne.png */
	--image-url-logo-arrow: url("/images/Logo/logoArrowOne.png");
	--image-logo-arrow    : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6Njg2QTFBMjY0RDlDMTFFMUI1QzdFRUE4Q0YxOTk4MkIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6Njg2QTFBMjc0RDlDMTFFMUI1QzdFRUE4Q0YxOTk4MkIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ODZBMUEyNDREOUMxMUUxQjVDN0VFQThDRjE5OTgyQiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo2ODZBMUEyNTREOUMxMUUxQjVDN0VFQThDRjE5OTgyQiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtD7/IIAAAR1SURBVHja7NhNbxtFGAfwZ3ZmZ9/8krjkvSpK5GIJCRTRQznxBTghwYUzJyQkJLhwQkgc+ARUcIZw4YR6qBSBKDJEsuqSCKgCRCR1m8R27NiJ47W9uzPLjO0kQEV5E6otPf/I2k1kb2Z+O8+zI5M4jgHz70MQEAEREAEREIOACIiACIhBQAREQATEICACIiACYhAQAREQATEIiIAIiIAYBERABERADAIiIAIi4P+d7IsfnZ0LIUDKGAgBYJSp0f796+h5xeqzMpaDo1RHNVWiLkaZASYzc6Zl5ohBsianOS/pXUmmErnUZDoxkcnA1NwkFL/6unzrm/Wl2hdvdv7s/7BRu6OGYfQnH0URJDxvyku6zwdhuH3cbK0rhCPG2O+A+i+FpA6gzjRQllKaNihb5A7LWDZfcDx3dvLCxGwynVhwPSfjuM6i49pguRwsm4LjEjAUqgwN8Fs+VEq/wMbq54dbGxtvgJzuPGy8IweoVwnn5tQzV5/+IPvEpRf0RIWQcFCpl28Xfnh1f6+atzhfNjlbVjhZy7Zz6j0JN+Hk1CvheA54rqtwFJBjgcVNYJyAaRpgqBVMqL5JAFLE4J+E0Kzswk+lHSiX7kJ1/wCazfZNvyM+FDH/lDmXAu4641XCl1/6OP3sc1e/zD25tKzLV+PpEqaqhH3fh0bzCLyUo1aOwrG4gqGgq1vj9N84nM7prAjRq1KCCCX47S4c1ytw7+cfYefOBjTqbfB7dDuU5how9ybl3iplfFtXgSLu3039s3v9lfFZgdPz8y/PLFxcbvuDvnWeSEHYMLfggZtQ05PnUKqCQQz9iKHKWYYQdCM4aRzBYXVfra4SVO/vQr3WgHY7WAuFuUZ5Ms+cmTXq8jLTV4kHYIMrylN9+KvGO3qAs3NPCbAg6ummTx6o70jJWZ6hoAa/kzgEocE6EbSOW9Aol2F78w6U7+7AiS9L3cAoxMQuMp4oqJLM2xfMwCEDsMENEkOsB8FEpEbi2OMFKCSBXqBxCPyxu8R6cpRAp3UIPb8HjVoNavv7UC9XoF45LJ+0OgX12SIYdpHa8wWacg6S/XLUYAIG7So6q2/DeMgKU3+WkVQtgo0XYK1aKU3OLgIzuWr05yWstx8GI3D/+2+h9N0N6Aas1O3GeRGzG8R086aV2aZJDi4h/aeyBtOl2D//zTX+SfRDKOjfzTECPNi7t5KYXHh3+uISJf0tzbC3qVeztAm3Vz8BwWfeS009/pbtEVXCuhSHWMPVdfZAAfqfx6O2ROMFqDa+pZ3NW691Op33U5np/qZXRgG0G6q3Fa+D4U5vTcxcfluE7UGvJ6elaDyS8Y4cIOeW2rqE1/a2ikdVk7/DSJyNei3oHB+AYU18ln5s8XURtAOinyLk0Y935AB1n2KmBYzxFSGClSBQPYjwK95Mbp0yW8ioq1YcHZ3x4pcJCIiACIiAGAREQAREQAwCIiACIiAGAREQAREQg4AIiIAIiEFABERABMQgIAIiIAJiEBABERABMQiIgKOUXwUYACm5lOz8AlgaAAAAAElFTkSuQmCC");

	/* chevron-left-black :: UI/Chevron-Left-Black.svg */
	--image-url-chevron-left-black: url("/images/UI/Chevron-Left-Black.svg");
	--image-chevron-left-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBkPSJNMzQuNTIgMjM5LjAzTDIyOC44NyA0NC42OWM5LjM3LTkuMzcgMjQuNTctOS4zNyAzMy45NCAwbDIyLjY3IDIyLjY3YzkuMzYgOS4zNiA5LjM3IDI0LjUyLjA0IDMzLjlMMTMxLjQ5IDI1NmwxNTQuMDIgMTU0Ljc1YzkuMzQgOS4zOCA5LjMyIDI0LjU0LS4wNCAzMy45bC0yMi42NyAyMi42N2MtOS4zNyA5LjM3LTI0LjU3IDkuMzctMzMuOTQgMEwzNC41MiAyNzIuOTdjLTkuMzctOS4zNy05LjM3LTI0LjU3IDAtMzMuOTR6Ii8+PC9zdmc+");

	/* chevron-left-white :: UI/Chevron-Left-White.svg */
	--image-url-chevron-left-white: url("/images/UI/Chevron-Left-White.svg");
	--image-chevron-left-white    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTM0LjUyIDIzOS4wM0wyMjguODcgNDQuNjljOS4zNy05LjM3IDI0LjU3LTkuMzcgMzMuOTQgMGwyMi42NyAyMi42N2M5LjM2IDkuMzYgOS4zNyAyNC41Mi4wNCAzMy45TDEzMS40OSAyNTZsMTU0LjAyIDE1NC43NWM5LjM0IDkuMzggOS4zMiAyNC41NC0uMDQgMzMuOWwtMjIuNjcgMjIuNjdjLTkuMzcgOS4zNy0yNC41NyA5LjM3LTMzLjk0IDBMMzQuNTIgMjcyLjk3Yy05LjM3LTkuMzctOS4zNy0yNC41NyAwLTMzLjk0eiIvPjwvc3ZnPg==");

	/* chevron-right-black :: UI/Chevron-Right-Black.svg */
	--image-url-chevron-right-black: url("/images/UI/Chevron-Right-Black.svg");
	--image-chevron-right-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBkPSJNMjg1LjQ3NiAyNzIuOTcxTDkxLjEzMiA0NjcuMzE0Yy05LjM3MyA5LjM3My0yNC41NjkgOS4zNzMtMzMuOTQxIDBsLTIyLjY2Ny0yMi42NjdjLTkuMzU3LTkuMzU3LTkuMzc1LTI0LjUyMi0uMDQtMzMuOTAxTDE4OC41MDUgMjU2IDM0LjQ4NCAxMDEuMjU1Yy05LjMzNS05LjM3OS05LjMxNy0yNC41NDQuMDQtMzMuOTAxbDIyLjY2Ny0yMi42NjdjOS4zNzMtOS4zNzMgMjQuNTY5LTkuMzczIDMzLjk0MSAwTDI4NS40NzUgMjM5LjAzYzkuMzczIDkuMzcyIDkuMzczIDI0LjU2OC4wMDEgMzMuOTQxeiIvPjwvc3ZnPg==");

	/* chevron-right-white :: UI/Chevron-Right-White.svg */
	--image-url-chevron-right-white: url("/images/UI/Chevron-Right-White.svg");
	--image-chevron-right-white    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMjAgNTEyIj48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTI4NS40NzYgMjcyLjk3MUw5MS4xMzIgNDY3LjMxNGMtOS4zNzMgOS4zNzMtMjQuNTY5IDkuMzczLTMzLjk0MSAwbC0yMi42NjctMjIuNjY3Yy05LjM1Ny05LjM1Ny05LjM3NS0yNC41MjItLjA0LTMzLjkwMUwxODguNTA1IDI1NiAzNC40ODQgMTAxLjI1NWMtOS4zMzUtOS4zNzktOS4zMTctMjQuNTQ0LjA0LTMzLjkwMWwyMi42NjctMjIuNjY3YzkuMzczLTkuMzczIDI0LjU2OS05LjM3MyAzMy45NDEgMEwyODUuNDc1IDIzOS4wM2M5LjM3MyA5LjM3MiA5LjM3MyAyNC41NjguMDAxIDMzLjk0MXoiLz48L3N2Zz4=");

	/* chevron-up-black :: UI/Chevron-Up-Black.svg */
	--image-url-chevron-up-black: url("/images/UI/Chevron-Up-Black.svg");
	--image-chevron-up-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgMzIwIj48cGF0aCBkPSJNMjczLDM0LjVsMTk0LjMsMTk0LjNjOS40LDkuNCw5LjQsMjQuNiwwLDMzLjlsLTIyLjcsMjIuN2MtOS40LDkuNC0yNC41LDkuNC0zMy45LDBMMjU2LDEzMS41bC0xNTQuOCwxNTRjLTkuNCw5LjMtMjQuNSw5LjMtMzMuOSwwbC0yMi43LTIyLjdjLTkuNC05LjQtOS40LTI0LjYsMC0zMy45TDIzOSwzNC41QzI0OC40LDI1LjIsMjYzLjYsMjUuMiwyNzMsMzQuNXoiLz48L3N2Zz4=");

	/* chevron-up-white :: UI/Chevron-Up-White.svg */
	--image-url-chevron-up-white: url("/images/UI/Chevron-Up-White.svg");
	--image-chevron-up-white    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgMzIwIj48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTI3MywzNC41bDE5NC4zLDE5NC4zYzkuNCw5LjQsOS40LDI0LjYsMCwzMy45bC0yMi43LDIyLjdjLTkuNCw5LjQtMjQuNSw5LjQtMzMuOSwwTDI1NiwxMzEuNWwtMTU0LjgsMTU0IGMtOS40LDkuMy0yNC41LDkuMy0zMy45LDBsLTIyLjctMjIuN2MtOS40LTkuNC05LjQtMjQuNiwwLTMzLjlMMjM5LDM0LjVDMjQ4LjQsMjUuMiwyNjMuNiwyNS4yLDI3MywzNC41eiIvPjwvc3ZnPg==");

	/* chevron-down-black :: UI/Chevron-Down-Black.svg */
	--image-url-chevron-down-black: url("/images/UI/Chevron-Down-Black.svg");
	--image-chevron-down-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgMzIwIj48cGF0aCBkPSJNMjM5LDI4NS41TDQ0LjcsOTEuMWMtOS40LTkuNC05LjQtMjQuNiwwLTMzLjlsMjIuNy0yMi43YzkuNC05LjQsMjQuNS05LjQsMzMuOSwwbDE1NC43LDE1NGwxNTQuNy0xNTQgYzkuNC05LjMsMjQuNS05LjMsMzMuOSwwbDIyLjcsMjIuN2M5LjQsOS40LDkuNCwyNC42LDAsMzMuOUwyNzMsMjg1LjVDMjYzLjYsMjk0LjgsMjQ4LjQsMjk0LjgsMjM5LDI4NS41eiIvPjwvc3ZnPg==");

	/* chevron-down-white :: UI/Chevron-Down-White.svg */
	--image-url-chevron-down-white: url("/images/UI/Chevron-Down-White.svg");
	--image-chevron-down-white    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MTIgMzIwIj48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTIzOSwyODUuNUw0NC43LDkxLjFjLTkuNC05LjQtOS40LTI0LjYsMC0zMy45bDIyLjctMjIuN2M5LjQtOS40LDI0LjUtOS40LDMzLjksMGwxNTQuNywxNTRsMTU0LjctMTU0IGM5LjQtOS4zLDI0LjUtOS4zLDMzLjksMGwyMi43LDIyLjdjOS40LDkuNCw5LjQsMjQuNiwwLDMzLjlMMjczLDI4NS41QzI2My42LDI5NC44LDI0OC40LDI5NC44LDIzOSwyODUuNXoiLz48L3N2Zz4=");

	/* snooze :: UI/Snooze.svg */
	--image-url-snooze: url("/images/UI/Snooze.svg");
	--image-snooze    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnIGZpbGw9IiMwMDAwMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDguNDY2NjY2NyA4LjQ2NjY2NjciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiPjxnPjxwYXRoIGQ9Im0gNi42MTM0ODYzLDAuNzkzNzU3MTMgYSAwLjI2NDg3MTkyLDAuMjY0NzYyMDQgMCAwIDAgMCwwLjUyOTUyNDA3IGggMC4xNTQwMTMxIGwgLTAuMzQxNjE5OSwwLjM0MTQ3OCBhIDAuMjY0NjM5ODIsMC4yNjQ1MzAwNSAwIDAgMCAwLjE4NzYwNjgsMC40NTMwNjYgaCAwLjc5MjgwNyBhIDAuMjY0Njc4NDUsMC4yNjQ1Njg2NiAwIDAgMCAwLC0wLjUyOTAwNyBoIC0wLjE1NDAxNCBsIDAuMzQxNjIsLTAuMzQxOTk1IEEgMC4yNjQ2Mzk4MiwwLjI2NDUzMDA1IDAgMCAwIDcuNDA2MjkzMywwLjc5Mzc1NzEzIFogTSA0LjA4NDY3MjMsMS4wNTkyOTQyIGMgLTEuMjU4NDIwOCwxLjRlLTUgLTIuMjc3NjM4OCwxLjAyMTY1OCAtMi4yNzc2Mzg4LDIuMjc4NzYgMCwyLjIzOTY5MiAtMC40MzM0NDUxLDIuMzQ1NDM1OSAtMC45NzAwNzcxLDMuMTQ3MTggLTAuMTEyNDY3LDAuMTY3ODQ2OSAwLjAwNzcsMC4zOTMwODY5IDAuMjA5ODMsMC4zOTM2NTUgaCAyLjAxODcxMSBjIDAuMTE4NTQyLDAuNDU0MDAzIDAuNTI5MDA0MSwwLjc5NDAyNzggMS4wMTg2NTc5LDAuNzk0MDI3OCAwLjQ4OTYxNDEsMCAwLjkwMTU2NjEsLTAuMzQwMDgwOCAxLjAyMDcyNTIsLTAuNzk0MDI3OCBoIDIuMDE5NzQ0IEMgNy4zMjY1MDI0LDYuODc3OTM2NyA3LjQ0NjI4MjQsNi42NTI4OTYxIDcuMzMzOTM4NSw2LjQ4NTIzNDIgNi43OTczMDYzLDUuNjgzNDkwMSA2LjM2Mzg2MTQsNS41Nzc3NDcyIDYuMzYzODYxNCwzLjMzODA1NDIgYyAwLC0xLjI1NzEwMiAtMS4wMjA3NjU5LC0yLjI3ODc3MyAtMi4yNzkxODkxLC0yLjI3ODc2IHogbSAtMC4xMzM4NTgsMS4wNTg1MzEgYSAwLjI2NDYzOTgyLDAuMjY0NTMwMDUgMCAwIDEgMC4wMjUzMjEsMCBoIDEuMzE2ODY2IGEgMC4yNjQ2Mzk4MiwwLjI2NDUzMDA1IDAgMCAxIDAuMTg3NjA1OSwwLjQ1MDk5OSBsIC0wLjg2NTY3NzcsMC44NjY4NjkgaCAwLjY3ODA3MTggYSAwLjI2NDY3ODQ1LDAuMjY0NTY4NjYgMCAxIDEgMCwwLjUyOTAwNjkgSCAzLjk3NjEzNiBBIDAuMjY0NjM5ODIsMC4yNjQ1MzAwNSAwIDAgMSAzLjc4OTA0NTksMy41MTM3MDExIEwgNC42NTQyMDgxLDIuNjQ2ODMyMiBIIDMuOTc2MTM2IGEgMC4yNjQ5ODI4MywwLjI2NDg3Mjg5IDAgMCAxIC0wLjAyNTMyMiwtMC41MjkwMDcgeiIgLz48L2c+PC9zdmc+");

	/* trigger-undefined :: Inputs/Undefined.svg */
	--image-url-trigger-undefined: url("/images/Inputs/Undefined.svg");
	--image-trigger-undefined    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwcHgiIHdpZHRoPSIxMDBweCIgZmlsbD0iIzAwMDAwMCIgdmlld0JveD0iMCAwIDEwMCAxMDAiPjx0ZXh0IHg9IjAiIHk9IjUwIiBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgZm9udC1zaXplPSIyMHB4IiBjb2xvcj0iYmxhY2siPlVuZGVmaW5lZDwvdGV4dD48L3N2Zz4=");

	/* radio-unchecked-black :: Inputs/Radio-Black-Unchecked.svg */
	--image-url-radio-unchecked-black: url("/images/Inputs/Radio-Black-Unchecked.svg");
	--image-radio-unchecked-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9IiMwMDAwMDAiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNNTAsMTcuNUEzMi41LDMyLjUsMCwxLDAsODIuNSw1MCwzMi41LDMyLjUsMCwwLDAsNTAsMTcuNVptMCw2MEEyNy41LDI3LjUsMCwxLDEsNzcuNSw1MCwyNy41LDI3LjUsMCwwLDEsNTAsNzcuNVoiLz48L3N2Zz4=");

	/* radio-checked-black :: Inputs/Radio-Black-Checked.svg */
	--image-url-radio-checked-black: url("/images/Inputs/Radio-Black-Checked.svg");
	--image-radio-checked-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBmaWxsPSIjMDAwMDAwIj48cGF0aCBkPSJNNTAsMTcuNUEzMi41LDMyLjUsMCwxLDAsODIuNSw1MCwzMi41LDMyLjUsMCwwLDAsNTAsMTcuNVptMCw2MEEyNy41LDI3LjUsMCwxLDEsNzcuNSw1MCwyNy41LDI3LjUsMCwwLDEsNTAsNzcuNVoiLz48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSIxNy41Ii8+PC9zdmc+");

	/* checkbox-unchecked-black :: Inputs/Checkbox_Black_Unchecked.svg */
	--image-url-checkbox-unchecked-black: url("/images/Inputs/Checkbox_Black_Unchecked.svg");
	--image-checkbox-unchecked-black    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNNzAsMTcuNUgzMGMtNi44OTMsMC0xMi41LDUuNjA3LTEyLjUsMTIuNXY0MGMwLDYuODkzLDUuNjA3LDEyLjUsMTIuNSwxMi41aDQwYzYuODkzLDAsMTIuNS01LjYwNywxMi41LTEyLjVWMzAgIEM4Mi41LDIzLjEwNyw3Ni44OTMsMTcuNSw3MCwxNy41eiBNNzcuNSw3MGMwLDQuMTM2LTMuMzY0LDcuNS03LjUsNy41SDMwYy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41VjMwYzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUgIGg0MGM0LjEzNiwwLDcuNSwzLjM2NCw3LjUsNy41VjcweiI+PC9wYXRoPjwvc3ZnPg==");

	/* checkbox-checked-black :: Inputs/Checkbox_Black_Checked.svg */
	--image-url-checkbox-checked-black: url("/images/Inputs/Checkbox_Black_Checked.svg");
	--image-checkbox-checked-black    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNNzAsMTcuNUgzMGMtNi44OTMsMC0xMi41LDUuNjA3LTEyLjUsMTIuNXY0MGMwLDYuODkzLDUuNjA3LDEyLjUsMTIuNSwxMi41aDQwYzYuODkzLDAsMTIuNS01LjYwNywxMi41LTEyLjVWMzAgIEM4Mi41LDIzLjEwNyw3Ni44OTMsMTcuNSw3MCwxNy41eiBNNzcuNSw3MGMwLDQuMTM2LTMuMzY0LDcuNS03LjUsNy41SDMwYy00LjEzNiwwLTcuNS0zLjM2NC03LjUtNy41VjMwYzAtNC4xMzYsMy4zNjQtNy41LDcuNS03LjUgIGg0MGM0LjEzNiwwLDcuNSwzLjM2NCw3LjUsNy41VjcweiI+PC9wYXRoPjxwYXRoIGQ9Ik02My4yMzIsMzguMjMyTDQ1LDU2LjQ2NWwtOC4yMzItOC4yMzJjLTAuOTc2LTAuOTc3LTIuNTYtMC45NzctMy41MzUsMGMtMC45NzcsMC45NzYtMC45NzcsMi41NTksMCwzLjUzNWwxMCwxMCAgQzQzLjcyLDYyLjI1Niw0NC4zNiw2Mi41LDQ1LDYyLjVzMS4yOC0wLjI0NCwxLjc2OC0wLjczMmwyMC0yMGMwLjk3Ny0wLjk3NiwwLjk3Ny0yLjU1OSwwLTMuNTM1ICBDNjUuNzkxLDM3LjI1Niw2NC4yMDksMzcuMjU2LDYzLjIzMiwzOC4yMzJ6Ij48L3BhdGg+PC9zdmc+");

	/* draghandle-black :: UI/Drag_Black.svg */
	--image-url-draghandle-black: url("/images/UI/Drag_Black.svg");
	--image-draghandle-black    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBkPSJNMTAwLDU2LjgzNkgwVjQzLjE2NGgxMDBWNTYuODM2eiBNMTAwLDE3LjA4NUgwdjEzLjY3MmgxMDBWMTcuMDg1eiBNMTAwLDY5LjI0M0gwdjEzLjY3MmgxMDBWNjkuMjQzeiI+PC9wYXRoPjwvZz48L3N2Zz4=");

	/* draghandle-white :: UI/Drag_White.svg */
	--image-url-draghandle-white: url("/images/UI/Drag_White.svg");
	--image-draghandle-white    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjRkZGRkZGIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMDAgMTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGcgc2hhcGUtcmVuZGVyaW5nPSJjcmlzcEVkZ2VzIj48cGF0aCBkPSJNMTAwLDU2LjgzNkgwVjQzLjE2NGgxMDBWNTYuODM2eiBNMTAwLDE3LjA4NUgwdjEzLjY3MmgxMDBWMTcuMDg1eiBNMTAwLDY5LjI0M0gwdjEzLjY3MmgxMDBWNjkuMjQzeiI+PC9wYXRoPjwvZz48L3N2Zz4=");

	/* open-external :: UI/External.svg */
	--image-url-open-external: url("/images/UI/External.svg");
	--image-open-external    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMjAwcHQiIGhlaWdodD0iMTIwMHB0IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAxMjAwIDEyMDAiPjxwYXRoIGQ9Im03MDAgMjUwYy0yNy42MTMgMC01MC0yMi4zODctNTAtNTBzMjIuMzg3LTUwIDUwLTUwaDMwMGMxMy4yNjIgMCAyNS45OCA1LjI2OTUgMzUuMzU1IDE0LjY0NSA5LjM3NSA5LjM3ODkgMTQuNjQ1IDIyLjA5NCAxNC42NDUgMzUuMzU1djMwMGMwIDI3LjYxMy0yMi4zODcgNTAtNTAgNTBzLTUwLTIyLjM4Ny01MC01MHYtMTc5LjI5bC00NjQuNjQgNDY0LjY0Yy0xOS41MjcgMTkuNTIzLTUxLjE4NCAxOS41MjMtNzAuNzExIDAtMTkuNTI3LTE5LjUyNy0xOS41MjctNTEuMTg0IDAtNzAuNzExbDQ2NC42NC00NjQuNjR6bS01NTAgMTAwYzAtNTUuMjI3IDQ0Ljc3My0xMDAgMTAwLTEwMGgyNTBjMjcuNjEzIDAgNTAgMjIuMzg3IDUwIDUwcy0yMi4zODcgNTAtNTAgNTBoLTI1MHY2MDBoNjAwdi0yNTBjMC0yNy42MTMgMjIuMzg3LTUwIDUwLTUwczUwIDIyLjM4NyA1MCA1MHYyNTBjMCA1NS4yMy00NC43NyAxMDAtMTAwIDEwMGgtNjAwYy01NS4yMjcgMC0xMDAtNDQuNzctMTAwLTEwMHoiLz48L3N2Zz4=");

	/* invalid :: Results/Exclamation_Red.svg */
	--image-url-invalid: url("/images/Results/Exclamation_Red.svg");
	--image-invalid    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnIGZpbGw9IiNGRjI0MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmVyc2lvbj0iMS4xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDIwIDIwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyMCAyMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik05LjYsMTMuMUM5LjIsMTMuMiw5LDEzLjYsOSwxNGMwLDAuNSwwLjQsMSwxLDFjMC42LDAsMS0wLjQsMS0xQzExLDEzLjIsMTAuMiwxMi44LDkuNiwxMy4xeiI+PC9wYXRoPjxwYXRoIGQ9Ik0xMCw1QzkuNCw1LDksNS40LDksNnY1YzAsMC42LDAuNCwxLDEsMXMxLTAuNCwxLTFWNkMxMSw1LjQsMTAuNiw1LDEwLDV6Ij48L3BhdGg+PHBhdGggZD0iTTEwLDBDNC41LDAsMCw0LjUsMCwxMHM0LjUsMTAsMTAsMTBzMTAtNC41LDEwLTEwUzE1LjUsMCwxMCwweiBNMTAsMThjLTQuNCwwLTgtMy42LTgtOHMzLjYtOCw4LThzOCwzLjYsOCw4ICAgUzE0LjQsMTgsMTAsMTh6Ij48L3BhdGg+PC9nPjwvc3ZnPg==");

	/* help :: Results/Help.svg */
	--image-url-help: url("/images/Results/Help.svg");
	--image-help    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0nMTAwcHgnIHdpZHRoPScxMDBweCcgZmlsbD0iIzUzODZDRiIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHg9IjBweCIgeT0iMHB4Ij48cGF0aCBkPSJNNTAsOEE0Miw0MiwwLDEsMSw4LDUwLDQyLDQyLDAsMCwxLDUwLDhtMC04YTUwLDUwLDAsMSwwLDUwLDUwQTUwLDUwLDAsMCwwLDUwLDBaIj48L3BhdGg+PHBhdGggZD0iTTUwLjQ2LDIzLjVsMS4wOC4xYTIxLDIxLDAsMCwxLDcuNzEsMiwxMi44NCwxMi44NCwwLDAsMSw1LjMyLDQuNTUsMTEuNzUsMTEuNzUsMCwwLDEsMS44MSw1LjE4QTExLjQ2LDExLjQ2LDAsMCwxLDY2LDQwLjA5LDEyLjM2LDEyLjM2LDAsMCwxLDYzLjEsNDVhMzMuMTEsMzMuMTEsMCwwLDEtNSw0LjExYy0xLC42OS0xLjg5LDEuNDEtMi44MywyLjEzYTYsNiwwLDAsMC0xLjg1LDIuNjdjLS4yLjU0LS40MywxLjA4LS42NCwxLjYyQTMuNzMsMy43MywwLDAsMSw0OS4zLDU4YTQuODcsNC44NywwLDAsMS0yLjUzLS40LDQuMTMsNC4xMywwLDAsMS0yLjI3LTMuMDksNy4xLDcuMSwwLDAsMSwxLjItNS4zLDE0LjU2LDE0LjU2LDAsMCwxLDMuMTQtMy4zMmMxLjMxLTEuMDcsMi42Ni0yLjA5LDQtMy4xNmExMC41NSwxMC41NSwwLDAsMCwyLjc0LTMuMTMsNS44Nyw1Ljg3LDAsMCwwLS43LTYuNSw1LjQsNS40LDAsMCwwLTMtMS42Niw5LjU1LDkuNTUsMCwwLDAtNC42Ni4wOCw1LjY3LDUuNjcsMCwwLDAtMy42MSwzYy0uNDcuODgtLjg4LDEuNzgtMS4zMiwyLjY3QTYuNDksNi40OSwwLDAsMSw0MSwzOWE0LjQ3LDQuNDcsMCwwLDEtMy4zOSwxLjA5LDQuNjksNC42OSwwLDAsMS0yLjE0LS41OCwzLjcsMy43LDAsMCwxLTItMy4zLDkuNjgsOS42OCwwLDAsMSwyLTYuMTIsMTUuNDIsMTUuNDIsMCwwLDEsNi00Ljg2LDE4LjMsMTguMywwLDAsMSw1LjY5LTEuNjRsMS4xMi0uMTFaIj48L3BhdGg+PHBhdGggZD0iTTQ4LjQ3LDc2LjVjLS4zLS4wNi0uNi0uMTEtLjg5LS4xOWE1LjU0LDUuNTQsMCwxLDEsMi40LjA5bC0uNDkuMVoiPjwvcGF0aD48L3N2Zz4=");

	/* required :: Results/Required_Red.svg */
	--image-url-required: url("/images/Results/Required_Red.svg");
	--image-required    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cmVjdCBmaWxsPSJyZWQiIHg9IjQ1IiB5PSIwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAwIiAvPjxyZWN0IGZpbGw9InJlZCIgeD0iNDUiIHk9IjAiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxMDAiIHRyYW5zZm9ybT0icm90YXRlKC00NSwgNTAsIDUwKSIgLz48cmVjdCBmaWxsPSJyZWQiIHg9IjQ1IiB5PSIwIiB3aWR0aD0iMTAiIGhlaWdodD0iMTAwIiB0cmFuc2Zvcm09InJvdGF0ZSggNDUsIDUwLCA1MCkiIC8+PHJlY3QgZmlsbD0icmVkIiB4PSI0NSIgeT0iMCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwMCIgdHJhbnNmb3JtPSJyb3RhdGUoLTkwLCA1MCwgNTApIiAvPjwvc3ZnPg==");

	/* checked :: Results/Checked.svg */
	--image-url-checked: url("/images/Results/Checked.svg");
	--image-checked    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBmaWxsPSIjZjRhYTE2Ij48cmVjdCBjbGFzcz0iYSIgeD0iOC43NSIgeT0iOS42NCIgd2lkdGg9Ijc4Ljc2IiBoZWlnaHQ9Ijc1LjI2IiBmaWxsPSIjZmZmZmZmIiAvPjxwYXRoIGNsYXNzPSJiIiBkPSJNMCwwVjEwMEgxMDBWMFpNNDcsNzQuMjZsLTI1LjItMTkuNkwyOCw0Ni43Myw0NS44LDYwLjYxbDI4LTMxLDcuNDQsNi43NFoiIC8+PC9zdmc+");

	/* unchecked :: Results/Unchecked.svg */
	--image-url-unchecked: url("/images/Results/Unchecked.svg");
	--image-unchecked    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBmaWxsPSIjZjRhYTE2Ij48cmVjdCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIvPjxyZWN0IHg9IjEwIiB5PSIxMCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjgwIiBmaWxsPSIjZmZmZmZmIiAvPjwvc3ZnPg==");

	/* hidden-black :: Actions/Vis_Hidden_Black.svg */
	--image-url-hidden-black: url("/images/Actions/Vis_Hidden_Black.svg");
	--image-hidden-black    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzUgMzUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDM1IDM1IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBkPSJNOS42LDEzLjlsLTIuMi0yLjJjLTIuMSwxLjQtNC4yLDMuNC01LjksNS44QzcsMjUsMTQuNiwyNy44LDIxLjcsMjZsLTIuNi0yLjZjLTAuNSwwLjEtMS4xLDAuMS0xLjYsMC4xICAgYy00LjQsMC04LjctMi4xLTEyLjEtNkM2LjcsMTYsOC4xLDE0LjgsOS42LDEzLjl6Ij48L3BhdGg+PHBhdGggZD0iTTExLjUsMTUuOGMwLjEsMy4xLDIuNiw1LjYsNS43LDUuN0wxMS41LDE1Ljh6Ij48L3BhdGg+PHBhdGggZD0iTTMzLjUsMTcuNWMtNC40LTYtMTAuMi05LTE2LTljLTIuMywwLTQuNSwwLjUtNi4zLDEuMkwyLjksMS41TDEuNSwyLjljMTguMiwxOC4yLDIzLjgsMjMuOCwzMC42LDMwLjZsMS40LTEuNGwtNy43LTcuNyAgIEMyOC45LDIyLjcsMzEuNCwyMC4zLDMzLjUsMTcuNXogTTIzLjYsMjIuMUwyMS40LDIwYzItMS43LDIuOC00LjksMS4zLTcuNWMwLDAsMCwwLDAsMGMyLjcsMS4xLDUsMi44LDYuOSw1ICAgQzI4LDE5LjQsMjUuOSwyMS4xLDIzLjYsMjIuMXoiPjwvcGF0aD48L2c+PC9zdmc+");

	/* hidden-white :: Actions/Vis_Hidden_White.svg */
	--image-url-hidden-white: url("/images/Actions/Vis_Hidden_White.svg");
	--image-hidden-white    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjZmZmZmZmIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMzUgMzUiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDM1IDM1IiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cGF0aCBkPSJNOS42LDEzLjlsLTIuMi0yLjJjLTIuMSwxLjQtNC4yLDMuNC01LjksNS44QzcsMjUsMTQuNiwyNy44LDIxLjcsMjZsLTIuNi0yLjZjLTAuNSwwLjEtMS4xLDAuMS0xLjYsMC4xICAgYy00LjQsMC04LjctMi4xLTEyLjEtNkM2LjcsMTYsOC4xLDE0LjgsOS42LDEzLjl6Ij48L3BhdGg+PHBhdGggZD0iTTExLjUsMTUuOGMwLjEsMy4xLDIuNiw1LjYsNS43LDUuN0wxMS41LDE1Ljh6Ij48L3BhdGg+PHBhdGggZD0iTTMzLjUsMTcuNWMtNC40LTYtMTAuMi05LTE2LTljLTIuMywwLTQuNSwwLjUtNi4zLDEuMkwyLjksMS41TDEuNSwyLjljMTguMiwxOC4yLDIzLjgsMjMuOCwzMC42LDMwLjZsMS40LTEuNGwtNy43LTcuNyAgIEMyOC45LDIyLjcsMzEuNCwyMC4zLDMzLjUsMTcuNXogTTIzLjYsMjIuMUwyMS40LDIwYzItMS43LDIuOC00LjksMS4zLTcuNWMwLDAsMCwwLDAsMGMyLjcsMS4xLDUsMi44LDYuOSw1ICAgQzI4LDE5LjQsMjUuOSwyMS4xLDIzLjYsMjIuMXoiPjwvcGF0aD48L2c+PC9zdmc+");

	/* send-white :: Actions/Send_White.svg */
	--image-url-send-white: url("/images/Actions/Send_White.svg");
	--image-send-white    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0nMTAwcHgnIHdpZHRoPScxMDBweCcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHg9IjBweCIgeT0iMHB4Ij48ZyBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTYyLjU1LDQyLjQ0YTEuNDUsMS40NSwwLDAsMC0yLjA4LTJsLTI2LDIyLjEyTDIwLjc0LDU3LjI1YTMuMzQsMy4zNCwwLDAsMS0uMzktNi4wNmw1Ny0zMS45M0EyLjgxLDIuODEsMCwwLDEsODEuNDgsMjJsLTUsNTIuMTJBMy40NSwzLjQ1LDAsMCwxLDcxLjc2LDc3TDU1LjA1LDcwLjUzLDQ0LjU2LDgwLjM2YTIuNzEsMi43MSwwLDAsMS00LjU2LTJWNzAuNjRaIiAvPjwvZz48L3N2Zz4=");

	/* send-black :: Actions/Send_Black.svg */
	--image-url-send-black: url("/images/Actions/Send_Black.svg");
	--image-send-black    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0nMTAwcHgnIHdpZHRoPScxMDBweCcgdmlld0JveD0iMCAwIDEwMCAxMDAiIHg9IjBweCIgeT0iMHB4Ij48ZyBmaWxsPSJibGFjayI+PHBhdGggZD0iTTYyLjU1LDQyLjQ0YTEuNDUsMS40NSwwLDAsMC0yLjA4LTJsLTI2LDIyLjEyTDIwLjc0LDU3LjI1YTMuMzQsMy4zNCwwLDAsMS0uMzktNi4wNmw1Ny0zMS45M0EyLjgxLDIuODEsMCwwLDEsODEuNDgsMjJsLTUsNTIuMTJBMy40NSwzLjQ1LDAsMCwxLDcxLjc2LDc3TDU1LjA1LDcwLjUzLDQ0LjU2LDgwLjM2YTIuNzEsMi43MSwwLDAsMS00LjU2LTJWNzAuNjRaIiAvPjwvZz48L3N2Zz4=");

	/* fail :: Results/Result_Fail.svg */
	--image-url-fail: url("/images/Results/Result_Fail.svg");
	--image-fail    : url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDEwMCAxMDAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMCAxMDAiPjxyZWN0IHg9IjE1LjgiIHk9IjE1IiBmaWxsPSIjRkZGRkZGIiB3aWR0aD0iNjcuMSIgaGVpZ2h0PSI2Ny4xIi8+PHBhdGggZmlsbD0iI0M1NDY0NiIgZD0iTTUwLDBDMjIuNCwwLDAsMjIuNCwwLDUwczIyLjQsNTAsNTAsNTBzNTAtMjIuNCw1MC01MFM3Ny42LDAsNTAsMHogTTMxLjMsMjIuM0w1MCw0MWwxOC44LTE4LjhsOSw5TDU5LDUwIGwxOC43LDE4LjhsLTksOUw1MCw1OUwzMS4zLDc3LjhsLTktOUw0MSw1MEwyMi4zLDMxLjNMMzEuMywyMi4zeiIgLz48L3N2Zz4=");

	/* nota :: Results/Result_NA.svg */
	--image-url-nota: url("/images/Results/Result_NA.svg");
	--image-nota    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIj48cGF0aCBkPSJNMCw3NC40Nzk3OXYyNS41MjM3OEgyNS41MjM3OGw3NC40Nzk3OS03NC40Nzk3OVYwSDc0LjQ3OTc5WiIgZmlsbD0iIzk5OTk5OSIvPjwvc3ZnPg==");

	/* notes :: Results/Result_Notes.svg */
	--image-url-notes: url("/images/Results/Result_Notes.svg");
	--image-notes    : url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA2NCA2NCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjQgNjQiPjxnPjxwYXRoIGZpbGw9IiM1Mzg2Q0YiIGQ9Ik04LjIsNDguOUM3LjQsNTEsNiw1My40LDMuNCw1NS4yYy0wLjcsMC40LTAuNSwxLjQsMC4zLDEuNWMyLjcsMC40LDcuNCwwLjUsMTEuNy0yLjEgYzQuOCwyLjcsMTAuNSw0LjMsMTYuNiw0LjNjMTYuOSwwLDMwLjYtMTIsMzAuNi0yNi44UzQ4LjksNS4zLDMyLDUuM1MxLjQsMTcuMywxLjQsMzIuMUMxLjQsMzguNCwzLjksNDQuMyw4LjIsNDguOXogTTMxLjYsMTcuNCBjMS45LDAsMy40LDEuNSwzLjQsMy40cy0xLjUsMy40LTMuNCwzLjRzLTMuNC0xLjUtMy40LTMuNFMyOS43LDE3LjQsMzEuNiwxNy40eiBNMjcuMyw0MC41SDI5di05LjJoLTEuN3YtNC42SDI5aDUuMUgzNXYxMy44aDEuNyB2NC42SDM1aC02aC0xLjdWNDAuNXoiIC8+PC9nPjwvc3ZnPg==");

	/* pass :: Results/Result_Pass.svg */
	--image-url-pass: url("/images/Results/Result_Pass.svg");
	--image-pass    : url("data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjNjVCRjNEIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA5NS40NTMgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA5NS40NTMgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cG9seWdvbiBwb2ludHM9Ijk0LjU4NywyNy40OCAzMS42NTcsODYuMTUgMzEuMjE3LDg1LjY4IDE4Ljg0Nyw3Mi40MSAwLjU2Niw1Mi44MSAxNC4xMDYsNDAuMTkgMzIuMzg3LDU5Ljc5IDgxLjc3NiwxMy43NCAgICI+PC9wb2x5Z29uPjwvZz48L3N2Zz4=");

	/* warn :: Results/Result_Warning.svg */
	--image-url-warn: url("/images/Results/Result_Warning.svg");
	--image-warn    : url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjIuNSA2Mi41IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA2Mi41IDYyLjUiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnIGlkPSJMYXllcl8yXzFfIj48cmVjdCB4PSIyNS41IiB5PSIxOCIgZmlsbD0iI0ZGRkZGRiIgd2lkdGg9IjExLjMiIGhlaWdodD0iMzYuNyIvPjwvZz48ZyBpZD0iTGF5ZXJfMV8xXyI+PHBhdGggZmlsbD0iI0Y0QzkxQiIgZD0iTTQuOCw1OC4zaDUzLjFjMy4xLDAsNS0zLjMsMy41LTZsLTI2LjYtNDZjLTEuNS0yLjctNS40LTIuNy02LjksMGwtMjYuNiw0NkMtMC4zLDU0LjgsMS42LDU4LjMsNC44LDU4LjN6IE0zMS4zLDIwLjVjMS43LDAsMy4xLDEuNCwzLDMuMUwzMy44LDQxYzAsMS40LTEuMiwyLjUtMi41LDIuNWMtMS40LDAtMi41LTEuMS0yLjUtMi41bC0wLjUtMTcuNUMyOC4zLDIxLjgsMjkuNSwyMC41LDMxLjMsMjAuNXogTTMxLjMsNDUuN2MxLjcsMCwzLjEsMS40LDMuMSwzLjFzLTEuNCwzLjEtMy4xLDMuMWMtMS43LDAtMy4xLTEuNC0zLjEtMy4xQzI4LjIsNDcuMiwyOS41LDQ1LjcsMzEuMyw0NS43eiIvPjwvZz48L3N2Zz4=");

	/* check :: Results/Result_Checked.svg */
	--image-url-check: url("/images/Results/Result_Checked.svg");
	--image-check    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZlcnNpb249IjEuMSIgaGVpZ2h0PSIxMDBweCIgd2lkdGg9IjEwMHB4IiBmaWxsPSJibGFjayIgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCA5NS40NTMgMTAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA5NS40NTMgMTAwIiB4bWw6c3BhY2U9InByZXNlcnZlIj48Zz48cG9seWdvbiBwb2ludHM9Ijk0LjU4NywyNy40OCAzMS42NTcsODYuMTUgMzEuMjE3LDg1LjY4IDE4Ljg0Nyw3Mi40MSAwLjU2Niw1Mi44MSAxNC4xMDYsNDAuMTkgMzIuMzg3LDU5Ljc5IDgxLjc3NiwxMy43NCI+PC9wb2x5Z29uPjwvZz48L3N2Zz4=");

	/* tab-left :: TabsCorners/Left.svg */
	--image-url-tab-left: url("/images/TabsCorners/Left.svg");
	--image-tab-left    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNyAxNyI+PHBhdGggZD0iTTAsMTcgSDE3IFYxIEgxNiBBMTUsMTUsMCwwLDEsMSwxNiBWMTcgWiIgLz48L3N2Zz4=");

	/* tab-right :: TabsCorners/Right.svg */
	--image-url-tab-right: url("/images/TabsCorners/Right.svg");
	--image-tab-right    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNyAxNyI+PHBhdGggZD0iTTE2LDE2IFYxNyBIMCBWMSBIMSBBMTUsMTUsMCwwLDAsMTYsMTYgWiIvPjwvc3ZnPg==");

	/* carFaxCompact :: Content/CarFax-C.svg */
	--image-url-carFaxCompact: url("/images/Content/CarFax-C.svg");
	--image-carFaxCompact    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNy40IDI4LjQiPjxnPjxwYXRoIGZpbGw9IndoaXRlIiBkPSJNMjYuNiwyNS42YTIuMjIsMi4yMiwwLDAsMS0yLjIsMi4ySDIuOEEyLjIyLDIuMjIsMCwwLDEsLjYsMjUuNlYyLjhBMi4yMiwyLjIyLDAsMCwxLDIuOC42SDI0LjRhMi4yMiwyLjIyLDAsMCwxLDIuMiwyLjJWMjUuNloiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik0yLjgsMEEyLjgsMi44LDAsMCwwLDAsMi44VjI1LjZhMi44NiwyLjg2LDAsMCwwLDIuOCwyLjhIMjQuNmEyLjgsMi44LDAsMCwwLDIuOC0yLjhWMi44QTIuODYsMi44NiwwLDAsMCwyNC42LDBaTTEuMiwyNS42VjIuOEExLjU4LDEuNTgsMCwwLDEsMi44LDEuMkgyNC42YTEuNTgsMS41OCwwLDAsMSwxLjYsMS42VjI1LjZhMS41OCwxLjU4LDAsMCwxLTEuNiwxLjZIMi44QTEuNTgsMS41OCwwLDAsMSwxLjIsMjUuNloiIC8+PC9nPjxnPjxyZWN0IGZpbGw9ImJsYWNrIiB4PSIyLjciIHk9IjIuNiIgd2lkdGg9IjIyLjEiIGhlaWdodD0iMjMuMSIgLz48cGF0aCBmaWxsPSJibGFjayIgZD0iTTIuNCwyLjNWMjZIMjUuMVYyLjNabTIyLC42VjI1LjRIMi45VjIuOVoiIC8+PC9nPjxwYXRoIGZpbGw9IndoaXRlIiBkPSJNMTQuMiwyMi41QzkuNSwyMi41LDcsMTksNywxNC4zYzAtNS4xLDMtOC4yLDcuMi04LjIsMy45LDAsNS40LDEuNyw2LjUsNC43bC00LDEuNmMtLjYtMS41LTEuMS0yLjQtMi42LTIuNC0xLjgsMC0yLjYsMS44LTIuNiw0LjQsMCwyLjQuOCw0LjQsMi43LDQuNCwxLjQsMCwyLS43LDIuOC0yLjJsMy43LDJBNi43MSw2LjcxLDAsMCwxLDE0LjIsMjIuNVoiIC8+PC9zdmc+");

	/* carFaxFull :: Content/CarFax-Full.svg */
	--image-url-carFaxFull: url("/images/Content/CarFax-Full.svg");
	--image-carFaxFull    : url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNTEuNCAyOC40Ij48Zz48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTE0NS42LDI1LjZhMi4yMiwyLjIyLDAsMCwxLTIuMiwyLjJIMi44QTIuMjIsMi4yMiwwLDAsMSwuNiwyNS42VjIuOEEyLjIyLDIuMjIsMCwwLDEsMi44LjZIMTQzLjRhMi4yMiwyLjIyLDAsMCwxLDIuMiwyLjJWMjUuNloiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik0yLjgsMEEyLjgsMi44LDAsMCwwLDAsMi44VjI1LjZhMi44NiwyLjg2LDAsMCwwLDIuOCwyLjhIMTQzLjRhMi44LDIuOCwwLDAsMCwyLjgtMi44VjIuOEEyLjg2LDIuODYsMCwwLDAsMTQzLjQsMFpNMS4yLDI1LjZWMi44QTEuNTgsMS41OCwwLDAsMSwyLjgsMS4ySDE0My40QTEuNTgsMS41OCwwLDAsMSwxNDUsMi44VjI1LjZhMS41OCwxLjU4LDAsMCwxLTEuNiwxLjZIMi44QTEuNTgsMS41OCwwLDAsMSwxLjIsMjUuNloiIC8+PC9nPjxnPjxyZWN0IGZpbGw9IndoaXRlIiB4PSIxMjEuNCIgeT0iMi42IiB3aWR0aD0iMjIuMSIgaGVpZ2h0PSIyMy4xIiAvPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNMTIxLjEsMi4zVjI2aDIyLjdWMi4zWm0yMi4xLjZWMjUuNEgxMjEuN1YyLjlaIiAvPjwvZz48Zz48cmVjdCBmaWxsPSJibGFjayIgeD0iMjYuNSIgeT0iMi42IiB3aWR0aD0iMjIuMSIgaGVpZ2h0PSIyMy4xIiAvPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNMjYuMiwyLjNWMjZINDguOVYyLjNabTIyLC42VjI1LjRIMjYuN1YyLjlaIiAvPjwvZz48Zz48cmVjdCBmaWxsPSJibGFjayIgeD0iNTAuMSIgeT0iMi42IiB3aWR0aD0iMjIuMSIgaGVpZ2h0PSIyMy4xIiAvPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNNDkuOCwyLjNWMjZINzIuNVYyLjNabTIyLjEuNlYyNS40SDUwLjRWMi45WiIgLz48L2c+PGc+PHJlY3QgZmlsbD0iYmxhY2siIHg9Ijc0IiB5PSIyLjYiIHdpZHRoPSIyMi4xIiBoZWlnaHQ9IjIzLjEiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik03My43LDIuM1YyNkg5Ni40VjIuM1ptMjIsLjZWMjUuNEg3NC4yVjIuOVoiIC8+PC9nPjxnPjxyZWN0IGZpbGw9ImJsYWNrIiB4PSI5Ny44IiB5PSIyLjYiIHdpZHRoPSIyMi4xIiBoZWlnaHQ9IjIzLjEiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik05Ny41LDIuM1YyNmgyMi43VjIuM1ptMjIsLjZWMjUuNEg5OFYyLjlaIiAvPjwvZz48Zz48cmVjdCBmaWxsPSJibGFjayIgeD0iMi43IiB5PSIyLjYiIHdpZHRoPSIyMi4xIiBoZWlnaHQ9IjIzLjEiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik0yLjQsMi4zVjI2SDI1LjFWMi4zWm0yMiwuNlYyNS40SDIuOVYyLjlaIiAvPjwvZz48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTE0LjIsMjIuNUM5LjUsMjIuNSw3LDE5LDcsMTQuM2MwLTUuMSwzLTguMiw3LjItOC4yLDMuOSwwLDUuNCwxLjcsNi41LDQuN2wtNCwxLjZjLS42LTEuNS0xLjEtMi40LTIuNi0yLjQtMS44LDAtMi42LDEuOC0yLjYsNC40LDAsMi40LjgsNC40LDIuNyw0LjQsMS40LDAsMi0uNywyLjgtMi4ybDMuNywyQTYuNzEsNi43MSwwLDAsMSwxNC4yLDIyLjVaIiAvPjxwYXRoIGZpbGw9IndoaXRlIiBkPSJNMzguOSwxNS44SDM2LjNsLjMtMWEzMi4zNywzMi4zNywwLDAsMCwxLTRjLjIsMS4xLjUsMS45LDEsNFptNi43LDYuM0wzOS44LDYuMkgzNS40TDI5LjcsMjJoNC43bC45LTIuOGg0LjhMNDEsMjJoNC42WiIgLz48cGF0aCBmaWxsPSJ3aGl0ZSIgZD0iTTYzLjQsMTEuNmMwLDEuMS0uNiwxLjgtMiwxLjhINTguOFY5LjloMi42QzYyLjksOS45LDYzLjQsMTAuNiw2My40LDExLjZabTQuNywxMC41LTMuMi02YTQuODEsNC44MSwwLDAsMCwyLjktNC42YzAtMy44LTIuNS01LjItNi4yLTUuMkg1NC41VjIyLjFoNC4zVjE2LjhoMS44bDIuNiw1LjNaIiAvPjxwYXRoIGZpbGw9IndoaXRlIiBkPSJNODMuMSwxMHYyLjJoNXYzLjdoLTV2Ni4ySDc4LjdWNi4zSDkxLjJWMTBaIiAvPjxwYXRoIGZpbGw9IndoaXRlIiBkPSJNMTEwLDE1LjloLTIuNmwuMy0xYTMyLjM3LDMyLjM3LDAsMCwwLDEtNGMuMiwxLjEuNSwxLjksMSw0Wm02LjYsNi4zTDExMC45LDYuNGgtNC40bC01LjcsMTUuOGg0LjdsLjktMi44aDQuN2wuOSwyLjhaIiAvPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNMTM0LjcsMjUuOWwtLjctMS4xYy0uNi0xLTEuMi0yLTEuNy0yLjlhMjMuOCwyMy44LDAsMCwxLTEuNywyLjlsLS44LDEuMWgtNS40bDUuMi03LjItNS41LTcuOGg1LjZsMSwxLjVhMzAuODUsMzAuODUsMCwwLDEsMS43LDIuOWMuNC0uOCwxLjEtMS45LDEuNy0yLjlsMS0xLjVoNS40TDEzNSwxOC42bDUuMSw3LjNaIiAvPjxnPjxnPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNMTUxLjMsMi4yYTIuMSwyLjEsMCwxLDEtNC4yLDAsMi4xLDIuMSwwLDEsMSw0LjIsMFptLS4zLDBhMi4xMSwyLjExLDAsMCwwLS41LTEuMywxLjM1LDEuMzUsMCwwLDAtMS4yLS41LDIuMTEsMi4xMSwwLDAsMC0xLjMuNSwxLjU0LDEuNTQsMCwwLDAtLjUsMS4zLDIuMTEsMi4xMSwwLDAsMCwuNSwxLjMsMS40NiwxLjQ2LDAsMCwwLDEuMi41LDEuNjYsMS42NiwwLDAsMCwxLjItLjVBMS43NiwxLjc2LDAsMCwwLDE1MSwyLjJabS0uNi0uNWExLjQyLDEuNDIsMCwwLDEtLjIuNiwxLjQyLDEuNDIsMCwwLDEtLjYuMmwuOCwxaC0uNWwtLjgtMWgtLjR2MWgtLjRWLjloMS4yYS44NS44NSwwLDAsMSwuNi4yLjcxLjcxLDAsMCwxLC4zLjZabS0uNCwwYzAtLjMtLjItLjQtLjYtLjRoLS43di44aC44QS40Ni40NiwwLDAsMCwxNTAsMS43WiIgLz48cGF0aCBmaWxsPSJibGFjayIgZD0iTTE0Ny44LjdhMiwyLDAsMCwwLS42LDEuNSwyLjEsMi4xLDAsMSwwLDQuMiwwQTIuMTIsMi4xMiwwLDAsMCwxNDcuOC43Wm0wLDNhMiwyLDAsMCwxLS42LTEuNSwyLDIsMCwwLDEsLjYtMS41LDIsMiwwLDAsMSwxLjQtLjYsMS44MiwxLjgyLDAsMCwxLDEuNC42LDIsMiwwLDAsMSwuNiwxLjUsMiwyLDAsMCwxLS42LDEuNSwxLjkzLDEuOTMsMCwwLDEtMi44LDBaIiAvPjxwYXRoIGZpbGw9ImJsYWNrIiBkPSJNMTQ4LC45YTIuMTEsMi4xMSwwLDAsMC0uNSwxLjMsMi4xMSwyLjExLDAsMCwwLC41LDEuMywxLjU0LDEuNTQsMCwwLDAsMS4zLjUsMS42NiwxLjY2LDAsMCwwLDEuMi0uNSwyLjExLDIuMTEsMCwwLDAsLjUtMS4zLDIuMTEsMi4xMSwwLDAsMC0uNS0xLjMsMS40NiwxLjQ2LDAsMCwwLTEuMi0uNUExLjksMS45LDAsMCwwLDE0OCwuOVptMCwyLjZhMS44NSwxLjg1LDAsMCwxLS41LTEuMkEyLjExLDIuMTEsMCwwLDEsMTQ4LDFhMS42NiwxLjY2LDAsMCwxLDEuMi0uNSwyLjA4LDIuMDgsMCwwLDEsMS4yLjUsMi4wOCwyLjA4LDAsMCwxLC41LDEuMiwyLjExLDIuMTEsMCwwLDEtLjUsMS4zLDEuNjYsMS42NiwwLDAsMS0xLjIuNUEyLjA4LDIuMDgsMCwwLDEsMTQ4LDMuNVoiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik0xNDguMy45VjMuNWguNHYtMWguNGwuNywxaC42cy0uNy0uOS0uOC0xYS43Ni43NiwwLDAsMCwuNS0uMi42LjYsMCwwLDAsLjMtLjYuNzYuNzYsMCwwLDAtLjItLjUsMS40NSwxLjQ1LDAsMCwwLS43LS4yaC0xLjJabTEuMy4xYS44NS44NSwwLDAsMSwuNi4yLjc2Ljc2LDAsMCwxLC4yLjUuNzYuNzYsMCwwLDEtLjIuNWMtLjIuMS0uMy4yLS41LjJoLS4xcy43LjkuOCwxSDE1MGwtLjctMWgtLjV2MWgtLjNWMVoiIC8+PHBhdGggZmlsbD0iYmxhY2siIGQ9Ik0xNDguNywxLjJ2LjloLjhjLjQsMCwuNi0uMi42LS41LDAtLjEtLjEtLjItLjItLjNhLjc1Ljc1LDAsMCwwLS41LS4xWm0uNy4xYy4yLDAsLjMsMCwuNC4xcy4xLjEuMS4zLS4yLjQtLjUuNGgtLjdWMS40QzE0OC44LDEuMywxNDkuNCwxLjMsMTQ5LjQsMS4zWiIgLz48L2c+PC9nPjwvc3ZnPg==");
}


/*
	Don't worry about using the `*` selector here:
	Article from 2017: "Performance of CSS selectors is still irrelevant": https://meiert.com/en/blog/performance-of-css-selectors-2/
*/

:root.emojiPatch *[data-emoji] {
	color: transparent;
	position: relative;
}
	:root.emojiPatch *[data-emoji]::before {
		display: block;
		position: absolute;
		content: '';
		width: 1.25em;
		height: 1.5em;
		background-size: contain;
		background-repeat: no-repeat;
		background-position-x: center;
		background-position-y: center;
	}

:root.emojiPatch .ins-status-images > span {
	display: inline-block; /* If we use the default (as they're <span> elements, so they default to `display: inline;`) then the ::before is moved to the first block child, which isn't what we want. Fortunately `display: inline-block;` doesn't break anything, as far as I can tell. */
}

/* The following Unicode symbols are in the 0x0000-0xFFFF range and so don't need special-handling (and they render fine on Windows 7)

	»
	✔️
	🕒
	⚙
	✏️
*/

/* TODO: In future, T4 could be used for this - or Linqpad. Just search for emoji codepoint sequences in all solution files. */
/*
	To get the 160x160 PNG images and Unicode U+ code-points:
	1. Get the Emojipedia page for the symbol: e.g. https://emojipedia.org/locked/
		1.1. This page has the 120x120 PNGs.
		1.2. And the Unicode code-point below the images.
	2. Click "Microsoft", then "Windows 10 May 2019 Update", this goes to https://emojipedia.org/microsoft/windows-10-may-2019-update/locked/
		2.1. Then the 160x160 PNG is on this page.

*/

:root.emojiPatch *[data-emoji="U1F4AC"]::before { /* 💬 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4AC-speech-balloon.png" );
}

:root.emojiPatch *[data-emoji="U1F4C5"]::before { /* 📅 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4C5-calendar.png" );
}

:root.emojiPatch *[data-emoji="U1F4CB"]::before { /* 📋 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4CB-clipboard.png" );
}

:root.emojiPatch *[data-emoji="U1F4DD"]::before { /* 📝 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4DD-memo.png" );
}

:root.emojiPatch *[data-emoji="U1F4F7"]::before { /* 📷 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4F7-camera.png" );
}

:root.emojiPatch *[data-emoji="U1F4F8"]::before { /* 📸 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4F8-camera-with-flash.png" );
}

:root.emojiPatch *[data-emoji="U1F698"]::before { /* 🚘 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F698-oncoming-automobile.png" );
}

:root.emojiPatch *[data-emoji="U2709"]::before { /* ✉️ */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U02709-envelope.png" );
}

:root.emojiPatch *[data-emoji="U1F5A8"]::before { /* 🖨 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F5A8-printer.png" );
}

:root.emojiPatch *[data-emoji="U1F5BC"]::before { /* 🖼️ */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F5BC-frame-with-picture.png" );
}

:root.emojiPatch *[data-emoji="U1F512"]::before { /* 🔒 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F512-lock.png" );
}

:root.emojiPatch *[data-emoji="U1F4D0"]::before { /* 📐 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4D0-triangle-ruler.png" );
}

:root.emojiPatch *[data-emoji="U23F1"]::before { /* ⏱️ */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U23F1-stopwatch.png" );
}

:root.emojiPatch *[data-emoji="U2139"]::before { /* ℹ️ */
	background-image: url( "/JSFiles/Polyfills/emoji/FB4/U2139-information.png" ); /* Using Facebook's version as it's prettier than Microsoft's. */
}

:root.emojiPatch *[data-emoji="U1F4D6"]::before { /* 📖 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4D6-open-book.png" ); /* Hmm, this one is 320x320px instead of 160x160px */
}

:root.emojiPatch *[data-emoji="U1F39E"]::before { /* 🎞️ */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F39E-film-frames.png" ); /* On my computer this appears differently in Chrome vs. Visual Studio. Let's use a Clapper board emoji (below) instead. */
}

:root.emojiPatch *[data-emoji="U1F3AC"]::before { /* 🎬 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F3AC-clapper-board.png" );
}

:root.emojiPatch *[data-emoji="U1F4BE"]::before { /* 💾 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F4BE-floppy-disk.png" );
}

/* CustomerTypes: */
:root.emojiPatch *[data-emoji="U1F9CD"]::before { /* 🧍 - IndividualPerson */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F9CD-standing-person.png" );
}
:root.emojiPatch *[data-emoji="U1F46A"]::before { /* 👪 - Family */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F46A-family.png" );
}
:root.emojiPatch *[data-emoji="U1F3E2"]::before { /* 🏢 - Organization */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F3E2-office-building.png" );
}
:root.emojiPatch *[data-emoji="U1F697"]::before { /* 🚗 - Internal/Fleet */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F697-automobile.png" );
}

:root.emojiPatch *[data-emoji="U1F3C1"]::before { /* 🚗 - Internal/Fleet */
	/* This is actually Google Android's emoji before Android 8 */
	background-image: url( "/JSFiles/Polyfills/emoji/Windows10-1903/U1F3C1-chequered-flag.png" );
}

/* Disabled. The emjoi is green but we want red.
:root.emojiPatch *[data-emoji="U2733"]::before { /* ✳️ - Required/Invalid Inspections in InspectionList * /
}
*/