diff --git a/apps/catalog/src/CatalogApp.tsx b/apps/catalog/src/CatalogApp.tsx
index bf60aa8..e57ee98 100644
--- a/apps/catalog/src/CatalogApp.tsx
+++ b/apps/catalog/src/CatalogApp.tsx
@@ -1423,6 +1423,7 @@ export function CatalogApp() {
diff --git a/docs/OPERATIONAL_TYPOGRAPHY.md b/docs/OPERATIONAL_TYPOGRAPHY.md
new file mode 100644
index 0000000..ac87da6
--- /dev/null
+++ b/docs/OPERATIONAL_TYPOGRAPHY.md
@@ -0,0 +1,22 @@
+# Компактная операционная типографика
+
+Уточнение владельца 06.09.2026 для Mission Core / Node, обязательное для
+общих компонентов NODE.DC. Повторяющиеся сообщения и подписи не оформляются
+крупными заголовками. Этот документ зарегистрирован в registry/registry.json.
+
+- Заголовок страницы или окна: только предусмотренный шаблоном title-токен.
+- Заголовок секции, SettingsCard, короткое сообщение пустого списка: md
+ (0.8125rem / 13 px при стандартном корневом размере), без увеличения через h2.
+- Описание, пояснение, сведения о состоянии: sm (0.75rem / 12 px).
+- Технические метаданные: xs либо типографика ResourceRow.
+- Browser-default h1–h6/p/strong и локальные крупные размеры запрещены.
+- Размер не умножается из-за вложенности карточек, ошибки или отсутствия данных.
+
+SettingsCard и nodedc-empty-state закрепляют эти размеры в ui-core. Текст
+«Устройства не обнаружены» не является заголовком нового раздела. В живом
+каталоге рядом со строками ресурсов есть пример пустого списка.
+
+В завершённом этапе настройки окружения status-слот ResourceRow содержит
+только Icon check с доступным названием. Галочка не оборачивается в StatusBadge,
+Checker, круг, pill или кнопку. Это знак результата, а не интерактивный контрол.
+Лампочка состояния устройства отдельно использует StatusBadge indicator.
diff --git a/packages/ui-core/styles.css b/packages/ui-core/styles.css
index 06c7788..55b9d47 100644
--- a/packages/ui-core/styles.css
+++ b/packages/ui-core/styles.css
@@ -585,13 +585,13 @@ textarea.nodedc-field__control {
.nodedc-settings-card__titles h2 {
color: var(--nodedc-text-primary);
- font-size: 1rem;
+ font-size: var(--nodedc-font-size-md);
line-height: 1.25;
}
.nodedc-settings-card__titles p {
color: var(--nodedc-text-muted);
- font-size: 0.75rem;
+ font-size: var(--nodedc-font-size-sm);
line-height: 1.4;
}
@@ -3569,6 +3569,7 @@ textarea.nodedc-field__control {
}
.nodedc-empty-state {
+ font-size: var(--nodedc-font-size-sm);
display: grid;
min-height: 12rem;
place-items: center;
@@ -3580,7 +3581,7 @@ textarea.nodedc-field__control {
.nodedc-empty-state strong {
color: var(--nodedc-text-primary);
- font-size: var(--nodedc-font-size-lg);
+ font-size: var(--nodedc-font-size-md);
}
@media (max-width: 1100px) {
diff --git a/registry/components.json b/registry/components.json
index 476d6df..2d512a1 100644
--- a/registry/components.json
+++ b/registry/components.json
@@ -441,6 +441,7 @@
"summary": "Neutral administration group with title metadata, actions, content and a compact binary switch.",
"rules": [
"The card owns grouping geometry but not product form schemas.",
+ "Section and empty-state titles use the compact md token; descriptions use sm. Page/window title sizes and browser heading defaults are forbidden inside cards.",
"Use Switch for compact visibility/enable states; use Checker for the Engine inspector treatment."
]
},
diff --git a/registry/registry.json b/registry/registry.json
index 9fd1c6d..b7d7cdd 100644
--- a/registry/registry.json
+++ b/registry/registry.json
@@ -44,6 +44,7 @@
"architecture": "../docs/ARCHITECTURE.md",
"components": "../docs/COMPONENTS.md",
"theming": "../docs/THEMING.md",
+ "operationalTypography": "../docs/OPERATIONAL_TYPOGRAPHY.md",
"windows": "../docs/WINDOWS_AND_LAYERS.md",
"baseline": "../docs/SOURCE_BASELINE.md",
"governance": "../docs/GOVERNANCE.md",