/* ************************************************************* */
/* *** Info-Doc/public/css/idoc-ui.css — редизайн (admin UI) *** */
/* *** Боковая навигация, дашборд, «современная» таблица.    *** */
/* *** Подключается ПОСЛЕ bootstrap.min.css и style.css,     *** */
/* *** только на страницах нового дизайна (пока — «Заметки»).*** */
/* ************************************************************* */

/* ---- Локальный шрифт Inter (без Google Fonts) ---- */
@font-face {
	font-family: 'Inter';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url('./fonts/inter/cyrillic-wght-normal.woff2') format('woff2');
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: 'Inter';
	font-style: normal;
	font-display: swap;
	font-weight: 100 900;
	src: url('./fonts/inter/latin-wght-normal.woff2') format('woff2');
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---- Дизайн-токены (светлая нейтральная тема) ---- */
:root {
	--color-background-primary: #ffffff;
	--color-background-secondary: #f4f4f3;
	--color-background-tertiary: #ebebe9;
	--color-background-info: #e9f1fb;
	--color-background-warning: #fdf1e1;
	--color-background-danger: #fdeceb;
	--color-background-success: #e8f5ee;

	--color-text-primary: #1b1b1a;
	--color-text-secondary: #6b6f76;
	--color-text-tertiary: #a0a4ab;
	--color-text-info: #185fa5;
	--color-text-warning: #b45309;
	--color-text-danger: #c0392b;
	--color-text-success: #0f6e56;

	--color-border-tertiary: #e4e4e1;
	--color-border-secondary: #d6d6d2;
	--color-border-info: #c2dbf3;

	--border-radius-sm: 4px;
	--border-radius-md: 6px;
	--border-radius-lg: 10px;

	--idoc-sidebar-w: 188px;
	/* Базовый размер шрифта списка/контента. Меняется кнопкой «A−/A+» в сайдбаре
	   (idoc-sidebar.js сохраняет выбор в localStorage 'idoc-fontsize'). */
	--idoc-fs: 13px;
	--idoc-font: 'Inter', 'Segoe UI', 'Roboto', system-ui, -apple-system, sans-serif;
	--idoc-btn-accent: #185fa5;   /* сплошной акцент для кнопок с белым текстом */
	color-scheme: light;
}

/* ============================================================ */
/* Тёмная тема — переопределение токенов                        */
/* ============================================================ */
html[data-theme="dark"] {
	--color-background-primary: #2b2c2f;
	--color-background-secondary: #212225;
	--color-background-tertiary: #3a3c40;
	--color-background-info: #1c2a3a;
	--color-background-warning: #352a1a;
	--color-background-danger: #36231f;
	--color-background-success: #1a3128;

	--color-text-primary: #e6e7e9;
	--color-text-secondary: #9a9ea6;
	--color-text-tertiary: #6b6f76;
	--color-text-info: #6cb0f4;
	--color-text-warning: #e0a55a;
	--color-text-danger: #ec7d72;
	--color-text-success: #5cc2a2;

	--color-border-tertiary: #3d3f44;
	--color-border-secondary: #4a4d53;
	--color-border-info: #35527a;

	--idoc-btn-accent: #2563eb;
	color-scheme: dark;
}

/* ============================================================ */
/* Светлая тема «Сепия» — тёплая бумага                         */
/* ============================================================ */
html[data-theme="sepia"] {
	--color-background-primary: #f7f1e3;
	--color-background-secondary: #efe7d3;
	--color-background-tertiary: #e5dcc4;
	--color-background-info: #ece7d6;
	--color-background-warning: #f6ead0;
	--color-background-danger: #f3ddd4;
	--color-background-success: #e7ecd6;

	--color-text-primary: #3b352a;
	--color-text-secondary: #7d7460;
	--color-text-tertiary: #a89a7e;
	--color-text-info: #9a6b1f;
	--color-text-warning: #97561a;
	--color-text-danger: #b23a2b;
	--color-text-success: #5a6f1f;

	--color-border-tertiary: #e3d9c2;
	--color-border-secondary: #d3c6a9;
	--color-border-info: #d8c49a;

	--idoc-btn-accent: #9a6b1f;
	color-scheme: light;
}

/* ============================================================ */
/* Светлая тема «Прохладная» — голубоватая                      */
/* ============================================================ */
html[data-theme="cool"] {
	--color-background-primary: #f3f7fb;
	--color-background-secondary: #e7eef6;
	--color-background-tertiary: #dbe5f0;
	--color-background-info: #e0ecfb;
	--color-background-warning: #f5edda;
	--color-background-danger: #f7e3e1;
	--color-background-success: #e2f0ea;

	--color-text-primary: #1c2733;
	--color-text-secondary: #5d6b7a;
	--color-text-tertiary: #93a1b0;
	--color-text-info: #2563eb;
	--color-text-warning: #b06f12;
	--color-text-danger: #c0392b;
	--color-text-success: #0f6e56;

	--color-border-tertiary: #d4e0ee;
	--color-border-secondary: #bccde0;
	--color-border-info: #aecbef;

	--idoc-btn-accent: #2563eb;
	color-scheme: light;
}

/* ============================================================ */
/* Тёмная тема «Полночь (OLED)» — чистый чёрный фон             */
/* ============================================================ */
html[data-theme="midnight"] {
	--color-background-primary: #000000;
	--color-background-secondary: #0c0e11;
	--color-background-tertiary: #16191e;
	--color-background-info: #0c1c2e;
	--color-background-warning: #281d0d;
	--color-background-danger: #2a1614;
	--color-background-success: #0c241b;

	--color-text-primary: #e8eaed;
	--color-text-secondary: #8a9099;
	--color-text-tertiary: #5b626b;
	--color-text-info: #6cb0f4;
	--color-text-warning: #e0a55a;
	--color-text-danger: #ec7d72;
	--color-text-success: #5cc2a2;

	--color-border-tertiary: #1d2127;
	--color-border-secondary: #2a2f37;
	--color-border-info: #234058;

	--idoc-btn-accent: #3b82f6;
	color-scheme: dark;
}

/* ============================================================ */
/* Тёмная тема «Приглушённая» — мягкий серый (в духе Dimmed)    */
/* ============================================================ */
html[data-theme="dimmed"] {
	--color-background-primary: #22272e;
	--color-background-secondary: #2d333b;
	--color-background-tertiary: #373e47;
	--color-background-info: #1c2e44;
	--color-background-warning: #34291a;
	--color-background-danger: #3a2422;
	--color-background-success: #1d3a2e;

	--color-text-primary: #adbac7;
	--color-text-secondary: #768390;
	--color-text-tertiary: #545d68;
	--color-text-info: #6cb6ff;
	--color-text-warning: #daaa3f;
	--color-text-danger: #ff938a;
	--color-text-success: #6bc46d;

	--color-border-tertiary: #373e47;
	--color-border-secondary: #444c56;
	--color-border-info: #2e4d6e;

	--idoc-btn-accent: #539bf5;
	color-scheme: dark;
}

/* ============================================================ */
/* Тёмная тема «Solarized Dark»                                 */
/* ============================================================ */
html[data-theme="solar"] {
	--color-background-primary: #002b36;
	--color-background-secondary: #073642;
	--color-background-tertiary: #0a4250;
	--color-background-info: #073d4a;
	--color-background-warning: #2e3018;
	--color-background-danger: #2e2620;
	--color-background-success: #0c3b30;

	--color-text-primary: #cfd8d6;
	--color-text-secondary: #8a9b9b;
	--color-text-tertiary: #5f767c;
	--color-text-info: #2aa6d6;
	--color-text-warning: #cb8a17;
	--color-text-danger: #dc544f;
	--color-text-success: #93a52a;

	--color-border-tertiary: #0d4250;
	--color-border-secondary: #18525f;
	--color-border-info: #1a5a78;

	--idoc-btn-accent: #268bd2;
	color-scheme: dark;
}

/* ---- Сброс «облачного» фона и крупного шрифта из style.css ---- */
body.idoc-app {
	background: var(--color-background-secondary) !important;
	background-image: none !important;
	font-family: var(--idoc-font);
	font-size: var(--idoc-fs);
	color: var(--color-text-primary);
	padding-top: 0 !important;
	min-height: 100vh;
	height: auto;
}

body.idoc-app h1,
body.idoc-app h2,
body.idoc-app h3,
body.idoc-app h4,
body.idoc-app h5,
body.idoc-app h6 {
	font-family: var(--idoc-font);
	color: var(--color-text-primary);
}

/* ============================================================ */
/* Каркас: сайдбар + рабочая область                            */
/* ============================================================ */
.idoc-shell {
	display: flex;
	min-height: 100vh;
	align-items: stretch;
}

.idoc-sidebar {
	width: var(--idoc-sidebar-w);
	flex-shrink: 0;
	background: var(--color-background-primary);
	border-right: 1px solid var(--color-border-tertiary);
	padding: 14px 10px;
	display: flex;
	flex-direction: column;
	gap: 2px;
	position: sticky;
	top: 0;
	height: 100vh;
	overflow-y: auto;
}

.idoc-brand {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	font-size: 16px;
	font-weight: 600;
	color: var(--color-text-primary);
	padding: 8px 10px 16px;
	text-decoration: none;
	text-align: center;
}

.idoc-brand img {
	width: 48px;
	height: 48px;
	border-radius: var(--border-radius-md);
}

.idoc-nav-section {
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--color-text-tertiary);
	padding: 10px 10px 4px;
}

.idoc-nav-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 7px 10px;
	border-radius: var(--border-radius-md);
	color: var(--color-text-secondary);
	text-decoration: none;
	font-size: 13px;
	line-height: 1.2;
	transition: background 0.12s, color 0.12s;
}

.idoc-nav-item .idoc-nav-label {
	display: flex;
	align-items: center;
	gap: 9px;
	min-width: 0;
}

.idoc-nav-item .idoc-nav-label span {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.idoc-nav-item i {
	font-size: 17px;
	flex-shrink: 0;
}

.idoc-nav-item:hover {
	background: var(--color-background-secondary);
	color: var(--color-text-primary);
}

.idoc-nav-item.active {
	background: var(--color-background-info);
	color: var(--color-text-info);
	font-weight: 500;
}

.idoc-nav-badge {
	background: var(--color-background-tertiary);
	color: var(--color-text-secondary);
	font-size: 11px;
	font-weight: 600;
	padding: 1px 6px;
	border-radius: var(--border-radius-md);
	white-space: nowrap;
}

.idoc-nav-badge:empty {
	display: none;
}

.idoc-nav-badge-unread {
	color: var(--color-text-warning);
}

.idoc-sidebar-system {
	margin-top: auto;
	border-top: 1px solid var(--color-border-tertiary);
	padding-top: 8px;
	display: flex;
	flex-direction: column;
	gap: 2px;
}

/* Переключатель темы: система / светлая / тёмная */
.idoc-theme-switch {
	display: inline-flex;
	gap: 2px;
	padding: 3px;
	margin: 2px 10px 8px;
	width: fit-content;
	background: var(--color-background-secondary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-md);
}

.idoc-theme-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 26px;
	border: 0;
	background: transparent;
	color: var(--color-text-secondary);
	border-radius: var(--border-radius-sm);
	cursor: pointer;
}

.idoc-theme-btn i {
	font-size: 16px;
}

.idoc-theme-btn:hover {
	color: var(--color-text-primary);
}

.idoc-theme-btn.active {
	background: var(--color-background-primary);
	color: var(--color-text-info);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.14);
}

/* ---- Выбор темы оформления: триггер + выпадающий список (как палитра тем VS Code) ---- */
.idoc-theme-picker {
	position: relative;
	margin: 2px 10px 8px;
}

.idoc-theme-trigger {
	display: flex;
	align-items: center;
	gap: 6px;
	width: 100%;
	padding: 6px 8px;
	border: 1px solid var(--color-border-tertiary);
	background: var(--color-background-secondary);
	color: var(--color-text-primary);
	border-radius: var(--border-radius-md);
	cursor: pointer;
	font-size: 12.5px;
}

.idoc-theme-trigger:hover {
	border-color: var(--color-border-secondary);
}

.idoc-theme-trigger > i:first-child {
	font-size: 16px;
	color: var(--color-text-secondary);
}

.idoc-theme-trigger-name {
	flex: 1;
	text-align: left;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.idoc-theme-trigger-caret {
	font-size: 14px;
	color: var(--color-text-tertiary);
}

.idoc-theme-pop {
	position: fixed;        /* fixed — чтобы не обрезался узким сайдбаром (overflow:auto); координаты ставит JS от триггера */
	width: 232px;
	max-width: calc(100vw - 24px);
	z-index: 1000;
	display: none;
	max-height: 340px;
	overflow: auto;
	padding: 4px;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
}

.idoc-theme-picker.open .idoc-theme-pop {
	display: block;
}

.idoc-theme-group {
	font-size: 10.5px;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--color-text-tertiary);
	padding: 7px 9px 3px;
}

.idoc-theme-opt {
	display: flex;
	align-items: center;
	gap: 7px;
	width: 100%;
	border: 0;
	background: transparent;
	color: var(--color-text-primary);
	padding: 6px 9px;
	border-radius: var(--border-radius-sm);
	cursor: pointer;
	text-align: left;
}

.idoc-theme-opt:hover {
	background: var(--color-background-secondary);
}

.idoc-theme-opt.selected {
	background: var(--color-background-info);
}

.idoc-theme-opt-check {
	flex: 0 0 auto;
	width: 15px;
	font-size: 14px;
	color: var(--color-text-info);
}

.idoc-theme-opt-name {
	flex: 1;
	font-size: 12.5px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.idoc-theme-sw {
	display: inline-flex;
	gap: 3px;
	flex: 0 0 auto;
}

.idoc-theme-sw span {
	width: 12px;
	height: 12px;
	border-radius: 3px;
	border: 1px solid var(--color-border-secondary);
}

.idoc-user {
	display: flex;
	align-items: center;
	gap: 9px;
	padding: 6px 10px;
}

.idoc-avatar {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--color-background-info);
	color: var(--color-text-info);
	font-size: 11px;
	font-weight: 600;
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	text-transform: uppercase;
}

.idoc-user span {
	color: var(--color-text-secondary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 12px;
}

/* ---- Рабочая область ---- */
.idoc-main {
	flex: 1;
	min-width: 0;
	padding: 18px 22px 14px;
}

.idoc-page-title {
	font-size: 20px;
	font-weight: 600;
	margin: 0 0 16px;
	color: var(--color-text-primary);
}

/* ============================================================ */
/* Дашборд-счётчики                                             */
/* ============================================================ */
.idoc-dashboard {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 12px;
	margin-bottom: 18px;
}

/* Дашборд-панель отключена — счётчики ушли в бейджи сайдбара */
.idoc-dashboard:empty {
	display: none;
}

.idoc-stat {
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-md);
	padding: 11px 14px;
}

.idoc-stat.is-active {
	background: var(--color-background-info);
	border-color: var(--color-border-info);
}

.idoc-stat-label {
	font-size: 12px;
	color: var(--color-text-secondary);
}

.idoc-stat.is-active .idoc-stat-label {
	color: var(--color-text-info);
}

.idoc-stat-value {
	font-size: 22px;
	font-weight: 600;
	line-height: 1.2;
}

.idoc-stat.is-active .idoc-stat-value {
	color: var(--color-text-info);
}

.idoc-stat.is-warning .idoc-stat-value {
	color: var(--color-text-warning);
}

/* ============================================================ */
/* Панель инструментов: поиск + фильтры + период + добавить     */
/* ============================================================ */
.idoc-toolbar {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	align-items: center;
	margin-bottom: 12px;
}

.idoc-toolbar .idoc-search {
	flex: 1;
	min-width: 220px;
	display: flex;
	align-items: center;
	gap: 6px;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	padding: 0 10px;
}

.idoc-toolbar .idoc-search i {
	color: var(--color-text-tertiary);
	font-size: 16px;
}

.idoc-toolbar .idoc-search input {
	flex: 1;
	border: 0;
	outline: 0;
	background: transparent;
	padding: 8px 0;
	font-size: 13px;
	color: var(--color-text-primary);
}

.idoc-input,
.idoc-toolbar select {
	height: 36px;
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	background: var(--color-background-primary);
	color: var(--color-text-primary);
	font-size: 13px;
	padding: 0 10px;
}

.idoc-btn {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 36px;
	padding: 0 13px;
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	background: var(--color-background-primary);
	color: var(--color-text-primary);
	font-size: 13px;
	cursor: pointer;
	white-space: nowrap;
	transition: background 0.12s, border-color 0.12s;
}

.idoc-btn i {
	font-size: 16px;
}

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

.idoc-btn.idoc-btn-add {
	background: var(--color-background-info);
	color: var(--color-text-info);
	border-color: var(--color-border-info);
	font-weight: 500;
}

.idoc-btn.idoc-btn-add:hover {
	filter: brightness(0.97);
}

.idoc-btn-ghost {
	border-color: transparent;
	background: transparent;
}

/* Переключатель «Везде» (глобальный поиск) */
.idoc-global-toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	height: 36px;
	padding: 0 11px;
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	background: var(--color-background-primary);
	color: var(--color-text-secondary);
	font-size: 13px;
	cursor: pointer;
	user-select: none;
	white-space: nowrap;
}

.idoc-global-toggle input {
	margin: 0;
	cursor: pointer;
	accent-color: var(--color-text-info);
}

.idoc-global-toggle i {
	font-size: 16px;
}

.idoc-global-toggle:has(input:checked) {
	background: var(--color-background-info);
	color: var(--color-text-info);
	border-color: var(--color-border-info);
	font-weight: 500;
}

/* Поповер периода */
.idoc-period {
	position: relative;
}

.idoc-period-pop {
	position: absolute;
	top: 42px;
	right: 0;
	z-index: 30;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1);
	padding: 12px;
	display: none;
	flex-direction: column;
	gap: 8px;
	width: 220px;
}

.idoc-period-pop.open {
	display: flex;
}

.idoc-period-pop label {
	font-size: 12px;
	color: var(--color-text-secondary);
	display: flex;
	flex-direction: column;
	gap: 3px;
}

/* ============================================================ */
/* «Современная» таблица                                        */
/* ============================================================ */
.idoc-table-wrap {
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	overflow: auto;
	max-height: calc(100vh - 188px);
}

/* Страницы со списком: рабочая область заполняет высоту экрана, таблица
   растягивается до подвала — снизу не остаётся большого пустого отступа. */
.idoc-main:has(.idoc-table-wrap) {
	display: flex;
	flex-direction: column;
	height: 100vh;
	overflow: hidden;
}

.idoc-main:has(.idoc-table-wrap) > .idoc-table-wrap {
	flex: 1 1 auto;
	max-height: none;
	min-height: 0;
}

/* Раздел «Админ»: та же логика (обёртка .idoc-admin-table-wrap) — таблица
   растягивается на высоту окна, пагинация прижата вниз, снизу нет пустого места. */
body.idoc-app .idoc-main:has(.idoc-admin-table-wrap) {
	display: flex;
	flex-direction: column;
	height: 100vh;
	overflow: hidden;
}

.idoc-main:has(.idoc-admin-table-wrap) > .idoc-admin-table-wrap {
	flex: 1 1 auto;
	max-height: none;
	min-height: 0;
}

/* Глобальный поиск: та же логика, но таблица вложена в #searchResultsContainer —
   тянем контейнер и таблицу до подвала «Всего записей» (низ как в разделах). */
body[data-section="search"] #searchResultsContainer {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
}

body[data-section="search"] #searchResultsContainer .idoc-table-wrap {
	flex: 1 1 auto;
	min-height: 0;
	max-height: none;
}

/* Запросы: таблица вложена в #queryView > #requestsResultsContainer. Тянем эту
   цепочку до подвала, чтобы таблица занимала ровно свободную высоту, а подвал с
   кнопками прокрутки оставался видимым и не обрезался (как в разделах/поиске). */
body[data-section="requests"] #queryView,
body[data-section="requests"] #requestsResultsContainer {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
}

body[data-section="requests"] #requestsResultsContainer .idoc-table-wrap {
	flex: 1 1 auto;
	min-height: 0;
	max-height: none;
}

/* Видимый тонкий скроллбар (перебивает глобальное скрытие из style.css) */
.idoc-table-wrap::-webkit-scrollbar {
	width: 9px;
	height: 9px;
}
.idoc-table-wrap::-webkit-scrollbar-thumb {
	background: var(--color-border-secondary);
	border-radius: 5px;
}

/* «Прилипающая» шапка таблицы при прокрутке списка */
body.idoc-app #idocTable thead th {
	position: sticky;
	top: 0;
	z-index: 2;
}

body.idoc-app table#idocTable {
	width: 100%;
	min-width: 0;
	/* auto: колонки подгоняются по содержимому, описание занимает остаток */
	table-layout: auto;
	border-collapse: collapse;
	font-size: var(--idoc-fs);
	margin: 0;
	background: transparent;
}

body.idoc-app #idocTable th {
	overflow: hidden;
	text-overflow: ellipsis;
}

body.idoc-app #idocTable thead th {
	text-align: left;
	font-weight: 500;
	color: var(--color-text-secondary);
	background: var(--color-background-secondary);
	padding: 7px 8px;
	border: 0;
	border-bottom: 1px solid var(--color-border-tertiary);
	white-space: nowrap;
	cursor: default;
}

body.idoc-app #idocTable thead th.sortable {
	cursor: pointer;
	user-select: none;
}

body.idoc-app #idocTable thead th.sortable:hover {
	color: var(--color-text-primary);
}

body.idoc-app #idocTable tbody td {
	padding: 6px 8px;
	border: 0;
	border-bottom: 1px solid var(--color-border-tertiary);
	color: var(--color-text-primary);
	background: transparent;
	vertical-align: middle;   /* одинаковая высота строк во всех разделах (иконки/текст по центру) */
	line-height: 1.5;
	text-align: left;   /* перебиваем глобальное td{text-align:center} из style.css */
}

/* === Выравнивание колонок (разделы и глобальный поиск), заголовок + содержимое === */
/* По центру: Файл/ссылка, Изменён, Действия */
body.idoc-app #idocTable thead th.idoc-col-file,
body.idoc-app #idocTable tbody td.idoc-col-file,
body.idoc-app #idocTable thead th.idoc-col-date,
body.idoc-app #idocTable tbody td.idoc-col-date,
body.idoc-app #idocTable thead th.idoc-col-actions,
body.idoc-app #idocTable tbody td.idoc-col-actions,
.idoc-app #searchResultsTable thead th.idoc-col-file,
.idoc-app #searchResultsTable tbody td.idoc-col-file,
.idoc-app #searchResultsTable thead th.idoc-col-date,
.idoc-app #searchResultsTable tbody td.idoc-col-date,
.idoc-app #searchResultsTable thead th.idoc-col-actions,
.idoc-app #searchResultsTable tbody td.idoc-col-actions {
	text-align: center;
}

/* Колонка ID записи — компактная, по центру, приглушённая, моноширинные цифры */
body.idoc-app #idocTable thead th.idoc-col-id,
body.idoc-app #idocTable tbody td.idoc-col-id {
	text-align: center;
	width: 1%;
	white-space: nowrap;
	color: var(--color-text-tertiary);
	font-variant-numeric: tabular-nums;
}

/* По левому краю: Раздел, Тип, Описание/Содержание, Автор */
body.idoc-app #idocTable thead th.idoc-col-type,
body.idoc-app #idocTable tbody td.idoc-col-type,
body.idoc-app #idocTable thead th.idoc-col-content,
body.idoc-app #idocTable tbody td.idoc-content,
body.idoc-app #idocTable thead th.idoc-col-author,
body.idoc-app #idocTable tbody td.idoc-col-author,
.idoc-app #searchResultsTable thead th.idoc-col-section,
.idoc-app #searchResultsTable tbody td.idoc-col-section,
.idoc-app #searchResultsTable thead th.idoc-col-type,
.idoc-app #searchResultsTable tbody td.idoc-col-type,
.idoc-app #searchResultsTable thead th[data-sort="description"],
.idoc-app #searchResultsTable tbody td.idoc-content,
.idoc-app #searchResultsTable thead th.idoc-col-author,
.idoc-app #searchResultsTable tbody td.idoc-col-author {
	text-align: left;
}

body.idoc-app #idocTable tbody tr:last-child td {
	border-bottom: 0;
}

body.idoc-app #idocTable tbody tr {
	cursor: pointer;
}

body.idoc-app #idocTable tbody tr:hover td {
	background: var(--color-background-secondary);
}

/* Колонки — ширина по содержимому (table-layout:auto).
   Все «короткие» колонки сжимаются под текст (nowrap), а «Содержание/Описание»
   занимает весь остаток и усекается многоточием (см. .idoc-content ниже). */
.idoc-col-type,
.idoc-col-author,
.idoc-col-actions,
.idoc-col-file,
.idoc-col-section {
	width: 1%;
	white-space: nowrap;
}

.idoc-col-date {
	width: 1%;
	color: var(--color-text-secondary);
	white-space: nowrap;
}

/* Тип — цветная точка + подпись */
.idoc-type {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	white-space: nowrap;
}

.idoc-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	flex-shrink: 0;
}

/* Содержание — гибкая колонка: занимает весь остаток ширины и усекается
   многоточием. max-width:0 нужен, чтобы усечение работало при table-layout:auto. */
.idoc-content {
	width: 100%;
	max-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Текстовая ячейка (телефоны: ФИО, телефон) — усечение */
.idoc-text {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* Телефон / email — кликабельные ссылки (tel: / mailto:) */
.idoc-tel,
.idoc-mail {
	color: var(--color-text-info);
	text-decoration: none;
}

.idoc-tel:hover,
.idoc-mail:hover {
	text-decoration: underline;
}

/* Подпись к внутренней ссылке #телефоны/id: ФИО и основной номер
   (дописывается idocEnrichLinks из linkify.js) */
.idoc-reflink-info {
	color: var(--color-text-tertiary);
}

/* Файл / ссылка — иконки */
.idoc-col-file {
	white-space: nowrap;
}

/* Заголовки таблиц чуть мельче, чтобы длинные названия колонок не обрезались
   (разделы и глобальный поиск). Масштабируются вместе с кнопкой размера шрифта. */
body.idoc-app #idocTable thead th,
.idoc-app #searchResultsTable thead th {
	font-size: calc(var(--idoc-fs) - 2px);
}

.idoc-file {
	color: var(--color-text-info);
	font-size: 17px;
	line-height: 1;   /* иконка не должна делать строку выше, чем строки без файла */
	text-decoration: none;
	margin-right: 8px;
	vertical-align: middle;
}

.idoc-file:hover {
	color: var(--color-text-primary);
}

.idoc-muted {
	color: var(--color-text-tertiary);
}

/* Автор — аватар с инициалами */
.idoc-author-avatar {
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: var(--color-background-tertiary);
	color: var(--color-text-secondary);
	font-size: 11px;
	font-weight: 600;
	display: flex;
	align-items: center;
	justify-content: center;
	text-transform: uppercase;
}

/* Действия — иконки */
.idoc-action {
	background: none;
	border: 0;
	padding: 0;
	margin-left: 10px;
	font-size: 17px;
	cursor: pointer;
	vertical-align: middle;
	color: var(--color-text-secondary);
	line-height: 1;
}

.idoc-action:first-child {
	margin-left: 0;
}

.idoc-action.is-edit { color: var(--color-text-info); }
.idoc-action.is-delete { color: var(--color-text-danger); }
.idoc-action.is-view { color: var(--color-text-secondary); }
.idoc-action.is-share { color: var(--color-text-info); }

/* Действие-ссылка (<a>, напр. «Просмотр») — выглядит как кнопки-иконки */
a.idoc-action { text-decoration: none; display: inline-block; }

/* Кликабельные ссылки в тексте записей (linkify.js): URL и #раздел/id */
.idoc-content a {
	color: var(--color-text-info);
	text-decoration: underline;
	word-break: break-all;
}
.idoc-action.is-revoke { color: var(--color-text-warning); }
.idoc-action.is-lock { color: var(--color-text-tertiary); cursor: default; }
.idoc-action:disabled { color: var(--color-text-tertiary); cursor: not-allowed; }

/* Сенсорные экраны (планшеты): значки в колонке «Файл/Ссылка» крупнее и с большим
   промежутком + увеличенная зона нажатия — чтобы попадать пальцем. На десктопе
   (pointer: fine) остаётся компактно. */
@media (pointer: coarse) {
	body.idoc-app #idocTable td.idoc-col-file .idoc-file,
	body.idoc-app #idocTable td.idoc-col-file .idoc-action,
	.idoc-app #searchResultsTable td.idoc-col-file .idoc-file,
	.idoc-app #searchResultsTable td.idoc-col-file .idoc-action {
		display: inline-block;
		font-size: 22px;
		padding: 8px;
		margin-right: 16px;
	}
	body.idoc-app #idocTable td.idoc-col-file .idoc-file:last-child,
	body.idoc-app #idocTable td.idoc-col-file .idoc-action:last-child,
	.idoc-app #searchResultsTable td.idoc-col-file .idoc-file:last-child,
	.idoc-app #searchResultsTable td.idoc-col-file .idoc-action:last-child {
		margin-right: 0;
	}
}

/* Непрочитанная строка — насыщенный тёплый фон + выраженный янтарный акцент
   слева. Фон делаем ярче, подмешивая к тёплому фону акцентный цвет (color-mix);
   старые браузеры используют запасной plain-фон из строки выше. */
body.idoc-app #idocTable tbody tr.unread-row td {
	background: var(--color-background-warning);
	background: color-mix(in srgb, var(--color-background-warning) 65%, var(--color-text-warning) 35%);
}

body.idoc-app #idocTable tbody tr.unread-row td:first-child {
	box-shadow: inset 5px 0 0 var(--color-text-warning);
}

body.idoc-app #idocTable tbody tr.unread-row:hover td {
	background: var(--color-background-warning);
	background: color-mix(in srgb, var(--color-background-warning) 55%, var(--color-text-warning) 45%);
}

body.idoc-app #idocTable tbody tr.unread-row .idoc-content {
	font-weight: 600;
	color: var(--color-text-warning);
}

/* Подсветка записи при переходе с главной («Последние обновления», ?highlight=ID):
   кратковременная синяя вспышка с акцентом слева, затем плавно гаснет. Перебивает
   и обычный, и непрочитанный фон строки (важнее !important у анимации). */
@keyframes idocRowHighlight {
	0%   { background: rgba(74, 163, 255, 0.78); }
	70%  { background: rgba(74, 163, 255, 0.78); }
	100% { background: transparent; }
}
body.idoc-app #idocTable tbody tr.idoc-row-highlight td {
	animation: idocRowHighlight 4s ease-out;
}
body.idoc-app #idocTable tbody tr.idoc-row-highlight td:first-child {
	box-shadow: inset 4px 0 0 var(--color-text-info);
}

/* --- Заметки: блок «вопрос → ответ администратора» (вариант A) --- */
/* Блок ответа администратора (редактируемый) */
.idoc-qa-admin {
	border: 1px solid var(--color-border-info);
	border-radius: var(--border-radius-sm);
	background: var(--color-background-info);
	padding: 10px 12px;
}
.idoc-qa-admin-row {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-top: 8px;
	flex-wrap: wrap;
}
.idoc-qa-admin-row .idoc-qa-status-select {
	width: auto;
	min-width: 130px;
	flex: 0 0 auto;
}
.idoc-qa-admin-row #saveNoteAnswerBtn {
	margin-left: auto;
}
.idoc-qa-msg {
	margin-top: 8px;
	font-size: 12.5px;
}
.idoc-qa-msg.is-ok { color: var(--color-text-success); }
.idoc-qa-msg.is-err { color: var(--color-text-danger); }

/* Ответ только для чтения (владелец/прочие) */
.idoc-qa-view .idoc-qa-answer {
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-sm);
	background: var(--color-background-secondary);
	padding: 8px 10px;
	white-space: pre-wrap;
	word-break: break-word;
}

/* Бейдж статуса — в окне записи и в списке заметок */
.idoc-qa-badge {
	display: inline-block;
	font-size: 11px;
	font-weight: 600;
	padding: 1px 8px;
	border-radius: 20px;
	white-space: nowrap;
	vertical-align: middle;
	color: #fff;
}
.idoc-qa-open { background: var(--color-text-warning); }
.idoc-qa-in_progress { background: var(--color-text-info); }
.idoc-qa-done { background: var(--color-text-success); }

/* Подвал таблицы: всего записей (слева) + пагинация (справа) — как в глобальном поиске */
.idoc-tablefoot {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-top: 8px;
	color: var(--color-text-secondary);
	font-size: 12px;
}

.idoc-tablefoot #pagination {
	margin-left: auto;
}

.idoc-tablefoot #idoc-filtered-info:empty {
	display: none;
}

/* Аккуратная пагинация поверх Bootstrap */
body.idoc-app #pagination .pagination {
	margin: 0;
	gap: 2px;
	flex-wrap: wrap;
}

body.idoc-app #pagination .page-link {
	border: 1px solid var(--color-border-tertiary);
	color: var(--color-text-secondary);
	border-radius: var(--border-radius-sm) !important;
	padding: 3px 9px;
	font-size: 12px;
	background: var(--color-background-primary);
}

body.idoc-app #pagination .page-item.active .page-link {
	background: var(--color-background-info);
	border-color: var(--color-border-info);
	color: var(--color-text-info);
	font-weight: 600;
}

body.idoc-app #pagination .page-item.disabled .page-link {
	color: var(--color-text-tertiary);
	background: var(--color-background-secondary);
}

body.idoc-app #paginationInfo {
	color: var(--color-text-secondary);
	font-size: 12px;
}

/* ============================================================ */
/* Окно записи (edit/view) — на весь правый фрейм               */
/* ============================================================ */
/* Окно занимает правый фрейм, но НИЖЕ заголовка раздела и панели поиска,
   чтобы они оставались видны (отступ сверху). */
body.idoc-app #editModal .modal-dialog {
	margin: 104px 0 0 auto;
	max-width: none;
	width: calc(100vw - var(--idoc-sidebar-w));
	height: calc(100vh - 104px);
	display: block;
}

body.idoc-app #editModal .modal-content {
	height: 100%;
	border: 1px solid var(--color-border-tertiary);
	border-right: 0;
	border-radius: var(--border-radius-lg) 0 0 0;
	box-shadow: -8px 0 24px rgba(0, 0, 0, 0.10);
	overflow: hidden;
}

/* Нейтральная шапка вместо синей */
body.idoc-app #editModal .modal-header {
	background: var(--color-background-primary) !important;
	border-bottom: 1px solid var(--color-border-tertiary);
	padding: 13px 22px;
}

body.idoc-app #editModal .modal-title {
	color: var(--color-text-primary) !important;
	font-size: 16px;
	font-weight: 600;
}

body.idoc-app #editModal .modal-body {
	overflow-y: auto;
	padding: 18px 22px;
}

body.idoc-app #editModal .modal-footer {
	padding: 12px 22px;
	border-top: 1px solid var(--color-border-tertiary);
}

/* «Доступ для пользователей»: собственная прокрутка списка пользователей и прав,
   чтобы длинный список не растягивал модальное окно (#2). */
body.idoc-app #shareAccessList,
body.idoc-app #accessList {
	max-height: 240px;
	overflow-y: auto;
	padding: 4px 8px 4px 2px;
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-md, 8px);
	background: var(--color-background-secondary);
}

body.idoc-app #shareAccessList::-webkit-scrollbar,
body.idoc-app #accessList::-webkit-scrollbar {
	width: 9px;
}

body.idoc-app #shareAccessList::-webkit-scrollbar-thumb,
body.idoc-app #accessList::-webkit-scrollbar-thumb {
	background: var(--color-border-secondary);
	border-radius: 5px;
}

/* Последняя строка доступа без нижнего отступа — ровный край у скролл-контейнера */
body.idoc-app #shareAccessList .access-row:last-child,
body.idoc-app #accessList .access-row:last-child {
	margin-bottom: 0 !important;
}

/* ============================================================ */
/* Окно записи — современная карточка «Доступ для пользователей» */
/* ============================================================ */
body.idoc-app #editModal .idoc-access-block {
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	background: var(--color-background-secondary);
	padding: 14px 16px;
	margin-top: 6px;
}

body.idoc-app #editModal .idoc-access-head {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	font-weight: 600;
	color: var(--color-text-primary);
	margin-bottom: 12px;
}
body.idoc-app #editModal .idoc-access-head i {
	font-size: 18px;
	color: var(--color-text-secondary);
}

/* Заголовок блока доступа: название слева, переключатель сворачивания справа. */
body.idoc-app #editModal .idoc-access-head {
	justify-content: space-between;
}
body.idoc-app #editModal .idoc-access-head-title {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
}
body.idoc-app #editModal .idoc-access-toggle {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	flex: 0 0 auto;
	font-size: 12px;
	font-weight: 500;
	color: var(--color-text-secondary);
	cursor: pointer;
	white-space: nowrap;
	user-select: none;
}
body.idoc-app #editModal .idoc-access-toggle input {
	margin: 0;
	cursor: pointer;
}
/* Текст переключателя «Показать» ↔ «Скрыть» в зависимости от состояния. */
body.idoc-app #editModal .idoc-access-toggle-hide { display: none; }
body.idoc-app #editModal .idoc-access-toggle-input:checked ~ .idoc-access-toggle-show { display: none; }
body.idoc-app #editModal .idoc-access-toggle-input:checked ~ .idoc-access-toggle-hide { display: inline; }

/* По умолчанию блок свёрнут (чекбокс не отмечен): прячем содержимое — остаётся
   одна строка-заголовок (экономия места, особенно на планшетах). Разворачивается
   галочкой «Показать». :has поддерживается (как и в остальной вёрстке проекта). */
body.idoc-app #editModal .idoc-access-block:not(:has(.idoc-access-toggle-input:checked)) .idoc-access-cols,
body.idoc-app #editModal .idoc-access-block:not(:has(.idoc-access-toggle-input:checked)) .idoc-access-list,
body.idoc-app #editModal .idoc-access-block:not(:has(.idoc-access-toggle-input:checked)) .idoc-access-add {
	display: none;
}
body.idoc-app #editModal .idoc-access-block:not(:has(.idoc-access-toggle-input:checked)) .idoc-access-head {
	margin-bottom: 0;
}

/* Заголовки столбцов списка доступа */
body.idoc-app #editModal .idoc-access-cols {
	display: flex;
	gap: 8px;
	padding: 0 38px 6px 2px;   /* справа — место под колонку «удалить» */
	font-size: 11px;
	font-weight: 600;
	color: var(--color-text-tertiary);
}
body.idoc-app #editModal .idoc-access-cols span:nth-child(1) { flex: 1 1 auto; }
body.idoc-app #editModal .idoc-access-cols span:nth-child(2) { flex: 0 0 170px; }
body.idoc-app #editModal .idoc-access-cols span:nth-child(3) { display: none; }

/* Список внутри карточки — прозрачный, только прокрутка (рамку даёт карточка).
   Высота строки 38px + 8px gap = шаг 46px. Показываем 3 строки (132px), далее скролл
   (включается с 4-го пользователя). Для «Телефонов» — 2 строки (см. ниже). */
body.idoc-app #editModal .idoc-access-list {
	max-height: 132px;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 0 2px;
	border: 0;
	background: transparent;
}

/* «Телефоны»: окно ниже, поэтому показываем 2 строки (86px), скролл с 3-го пользователя. */
body.idoc-app #editModal .editform-phones .idoc-access-list {
	max-height: 86px;
}

/* Строка доступа: пользователь (растягивается) + права + кнопка удаления */
body.idoc-app .access-row {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-bottom: 0;
}
body.idoc-app .access-row .idoc-access-user {
	flex: 1 1 auto;
	min-width: 0;
}
body.idoc-app .access-row .idoc-access-type {
	flex: 0 0 170px;
	width: 170px;
}

body.idoc-app .idoc-access-del {
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-md);
	background: var(--color-background-primary);
	color: var(--color-text-danger);
	cursor: pointer;
	transition: background 0.12s, border-color 0.12s;
}
body.idoc-app .idoc-access-del:hover {
	background: var(--color-background-danger);
	border-color: var(--color-text-danger);
}
body.idoc-app .idoc-access-del i { font-size: 16px; }

/* Просмотр записи: строки доступа только для чтения (без списков/кнопок) */
body.idoc-app #editModal .access-row-ro {
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-md);
	padding: 8px 12px;
	font-size: 13px;
}
body.idoc-app #editModal .access-row-ro .idoc-access-user-ro {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--color-text-primary);
}
body.idoc-app #editModal .access-row-ro .idoc-access-type-ro {
	flex: 0 0 170px;
	color: var(--color-text-secondary);
}
body.idoc-app #editModal .idoc-access-empty {
	color: var(--color-text-tertiary);
	font-size: 13px;
	padding: 6px 2px;
}

/* Кнопка «Добавить пользователя» — пунктирная «add» */
body.idoc-app #editModal .idoc-access-add {
	margin-top: 12px;
	border-style: dashed;
	color: var(--color-text-info);
}

/* Подписи полей окна записи — мельче и приглушённее */
body.idoc-app #editModal .modal-body .form-label {
	font-size: 11.5px;
	font-weight: 600;
	color: var(--color-text-secondary) !important;
	margin-bottom: 2px;
}

/* «Текущий файл» — чип с иконкой */
body.idoc-app #editModal .idoc-file-chip {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	max-width: 100%;
	padding: 5px 12px;
	background: var(--color-background-secondary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: 999px;
	font-size: 13px;
	color: var(--color-text-primary);
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}
body.idoc-app #editModal .idoc-file-chip i {
	color: var(--color-text-info);
	font-size: 15px;
	flex-shrink: 0;
}

/* «Просмотр записи»: имя файла и кнопка «Скачать» в одну строку
   (на узком окне кнопка переносится под чип). */
body.idoc-app #editModal .idoc-modal-file-row {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
}

/* Кнопка-ссылка (например, «Скачать») не должна подчёркиваться как текст */
a.idoc-btn { text-decoration: none; }

body.idoc-app #editModal .btn-primary {
	background: var(--idoc-btn-accent);
	border-color: var(--idoc-btn-accent);
}

/* «Автор записи» + «Тип» — в одну строку (две колонки), компактно:
   наименование и значение поля на одной строке. */
.idoc-modal-row {
	display: flex;
	gap: 1rem;
	align-items: center;
}

.idoc-modal-row .idoc-modal-col {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	align-items: center;
	gap: 8px;
}

/* Отступ задаёт сам ряд, а не колонки-флекс-элементы (перебиваем .mb-3 по id). */
body.idoc-app #editModal .modal-body .idoc-modal-row {
	margin-bottom: 0.3rem;
}

body.idoc-app #editModal .modal-body .idoc-modal-row .idoc-modal-col {
	margin-bottom: 0;
}

.idoc-modal-row .idoc-modal-col > .form-label {
	margin: 0;
	white-space: nowrap;
	flex-shrink: 0;
}

.idoc-modal-row .idoc-modal-col > .form-label::after {
	content: ':';
}

.idoc-modal-row .idoc-modal-col > .form-control,
.idoc-modal-row .idoc-modal-col > .form-select {
	flex: 1 1 auto;
	min-width: 0;
}

@media (max-width: 576px) {
	.idoc-modal-row {
		flex-direction: column;
		gap: 0;
		align-items: stretch;
	}
}

/* Минимальные отступы между полями — компактное окно записи */
body.idoc-app #editModal .modal-body .mb-3 {
	margin-bottom: 0.3rem;
}

body.idoc-app #editModal .modal-body textarea.form-control {
	min-height: 72px;
}

/* Bootstrap-элементы внутри редизайна берут цвета из токенов (важно для тёмной темы) */
body.idoc-app .modal-content {
	background: var(--color-background-primary);
	color: var(--color-text-primary);
}

body.idoc-app .form-control,
body.idoc-app .form-select {
	background-color: var(--color-background-primary);
	color: var(--color-text-primary);
	border-color: var(--color-border-secondary);
}

body.idoc-app .form-control::placeholder {
	color: var(--color-text-tertiary);
}

body.idoc-app .form-control:focus,
body.idoc-app .form-select:focus {
	background-color: var(--color-background-primary);
	color: var(--color-text-primary);
	border-color: var(--color-text-info);
	box-shadow: 0 0 0 0.15rem rgba(24, 95, 165, 0.18);
}

html[data-theme-base="dark"] body.idoc-app .btn-close {
	filter: invert(1) grayscale(1) brightness(1.6);
}

html[data-theme-base="dark"] body.idoc-app .btn-secondary {
	background: var(--color-background-tertiary);
	border-color: var(--color-border-secondary);
	color: var(--color-text-primary);
}

/* Подписи и текст форм/окна записи берут цвет из токенов.
   style.css форсит .form-label{color:#000!important} — в тёмной теме чёрные
   подписи на тёмном фоне были нечитаемы. */
body.idoc-app .form-label {
	color: var(--color-text-secondary) !important;
}
body.idoc-app .modal-body,
body.idoc-app .modal-body p,
body.idoc-app .form-control-plaintext,
body.idoc-app .form-text {
	color: var(--color-text-primary);
}
body.idoc-app .modal-body .text-muted,
body.idoc-app .form-label.text-muted {
	color: var(--color-text-secondary) !important;
}

/* Затемнение фона легче — заголовок и поиск читаются */
body.idoc-app .modal-backdrop.show {
	opacity: 0.18;
}

@media (max-width: 720px) {
	body.idoc-app #editModal .modal-dialog {
		width: 100vw;
		margin-top: 92px;
		height: calc(100vh - 92px);
	}
}

/* ============================================================ */
/* Просмотр записи глобального поиска — панель «окна записи»     */
/* ============================================================ */
.idoc-record-overlay[hidden] {
	display: none;
}

.idoc-record-overlay {
	position: fixed;
	inset: 0;
	z-index: 1060;
}

.idoc-record-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(0, 0, 0, 0.18);
}

.idoc-record-panel {
	position: absolute;
	top: 104px;
	right: 0;
	width: calc(100vw - var(--idoc-sidebar-w));
	height: calc(100vh - 104px);
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-right: 0;
	border-radius: var(--border-radius-lg) 0 0 0;
	box-shadow: -8px 0 24px rgba(0, 0, 0, 0.10);
	display: flex;
	flex-direction: column;
	overflow: hidden;
}

.idoc-record-header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 13px 22px;
	border-bottom: 1px solid var(--color-border-tertiary);
}

.idoc-record-header h5 {
	margin: 0;
	font-size: 16px;
	font-weight: 600;
	color: var(--color-text-primary);
}

.idoc-record-close {
	background: none;
	border: 0;
	color: var(--color-text-secondary);
	cursor: pointer;
	font-size: 20px;
	line-height: 1;
	display: inline-flex;
}

.idoc-record-close:hover {
	color: var(--color-text-primary);
}

.idoc-record-body {
	padding: 18px 22px;
	overflow-y: auto;
}

.idoc-record-field {
	margin-bottom: 14px;
}

.idoc-record-label {
	font-size: 12px;
	color: var(--color-text-secondary);
	margin-bottom: 4px;
}

.idoc-record-value {
	font-size: 14px;
	color: var(--color-text-primary);
	white-space: pre-wrap;
	word-break: break-word;
}

.idoc-record-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
	margin-top: 4px;
}

@media (max-width: 720px) {
	.idoc-record-panel {
		width: 100vw;
		top: 92px;
		height: calc(100vh - 92px);
	}
}

/* ============================================================ */
/* Страница входа / регистрации                                 */
/* ============================================================ */
.idoc-auth {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	padding: 24px;
	gap: 14px;
}

.idoc-auth-card {
	width: 100%;
	max-width: 380px;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	padding: 26px 24px;
	box-shadow: 0 8px 30px rgba(0, 0, 0, 0.06);
}

.idoc-auth-head {
	text-align: center;
	margin-bottom: 18px;
}

.idoc-auth-head img {
	width: 72px;
	height: 72px;
	border-radius: var(--border-radius-lg);
	margin-bottom: 10px;
}

.idoc-auth-head h1 {
	font-size: 22px;
	font-weight: 600;
	margin: 0 0 2px;
	color: var(--color-text-info);
}

.idoc-auth-head p {
	margin: 0;
	color: var(--color-text-secondary);
	font-size: 13px;
}

.idoc-auth-sub {
	text-align: center;
	color: var(--color-text-secondary);
	font-size: 13px;
	margin: 0 0 16px;
}

.idoc-auth-sub a {
	color: var(--color-text-info);
	text-decoration: none;
}

.idoc-field {
	margin-bottom: 14px;
	display: flex;
	flex-direction: column;
	gap: 5px;
}

.idoc-field label {
	font-size: 12px;
	color: var(--color-text-secondary);
	font-weight: 500;
}

.idoc-auth .idoc-input {
	width: 100%;
}

.idoc-hint {
	font-size: 11px;
	color: var(--color-text-tertiary);
	line-height: 1.4;
}

.idoc-auth-msg {
	color: var(--color-text-danger);
	font-size: 13px;
	min-height: 18px;
	text-align: center;
	margin-bottom: 8px;
}

.idoc-auth-submit {
	width: 100%;
	justify-content: center;
	height: 40px;
	font-size: 14px;
}

.idoc-auth-foot {
	color: var(--color-text-tertiary);
	font-size: 12px;
}

/* Сообщения (alert) — компактнее */
/* Тост-уведомления: внизу СЛЕВА рабочей области, чтобы не перекрывать
   кнопки «Закрыть/Сохранить» в футере окна записи (они внизу справа). */
body.idoc-app #errorMessage,
body.idoc-app #successMessage {
	position: fixed;
	left: calc(var(--idoc-sidebar-w) + 18px);
	right: auto;
	bottom: 18px;
	z-index: 1090;
	max-width: 360px;
	margin: 0;
	box-shadow: 0 6px 24px rgba(0, 0, 0, 0.16);
}

@media (max-width: 720px) {
	body.idoc-app #errorMessage,
	body.idoc-app #successMessage {
		left: 12px;
		right: 12px;
		max-width: none;
	}
}

/* ============================================================ */
/* Стартовый экран (главная)                                    */
/* ============================================================ */
/* Hero масштабируется под разрешение через clamp(min, Nvw, max):
   на больших экранах — крупно (max), на узких — плавно мельче (до min). */
.idoc-home-hero {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: clamp(10px, 1.6vw, 16px) 16px clamp(6px, 1vw, 8px);
}

.idoc-home-hero img {
	width: clamp(58px, 7.5vw, 86px);
	height: clamp(58px, 7.5vw, 86px);
	border-radius: var(--border-radius-lg);
	margin-bottom: clamp(6px, 1vw, 10px);
}

/* Селектор усилен (.idoc-home-hero .idoc-home-quote), иначе правило
   `.idoc-home-hero p { margin: 0 }` перебивает отступ по специфичности. */
.idoc-home-hero .idoc-home-quote {
	margin: clamp(12px, 1.6vw, 22px) auto 0;   /* отступ от названия — тоже масштабируется */
	max-width: 560px;
	font-style: italic;
	color: var(--color-text-tertiary);
	font-size: clamp(12.5px, 1.4vw, 14.5px);
}

.idoc-home-hero h1 {
	font-size: clamp(20px, 2.4vw, 27px);
	font-weight: 600;
	margin: 0 0 4px;
	color: var(--color-text-info);
}

.idoc-home-hero p {
	margin: 0;
	color: var(--color-text-secondary);
	font-size: clamp(12.5px, 1.35vw, 14px);
	max-width: 560px;
}

.idoc-unread {
	margin: 0 auto 18px;
	max-width: 720px;
	background: var(--color-background-warning);
	border: 1px solid #f3d9b0;
	color: var(--color-text-warning);
	border-radius: var(--border-radius-md);
	padding: 11px 14px;
	font-size: 13px;
	text-align: center;
}

.idoc-home-footer {
	text-align: center;
	color: var(--color-text-tertiary);
	font-size: 12px;
	margin-top: 10px;
	padding-top: 6px;
}

/* ============================================================ */
/* Главная: дашборд (приветствие, поиск, карточки, обновления)  */
/* ============================================================ */
/* Устойчиво к масштабу экрана (125%/150% и т.п.): НЕ обрезаем контент.
   min-height:100vh — главная заполняет экран (footer внизу, без пустот),
   а если контент не помещается (крупный масштаб ОС → меньше CSS-высота,
   или низкий экран) — появляется обычная прокрутка страницы, ничего не
   срезается. Раньше height:100vh + overflow:hidden при масштабе 125%
   обрезали низ. flex:1 на .idoc-home заполняет свободное место по высоте. */
body.idoc-app .idoc-main:has(.idoc-home) {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}

.idoc-home-hero,
.idoc-unread,
.idoc-home-footer {
	flex: 0 0 auto;
}

.idoc-home {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
	width: 100%;
	max-width: 1000px;
	margin: 2px auto 0;
}

.idoc-greeting,
.idoc-home-search,
.idoc-qa-grid {
	flex: 0 0 auto;
}

.idoc-greeting {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 12px;
	flex-wrap: wrap;
	margin: 16px 0 10px;        /* отделяем приветствие от высказывания сверху */
}

.idoc-greeting h2 {
	margin: 0;
	font-size: clamp(15px, 1.7vw, 18px);   /* приветствие чуть меньше + масштаб под разрешение */
	font-weight: 600;
	color: var(--color-text-primary);
}

.idoc-greeting-date {
	font-size: 13px;
	color: var(--color-text-secondary);
}

.idoc-home-search {
	display: flex;
	align-items: center;
	gap: 10px;
	margin-bottom: 14px;
	padding: 10px 14px;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-lg);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.idoc-home-search:focus-within {
	border-color: var(--color-text-info);
}

.idoc-home-search > i {
	font-size: 20px;
	color: var(--color-text-tertiary);
}

.idoc-home-search input {
	flex: 1;
	min-width: 0;
	border: 0;
	background: transparent;
	font-size: 15px;
	color: var(--color-text-primary);
	outline: none;
}

.idoc-home-search button {
	flex: 0 0 auto;
	border: 0;
	background: var(--idoc-btn-accent);
	color: #fff;
	font-size: 13px;
	padding: 8px 16px;
	border-radius: var(--border-radius-md);
	cursor: pointer;
}

.idoc-home-search button:hover {
	filter: brightness(1.06);
}

.idoc-qa-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 12px;
	margin-bottom: 14px;
}

.idoc-qa-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 7px;
	padding: 12px 14px;
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	color: var(--color-text-primary);
	text-decoration: none;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.05s ease;
}

.idoc-qa-card:hover {
	border-color: var(--color-border-secondary);
	box-shadow: 0 4px 14px rgba(0, 0, 0, 0.10);
	transform: translateY(-1px);
}

.idoc-qa-icon {
	width: 34px;
	height: 34px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	font-size: 18px;
}

.idoc-qa-count {
	font-size: 22px;
	font-weight: 600;
	line-height: 1;
	color: var(--color-text-primary);
}

.idoc-qa-label {
	font-size: 12.5px;
	color: var(--color-text-secondary);
}

.idoc-home-cols {
	flex: 1 1 auto;
	min-height: 0;
	display: grid;
	grid-template-columns: 2fr 1fr;
	gap: 14px;
	align-items: start;          /* блоки по своему контенту (список — ровно 7 строк) */
}

.idoc-recent,
.idoc-total {
	min-width: 0;                 /* без этого длинный текст ломает grid-колонку */
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.idoc-recent {
	display: flex;
	flex-direction: column;
	overflow: hidden;             /* список скроллится внутри, наружу ничего не вылезает */
	padding: 4px 4px 6px;
}

.idoc-recent-head {
	flex: 0 0 auto;
	font-size: 13px;
	font-weight: 600;
	color: var(--color-text-primary);
	padding: 4px 12px 4px;
}

#idoc-recent-list {
	flex: 0 0 auto;
	max-height: 196px;           /* ровно 7 строк по 28px; дальше — внутренняя прокрутка списка */
	overflow-y: auto;
}

.idoc-recent-row {
	display: flex;
	align-items: center;
	gap: 10px;
	min-height: 28px;            /* компактная строка фиксированной высоты */
	padding: 0 12px;
	border-top: 1px solid var(--color-border-tertiary);
	text-decoration: none;
	color: var(--color-text-primary);
	border-radius: var(--border-radius-sm);
}

.idoc-recent-row:hover {
	background: var(--color-background-secondary);
}

.idoc-recent-badge {
	flex: 0 0 auto;
	font-size: 11px;
	color: #fff;
	padding: 2px 9px;
	border-radius: 20px;
	white-space: nowrap;
}

.idoc-recent-text {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: 12.5px;
}

.idoc-recent-date {
	flex: 0 0 auto;
	font-size: 12px;
	color: var(--color-text-secondary);
	white-space: nowrap;          /* дата и время — в одну строку, без переноса */
}

.idoc-recent-empty {
	padding: 14px 12px;
	color: var(--color-text-tertiary);
	font-size: 13px;
	border-top: 1px solid var(--color-border-tertiary);
}

.idoc-total {
	align-self: start;            /* виджет по высоте контента, не на всю колонку */
	padding: 18px;
	text-align: center;
	display: flex;
	flex-direction: column;
	gap: 6px;
	justify-content: center;
}

.idoc-total-label {
	font-size: 13px;
	color: var(--color-text-secondary);
}

.idoc-total-value {
	font-size: 38px;
	font-weight: 700;
	line-height: 1;
	color: var(--color-text-info);
}

/* Узкие экраны (планшет/телефон): карточки в 3, затем 2 столбца,
   правая колонка («Всего элементов») уходит под список. Список показываем
   целиком (прокрутка всей страницей), чтобы не было двойной прокрутки. */
@media (max-width: 900px) {
	.idoc-qa-grid { grid-template-columns: repeat(3, 1fr); }
	.idoc-home-cols { grid-template-columns: 1fr; }
	#idoc-recent-list { max-height: none; }
}

@media (max-width: 520px) {
	.idoc-qa-grid { grid-template-columns: repeat(2, 1fr); }
}

/* Планшеты (iPad mini и меньше): дополнительно уменьшаем hero и приветствие. */
@media (max-width: 1024px) {
	.idoc-home-hero {
		padding: clamp(8px, 1.2vw, 12px) 16px clamp(4px, 0.8vw, 6px);
	}
	.idoc-home-hero img {
		width: clamp(46px, 6vw, 60px);
		height: clamp(46px, 6vw, 60px);
		margin-bottom: clamp(5px, 0.8vw, 8px);
	}
	.idoc-home-hero h1 {
		font-size: clamp(17px, 2vw, 21px);
	}
	.idoc-home-hero p {
		font-size: clamp(11.5px, 1.4vw, 13px);
	}
	.idoc-home-hero .idoc-home-quote {
		margin-top: clamp(8px, 1.3vw, 14px);
		font-size: clamp(11.5px, 1.4vw, 13px);
	}
	.idoc-greeting h2 {
		font-size: clamp(14px, 1.7vw, 16px);
	}
}

/* Невысокие экраны (ноутбуки, в т.ч. Full HD при системном масштабе 125% —
   CSS-высота ~864px): компактнее приветствие, поиск и карточки разделов,
   чтобы дашборд свободнее помещался по высоте. Не затрагивает мониторы >900px. */
@media (max-height: 900px) {
	.idoc-greeting {
		margin: 10px 0 8px;
	}
	.idoc-greeting h2 {
		font-size: clamp(14px, 1.5vw, 16px);   /* приветствие чуть меньше */
	}
	.idoc-home-search {
		padding: 7px 14px;                     /* ниже строка поиска */
		margin-bottom: 12px;
	}
	.idoc-home-search input {
		font-size: 14px;
	}
	.idoc-qa-grid {
		margin-bottom: 12px;
	}
	.idoc-qa-card {
		padding: 9px 12px;                     /* компактнее карточки разделов */
		gap: 5px;
	}
	.idoc-qa-icon {
		width: 30px;
		height: 30px;
		font-size: 16px;
	}
	.idoc-qa-count {
		font-size: 19px;
	}
	.idoc-qa-label {
		font-size: 12px;
	}
}

/* ============================================================ */
/* Админ: просмотрщик таблиц БД (тот же светлый стиль)          */
/* ============================================================ */
body.idoc-app #dataTable {
	width: 100%;
	/* separate (а не collapse) — чтобы работала «липкая» шапка (position: sticky).
	   Двойных линий нет: границу рисуем только справа и снизу у ячеек. */
	border-collapse: separate;
	border-spacing: 0;
	font-size: 12.5px;
	background: transparent;
}

body.idoc-app #dataTable thead th {
	text-align: left;
	font-weight: 700;                                /* выразительнее: жирный */
	color: var(--color-text-primary);                /* ярче текст */
	background: var(--color-background-tertiary);     /* более контрастный фон шапки */
	padding: 9px 10px;
	border: 0;
	border-right: 1px solid var(--color-border-tertiary);   /* разделитель колонок */
	/* акцентная линия под шапкой (box-shadow, а не border — корректно при sticky) */
	box-shadow: inset 0 -2px 0 var(--color-text-info);
	white-space: nowrap;
	cursor: pointer;
	letter-spacing: 0.2px;
	position: sticky;        /* шапка остаётся видимой при прокрутке списка */
	top: 0;
	z-index: 2;
}

body.idoc-app #dataTable tbody td {
	padding: 7px 10px;
	border: 0;
	border-bottom: 1px solid var(--color-border-tertiary);
	border-right: 1px solid var(--color-border-tertiary);   /* разделитель колонок */
	color: var(--color-text-primary);
	background: transparent;
	white-space: nowrap;
}

/* Крайнюю правую границу не рисуем — её даёт рамка контейнера */
body.idoc-app #dataTable th:last-child,
body.idoc-app #dataTable td:last-child {
	border-right: 0;
}

body.idoc-app #dataTable tbody tr:hover td {
	background: var(--color-background-secondary);
}

.idoc-admin-table-wrap {
	background: var(--color-background-primary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-lg);
	overflow: auto;
	max-height: 70vh;
}

/* Оптимизация ширины колонок админ-таблицы: фиксированная раскладка, длинный текст
   обрезается многоточием (без наезда на соседнюю колонку). Узкие колонки имеют
   фиксированную ширину; ФИО / email / nik — гибкие (делят остаток поровну). */
body.idoc-app #dataTable {
	table-layout: fixed;
}
body.idoc-app #dataTable th,
body.idoc-app #dataTable td {
	overflow: hidden;
	text-overflow: ellipsis;
}
body.idoc-app #dataTable th[data-field="created_at"],
body.idoc-app #dataTable td[data-field="created_at"],
body.idoc-app #dataTable th[data-field="updated_at"],
body.idoc-app #dataTable td[data-field="updated_at"] { width: 92px; }
body.idoc-app #dataTable th[data-field="date_of_entry"],
body.idoc-app #dataTable td[data-field="date_of_entry"] { width: 140px; }
body.idoc-app #dataTable th[data-field="id"],
body.idoc-app #dataTable td[data-field="id"] { width: 50px; text-align: center; }
body.idoc-app #dataTable th[data-field="show_nik_only"],
body.idoc-app #dataTable td[data-field="show_nik_only"] { width: 100px; text-align: center; }
body.idoc-app #dataTable th[data-field="razdel"],
body.idoc-app #dataTable td[data-field="razdel"] { width: 96px; }
body.idoc-app #dataTable th[data-field="role"],
body.idoc-app #dataTable td[data-field="role"] { width: 80px; }

/* ============================================================ */
/* Кнопка масштаба шрифта (рядом с переключателем темы)          */
/* ============================================================ */
.idoc-fontsize {
	display: inline-flex;
	align-items: center;
	gap: 2px;
	padding: 3px;
	margin: 0 10px 8px;
	width: fit-content;
	background: var(--color-background-secondary);
	border: 1px solid var(--color-border-tertiary);
	border-radius: var(--border-radius-md);
}

.idoc-fontsize-label {
	font-size: 11px;
	color: var(--color-text-tertiary);
	padding: 0 4px;
	min-width: 14px;
	text-align: center;
}

/* ============================================================ */
/* Навигация прокруткой списка: в начало / страница вверх /      */
/* страница вниз / в конец                                       */
/* ============================================================ */
/* Кнопки прокрутки списка — компактная горизонтальная группа в подвале
   таблицы (справа). Не плавают над данными. */
.idoc-scroll-nav {
	display: none;
	align-items: center;
	gap: 4px;
	margin-left: auto;
}

.idoc-scroll-nav.is-visible {
	display: inline-flex;
}

.idoc-scroll-btn {
	width: 28px;
	height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0;
	line-height: 1;
	border: 1px solid var(--color-border-secondary);
	border-radius: var(--border-radius-sm);
	background: var(--color-background-primary);
	color: var(--color-text-secondary);
	cursor: pointer;
	transition: background 0.12s, color 0.12s;
}

.idoc-scroll-btn:hover {
	color: var(--color-text-primary);
	background: var(--color-background-secondary);
}

.idoc-scroll-btn i {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 100%;
	font-size: 16px;
	line-height: 1;
}

/* Адаптив: на узких экранах сайдбар сворачивается в верхнюю полосу */
@media (max-width: 720px) {
	.idoc-shell {
		flex-direction: column;
	}
	.idoc-sidebar {
		width: 100%;
		height: auto;
		position: static;
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: 4px;
	}
	.idoc-sidebar-system {
		margin-top: 0;
		border-top: 0;
		flex-direction: row;
		padding-top: 0;
	}
	.idoc-nav-section { display: none; }
	.idoc-nav-item span,
	.idoc-user span { display: none; }
	.idoc-main { padding: 14px; }

	/* На мобильном панель поиска перекрывала таблицу из-за внутренней области
	   прокрутки с фиксированной высотой (max-height: calc(100vh-188px)),
	   рассчитанной под десктоп. Отдаём прокрутку всей странице: список растёт
	   по содержимому, поиск остаётся над таблицей в обычном потоке. */
	.idoc-table-wrap,
	.idoc-admin-table-wrap {
		max-height: none;
		overflow: visible;
	}
	.idoc-toolbar {
		position: relative;
		z-index: 1;
	}
	/* На мобильном список прокручивается всей страницей — снимаем растяжку на 100vh */
	.idoc-main:has(.idoc-table-wrap),
	.idoc-main:has(.idoc-admin-table-wrap) {
		display: block;
		height: auto;
		overflow: visible;
	}
}
