:root {
	--white: #FFFFFF;
	--offWhite: #f6f6f6;
	--background: #efefef;
	--appAccentColor: #2955D0;
	--green: #29d09b;
	--orange: darkgoldenrod;
	--crimson: crimson;
	--blue: dodgerblue;
	--darkText: #303030;
	--lightText: #8f8f8f;
	--contextMenuBG: #FFFFFF;
	--btnPrimary: #2955D0;
	--btnPrimaryHover: #5b7fe2;
	--btnSecondary: #ebebeb;
	--btnSecondaryHover: #dddddd;
	--tableHeaderColor: #E0E3EB;

	--lightGray0: #E6E9EB;
	--lightGray1: #d6d6d6;
	--lightGray2: #bbbbbb;
	--lightGray3: #8d8d8d;
}

* {
	box-sizing: border-box;
	font-family: 'Open Sans', sans-serif, 'Noto Sans Symbols 2';
	color: var(--darkText);
	font-size: 14px;
}

body {
	display: flex;
	flex-direction: column;
	height: 100vh;
	padding: 0px;
	margin: 0px;
	background-color: var(--background);
}

h1 {
	font-size: 32px;
}

h2 {
	font-size: 24px;
}

h3 {
	font-size: 18px;
}

h4 {
	font-size: 16px;
}

h5 {
	font-size: 13px;
}

h6 {
	font-size: 11px;
}

h1, h2, h3, h4, h5, h6 {
	margin: 0px;
}

pre,
p {
	margin: 0px;
}

select {
	outline: none;
	border: 1px solid var(--lightGray2);
	border-radius: 7px;
	padding: 5px 7px;
	cursor: pointer;
}

input,
textarea,
multi-select-dropdown {
	outline: none !important;
	margin-top: 5px;
	border-radius: 7px;
}

textarea,
input:not([type=radio]):not([type="checkbox"]) {
	border: 1px solid var(--lightGray2);
	padding: 10px;
}

textarea {
	resize: none;
	height: 80px;
}

input::placeholder,
textarea::placeholder {
	color: #bababa;
}

input[type=checkbox] {
	background-color: var(--white);
	margin: 0px 10px !important;
	-webkit-appearance: none;
	appearance: none;
	display: grid;
	place-content: center;
	border: 1px solid var(--lightGray2);
	border-radius: 5px;
	padding: 5px;
	cursor: pointer;
}

input[type="checkbox"]::before {
	content: "";
	background-color: var(--appAccentColor);
	width: 17px;
	height: 17px;
	transform: scale(0);
	transition: transform 0.3s ease;
	transform-origin: center;
	clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

input[type="checkbox"]:checked::before {
	transform: scale(1);
}

select:disabled,
input:disabled {
	color: var(--lightGray2) !important;
	border-color: var(--lightGray2) !important;
}

.disabled,
button:disabled,
select:disabled,
input:disabled {
	cursor: not-allowed !important;
}

.w-100 {
	width: 100%
}

.clickTarget {
	cursor: pointer;
	width: fit-content;
}

.flex-vertical {
	display: flex;
	flex-direction: column;
}

.flex-horizontal {
	display: flex;
	flex-direction: row;
	align-items: center;
}

.clamp-OneLine {
	display: -webkit-box !important;
	-webkit-box-orient: vertical;
	overflow: hidden;
	-webkit-line-clamp: 1;
}

.clamp-TwoLines {
	display: -webkit-box !important;
	-webkit-box-orient: vertical;
	overflow: hidden;
	-webkit-line-clamp: 2;
}

.checkboxLabel {
	cursor: pointer;
	display: flex;
	flex-direction: row;
	align-items: center;
	margin: 10px 0px;
	font-weight: bold;
}

input[type=radio] {
	accent-color: var(--appAccentColor);
	width: 20px;
	height: 20px;
	margin: 0px 10px;
}

.requiredInput {
	position: relative;
	width: fit-content;
}

.requiredInput::after {
	content: "(Required)";
	color: firebrick;
	margin-left: 10px;
	font-size: 13px;
	font-weight: normal;
	font-style: italic;
}

#mainBanner {
	background-color: var(--white);
	height: 60px;
	width: 100%;
	padding: 0px 25px;
	display: none;
	align-items: center;
	box-shadow: 0px 5px 10px rgb(0 0 0 / 10%);
	z-index: 3;
}

#mainBanner.visible {
	display: flex;
}

#mainBanner img {
	height: 50px;
}

#mainContent {
	flex: 1;
	width: 100%;
	overflow: auto;
}

#mainContent.hidden {
	display: none !important;
}

.btn {
	border: none;
	border-radius: 10px;
	cursor: pointer;
	transition: background-color 0.3s ease;
	height: 40px;
	box-shadow: 3px 3px 6px rgb(0 0 0 / 30%);
	outline: none;
	user-select: none;
	margin: 3px 10px;
	padding: 0px 15px;
	white-space: nowrap;
}

.btn-primary {
	background-color: var(--btnPrimary);
	color: white;
}

.btn-primary:hover {
	background-color: var(--btnPrimaryHover);
}

.btn-secondary {
	background-color: var(--btnSecondary);
}

.btn-secondary:hover {
	background-color: var(--btnSecondaryHover);
}


/* CUSTOM SCROLL BAR */
.customScrollBar {
	border-color: rgba(0, 0, 0, 0);
	transition: border-color 0.5s linear;
	overflow-y: overlay;
}

.customScrollBar.horizontal {
	overflow-x: overlay;
}

.customScrollBar:hover {
	border-color: rgba(0, 0, 0, 0.3);
}

.customScrollBar.customScrollBar-darkMode:hover {
	border-color: rgba(255, 255, 255, 0.3) !important;
}

.customScrollBar::-webkit-scrollbar-thumb {
	/* inherit border-color to inherit transitions */
	border-color: inherit;
	border-style: solid;
	border-width: 12px;
	border-radius: 12px;
	background-color: transparent;
}

.customScrollBar::-webkit-scrollbar, .customScrollBar::-webkit-scrollbar-corner {
	background: rgba(0, 0, 0, 0);
	max-width: 12px;
}

.customScrollBar.horizontal::-webkit-scrollbar, .customScrollBar.horizontal::-webkit-scrollbar-corner {
	background: rgba(0, 0, 0, 0);
	max-height: 12px;
}

/* CONTEXT MENU */
.contextmenu-container {
	position: absolute;
	top: 0;
	user-select: none;
	z-index: 9999;
	background-color: var(--contextMenuBG);
	margin: 0px;
	padding: 10px 0px 10px 0px;
	width: auto;
	min-width: 250px;
	box-shadow: 0px 3px 12px 5px rgb(0 0 0 / 25%);
	font-size: 14px;
	color: var(--fontColorDark);
	border-radius: 7px;
	border: 1px solid var(--lightGray3);
	font-family: 'Open Sans', sans-serif, 'Noto Sans Symbols 2';
	transform: scale3d(0.85, 0.85, 0.85);
	opacity: 0;
	transform-origin: top left;
	outline: none;
}

.contextmenu-container.dropdownAnimation {
	transform: scale3d(1, 0.85, 0.85);
}

.contextmenu-container.visible {
	transform: scale3d(1, 1, 1) !important;
	opacity: 1;
	transition: transform 0.2s ease, opacity 0.2s ease;
}

.contextmenu-container.visible.no-animation {
	transition: none !important;
}

.contextmenu-divider {
	width: 100%;
	margin: 3px 0px;
	height: 0.5px;
	border: none;
	background: #bbbbbb;
}

.contextmenu-text {
	margin: 0px 20px 0px 10px;
	padding: 5px 10px;
	pointer-events: none;
	white-space: nowrap;
}

.contextmenu-extraText {
	margin: 0;
	padding: 5px 30px 5px 10px;
	color: var(--lightGray2);
	font-size: 14px;
	pointer-events: none;
}

.contextmenu-item {
	width: 100%;
	height: 100%;
	display: flex;
	justify-content: space-between;
	cursor: default;
	align-items: center;
}

.contextmenu-item.hidden {
	display: none !important;
}

.contextmenu-item.disabled * {
	color: silver;
	font-style: italic;
}

.contextmenu-caret {
	position: absolute;
	right: 10px;
	font-style: normal !important;
	font-family: "Font Awesome 5 Free";
	font-weight: bold;
	color: var(--fontColorDark);
	pointer-events: none;
}

.contextmenu-item-focus {
	background-color: #DFDFDF;
}

.contextmenu-item.hover {
	background-color: #DFDFDF;
}

.contextmenu-item.hover.disabled {
	background-color: transparent;
}

.alertBanner {
	height: 0px;
	opacity: 0;
	transition: height 0.5s ease, opacity 0.5s ease;
	width: 100%;
	flex: 0 0 auto;
	z-index: 3;
	display: flex;
	align-items: center;
	justify-content: center;
	user-select: none;
	position: fixed;
	pointer-events: none;
}

.modal .alertBanner {
	top: 0px;
}

.alertBanner>div {
	display: flex;
	position: relative;
	width: fit-content;
	max-width: 100vw;
	align-items: center;
	justify-content: center;
	text-align: center;
	height: 100%;
	padding: 0px 20px;
	box-shadow: 0px 7px 15px rgb(0 0 0 / 25%);
	border-radius: 0px 0px 7px 7px;
	pointer-events: all;
}

.alertBanner>div>span {
	overflow: hidden;
	text-overflow: ellipsis;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	-webkit-box-orient: vertical;
	color: var(--white);
	visibility: hidden;
}

.alertBanner.active>div>span {
	visibility: visible;
}

.alertBanner.active {
	height: 40px;
	opacity: 1;
}

.alertBanner>div>i {
	font-family: "Font Awesome 5 Free";
	font-weight: bold;
	content: "\f00d";
	right: 25px;
	cursor: pointer;
	user-select: none;
	display: none;
	color: var(--white);
	margin-left: 20px;
}

.alertBanner.active>div>i {
	display: block;
}

.invalidInput {
	background-color: #ed143d26;
}

.modal {
	position: fixed;
	top: 0px;
	left: 0px;
	width: 100vw;
	height: 100vh;
	z-index: 999;
	display: flex;
	align-items: center;
	justify-content: center;
}

.modal.modalHidden {
	pointer-events: none !important;
}

.modalPageMask {
	position: fixed;
	top: 0px;
	left: 0px;
	height: 100%;
	width: 100%;
	background-color: rgba(0, 0, 0, 0.7);
	backdrop-filter: blur(2px);
	transition: background-color 0.4s ease;
}

.modalPageMask.modalHidden {
	background-color: transparent;
	backdrop-filter: none;
	transition: background-color 0.4s ease;
	pointer-events: none !important;
}

.modalBody {
	opacity: 1;
	background-color: var(--white);
	min-width: 300px;
	min-height: 200px;
	max-height: calc(100vh - 40px);
	border-radius: 10px;
	transition: opacity 0.4s ease, transform 0.4s ease;
	padding: 15px;
	position: fixed;
	display: flex;
	flex-direction: column;
	width: 500px;
}

.modalBody.modalHidden {
	transform: translate3d(0px, 50px, 0px);
	opacity: 0;
	transition: opacity 0.4s ease, transform 0.4s ease;
	pointer-events: none !important;
}

.modalBody.fullscreen {
	width: 100vw;
	height: 100vh;
	border-radius: 0px;
	max-height: none;
	max-width: none;
}

.modalBody header {
	display: flex;
	width: 100%;
	padding-bottom: 5px;
	margin-bottom: 5px;
	border-bottom: 1px solid var(--lightGray1);
	padding-right: 40px;
	align-items: center;
}

.modalBody .modalTitleBackButton {
	color: var(--appAccentColor);
	cursor: pointer;
	user-select: none;
	margin: 0px 25px 0px 15px;
	font-weight: bold;
	font-size: 16px;
	transition: transform 0.3s ease;
}

.modalBody .modalTitleBackButton:hover {
	transform: scale3d(1.2, 1.2, 1.2);
}

.modalBody .modalTitleBackButton:before {
	font-family: "Font Awesome 5 Free";
	font-weight: bold;
	content: "\f060";
	margin-right: 5px
}

.modalBody .modalCloseButton {
	position: absolute;
	top: 15px;
	right: 15px;
	cursor: pointer;
	user-select: none;
	width: 25px;
	height: 25px;
	display: flex;
	align-items: center;
	justify-content: center;
}

.modal .modalCloseButton:hover {
	color: firebrick;
}

.modalBody .modalContent input {
	margin-bottom: 20px;
}

.modalBody .modalContent {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: 10px;
}

.modalBody .inputLabel {
	margin-left: 5px;
	font-weight: bold;
}

.modalBody .inputOptionalDecorator,
.modalBody .inputInfoLabel {
	color: var(--lightText);
	font-style: italic;
	font-size: 13px;
}

.modalBody .inputOptionalDecorator {
	font-weight: normal;
	margin-left: 5px;
}

.modalBody .modalButtonsDiv {
	display: flex;
	flex-direction: row;
	justify-content: flex-end;
	margin: 20px 0px 5px 0px;
}

.modalBody .modalButtonsDiv button {
	width: 150px;
	margin: 0px 10px;
}

.confirmationModal p {
	margin: 20px 0px;
}

.selectionGrid {
	display: grid;
	border: 1px solid silver;
	border-radius: 10px;
	height: 200px;
	grid-auto-rows: max-content;
	margin-bottom: 15px;
}

.selectionGridRow {
	padding: 7px 10px;
	cursor: pointer;
	background-color: var(--white);
}

.selectionGridRow.alternateGridRow {
	background-color: var(--offWhite);
}

.selectionGridRow.activeGridRow {
	background-color: #1e90ff3b !important;
	color: #FFFFFF;
}

table th {
	background-color: var(--tableHeaderColor);
	padding: 15px 10px;
	position: sticky;
	top: 0px;
}

thead {
	background-color: var(--tableHeaderColor);
}

table {
	white-space: nowrap;
	border-collapse: collapse;
	overflow: auto;
}

li.bullet::before {
	content: "●";
	color: var(--darkText);
	margin-right: 10px;
}

.chip {
	padding: 1px 3px;
	background-color: var(--offWhite);
	width: fit-content;
	max-width: 100%;
	text-overflow: ellipsis;
	white-space: nowrap;
	overflow: hidden;
	border: 1px solid var(--lightGray1);
	border-radius: 5px;
	font-size: 13px;
	margin: 2px 5px;
}

.chipContainer {
	display: flex;
	flex-flow: wrap;
	align-items: center;
	margin: 0px 10px;
}

.tableTooltip {
	position: absolute;
	background-color: rgba(0, 0, 0, 0.80);
	color: white;
	padding: 10px 15px;
	border-radius: 5px;
	pointer-events: none;
	font-size: 12px;
	z-index: 9999;
}

.tableTooltipTitle {
	font-size: 12px;
	color: white;
	font-weight: bold;
	margin-right: 5px;
}