/* OXUS Warehouse — дизайн-система «Сланец» (доc/ДИЗАЙН-СИСТЕМА.md, 03.07.2026).
   Источники: макеты doc/design/ (каркас-сайдбар + карточка акта). Имена
   классов исторические — шаблоны и htmx-потоки не менялись, только вид. */

/* ---------- Шрифты: IBM Plex локально (офлайн-стенд, app/static/fonts) ---------- */
@font-face {
	font-family: "IBM Plex Sans";
	font-style: normal;
	font-weight: 100 700; /* вариативный файл: один на все веса */
	font-display: swap;
	src: url("/static/fonts/plex-sans-var-cyrillic.woff2") format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: "IBM Plex Sans";
	font-style: normal;
	font-weight: 100 700;
	font-display: swap;
	src: url("/static/fonts/plex-sans-var-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("/static/fonts/plex-mono-400-cyrillic.woff2") format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url("/static/fonts/plex-mono-400-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("/static/fonts/plex-mono-500-cyrillic.woff2") format("woff2");
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
	font-family: "IBM Plex Mono";
	font-style: normal;
	font-weight: 500;
	font-display: swap;
	src: url("/static/fonts/plex-mono-500-latin.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- Токены (тема «Сланец») ---------- */
:root {
	--bg: #eceef1;
	--surface: #ffffff;
	--head-bg: #fbfbfc;
	--border: #e4e7ec;
	--row-hover: #f5f7fa;
	--ghost-hover: #f3f5f8;
	--fg: #1a212c;
	--muted: #6a7280;
	--accent: #3a5bd9;
	--accent-soft: #eef1fd;
	--ok: #1f7a44;
	--ok-soft: #e7f4ec;
	--warn: #9a6700;
	--warn-soft: #fbf2d6;
	--danger: #c43d2f;
	--danger-soft: #fbeae8;
	--side: #1c2430;
	--side-text: #9aa3b2;
	--side-heading: #5b6675;
	--side-active-bg: rgba(255, 255, 255, 0.07);
	--side-hover: rgba(255, 255, 255, 0.05);
	--radius: 10px;
	--radius-s: 8px;
	--font: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
	/* Старые имена токенов — на них ссылаются точечные стили в шаблонах. */
	--text: #1a212c;
}

* { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

body {
	font-family: var(--font);
	font-size: 14px;
	background: var(--bg);
	color: var(--fg);
	line-height: 1.5;
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
}

::placeholder { color: var(--muted); opacity: 0.75; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: rgba(120, 120, 120, 0.28); border-radius: 6px; }
::-webkit-scrollbar-thumb:hover { background: rgba(120, 120, 120, 0.45); }

/* ---------- Каркас: сайдбар + топбар (макет-каркас, тема A) ---------- */
.layout { min-height: 100vh; }

.sidebar {
	position: fixed;
	left: 0;
	top: 0;
	bottom: 0;
	width: 248px;
	background: var(--side);
	display: flex;
	flex-direction: column;
	overflow-y: auto;
	z-index: 30;
}

.sb-brand {
	display: flex;
	align-items: center;
	gap: 11px;
	padding: 20px 20px 16px;
	color: #fff;
	text-decoration: none;
}
.sb-brand-logo {
	width: 32px;
	height: 32px;
	flex: none;
}

.login-logo {
	display: block;
	width: 72px;
	height: 72px;
	margin: 4px auto 10px;
}
.login-card h1, .login-card > .muted { text-align: center; }
.sb-brand-name { line-height: 1.2; }
.sb-brand-name b { display: block; font-weight: 600; font-size: 15px; letter-spacing: -0.01em; }
.sb-brand-name span {
	display: block;
	color: var(--side-heading);
	font-size: 11px;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.sidebar nav { padding-bottom: 8px; }

.sb-group {
	padding: 14px 20px 6px;
	font-size: 10.5px;
	font-weight: 600;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--side-heading);
}

.sb-item {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 8px 16px 8px 20px;
	margin: 1px 10px;
	border-radius: 7px;
	font-size: 13.5px;
	font-weight: 500;
	color: var(--side-text);
	text-decoration: none;
	transition: background 0.12s, color 0.12s;
}
.sb-item:hover { background: var(--side-hover); color: #dbe0e8; }
.sb-item.active {
	background: var(--side-active-bg);
	color: #fff;
	font-weight: 600;
}
.sb-item.active::before {
	content: "";
	position: absolute;
	left: -10px;
	top: 7px;
	bottom: 7px;
	width: 3px;
	border-radius: 0 3px 3px 0;
	background: var(--accent);
}
.sb-icon {
	display: inline-flex;
	width: 20px;
	height: 20px;
	flex: none;
	opacity: 0.85;
}
.sb-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sb-count {
	flex: none;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 9px;
	background: var(--danger);
	color: #fff;
	font-size: 11px;
	font-weight: 700;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.sb-user {
	margin-top: auto;
	padding: 14px 16px;
	border-top: 1px solid rgba(255, 255, 255, 0.08);
	display: flex;
	align-items: center;
	gap: 11px;
}
.sb-avatar {
	flex: none;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.12);
	display: flex;
	align-items: center;
	justify-content: center;
	color: #fff;
	font-size: 14px;
	font-weight: 600;
	text-transform: uppercase;
}
.sb-user-info { flex: 1; min-width: 0; line-height: 1.3; }
.sb-user-name {
	color: #fff;
	font-size: 13px;
	font-weight: 500;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.sb-user-info a {
	color: var(--side-heading);
	font-size: 11px;
	text-decoration: none;
}
.sb-user-info a:hover { color: var(--side-text); text-decoration: underline; }
.sb-user form { margin: 0; }
.sb-logout {
	background: none;
	border: 0;
	color: var(--side-heading);
	font-size: 18px;
	line-height: 1;
	cursor: pointer;
	padding: 4px;
	border-radius: 6px;
}
.sb-logout:hover { color: #fff; background: var(--side-hover); opacity: 1; }

.content { margin-left: 248px; min-height: 100vh; display: flex; flex-direction: column; }

.topbar {
	position: sticky;
	top: 0;
	z-index: 20;
	min-height: 58px;
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 11px 28px 11px 20px;
	background: var(--surface);
	border-bottom: 1px solid var(--border);
}
.topbar .nav-toggle {
	width: 36px;
	height: 36px;
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--muted);
	border-radius: 8px;
	box-shadow: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
}
.topbar .nav-toggle:hover { background: var(--ghost-hover); color: var(--fg); opacity: 1; }
.topbar-title { font-size: 15px; font-weight: 600; letter-spacing: -0.01em; }

/* --- Контент --- */
main { flex: 1; width: 100%; max-width: 1180px; margin: 0 auto; padding: 26px 28px 64px; }

/* Страницы без пользователя (login, ошибки) — без сайдбара. */
.content.bare { margin-left: 0; }
.content.bare main { max-width: 560px; padding-top: 8vh; }

/* Кнопка-бургер: на десктопе меню всегда развёрнуто — кнопка не нужна. */
.sb-toggle { display: none; }

/* Свёрнутый desktop-каркас: ВОЛНА-71 §2.3, §7 Порция 1. */
@media (min-width: 961px) {
	body.nav-collapsed .sidebar { width: 56px; overflow: visible; }
	body.nav-collapsed .sb-brand { padding: 14px 0 12px; justify-content: center; }
	body.nav-collapsed .sb-brand-name { display: none; }
	body.nav-collapsed .sb-group {
		height: 1px;
		margin: 8px 14px;
		padding: 0;
		background: rgba(255, 255, 255, 0.08);
		font-size: 0;
		overflow: hidden;
	}
	body.nav-collapsed .sidebar nav .sb-group:first-child { display: none; }
	body.nav-collapsed .sb-item {
		width: 40px;
		height: 40px;
		margin: 1px 8px;
		padding: 0;
		justify-content: center;
		gap: 0;
	}
	body.nav-collapsed .sb-label { display: none; }
	body.nav-collapsed .sb-item.active::before { left: -8px; top: 8px; bottom: 8px; }
	body.nav-collapsed .sb-count {
		position: absolute;
		top: 4px;
		right: 4px;
		min-width: 8px;
		width: 8px;
		height: 8px;
		padding: 0;
		font-size: 0;
	}
	body.nav-collapsed .sb-item::after {
		content: attr(data-label);
		position: absolute;
		left: 52px;
		top: 50%;
		transform: translateY(-50%);
		padding: 5px 10px;
		border-radius: 6px;
		background: var(--fg);
		color: #fff;
		font-size: 12.5px;
		font-weight: 500;
		white-space: nowrap;
		box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
		z-index: 40;
		opacity: 0;
		pointer-events: none;
		transition: opacity 0.12s;
	}
	body.nav-collapsed .sb-item:hover::after { opacity: 1; }
	body.nav-collapsed .sb-user {
		flex-direction: column;
		padding: 12px 0 14px;
		gap: 10px;
		align-items: center;
	}
	body.nav-collapsed .sb-user-info { display: none; }
	body.nav-collapsed .content { margin-left: 56px; }
	body.nav-collapsed main { max-width: 1380px; }
}

/* Узкие экраны: сайдбар складывается в верхнюю панель; меню по умолчанию
   СВЁРНУТО (волна 31 §2.2) — раскрывается бургером (.sb-open). */
@media (max-width: 960px) {
	.topbar .nav-toggle { display: none; }
	.sidebar { position: relative; width: auto; overflow: visible; }
	.sidebar nav, .sidebar .sb-user { display: none; }
	.sidebar.sb-open nav { display: flex; flex-wrap: wrap; align-items: center; padding: 0 10px 10px; }
	.sidebar.sb-open .sb-user { display: flex; margin-top: 0; }
	.sb-toggle {
		display: block;
		position: absolute;
		top: 14px;
		right: 12px;
		background: none;
		border: 0;
		color: var(--side-text);
		font-size: 22px;
		line-height: 1;
		padding: 7px 12px;
		border-radius: 8px;
		cursor: pointer;
	}
	.sb-toggle:hover, .sidebar.sb-open .sb-toggle { color: #fff; background: var(--side-hover); }
	.sb-group { width: 100%; padding: 10px 10px 4px; }
	.sb-item { margin: 1px 4px; padding: 6px 10px; }
	.sb-item.active::before { display: none; }
	.content { margin-left: 0; }
	main { padding: 18px 14px 48px; }
}

/* Телефон (волна 31 §2.2): вылизан путь директора — верхняя панель-меню
   и страница «Отчёты». Остальные разделы осознанно не адаптируются:
   рабочие инструменты РС/бухгалтера живут на десктопе. */
@media (max-width: 640px) {
	.sb-brand { padding: 12px 14px 6px; }
	.sb-toggle { top: 8px; right: 8px; }
	.sidebar nav { padding: 0 8px 8px; }
	.sb-group { padding: 8px 8px 2px; }
	.sb-item { margin: 1px 2px; padding: 7px 10px; font-size: 13px; }
	.sb-user { padding: 10px 14px; }
	main { padding: 14px 10px 40px; }
	.card { padding: 16px 14px; }
	/* «Отчёты»: KPI-плитки в столбик — цифры остаются крупными. */
	.kpi { flex: 1 1 100%; }
	/* Фильтр периода: даты и кнопка по всей ширине, в столбик. */
	.row-form label { min-width: 100%; }
	.row-form button { width: 100%; }
}

/* Баннер «войдите в Didox» (§2.10): ключ компании протух/отсутствует. */
.banner-didox {
	background: var(--warn-soft);
	color: var(--warn);
	padding: 0.6rem 28px;
	font-size: 0.92rem;
	border-bottom: 1px solid var(--border);
}
.banner-didox a { color: var(--warn); font-weight: 600; }

/* ---------- Карточки ---------- */
.card {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: 22px 24px;
	margin-bottom: 18px;
}
.card-narrow { max-width: 440px; margin-left: auto; margin-right: auto; }

h1 { font-size: 19px; font-weight: 600; letter-spacing: -0.01em; margin: 0 0 0.5rem; }
h2 { font-size: 15px; font-weight: 600; margin: 1.5rem 0 0.75rem; }
/* Подзаголовок секции внутри карточки — как в макете карточки акта. */
h3 {
	font-size: 12px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	color: var(--muted);
	margin: 1.35rem 0 0.6rem;
}

.muted { color: var(--muted); }
.small { font-size: 0.86em; }
.error { color: var(--danger); font-weight: 500; }
p.ok, .ok { color: var(--ok); font-weight: 500; }

a { color: var(--accent); }
a.link { color: var(--accent); text-decoration: none; font-weight: 500; }
a.link:hover { text-decoration: underline; }

/* --- Заголовок карточки с кнопкой --- */
.card-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
}
.card-head h1 { margin: 0; }

/* ---------- Формы ---------- */
form label { display: block; margin-bottom: 0.75rem; font-size: 12.5px; font-weight: 500; color: var(--muted); }
input, select, textarea {
	display: block;
	width: 100%;
	height: 40px;
	padding: 0 12px;
	margin-top: 0.3rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	background: var(--surface);
	font-size: 14px;
	font-family: inherit;
	color: var(--fg);
	outline: none;
}
textarea { height: auto; padding: 8px 12px; }
/* Правило `input { display: block; … }` выше перебивает браузерное скрытие
   type="hidden" — технические поля (csrf, версия) рисовались пустыми белыми
   блоками. На белых строках это было незаметно, на зелёных строках догруза
   вылезло (приёмка в32). Возвращаем скрытие силой. */
input[type="hidden"] { display: none; }
/* Safari (iPhone) прижимает значение <input type="date"> к верху поля —
   центрируем теневую часть WebKit (высота поля 40px минус рамки = 38px). */
input::-webkit-date-and-time-value {
	line-height: 38px;
	text-align: left;
}
input:focus, select:focus, textarea:focus { border-color: var(--accent); }

/* Комбобокс поиска компании (волна 35 §3.1, select[data-combo] в acts.js):
   поле наследует общие стили input, список подсказок — поверх формы. */
.combo { position: relative; }
.combo-list {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 40;
	margin-top: 2px;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	box-shadow: 0 6px 18px rgba(0, 0, 0, 0.12);
	max-height: 260px;
	overflow-y: auto;
}
.combo-item { padding: 8px 12px; cursor: pointer; font-size: 13.5px; color: var(--fg); }
.combo-item:hover, .combo-item.active { background: var(--accent-soft); }
.combo-empty { padding: 8px 12px; color: var(--muted); font-size: 13px; }

input[type="radio"], input[type="checkbox"] {
	width: auto;
	height: auto;
	display: inline-block;
	margin: 0;
	accent-color: var(--accent);
}

button {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 16px;
	background: var(--accent);
	color: #fff;
	border: 0;
	border-radius: var(--radius-s);
	font-size: 13px;
	font-weight: 600;
	font-family: inherit;
	cursor: pointer;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
	transition: filter 0.12s, background 0.12s;
	white-space: nowrap;
}
button:hover { filter: brightness(1.07); }
button:disabled {
	background: var(--border);
	color: var(--muted);
	cursor: not-allowed;
	box-shadow: none;
	filter: none;
}
/* «Завершить акт» — зелёная (макет карточки акта). */
button.btn-ok:not(:disabled) { background: var(--ok); }
button.link {
	background: none;
	color: var(--accent);
	padding: 0;
	font-size: 13px;
	font-weight: 500;
	box-shadow: none;
	white-space: normal;
}
button.link:hover { filter: none; text-decoration: underline; }

/* «Удалить» / «Удалить навсегда» — деструктивные ссылки-кнопки (волна 13). */
button.link.danger { color: var(--danger); }

.row-form {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	align-items: flex-end;
}
.row-form label { flex: 1; min-width: 160px; margin-bottom: 0; }
.row-form + .row-form { margin-top: 0.85rem; }

/* Радио/чекбокс в строке — не растягивать. */
label.checkbox, label.toggle, label.inline {
	display: flex;
	align-items: center;
	gap: 0.45rem;
	margin-bottom: 0;
	color: var(--fg);
	font-size: 13.5px;
	font-weight: 400;
}
label.checkbox input, label.toggle input, label.inline input { width: auto; margin: 0; }
.row-form label.inline { flex: 0 0 auto; min-width: 0; }

/* Инлайн-форма в ячейке таблицы (Сверка: «Принять» / «Игнорировать»). */
form.inline-accept { display: inline; margin: 0; }

/* ---------- Кнопки-ссылки ---------- */
.actions { display: flex; gap: 0.75rem; margin-top: 1rem; flex-wrap: wrap; align-items: center; }
.btn {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 9px 16px;
	background: var(--accent);
	color: #fff;
	text-decoration: none;
	border-radius: var(--radius-s);
	font-size: 13px;
	font-weight: 600;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
	transition: filter 0.12s, background 0.12s;
	white-space: nowrap;
}
.btn:hover { filter: brightness(1.07); }
/* Ghost-кнопка: белая с рамкой (макет). Применяется и к <button>. */
.btn-secondary, button.btn-secondary {
	background: var(--surface);
	border: 1px solid var(--border);
	color: var(--fg);
	font-weight: 500;
	box-shadow: none;
}
.btn-secondary:hover, button.btn-secondary:hover { filter: none; background: var(--ghost-hover); }

/* Сегмент-группа «PDF | 🖨 | ⬇» в шапке акта: ярлык + печать + скачивание.
   Габариты согласованы с .btn-secondary, ховер подсвечивает сегмент отдельно. */
.pdfgroup {
	display: inline-flex;
	align-items: stretch;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	overflow: hidden;
	white-space: nowrap;
}
.pdfgroup-label {
	display: inline-flex;
	align-items: center;
	padding: 9px 12px;
	font-size: 13px;
	font-weight: 500;
	color: var(--fg);
}
.pdfgroup-seg {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	padding: 0 11px;
	border: 0;
	border-left: 1px solid var(--border);
	background: transparent;
	color: var(--fg);
	font-size: 15px;
	line-height: 1;
	text-decoration: none;
	box-shadow: none;
	cursor: pointer;
}
.pdfgroup-seg:hover { background: var(--ghost-hover); filter: none; }

.btn-danger {
	display: inline-flex;
	align-items: center;
	padding: 9px 16px;
	background: var(--danger);
	color: #fff;
	border: 0;
	border-radius: var(--radius-s);
	font-size: 13px;
	font-weight: 600;
	cursor: pointer;
	transition: filter 0.12s;
}
.btn-danger:hover { filter: brightness(1.07); }

/* ---------- Таблица ---------- */
.grid { width: 100%; border-collapse: collapse; }
.grid th, .grid td {
	text-align: left;
	padding: 10px 12px;
	border-bottom: 1px solid var(--border);
	font-size: 13.5px;
	line-height: 1.4;
	vertical-align: middle;
}
.grid th {
	color: var(--muted);
	background: var(--head-bg);
	font-size: 11px;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
	position: sticky;
	top: 0;
	z-index: 1;
}
.grid tbody tr { transition: background 0.1s; }
.grid tbody tr:hover { background: var(--row-hover); }
.grid th.num, .grid td.num {
	text-align: right;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}
.grid .col-cargo {
	width: 200px;
	max-width: 200px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.grid tr.inactive td { color: var(--muted); }
.row-actions { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.row-actions form { margin: 0; }

/* Широкая таблица: прокрутка + скруглённая рамка вокруг (макет). */
.table-scroll { overflow-x: auto; }
.table-scroll:has(> .grid) {
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--surface);
}
.table-scroll > .grid th:first-child, .table-scroll > .grid td:first-child { padding-left: 14px; }
.table-scroll > .grid tbody tr:last-child td { border-bottom: 0; }

/* Компактные поля внутри таблиц (лог хранения и пр.). */
.grid form { margin: 0; }
.grid input, .grid select {
	margin: 0;
	height: 34px;
	padding: 0 8px;
	font-size: 13px;
}
.grid input[type="date"] { width: auto; display: inline-block; }

p.error.card { padding: 1rem 1.5rem; }

/* ---------- Вкладки-фильтр: pill-группа (тема A) ---------- */
.tabs {
	display: inline-flex;
	gap: 4px;
	background: var(--bg);
	padding: 4px;
	border-radius: var(--radius);
	margin: 1rem 0;
	flex-wrap: wrap;
}
.tabs a {
	padding: 7px 14px;
	border-radius: 7px;
	text-decoration: none;
	color: var(--muted);
	font-size: 13px;
	font-weight: 500;
}
.tabs a:hover { color: var(--fg); }
.tabs a.active {
	background: var(--surface);
	color: var(--fg);
	font-weight: 600;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
}
/* Значок «вывезен в ноль» в колонке «Остаток» вкладки «В процессе»:
   акт — кандидат на перевод в «Завершённые» (подсказка в title).
   Жёлтый «!», а не зелёная галочка: смысл — «обрати внимание, предлагается
   действие», не «всё хорошо»; тот же язык, что у метки «договор не выбран». */
.done-hint {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	margin-left: 8px;
	border-radius: 50%;
	background: var(--warn);
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	cursor: help;
	vertical-align: middle;
}

/* Вкладки склада (ТС/КС/Все) — главная ось списка актов, как в «Все СФ». */
.tabs.wh-tabs { margin-bottom: 0.25rem; display: flex; }
.tabs.wh-tabs a { padding: 10px 18px; font-size: 14px; }
.tabs.wh-tabs a.active { font-weight: 700; }
/* Второй ряд — статусы актов и договоры, визуально подчинён складам. */
.tabs.subtabs {
	margin: 0 0 0.75rem;
	padding: 3px;
	display: flex;
}
.tabs.subtabs a { padding: 6px 13px; font-size: 12.5px; }

/* ---------- Учётные данные ---------- */
.creds { display: grid; grid-template-columns: auto 1fr; gap: 0.5rem 1rem; }
.creds dt { color: var(--muted); }
.creds dd { margin: 0; }

/* Денежная разбивка «Итог по акту» (макет карточки акта): суммы справа,
   табличные цифры, «Всего к оплате» крупно. */
dl.totals { grid-template-columns: 1fr auto; max-width: 460px; gap: 11px 24px; }
dl.totals dd { text-align: right; font-variant-numeric: tabular-nums; }
dl.totals dt:last-of-type, dl.totals dd:last-of-type {
	border-top: 1px solid var(--border);
	padding-top: 11px;
	font-size: 16px;
	color: var(--fg);
}
code {
	background: var(--ghost-hover);
	padding: 0.1rem 0.4rem;
	border-radius: 4px;
	font-family: var(--font-mono);
	font-size: 0.92em;
}
code.password { font-size: 1.1rem; font-weight: 700; }

/* ---------- Бейджи ---------- */
.badge {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 600;
	white-space: nowrap;
}
.badge::before {
	content: "";
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: currentColor;
	flex: none;
}
.badge-in_progress { background: var(--warn-soft); color: var(--warn); }
.badge-completed { background: var(--ok-soft); color: var(--ok); }
.badge-warn { background: var(--warn-soft); color: var(--warn); }
/* Статусы СФ на дашборде отчётности (волна 40) */
.badge-ok { background: var(--ok-soft); color: var(--ok); }
.badge-neutral { background: var(--ghost-hover); color: var(--muted); }
.badge-danger { background: var(--danger-soft); color: var(--danger); }

/* ---------- Дебиторка (ВОЛНА-72 §4.A, §4.G; макеты Порции 0) ---------- */
.debt-page { max-width: 1260px; }
.debt-list-page { max-width: 1480px; }
.debt-page-head, .debt-section-head {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 14px;
	flex-wrap: wrap;
}
.debt-page-head h1, .debt-section-head h2 { margin: 0; }
.debt-page-head p, .debt-section-head p { margin: 3px 0 0; color: var(--muted); font-size: 12.5px; }
.debt-account {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	padding: 5px 10px;
	border-radius: 999px;
	font-size: 12px;
	font-weight: 600;
	background: var(--warn-soft);
	color: var(--warn);
}
.debt-account > span { width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.debt-account.is-ok { background: var(--ok-soft); color: var(--ok); }
.debt-banner {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 14px;
	border-radius: var(--radius-s);
	margin-bottom: 14px;
}
.debt-banner b, .debt-banner span { display: block; }
.debt-banner span { margin-top: 2px; font-size: 12px; }
.debt-banner-danger { background: var(--danger-soft); color: var(--danger); }
.debt-banner-warn { background: var(--warn-soft); color: var(--warn); }
.debt-metrics { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 14px; }
.debt-metric { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; }
.debt-metric strong { display: block; font-family: var(--font-mono); font-size: 20px; font-variant-numeric: tabular-nums; }
.debt-metric span { color: var(--muted); font-size: 12px; }
.debt-toolbar { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.debt-status-filter { display: flex; align-items: center; gap: 8px; }
.debt-status-filter label { margin: 0; color: var(--muted); font-size: 12px; }
.debt-status-filter select { width: auto; min-width: 170px; }
.debt-toolbar-spacer { flex: 1; }
.debt-card-table { padding: 0; overflow: hidden; }
.debt-card-table > .debt-section-head { padding: 17px 18px 13px; margin: 0; border-bottom: 1px solid var(--border); }
.debt-companies { min-width: 1180px; }
.debt-report-table { min-width: 1500px; }
.debt-company { color: var(--fg); font-weight: 600; text-decoration: none; }
.debt-company:hover { color: var(--accent); text-decoration: underline; }
.debt-tin { margin-top: 2px; color: var(--muted); font: 11px var(--font-mono); }
.debt-money { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.debt-empty { color: var(--muted); font-size: 12.5px; padding: 14px 0; }
.debt-client-head { display: grid; grid-template-columns: minmax(240px, 1.5fr) minmax(190px, .7fr) minmax(180px, .7fr); gap: 20px; align-items: center; }
.debt-client-head h1 { font-size: 20px; }
.debt-label { color: var(--muted); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.debt-value { margin-top: 3px; font: 600 25px/1.2 var(--font-mono); }
.debt-case-placeholder { justify-self: end; text-align: right; }
.debt-back { display: inline-block; color: var(--accent); font-weight: 600; text-decoration: none; }
.debt-back:hover { text-decoration: underline; }
.debt-contact-add { margin-bottom: 14px; }
.debt-contact-add label { max-width: 480px; }
.debt-contacts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.debt-contact { padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-s); background: var(--head-bg); }
.debt-contact-top { display: flex; justify-content: space-between; gap: 8px; }
.debt-contact-top strong { font-family: var(--font-mono); overflow-wrap: anywhere; }
.debt-contact-tools { display: flex; align-items: flex-end; gap: 8px; margin: 10px 0 8px; flex-wrap: wrap; }
.debt-contact-tools label { min-width: 64px; margin: 0; }
.debt-contact-tools label.toggle { min-height: 40px; }
.debt-contact-tools select { width: 70px; }
.debt-contact-pending, .debt-contact-not_found { background: var(--warn-soft); color: var(--warn); }
.debt-contact-resolved { background: var(--ok-soft); color: var(--ok); }
.debt-contact-blocked { background: var(--danger-soft); color: var(--danger); }
.debt-check { min-height: 34px; }
.debt-pdf { display: inline-flex; padding: 2px 7px; border-radius: 5px; color: var(--muted); background: var(--ghost-hover); font-size: 11px; font-weight: 600; }
.debt-pdf.is-ready { color: var(--ok); background: var(--ok-soft); }
.debt-selected { display: flex; justify-content: flex-end; align-items: baseline; gap: 8px; margin-top: 11px; }
.debt-selected strong { font: 600 20px var(--font-mono); }
.debt-disabled-section button[disabled] { margin-top: 8px; }
.debt-modal-backdrop { position: fixed; inset: 0; z-index: 100; overflow: auto; padding: 40px 18px; background: rgba(20, 27, 38, .56); }
.debt-preview { max-width: 820px; margin: 0 auto; box-shadow: 0 24px 70px rgba(20, 27, 38, .18); }
.debt-preview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.debt-preview-grid > div, .debt-preview-letter { border: 1px solid var(--border); border-radius: var(--radius-s); padding: 14px; }
.debt-preview-grid h3, .debt-preview-letter h3 { margin: 0 0 8px; font-size: 13px; }
.debt-preview-letter { margin-top: 14px; background: var(--head-bg); }
.debt-letter-text { white-space: pre-line; overflow-wrap: anywhere; line-height: 1.55; }
.debt-preview-actions { justify-content: flex-end; margin-top: 16px; }
.debt-history-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 18px; }
.debt-timeline { position: relative; min-width: 0; }
.debt-event { display: flex; justify-content: flex-end; margin: 12px 0; }
.debt-bubble { width: min(78%, 700px); padding: 14px; border: 1px solid #dfe4fb; border-radius: var(--radius); background: var(--accent-soft); }
.debt-event-in { justify-content: flex-start; }
.debt-event-in .debt-bubble { border-color: var(--border); background: var(--head-bg); }
.debt-event-in.is-unread .debt-letter-text { font-weight: 700; }
.debt-event-in.is-unread .debt-bubble { border-left: 3px solid var(--accent); }
.debt-unread { font-weight: 700; }
.debt-meta { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; color: var(--muted); font-size: 11px; }
.debt-ai { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 10px; font-size: 12px; }
.debt-ai-intent { display: inline-flex; padding: 3px 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent); font-weight: 700; }
.debt-ai-summary { color: var(--fg); }
.debt-ai-confidence { color: var(--muted); }
.debt-ai-low, .debt-ai-pending { color: var(--muted); }
.debt-attachments { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.debt-attachments span { padding: 3px 7px; border-radius: 5px; background: var(--surface); color: var(--accent); font-size: 12px; }
.debt-status-sent { color: var(--ok); font-weight: 600; }
.debt-status-failed { color: var(--danger); font-weight: 600; }
.debt-status-queued { color: var(--warn); font-weight: 600; }
.debt-bubble form { display: inline-block; margin: 10px 6px 0 0; }
.debt-reply-panel { position: sticky; top: 76px; align-self: start; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--head-bg); }
.debt-reply-panel label { display: block; margin-bottom: 6px; font-weight: 600; }
.debt-reply-panel textarea { width: 100%; min-height: 132px; resize: vertical; }
.debt-reply-panel > form > button { width: 100%; margin-top: 8px; justify-content: center; }
.debt-quick-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.debt-quick-actions form { margin: 0; }
.debt-quick-actions form:first-child { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr auto; gap: 6px; }
.debt-quick-actions form:first-child label { grid-column: 1 / -1; }
.debt-quick-actions button { width: 100%; min-height: 40px; justify-content: center; }
.debt-page a:focus-visible, .debt-page button:focus-visible,
.debt-page input:focus-visible, .debt-page select:focus-visible {
	outline: 2px solid var(--accent);
	outline-offset: 2px;
}

@media (max-width: 960px) {
	.debt-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.debt-client-head { grid-template-columns: 1fr 1fr; }
	.debt-case-placeholder { grid-column: 1 / -1; justify-self: start; text-align: left; }
	.debt-contacts { grid-template-columns: 1fr; }
	.debt-history-layout { grid-template-columns: 1fr; }
	.debt-reply-panel { position: static; }
	.debt-bubble { width: 100%; }
}
@media (max-width: 640px) {
	.debt-metrics, .debt-client-head, .debt-preview-grid { grid-template-columns: 1fr; }
	.debt-account { width: 100%; }
	.debt-value { font-size: 21px; }
	.debt-contact-add button { width: 100%; justify-content: center; min-height: 44px; }
	.debt-toolbar { align-items: stretch; flex-direction: column; }
	.debt-toolbar-spacer { display: none; }
	.debt-status-filter { align-items: stretch; flex-direction: column; }
	.debt-status-filter select { width: 100%; }
}

/* Знак «!» у акта без договора (web-ui, волна 2) */
.mark-warn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-left: 0.35rem;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: var(--warn-soft);
	color: var(--warn);
	font-size: 10px;
	font-weight: 700;
	cursor: help;
}

/* Жёлтый ПРЕДУПРЕЖДАЮЩИЙ ТЕКСТ (в48): .mark-warn — только круглый значок
   «!» 16×16, на текст его вешать нельзя (текст запирается в кружок). */
.warn-text { color: var(--warn); font-weight: 600; }

/* Кликабельное окошко проблемы (в50 §3.B): нативный <details>, значок «!» =
   summary с прежним классом (mark-warn / done-hint). Маркер-треугольник
   summary скрыт; окошко — абсолютная карточка поверх таблицы. */
details.issue-pop {
	display: inline-block;
	position: relative;
	vertical-align: middle;
}
details.issue-pop > summary {
	list-style: none;
	cursor: pointer;
}
details.issue-pop > summary::-webkit-details-marker { display: none; }
details.issue-pop > summary::marker { content: ""; }
.issue-panel {
	position: absolute;
	top: calc(100% + 6px);
	right: 0;
	width: 240px;
	padding: 10px 12px;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14);
	color: var(--fg);
	font-size: 12px;
	font-weight: 400;
	line-height: 1.45;
	text-align: left;
	white-space: normal;
	z-index: 30;
}

/* ---------- Сводка-показатели (reporting + дашборд) ---------- */
.kpi-row { display: flex; flex-wrap: wrap; gap: 14px; margin: 0.75rem 0 18px; }
.kpi {
	flex: 1;
	min-width: 160px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: 16px 18px;
	background: var(--surface);
}
a.kpi { text-decoration: none; color: inherit; transition: background 0.12s; }
a.kpi:hover { background: var(--ghost-hover); }
.kpi-value {
	font-size: 25px;
	font-weight: 600;
	letter-spacing: -0.015em;
	line-height: 1.1;
	font-variant-numeric: tabular-nums;
}
.kpi-label { color: var(--muted); font-size: 12px; margin-top: 5px; }
/* Тревожная плитка (stale-СФ > 0). */
.kpi.kpi-danger { background: var(--danger-soft); border-color: var(--danger); }
.kpi.kpi-danger .kpi-value { color: var(--danger); }

/* Мини-прогресс остатка в таблице актов (макет-каркас). */
.pbar {
	display: inline-block;
	width: 56px;
	height: 6px;
	border-radius: 3px;
	background: var(--border);
	overflow: hidden;
	vertical-align: middle;
	margin-left: 9px;
	flex: none;
}
.pbar i { display: block; height: 100%; background: var(--accent); }
/* Волна 40 приёмка (телефон): ряды денег отчётности — итоговая плитка во
   всю ширину, плитки-разбивки делят ряд под ней. Специфичнее мобильного
   `.kpi { flex: 1 1 100% }` (640px) — на узких экранах разбивка остаётся
   парой, а не столбиком. Десктоп (>960px) — как был, три в линию. */
@media (max-width: 960px) {
	.kpi-row-split .kpi { flex: 1 1 calc(50% - 14px); min-width: 0; }
	.kpi-row-split .kpi:first-child { flex: 1 1 100%; }
	/* Плитка-одиночка (в40 §3): на телефоне — строка целиком, ни с кем
	   не делит (просьба владельца: «начисляется в день за хранение»). */
	.kpi-solo { flex: 1 1 100%; }
}

/* Волна 40: широкая шкала «принято от выставленного» на отчётности */
.pbar-wide {
	display: block;
	width: 100%;
	max-width: 460px;
	height: 9px;
	margin: 8px 0 4px;
}
.pbar.pbar-ok i { background: var(--ok); }

/* ---------- Журнал изменений (audit) ---------- */
.changes { margin: 0; padding-left: 1rem; font-size: 0.86rem; }
.changes li { margin-bottom: 0.15rem; }
.changes .field { color: var(--muted); }
.changes .was { color: var(--danger); }
.changes .now { color: var(--ok); }
.pager {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-top: 1rem;
	font-size: 0.9rem;
}

/* ---------- Kebab-меню в шапке карточки (волна 6 §3.2) ---------- */
details.kebab { position: relative; }
details.kebab > summary {
	cursor: pointer;
	list-style: none;
	padding: 0.3rem 0.7rem;
	user-select: none;
	font-size: 1.2rem;
	line-height: 1;
	border-radius: var(--radius-s);
	color: var(--muted);
	background: var(--ghost-hover);
}
details.kebab > summary::-webkit-details-marker { display: none; }
details.kebab > summary:hover { background: var(--border); color: var(--fg); }
.kebab-menu {
	position: absolute;
	right: 0;
	top: calc(100% + 0.3rem);
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
	padding: 6px;
	min-width: 240px;
	z-index: 10;
}
.kebab-menu form { margin: 0; }
.kebab-item {
	display: block;
	width: 100%;
	text-align: left;
	padding: 0.55rem 0.8rem;
	background: none;
	border: 0;
	border-radius: 7px;
	color: var(--fg);
	font-size: 13.5px;
	font-weight: 400;
	cursor: pointer;
	box-shadow: none;
	white-space: normal;
}
.kebab-item:hover:not(:disabled) { background: var(--ghost-hover); filter: none; }
.kebab-item:disabled { color: var(--muted); cursor: not-allowed; }
/* В57 §3: отчётливое состояние тумблера фуры в пункте кебаба. */
.kebab-item-toggle {
	display: flex;
	align-items: center;
	gap: 8px;
}
.kebab-checkbox {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	flex: 0 0 16px;
	width: 16px;
	height: 16px;
	border: 2px solid var(--muted);
	border-radius: 4px;
	background: transparent;
}
.kebab-checkbox.is-checked {
	border-color: var(--ok);
	background: var(--ok);
}
.kebab-checkbox.is-checked::after {
	content: "✓";
	color: #fff;
	font-size: 12px;
	font-weight: 700;
	line-height: 1;
}

/* ---------- Модальный диалог опасного подтверждения (волна 17 §2.7) ---------- */
dialog.confirm-dialog {
	border: 1px solid var(--border);
	border-radius: 12px;
	padding: 1.25rem 1.5rem;
	max-width: 28rem;
	box-shadow: 0 16px 48px rgba(0, 0, 0, 0.18);
}
dialog.confirm-dialog::backdrop { background: rgba(15, 20, 30, 0.4); }
dialog.confirm-dialog h2 { margin-top: 0; font-size: 16px; }
dialog.confirm-dialog .actions { display: flex; gap: 0.6rem; margin-top: 1rem; }
dialog.confirm-dialog .btn-danger:disabled { opacity: 0.5; cursor: not-allowed; }

/* ---------- Предпросмотр перевода акта ТС ↔ КС (ВОЛНА-51 §4.B) ---------- */
dialog.confirm-dialog.act-switch-dialog {
	box-sizing: border-box;
	width: min(52rem, calc(100vw - 2rem));
	max-width: 52rem;
	max-height: calc(100vh - 2rem);
	overflow: auto;
}
.switch-summary {
	margin: 0 0 1rem;
	padding: 1rem;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--head-bg);
}
.switch-summary.is-warning {
	border-color: var(--warn);
	background: var(--warn-soft);
}
.switch-summary-total {
	margin: 0 0 0.75rem;
	font-size: 1.08rem;
	font-weight: 700;
	font-variant-numeric: tabular-nums;
}
.switch-diff { white-space: nowrap; }
.switch-totals { display: grid; gap: 0.35rem; margin: 0; }
.switch-totals > div {
	display: flex;
	justify-content: space-between;
	gap: 1rem;
}
.switch-totals dt { color: var(--muted); }
.switch-totals dd {
	margin: 0;
	text-align: right;
	font-variant-numeric: tabular-nums;
}
.switch-section { margin-top: 1rem; }
.switch-section h3 { margin: 0 0 0.45rem; font-size: 0.95rem; }
.switch-section p { margin: 0.35rem 0; }
.switch-services { min-width: 700px; }
.switch-services th, .switch-services td { vertical-align: top; }
.switch-warning {
	margin-top: 1rem;
	padding: 0.8rem 1rem;
	border-left: 4px solid var(--warn);
	background: var(--warn-soft);
}
.switch-warning p { margin: 0.25rem 0; }
.switch-blockers { margin: 0.75rem 0 0; padding-left: 1.25rem; }
.switch-blockers li + li { margin-top: 0.4rem; }

@media (max-width: 640px) {
	dialog.confirm-dialog.act-switch-dialog { padding: 1rem; }
	.switch-totals > div { display: block; }
	.switch-totals dd { margin-top: 0.1rem; text-align: left; }
}

/* ---------- Сворачиваемый блок-карточка (волна 3 этап B) ---------- */
details.card > summary {
	cursor: pointer;
	list-style: none;
	display: flex;
	align-items: baseline;
	gap: 0.75rem;
}
details.card > summary::-webkit-details-marker { display: none; }
details.card > summary::before {
	content: "▸";
	color: var(--muted);
	font-size: 0.9rem;
}
details.card[open] > summary::before { content: "▾"; }
details.card > summary h2 { margin: 0; font-size: 15px; }

/* Раскрывашка «Показать СФ акта» на /invoices/stale (волна 9 §1) */
details.siblings > summary {
	cursor: pointer;
	color: var(--accent);
	font-size: 0.85rem;
}
details.siblings[open] > summary { margin-bottom: 0.5rem; }

/* Раскрывашка «машина / ответственный / примечание» лога хранения (волна 10 §4) */
details.event-detail > summary {
	cursor: pointer;
	color: var(--accent);
	font-size: 0.8rem;
}
details.event-detail[open] > summary { margin-bottom: 0.5rem; }

/* Поиск по списку «Договоры из Didox» (волна 26 §9). */
.dximp-controls {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 12px 0;
}
.dximp-controls input[type="search"] {
	width: auto;
	min-width: 300px;
	margin: 0;
}

/* Сверка (волна 26 §5): спокойные строки (🟢/🟣) свёрнуты по умолчанию. */
#recon-table tr.recon-quiet { display: none; }
#recon-table.show-quiet tr.recon-quiet { display: table-row; }

/* Раскрывашка состава будущей СФ на «К выставлению» (волна 26 §3) */
details.delta-details > summary {
	cursor: pointer;
	color: var(--accent);
	white-space: nowrap;
}
details.delta-details[open] > summary { margin-bottom: 0.35rem; }
.delta-parts {
	margin: 0;
	padding-left: 1rem;
	text-align: left;
	color: var(--muted);
	min-width: 240px;
}
.delta-parts li { margin: 0.15rem 0; white-space: nowrap; }

/* Волна 48: «К выставлению» — группы ТС/КС в одном списке + состав будущей
   СФ раскрывается ПОД-СТРОКОЙ (tr.delta-row), а не внутри ячейки. Числовые
   колонки сжаты (width: 1%) — суммы стоят рядом, свободную ширину забирает
   «Клиент», гигантского зазора между колонками нет. */
.toissue th { width: 1%; }              /* все колонки — по контенту… */
.toissue th.col-client { width: auto; } /* …вся лишняя ширина — «Клиенту» */
.toissue td.col-client { min-width: 190px; }  /* имя не ломается в столбик */
.toissue td.col-status { min-width: 170px; }  /* «пора выставить» — не столбиком */
.toissue td.col-act { white-space: nowrap; }
/* Глобальный .actions (панель кнопок) делает td флексом — ячейка выпадает
   из таблицы и теряет границу строки; внутри таблицы возвращаем table-cell. */
.toissue td.actions { display: table-cell; }
/* Вспомогательные подписи («ждёт подписи», «пора выставить», состав при
   ошибке предпросчёта) переносятся в узкой плашке и НЕ раздувают колонку —
   иначе между суммами снова вырастает зазор. В num-ячейке — к правому краю. */
.toissue td .small { white-space: normal; max-width: 230px; }
.toissue td.num .small { margin-left: auto; }
.toissue tr.group-row td {
	background: var(--accent-soft);
	color: var(--fg);
	font-size: 12.5px;
	font-weight: 700;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	padding-top: 9px;
	padding-bottom: 9px;
}
.toissue tr.group-row td:first-child { box-shadow: inset 3px 0 0 var(--accent); }
.toissue .delta-toggle { cursor: pointer; color: var(--accent); white-space: nowrap; }
.toissue .delta-toggle .tri { font-style: normal; display: inline-block; width: 0.9em; }
.toissue tr.delta-row { display: none; }
.toissue tr.delta-row.open { display: table-row; }
.toissue .delta-sub {
	width: auto;
	min-width: 40%;
	margin: 4px 0 2px 12px;
	border-collapse: collapse;
}
.toissue .delta-sub td {
	border-bottom: 0;
	padding: 2px 18px 2px 0;
	font-size: 13px;
	color: var(--muted);
	white-space: nowrap;
}
.toissue .delta-sub td:first-child { padding-left: 0; }

/* Форма СФ акта (волна 36): сумма-предпросмотр + спрятанный ручной путь */
.sf-preview { font-size: 1.1rem; margin: 0.75rem 0 0.25rem; }
details.sf-manual { margin-top: 1rem; }
details.sf-manual > summary {
	cursor: pointer;
	color: var(--muted);
}
details.sf-manual[open] > summary { margin-bottom: 0.5rem; }

/* ---------- Таймлайн истории СФ в карточке акта (волна 16 §2.2) ---------- */
.sf-history-item { margin: 0 0 0.75rem; }
.sf-history-item:last-child { margin-bottom: 0; }
.sf-history-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem; }
.sf-timeline { margin: 0.25rem 0 0; padding-left: 1.1rem; }
.sf-timeline li { margin: 0.15rem 0; }
.sf-timeline .sf-ev-label { font-weight: 600; }
.event-meta { display: flex; flex-wrap: wrap; gap: 0.25rem 1.5rem; margin: 0; }
.event-meta div { display: flex; gap: 0.4rem; }
.event-meta dt { color: var(--muted); font-weight: 600; }
.event-meta dd { margin: 0; }

/* ---------- Режим «просмотр / правка» карточки акта (волна 11) ----------
   Запертые поля (disabled) читаются как «только чтение»: приглушённый фон,
   обычный (не выцветший) текст, курсор-стрелка. Размыкаются кнопкой
   «Редактировать» / «Изменить» (acts.js, data-lock="view"). */
input:disabled, select:disabled, textarea:disabled {
	background: var(--head-bg);
	border-color: var(--border);
	color: var(--fg);
	cursor: default;
	opacity: 1;
}
input[type="radio"]:disabled, input[type="checkbox"]:disabled {
	background: none;
	cursor: default;
}

/* ---------- Липкая шапка карточки акта (макет «Акт в процессе») ---------- */
.act-topbar {
	position: sticky;
	top: 58px; /* под топбаром */
	z-index: 15;
	padding-bottom: 10px;
	margin: -6px 0 8px;
	background: linear-gradient(var(--bg) 72%, rgba(236, 238, 241, 0));
}
.act-topbar-card {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: 14px 22px;
	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}
.act-topbar-head { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.act-topbar-head h1 { margin: 0; font-size: 21px; font-weight: 700; letter-spacing: -0.01em; }
.act-topbar-sub { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.act-topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 10px; }
.act-flag-readonly,
details.act-flag-popover > summary {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	min-width: 0;
}
/* В61 §2.1: компактный keyboard-friendly поповер флажка в шапке акта. */
details.act-flag-popover { position: relative; min-width: 0; }
details.act-flag-popover > summary {
	min-height: 44px;
	padding: 4px 8px;
	border-radius: var(--radius-s);
	cursor: pointer;
	list-style: none;
	user-select: none;
}
details.act-flag-popover > summary::-webkit-details-marker { display: none; }
details.act-flag-popover > summary:hover { background: var(--ghost-hover); }
details.act-flag-popover > summary:focus-visible {
	outline: none;
	box-shadow: 0 0 0 2px var(--accent);
}
.act-flag-empty { color: var(--muted); font-size: 12.5px; font-weight: 600; }
.act-flag-note {
	display: inline-block;
	max-width: 170px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--muted);
	font-size: 12px;
}
.act-flag-badge { color: var(--fg); }
.act-flag-badge.badge-ok::before { background: var(--ok); }
.act-flag-badge.badge-warn::before { background: var(--warn); }
.act-flag-badge.badge-danger::before { background: var(--danger); }
/* В61 §2.2–§2.3: компактный векторный флажок рядом с номером акта. */
.act-flag-icon {
	display: inline-flex;
	width: 16px;
	height: 16px;
	margin-left: 5px;
	vertical-align: -3px;
}
.act-flag-icon svg { display: block; width: 100%; height: 100%; fill: currentColor; }
.act-flag-icon-green { color: var(--ok); }
.act-flag-icon-yellow { color: var(--warn); }
.act-flag-icon-red { color: var(--danger); }
.act-flag-icon-none { color: var(--muted); opacity: .55; }
.act-flag-menu {
	position: absolute;
	right: 0;
	top: calc(100% + 0.3rem);
	z-index: 20;
	width: min(360px, calc(100vw - 32px));
	padding: 14px;
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.act-flag-menu form { margin: 0; }
.act-flag-menu fieldset { margin: 0 0 12px; padding: 0; border: 0; }
.act-flag-menu legend {
	margin-bottom: 7px;
	font-size: 12.5px;
	font-weight: 600;
	color: var(--fg);
}
.act-flag-choices { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.act-flag-menu form label.act-flag-choice {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 44px;
	margin: 0;
	padding: 6px 8px;
	border: 1px solid currentColor;
	border-radius: var(--radius-s);
	font-size: 11.5px;
	font-weight: 600;
	line-height: 1.2;
	cursor: pointer;
}
.act-flag-choice input { flex: none; }
.flag-choice-ok {
	color: var(--fg) !important;
	border-color: var(--ok) !important;
	background: var(--ok-soft);
}
.flag-choice-warn {
	color: var(--fg) !important;
	border-color: var(--warn) !important;
	background: var(--warn-soft);
}
.flag-choice-danger {
	color: var(--fg) !important;
	border-color: var(--danger) !important;
	background: var(--danger-soft);
}
.flag-choice-ok input { accent-color: var(--ok); }
.flag-choice-warn input { accent-color: var(--warn); }
.flag-choice-danger input { accent-color: var(--danger); }
.act-flag-choice:has(input:focus-visible) { box-shadow: 0 0 0 2px var(--accent); }
.act-flag-menu textarea { resize: vertical; min-height: 72px; }
.act-flag-menu button { min-height: 44px; }
.act-flag-remove {
	margin-top: 12px !important;
	padding-top: 10px;
	border-top: 1px solid var(--border);
}
/* В75 §4.E: компактный поповер флажка внутри строки дашборда. */
.act-flag-cell { display: inline-block; }
details.act-flag-popover-cell {
	display: inline-block;
	position: relative;
	vertical-align: middle;
}
details.act-flag-popover-cell > summary {
	min-height: 0;
	padding: 4px;
	margin: -4px;
}
.act-flag-popover-cell .act-flag-menu { left: 0; right: auto; }
/* В75 §4.E, §11 п.3: на телефоне абсолютное меню у левого края таблицы
   вылезало за экран (390 px) — показываем его фиксированно с полями 16 px. */
@media (max-width: 600px) {
	.act-flag-popover-cell .act-flag-menu {
		position: fixed;
		left: 16px;
		right: 16px;
		top: 50%;
		width: auto;
		transform: translateY(-50%);
	}
}
.act-flag-error {
	color: var(--danger);
	font-size: 12.5px;
	margin: 0 0 8px;
}
.act-summary {
	display: flex;
	gap: 6px 24px;
	flex-wrap: wrap;
	font-size: 12.5px;
	color: var(--muted);
	border-top: 1px solid var(--border);
	margin-top: 12px;
	padding-top: 11px;
}
.act-summary b { color: var(--fg); font-weight: 600; }

/* Крупный остаток «Осталось на складе» в блоке отгрузок. */
.rem-line { display: flex; align-items: baseline; gap: 10px 18px; flex-wrap: wrap; margin: 4px 0 14px; }
.rem-line .rem-value {
	font-size: 22px;
	font-weight: 700;
	letter-spacing: -0.01em;
	font-variant-numeric: tabular-nums;
}
.rem-line .rem-unit { font-size: 14px; font-weight: 600; color: var(--muted); }

/* Вложенная форма добавления (отгрузка / услуга / возврат) — серый блок. */
.subform {
	background: var(--head-bg);
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: 16px 18px;
	margin: 0 0 18px;
}
.subform h2, .subform h3 { margin-top: 0; }

/* Числа моноширинным — номера договоров/СФ, ИНН, даты журналов. */
.mono { font-family: var(--font-mono); font-size: 0.93em; }

/* ---------- Догруз (волна 32 §3.5) ---------- */
/* Заголовок блока с кебабом «⋮» справа (лог хранения). */
.block-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.block-head h2 { margin-bottom: 8px; }
/* Секция догруза: фон ЯВНО другого цвета (зелёный = груз прибыл), чтобы
   приходы никогда не спутали с отгрузками. Спрятана по умолчанию,
   раскрывается кебабом; раскрытие не запоминается. */
.arrivals-panel {
	background: var(--ok-soft);
	border: 1px solid #bfe8c5;
	border-radius: var(--radius);
	padding: 16px 18px;
	margin: 0 0 18px;
}
.arrivals-panel h2 { margin: 0 0 6px; font-size: 15px; color: var(--ok); }
.arrivals-panel .subform,
.arrivals-panel table.grid { background: transparent; }
.arrivals-panel .subform { border-color: #bfe8c5; padding: 0; margin: 8px 0 0; }
/* Догруз в таблице событий лога: строка на зелёной подложке, сумма с «+».
   Фон нужен и на tr: ячейка кнопок (.row-actions) через display:flex
   выпадает из табличной раскладки — браузер оборачивает её в анонимную
   прозрачную ячейку, и td-фон не докрашивает низ строки (белая вставка,
   приёмка в32). Фон строки просвечивает сквозь прозрачную ячейку. */
tr.arrival-row { background: var(--ok-soft); }
tr.arrival-row td { background: var(--ok-soft); }
/* Бордер той же flex-ячейки рисуется на высоте её контента (середина
   строки), а не по низу ряда — на зелёном фоне это лишняя черта. */
tr.arrival-row td.row-actions { border-bottom: 0; }
.arrival-amount { color: var(--ok); font-weight: 600; font-variant-numeric: tabular-nums; }
/* Приёмка в32: сумма догруза — редактируемое поле в одну строку с «+» и
   подписью «догруз»; цвет и жирность — как у текста суммы. */
.arrival-amount input {
	display: inline-block;
	width: 110px;
	color: var(--ok);
	font-weight: 600;
}

/* ---------- Вход в Didox: выбор ЭЦП комбобоксом (дизайн как у didox.uz, §2.10) ---------- */
.eimzo-page { max-width: 560px; margin-left: auto; margin-right: auto; }
.eimzo-select {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	padding: 0.9rem 1rem;
	cursor: pointer;
	background: var(--surface);
}
.eimzo-select:hover, .eimzo-select:focus-visible { border-color: var(--accent); outline: none; }
.eimzo-placeholder { font-size: 1.05rem; }
.eimzo-selected { flex: 1; min-width: 0; }
.eimzo-selected .eimzo-card { border: none; background: transparent; padding: 0; }
.eimzo-caret { color: var(--fg); font-size: 0.9rem; }
.eimzo-cards {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	padding: 0.75rem 0.5rem;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	margin-top: 0.5rem;
	max-height: 26rem;
	overflow-y: auto;
	background: var(--surface);
}
/* display:flex выше перебивает UA-правило для [hidden] — возвращаем его силой. */
.eimzo-cards[hidden] { display: none; }
.eimzo-card {
	background: var(--surface);
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	padding: 0.9rem 1rem;
	cursor: pointer;
}
.eimzo-cards .eimzo-card:hover, .eimzo-cards .eimzo-card:focus-visible {
	border-color: var(--accent);
	box-shadow: 0 1px 4px rgba(58, 91, 217, 0.2);
	outline: none;
}
.eimzo-login-btn {
	display: block;
	width: 100%;
	margin-top: 0.75rem;
	padding: 0.8rem 1rem;
	font-size: 1.05rem;
	font-weight: 600;
	border: none;
	border-radius: var(--radius);
	background: var(--accent);
	color: #fff;
	cursor: pointer;
	justify-content: center;
	text-align: center;
}
.eimzo-login-btn:hover:not(:disabled) { filter: brightness(0.95); }
.eimzo-login-btn:disabled {
	background: var(--border);
	color: var(--muted);
	cursor: default;
	filter: none;
}
#eimzo-refresh { margin-top: 0.75rem; }
.eimzo-card-name {
	color: var(--accent);
	font-weight: 700;
	text-transform: uppercase;
	margin-bottom: 0.5rem;
}
.eimzo-card-row {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	flex-wrap: wrap;
	margin-bottom: 0.4rem;
}
.eimzo-badge {
	display: inline-block;
	padding: 0.2rem 0.7rem;
	border-radius: 6px;
	font-size: 0.9rem;
}
.eimzo-badge-legal { background: var(--accent-soft); border: 1px solid #bfd3ff; color: var(--accent); }
.eimzo-badge-person { background: var(--ok-soft); border: 1px solid #bfe8c5; color: var(--ok); }
.eimzo-label { color: var(--muted); font-size: 0.9rem; }
.eimzo-card-org { font-weight: 700; text-transform: uppercase; margin-bottom: 0.4rem; }
.eimzo-card-cert {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0.25rem 2rem;
}
.eimzo-card-cert b { font-size: 1.02rem; }
/* Просроченный ключ: № и срок сертификата — красным (как у didox.uz). */
.eimzo-card-expired .eimzo-card-cert .eimzo-label { color: #ef8a87; }
.eimzo-card-expired .eimzo-card-cert b { color: var(--danger); }

/* ---------- Штучное хранение (волна 39) ---------- */
/* Свой цвет блока — фиолетовый: отличим от догруза (зелёный), warn (жёлтый)
   и инфо (голубой). Панель формы — тон глубже, как arrivals-panel. */
.piece-card { background: #f6f4fb; border-color: #ded7f3; }
.piece-card .grid th { background: #efecf8; }
.piece-card h2 { color: #5b46a8; }
.piece-add {
	background: #efecf8;
	border: 1px solid #ded7f3;
	border-radius: var(--radius);
	padding: 16px 18px;
	margin: 0 0 18px;
}
.piece-add h2 { margin: 0 0 6px; font-size: 15px; color: #5b46a8; }
.piece-seg { margin-top: 3px; font-variant-numeric: tabular-nums; }
.piece-open { color: var(--warn); }
/* Мини-журнал позиции штучного хранения: отрезки + отгрузки (приёмка в39). */
.piece-log {
	margin: 7px 0 2px;
	padding: 8px 12px;
	background: rgba(255, 255, 255, 0.65);
	border: 1px solid #e6e0f5;
	border-radius: var(--radius-s);
	display: flex;
	flex-direction: column;
	gap: 3px;
	font-size: 12.5px;
	max-width: 480px;
}
.piece-seg { color: var(--fg); }
.piece-seg-dates {
	display: inline-block;
	min-width: 96px;
	font-weight: 600;
	color: #5b46a8;
}
.piece-wd { color: var(--muted); }
.piece-log .num { font-variant-numeric: tabular-nums; }
/* Формула отрезка атомарна: перенос — только целиком на новую строку. */
.piece-seg { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: baseline; }
.piece-formula { white-space: nowrap; }
.piece-open { white-space: nowrap; }
/* Отрезок: «даты — сумма» первой строкой, расшифровка формулы — под ней. */
.piece-seg { display: block; }
.piece-seg-head { display: flex; flex-wrap: wrap; gap: 2px 8px; align-items: baseline; }
.piece-seg-detail { padding-left: 104px; font-size: 12px; }
@media (max-width: 640px) { .piece-seg-detail { padding-left: 0; } }

/* ---------- График «Подписанные СФ по месяцам» (отчёты, вне волн 2026-08) ---------- */
/* Цвета серий: ТС = --accent, КС = --ok (пара проверена CVD-валидатором).
   Если появится третья серия — НЕ брать --warn: пара зелёный/#9a6700
   неразличима при дальтонизме; проверенный вариант — #c98500. */
.mc-wrap { position: relative; }
.mc-svg { display: block; width: 100%; height: auto; max-width: 860px; }
.mc-ts { fill: var(--accent); }
.mc-ks { fill: var(--ok); }
.mc-loading { fill: var(--accent); }
.mc-additional { fill: var(--ok); }
.mc-storage { fill: var(--accent); }
.mc-slot:hover .mc-seg, .mc-slot:focus .mc-seg { filter: brightness(1.12); }
.mc-slot:focus { outline: none; }
.mc-slot:focus .mc-hit { stroke: var(--accent); stroke-width: 2; }
.mc-hit { fill: transparent; }
.mc-grid { stroke: var(--border); stroke-width: 1; }
.mc-base { stroke: var(--muted); stroke-width: 1; }
.mc-axis, .mc-axis-note, .mc-month { font-size: 10.5px; fill: var(--muted); }
.mc-axis { text-anchor: end; }
.mc-month, .mc-total { text-anchor: middle; }
.mc-total { font-size: 10.5px; font-weight: 600; fill: var(--fg); }
.mc-legend { display: flex; flex-wrap: wrap; gap: 4px 18px; margin-top: 6px;
	font-size: 13px; color: var(--fg); }
.mc-key { display: inline-block; width: 10px; height: 10px; border-radius: 3px;
	margin-right: 6px; vertical-align: baseline; }
.mc-key-ts { background: var(--accent); }
.mc-key-ks { background: var(--ok); }
.mc-key-loading { background: var(--accent); }
.mc-key-additional { background: var(--ok); }
.mc-key-storage { background: var(--accent); }
.mc-table { margin-top: 8px; }
.mc-table summary { cursor: pointer; }
.mc-tip { position: absolute; z-index: 30; pointer-events: none;
	background: var(--surface); border: 1px solid var(--border);
	border-radius: var(--radius-s); box-shadow: 0 4px 14px rgba(26, 33, 44, 0.12);
	padding: 8px 10px; font-size: 12.5px; white-space: nowrap; }
.mc-tip-head { font-weight: 600; margin-bottom: 4px; }
.mc-tip-row { display: flex; align-items: center; gap: 4px; margin-top: 2px; }
.mc-tip-row b { font-weight: 600; }

/* ---------- Аренда (Волна 62 §2.1–§2.5, Порции 3–4) ---------- */
.rent-heading {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	margin-bottom: 16px;
}
.rent-heading h1 { margin-bottom: 2px; }
.rent-heading p { margin: 0; }
.rent-direct-note {
	flex: none;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--accent-soft);
	color: var(--muted);
	font-size: 11.5px;
}
.rent-firms {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin-bottom: 18px;
}
.rent-firm-tile, .rent-firm-add {
	position: relative;
	min-width: 215px;
	min-height: 88px;
	padding: 12px 16px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--surface);
}
.rent-firm-tile { display: flex; flex-direction: column; gap: 6px; }
.rent-firm-tile-none { border-style: dashed; }
.rent-firm-name { padding-right: 22px; font-size: 13px; font-weight: 600; }
.rent-tin { color: var(--muted); font: 11px var(--font-mono); }
.rent-firm-key-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.rent-firm-add {
	display: flex;
	align-items: center;
	justify-content: center;
	border-color: var(--accent);
	border-style: dashed;
	background: transparent;
	color: var(--accent);
	box-shadow: none;
}
.rent-firm-add:hover { background: var(--accent-soft); }
.rent-remove-form { position: absolute; top: 5px; right: 7px; margin: 0; }
.rent-placeholder-remove {
	min-width: 28px;
	min-height: 28px;
	padding: 2px 8px;
	background: transparent;
	box-shadow: none;
	color: var(--muted);
	font-size: 16px;
}
.rent-placeholder-link, .rent-row-placeholder {
	display: inline;
	padding: 0;
	background: transparent;
	color: var(--accent);
	box-shadow: none;
	font-size: 11.5px;
	text-decoration: none;
}
.rent-placeholder-link:hover, .rent-row-placeholder:hover { text-decoration: underline; }
.rent-key {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	width: fit-content;
	padding: 2px 9px;
	border-radius: 999px;
	font-size: 11px;
	font-weight: 600;
}
.rent-key::before {
	content: "";
	width: 6px;
	height: 6px;
	flex: none;
	border-radius: 50%;
}
.rent-key-fresh { background: var(--ok-soft); color: var(--ok); }
.rent-key-fresh::before { background: var(--ok); }
.rent-key-stale { background: var(--warn-soft); color: var(--warn); }
.rent-key-stale::before { background: var(--warn); }
.rent-key-never { background: var(--danger-soft); color: var(--danger); }
.rent-key-never::before { background: var(--danger); }
.rent-kpis .kpi { min-width: 220px; }
.rent-kpi-danger { background: var(--danger-soft); border-color: var(--danger); }
.rent-kpi-danger .kpi-value { color: var(--danger); }
.rent-kpi-waiting .kpi-value { color: var(--accent); }
.rent-actions { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; }
.rent-matrix-card h2 { margin: 0 0 4px; font-size: 16px; }
.rent-sub { margin: 0 0 14px; font-size: 12.5px; }
.rent-table-scroll { border: 1px solid var(--border); border-radius: var(--radius); }
.rent-grid { min-width: 860px; }
.rent-grid th:first-child { min-width: 270px; }
.rent-grid th.rent-month, .rent-grid td.rent-month { text-align: center; }
.rent-grid td { vertical-align: top; }
.rent-firm-gap td { height: 14px; padding: 0; border: 0; background: var(--bg); }
.rent-firm-band-row td {
	padding: 8px 14px;
	border-top: 3px solid var(--accent);
	background: var(--head-bg);
	font-weight: 600;
}
.rent-firm-band {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 10px;
}
.rent-grow { flex: 1; }
.rent-band-placeholder {
	padding: 3px 10px;
	border: 1px solid var(--border);
	border-radius: 999px;
	background: transparent;
	color: var(--accent);
	box-shadow: none;
	font-size: 11.5px;
}
.rent-band-placeholder:hover { background: var(--accent-soft); }
.rent-inline-form { display: inline; margin: 0 0 0 4px; }
.rent-dialog { width: min(560px, calc(100vw - 32px)); }
.rent-dialog p { margin: 0 0 14px; }
.rent-dialog label { display: block; font-size: 12.5px; font-weight: 600; }
.rent-dialog input { margin-top: 5px; }
.rent-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rent-partner { font-weight: 600; }
.rent-contract-meta { color: var(--muted); font-size: 12px; }
.rent-contract-sum { color: var(--muted); font: 12px var(--font-mono); font-variant-numeric: tabular-nums; }
.rent-price-change { margin-top: 4px; color: var(--warn); font-size: 11.5px; font-weight: 600; }
.rent-alarm .rent-partner { color: var(--danger); }
.rent-alarm-reason {
	display: inline-block;
	margin-top: 4px;
	padding: 3px 8px;
	border-radius: 6px;
	background: var(--danger-soft);
	color: var(--danger);
	font-size: 11.5px;
	font-weight: 600;
}
.rent-stopped td { background: var(--head-bg); color: var(--muted); }
.rent-stopped .rent-partner { text-decoration: line-through; }
.rent-locked td, .rent-empty { color: var(--muted); }
.rent-empty { padding: 22px !important; text-align: center !important; }
.rent-firm-total td {
	border-bottom: 2px solid var(--border);
	background: var(--head-bg);
	font-weight: 600;
}
.rent-firm-total .rent-month { font-variant-numeric: tabular-nums; }
.rent-total-approx { margin-left: 2px; color: var(--muted); font-size: 11px; }
.rent-cell { display: inline-flex; flex-direction: column; align-items: center; gap: 2px; }
.rent-cell small { color: var(--muted); font-size: 10.5px; }
.rent-cell .rent-cell-alert { color: var(--danger); font-weight: 600; }
.rent-cell .rent-cell-dead { color: var(--muted); }
.rent-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 10px;
	border-radius: 999px;
	font-size: 11.5px;
	font-weight: 600;
	white-space: nowrap;
}
.rent-pill::before {
	content: "";
	width: 6px;
	height: 6px;
	flex: none;
	border-radius: 50%;
}
.rent-pill-signed { background: var(--ok-soft); color: var(--ok); }
.rent-pill-signed::before { background: var(--ok); }
.rent-pill-waiting { background: var(--accent-soft); color: var(--accent); }
.rent-pill-waiting::before { background: var(--accent); }
.rent-pill-draft { background: var(--head-bg); color: var(--accent); }
.rent-pill-draft::before { background: var(--accent); }
.rent-pill-reserved { background: var(--warn-soft); color: var(--warn); }
.rent-pill-reserved::before { background: var(--warn); }
.rent-pill-unknown { background: var(--danger-soft); color: var(--danger); }
.rent-pill-unknown::before { background: var(--danger); }
.rent-pill-missing { background: var(--danger-soft); color: var(--danger); }
.rent-pill-missing::before { background: var(--danger); }
.rent-pill-due, .rent-pill-out { background: var(--head-bg); color: var(--muted); font-weight: 500; }
.rent-pill-due::before, .rent-pill-out::before { background: var(--border); }
.rent-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 16px; margin-top: 12px; color: var(--muted); font-size: 12px; }
.rent-legend .rent-pill { font-size: 11px; }
.rent-cell > .rent-pill { text-decoration: none; }
.rent-note {
	margin-top: 14px;
	padding: 10px 14px;
	border-radius: var(--radius-s);
	background: var(--accent-soft);
	font-size: 12.5px;
}
.rent-note b { color: var(--accent); }
@media (max-width: 960px) {
	.rent-firm-tile, .rent-firm-add { flex: 1 1 215px; }
	.rent-kpis .kpi { flex: 1 1 100%; }
}
@media (max-width: 640px) {
	.rent-heading { align-items: flex-start; flex-direction: column; gap: 8px; }
	.rent-actions { align-items: stretch; flex-direction: column; }
	.rent-form-grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.rent-page * { transition: none !important; }
}

/* ---------- Аренда: расчёт и ставки (Волна 66 §2.4–§2.6, Порции 3–4) ---------- */
.content.bare.rent-bare-layout main {
	max-width: 1500px;
	padding: 0 28px 64px;
}
.rent-app-header {
	min-height: 58px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 20px;
	margin: 0 -28px 22px;
	padding: 10px 28px;
	border-bottom: 1px solid var(--border);
	background: var(--surface);
}
.rent-back-link { color: var(--fg); font-size: 15px; font-weight: 600; text-decoration: none; }
.rent-back-link:hover { color: var(--accent); }
.rent-user { display: flex; align-items: center; gap: 14px; color: var(--muted); font-size: 12.5px; }
.rent-user form, .rent-sync-form { margin: 0; }
.rent-user button { min-height: 44px; padding: 7px 14px; }
.rent-toolbar {
	display: grid;
	grid-template-columns: minmax(240px, 1fr) auto minmax(240px, 1fr);
	align-items: center;
	gap: 18px;
	margin-bottom: 18px;
}
.rent-toolbar h1 { margin-bottom: 2px; }
.rent-toolbar p { margin: 0; }
.rent-sync-form { justify-self: end; }
.rent-month-nav { display: flex; align-items: center; gap: 6px; }
.rent-month-nav a, .rent-month-nav-disabled {
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	background: var(--surface);
	color: var(--fg);
	font-size: 24px;
	line-height: 1;
	text-decoration: none;
}
.rent-month-nav a:hover { border-color: var(--accent); color: var(--accent); }
.rent-month-nav-disabled { color: var(--border); cursor: not-allowed; }
.rent-month-nav strong { min-width: 130px; text-align: center; font-size: 15px; }
.rent-firm-tile-active { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-soft); }
.rent-firm-select { display: flex; flex-direction: column; gap: 2px; color: inherit; text-decoration: none; }
.rent-firm-select:hover .rent-firm-name { color: var(--accent); }
.rent-tabs {
	display: flex;
	gap: 4px;
	margin-bottom: 16px;
	border-bottom: 1px solid var(--border);
}
.rent-tabs a {
	min-height: 44px;
	display: inline-flex;
	align-items: center;
	padding: 8px 15px;
	border-bottom: 2px solid transparent;
	color: var(--muted);
	font-weight: 600;
	text-decoration: none;
}
.rent-tabs a:hover { color: var(--fg); }
.rent-tabs a[aria-current="page"] { border-color: var(--accent); color: var(--accent); }
.rent-back-link:focus-visible, .rent-month-nav a:focus-visible,
.rent-firm-select:focus-visible, .rent-tabs a:focus-visible,
.rent-calc-grid a:focus-visible, .rent-attention a:focus-visible {
	outline: 3px solid rgba(58, 91, 217, 0.28);
	outline-offset: 2px;
}
.rent-calc-kpis .kpi { flex: 1 1 260px; min-width: 240px; }
.rent-kpi-money { white-space: nowrap; }
.rent-kpi-money span, .rent-kpi-vat { color: var(--muted); font-size: 13px; font-weight: 500; }
.rent-kpi-attention { border-color: var(--warn); background: var(--warn-soft); }
.rent-kpi-attention .kpi-value { color: var(--warn); }
.rent-rates {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px 10px;
	margin-bottom: 16px;
	padding: 10px 14px;
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	background: var(--surface);
	font-size: 12px;
}
.rent-rates-caption { color: var(--muted); }
.rent-rate { padding: 3px 9px; border-radius: 999px; background: var(--head-bg); }
.rent-rate b { margin-left: 3px; font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.rent-rates a { margin-left: auto; }
.rent-calc-card { padding: 0; overflow: hidden; }
.rent-calc-card .rent-table-scroll { border: 0; border-radius: 0; }
.rent-calc-grid { min-width: 1280px; }
.rent-calc-grid th:first-child { min-width: 245px; }
.rent-calc-grid th:nth-child(2) { min-width: 175px; }
.rent-calc-grid th small { display: block; color: var(--muted); font-weight: 400; }
.rent-calc-grid td { vertical-align: top; }
.rent-number { text-align: right !important; font-family: var(--font-mono); font-variant-numeric: tabular-nums; white-space: nowrap; }
.rent-calc-group { border-left: 2px solid var(--border); }
.rent-activity-select { min-width: 155px; height: 34px; margin: 0; font-size: 12px; }
.rent-activity-form { display: flex; align-items: center; gap: 6px; margin: 0; }
.rent-activity-form select { margin: 0; }
.rent-activity-save { min-height: 34px; padding: 5px 8px; font-size: 11px; }
.rent-calc-grid .rent-row-placeholder { display: inline-flex; margin-top: 4px; }
.rent-calc-grid .rent-pill { color: inherit; text-decoration: none; }
.rent-calc-total td { background: var(--head-bg); font-weight: 600; }
.rent-calc-total td:first-child { text-transform: uppercase; letter-spacing: 0.03em; }
.rent-calc-total span { color: var(--muted); font-weight: 500; text-transform: none; letter-spacing: 0; }
.rent-stopped-list {
	margin: -4px 0 20px;
	padding: 10px 14px;
	border: 1px solid var(--border);
	border-radius: var(--radius-s);
	background: var(--surface);
	color: var(--muted);
}
.rent-stopped-list summary { cursor: pointer; font-weight: 600; }
.rent-stopped-list ul { margin: 10px 0 0; padding-left: 20px; }
.rent-attention { margin-top: 22px; }
.rent-attention h2 { margin: 0 0 10px; font-size: 16px; }
.rent-attention-card { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.rent-attention-row {
	display: grid;
	grid-template-columns: minmax(160px, 0.75fr) minmax(320px, 2fr) minmax(150px, auto);
	align-items: center;
	gap: 16px;
	padding: 12px 15px;
	border-bottom: 1px solid var(--border);
}
.rent-attention-row:last-child { border-bottom: 0; }
.rent-attention-who { font-weight: 600; }
.rent-attention-text small { display: block; margin-top: 2px; color: var(--muted); }
.rent-attention-action {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	justify-self: end;
}
.rent-attention-action .btn-secondary { display: inline-flex; text-decoration: none; }
.rent-attention-action .btn-secondary, .rent-sync-form button { min-height: 44px; }
.rent-attention-action select { width: 190px; height: 36px; margin: 0; font-size: 12px; }
.rent-attention-empty { margin: 0; padding: 18px; color: var(--muted); }
.rent-calc-footnote {
	margin: 16px 0 0;
	padding: 12px 15px;
	border-radius: var(--radius-s);
	background: var(--accent-soft);
	font-size: 12.5px;
}
.rent-calc-empty { color: var(--muted); text-align: center; }
.rent-rates-heading {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 20px;
	margin-bottom: 18px;
}
.rent-rates-heading h1 { margin-bottom: 3px; }
.rent-rates-heading p { max-width: 760px; margin: 0; }
.rent-rates-month { flex: none; padding: 6px 10px; border-radius: 999px; background: var(--head-bg); color: var(--muted); font-size: 12px; }
.rent-rates-forms { display: grid; grid-template-columns: minmax(240px, 0.7fr) minmax(540px, 2fr); gap: 16px; margin-bottom: 18px; }
.rent-rate-form-card h2 { margin: 0 0 12px; font-size: 16px; }
.rent-rate-form-card form { margin: 0; }
.rent-rate-form-card label { font-size: 12.5px; font-weight: 600; }
.rent-rate-form-card input, .rent-rate-form-card select { margin-top: 5px; }
.rent-rate-form-card button { min-height: 44px; margin-top: 12px; }
.rent-add-rate-card form { display: grid; grid-template-columns: 1.5fr 1fr 1fr 0.7fr auto; align-items: end; gap: 10px; }
.rent-add-rate-card button { margin-top: 0; }
.rent-rate-history-card { padding: 0; overflow: hidden; }
.rent-rate-history-card .rent-table-scroll { border: 0; border-radius: 0; }
.rent-rate-history { min-width: 850px; }
.rent-rate-history tbody + tbody tr:first-child td { border-top: 2px solid var(--border); }
.rent-rate-activity-name { font-weight: 600; }
.rent-rate-activity-name span { margin-left: 6px; padding: 2px 7px; border-radius: 999px; background: var(--head-bg); color: var(--muted); font-size: 10.5px; }
.rent-rate-activity-row form { display: inline; margin: 0; }
.rent-rate-history-row td { background: var(--head-bg); }
.rent-rate-archived { color: var(--muted); }

/* ---------- Выставление аренды (Волна 67 §2.3, Порция 2) ---------- */
.rent-issue-button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 30px;
	margin-top: 4px;
	padding: 3px 9px;
	border: 1px dashed var(--accent);
	border-radius: 6px;
	background: var(--accent-soft);
	color: var(--accent);
	font-size: 11.5px;
	font-weight: 600;
	text-decoration: none;
}
.rent-issue-button:hover { filter: brightness(0.97); }
.rent-issue-button-solid { min-height: 44px; margin-top: 0; border-style: solid; }
.rent-issue-release { margin: 2px 0 0; }
.rent-issue-release button {
	min-height: 30px;
	padding: 3px 9px;
	border: 1px solid var(--danger);
	background: var(--surface);
	color: var(--danger);
	box-shadow: none;
	font-size: 11.5px;
}
dialog.confirm-dialog.rent-issue-dialog {
	width: min(780px, calc(100vw - 32px));
	max-width: 780px;
	max-height: calc(100vh - 32px);
	padding: 0;
	overflow: auto;
	background: var(--surface);
	color: var(--fg);
}
.rent-issue-page { width: min(780px, 100%); margin: 28px auto; }
.rent-issue-page > .rent-back-link { display: inline-block; margin-bottom: 12px; }
.rent-issue-page-card {
	overflow: hidden;
	border: 1px solid var(--border);
	border-radius: 14px;
	background: var(--surface);
	box-shadow: 0 12px 36px rgba(26, 33, 44, 0.1);
}
.rent-issue-header {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 16px;
	padding: 16px 20px 13px;
	border-bottom: 1px solid var(--border);
}
.rent-issue-header h2 { margin: 0 0 2px !important; font-size: 18px !important; }
.rent-issue-header p { margin: 0; color: var(--muted); font-size: 13px; }
.rent-issue-close {
	width: 44px;
	height: 44px;
	justify-content: center;
	margin: -8px -10px 0 0;
	padding: 0;
	background: transparent;
	color: var(--muted);
	box-shadow: none;
	font-size: 22px;
}
.rent-issue-body { padding: 14px 20px 0; }
.rent-issue-info {
	display: grid;
	grid-template-columns: 130px 1fr;
	gap: 6px 14px;
	margin: 0 0 14px;
	font-size: 13.5px;
}
.rent-issue-info dt { color: var(--muted); }
.rent-issue-info dd { margin: 0; }
.rent-issue-info small { margin-left: 5px; color: var(--muted); }
.rent-issue-badge {
	display: inline-block;
	margin-left: 6px;
	padding: 1px 7px;
	border-radius: 5px;
	background: var(--head-bg);
	color: var(--muted);
	font-size: 11.5px;
	font-weight: 600;
}
.rent-issue-form {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px 16px;
	margin: 0;
	padding-top: 14px;
	border-top: 1px solid var(--border);
}
.rent-issue-form label { margin: 0; }
.rent-issue-form label > small { font-weight: 400; }
.rent-issue-wide, .rent-issue-hint, .rent-issue-footer { grid-column: 1 / -1; }
.rent-num { font-variant-numeric: tabular-nums; }
.rent-issue-form input.rent-num { text-align: right; }
.rent-issue-sum input { height: 46px; border-color: var(--accent); font-size: 18px; font-weight: 700; }
.rent-issue-hint {
	padding: 8px 12px;
	border-radius: var(--radius-s);
	background: var(--head-bg);
	font-size: 13px;
}
.rent-issue-warning { background: var(--warn-soft); color: var(--warn); }
.rent-issue-codes {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px 16px;
}
.rent-issue-codes input[readonly] {
	background: var(--head-bg);
	color: var(--muted);
	cursor: default;
}
.rent-issue-footer {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 0 -20px;
	padding: 12px 20px 16px;
	border-top: 1px solid var(--border);
}
.rent-issue-footer > span { flex: 1; color: var(--muted); font-size: 12.5px; }
.rent-issue-footer .btn-secondary, .rent-issue-state a, .rent-issue-back a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 40px;
	padding: 8px 14px;
	border-radius: var(--radius-s);
	text-decoration: none;
}
.rent-issue-state { padding: 24px 20px; }
.rent-issue-state p { margin: 0 0 10px; }
.rent-issue-state small { color: var(--muted); }
.rent-issue-state a { background: var(--accent); color: #fff; font-weight: 600; }
.rent-issue-error {
	margin: 14px 20px 0;
	padding: 10px 12px;
	border-radius: var(--radius-s);
	background: var(--danger-soft);
	color: var(--danger);
	font-size: 13px;
}
.rent-issue-back { padding: 0 20px 20px; }
.rent-issue-button:focus-visible, .rent-issue-release button:focus-visible,
.rent-issue-form input:focus-visible, .rent-issue-form select:focus-visible,
.rent-issue-close:focus-visible {
	outline: 3px solid rgba(58, 91, 217, 0.28);
	outline-offset: 2px;
}
@media (max-width: 960px) {
	.content.bare.rent-bare-layout main { padding: 0 14px 48px; }
	.rent-app-header { margin: 0 -14px 18px; padding: 10px 14px; }
	.rent-toolbar { grid-template-columns: 1fr auto; }
	.rent-month-nav { grid-column: 1 / -1; grid-row: 2; justify-self: center; }
	.rent-sync-form { grid-column: 2; grid-row: 1; }
	.rent-attention-row { grid-template-columns: 1fr; gap: 6px; }
	.rent-attention-action { justify-self: start; }
	.rent-rates-forms { grid-template-columns: 1fr; }
	.rent-add-rate-card form { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
	.rent-app-header { align-items: flex-start; }
	.rent-user { align-items: flex-end; flex-direction: column; gap: 4px; }
	.rent-toolbar { grid-template-columns: 1fr; }
	.rent-sync-form, .rent-month-nav { grid-column: 1; grid-row: auto; justify-self: stretch; }
	.rent-sync-form button { width: 100%; min-height: 44px; justify-content: center; }
	.rent-month-nav { justify-content: space-between; }
	.rent-month-nav strong { flex: 1; }
	.rent-tabs a { flex: 1; justify-content: center; }
	.rent-rates a { width: 100%; margin-left: 0; }
	.rent-activity-form { align-items: stretch; flex-direction: column; }
	.rent-activity-save { min-height: 44px; }
	.rent-rates-heading { flex-direction: column; }
	.rent-add-rate-card form { grid-template-columns: 1fr; }
	.rent-rate-form-card button { width: 100%; }
	.rent-issue-page { margin: 14px auto; }
	.rent-issue-info, .rent-issue-form { grid-template-columns: 1fr; }
	.rent-issue-codes { grid-template-columns: 1fr; }
	.rent-issue-info { gap: 2px; }
	.rent-issue-info dd { margin-bottom: 7px; }
	.rent-issue-wide, .rent-issue-hint, .rent-issue-footer { grid-column: 1; }
	.rent-issue-footer { align-items: stretch; flex-direction: column; }
	.rent-issue-footer > span { width: 100%; }
	.rent-issue-footer button, .rent-issue-footer .btn-secondary { width: 100%; min-height: 44px; }
}

/* В68 §4D: ссылки сортировки в заголовках таблиц актов. */
.th-sort {
	color: inherit;
	text-decoration: none;
}
.th-sort-arrow { font-size: 10px; }
.th-sort:hover { color: var(--text); }

/* ---------- Прогресс пакетного выставления СФ (В79 §4.D) ---------- */
.issue-job-overlay {
	position: fixed;
	inset: 0;
	z-index: 1200;
	display: grid;
	place-items: center;
	box-sizing: border-box;
	padding: 24px;
	background: rgba(20, 27, 40, 0.48);
}
.issue-job-dialog {
	box-sizing: border-box;
	width: min(620px, 100%);
	max-height: calc(100vh - 48px);
	overflow: hidden;
	padding: 22px;
	border: 1px solid var(--border);
	border-radius: 14px;
	background: var(--surface);
	box-shadow: 0 18px 55px rgba(20, 27, 40, 0.24);
}
.issue-job-dialog h2 { margin: 0 0 8px; font-size: 21px; }
.issue-job-dialog > p { margin: 7px 0; }
.issue-job-progress { display: block; width: 100%; height: 14px; margin: 14px 0; }
.issue-job-progress-indeterminate { accent-color: var(--accent); }
.issue-job-meta { color: var(--muted); font-size: 12.5px; }
.issue-job-rows {
	max-height: min(42vh, 360px);
	margin: 14px 0;
	padding: 0;
	overflow-y: auto;
	overscroll-behavior: contain;
	list-style: none;
}
.issue-job-row {
	padding: 9px 10px;
	border-bottom: 1px solid var(--border);
	font-size: 13px;
	overflow-wrap: anywhere;
}
.issue-job-row:first-child { border-top: 1px solid var(--border); }
.issue-job-ok { color: var(--ok); }
.issue-job-warn { color: var(--warn); }
.issue-job-error { color: var(--danger); }
.issue-job-stopping { margin: 0; color: var(--warn); font-size: 13px; }
.issue-job-terminal { font-weight: 600; }
.issue-job-summary { font-size: 13px; }
.issue-job-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 12px;
	margin: 16px 0 0;
}
.issue-job-actions .issue-job-stopping { margin-right: auto; }
.issue-job-missing {
	padding: 12px;
	border-radius: var(--radius-s);
	background: var(--warn-soft);
	color: var(--warn);
}
@media (max-width: 390px) {
	.issue-job-overlay { padding: 8px; }
	.issue-job-dialog {
		width: 100%;
		max-width: 100%;
		max-height: calc(100vh - 16px);
		padding: 16px;
	}
	.issue-job-actions { align-items: stretch; flex-direction: column; }
	.issue-job-actions button { width: 100%; min-height: 44px; }
}
