.loader {
	display: flex;
	justify-content: center;
	align-items: center;
	padding-top: 10vh;
}

/* Dashboard task-card container; global so the spacing also applies to the
   skeleton loader while no SaActionBlock is rendered yet */
.sa_action_blocks_container {
	display: flex;
	flex-direction: column;
}

	/* Margins instead of flex gap: gap is ignored by Android WebView < 84 (older scanners) */
	.sa_action_blocks_container > * + * {
		margin-top: 14px;
	}

.skeleton-shimmer {
	background: linear-gradient(90deg, #EEF0F4 25%, #F9FAFD 45%, #EEF0F4 65%);
	background-size: 400px 100%;
	animation: skeleton-shimmer 1.3s ease-in-out infinite;
}

@keyframes skeleton-shimmer {
	from {
		background-position: -400px 0;
	}

	to {
		background-position: 400px 0;
	}
}

.skeleton-card {
	display: flex;
	align-items: center;
	gap: 16px;
	border-radius: 12px;
	background: #FFF;
	padding: 18px 20px;
	box-shadow: 0 1px 2px rgba(16, 32, 64, .04), 0 6px 18px rgba(16, 32, 64, .06);
}

.skeleton-icon {
	width: 46px;
	height: 46px;
	border-radius: 12px;
	flex: none;
	margin: 0 5px;
}

.skeleton-circle {
	width: 29px;
	height: 29px;
	border-radius: 50%;
	flex: none;
}

.skeleton-tile {
	width: 40px;
	height: 40px;
	border-radius: 12px;
	flex: none;
}

.skeleton-lines {
	flex: 1;
	min-width: 0;
}

.skeleton-line {
	border-radius: 4px;
}

.skeleton-line-title {
	height: 18px;
	width: 55%;
}

.skeleton-line-sub {
	height: 13px;
	width: 40%;
	margin-top: 10px;
}

.skeleton-line-row {
	height: 13px;
	width: 100%;
	margin-top: 14px;
}

.skeleton-list {
	display: flex;
	flex-direction: column;
	gap: 14px;
	padding: 16px 0;
}

/* Calm cross-page transition: only the CONTENT area fades in on navigation,
   so the fixed chrome (blue header, bottom menu) stays rock-steady like a
   native app. Fast and opacity-only: a transform would become a containing
   block for position:fixed children (floating buttons, footers). */
[class*="page-container-with-"] {
	animation: page-fade-in .16s ease-out both;
}

@keyframes page-fade-in {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

.header-skeleton-line {
	display: inline-block;
	width: 140px;
	height: 11px;
	border-radius: 6px;
	background: linear-gradient(90deg, rgba(255, 255, 255, .18) 25%, rgba(255, 255, 255, .32) 45%, rgba(255, 255, 255, .18) 65%);
	background-size: 400px 100%;
	animation: skeleton-shimmer 1.3s ease-in-out infinite;
}

.sa_button {
	color: white;
	border-radius: 12px;
	padding: 20px 70px;
	font-size: 25px;
	text-wrap: nowrap;
	width: 100%;
	height: 60px;
	border-width: 3px;
	font-size: 18px;
	border-style: solid;
}

.sa_img_button {
	display: flex;
	align-items: center;
	justify-content: center;
}

.sa_button_red {
	background-color: var(--lt-base-red);
}

.sa_small {
	font-size: 14px !important;
	width: 120px !important;
	height: 40px !important;
}

.sa_button_outline {
	background: transparent;
	border-style: solid;
	border-width: 3px;
	border-radius: 12px;
	padding: 20px 70px;
	font-size: 25px;
	text-wrap: nowrap;
	width: 100%;
	height: 60px;
}

.sa_logo_corner {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 10px;
	align-self: flex-start;
	margin-bottom: 20px;
}

.sa_logo {
	width: 40px;
	height: 40px;
}

.sa_logo_corner > p {
	color: var(--lt-base-blue);
	text-align: center;
	font-size: 20px;
	font-style: normal;
	font-weight: 600;
	line-height: 160%; /* 32px */
}

.sa_textfield_wrapper {
	display: flex;
	flex-direction: column;
	align-items: start;
	gap: 5px;
	min-height: 56px;
	position: relative;
}

.sa_password_toggle_button {
	position: absolute;
	top: 47px;
	right: 20px;
	background: none;
	border: none;
	cursor: pointer;
	font-size: 14px;
	z-index: 9999;
}

.sa_textfield {
	border-radius: 8px;
	width: 100%;
	background-color: var(--lt-black-white);
}

.sa_textfield_input {
	padding: 15px;
	border-radius: 8px;
	font-size: 12px;
}

.sa_textfield_label {
	font-size: 16px;
	font-style: normal;
	font-weight: 500;
	line-height: 160%;
	color: var(--lt-base-blue);
}

.sa_link {
	color: var(--lt-base-blue);
	font-size: 25px;
	font-style: normal;
	font-weight: 400;
	line-height: 160%;
	text-decoration-line: underline;
	text-decoration-style: solid;
	text-decoration-skip-ink: auto;
	text-decoration-thickness: auto;
	text-underline-offset: auto;
	text-underline-position: from-font;
}

.sa_textfield_error {
	position: absolute;
	right: 45px;
	margin-top: 55px;
}

.error-border {
	border: 2px solid var(--lt-base-red);
}

.sa-switch {
	display: flex;
	flex-direction: row;
	align-items: center;
	width: 65%;
}

/* Same visual language as SaErrorPanel on the login page: soft red tint,
   red icon and red text instead of the old hard red border */
.sa_error_badge {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	width: 100%;
	box-sizing: border-box;
	background: rgba(236, 85, 85, .08);
	border-radius: 12px;
	padding: 13px 14px;
	animation: sa-error-badge-enter .25s ease both;
}

.sa_error_badge_icon {
	flex: none;
	margin-top: 1px;
}

.sa_error_badge .errormessage {
	font-family: 'DM Sans';
	font-size: 12.5px;
	font-weight: 600;
	line-height: 150%;
	color: #EC5555;
	margin: 0;
	min-width: 0;
}

@keyframes sa-error-badge-enter {
	from {
		opacity: 0;
		transform: translateY(6px);
	}

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

.sa_icon_btn {
	border-radius: 99px;
	display: flex;
	justify-content: center;
	align-items: center;
	border: 0;
	cursor: pointer;
}

.floating_button {
	animation: floating-button-enter .35s ease .1s both;
}

.floating_button .sa_icon_btn {
	box-shadow: 0 12px 30px rgba(15, 59, 160, .34), 0 3px 8px rgba(15, 59, 160, .24);
	transition: transform .16s ease, box-shadow .2s ease;
	-webkit-tap-highlight-color: transparent;
}

.floating_button .sa_icon_btn:active {
	transform: scale(.96);
}

@keyframes floating-button-enter {
	from {
		opacity: 0;
		transform: translateY(8px);
	}

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

.sa_menu_item {
	width: 100%;
	height: 56px;
	background: var(--lt-black-white);
	display: flex;
	justify-content: space-between;
	align-content: flex-start;
	flex-direction: row;
	padding: 15px 25px;
}

.top_row {
	border-top-left-radius: 8px;
	border-top-right-radius: 8px;
}

.top_row,
.middle_row {
	border-bottom: 1px solid var(--lt-base-background);
}

.bottom_row {
	border-bottom-left-radius: 8px;
	border-bottom-right-radius: 8px;
}

.sa_select {
	width: 100%;
	height: 100%;
	padding: 5px 16px;
	appearance: none;
	background: white;
	border: 1px solid var(--lt-black-gray);
	border-radius: 4px;
}

.sa-card {
	border-radius: 12px;
	background-color: var(--lt-black-white);
	box-shadow: 0 67px 40px 0 rgba(199, 202, 220, 0.05), 0 30px 30px 0 rgba(199, 202, 220, 0.09), 0 7px 16px 0 rgba(199, 202, 220, 0.10);
	border: 1px solid var(--lt-base-blue-accent-3);
}

.sa-card-header {
	display: flex;
	justify-content: space-between;
	color: var(--lt-base-blue);
}

.sa-card-content {
	padding: 20px 15px;
	border-radius: 12px;
	border: 1px solid #E1E5F0;
}

.sa-card-item-content {
	padding-top: 1rem;
	display: flex;
	font-size: 13px;
	align-items: center;
}

.sa-card-content.center {
	align-items: center;
}

.sa-card-information {
	padding-left: 1vh;
	color: var(--lt-black);
	font-size: 16px;
	font-style: normal;
	font-weight: 400;
	line-height: 160%;
}

.sa-card-title {
	font-size: 20px;
	font-style: normal;
	font-weight: 600;
	line-height: 160%;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.mud-main-content {
	padding-top: 0px !important;
	min-height: 100vh !important;
	display: flex;
	flex-direction: column;
}
/* MudBlazor snackbars restyled to the StoreAssist look: white card with a
   colored accent per severity instead of the default filled bars */
.mud-snackbar {
	background: #fff !important;
	color: #252525 !important;
	border: 1px solid #E1E5F0 !important;
	border-radius: 12px !important;
	box-shadow: 0 12px 32px rgba(12, 25, 50, .16), 0 2px 6px rgba(12, 25, 50, .08) !important;
	font-family: 'DM Sans', sans-serif !important;
	font-size: 13.5px !important;
	font-weight: 500 !important;
	line-height: 1.45;
	padding: 6px 14px !important;
	min-height: 0 !important;
}

.mud-snackbar .mud-snackbar-content-message {
	padding: 10px 4px;
}

.mud-snackbar .mud-snackbar-icon {
	margin-right: 10px;
}

.mud-snackbar.mud-alert-filled-success {
	border-left: 4px solid #2E9E5B !important;
}

.mud-snackbar.mud-alert-filled-success .mud-snackbar-icon svg {
	fill: #2E9E5B;
}

.mud-snackbar.mud-alert-filled-error {
	border-left: 4px solid #D64545 !important;
}

.mud-snackbar.mud-alert-filled-error .mud-snackbar-icon svg {
	fill: #D64545;
}

.mud-snackbar.mud-alert-filled-warning {
	border-left: 4px solid #E6A817 !important;
}

.mud-snackbar.mud-alert-filled-warning .mud-snackbar-icon svg {
	fill: #E6A817;
}

.mud-snackbar.mud-alert-filled-info,
.mud-snackbar.mud-alert-filled-normal {
	border-left: 4px solid #0D35A0 !important;
}

.mud-snackbar.mud-alert-filled-info .mud-snackbar-icon svg,
.mud-snackbar.mud-alert-filled-normal .mud-snackbar-icon svg {
	fill: #0D35A0;
}
