/*
Theme Name: ZVZ Admin
Theme URI: https://zvz.local/
Author: ZVZ
Description: Внутренняя админ-тема ZVZ. Строгий серый минимал для портала: дашборды, графики, база знаний, переоценки, формы, таблицы, отчёты. Без публичной шапки/подвала/меню. Адаптивна для ПК и мобильных.
Version: 1.3.3
Requires at least: 6.0
Requires PHP: 7.4
Text Domain: zvz-admin
*/

/* ==========================================================================
   ZVZ Admin Theme 1.3.2
   --------------------------------------------------------------------------
   Структура файла:
     1.  design_tokens          — переменные (цвета, отступы, типографика)
     2.  reset_base             — сброс, базовые элементы, скроллбар
     3.  layout                 — главный контейнер, сетки, секции
     4.  typography             — заголовки, текст, ссылки, код
     5.  surfaces               — карточки, панели, тулбары, разделители
     6.  buttons                — все варианты кнопок и групп
     7.  forms                  — инпуты, селекты, чекбоксы, файлы
     8.  tables                 — desktop + mobile-карточки
     9.  notices_badges         — уведомления, бейджи статусов
    10.  navigation             — табы, пагинация, breadcrumbs
    11.  knowledge_base         — KB: сайдбар, категории, карточки
    12.  data_viz               — KPI, контейнеры графиков, метрики
    13.  modal_drawer_tooltip   — оверлеи и подсказки
    14.  loading                — спиннер, скелетоны, прогресс
    15.  utilities              — служебные классы
    16.  wp_compat              — совместимость с WP-блоками и плагинами
    17.  responsive             — брейкпойнты 1024 / 782 / 560
    18.  print                  — печать отчётов
   ========================================================================== */


/* ========== [BLOCK: design_tokens] ========== */
:root {
	/* Поверхности и фон */
	--zvz-bg:                #f4f5f7;
	--zvz-bg-elevated:       #fafbfc;
	--zvz-surface:           #ffffff;
	--zvz-surface-2:         #f7f8f9;
	--zvz-surface-3:         #eef0f2;
	--zvz-surface-hover:     #f1f3f5;
	--zvz-surface-active:    #e7eaee;

	/* Бордеры */
	--zvz-border:            #e3e6ea;
	--zvz-border-strong:     #cbd0d6;
	--zvz-border-stronger:   #9aa1aa;
	--zvz-divider:           #edeef1;

	/* Текст */
	--zvz-text:              #1a1d22;
	--zvz-text-strong:       #0c0e12;
	--zvz-text-muted:        #5b626c;
	--zvz-text-subtle:       #8a909a;
	--zvz-text-on-dark:      #ffffff;

	/* Primary (графитово-серый, не сине-фиолетовый) */
	--zvz-primary:           #1f242b;
	--zvz-primary-hover:     #0d1014;
	--zvz-primary-active:    #000000;
	--zvz-primary-soft:      #e3e5e8;
	--zvz-primary-soft-hover:#d6d9dd;

	/* Акцентная (для активных элементов внутри светлой палитры) */
	--zvz-accent:            #2f3540;
	--zvz-accent-soft:       #e8eaee;

	/* Состояния */
	--zvz-success:           #157f4d;
	--zvz-success-soft:      #e6f3ec;
	--zvz-success-border:    #b8dcc7;
	--zvz-warning:           #8a5a08;
	--zvz-warning-soft:      #fbf2dc;
	--zvz-warning-border:    #e5cf94;
	--zvz-danger:            #a8201f;
	--zvz-danger-soft:       #fae8e7;
	--zvz-danger-border:     #e8b6b5;
	--zvz-info:              #2c4e6f;
	--zvz-info-soft:         #e7eef5;
	--zvz-info-border:       #b9c8d8;

	/* Графики (нейтральная палитра, читаемая на белом) */
	--zvz-chart-1:           #1f242b;
	--zvz-chart-2:           #5b626c;
	--zvz-chart-3:           #8a909a;
	--zvz-chart-4:           #bac0c7;
	--zvz-chart-5:           #2c4e6f;
	--zvz-chart-6:           #157f4d;
	--zvz-chart-7:           #8a5a08;
	--zvz-chart-8:           #a8201f;
	--zvz-chart-grid:        #ecedf0;
	--zvz-chart-axis:        #8a909a;

	/* Тени (мягкие, серые, без синевы) */
	--zvz-shadow-xs:         0 1px 0 rgba(20, 22, 26, 0.04);
	--zvz-shadow-sm:         0 1px 2px rgba(20, 22, 26, 0.05), 0 2px 6px rgba(20, 22, 26, 0.04);
	--zvz-shadow-md:         0 4px 10px rgba(20, 22, 26, 0.07), 0 12px 24px rgba(20, 22, 26, 0.06);
	--zvz-shadow-lg:         0 12px 28px rgba(20, 22, 26, 0.10), 0 24px 48px rgba(20, 22, 26, 0.08);
	--zvz-shadow-inset:      inset 0 1px 0 rgba(20, 22, 26, 0.04);
	--zvz-focus-ring:        0 0 0 3px rgba(31, 36, 43, 0.18);
	--zvz-focus-ring-danger: 0 0 0 3px rgba(168, 32, 31, 0.22);

	/* Скругления */
	--zvz-radius-xs:         2px;
	--zvz-radius-sm:         4px;
	--zvz-radius-md:         8px;
	--zvz-radius-lg:         12px;
	--zvz-radius-xl:         16px;
	--zvz-radius-pill:       9999px;

	/* Отступы (4px-сетка) */
	--zvz-space-0:           0;
	--zvz-space-1:           4px;
	--zvz-space-2:           8px;
	--zvz-space-3:           12px;
	--zvz-space-4:           16px;
	--zvz-space-5:           20px;
	--zvz-space-6:           24px;
	--zvz-space-7:           28px;
	--zvz-space-8:           32px;
	--zvz-space-10:          40px;
	--zvz-space-12:          48px;
	--zvz-space-16:          64px;

	/* Типографика */
	--zvz-font-sans:         "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	--zvz-font-mono:         "JetBrains Mono", "SFMono-Regular", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;
	--zvz-font-num:          "Inter", ui-sans-serif, system-ui, sans-serif;

	--zvz-fs-xs:             12px;
	--zvz-fs-sm:             13px;
	--zvz-fs-base:           14px;
	--zvz-fs-md:             15px;
	--zvz-fs-lg:             16px;
	--zvz-fs-xl:             18px;
	--zvz-fs-2xl:            22px;
	--zvz-fs-3xl:            28px;
	--zvz-fs-4xl:            34px;

	--zvz-lh-tight:          1.2;
	--zvz-lh-snug:           1.35;
	--zvz-lh-normal:         1.55;
	--zvz-lh-relaxed:        1.7;

	--zvz-fw-normal:         450;
	--zvz-fw-medium:         550;
	--zvz-fw-semibold:       650;
	--zvz-fw-bold:           750;

	/* Анимации */
	--zvz-ease:              cubic-bezier(0.2, 0, 0.2, 1);
	--zvz-ease-out:          cubic-bezier(0.16, 1, 0.3, 1);
	--zvz-dur-fast:          120ms;
	--zvz-dur-base:          180ms;
	--zvz-dur-slow:          280ms;

	/* Размеры контейнера */
	--zvz-page-width:        980px;
	--zvz-page-width-wide:   980px;
	--zvz-page-pad-x:        clamp(16px, 3vw, 32px);
	--zvz-page-pad-y:        clamp(20px, 3vw, 40px);

	/* Z-индексы */
	--zvz-z-dropdown:        1000;
	--zvz-z-sticky:          1100;
	--zvz-z-overlay:         1200;
	--zvz-z-modal:           1300;
	--zvz-z-tooltip:         1400;
	--zvz-z-toast:           1500;
}

/* ========== [BLOCK: reset_base] ========== */
*, *::before, *::after { box-sizing: border-box; }

html {
	min-height: 100%;
	background: var(--zvz-bg);
	font-size: var(--zvz-fs-base);
	-webkit-text-size-adjust: 100%;
	-webkit-tap-highlight-color: transparent;
	scroll-padding-top: 16px;
}

body {
	min-height: 100vh;
	margin: 0;
	background: var(--zvz-bg);
	color: var(--zvz-text);
	font-family: var(--zvz-font-sans);
	font-size: var(--zvz-fs-base);
	font-weight: var(--zvz-fw-normal);
	line-height: var(--zvz-lh-normal);
	font-feature-settings: "cv11", "ss01";
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* Classic Editor / TinyMCE iframe: не наследуем page-level 100vh layout,
   иначе wpautoresize/editor-expand растит визуальный редактор при каждом input/click. */
body.mce-content-body {
	min-height: 0;
	background: #fff;
}

body.zvz-admin-theme { overflow-x: hidden; }

img, svg, video, canvas, audio, iframe, embed, object {
	display: block;
	max-width: 100%;
}
img { height: auto; border-style: none; }
[hidden] { display: none !important; }

::selection { background: rgba(31, 36, 43, 0.18); color: var(--zvz-text-strong); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--zvz-surface-3); }
::-webkit-scrollbar-thumb {
	border: 2px solid var(--zvz-surface-3);
	border-radius: var(--zvz-radius-pill);
	background: var(--zvz-border-stronger);
}
::-webkit-scrollbar-thumb:hover { background: var(--zvz-text-subtle); }

/* Tabular цифры по умолчанию для чисел в финансовых блоках */
.zvz-num, .zvz-tabular,
.zvz-card .zvz-num, td.is-num, th.is-num,
.zvz-kpi__value, .zvz-stat__value, .zvz-metric__value {
	font-feature-settings: "tnum" 1, "lnum" 1;
	font-variant-numeric: tabular-nums lining-nums;
}

/* ========== [BLOCK: layout] ========== */
.zvz-admin-page { min-height: 100vh; }

.zvz-admin-main {
	width: min(var(--zvz-page-width), calc(100vw - var(--zvz-page-pad-x) * 2));
	margin: 0 auto;
	padding: var(--zvz-page-pad-y) 0 calc(var(--zvz-page-pad-y) * 1.4);
}

.zvz-admin-main--wide {
	width: min(var(--zvz-page-width-wide), calc(100vw - var(--zvz-page-pad-x) * 2));
}

.zvz-admin-main > *:first-child,
.zvz-admin-content > *:first-child { margin-top: 0; }

.zvz-admin-main > *:last-child,
.zvz-admin-content > *:last-child { margin-bottom: 0; }

.zvz-admin-content { position: relative; }

/* Заголовок страницы (модули могут использовать) */
.zvz-page-header {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-4);
	align-items: flex-end;
	justify-content: space-between;
	margin: 0 0 var(--zvz-space-6);
	padding-bottom: var(--zvz-space-5);
	border-bottom: 1px solid var(--zvz-border);
}
.zvz-page-header__title { margin: 0; }
.zvz-page-header__subtitle {
	margin: 4px 0 0;
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-md);
	font-weight: var(--zvz-fw-normal);
}
.zvz-page-header__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2);
}

/* Пустое состояние */
.zvz-admin-empty,
.zvz-empty-state {
	padding: var(--zvz-space-8) var(--zvz-space-6);
	border: 1px dashed var(--zvz-border-strong);
	border-radius: var(--zvz-radius-lg);
	background: var(--zvz-surface);
	color: var(--zvz-text-muted);
	text-align: center;
}
.zvz-empty-state__title {
	margin: 0 0 var(--zvz-space-2);
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-lg);
	font-weight: var(--zvz-fw-semibold);
}
.zvz-empty-state__text { margin: 0 auto; max-width: 460px; }

/* Скрытие для скринридеров */
.zvz-admin-screen-reader-link, .screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}
.zvz-admin-screen-reader-link:focus, .screen-reader-text:focus {
	position: fixed !important;
	top: 12px; left: 12px;
	z-index: var(--zvz-z-toast);
	width: auto; height: auto;
	margin: 0;
	padding: 10px 14px;
	clip: auto;
	border: 1px solid var(--zvz-border-strong);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-md);
	color: var(--zvz-text-strong);
	font-weight: var(--zvz-fw-semibold);
	text-decoration: none !important;
}

/* Сетки */
.zvz-grid {
	display: grid;
	gap: var(--zvz-space-5);
	grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr));
}
.zvz-grid-2 { display: grid; gap: var(--zvz-space-5); grid-template-columns: repeat(2, minmax(0, 1fr)); }
.zvz-grid-3 { display: grid; gap: var(--zvz-space-5); grid-template-columns: repeat(3, minmax(0, 1fr)); }
.zvz-grid-4 { display: grid; gap: var(--zvz-space-5); grid-template-columns: repeat(4, minmax(0, 1fr)); }

.zvz-stack > * + * { margin-top: var(--zvz-space-4); }
.zvz-stack-sm > * + * { margin-top: var(--zvz-space-2); }
.zvz-stack-lg > * + * { margin-top: var(--zvz-space-6); }

.zvz-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-3);
	align-items: center;
}
.zvz-row--between { justify-content: space-between; }
.zvz-row--end { justify-content: flex-end; }

/* ========== [BLOCK: typography] ========== */
h1, h2, h3, h4, h5, h6 {
	margin: 0 0 var(--zvz-space-3);
	color: var(--zvz-text-strong);
	font-weight: var(--zvz-fw-bold);
	line-height: var(--zvz-lh-tight);
	letter-spacing: -0.015em;
}
h1 { font-size: var(--zvz-fs-4xl); letter-spacing: -0.02em; }
h2 { font-size: var(--zvz-fs-3xl); letter-spacing: -0.018em; }
h3 { font-size: var(--zvz-fs-2xl); letter-spacing: -0.012em; }
h4 { font-size: var(--zvz-fs-xl); }
h5 { font-size: var(--zvz-fs-lg); }
h6 {
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	color: var(--zvz-text-muted);
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

p { margin: 0 0 var(--zvz-space-3); }
p:last-child { margin-bottom: 0; }

small, .zvz-text-sm { font-size: var(--zvz-fs-sm); color: var(--zvz-text-muted); }
.zvz-text-xs { font-size: var(--zvz-fs-xs); color: var(--zvz-text-muted); }
.zvz-text-muted { color: var(--zvz-text-muted); }
.zvz-text-subtle { color: var(--zvz-text-subtle); }
.zvz-text-strong { color: var(--zvz-text-strong); font-weight: var(--zvz-fw-semibold); }

a, a:visited {
	color: var(--zvz-text-strong);
	font-weight: var(--zvz-fw-medium);
	text-decoration: none !important;
	transition: color var(--zvz-dur-fast) var(--zvz-ease),
				background var(--zvz-dur-fast) var(--zvz-ease),
				border-color var(--zvz-dur-fast) var(--zvz-ease);
}
a:hover, a:focus, a:active {
	color: var(--zvz-text);
	text-decoration: none !important;
}
a.zvz-link, .zvz-link {
	color: var(--zvz-text-strong);
	border-bottom: 1px dashed var(--zvz-border-stronger);
}
a.zvz-link:hover, .zvz-link:hover { border-bottom-color: var(--zvz-primary); }

strong, b { font-weight: var(--zvz-fw-bold); color: var(--zvz-text-strong); }
em, i { font-style: italic; }

hr {
	height: 1px;
	margin: var(--zvz-space-6) 0;
	border: 0;
	background: var(--zvz-divider);
}

code, kbd, samp {
	font-family: var(--zvz-font-mono);
	font-size: 0.92em;
}
code, kbd {
	padding: 0.16em 0.42em;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-sm);
	background: var(--zvz-surface-2);
}
kbd {
	box-shadow: 0 1px 0 var(--zvz-border-strong);
	font-weight: var(--zvz-fw-semibold);
}
pre {
	max-width: 100%;
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-4);
	overflow: auto;
	border: 1px solid #2a2f37;
	border-radius: var(--zvz-radius-md);
	background: #15181d;
	color: #e3e5e8;
	font-family: var(--zvz-font-mono);
	font-size: var(--zvz-fs-sm);
	line-height: var(--zvz-lh-snug);
}
pre code { padding: 0; border: 0; background: transparent; color: inherit; }

blockquote {
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-3) var(--zvz-space-4);
	border-left: 3px solid var(--zvz-primary);
	background: var(--zvz-surface-2);
	color: var(--zvz-text-muted);
	border-radius: 0 var(--zvz-radius-md) var(--zvz-radius-md) 0;
}

ul, ol { margin-top: 0; margin-bottom: var(--zvz-space-3); padding-left: 1.5em; }
ul ul, ol ol, ul ol, ol ul { margin-bottom: 0; }
li + li { margin-top: 4px; }

/* Списки без маркеров (для UI) */
.zvz-list-bare { padding: 0; list-style: none; }
.zvz-list-bare > li { margin: 0; }


/* ========== [BLOCK: surfaces] ========== */
.zvz-card,
.zvz-panel,
.card,
.postbox,
.wp-block-group.is-style-zvz-card {
	padding: clamp(16px, 2vw, 24px);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-lg);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	transition: border-color var(--zvz-dur-base) var(--zvz-ease),
				box-shadow var(--zvz-dur-base) var(--zvz-ease);
}

.zvz-card + .zvz-card,
.zvz-panel + .zvz-panel,
.card + .card,
.postbox + .postbox { margin-top: var(--zvz-space-4); }

.zvz-card-title,
.zvz-panel-title,
.card-title,
.postbox .hndle,
.zvz-card__title {
	margin: 0 0 var(--zvz-space-3);
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-lg);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: -0.005em;
}

.zvz-card__header {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-3);
	align-items: flex-start;
	justify-content: space-between;
	margin: 0 0 var(--zvz-space-4);
	padding-bottom: var(--zvz-space-3);
	border-bottom: 1px solid var(--zvz-divider);
}
.zvz-card__header > .zvz-card__title { margin: 0; }
.zvz-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2);
	flex-shrink: 0;
}

.zvz-card__footer {
	margin: var(--zvz-space-4) calc(clamp(16px, 2vw, 24px) * -1) calc(clamp(16px, 2vw, 24px) * -1);
	padding: var(--zvz-space-3) clamp(16px, 2vw, 24px);
	border-top: 1px solid var(--zvz-divider);
	background: var(--zvz-surface-2);
	border-radius: 0 0 var(--zvz-radius-lg) var(--zvz-radius-lg);
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2);
	align-items: center;
	justify-content: space-between;
}

.zvz-card--hoverable:hover {
	border-color: var(--zvz-border-strong);
	box-shadow: var(--zvz-shadow-sm);
}

.zvz-card--quiet {
	border: 1px solid var(--zvz-border);
	background: var(--zvz-surface-2);
	box-shadow: none;
}

/* Тулбар над таблицей / списком */
.zvz-toolbar,
.zvz-action-bar {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-3);
	align-items: center;
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-3) var(--zvz-space-4);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
}
.zvz-toolbar__group {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2);
	align-items: center;
}
.zvz-toolbar__spacer { flex: 1 1 auto; }

/* Sticky-полоса действий (на формах) */
.zvz-sticky-actions {
	position: sticky;
	bottom: var(--zvz-space-3);
	z-index: var(--zvz-z-sticky);
	margin-top: var(--zvz-space-5);
	box-shadow: var(--zvz-shadow-md);
	backdrop-filter: blur(6px);
}

/* Группа карточек в строку */
.zvz-card-group {
	display: grid;
	gap: var(--zvz-space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
}

/* Секции внутри страницы */
.zvz-section { margin: 0 0 var(--zvz-space-8); }
.zvz-section__head {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-3);
	align-items: baseline;
	justify-content: space-between;
	margin: 0 0 var(--zvz-space-4);
}
.zvz-section__title {
	margin: 0;
	font-size: var(--zvz-fs-xl);
	font-weight: var(--zvz-fw-semibold);
}

/* ========== [BLOCK: buttons] ========== */
/*
 * Базовая стилизация кнопок.
 *
 * ВАЖНО: голые элементные селекторы (button, input[type=submit] и т.д.) обёрнуты
 * в :where(), чтобы их специфичность была 0,0,0. Так любой класс плагина с
 * собственной стилизацией кнопки (.zvz-employee-home-gate__login-link,
 * .zvz-message-box__copy-btn и т.п.) гарантированно перекрывает базовое правило
 * темы без необходимости использовать !important.
 *
 * Важно НЕ ставить !important на color/text-decoration именно в этом базовом
 * правиле — иначе плагины не смогут задать свой цвет. !important остаётся
 * только на явных вариантах-классах (.zvz-btn-secondary, .zvz-btn-danger и т.п.)
 * ниже по файлу.
 */
.zvz-btn,
:where(button, input[type="button"], input[type="reset"], input[type="submit"], [role="button"]),
a.button, .button,
.btn,
.wp-element-button,
.wp-block-button__link {
	appearance: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 38px;
	padding: 8px 16px;
	border: 1px solid var(--zvz-primary);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-primary);
	color: var(--zvz-text-on-dark);
	font-family: inherit;
	font-size: var(--zvz-fs-base);
	font-weight: var(--zvz-fw-semibold);
	line-height: 1.1;
	letter-spacing: -0.005em;
text-align: center;
	text-decoration: none !important;
	white-space: nowrap;
	cursor: pointer;
	user-select: none;
	box-shadow: var(--zvz-shadow-xs);
	transition: background var(--zvz-dur-fast) var(--zvz-ease),
				border-color var(--zvz-dur-fast) var(--zvz-ease),
				box-shadow var(--zvz-dur-fast) var(--zvz-ease),
				color var(--zvz-dur-fast) var(--zvz-ease),
				transform var(--zvz-dur-fast) var(--zvz-ease);
}

.zvz-btn:hover,
:where(button:hover, input[type="button"]:hover, input[type="reset"]:hover, input[type="submit"]:hover, [role="button"]:hover),
a.button:hover, .button:hover,
.btn:hover,
.wp-element-button:hover,
.wp-block-button__link:hover {
	border-color: var(--zvz-primary-hover);
	background: var(--zvz-primary-hover);
	box-shadow: var(--zvz-shadow-sm);
color: var(--zvz-text-on-dark);
	text-decoration: none !important;
}

.zvz-btn:active,
:where(button:active, input[type="button"]:active, input[type="reset"]:active, input[type="submit"]:active, [role="button"]:active),
a.button:active, .button:active,
.btn:active,
.wp-element-button:active,
.wp-block-button__link:active {
	background: var(--zvz-primary-active);
	border-color: var(--zvz-primary-active);
	box-shadow: var(--zvz-shadow-inset);
	transform: translateY(0);
}

.zvz-btn:disabled,
.zvz-btn[disabled],
.zvz-btn[aria-disabled="true"],
.zvz-btn.is-disabled,
button:disabled, button[disabled],
input[type="button"]:disabled,
input[type="submit"]:disabled,
input[type="reset"]:disabled,
.button.disabled,
.button[aria-disabled="true"] {
	border-color: var(--zvz-border-strong);
	background: var(--zvz-surface-3);
	box-shadow: none;
	color: var(--zvz-text-subtle) !important;
	cursor: not-allowed;
	transform: none;
}

/* Вторичные / контурные */
.zvz-btn-secondary,
.zvz-btn-outline,
.zvz-btn.is-secondary,
.zvz-btn.is-outline,
.button-secondary,
.btn-secondary,
.wp-block-button.is-style-outline .wp-block-button__link {
	border-color: var(--zvz-border-strong);
	background: var(--zvz-surface);
	color: var(--zvz-text-strong) !important;
	box-shadow: var(--zvz-shadow-xs);
}
.zvz-btn-secondary:hover,
.zvz-btn-outline:hover,
.zvz-btn.is-secondary:hover,
.zvz-btn.is-outline:hover,
.button-secondary:hover,
.btn-secondary:hover,
.wp-block-button.is-style-outline .wp-block-button__link:hover {
	border-color: var(--zvz-text-muted);
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong) !important;
	box-shadow: var(--zvz-shadow-sm);
}
.zvz-btn-secondary:active,
.zvz-btn-outline:active,
.zvz-btn.is-secondary:active,
.zvz-btn.is-outline:active,
.button-secondary:active,
.btn-secondary:active {
	background: var(--zvz-surface-active);
	border-color: var(--zvz-text-muted);
	color: var(--zvz-text-strong) !important;
}

/* Призрачная (минимальная) */
.zvz-btn-ghost,
.zvz-btn.is-ghost {
	border-color: transparent;
	background: transparent;
	color: var(--zvz-text-strong) !important;
	box-shadow: none;
}
.zvz-btn-ghost:hover,
.zvz-btn.is-ghost:hover {
	border-color: var(--zvz-border);
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong) !important;
	box-shadow: none;
}

/* Опасные */
.zvz-btn-danger,
.zvz-btn.is-danger,
.btn-danger,
.button-danger,
.delete, a.delete,
.zvz-fin-del,
.zvz-vac-del,
.zvz-admin-theme .zvz-btn[style*="background:#fee2e2"],
.zvz-admin-theme .zvz-btn[style*="background: #fee2e2"],
.zvz-admin-theme button[style*="background:#fee2e2"],
.zvz-admin-theme button[style*="background: #fee2e2"] {
	border-color: var(--zvz-danger) !important;
	background: var(--zvz-danger) !important;
	color: var(--zvz-text-on-dark) !important;
}
.zvz-btn-danger:hover,
.zvz-btn.is-danger:hover,
.btn-danger:hover,
.button-danger:hover,
.delete:hover, a.delete:hover,
.zvz-fin-del:hover,
.zvz-vac-del:hover,
.zvz-admin-theme .zvz-btn[style*="background:#fee2e2"]:hover,
.zvz-admin-theme .zvz-btn[style*="background: #fee2e2"]:hover,
.zvz-admin-theme button[style*="background:#fee2e2"]:hover,
.zvz-admin-theme button[style*="background: #fee2e2"]:hover {
	border-color: #861a1a !important;
	background: #861a1a !important;
	color: var(--zvz-text-on-dark) !important;
}

/* Серые inline-кнопки модулей: не должны наследовать белый текст первичной кнопки. */
.zvz-admin-theme .zvz-btn[style*="background:#e5e7eb"],
.zvz-admin-theme .zvz-btn[style*="background: #e5e7eb"],
.zvz-admin-theme button[style*="background:#e5e7eb"],
.zvz-admin-theme button[style*="background: #e5e7eb"] {
	border-color: var(--zvz-border-strong) !important;
	background: var(--zvz-surface-active) !important;
	color: var(--zvz-text-strong) !important;
}
.zvz-admin-theme .zvz-btn[style*="background:#e5e7eb"]:hover,
.zvz-admin-theme .zvz-btn[style*="background: #e5e7eb"]:hover,
.zvz-admin-theme button[style*="background:#e5e7eb"]:hover,
.zvz-admin-theme button[style*="background: #e5e7eb"]:hover {
	border-color: var(--zvz-text-muted) !important;
	background: var(--zvz-border-strong) !important;
	color: var(--zvz-text-strong) !important;
}

/* Успех */
.zvz-btn-success,
.zvz-btn.is-success {
	border-color: var(--zvz-success);
	background: var(--zvz-success);
	color: var(--zvz-text-on-dark) !important;
}
.zvz-btn-success:hover,
.zvz-btn.is-success:hover {
	border-color: #0e6c40;
	background: #0e6c40;
	color: var(--zvz-text-on-dark) !important;
}

/* Акцентные действия внутри служебных модулей. */
.zvz-btn-accent,
.zvz-btn.is-accent {
	border-color: var(--zvz-accent);
	background: var(--zvz-accent);
	color: var(--zvz-text-on-dark) !important;
}
.zvz-btn-accent:hover,
.zvz-btn.is-accent:hover {
	border-color: var(--zvz-primary-hover);
	background: var(--zvz-primary-hover);
	color: var(--zvz-text-on-dark) !important;
}

/* Disabled должен побеждать варианты кнопок, включая контурные и опасные. */
.zvz-btn:disabled,
.zvz-btn[disabled],
.zvz-btn[aria-disabled="true"],
.zvz-btn.is-disabled,
button:disabled, button[disabled],
input[type="button"]:disabled,
input[type="submit"]:disabled,
input[type="reset"]:disabled,
.button.disabled,
.button[aria-disabled="true"] {
	border-color: var(--zvz-border-strong) !important;
	background: var(--zvz-surface-3) !important;
	box-shadow: none !important;
	color: var(--zvz-text-subtle) !important;
	cursor: not-allowed;
	transform: none;
}

/* Размеры */
.zvz-btn-xs, .button-xs, .btn-xs {
	min-height: 28px;
	padding: 4px 9px;
	font-size: var(--zvz-fs-xs);
	gap: 5px;
}
.zvz-btn-sm, .button-sm, .btn-sm, .button-small, .zvz-btn-small {
	min-height: 32px;
	padding: 6px 12px;
	font-size: var(--zvz-fs-sm);
}
.zvz-btn-lg, .button-lg, .btn-lg {
	min-height: 46px;
	padding: 12px 22px;
	font-size: var(--zvz-fs-md);
}
.zvz-btn-wide, .button-wide { width: 100%; }

/* Иконка-кнопка (квадратная) */
.zvz-btn-icon {
	width: 38px;
	min-width: 38px;
	padding: 0;
	flex-shrink: 0;
}
.zvz-btn-icon.zvz-btn-sm { width: 32px; min-width: 32px; }
.zvz-btn-icon.zvz-btn-xs { width: 28px; min-width: 28px; }

/* Группа кнопок (соединённые) */
.zvz-btn-group {
	display: inline-flex;
	gap: 0;
	box-shadow: var(--zvz-shadow-xs);
	border-radius: var(--zvz-radius-md);
}
.zvz-btn-group > .zvz-btn,
.zvz-btn-group > .button,
.zvz-btn-group > button {
	box-shadow: none;
	border-radius: 0;
}
.zvz-btn-group > *:first-child {
	border-top-left-radius: var(--zvz-radius-md);
	border-bottom-left-radius: var(--zvz-radius-md);
}
.zvz-btn-group > *:last-child {
	border-top-right-radius: var(--zvz-radius-md);
	border-bottom-right-radius: var(--zvz-radius-md);
}
.zvz-btn-group > * + * { margin-left: -1px; }
.zvz-btn-group > *:hover { z-index: 1; position: relative; }

/* ========== [BLOCK: forms] ========== */
form { margin: 0 0 var(--zvz-space-4); }

fieldset {
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-4) var(--zvz-space-5);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-lg);
	background: var(--zvz-surface);
}
legend {
	padding: 0 var(--zvz-space-2);
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: 0.02em;
	text-transform: uppercase;
}

label, .zvz-label {
	display: inline-block;
	margin: 0 0 6px;
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
}
label.required::after, .zvz-label.required::after,
label .zvz-required, .zvz-label .zvz-required {
	content: " *";
	color: var(--zvz-danger);
	font-weight: var(--zvz-fw-bold);
}

input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="file"]):not([type="range"]),
select,
textarea {
	width: 100%;
	min-height: 38px;
	padding: 8px 12px;
	border: 1px solid var(--zvz-border-strong);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-inset);
	color: var(--zvz-text);
	font: inherit;
	font-size: var(--zvz-fs-base);
	line-height: 1.4;
	outline: none;
	transition: border-color var(--zvz-dur-fast) var(--zvz-ease),
				box-shadow var(--zvz-dur-fast) var(--zvz-ease),
				background var(--zvz-dur-fast) var(--zvz-ease);
}

input:hover, select:hover, textarea:hover {
	border-color: var(--zvz-text-muted);
}

input:focus, select:focus, textarea:focus {
	border-color: var(--zvz-primary);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-focus-ring);
}

input[readonly], textarea[readonly],
input:disabled, select:disabled, textarea:disabled {
	background: var(--zvz-surface-3);
	color: var(--zvz-text-subtle);
	cursor: not-allowed;
}

input::placeholder, textarea::placeholder {
	color: var(--zvz-text-subtle);
	opacity: 1;
}

textarea {
	min-height: 96px;
	line-height: var(--zvz-lh-normal);
	resize: vertical;
}

select {
	padding-right: 36px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%235b626c' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-position: right 10px center;
	background-repeat: no-repeat;
	appearance: none;
	-webkit-appearance: none;
	-moz-appearance: none;
}

input[type="checkbox"], input[type="radio"] {
	width: 16px;
	height: 16px;
	margin: 0 7px 0 0;
	vertical-align: -2px;
	accent-color: var(--zvz-primary);
	cursor: pointer;
}
input[type="radio"] { border-radius: 50%; }

input[type="file"] {
	width: 100%;
	padding: 6px;
	border: 1px solid var(--zvz-border-strong);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	font: inherit;
	cursor: pointer;
}
input[type="file"]::file-selector-button {
	margin-right: 12px;
	padding: 6px 12px;
	border: 1px solid var(--zvz-border-strong);
	border-radius: var(--zvz-radius-sm);
	background: var(--zvz-surface-2);
	color: var(--zvz-text-strong);
	font: inherit;
	font-weight: var(--zvz-fw-semibold);
	cursor: pointer;
	transition: background var(--zvz-dur-fast) var(--zvz-ease);
}
input[type="file"]::file-selector-button:hover { background: var(--zvz-surface-hover); }

input[type="range"] {
	width: 100%;
	accent-color: var(--zvz-primary);
}

/* Поиск с иконкой */
.zvz-input-search {
	position: relative;
}
.zvz-input-search input[type="search"],
.zvz-input-search input[type="text"] {
	padding-left: 36px;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 24 24'%3E%3Cpath stroke='%238a909a' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21 21-4.34-4.34M19 11a8 8 0 1 1-16 0 8 8 0 0 1 16 0Z'/%3E%3C/svg%3E");
	background-position: left 12px center;
	background-repeat: no-repeat;
}

/* Группы полей */
.form-row, .zvz-form-row {
	display: grid;
	gap: var(--zvz-space-4);
	grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr));
	margin-bottom: var(--zvz-space-4);
}
.form-field, .zvz-field { margin-bottom: var(--zvz-space-4); }
.form-field:last-child, .zvz-field:last-child { margin-bottom: 0; }

.description, .help, .zvz-help, .zvz-field__help {
	margin-top: 6px;
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
	line-height: var(--zvz-lh-snug);
}
.zvz-field__error {
	margin-top: 6px;
	color: var(--zvz-danger);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-medium);
}
.zvz-field--invalid input,
.zvz-field--invalid select,
.zvz-field--invalid textarea,
input[aria-invalid="true"],
select[aria-invalid="true"],
textarea[aria-invalid="true"] {
	border-color: var(--zvz-danger);
}
.zvz-field--invalid input:focus,
input[aria-invalid="true"]:focus {
	box-shadow: var(--zvz-focus-ring-danger);
}

/* Поле с префиксом/суффиксом */
.zvz-input-group {
	display: flex;
	align-items: stretch;
	width: 100%;
}
.zvz-input-group > input,
.zvz-input-group > select {
	border-radius: 0;
	flex: 1 1 auto;
	min-width: 0;
}
.zvz-input-group > *:first-child { border-top-left-radius: var(--zvz-radius-md); border-bottom-left-radius: var(--zvz-radius-md); }
.zvz-input-group > *:last-child { border-top-right-radius: var(--zvz-radius-md); border-bottom-right-radius: var(--zvz-radius-md); }
.zvz-input-group__addon {
	display: inline-flex;
	align-items: center;
	padding: 0 12px;
	border: 1px solid var(--zvz-border-strong);
	background: var(--zvz-surface-2);
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-medium);
}
.zvz-input-group > * + * { margin-left: -1px; }

/* Switch */
.zvz-switch {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	cursor: pointer;
	user-select: none;
}
.zvz-switch input[type="checkbox"] {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
	pointer-events: none;
}
.zvz-switch__track {
	position: relative;
	width: 36px;
	height: 20px;
	border-radius: var(--zvz-radius-pill);
	background: var(--zvz-border-strong);
	transition: background var(--zvz-dur-base) var(--zvz-ease);
	flex-shrink: 0;
}
.zvz-switch__track::before {
	content: "";
	position: absolute;
	top: 2px;
	left: 2px;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #ffffff;
	box-shadow: var(--zvz-shadow-xs);
	transition: transform var(--zvz-dur-base) var(--zvz-ease);
}
.zvz-switch input:checked + .zvz-switch__track { background: var(--zvz-primary); }
.zvz-switch input:checked + .zvz-switch__track::before { transform: translateX(16px); }
.zvz-switch input:focus-visible + .zvz-switch__track { box-shadow: var(--zvz-focus-ring); }


/* ========== [BLOCK: tables] ========== */
.zvz-table-wrap,
.table-wrap,
.responsive-table {
	width: 100%;
	overflow: auto;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
}
.zvz-table-wrap > table,
.table-wrap > table,
.responsive-table > table {
	border: 0;
	border-radius: 0;
	box-shadow: none;
	margin: 0;
}

table {
	width: 100%;
	margin: 0 0 var(--zvz-space-4);
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	overflow: hidden;
}

caption {
	margin-bottom: var(--zvz-space-2);
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	text-align: left;
	caption-side: top;
}

th, td {
	padding: 11px 14px;
	border-bottom: 1px solid var(--zvz-divider);
	vertical-align: middle;
	text-align: left;
	font-size: var(--zvz-fs-base);
}

th {
	background: var(--zvz-surface-2);
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}

/* Sticky-заголовок только в скролл-обёртке (опционально) */
.zvz-table-wrap.is-sticky-head th,
.zvz-table-sticky-head th {
	position: sticky;
	top: 0;
	z-index: 1;
}

tr:last-child > td,
tr:last-child > th { border-bottom: 0; }

tbody tr {
	transition: background var(--zvz-dur-fast) var(--zvz-ease);
}
tbody tr:hover { background: var(--zvz-surface-hover); }

/* Зебра (по желанию) */
table.zvz-table-zebra tbody tr:nth-child(even),
table.is-zebra tbody tr:nth-child(even) { background: var(--zvz-surface-2); }
table.zvz-table-zebra tbody tr:nth-child(even):hover,
table.is-zebra tbody tr:nth-child(even):hover { background: var(--zvz-surface-hover); }

/* Числовые колонки */
td.is-num, th.is-num,
td.zvz-num-col, th.zvz-num-col {
	text-align: right;
	font-feature-settings: "tnum" 1, "lnum" 1;
	font-variant-numeric: tabular-nums lining-nums;
}

/* Компактная таблица */
.zvz-table-compact th,
.zvz-table-compact td,
table.compact th,
table.compact td {
	padding: 7px 10px;
	font-size: var(--zvz-fs-sm);
}

/* Разделитель внутри tbody */
tbody tr.is-section td {
	background: var(--zvz-surface-2);
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: 0.04em;
	text-transform: uppercase;
	padding: 8px 14px;
}

/* Сортируемая колонка */
th.is-sortable { cursor: pointer; user-select: none; }
th.is-sortable:hover { background: var(--zvz-surface-hover); color: var(--zvz-text-strong); }
th.is-sorted-asc::after { content: " ↑"; color: var(--zvz-primary); }
th.is-sorted-desc::after { content: " ↓"; color: var(--zvz-primary); }

/* ========== [BLOCK: notices_badges] ========== */
.notice, .updated, .error, .alert, .message,
.zvz-notice, .zvz-alert {
	display: flex;
	align-items: flex-start;
	gap: var(--zvz-space-3);
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-3) var(--zvz-space-4);
	border: 1px solid var(--zvz-info-border);
	border-left: 3px solid var(--zvz-info);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-info-soft);
	color: var(--zvz-text);
	font-size: var(--zvz-fs-base);
	line-height: var(--zvz-lh-snug);
}
.notice > p:last-child,
.zvz-notice > p:last-child { margin-bottom: 0; }

.notice-success, .updated, .success,
.zvz-notice-success, .zvz-alert-success {
	border-color: var(--zvz-success-border);
	border-left-color: var(--zvz-success);
	background: var(--zvz-success-soft);
}
.notice-warning, .warning,
.zvz-notice-warning, .zvz-alert-warning {
	border-color: var(--zvz-warning-border);
	border-left-color: var(--zvz-warning);
	background: var(--zvz-warning-soft);
}
.notice-error, .error, .danger,
.zvz-notice-danger, .zvz-alert-danger,
.zvz-notice-error {
	border-color: var(--zvz-danger-border);
	border-left-color: var(--zvz-danger);
	background: var(--zvz-danger-soft);
}

/* Бейджи / статусы */
.zvz-badge, .badge, .status, .label, .zvz-tag, .zvz-chip {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	min-height: 22px;
	padding: 2px 8px;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-sm);
	background: var(--zvz-surface-2);
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	line-height: 1.3;
	letter-spacing: 0.02em;
	text-transform: none;
	white-space: nowrap;
	vertical-align: middle;
}

/* Пилюли (полностью круглые) */
.zvz-badge-pill, .zvz-chip-pill, .zvz-tag-pill,
.zvz-badge.is-pill {
	border-radius: var(--zvz-radius-pill);
	padding: 2px 10px;
}

/* С точкой-индикатором */
.zvz-badge.has-dot::before {
	content: "";
	display: inline-block;
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
	flex-shrink: 0;
}

.zvz-badge-success, .status-success, .status-approved, .status-active, .status-done, .status-completed {
	border-color: var(--zvz-success-border);
	background: var(--zvz-success-soft);
	color: var(--zvz-success);
}
.zvz-badge-warning, .status-warning, .status-pending, .status-in-progress, .status-review {
	border-color: var(--zvz-warning-border);
	background: var(--zvz-warning-soft);
	color: var(--zvz-warning);
}
.zvz-badge-danger, .status-danger, .status-error, .status-rejected, .status-inactive, .status-failed, .status-overdue {
	border-color: var(--zvz-danger-border);
	background: var(--zvz-danger-soft);
	color: var(--zvz-danger);
}
.zvz-badge-info, .status-info, .status-new, .status-draft {
	border-color: var(--zvz-info-border);
	background: var(--zvz-info-soft);
	color: var(--zvz-info);
}
.zvz-badge-neutral, .status-neutral, .status-archived, .status-closed {
	border-color: var(--zvz-border-strong);
	background: var(--zvz-surface-3);
	color: var(--zvz-text-muted);
}
.zvz-badge-dark, .status-priority-high {
	border-color: var(--zvz-primary);
	background: var(--zvz-primary);
	color: var(--zvz-text-on-dark);
}

/* ========== [BLOCK: navigation] ========== */
/* Табы */
.nav-tab-wrapper, .zvz-tabs {
	display: flex;
	flex-wrap: wrap;
	gap: 2px;
	margin: 0 0 var(--zvz-space-4);
	padding: 4px;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
}
.nav-tab, .zvz-tab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 32px;
	padding: 6px 14px;
	border: 1px solid transparent;
	border-radius: var(--zvz-radius-sm);
	background: transparent;
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	text-decoration: none !important;
	cursor: pointer;
	transition: background var(--zvz-dur-fast) var(--zvz-ease),
				color var(--zvz-dur-fast) var(--zvz-ease);
}
.nav-tab:hover, .zvz-tab:hover {
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong);
	text-decoration: none !important;
}
.nav-tab-active,
.nav-tab[aria-current="page"],
.zvz-tab.is-active,
.zvz-tab[aria-current="page"] {
	background: var(--zvz-primary);
	color: var(--zvz-text-on-dark) !important;
}

/* Пагинация */
.pagination, .nav-links, .zvz-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: 4px;
	align-items: center;
	margin-top: var(--zvz-space-4);
}
.page-numbers, .zvz-page-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 36px;
	height: 36px;
	padding: 0 10px;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	color: var(--zvz-text-muted) !important;
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	text-decoration: none !important;
	transition: background var(--zvz-dur-fast) var(--zvz-ease),
				border-color var(--zvz-dur-fast) var(--zvz-ease),
				color var(--zvz-dur-fast) var(--zvz-ease);
}
.page-numbers:hover, .zvz-page-link:hover {
	border-color: var(--zvz-text-muted);
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong) !important;
}
.page-numbers.current,
.zvz-page-link.is-active {
	border-color: var(--zvz-primary);
	background: var(--zvz-primary);
	color: var(--zvz-text-on-dark) !important;
}
.page-numbers.dots {
	border-color: transparent;
	background: transparent;
}

/* Хлебные крошки */
.zvz-breadcrumbs, .breadcrumbs {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	margin: 0 0 var(--zvz-space-3);
	padding: 0;
	list-style: none;
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
}
.zvz-breadcrumbs li,
.breadcrumbs li {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.zvz-breadcrumbs li + li::before,
.breadcrumbs li + li::before {
	content: "/";
	color: var(--zvz-text-subtle);
}
.zvz-breadcrumbs a,
.breadcrumbs a {
	color: var(--zvz-text-muted);
	font-weight: var(--zvz-fw-medium);
}
.zvz-breadcrumbs a:hover,
.breadcrumbs a:hover { color: var(--zvz-text-strong); }
.zvz-breadcrumbs li[aria-current="page"],
.zvz-breadcrumbs li.is-current {
	color: var(--zvz-text-strong);
	font-weight: var(--zvz-fw-semibold);
}


/* ========== [BLOCK: knowledge_base] ========== */
.kb-wrapper,
.kb-layout,
.knowledge-base-wrapper {
	display: grid;
	gap: var(--zvz-space-5);
	grid-template-columns: minmax(260px, 320px) minmax(0, 1fr);
	align-items: start;
	width: 100%;
}

.kb-left-column,
.kb-sidebar,
.knowledge-base-sidebar {
	width: auto;
	min-width: 0;
	padding: var(--zvz-space-4);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-lg);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	position: sticky;
	top: var(--zvz-space-4);
	max-height: calc(100vh - var(--zvz-space-8));
	overflow-y: auto;
}

.kb-right-column,
.kb-content {
	width: auto;
	min-width: 0;
	padding: 0;
}

.kb-search-block {
	display: grid;
	gap: 8px;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	margin: 0 0 var(--zvz-space-3);
}

#kb-search-input,
.kb-search-input {
	width: 100%;
	margin: 0;
}

#kb-search-button,
.kb-search-button {
	min-width: 40px;
	padding: 0 12px;
}

#kb-suggest-button,
.kb-suggest-button {
	grid-column: 1 / -1;
	justify-self: start;
	width: auto;
	margin: 0;
}

/* Категории дерева */
.kb-categories-block { padding: 0; margin: 0; list-style: none; }
.kb-categories-block ul { padding: 0; list-style: none; margin: 4px 0 0 12px; border-left: 1px solid var(--zvz-divider); }
.kb-categories-block li { margin: 0; }
.kb-categories-block li + li { margin-top: 2px; }

.kb-category-title,
.kb-category-item,
.kb-tree-item,
.kb-topic-item {
	display: block;
	width: 100%;
	margin: 0 0 2px;
	padding: 7px 10px;
	border: 1px solid transparent;
	border-radius: var(--zvz-radius-sm);
	background: transparent;
	color: var(--zvz-text) !important;
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-medium);
	line-height: 1.35;
	text-decoration: none !important;
	transition: background var(--zvz-dur-fast) var(--zvz-ease),
				color var(--zvz-dur-fast) var(--zvz-ease);
}

.kb-categories-block li:hover > .kb-category-title,
.kb-category-title:hover,
.kb-category-item:hover,
.kb-tree-item:hover,
.kb-topic-item:hover {
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong) !important;
}

.kb-category-title.selected,
.kb-category-title.active,
.kb-category-title.is-active,
.kb-category-item.is-active,
.kb-category-item.active,
.kb-tree-item.is-active,
.kb-topic-item.is-active {
	background: var(--zvz-primary-soft);
	color: var(--zvz-text-strong) !important;
	font-weight: var(--zvz-fw-semibold);
}

.kb-children {
	margin-left: var(--zvz-space-3);
	padding-left: var(--zvz-space-3);
	border-left: 1px solid var(--zvz-divider);
}

/* Карточки KB */
.kb-subcat-card,
.kb-section-card,
.kb-card,
.kb-article-card,
.kb-content-card {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--zvz-space-3);
	min-height: 56px;
	margin: 0 0 var(--zvz-space-2);
	padding: 12px 16px;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	color: var(--zvz-text-strong) !important;
	font-weight: var(--zvz-fw-semibold);
	text-decoration: none !important;
	transition: border-color var(--zvz-dur-fast) var(--zvz-ease),
				background var(--zvz-dur-fast) var(--zvz-ease),
				box-shadow var(--zvz-dur-fast) var(--zvz-ease),
				transform var(--zvz-dur-fast) var(--zvz-ease);
}

.kb-subcat-card:hover,
.kb-section-card:hover,
.kb-card:hover,
.kb-article-card:hover,
.kb-content-card:hover {
	border-color: var(--zvz-text-muted);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-sm);
	color: var(--zvz-text-strong) !important;
	transform: translateY(-1px);
	text-decoration: none !important;
}

.kb-subcat-arrow {
	float: none;
	flex-shrink: 0;
	color: var(--zvz-text-subtle);
	font-size: 1.1em;
	transition: transform var(--zvz-dur-fast) var(--zvz-ease);
}
.kb-subcat-card:hover .kb-subcat-arrow {
	transform: translateX(2px);
	color: var(--zvz-text-strong);
}

/* ========== [BLOCK: data_viz] ========== */
/* KPI карточки (для дашборда) */
.zvz-kpi-grid {
	display: grid;
	gap: var(--zvz-space-3);
	grid-template-columns: repeat(auto-fit, minmax(min(200px, 100%), 1fr));
	margin: 0 0 var(--zvz-space-5);
}

.zvz-kpi,
.zvz-stat,
.kpi-card,
.metric-card,
.stat-card,
.summary-card {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: var(--zvz-space-4) var(--zvz-space-4);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	transition: border-color var(--zvz-dur-base) var(--zvz-ease),
				box-shadow var(--zvz-dur-base) var(--zvz-ease);
}
.zvz-kpi:hover, .zvz-stat:hover {
	border-color: var(--zvz-border-strong);
	box-shadow: var(--zvz-shadow-sm);
}

.zvz-kpi__label,
.zvz-stat__label {
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: 0.04em;
	text-transform: uppercase;
}

.zvz-kpi__value,
.zvz-stat__value {
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-3xl);
	font-weight: var(--zvz-fw-bold);
	line-height: 1.1;
	letter-spacing: -0.02em;
	font-feature-settings: "tnum" 1, "lnum" 1;
	font-variant-numeric: tabular-nums lining-nums;
}

.zvz-kpi__delta,
.zvz-stat__delta {
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	color: var(--zvz-text-muted);
}
.zvz-kpi__delta.is-positive,
.zvz-stat__delta.is-positive { color: var(--zvz-success); }
.zvz-kpi__delta.is-negative,
.zvz-stat__delta.is-negative { color: var(--zvz-danger); }

.zvz-kpi__hint,
.zvz-stat__hint {
	color: var(--zvz-text-subtle);
	font-size: var(--zvz-fs-xs);
}

/* Контейнер графика */
.zvz-chart,
.zvz-chart-card,
.chart-container {
	padding: var(--zvz-space-4);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
}
.zvz-chart__head {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-3);
	align-items: baseline;
	justify-content: space-between;
	margin: 0 0 var(--zvz-space-3);
}
.zvz-chart__title {
	margin: 0;
	font-size: var(--zvz-fs-md);
	font-weight: var(--zvz-fw-semibold);
}
.zvz-chart__subtitle {
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
}
.zvz-chart__body {
	position: relative;
	min-height: 240px;
}
.zvz-chart canvas,
.zvz-chart svg.chart {
	display: block;
	max-width: 100%;
	height: auto;
}
.zvz-chart-legend {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2) var(--zvz-space-4);
	margin-top: var(--zvz-space-3);
	padding-top: var(--zvz-space-3);
	border-top: 1px solid var(--zvz-divider);
	font-size: var(--zvz-fs-sm);
	color: var(--zvz-text-muted);
}
.zvz-chart-legend__item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.zvz-chart-legend__swatch {
	width: 10px;
	height: 10px;
	border-radius: 2px;
	background: var(--zvz-chart-1);
	flex-shrink: 0;
}

/* Прогресс-бар */
.zvz-progress {
	width: 100%;
	height: 6px;
	border-radius: var(--zvz-radius-pill);
	background: var(--zvz-surface-3);
	overflow: hidden;
}
.zvz-progress__bar {
	height: 100%;
	background: var(--zvz-primary);
	border-radius: inherit;
	transition: width var(--zvz-dur-slow) var(--zvz-ease);
}
.zvz-progress--lg { height: 10px; }
.zvz-progress.is-success .zvz-progress__bar { background: var(--zvz-success); }
.zvz-progress.is-warning .zvz-progress__bar { background: var(--zvz-warning); }
.zvz-progress.is-danger .zvz-progress__bar { background: var(--zvz-danger); }

/* Метрика (вертикальная пара label/value) */
.zvz-metric {
	display: flex;
	flex-direction: column;
	gap: 2px;
}
.zvz-metric__label {
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-semibold);
	letter-spacing: 0.03em;
	text-transform: uppercase;
}
.zvz-metric__value {
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-xl);
	font-weight: var(--zvz-fw-semibold);
	font-feature-settings: "tnum" 1, "lnum" 1;
	font-variant-numeric: tabular-nums lining-nums;
}

/* ========== [BLOCK: modal_drawer_tooltip] ========== */
/* Модалка */
#kb-suggest-modal,
.kb-modal,
.zvz-modal {
	width: min(560px, calc(100vw - 32px));
	max-height: calc(100vh - 64px);
	padding: var(--zvz-space-5);
	border: 1px solid var(--zvz-border-strong);
	border-radius: var(--zvz-radius-lg);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-lg);
	overflow: auto;
}

dialog.zvz-modal,
dialog#kb-suggest-modal {
	color: var(--zvz-text);
}
dialog.zvz-modal::backdrop,
dialog#kb-suggest-modal::backdrop {
	background: rgba(20, 22, 26, 0.45);
	backdrop-filter: blur(2px);
}

.zvz-modal__header,
.zvz-drawer__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--zvz-space-3);
	margin: 0 0 var(--zvz-space-3);
	padding-bottom: var(--zvz-space-3);
	border-bottom: 1px solid var(--zvz-divider);
}
.zvz-modal__title,
.zvz-drawer__title {
	margin: 0;
	font-size: var(--zvz-fs-xl);
	font-weight: var(--zvz-fw-bold);
}
.zvz-modal__close,
.zvz-drawer__close {
	width: 32px;
	height: 32px;
	min-height: 32px;
	padding: 0;
	border: 1px solid transparent;
	background: transparent;
	color: var(--zvz-text-muted) !important;
	box-shadow: none;
	flex-shrink: 0;
}
.zvz-modal__close:hover,
.zvz-drawer__close:hover {
	border-color: var(--zvz-border);
	background: var(--zvz-surface-hover);
	color: var(--zvz-text-strong) !important;
	box-shadow: none;
}

.zvz-modal__footer,
.zvz-drawer__footer {
	display: flex;
	flex-wrap: wrap;
	gap: var(--zvz-space-2);
	justify-content: flex-end;
	margin-top: var(--zvz-space-4);
	padding-top: var(--zvz-space-3);
	border-top: 1px solid var(--zvz-divider);
}

/* Drawer (выезжающая панель) */
.zvz-drawer {
	position: fixed;
	top: 0;
	right: 0;
	z-index: var(--zvz-z-modal);
	width: min(420px, 100vw);
	height: 100vh;
	padding: var(--zvz-space-5);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-lg);
	border-left: 1px solid var(--zvz-border);
	overflow-y: auto;
	transform: translateX(100%);
	transition: transform var(--zvz-dur-base) var(--zvz-ease-out);
}
.zvz-drawer.is-open { transform: translateX(0); }
.zvz-drawer-overlay {
	position: fixed;
	inset: 0;
	z-index: var(--zvz-z-overlay);
	background: rgba(20, 22, 26, 0.4);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--zvz-dur-base) var(--zvz-ease);
}
.zvz-drawer-overlay.is-open {
	opacity: 1;
	pointer-events: auto;
}

/* Тултип (CSS-only, для элементов с data-tooltip) */
[data-zvz-tooltip] {
	position: relative;
}
[data-zvz-tooltip]::after {
	content: attr(data-zvz-tooltip);
	position: absolute;
	bottom: calc(100% + 6px);
	left: 50%;
	transform: translateX(-50%) translateY(4px);
	z-index: var(--zvz-z-tooltip);
	padding: 5px 9px;
	border-radius: var(--zvz-radius-sm);
	background: var(--zvz-text-strong);
	color: var(--zvz-text-on-dark);
	font-size: var(--zvz-fs-xs);
	font-weight: var(--zvz-fw-medium);
	white-space: nowrap;
	pointer-events: none;
	opacity: 0;
	transition: opacity var(--zvz-dur-fast) var(--zvz-ease),
				transform var(--zvz-dur-fast) var(--zvz-ease);
}
[data-zvz-tooltip]:hover::after,
[data-zvz-tooltip]:focus-visible::after {
	opacity: 1;
	transform: translateX(-50%) translateY(0);
}

/* ========== [BLOCK: loading] ========== */
.is-loading, .loading, .zvz-is-loading {
	position: relative;
	pointer-events: none;
	opacity: 0.7;
}
.is-loading::after, .loading::after, .zvz-is-loading::after {
	content: "";
	display: inline-block;
	width: 14px;
	height: 14px;
	margin-left: 8px;
	border: 2px solid rgba(31, 36, 43, 0.18);
	border-top-color: var(--zvz-primary);
	border-radius: 50%;
	vertical-align: -3px;
	animation: zvz-spin 720ms linear infinite;
}
@keyframes zvz-spin { to { transform: rotate(360deg); } }

.zvz-spinner {
	display: inline-block;
	width: 16px;
	height: 16px;
	border: 2px solid var(--zvz-border-strong);
	border-top-color: var(--zvz-primary);
	border-radius: 50%;
	animation: zvz-spin 720ms linear infinite;
}
.zvz-spinner--lg { width: 28px; height: 28px; border-width: 3px; }

/* Скелетоны для загрузки */
.zvz-skeleton {
	display: block;
	border-radius: var(--zvz-radius-sm);
	background: linear-gradient(90deg,
		var(--zvz-surface-3) 0%,
		var(--zvz-surface-hover) 50%,
		var(--zvz-surface-3) 100%);
	background-size: 200% 100%;
	animation: zvz-skeleton-shimmer 1.4s ease-in-out infinite;
}
.zvz-skeleton--text { height: 14px; margin: 4px 0; }
.zvz-skeleton--title { height: 22px; margin: 6px 0; max-width: 60%; }
.zvz-skeleton--block { height: 80px; }
.zvz-skeleton--circle { width: 36px; height: 36px; border-radius: 50%; }
@keyframes zvz-skeleton-shimmer {
	0% { background-position: 200% 0; }
	100% { background-position: -200% 0; }
}


/* ========== [BLOCK: utilities] ========== */
.zvz-hidden { display: none !important; }
.zvz-invisible { visibility: hidden !important; }
.zvz-block { display: block !important; }
.zvz-inline-block { display: inline-block !important; }
.zvz-flex { display: flex !important; }
.zvz-inline-flex { display: inline-flex !important; }
.zvz-grid-d { display: grid !important; }

.zvz-text-left { text-align: left !important; }
.zvz-text-center { text-align: center !important; }
.zvz-text-right { text-align: right !important; }
.zvz-text-nowrap { white-space: nowrap !important; }
.zvz-text-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.zvz-text-break { word-break: break-word; overflow-wrap: anywhere; }

.zvz-mt-0 { margin-top: 0 !important; }
.zvz-mt-1 { margin-top: var(--zvz-space-1) !important; }
.zvz-mt-2 { margin-top: var(--zvz-space-2) !important; }
.zvz-mt-3 { margin-top: var(--zvz-space-3) !important; }
.zvz-mt-4 { margin-top: var(--zvz-space-4) !important; }
.zvz-mt-5 { margin-top: var(--zvz-space-5) !important; }
.zvz-mt-6 { margin-top: var(--zvz-space-6) !important; }
.zvz-mb-0 { margin-bottom: 0 !important; }
.zvz-mb-1 { margin-bottom: var(--zvz-space-1) !important; }
.zvz-mb-2 { margin-bottom: var(--zvz-space-2) !important; }
.zvz-mb-3 { margin-bottom: var(--zvz-space-3) !important; }
.zvz-mb-4 { margin-bottom: var(--zvz-space-4) !important; }
.zvz-mb-5 { margin-bottom: var(--zvz-space-5) !important; }
.zvz-mb-6 { margin-bottom: var(--zvz-space-6) !important; }

.zvz-gap-1 { gap: var(--zvz-space-1) !important; }
.zvz-gap-2 { gap: var(--zvz-space-2) !important; }
.zvz-gap-3 { gap: var(--zvz-space-3) !important; }
.zvz-gap-4 { gap: var(--zvz-space-4) !important; }
.zvz-gap-5 { gap: var(--zvz-space-5) !important; }

.zvz-w-full { width: 100% !important; }
.zvz-h-full { height: 100% !important; }

/* Аватар */
.zvz-avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border-radius: 50%;
	background: var(--zvz-surface-3);
	color: var(--zvz-text-strong);
	font-size: var(--zvz-fs-sm);
	font-weight: var(--zvz-fw-semibold);
	overflow: hidden;
	flex-shrink: 0;
	border: 1px solid var(--zvz-border);
}
.zvz-avatar img { width: 100%; height: 100%; object-fit: cover; }
.zvz-avatar--sm { width: 24px; height: 24px; font-size: var(--zvz-fs-xs); }
.zvz-avatar--lg { width: 48px; height: 48px; font-size: var(--zvz-fs-lg); }

/* Разделитель для секций */
.zvz-divider {
	height: 1px;
	margin: var(--zvz-space-5) 0;
	background: var(--zvz-divider);
	border: 0;
}

/* ========== [BLOCK: focus_accessibility] ========== */
:focus { outline: none; }
:focus-visible {
	outline: 0;
	box-shadow: var(--zvz-focus-ring) !important;
}
button:focus-visible, .button:focus-visible, .zvz-btn:focus-visible,
a.button:focus-visible, [role="button"]:focus-visible {
	box-shadow: var(--zvz-focus-ring) !important;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: 0.01ms !important;
	}
}

/* ========== [BLOCK: wp_compat] ========== */
.alignleft { float: left; margin: 0 var(--zvz-space-4) var(--zvz-space-3) 0; }
.alignright { float: right; margin: 0 0 var(--zvz-space-3) var(--zvz-space-4); }
.aligncenter { display: block; margin-right: auto; margin-left: auto; }

.wp-caption {
	max-width: 100%;
	padding: 6px;
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
}
.wp-caption-text, .gallery-caption {
	margin: 6px 0 0;
	color: var(--zvz-text-muted);
	font-size: var(--zvz-fs-sm);
}
.sticky, .bypostauthor { outline: 0; }

.wp-block-columns { gap: var(--zvz-space-5); }
.wp-block-cover, .wp-block-media-text, .wp-block-image img {
	border-radius: var(--zvz-radius-md);
}
.wp-block-separator {
	border: 0;
	background: var(--zvz-border);
	height: 1px;
}
.wp-block-quote {
	margin: 0 0 var(--zvz-space-4);
	padding: var(--zvz-space-3) var(--zvz-space-4);
	border-left: 3px solid var(--zvz-primary);
	background: var(--zvz-surface-2);
	border-radius: 0 var(--zvz-radius-md) var(--zvz-radius-md) 0;
	color: var(--zvz-text-muted);
}
.wp-block-button { margin-bottom: var(--zvz-space-2); }
.wp-block-file {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--zvz-space-3);
	padding: var(--zvz-space-3);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
}

/* bbPress базовая совместимость */
#bbpress-forums, .bbp-forums, .bbp-topics, .bbp-replies { color: var(--zvz-text); }
#bbpress-forums a, .bbp-forums a, .bbp-topics a, .bbp-replies a {
	text-decoration: none !important;
}
#bbpress-forums .button,
#bbpress-forums button,
#bbpress-forums input[type="submit"] {
	border-radius: var(--zvz-radius-md);
}

/* ========== [BLOCK: responsive] ========== */
/* Большой планшет / маленький десктоп */
@media (max-width: 1024px) {
	:root { --zvz-page-width: 100%; }
	.zvz-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.zvz-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.kb-wrapper,
	.kb-layout,
	.knowledge-base-wrapper {
		grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
	}
	.kb-left-column,
	.kb-sidebar { position: static; max-height: none; }
}

/* Планшеты в портрете / большие телефоны */
@media (max-width: 782px) {
	:root {
		--zvz-page-pad-x: 16px;
		--zvz-page-pad-y: 16px;
	}
	.zvz-admin-main { width: calc(100vw - 32px); padding-top: 16px; }

	h1 { font-size: 26px; }
	h2 { font-size: 22px; }
	h3 { font-size: 19px; }

	/* Кнопки на полную ширину тулбара */
	.zvz-toolbar .zvz-btn,
	.zvz-toolbar .button,
	.zvz-action-bar .zvz-btn,
	.zvz-action-bar .button { flex: 1 1 auto; }

	/* Сетки → 1 колонка */
	.zvz-grid-2,
	.zvz-grid-3,
	.zvz-grid-4 { grid-template-columns: 1fr; }
	.zvz-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	/* KB → 1 колонка, сайдбар сверху */
	.kb-wrapper,
	.kb-layout,
	.knowledge-base-wrapper { grid-template-columns: 1fr; }

	/* Page-header → стек */
	.zvz-page-header { flex-direction: column; align-items: stretch; }
	.zvz-page-header__actions { justify-content: flex-start; }

	/* Карточный header стек */
	.zvz-card__header { flex-direction: column; align-items: stretch; }
	.zvz-card__actions { justify-content: flex-start; }
}

/* Маленькие телефоны: таблицы → карточки, мелкие настройки */
@media (max-width: 560px) {
	:root {
		--zvz-fs-base: 14px;
		--zvz-page-pad-x: 12px;
	}
	.zvz-admin-main { width: calc(100vw - 24px); }

	.zvz-kpi-grid { grid-template-columns: 1fr; }

	.zvz-kpi__value, .zvz-stat__value { font-size: var(--zvz-fs-2xl); }

	/* Кнопки в hero/sticky-actions — на всю ширину */
	.zvz-sticky-actions .zvz-btn,
	.zvz-sticky-actions .button { width: 100%; }

	/* Карточки KB в стек */
	.kb-subcat-card,
	.kb-section-card,
	.kb-card { padding: 11px 13px; }

	/* Таблицы — превращаем в карточки только при наличии .zvz-table-stack */
	.zvz-table-stack thead { display: none; }
	.zvz-table-stack,
	.zvz-table-stack tbody,
	.zvz-table-stack tr,
	.zvz-table-stack td {
		display: block;
		width: 100%;
	}
	.zvz-table-stack {
		border: 0;
		background: transparent;
		box-shadow: none;
		overflow: visible;
	}
	.zvz-table-stack tbody tr {
		margin: 0 0 var(--zvz-space-3);
		padding: var(--zvz-space-3);
		border: 1px solid var(--zvz-border);
		border-radius: var(--zvz-radius-md);
		background: var(--zvz-surface);
		box-shadow: var(--zvz-shadow-xs);
	}
	.zvz-table-stack tbody tr:hover { background: var(--zvz-surface); }
	.zvz-table-stack td {
		display: flex;
		gap: var(--zvz-space-3);
		justify-content: space-between;
		padding: 6px 0;
		border-bottom: 1px solid var(--zvz-divider);
		text-align: right;
	}
	.zvz-table-stack td:last-child { border-bottom: 0; }
	.zvz-table-stack td::before {
		content: attr(data-label);
		display: inline-block;
		flex: 0 0 40%;
		min-width: 40%;
		color: var(--zvz-text-muted);
		font-size: var(--zvz-fs-xs);
		font-weight: var(--zvz-fw-semibold);
		letter-spacing: 0.04em;
		text-transform: uppercase;
		text-align: left;
	}
}

/* ========== [BLOCK: print] ========== */
@media print {
	@page { margin: 14mm; }

	html, body {
		background: #ffffff !important;
		color: #000000 !important;
		font-size: 11pt;
	}
	body.zvz-admin-theme { overflow: visible; }

	.zvz-admin-main {
		width: 100% !important;
		max-width: 100% !important;
		padding: 0 !important;
	}

	.zvz-card,
	.zvz-panel,
	.zvz-chart,
	.zvz-kpi,
	.zvz-stat,
	table, .zvz-table-wrap {
		border: 1px solid #aaaaaa !important;
		background: #ffffff !important;
		box-shadow: none !important;
		page-break-inside: avoid;
	}

	.zvz-toolbar,
	.zvz-action-bar,
	.zvz-sticky-actions,
	.zvz-page-header__actions,
	.zvz-card__actions,
	.zvz-tabs,
	.nav-tab-wrapper,
	.zvz-pagination,
	.pagination,
	.zvz-drawer,
	.zvz-drawer-overlay,
	.kb-search-block,
	#kb-suggest-button,
	.kb-suggest-button {
		display: none !important;
	}

	a {
		color: #000000 !important;
		text-decoration: underline !important;
	}

	th, td { color: #000000 !important; }
	th { background: #f0f0f0 !important; }

	/* На печати каждый h1/h2 — с новой страницы при необходимости */
	h1, h2 { page-break-after: avoid; }
	h1 + *, h2 + * { page-break-before: avoid; }
}

/* ========== [BLOCK: theme_compatibility] ========== */
/* Совместимость с произвольными карточками модулей */
body.zvz-admin-theme .store-card,
body.zvz-admin-theme .branch-card,
body.zvz-admin-theme .shift-card,
body.zvz-admin-theme .shop-card,
body.zvz-admin-theme .request-card,
body.zvz-admin-theme .reassessment-card,
body.zvz-admin-theme .revaluation-card,
body.zvz-admin-theme .user-card {
	padding: var(--zvz-space-4);
	border: 1px solid var(--zvz-border);
	border-radius: var(--zvz-radius-md);
	background: var(--zvz-surface);
	box-shadow: var(--zvz-shadow-xs);
	transition: border-color var(--zvz-dur-base) var(--zvz-ease),
				box-shadow var(--zvz-dur-base) var(--zvz-ease);
}
body.zvz-admin-theme .store-card:hover,
body.zvz-admin-theme .branch-card:hover,
body.zvz-admin-theme .shift-card:hover,
body.zvz-admin-theme .shop-card:hover,
body.zvz-admin-theme .request-card:hover,
body.zvz-admin-theme .reassessment-card:hover,
body.zvz-admin-theme .revaluation-card:hover,
body.zvz-admin-theme .user-card:hover {
	border-color: var(--zvz-border-strong);
	box-shadow: var(--zvz-shadow-sm);
}

/* Гарантия: ссылки в теме без подчёркивания */
body.zvz-admin-theme a,
body.zvz-admin-theme a:visited,
body.zvz-admin-theme a:hover,
body.zvz-admin-theme a:focus,
body.zvz-admin-theme a:active {
	text-decoration: none !important;
}

/* конец файла */
