/* src/styles.css или куда ты добавляешь стили */

/* CSS переменные, чтобы создать атмосферу Шира из "Властелина колец" */
:root {
	/* Цвета сообщений чата */
	--llm-user-border-color: #79a07e; /* Ширский зеленый */
	--llm-user-background-color: #e6f2e6; /* Очень светлый ширский зеленый */
	--llm-llm-border-color: #b2a27e; /* Нейтральный, землистый оттенок */
	--llm-llm-background-color: #f8f3e9; /* Светлый кремовый */
	--llm-tool-border-color: #b08d57; /* Древесный коричневый */
	--llm-tool-background-color: #fdf4e3; /* Светлый песочный */
	--llm-error-border-color: #c25b5b; /* Приглушенный красный */
	--llm-error-background-color: #f7e0e0; /* Светлый приглушенный красный */
	--llm-assistant-border-color: #9c9c8f; /* Серый камень */
	--llm-assistant-background-color: #ecece4; /* Светло-серый, землистый */

	/* Общие стили узлов графа */
	--node-padding: 10px;
	--node-border-radius: 5px;
	--node-font-size: 14px;
	--node-font-weight: bold;
	--node-text-align: center;

	/* Переменные для текста */
	--font-text-size: 14px;
	--text-normal: #333;
	--text-muted: #666;
	--background-secondary-alt: #f0f0f0;
	--font-monospace: 'Roboto Mono', monospace;
	--text-accent: #007bff;

	/* Цвета для кнопок и интерактивных элементов */
	--button-primary-background: #5a8f6a; /* Насыщенный ширский зеленый для кнопок */
	--button-primary-hover-background: #4a7a5c; /* Темнее для наведения */
	--button-primary-text-color: #ffffff; /* Белый текст */
	--button-secondary-background: #d9d1bf; /* Светлый землистый для второстепенных кнопок */
	--button-secondary-hover-background: #c4bda9; /* Темнее для наведения */
	--button-secondary-text-color: #333333; /* Темный текст для второстепенных */
	--border-color-light: #d3cbbd; /* Светлая граница, землистая */
	--border-color-dark: #a99b87; /* Темная граница, землистая */
	--background-modifier-form-field: #f5efe1; /* Светлый земляной фон для полей */
	--background-modifier-form-field-highlighted: #e4dccf; /* Немного темнее для выделенных полей */

	--node-text-color: var(
		--text-normal
	); /* Используем общую переменную для текста узлов */
}

.llm-agent-chat-panel .message-type-user {
	border: 1px solid var(--llm-user-border-color); /* Цвет для user */
	background-color: var(
		--llm-user-background-color
	); /* Светло-голубой фон для user */
}

.llm-agent-chat-panel .message-type-llm {
	border: 1px solid var(--llm-llm-border-color); /* Цвет для llm */
	background-color: var(
		--llm-llm-background-color
	); /* Светло-зеленый фон для llm */
}

.llm-agent-chat-panel .message-type-tool {
	border: 1px solid var(--llm-tool-border-color); /* Цвет для tool */
	background-color: var(
		--llm-tool-background-color
	); /* Светло-оранжевый фон для tool */
}

.llm-agent-chat-panel .message-type-error {
	border: 1px solid var(--llm-error-border-color); /* Красный цвет для error */
	background-color: var(
		--llm-error-background-color
	); /* Светло-красный фон для error */
}

.llm-agent-chat-panel .message-type-assistant {
	border: 1px solid var(--llm-assistant-border-color); /* Цвет для assistant */
	background-color: var(
		--llm-assistant-background-color
	); /* Светло-серый фон для assistant */
}

/* Общие стили для сообщений */
.llm-agent-chat-panel .message {
	margin-bottom: 10px;
	display: flex; /* Flex-контейнер для всего сообщения */
	flex-direction: column; /* Элементы внутри сообщения будут выстраиваться вертикально */
	padding: 10px; /* Общие отступы для всего сообщения */
	border-radius: 5px;
	max-width: 80%; /* Ограничение ширины сообщения */
	word-break: break-word; /* Разбиение слов для длинных сообщений */
	overflow-wrap: break-word; /* Перенос слов */
}

.llm-agent-chat-panel .message.user {
	margin-left: auto; /* Выравнивание по правому краю для пользователя */
}

.llm-agent-chat-panel .message.assistant {
	margin-right: auto; /* Выравнивание по левому краю для ассистента, если потребуется */
}

.chat-meta {
	margin-bottom: 5px; /* Отступ между мета-информацией и содержимым */
}

.chat-sender-info {
	display: flex; /* Делаем sender-info flex-контейнером */
	align-items: center; /* Выравнивание иконки и текста по центру */
	gap: 8px; /* Расстояние между иконкой и текстом */
}

.chat-message-icon svg {
	width: 20px; /* Размер иконки */
	height: 20px;
	flex-shrink: 0; /* Предотвращает сжатие иконки */
}

.chat-role-label {
	font-weight: bold;
	font-size: 0.9em;
	color: var(--text-muted);
}

.chat-message-content {
	font-size: var(--font-text-size);
	line-height: 1.5;
	color: var(--text-normal);
	user-select: text; /* Разрешить выделение текста внутри содержимого */
}

/* Стили для узлов графа */
.react-flow__node-default,
.react-flow__node-user,
.react-flow__node-llm,
.react-flow__node-tool,
.react-flow__node-error,
.react-flow__node-assistant {
	padding: var(--node-padding);
	border-radius: var(--node-border-radius);
	text-align: var(--node-text-align);
	font-size: var(--node-font-size);
	font-weight: var(--node-font-weight);
	color: var(--node-text-color);
}

.react-flow__node-user {
	border: 1px solid var(--llm-user-border-color); /* Цвет для user */
	background-color: var(
		--llm-user-background-color
	); /* Светло-голубой фон для user */
}

.react-flow__node-llm {
	border: 1px solid var(--llm-llm-border-color); /* Цвет для llm */
	background-color: var(
		--llm-llm-background-color
	); /* Светло-зеленый фон для llm */
}

.react-flow__node-tool {
	border: 1px solid var(--llm-tool-border-color); /* Цвет для tool */
	background-color: var(
		--llm-tool-background-color
	); /* Светло-оранжевый фон для tool */
}

.react-flow__node-error {
	border: 1px solid var(--llm-error-border-color); /* Красный цвет для error */
	background-color: var(
		--llm-error-background-color
	); /* Светло-красный фон для error */
}

.react-flow__node-assistant {
	border: 1px solid var(--llm-assistant-border-color); /* Нейтральный серый для ассистента */
	background-color: var(--llm-assistant-background-color); /* Светло-серый фон */
}

/* Компактные стили для узлов React Flow */
.react-flow__node {
	font-size: 12px !important;
	padding: 4px 8px !important;
	min-width: 100px !important;
	max-width: 130px !important;
	min-height: 30px !important;
	border-radius: 6px !important;
}

.react-flow__node-default {
	width: auto !important;
	height: auto !important;
}

/* ----------------------------------------------- Chat Panel Styles -------------------------------------------------------- */

.llm-agent-chat-panel {
	display: flex;
	flex-direction: column;
	height: 100%;
}

.chat-history {
	flex-grow: 1;
	overflow-y: auto;
	padding: 10px;
	-webkit-user-select: text; /* Разрешить выделение для WebKit-браузеров */
	-moz-user-select: text; /* Разрешить выделение для Firefox */
	user-select: text; /* Стандартное свойство для выделения текста */
	scroll-behavior: smooth;
}

/* Стили для inline-кода в сообщениях */
.chat-message-content code {
	background-color: var(--background-secondary-alt);
	border-radius: 4px;
	padding: 2px 4px;
	font-family: var(--font-monospace);
	font-size: 0.9em;
	color: var(--text-accent);
}

/* Стиль для форм ввода чата */
.chat-input-form {
	display: flex;
	padding: 10px;
	border-top: 1px solid #eee;
	gap: 10px;
}

.command-input {
	position: relative;
	flex-grow: 1;
}

#message-input {
	width: 100%;
	padding: 8px;
	border: 1px solid #ccc;
	border-radius: 4px;
	box-sizing: border-box;
	scroll-margin-bottom: 30px; /* Добавляет отступ в 20px снизу при прокрутке к этому элементу */
}

.submit-button {
	padding: 4px 8px; /* Восстанавливаем паддинг */
	border: none; /* Убираем рамку */
	border-radius: 8px;
	cursor: pointer;
	font-size: 11px;
	transition: all 0.2s;
	/* Явно переопределяем стили, которые могли быть затронуты */
	width: auto; /* Убедимся, что ширина не ограничена */
	height: auto; /* Убедимся, что высота не ограничена */
	background-color: var(
		--button-primary-background
	) !important; /* Используем переменную для основного цвета кнопки */
	color: var(
		--button-primary-text-color
	) !important; /* Используем переменную для цвета текста кнопки */
	opacity: 1; /* Если .clickable-icon устанавливает opacity */
	display: inline-flex; /* Или flex, если нужно выравнивание элементов внутри */
	align-items: center; /* Для вертикального выравнивания контента, если display: flex */
	justify-content: center; /* Для горизонтального выравнивания контента, если display: flex */
}

#send-button:hover {
	background-color: var(
		--button-primary-hover-background
	) !important; /* Переменная для наведения */
}

/* Добавляем стили для нового интерфейса ввода */

.chat-input-container {
	border-top: 1px solid var(--background-modifier-border);
	padding: 8px 10px 4px 10px;
	position: relative;
}

.scroll-container {
	overflow-y: auto;
	scrollbar-width: thin;
	max-height: 70vh;
	margin-bottom: 8px;
}

/*.message-input-editor {
	outline: none;
	font-size: 14px;
	line-height: 1.4;
	min-height: 20px;
	padding: 8px 0;
	color: var(--text-normal);
	position: relative;
}*/

.message-input-editor {
	min-height: 20px;
	max-height: 200px;
	overflow-y: auto;
	word-wrap: break-word;
	white-space: pre-wrap;
}

.message-input-editor.is-empty::before {
	content: attr(data-placeholder);
	color: var(--text-muted);
	position: absolute;
	pointer-events: none;
}

.message-input-editor[data-placeholder]::before {
	content: attr(data-placeholder);
	color: var(--text-muted);
	position: absolute;
	pointer-events: none;
	opacity: 0.6;
}

.message-input-editor.is-empty[data-placeholder]::before {
	display: block;
}

.message-input-editor:not(.is-empty)[data-placeholder]::before,
.message-input-editor:focus[data-placeholder]::before {
	display: none;
}

.message-input-editor .reference-box {
	display: inline-flex !important;
	vertical-align: middle;
	margin: 0 1px;
}

.message-input-editor .reference-box:focus {
	outline: 2px solid var(--interactive-accent);
	outline-offset: 1px;
}

.chat-controls {
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 12px;
	color: var(--text-muted);
}

.control-buttons-left {
	display: flex;
	align-items: center;
	gap: 8px;
}

.control-buttons-right {
	display: flex;
	align-items: center;
	gap: 8px;
}

.model-select-container {
	position: relative;
}

.model-select-button {
	display: flex;
	align-items: center;
	gap: 4px;
	padding: 4px 8px;
	border: none;
	border-radius: 8px;
	background-color: var(
		--button-secondary-background
	); /* Используем переменную для второстепенных кнопок */
	color: var(
		--button-secondary-text-color
	); /* Используем переменную для текста второстепенных кнопок */
	cursor: pointer;
	font-size: 11px;
	transition: all 0.2s;
}

.model-select-button:hover {
	background-color: var(
		--button-secondary-hover-background
	); /* Используем переменную для наведения второстепенных кнопок */
	filter: brightness(1.1); /* Можно оставить или скорректировать под тему */
}

.model-name {
	max-width: 120px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.dropdown-icon {
	width: 12px;
	height: 12px;
	flex-shrink: 0;
}

.model-dropdown {
	position: absolute;
	/* Убираем жесткое bottom: 100%; т.к. позиционирование будет задаваться в JS */
	/* bottom: 100%; */
	left: 0;
	/* right: 0; */ /* Это может привести к растягиванию, лучше оставить auto или задать ширину */
	width: max-content; /* Чтобы дропдаун не растягивался на всю ширину родителя */
	min-width: 150px; /* Минимальная ширина */
	background-color: var(
		--background-primary
	); /* Предполагается, что --background-primary есть и подходит */
	border: 1px solid var(--border-color-dark); /* Используем новую переменную для границы */
	border-radius: 8px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); /* Можно скорректировать тень в соответствии с темой */
	z-index: 1000;
	/* margin-bottom: 4px; */ /* Это будет задавать JS через top/bottom */
	max-height: 200px;
	overflow-y: auto;
}

.model-option {
	padding: 8px 12px;
	cursor: pointer;
	font-size: 11px;
	color: var(--text-normal);
	transition: background-color 0.2s;
}

.model-option:hover {
}

.model-option.selected {
	background-color: var(
		--background-modifier-selected
	); /* Или другой подходящий цвет */
	color: var(--text-highlighted); /* Или другой подходящий цвет */
}

.model-option:first-child {
	border-radius: 8px 8px 0 0;
}

.model-option:last-child {
	border-radius: 0 0 8px 8px;
}

.submit-button {
	padding: 4px 8px;
	border: none;
	border-radius: 8px;
	cursor: pointer;
	font-size: 11px;
	transition: all 0.2s;
}

.submit-button:hover:enabled {
	filter: brightness(1.25);
}

.submit-button:disabled {
	opacity: 0.5;
	cursor: not-allowed;
}

.submit-text {
	font-family: system-ui, -apple-system, sans-serif;
}

/* Обновляем стили для suggestions */
.suggestions {
	position: absolute;
	bottom: 100%;
	left: 0;
	right: 0;
	background-color: var(
		--background-primary
	); /* Предполагается, что --background-primary есть и подходит */
	border: 1px solid var(--border-color-dark); /* Используем новую переменную для границы */
	border-radius: 8px;
	max-height: 150px;
	overflow-y: auto;
	z-index: 100;
	margin-bottom: 4px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); /* Можно скорректировать тень в соответствии с темой */
}

.suggestion-item {
	padding: 8px 12px;
	cursor: pointer;
	font-size: 12px;
	color: var(--text-normal);
	transition: background-color 0.2s;
}

.suggestion-item:hover {
}

.suggestion-item.selected {
	background-color: var(--background-modifier-selected);
	color: var(--text-highlighted);
}

/* Удаляем старые стили для chat-input-form и message-input */
.chat-input-form {
	display: none;
}

#message-input {
	display: none;
}

/* ----------------------------------------------- History Panel Styles --------------------------------------------------- */

.llm-agent-history-sidebar {
	border-right: 1px solid var(--background-modifier-border);
	overflow-y: auto;
	background-color: var(--background-secondary);
	transition: width 0.3s ease, min-width 0.3s ease, border-right 0.3s ease;
	min-width: 0;
}

.llm-agent-history-sidebar.expanded {
	width: 200px;
	min-width: 200px;
}

.llm-agent-history-sidebar.collapsed {
	width: 0;
	min-width: 0;
	border-right: none;
	overflow: hidden;
}

/* Стили для заголовков графов в панели истории */
.graph-title-generated {
	color: var(--text-normal);
}

.graph-title-pending {
	color: var(--text-muted);
}

/* ----------------------------------------------- Toggle Button Styles --------------------------------------------------- */

.history-toggle-button {
	position: absolute;
	top: 10px;
	left: 10px;
	z-index: 9999; /* Увеличиваем z-index, чтобы быть выше React Flow */
	width: 32px;
	height: 32px;
	border: none;
	border-radius: 6px;
	background-color: var(--background-primary);
	border: 1px solid var(--border-color-light);
	cursor: pointer;
	font-size: 16px;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
	transition: all 0.2s ease;
}

.history-toggle-button:hover {
	background-color: var(--background-modifier-hover);
	box-shadow: 0 2px 12px rgba(0, 0, 0, 0.2);
	transform: translateY(-1px);
}

/* ----------------------------------------------- Graph Container Styles -------------------------------------------------- */

.llm-agent-graph-container {
	flex: 1;
	position: relative;
	background-color: var(--background-primary);
}

/* ----------------------------------------------- Reference System Styles --------------------------------------------------- */

/* Reference Boxes */
.reference-box {
	display: inline-flex;
	align-items: center;
	padding: 2px 6px;
	border-radius: 4px;
	font-size: 11px;
	margin: 0 2px;
	cursor: pointer;
	user-select: none;
	vertical-align: middle;
	transition: all 0.2s ease;
}

.reference-box:hover {
	opacity: 0.8;
	transform: translateY(-1px);
}

.reference-box-icon {
	width: 12px;
	height: 12px;
	margin-right: 4px;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}

.reference-box-name {
	font-weight: 500;
	white-space: nowrap;
}

/* Файлы - одинарная ссылка @ */
.reference-box.file.single {
	background: rgba(100, 150, 255, 0.1);
	border: 1px solid rgba(100, 150, 255, 0.3);
	color: var(--text-normal);
}

/* Файлы - постоянная ссылка @@ */
.reference-box.file.permanent {
	background: rgba(100, 150, 255, 0.2);
	border: 1px solid rgba(100, 150, 255, 0.6);
	color: var(--text-normal);
	font-weight: 600;
}

.reference-box.file.permanent .reference-box-name {
	font-weight: 600;
}

/* Перебиваем стиль Obsidian для prompt*/
.reference-box.prompt {
	display: inline-flex;
	flex-direction: row;

	box-shadow: var(--shadow-l);

	z-index: auto;
	position: static;
	top: auto;
	width: auto;
	max-width: none;
	max-height: none;
	overflow: hidden;
}

/* Промпты - одинарная ссылка # */
.reference-box.prompt.single {
	background: rgba(255, 150, 100, 0.1);
	border: 1px solid rgba(255, 150, 100, 0.3);
	color: var(--text-normal);
}

/* Промпты - постоянная ссылка ## */
.reference-box.prompt.permanent {
	background: rgba(238, 122, 69, 0.2);
	border: 1px solid rgba(255, 150, 100, 0.6);
	color: var(--text-normal);
	font-weight: 600;
}

.reference-box.prompt.permanent .reference-box-name {
	font-weight: 600;
}

/* Reference Autocomplete */
.reference-autocomplete {
	/* 200px для 5 элементов, возможно, нужно заменить на расчёт с помощью padding и размером шрифта */
	--item-height: 33px; /* высота одного элемента */
	--visible-items: 10; /* количество видимых элементов */

	position: absolute;
	background: var(--background-primary);
	border: 1px solid var(--border-color);
	border-radius: 8px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
	z-index: 1000;
	max-height: calc(var(--item-height) * var(--visible-items));
	overflow-y: auto;
	min-width: 250px;
	max-width: 400px;
}

.reference-option {
	display: flex;
	align-items: center;
	padding: 8px 12px;
	cursor: pointer;
	font-size: 12px;
	color: var(--text-normal);
	transition: background-color 0.2s;
	border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.reference-option:hover,
.reference-option.selected {
	background-color: var(--background-modifier-hover);
}

.reference-option:last-child {
	border-bottom: none;
}

.reference-option-icon {
	width: 16px;
	height: 16px;
	margin-right: 8px;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--text-muted);
}

.reference-option-name {
	flex: 1;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	font-weight: 500;
}

.reference-option-path {
	font-size: 10px;
	color: var(--text-muted);
	margin-left: 8px;
	max-width: 150px;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Темная тема */
.theme-dark .reference-autocomplete {
	background: var(--background-primary);
	border-color: var(--border-color);
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.theme-dark .reference-option:hover,
.theme-dark .reference-option.selected {
	background-color: rgba(255, 255, 255, 0.1);
}

/* Светлая тема */
.theme-light .reference-autocomplete {
	background: #ffffff;
	border-color: #e0e0e0;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}

.theme-light .reference-option:hover,
.theme-light .reference-option.selected {
	background-color: rgba(0, 0, 0, 0.05);
}

/* Скроллбар для автокомплита */
.reference-autocomplete::-webkit-scrollbar {
	width: 6px;
}

.reference-autocomplete::-webkit-scrollbar-track {
	background: transparent;
}

.reference-autocomplete::-webkit-scrollbar-thumb {
	background: var(--scrollbar-thumb-bg);
	border-radius: 3px;
}

.reference-autocomplete::-webkit-scrollbar-thumb:hover {
	background: var(--scrollbar-thumb-bg-hover);
}

/* ----------------------------------------------- Settings Views ------------------------------------------------------------ */

.setting-item.llm-agent-excluded-folder-item {
	padding-left: 30px; /* Отступ для элементов списка */
	border-left: 2px solid var(--background-modifier-border); /* Разделитель */
	margin-bottom: 5px;
	margin-top: 5px;
}

.setting-item.llm-agent-excluded-folder-item .setting-item-control {
	display: flex;
	align-items: center;
	gap: 5px;
}

.setting-item.llm-agent-excluded-folder-item .setting-item-control input {
	flex-grow: 1; /* Поле ввода занимает все доступное пространство */
}

/* ----------------------------------------------- Obsidian core override ------------------------------------------------------------ */

.status-bar-item {
	display: none;
	padding: 0;

	&.plugin-editor-width-slider {
		display: inline-flex;

		& .editor-width-slider {
			width: 80px !important;
		}

		& .editor-width-slider-value {
			padding: 4px 3px !important;
			font-size: 10px !important;
			margin: 0 !important;
		}
	}
}
