
:root .alert {
	padding: var(--alert-padding);
	padding-right: var(--size-4-8);
	/* Запас под абсолютную кнопку закрытия */
	border-radius: var(--alert-radius);
	margin: var(--alert-margin);
	border: var(--alert-border-width) solid transparent;
	font-size: var(--font-ui-medium);
	line-height: var(--line-height-relaxed);
	display: flex;
	align-items: flex-start;
	/* Выравнивание по верхней границе */
	gap: var(--size-4-4);
	backdrop-filter: blur(var(--alert-blur));
	-webkit-backdrop-filter: blur(var(--alert-blur));
	box-shadow: var(--alert-shadow);
	box-sizing: border-box;
	pointer-events: auto;
	position: relative;
	/* Для позиционирования кнопки закрытия */
}

:root .alert .btn-close {
	position: absolute;
	top: var(--size-4-2);
	right: var(--size-4-2);
	width: auto;
	border: none;
	background: transparent;
	padding: var(--size-4-1);
	display: flex;
	align-items: center;
	justify-content: center;
	color: inherit;
	opacity: 0.5;
	transition: opacity var(--anim-fast), transform var(--anim-fast);
	cursor: pointer;
	box-shadow: none;
	z-index: 1;
}

:root .alert .btn-close:hover {
	opacity: 1;
	background-color: var(--background-modifier-hover);
}

:root .alert:empty {
	display: none;
}

.alert-icon {
	width: var(--rail-icon-size);
	/* Унификация до 1.5rem */
	height: var(--rail-icon-size);
	flex-shrink: 0;
	margin-top: -0.1rem;
	/* Компенсация для выравнивания с текстом */
}

.alert-body {
	display: flex;
	align-items: flex-start;
	/* Иконка на уровне первой строки текста */
	gap: var(--size-4-4);
	flex: 1;
	min-width: 0;
}

.alert-content {
	flex: 1;
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: var(--size-4-1);
}

.alert-title {
	font-weight: var(--font-weight-semibold);
	line-height: var(--line-height-normal);
}

.alert-description {
	line-height: var(--line-height-relaxed);
}

.alert.alert-error {
	background-color: var(--alert-error-bg);
	border-color: var(--alert-error-border);
	color: var(--alert-error-text);
}

.alert.alert-success {
	background-color: var(--alert-success-bg);
	border-color: var(--alert-success-border);
	color: var(--alert-success-text);
}

.alert a {
	color: inherit;
	text-decoration: underline;
	font-weight: var(--font-weight-semibold);
	cursor: pointer;
}

.alert a:hover {
	opacity: 0.85;
}

/* .alert-body используется вместо .success-content и .error-content */

.global-error {
	position: fixed;
	top: var(--size-4-4);
	right: var(--size-4-4);
	z-index: var(--z-overlay);
	width: calc(100% - var(--size-4-8));
	max-width: 400px;
	display: none;
	/* Переключается в flex через JS (для global-error) */
	flex-direction: column;
	align-items: flex-end;
	gap: var(--size-4-2);
	pointer-events: none;
	margin: 0;
	padding: 0;
}

#settings_toast {
	position: fixed;
	top: var(--size-4-4);
	right: var(--size-4-4);
	z-index: var(--z-overlay);
	max-width: 400px;
	pointer-events: none;
	display: none;
	flex-direction: column;
	align-items: flex-end;
	gap: var(--size-4-2);
}

/* На мобилках учитываем высоту хедера/табов */
@media (max-width: 768px) {

	.global-error,
	#settings_toast {
		top: calc(var(--top-tab-height, 3.214rem) + var(--size-4-2));
		right: var(--size-4-2);
	}

	.global-error {
		width: calc(100% - var(--size-4-4));
	}
}

:root .global-error .alert,
:root #settings_toast.alert {
	display: flex;
	flex-direction: row;
	align-items: flex-start;
	pointer-events: all;
	margin: 0;
	box-shadow: var(--shadow-l);
	border-width: 1px;
	width: calc(100vw - var(--size-4-8));
	max-width: 400px;
}

@media (max-width: 768px) {

	.global-error .alert,
	#settings_toast.alert {
		width: calc(100vw - var(--size-4-4));
	}
}


.alert .btn-close .btn-icon {
	width: 1.143rem;
	/* 16px */
	height: 1.143rem;
}

.inline-error {
	color: var(--text-error);
	font-size: var(--font-ui-medium);
	margin-top: calc(-1 * var(--size-4-1));
	margin-bottom: var(--size-4-2);
	display: none;
	animation: fadeIn var(--anim-speed) ease;
}

@keyframes fadeIn {
	from {
		opacity: 0;
	}

	to {
		opacity: 1;
	}
}

@keyframes slideInDown {
	from {
		transform: translateY(calc(-1 * var(--size-4-4)));
		opacity: 0;
	}

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


