/* ============================================================
   Шрифтовая шкала. Семь ступеней вместо россыпи одиночных
   размеров — каждый элемент берёт ступень, а не своё значение.

   Все ступени целочисленные: дробный кегль (10.5px, 11.5px) на
   Windows попадает между пикселями и даёт замыленный текст —
   в презентации и на скриншоте это видно сразу.
   ============================================================ */

:root {
  --font-ui: "Segoe UI Variable Text", "Segoe UI", Inter, "Helvetica Neue", Arial, sans-serif;
  --font-mono: "Cascadia Mono", ui-monospace, SFMono-Regular, Consolas, monospace;

  /* Ступени */
  --t-2xs: 10px;     /* надзаголовки, статусы — всегда капсом */
  --t-xs:  11px;     /* подписи, мета, вспомогательное */
  --t-sm:  12px;     /* контролы и плотные списки */
  --t-md:  13px;     /* основной текст */
  --t-lg:  15px;     /* заголовки панелей и инспектора */
  --t-xl:  20px;     /* метрики, крупные числа */
  --t-2xl: 28px;     /* заголовок экрана выбора */

  /* Начертания. Пять значений, промежуточных (650, 750, 850) нет:
     на глаз они неразличимы, а в коде создают видимость смысла. */
  --w-regular: 400;
  --w-medium:  500;
  --w-control: 600;
  --w-heading: 700;
  --w-strong:  800;

  /* Межбуквенное */
  --ls-caps:  .09em;
  --ls-tight: -.01em;
}

body {
  font-family: var(--font-ui);
  font-size: var(--t-md);
  line-height: 1.42;
  font-weight: var(--w-regular);
}

button, input, select { font-family: inherit; }
button { font-size: var(--t-sm); font-weight: var(--w-control); line-height: 1; }
b, strong { font-weight: var(--w-heading); }

/* Надзаголовки и микроподписи — единый капс-стиль */
.eyebrow,
.context-btn span,
.brand-copy small,
.launch-selection-meta small,
.metric-card span,
.product-status,
.plan-status {
  font-size: var(--t-2xs);
  font-weight: var(--w-control);
  letter-spacing: var(--ls-caps);
  line-height: 1.3;
}
.eyebrow { margin-bottom: 4px; }

/* Верхняя панель */
.brand-name { font-size: 16px; font-weight: var(--w-heading); letter-spacing: var(--ls-tight); }
.context-btn b { font-size: var(--t-sm); font-weight: var(--w-control); }
#planName { font-size: var(--t-lg); font-weight: var(--w-control); line-height: 1.3; }

/* Заголовки блоков */
.panel-heading h2,
.dialog-head h2,
.structure-heading h2,
.inspect-title {
  font-size: var(--t-lg);
  font-weight: var(--w-heading);
  letter-spacing: var(--ls-tight);
  line-height: 1.25;
}
.launch-intro h1 { font-size: var(--t-2xl); font-weight: var(--w-heading); letter-spacing: -.02em; line-height: 1.14; }
.launch-selection-card h2 { font-size: 21px; font-weight: var(--w-heading); letter-spacing: var(--ls-tight); line-height: 1.2; }
.empty-stage b { font-size: 17px; font-weight: var(--w-heading); }

/* Каталог */
.product-name { font-size: var(--t-sm); font-weight: var(--w-control); }
.product-meta { font-size: var(--t-xs); font-weight: var(--w-regular); }
.catalog-controlbar,
.catalog-controlbar span { font-size: var(--t-xs); }
.catalog-select-mark,
.placed-mark { font-size: var(--t-xs); font-weight: var(--w-heading); }
.counter { font-size: var(--t-xs); font-weight: var(--w-control); }

/* Сцена */
.tool-btn,
.compact-select,
.zoom-value,
.view-meta { font-size: var(--t-xs); font-weight: var(--w-control); }
.tool-btn b { font-size: var(--t-md); font-weight: var(--w-heading); }
.issue-bar { font-size: var(--t-xs); }
.legend-head b { font-size: var(--t-sm); font-weight: var(--w-heading); }
.legend-head small,
.legend-row { font-size: var(--t-2xs); }
.legend-row b { font-weight: var(--w-control); font-variant-numeric: tabular-nums; }
.issue-bar b { font-weight: var(--w-control); }
.rack-label { font-size: 30px; font-weight: var(--w-heading); }
.rack-label small { font-weight: var(--w-medium); }
.item-caption { font-size: 24px; font-weight: var(--w-heading); }
.selection-order { font-size: 30px; font-weight: var(--w-heading); }

/* Инспектор и аналитика */
.inspect-sub,
.property-grid,
.control-row,
.selected-row,
.layout-actions button { font-size: var(--t-xs); }
.property-grid b,
.control-row b { font-weight: var(--w-control); }
.metric-card b { font-size: var(--t-xl); font-weight: var(--w-heading); line-height: 1.15; }
.share { font-size: var(--t-2xs); font-weight: var(--w-regular); }
.share b { font-weight: var(--w-control); }
.number-input,
.stepper b { font-size: var(--t-sm); font-weight: var(--w-control); }

/* Дерево торговых точек */
.tree-store-copy b,
.tree-category b,
.launch-selection-meta b { font-size: var(--t-sm); font-weight: var(--w-control); }
.tree-store-copy small,
.tree-count { font-size: var(--t-2xs); font-weight: var(--w-medium); }
.tree-store-icon { font-size: var(--t-2xs); font-weight: var(--w-heading); }
.selection-card-icon { font-size: var(--t-sm); font-weight: var(--w-heading); }

/* Диалоги */
.business-form label > span { font-size: var(--t-xs); font-weight: var(--w-control); }
.mapping-group,
.mapping-summary,
.sync-row,
.version-row,
.issue,
.template-intro,
.section-placement span { font-size: var(--t-xs); }
.mapping-group small,
.version-row small,
.section-insert-context { font-size: var(--t-2xs); font-weight: var(--w-regular); }
.section-template-grid button b { font-size: var(--t-lg); }
.section-template-grid button small { font-size: var(--t-2xs); font-weight: var(--w-medium); }
.sync-summary { font-size: var(--t-2xs); font-weight: var(--w-control); letter-spacing: var(--ls-caps); }
.sync-summary b { font-size: var(--t-xl); letter-spacing: 0; }
.version-row b { font-size: var(--t-sm); font-weight: var(--w-control); }

.toast { font-size: var(--t-sm); font-weight: var(--w-control); }
kbd { font-size: var(--t-2xs); font-weight: var(--w-control); }

@media (max-width: 760px) {
  :root { --t-2xl: 23px; --t-xl: 18px; --t-lg: 14px; }
}
