@layer patterns {
	.btn-set {
		flex-wrap: nowrap;
		-webkit-display: flex;
		display: flex;
		margin-left: .5px;
		margin-right: .5px;
		box-sizing: border-box;

		&.center {
			justify-content: center;
		}

		&.right {
			justify-content: end;
		}

		&.wrap {
			& > :is(a, span, input, label, button) {
				line-height: 1.3em;
				white-space: wrap;
				overflow: hidden;
				text-overflow: ellipsis;
			}
		}

		& > :is(a, span, input, label, button) {
			height: 28px;
			border: none;
			outline: none;
			display: flex;
			font-size: 1em;
			padding: 0px 10px;
			position: relative;
			margin-left: -.5px;
			margin-right: -.5px;
			white-space: nowrap;
			align-items: center;
			background-color: transparent;
			color: var(--root-font-color);
			transition: background-color var(--transition-speed) ease, color var(--transition-speed) ease;

			&.highlight {
				background-color: var(--bomtable-hover-color);
			}

			&.flex {
				flex: 1;
			}

			&:not(:disabled) {
				&:hover {
					text-decoration: none;
					border-color: var(--input-hover_border-color);
				}

				&:focus {
					border-color: var(--input-active_border-color);
				}

				&:active {
					border-color: var(--input-active_border-color);
				}
			}

			&.standard,
			&.default {
				border: none;
				color: var(--root-link-color);
				background-color: transparent;
				cursor: pointer;

				&:hover {
					text-decoration: underline;
				}
			}
		}

		& > :is(input[type=button], button, a) {
			z-index: 1;

			&:not(:disabled) {
				&:hover {
					text-decoration: none;
					z-index: 2;
				}

				&:focus {
					outline: solid 2px var(--outline-border-color);
					outline-offset: 1px;
					z-index: 3;
				}

				&:active {
					transform: translateY(0.08rem);
					z-index: 4;
				}
			}
		}

		& > div {
			display: contents;
		}

		& > span {
			white-space: nowrap;
			color: var(--color-font);

			&.gap {
				background-color: transparent;
				border: none;
				flex: 1;
				box-shadow: none;
			}
		}

		& > label {
			height: 36px;
		}

		& > textarea {
			border: none;
			font-size: 1em;
			padding: 7px 6px;
			border-bottom: solid 2px var(--input_border-color);
			background-color: transparent;

			&.flex {
				flex: 1;
			}
		}

		& > input[type=text],
		& > input[type=password],
		& > input[type=date],
		& > input[type=number] {
			border-bottom: solid 2px var(--input_border-color);
		}

		& > button {
			padding: 0px 20px;
			border-color: transparent;
			color: var(--button-font-color);
			background-color: var(--button-bgcolor);
			display: inline-block;
		}

		& > a,
		& > input[type=button] {
			padding: 0px 15px;
			border: solid 1px var(--input_border-color);
			background-color: var(--input_background-color);
		}

		input[disabled],
		textarea[disabled],
		button[disabled] {
			background-color: var(--button_disabled-bgcolor) !important;
			color: var(--root-font-lightcolor) !important;

			&::after,
			&::before {
				color: var(--root-font-lightcolor) !important;
			}

			/* background-color: var(--button_disabled-bgcolor) !important;
				border-color: var(--static-border); */
		}

		& > button,
		& > :is(a, span, input, label, textarea),
		& > span.slo-wrap {

			&:is(button):first-child,
			&.edge-left,
			& > button {
				border-top-left-radius: var(--input_border-radius);
				border-bottom-left-radius: var(--input_border-radius);
			}

			&:is(button):last-child,
			&.edge-right,
			& > button {
				border-top-right-radius: var(--input_border-radius);
				border-bottom-right-radius: var(--input_border-radius);
			}
		}

		& > a,
		& > span,
		& > button {
			&:disabled {
				color: rgba(125, 125, 125, .7) !important;
				background-color: var(--button_disabled-bgcolor) !important;
				pointer-events: none;
			}

			&.blue {
				border: none;
				background-color: var(--button-bgcolor);
				color: var(--button-font-color);

				&:not(:disabled):hover {
					background-color: var(--button_hover-bgcolor);
				}

				&:focus {
					background-color: var(--button_focus-bgcolor);
				}
			}

			&.red {
				border: none;
				background-color: var(--buttonred-bgcolor);
				color: var(--buttonred-font-color);

				&:not(:disabled):hover {
					background-color: var(--buttonred_hover-bgcolor);
				}

				&:focus {
					background-color: var(--buttonred_focus-bgcolor);
				}
			}

			&.green {
				border: none;
				background-color: var(--buttongreen-bgcolor);
				color: var(--buttongreen-font-color);

				&:not(:disabled):hover {
					background-color: var(--buttongreen_hover-bgcolor);
				}

				&:focus {
					background-color: var(--buttongreen_focus-bgcolor);
				}
			}

			&.standard,
			&.default {
				background-color: var(--input_background-color);
				border: solid 1px var(--input_border-color);
				padding-bottom: 2px;
				cursor: default;
				color: var(--root-font-color);

				&.error::before {
					color: var(--buttonred_focus-bgcolor) !important;
				}

				&::before {
					color: var(--root-link-color);
				}

				&:not(:disabled):hover {
					border-color: var(--input-hover_border-color);
					background-color: var(--input_background-color);
					color: var(--root-font-color);
				}

				&:focus {
					border-color: var(--input-hover_border-color);
					background-color: var(--input_background-color);
					color: var(--root-font-color);
				}
			}
		}

		& > :is(button, a, span):is(.success, .plus, .error, .search, .filter, .lock, .unlock, .save, .load, .print, .hourglass, .edit) {
			&::before {
				display: inline-block;
				align-content: center;
				font-family: glyphs;
				font-size: 1.1em;
				position: relative;
				top: 0px;
			}

			&:is(button)::before {
				top: 2px;
			}

			&.space::before,
			&.adaptive::before,
			&.spacing::before {
				margin-right: 8px;
			}

			&.save::before {
				content: "\e977";
				color: rgb(0, 100, 181);
				font-size: 0.9em;
				vertical-align: top;
			}

			&.success::before {
				content: "\e900";
				color: rgb(30, 160, 40);
			}

			&.edit::before {
				content: "\e94b";
				color: rgb(30, 160, 40);
				font-size: 0.9em;
				vertical-align: top;
			}

			&.hourglass::before {
				content: "\e97f";
				color: rgb(220, 200, 30);
			}

			&.plus::before {
				content: "\e902";
				color: var(--root-link-color);
			}

			&.print::before {
				content: "\e970";
				color: var(--root-font-color);
			}

			&.error::before {
				content: "\e901";
				color: rgb(195, 45, 50);
			}

			&.lock::before {
				content: "\e982";
				color: rgb(150, 150, 150);
			}

			&.load::before {
				content: "\e995";
			}

			&.search::before {
				content: "\e904";
			}

			&.filter::before {
				content: "\e93c";
			}

			&.unlock::before {
				content: "\e983";
			}

			&:is(.red, .green, .blue)::before,
			:is(button:not(.standard))&::before {
				color: var(--button-font-color);
			}
		}

		& > input.pagination {
			font-family: glyphs;
			font-size: 1.1em
		}

		& > label {
			position: relative;
			height: 28px;
			-webkit-touch-callout: none;
			-webkit-user-select: none;
			-khtml-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none;
			border-left: solid 1px transparent !important;
			border-right: solid 1px transparent !important;

			&:has(input[type=checkbox]:disabled) {
				pointer-events: none;
			}

			&.disabled {
				color: var(--root-font-lightcolor) !important;
			}

			&:hover,
			&:has(input[type=checkbox]:focus) {
				background-color: var(--placeholder-bgcolor);
				z-index: 2;
			}

			&:has(input[type=checkbox]:focus),
			&:focus,
			&:has(input[type=checkbox]:active),
			&:active {
				outline: solid 2px var(--outline-border-color);
				z-index: 3;
			}

			&:has(input[type=checkbox]:active),
			&:active {
				transform: translateY(0.08rem);
			}

			> input[type=checkbox],
			> input[type=radio] {
				appearance: none;
				padding-right: 20px;
				outline: none;

				&::before {
					content: " ";
					display: block;
					position: absolute;
					border: solid 3px var(--input_border-color);
					border-radius: 10px;
					height: 10px;
					width: 10px;
					left: 10px;
					top: 6px;
					outline: none;
					transition: background-color var(--transition-speed) ease, color var(--transition-speed) ease;
				}

				&:hover::before {
					background-color: var(--bomtable-background-color);
					border-color: var(--input-hover_border-color);
				}

				&:disabled::before {
					border-color: var(--input_border-color) !important;
				}

				&:disabled::after {
					background-color: var(--input_border-color)
				}

				&::after {
					content: " ";
					border-radius: 10px;
					background-color: var(--root-link-color);
					position: absolute;
					left: 15px;
					top: 11px;
					width: 6px;
					height: 6px;
					transform: scale(0);
					transition: background-color var(--transition-speed) ease, color var(--transition-speed) ease, border-color var(--transition-speed) ease, transform var(--transition-speed) ease;
				}

				&:checked::before {
					border-color: var(--root-link-color);
				}

				&:checked::after {
					transform: scale(1);
				}
			}
		}

		&.small {

			& > a,
			& > input,
			& > span,
			& > label,
			& > div,
			& > textarea,
			& > button {
				padding: 0px 8px;
				height: 28px !important;
				vertical-align: middle;
			}

			& > label {
				height: 26px !important;
			}
		}
	}

	/* #endregion - Glyphs*/
	input[type="number"]::-webkit-inner-spin-button,
	input[type="number"]::-webkit-outer-spin-button {
		/* -webkit-appearance: none;  */
		-webkit-appearance: none;
		-moz-appearance: none;
		appearance: none;
		margin: 0;
	}

	.slo-container {
		position: absolute;
		min-width: 100%;
		display: none;
		background-color: var(--slo-menu-background-color);
		margin-top: 2px;
		margin-bottom: 0px;
		color: var(--root-font-color);
		border: solid 1px var(--input_border-color);
		/* border-color: rgba(82, 168, 236, 1); */
		box-shadow: 0px 0px 8px rgba(50, 50, 50, 0.1);
		border-radius: var(--input_border-radius);
		transform: translateY(10px);
		opacity: 0;
		transition: transform .3s, opacity .3s;
		z-index: 20;

		&.listvisibletop {
			transform: translateY(0px);
			opacity: 1;
			top: 100%;
			bottom: auto;
			z-index: 1000 !important;
		}

		&.listvisiblebottom {
			transform: translateY(-5px);
			opacity: 1;
			top: auto;
			bottom: 100%;
		}

		& > div {
			display: block;
			border: none;
			padding: 12px 8px;
			cursor: pointer;
			margin: 3px;
			border-radius: var(--input_border-radius);
			background-color: var(--slo-menu-background-color);

			&:hover {
				background-color: var(--slo-menu-itemhover-background-color);
			}

			&.active {
				background-color: var(--slo-menu-itemactive-background-color);
			}

			> p {
				display: none;
			}

			> span {
				color: var(--root-font-lightcolor);
				display: block;
				padding-top: 8px;
			}
		}
	}

	.slo-wrap,
	.btn-set > span.slo-wrap {
		display: inline-block;
		position: relative;
		background-color: transparent;
		padding: 0px;
		border: none;

		& > input[type=text],
		& > input[type=number],
		& > input[type=password],
		& > input[type=date] {
			height: 100%;
			position: relative;
			outline: none;
			border: none;
			border-radius: 0;
			/* var(--input_border-radius); */
			border-bottom: solid 2px var(--input_border-color);
			border-color: var(--input_border-color);
			transition: border 0s;
			width: 100%;
			color: var(--root-font-color);
			background-color: transparent;
			padding: 0px 10px;
			padding-right: 25px;
			font-size: 1em;
		}

		& > input[type=text]:not(:disabled):hover,
		& > input[type=number]:not(:disabled):hover,
		& > input[type=password]:not(:disabled):hover,
		& > input[type=date]:not(:disabled):hover {
			border-color: var(--input-hover_border-color);
		}

		& > input[type=text]:not(:disabled):focus,
		& > input[type=number]:not(:disabled):focus,
		& > input[type=password]:not(:disabled):focus,
		& > input[type=date]:not(:disabled):focus {
			border-color: var(--input-active_border-color);
			/* -webkit-box-shadow: 0 0 4px rgba(82, 168, 236, .7);
	-moz-box-shadow: 0 0 4px rgba(82, 168, 236, .7);
	box-shadow: 0 0 4px rgba(82, 168, 236, .7); */
		}

		& > input[type=text]:disabled,
		& > input[type=number]:disabled,
		& > input[type=password]:disabled,
		& > input[type=date]:disabled {
			background-color: var(--button_disabled-bgcolor);
		}

		&:after {
			font-family: "icomoon4";
			text-align: center;
			display: flex;
			align-items: center;
			position: absolute;
			pointer-events: none;
			height: 100%;
			content: " ";
			color: #fff;
			margin: 0;
			padding: 0;
			top: 0px;
			right: 10px;
			z-index: 5;
		}

		&.valid:after {
			content: "\EA10";
			font-size: 12px;
			color: dodgerblue;
		}

		&.unvalid:after {
			content: "\EA0F";
			font-size: 10px;
			color: crimson;
		}

		&.slo-select:after,
		&.valid.slo-select:after,
		&.unvalid.slo-select:after {
			font-family: "icomoon";
			content: "\e619";
			font-size: 20px;
			color: dodgerblue;
		}

		&.slo-select > input {
			-webkit-touch-callout: none;
			-webkit-user-select: none;
			-khtml-user-select: none;
			-moz-user-select: none;
			-ms-user-select: none;
			user-select: none;
			cursor: default;
		}
	}

	@media only screen and (max-width: 624px) {
		.btn-set > :is(button, a, span):is(.success, .plus, .error, .search, .filter, .lock, .unlock, .save, .load, .print, .hourglass, .edit) {
			&.adaptive {
				&::before {
					margin-right: 0px;
				}

				> span {
					display: none;
				}
			}
		}

		.btn-set {
			&.mediabond-buttonset {
				flex-wrap: wrap;
			}

			&.mediabond-buttonset > * {
				margin-bottom: 10px;
			}

			&.mediabond-buttonset > span.gap {
				display: none;
			}

			&.mediabond-buttonset > span.gap + * {
				margin-left: 0px;
			}

			& > input,
			& > a,
			& > span,
			& > button,
			& > div,
			& > label {
				height: 35px;
			}

			& > label {

				> input[type=checkbox],
				> input[type=radio] {
					&::before {
						top: 9px;
					}

					&::after {
						top: 14px;
					}
				}
			}
		}
	}
}