/* =============================================================================
   Sonaura — слой ИКОНОК (носители-контракты).

   ЗАЧЕМ ОТДЕЛЬНЫЙ ФАЙЛ. Правила иконок нужны и там, где полный components.css
   не подключают: кабинет специалиста (cabinet/*) — самостоятельная поверхность,
   он берёт токены, но собственные компоненты. Пока контракт жил в components.css,
   кабинет его не слышал: 29 иконок patient оставались на своих 1.9–2.2, пока весь
   продукт менял вес, а после снятия инлайн-атрибутов и вовсе рендерились дефолтным
   штрихом. Этот слой — минимальный мост «токен → разметка», подключается рядом с
   tokens.css везде, где есть иконки.

   ЗАВИСИМОСТЬ: требует tokens.css (--icon-eff / --icon-eff-xs / --icon-vb).
   Подключать СТРОГО после него.

   КОНТРАКТ. Носитель объявляет ДВЕ величины и только их:
     --icon-px — размер отрисовки в пикселях (число, без единиц)
     --icon-vb — единицы viewBox глифа (24 по умолчанию; 34/36 — мотивы шагов)
   Вес ВЫВОДИТСЯ. Задать его порознь с размером нельзя — именно это расхождение
   дало продукту 13 инлайн-весов и 10 в CSS.
   ============================================================================= */

/* Глиф, объявляющий свой размер прямо на себе: <svg class="gi" style="--icon-px:18">.
   Нужен там, где иконки заданы инлайн-атрибутами и отдельного класса-носителя нет. */
.gi{
  width:calc(var(--icon-px)*1px);
  height:calc(var(--icon-px)*1px);
  stroke-width:calc(var(--icon-eff)*var(--icon-vb)/var(--icon-px));
}

/* Носители ≤14px: свой потолок веса. На 12px глиф со внутренней деталью
   (треугольник-предупреждение с «!») при базовом весе выше 1.5 заплывает —
   знак сливается со стенками. Проверено отрисовкой. */
.gi--xs{
  stroke-width:calc(var(--icon-eff-xs)*var(--icon-vb)/var(--icon-px));
}
