@import url(https://fonts.googleapis.com/css?family=Lato:700);

/* ---------------------------------------------------------------
	Variables
   --------------------------------------------------------------- */
:root {
	--layout-header-height: 48px;
	--layout-sub-header-height: 48px;
	--layout-headers-height: var(--layout-header-height);
	--layout-main-stack-height: calc(100vh - var(--layout-header-height));
	--layout-main-padding: 20px clamp(16px, 4.166667vw, 32px);
	--tt-elevation-shadow-dialog: rgba(0, 0, 0, 0.22) 0px 25.6px 57.6px 0px, rgba(0, 0, 0, 0.18) 0px 4.8px 14.4px 0px;
}

code {
	font-size: 100%;
	font-style: italic;
	font-weight: bold;
	color: blue;
}

ol.home-list li {
	margin-bottom: 0.5rem;
}

/* ---------------------------------------------------------------
	Resets
   --------------------------------------------------------------- */
*,
*::before,
*::after {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

html, body {
	margin: 0;
	padding: 0;
	width: 100%;
	height: 100dvh;
	overflow: hidden;
	font-family: 'Segoe UI', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

a {
	text-decoration: none;
}

	a:hover {
		text-decoration: underline;
	}

fluent-select {
	min-width: 50px;
}

.error,
.error a,
.error a:hover,
.error svg {
	color: var(--error);
	fill: var(--error) !important;
}

.warning,
.warning a,
.warning a:hover,
.warning svg {
	color: var(--warning);
	fill: var(--warning) !important;
}


/* ---------------------------------------------------------------
	Layout
   --------------------------------------------------------------- */
.site-header {
	margin: 0 !important;
	padding: 0 !important;
	margin-bottom: 0 !important;
	width: 100%;
}

	.site-header .header-gutters {
		margin: 0 !important;
		padding: 0 !important;
		display: flex;
		gap: 4rem;
	}

	.site-header .title {
		margin: 5px 24px !important;
	}

	.site-header .fluent-persona {
		width: 48px !important;
		height: 48px !important;
	}

/* Not working with FluentUI 4, may work in v5
@media (prefers-color-scheme: light) {
	.site-header {
		background-color: var(--accent-base-color) !important;
	}

		.site-header fluent-button {
			background-color: var(--accent-base-color) !important;
		}
}

@media (prefers-color-scheme: dark) {
	.site-header {
		color: var(--neutral-foreground-rest) !important;
		background-color: skyblue !important;
	}
}
*/

[data-theme="light"] .site-header,
[data-theme="system-light"] .site-header {
	color: var(--fill-color);
}

	[data-theme="light"] .site-header .title a,
	[data-theme="system-light"] .site-header .title a {
		color: var(--fill-color) !important;
	}

	[data-theme="light"] .site-header fluent-button.custom-hdr-style::part(control),
	[data-theme="system-light"] .site-header fluent-button.custom-hdr-style::part(control) {
		border-radius: 0;
		background: var(--accent-fill-rest) !important;
	}

	[data-theme="light"] .site-header fluent-button svg,
	[data-theme="system-light"] .site-header fluent-button svg {
		fill: var(--fill-color) !important;
	}

[data-theme="dark"] .site-header,
[data-theme="system-dark"] .site-header {
	color: var(--neutral-foreground-rest) !important;
	background-color: var(--neutral-fill-layer-rest) !important;
}

	[data-theme="dark"] .site-header .title a,
	[data-theme="system-dark"] .site-header .title a {
		color: var(--neutral-foreground-rest) !important;
	}

	[data-theme="dark"] .site-header fluent-button::part(control),
	[data-theme="system-dark"] .site-header fluent-button::part(control) {
		background: var(--neutral-fill-layer-rest) !important;
	}

.site-stack {
	height: var(--layout-main-stack-height) !important;
	gap: 0 !important;
}

	.site-stack .left-nav {
		display: flex;
		flex-direction: column;
		background-color: var(--neutral-layer-2);
		height: 100% !important;
		padding-top: 0.5rem;
	}

		.site-stack .left-nav fluent-divider {
			margin-top: 1rem;
			margin-bottom: 1rem;
			border-top: calc(var(--stroke-width) * 1px) solid var(--neutral-stroke-divider-rest);
		}

		.site-stack .left-nav .site-version {
			display: flex;
			align-items: center;
			justify-content: center;
			min-height: 30px;
			font-size: var(--type-ramp-minus-2-font-size);
			max-width: 80px;
		}

	.site-stack main {
		/* flex: 1; */
		margin: 0;
		/* overflow: hidden; */
		/* align-items: flex-start; */
		overflow: auto;
		height: 100%;
		width: 100%;
		padding: var(--layout-main-padding) !important;
		background-color: var(--fill-color);
	}

.fluent-appbar {
	--appbar-item-size: 90 !important;
}

.fluent-appbar-item div[part="label"] {
	white-space: break-spaces;
}

.actions {
	display: flex;
	gap: 1rem;
}

.profile-popup {
	min-width: 350px;
}

	.profile-popup .initials {
		margin-left: 10px;
	}

/* ---------------------------------------------------------------
	Pages
   --------------------------------------------------------------- */
.animated-page {
	position: relative;
	animation: slideIn 0.2s ease-in forwards;
}

@keyframes slideIn {
	from {
		transform: translateX(100%);
		opacity: 0;
	}

	to {
		transform: translateX(0);
		opacity: 1;
	}
}

/* ---------------------------------------------------------------
	Page Toolbars
   --------------------------------------------------------------- */
.toolbar-total-items {
	display: flex;
	align-items: center;
	margin-right: 1rem;
	font-weight: bold !important;
	color: var(--info) !important;
}

/* ---------------------------------------------------------------
	Dialogs
   --------------------------------------------------------------- */
.fluent-messagebox .icon {
	align-self: flex-start;
	width: 48px !important;
}

/* ---------------------------------------------------------------
	Panels 
   --------------------------------------------------------------- */
.fluent-dialog-main[class~="right"]::part(control) {
	top: var(--layout-headers-height) !important;
	max-height: calc(100% - var(--layout-headers-height)) !important;
	border-top: 0 !important;
	box-shadow: var(--tt-elevation-shadow-dialog) !important;
	transition: left 0.25s ease 0s;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	overflow: hidden;
}

/* TODO 
.panel-fly-in::part(control) {
	left: calc(100% - var(--dialog-width)) !important;
}
*/

/* TODO check whether EditForms can live without this */
.tt-panel {
	display: flex;
	flex-direction: column;
	height: 100%;
}

	/* TODO create a PanelPersonaHeader and embed these */
	.tt-panel .fluent-dialog-header .fluent-persona .initials,
	.tt-panel .fluent-dialog-header .fluent-persona .initials img {
		border-radius: 8px !important;
	}

.tt-view-panel {
	display: flex;
	flex-direction: column;
	height: 100%;
}

	.tt-view-panel .fluent-dialog-footer {
		display: none;
		visibility: hidden;
	}

/* ---------------------------------------------------------------
	Tabs
   --------------------------------------------------------------- */
fluent-tabs::part(activeIndicator) {
	margin-top: 5px;
	width: 85%;
	height: 2px;
}

.tt-tabs fluent-tab-panel {
	margin: 0 calc((6 + (var(--design-unit) * 2 * var(--density))) * 1px);
	margin-top: -2px;
	padding: 0 !important;
}

/* ---------------------------------------------------------------
	Content Area
   --------------------------------------------------------------- */
.flex-col-group {
	display: flex;
	flex-direction: row;
	gap: 2rem;
}

	.flex-col-group > * {
		flex: 1;
	}

/* ---------------------------------------------------------------
	Validation
   --------------------------------------------------------------- */

.valid.modified {
	outline: none !important;
}

	.valid.modified:not([type=checkbox]) {
		outline: 1px solid #26b050;
	}

.invalid {
	outline: 1px solid red;
}

	.invalid, .invalid::part(root) {
		outline: none !important;
	}

.validation-message {
	color: red;
}

/* ---------------------------------------------------------------
	Components
   --------------------------------------------------------------- */
.opening-hours-switch {
	position: absolute;
	top: -20px;
	right: 10px;
}

.info-text-mt-0 h4 {
	margin-top: 0 !important;
}

/* ---------------------------------------------------------------
	Provider Cards
   --------------------------------------------------------------- */
.provider-grid {
}

	.provider-grid .card {
		overflow-wrap: break-word;
		-ms-text-overflow: inherit;
		-o-text-overflow: inherit;
		text-overflow: inherit;
	}

.provider-card-header {
	display: flex;
	justify-content: space-between;
}

/* ---------------------------------------------------------------
	Device Cards in Customer View
   --------------------------------------------------------------- */
.device-grid {
}

	.device-grid .card {
		overflow-wrap: break-word;
		-ms-text-overflow: inherit;
		-o-text-overflow: inherit;
		text-overflow: inherit;
		padding: 0.8rem 0.8rem;
		width: 350px;
		box-shadow: none;
		background-color: white;
	}

		.device-grid .card.inactive {
			background-color: #FDF6F3 !important;
			border: 1px solid #F4BFAB !important;
		}

		.device-grid .card .device-card-header {
			display: flex;
			justify-content: space-between;
		}

			.device-grid .card .device-card-header h3 {
				font-size: 130%;
			}

		.device-grid .card fluent-button::part(control) {
			background-color: var(--neutral-fill-layer-rest) !important;
		}

		.device-grid .card.inactive fluent-button::part(control) {
			background-color: #FDF6F3 !important;
		}

		.device-grid .card .device-card-content {
			display: flex;
			justify-content: space-between;
			align-items: center;
		}

			.device-grid .card .device-card-content img {
				width: auto;
				height: 140px;
			}

/* ---------------------------------------------------------------
	Generic
   --------------------------------------------------------------- */
.upper-case, .upper-case::part(control) {
	text-transform: uppercase;
}

.bt-1 {
	border-top: 1px solid var(--neutral-stroke-rest);
}

.flex {
	display: flex;
}

.flex-inline {
	display: inline-flex;
}

.flex-nowrap {
	flex-wrap: nowrap;
}

.flex-1 {
	flex: 1;
}

.flex-col {
	flex-direction: column;
}

.flex-row {
	flex-direction: row;
}

.gap-05 {
	gap: 0.5rem !important;
}

.gap-1 {
	gap: 1rem !important;
}

.gap-2 {
	gap: 2rem !important;
}

.gap-3 {
	gap: 3rem !important;
}

.h500 {
	height: 500px;
}

.h600 {
	height: 600px;
}

.pl-1 {
	padding-left: 1rem;
}

.pl-2 {
	padding-left: 2rem;
}

.pr-1 {
	padding-right: 1rem;
}

.pr-2 {
	padding-right: 2rem;
}

.pt-0 {
	padding-top: 0 !important;
}

.pt-1 {
	padding-top: 1rem !important;
}

.pt-2 {
	padding-top: 2rem !important;
}

.pt-2px {
	padding-top: 2px;
}

.pt-4px {
	padding-top: 4px;
}

.mb-0 {
	margin-bottom: 0 !important;
}

.mb-1 {
	margin-bottom: 1rem;
}

.mb-2 {
	margin-bottom: 2rem;
}

.mt-0 {
	margin-top: 0 !important;
}

.mt-1 {
	margin-top: 1rem;
}

.mt-2 {
	margin-top: 2rem;
}

.ml-1 {
	margin-left: 1rem;
}

.ml-2 {
	margin-left: 2rem;
}

.mr-05r {
	margin-right: 0.5rem;
}

.mr-1 {
	margin-right: 1rem;
}

.mr-2 {
	margin-right: 2rem;
}

.h-center {
	justify-content: center;
}

.v-center {
	align-items: center;
}

.min-w25 {
	min-width: 25%;
}

.min-w50 {
	min-width: 50%;
}

.w100 {
	width: 100%;
}

.nowrap {
	white-space: nowrap;
}

/* Cannot name this grid as this is used by fluent-grid */
.grid-section {
	--column-count: 1;
	display: grid;
	grid-template-columns: repeat(var(--column-count), 1fr);
}

	.grid-section[data-columns="1/2"] {
		--column-count: 2;
		grid-template-columns: 1fr 2fr;
	}

	.grid-section[data-columns="1.5/1"] {
		--column-count: 2;
		grid-template-columns: 1.5fr 1fr;
	}

	.grid-section[data-columns="2/1"] {
		--column-count: 2;
		grid-template-columns: 2fr 1fr;
	}

	.grid-section[data-columns="1/2/1"] {
		--column-count: 3;
		grid-template-columns: 1fr 2fr 1fr;
	}

	.grid-section[data-columns="2"] {
		--column-count: 2;
	}

	.grid-section[data-columns="3"] {
		--column-count: 3;
	}

	.grid-section[data-columns="4"] {
		--column-count: 4;
	}

	.grid-section[data-columns="5"] {
		--column-count: 5;
	}

	.grid-section[data-columns="6"] {
		--column-count: 6;
	}

	.grid-section > *[data-span="2"] {
		grid-column: 1 / 3;
	}

/* First column in grids displaying a row icon */
.grid-icon-column svg {
	margin-top: 5px;
}

.row-inactive,
.row-inactive a,
.row-inactive svg {
	color: var(--warning) !important;
	fill: var(--warning) !important;
}

.warning,
.warning a,
.warning svg {
	color: var(--warning) !important;
	fill: var(--warning) !important;
}

.desc {
	font-size: 12px;
	color: #666;
}

/* Container with centered text */
.center-container {
	display: flex;
	justify-content: center;
	align-items: center;
	text-align: center;
	height: 40%;
}

/* ---------------------------------------------------------------
	Changelog
   --------------------------------------------------------------- */
.changelog h2:not(:first-child) {
	margin-top: 5rem;
}

.changelog table {
	width: 100%;
	border: 1px solid var(--neutral-foreground-active);
}

	.changelog table th,
	.changelog table td {
		padding: 0.5rem;
		border: 1px solid var(--neutral-foreground-active);
	}

	.changelog table tr td:nth-child(1) {
		width: 100px;
	}

	.changelog table tr td:nth-child(2) {
		width: 150px;
	}

	.changelog table tr td:nth-child(3) {
		width: 150px;
	}

/* ---------------------------------------------------------------
	Blazor error
   --------------------------------------------------------------- */
.blazor-error-boundary {
	background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
	padding: 1rem 1rem 1rem 3.7rem;
	color: white;
}

	.blazor-error-boundary::after {
		content: "An error has occurred."
	}


#blazor-error-ui {
	background: lightyellow;
	bottom: 0;
	box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
	display: none;
	left: 0;
	padding: 0.6rem 1.25rem 0.7rem 1.25rem;
	position: fixed;
	width: 100%;
	z-index: 1000;
}

	#blazor-error-ui .dismiss {
		cursor: pointer;
		position: absolute;
		right: 0.75rem;
		top: 0.5rem;
	}
