/* ============================================================================
   Relevanto — единая система кнопок, снятая с linear.app рендером.
   ----------------------------------------------------------------------------
   ЗАЧЕМ ОТДЕЛЬНЫМ ФАЙЛОМ, А НЕ ПРАВКОЙ 13 ИСХОДНИКОВ
   Кнопки в сервисе разошлись на 14 семейств (.btn, .lk-tool .button, .bill-btn,
   .cc-btn, .gm-vbtn, .tz-export__btn, .sc-export__btn, .op-export__btn, .tf-btn,
   .tr-btn, .rv-cl__btn, .tab-button, .thm, *-fs-toggle; с 03.09.2026 ещё
   .ml-toggle, .ml-copy, .ml-tb-add, .ml-st-head__*, .wl-btn, .tz-copy-inline)
   с четырьмя радиусами
   (6/8/9/12px) и тремя главными цветами. Один слой поверх — единственный способ
   держать их в одном виде дальше: новая кнопка попадает в систему, дописав свой
   селектор сюда, а не скопировав чужие значения в свой файл.

   ⚠ ПОЧЕМУ У КАЖДОГО ПРАВИЛА ПРЕФИКС html
   CSS инструментов подключается НЕ в <head>, а внутри страницы, то есть ПОСЛЕ
   этого файла, и часть селекторов там с id: `#tz-calc .tz-export__btn` (1,1,0),
   а в светлой теме `[data-theme="light"] #semantic-calc .tabs .tab-button`
   (1,3,0). Выиграть порядком загрузки нельзя — только специфичностью. `html`
   добавляет ровно один элемент и ставит наши правила на (1,3,1) там, где нужно.
   Ровно один: перестрелять авторские стили сильнее, чем требуется, — уже была
   ошибка 13.08 на полях ввода, когда своя редакция залила прозрачные поля.

   ИСТОЧНИК ЗНАЧЕНИЙ — не на глаз, а computed-стили linear.app (13.08.2026):
     invert    bg #E5E5E6 → hover #FFFFFF, ink #08090A
     secondary bg rgba(255,255,255,.05) → hover #191A1B, ink #F7F8F8
     форма     border-radius 9999px (пилюля) — у нас заменена, см. ниже
     размеры   32 / 44px высоты, шрифт 13 / 16px, вес 510, padding 0 12 / 0 20
     переход   .16s cubic-bezier(.25,.46,.45,.94)
     тени      четырёхслойные, разные у invert и secondary

   РЕШЕНИЕ ВЛАДЕЛЬЦА 15.08.2026: главная кнопка — invert, как у референса.
   Это отмена решения от 13.08, когда была выбрана indigo #5E6AD2. Причина
   отмены: рядом с референсом расходился ровно один параметр — заливка, и
   из-за неё пара кнопок читалась как чужая. Индиго остаётся в теме на
   ссылках, чипах, подсветке и кольце фокуса, то есть цвет бренда со
   страницы не ушёл — ушла цветная кнопка.
   Форма — пилюля везде, на лендинге и в кабинете одинаково.
   ========================================================================== */

html{
  /* Форма — прямоугольник со скруглением 8px, как у полей и карточек рядом
     (владелец, 06.09.2026). Отмена пилюли от 15.08.2026: дизайнер на ревью
     показал, что скругления в сервисе везде мелкие, и кнопки-пилюли были
     единственным, что выбивалось из ряда. Радиус берут ВСЕ кнопки сервиса
     через эту переменную — правка одной строки меняет форму везде. */
  --rvb-r:8px;
  --rvb-ease:.16s cubic-bezier(.25,.46,.45,.94);

  /* Главная — invert: не свой цвет, а обратный фону страницы. Отсюда и имя
     варианта у референса. В тёмной теме это светлая кнопка с тёмной
     надписью, в светлой — наоборот; правило вёрстки одно, меняются токены. */
  --rvb-pri-bg:#E5E5E6;
  /* Заливка главной кнопки. В светлой теме макет (Frame 36) даёт вертикальный
     градиент от #666 к чёрному и внутренний блик сверху — плоская заливка
     рядом с ним читается как выключенная кнопка. */
  --rvb-pri-fill:var(--rvb-pri-bg);
  --rvb-pri-gloss:none;
  --rvb-pri-bg-h:#FFFFFF;
  --rvb-pri-ink:#08090A;
  /* Тень снята с invert-кнопки Linear: пять слоёв, каждый почти прозрачен.
     Вместе дают не «свечение», а ощущение, что кнопка лежит НА поверхности. */
  --rvb-pri-sh:0 8px 2px rgba(0,0,0,0), 0 5px 2px rgba(0,0,0,.01),
               0 3px 2px rgba(0,0,0,.04), 0 1px 1px rgba(0,0,0,.07),
               0 0 1px rgba(0,0,0,.08);

  /* Вторичная. Фон прозрачный, форму держит одна тонкая рамка — так же,
     как у «Перейти на платный» в боковом меню (макет, Frame 36). Заливки
     нет намеренно: рядом с чёрной главной кнопкой серая плашка читалась
     как вторая главная (владелец, 06.09.2026). */
  --rvb-sec-bg:transparent;
  --rvb-sec-bg-h:rgba(255,255,255,.06);
  --rvb-sec-ink:#F7F8F8;
  --rvb-sec-sh:inset 0 0 0 1px rgba(255,255,255,.14);

  --rvb-ghost-ink:#8A8F98;
  --rvb-danger-bg:#D6455B;
  --rvb-danger-bg-h:#E15468;
  --rvb-focus:#5E6AD2;
}

/* Светлая тема: меняются только токены, ни одно правило вёрстки ниже не
   дублируется — тот же приём, что уже принят в app.css. */
html[data-theme="light"]{
  /* Invert наоборот: на белой странице главная кнопка почти чёрная. */
  --rvb-pri-bg:#08090A;
  --rvb-pri-bg-h:#282A30;
  --rvb-pri-ink:#FFFFFF;
  --rvb-pri-fill:linear-gradient(180deg,#666666 0%,#000000 100%);
  --rvb-pri-gloss:inset 0 2px 0 rgba(255,255,255,.2);
  /* Прозрачная с рамкой #D9D9D9 — цвет рамок карточек и полей в макете. */
  --rvb-sec-bg:transparent;
  --rvb-sec-bg-h:rgba(0,0,0,.04);
  --rvb-sec-ink:#000000;
  --rvb-sec-sh:inset 0 0 0 1px #D9D9D9, 0 1px 0 rgba(0,0,0,.05);
  --rvb-ghost-ink:#6B7078;
  --rvb-danger-bg:#C0392F;
  --rvb-danger-bg-h:#D6455B;
}

/* ---------------------------------------------------------------------------
   1. ОБЩАЯ ГЕОМЕТРИЯ — всё, что не зависит от варианта и от семейства.
   ⚠ min-height, а не height: семейства разнородны, внутри встречаются иконка
   со строкой в две строки и <label> с полем выбора файла. Фиксированная высота
   их обрезала бы; min-height держит общий рост и уступает содержимому.
   ------------------------------------------------------------------------- */
html .btn,
html .lk-tool .button,
html .lk-tool .tab-button,
html .bill-btn,
html #cc-calc .cc-btn,
html #gm-calc .gm-vbtn,
html #tz-calc .tz-export__btn,
html #struct-calc .sc-export__btn,
html .op-export__btn,
html .rv-sal .rv-sal__btn,
html .tf-btn,
html .tr-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  box-sizing:border-box;
  min-height:36px;
  padding:0 16px;
  border:none;
  border-radius:var(--rvb-r);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:14px;
  font-weight:510;
  line-height:1.2;
  letter-spacing:normal;
  text-decoration:none;
  white-space:nowrap;
  cursor:pointer;
  transition:background-color var(--rvb-ease), color var(--rvb-ease),
             box-shadow var(--rvb-ease), opacity var(--rvb-ease);
}

/* Клавиатура. Кольцо снаружи пилюли, иначе на круглой форме оно срезается. */
html .btn:focus-visible,
html .lk-tool .button:focus-visible,
html .bill-btn:focus-visible,
html #cc-calc .cc-btn:focus-visible,
html #gm-calc .gm-vbtn:focus-visible,
html #tz-calc .tz-export__btn:focus-visible,
html #struct-calc .sc-export__btn:focus-visible,
html .op-export__btn:focus-visible,
html .tf-btn:focus-visible,
html .tr-btn:focus-visible,
html .thm:focus-visible,
html .rv-cl__btn:focus-visible{
  outline:2px solid var(--rvb-focus);
  outline-offset:2px;
}

html .btn:disabled,
html .lk-tool .button:disabled,
html .bill-btn:disabled,
html .tf-btn[disabled],
html .tr-btn[disabled],
html #tz-calc .tz-export__btn:disabled,
html #struct-calc .sc-export__btn:disabled{
  opacity:.5;
  cursor:not-allowed;
}

/* ---------------------------------------------------------------------------
   2. РАЗМЕРЫ. Три ступени Linear: 32 / 36 / 44.
   ------------------------------------------------------------------------- */
html .btn--sm,
html .tr-btn,
html #gm-calc .gm-vbtn,
html #tz-calc .tz-export__btn,
html #struct-calc .sc-export__btn,
html .bill-btn{
  min-height:32px;
  padding:0 12px;
  font-size:13px;
}

html .btn--lg{
  min-height:44px;
  padding:0 20px;
  font-size:16px;
  gap:6px;
}

/* Пресеты дат в трекере стоят плотным рядом под полем — там своя, четвёртая
   ступень; общий размер разложил бы ряд на две строки. */
html .tr-days__presets .tr-btn{
  min-height:28px;
  padding:0 10px;
  font-size:12px;
}

html .btn--block{width:100%}

/* ---------------------------------------------------------------------------
   3. ВАРИАНТ «ГЛАВНАЯ» — invert.
   ------------------------------------------------------------------------- */
/* ⚠ У кнопок выгрузки ТЗ класс модификатора удвоен: .tz-export__btn.tz-export__btn--main.
   Иначе (1,1,1) модификатора равно (1,1,1) базы из раздела 4, а база записана
   НИЖЕ и при равенстве выигрывает — главная кнопка выгрузки выходила серой.
   Поймано рендером, кодом это не видно. Порядок разделов менять нельзя:
   на нём же стоит .bill-btn--ghost, который обязан перебивать .bill-btn. */
html .btn--pri,
html .lk-tool .button.black,
html .bill-btn,
html #tz-calc .tz-export__btn.tz-export__btn--main,
html #tz-calc .tz-export__btn.tz-export__btn--accent,
html[data-theme="light"] #tz-calc .tz-export__btn.tz-export__btn--main,
html[data-theme="light"] #tz-calc .tz-export__btn.tz-export__btn--accent{
  background:var(--rvb-pri-fill);
  color:var(--rvb-pri-ink);
  border:none;
  box-shadow:var(--rvb-pri-gloss), var(--rvb-pri-sh);
}
html .btn--pri:hover,
html .lk-tool .button.black:hover,
html .bill-btn:hover,
html #tz-calc .tz-export__btn.tz-export__btn--main:hover,
html #tz-calc .tz-export__btn.tz-export__btn--accent:hover,
html[data-theme="light"] #tz-calc .tz-export__btn.tz-export__btn--main:hover,
html[data-theme="light"] #tz-calc .tz-export__btn.tz-export__btn--accent:hover{
  background:var(--rvb-pri-bg-h);
  color:var(--rvb-pri-ink);
}
/* Единственное, что осталось от прежнего правила: главная кнопка инструмента
   прижата влево в колоночной форме. Геометрия своя, раскладка чужая. */
html .lk-tool .button.black{align-self:flex-start;
  /* Размеры главной кнопки по макету (Frame 36): 56px высоты, отступы 8/32. */
  min-height:56px; padding:8px 32px; font-size:16px; font-weight:510}

/* Кнопка, стоящая в одном ряду с главной, повторяет её рост и отступы.
   Иначе получается лесенка: «Проверить» 56px рядом с «Очистить» 36px
   (следы ИИ, микроразметка). Вкладки в счёт не идут — у них свой ряд.
   Второй селектор нужен на случай, когда вторичная кнопка записана в
   разметке ПЕРЕД главной: соседство в CSS односторонее. */
html .lk-tool .button.black ~ .button:not(.tab-button),
html .lk-tool .button:not(.black):not(.tab-button):has(~ .button.black){
  min-height:56px; padding:8px 32px; font-size:16px; font-weight:510;
}

/* ---------------------------------------------------------------------------
   4. ВАРИАНТ «ВТОРИЧНАЯ» — основная масса кнопок сервиса.
   Светлая тема перечислена отдельно: в light.css эти же селекторы записаны
   как [data-theme="light"] #id .class (1,2,0), и без префикса html наши
   правила проиграли бы им, оставив белый фон и радиус 12px.
   ------------------------------------------------------------------------- */
html .btn--sec,
html .lk-tool .button,
html .lk-tool .tab-button,
html .bill-btn--ghost,
html #cc-calc .cc-btn,
html #gm-calc .gm-vbtn,
html #tz-calc .tz-export__btn,
html #struct-calc .sc-export__btn,
html .op-export__btn,
html .rv-sal .rv-sal__btn,
html .tf-btn,
html .tr-btn,
html[data-theme="light"] #cc-calc .cc-btn,
html[data-theme="light"] #gm-calc .gm-vbtn,
html[data-theme="light"] #tz-calc .tz-export__btn,
html[data-theme="light"] #struct-calc .sc-export__btn,
html[data-theme="light"] #semantic-calc .tabs .tab-button{
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  border:none;
  border-radius:var(--rvb-r);
  box-shadow:var(--rvb-sec-sh);
}
html .btn--sec:hover,
html .lk-tool .button:hover,
html .lk-tool .tab-button:hover,
html .bill-btn--ghost:hover,
html #cc-calc .cc-btn:hover,
html #gm-calc .gm-vbtn:hover,
html #tz-calc .tz-export__btn:hover,
html #struct-calc .sc-export__btn:hover,
html .op-export__btn:hover,
html .rv-sal .rv-sal__btn:hover,
html .tf-btn:hover,
html .tr-btn:hover,
html[data-theme="light"] #cc-calc .cc-btn:hover,
html[data-theme="light"] #gm-calc .gm-vbtn:hover,
html[data-theme="light"] #tz-calc .tz-export__btn:hover,
html[data-theme="light"] #struct-calc .sc-export__btn:hover{
  background:var(--rvb-sec-bg-h);
  color:var(--rvb-sec-ink);
  border-color:transparent;
}

/* Шрифт кнопки выбора типа значения в микроразметке был Unbounded serif —
   единственное место в сервисе, где кнопка набрана не Inter. */
html #gm-calc .gm-vbtn{
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:12px;
}

/* Активная вкладка: заливка индиго-подложкой остаётся — это состояние, а не
   вариант кнопки, и цветом оно читается быстрее, чем формой.

   ⚠ 21.08.2026 селектор семантики переставлен из тёмной группы в светлую.
   Он был записан рядом с color:#fff, а из-за id (#semantic-calc) перебивал
   светлое правило ниже — в светлой теме активная вкладка выходила белым по
   белому, контраст 1.04. Ловится только рендером: в коде обе строки выглядят
   осмысленно. Держать в одной группе селекторы разных тем нельзя. */
html .lk-tool .tab-button.active{
  background:var(--indigo-tint);
  color:var(--text);
  box-shadow:inset 0 0 0 1px var(--indigo-bd);
}
html[data-theme="light"] .lk-tool .tab-button.active,
html[data-theme="light"] #semantic-calc .tabs .tab-button.active{
  background:var(--indigo-tint);
  color:var(--indigo-ink);
  box-shadow:inset 0 0 0 1px var(--indigo-bd);
}

/* ---------------------------------------------------------------------------
   5. ПРИЗРАЧНАЯ И ОПАСНАЯ.
   ------------------------------------------------------------------------- */
html .lk-tool .button--gray,
html #gm-calc .button--gray,
html[data-theme="light"] #gm-calc .button--gray{
  background:transparent;
  color:var(--rvb-ghost-ink);
  box-shadow:none;
}
html .lk-tool .button--gray:hover,
html #gm-calc .button--gray:hover,
html[data-theme="light"] #gm-calc .button--gray:hover{
  /* Не --rvb-sec-bg: с 06.09.2026 он прозрачный, и наведение было бы немым. */
  background:var(--rvb-sec-bg-h);
  color:var(--rvb-sec-ink);
  box-shadow:none;
}

html .bill-btn--danger{
  background:var(--rvb-danger-bg);
  color:#fff;
  box-shadow:var(--rvb-pri-sh);
}
html .bill-btn--danger:hover{background:var(--rvb-danger-bg-h);color:#fff}

/* ---------------------------------------------------------------------------
   6. ИКОНОЧНЫЕ КНОПКИ. При пилюле квадрат со стороной N — это круг, поэтому
   отдельного радиуса им не нужно, нужен только равный размер сторон.
   ------------------------------------------------------------------------- */
html .thm,
html .rv-cl__btn,
html .lk-tool [class*="-fs-toggle"]{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  cursor:pointer;
  transition:background-color var(--rvb-ease), color var(--rvb-ease),
             box-shadow var(--rvb-ease);
}
html .thm{width:32px;height:32px;flex:none}
html .rv-cl__btn{width:34px;height:34px}
html .thm:hover,
html .rv-cl__btn:hover:not(:disabled),
html .lk-tool [class*="-fs-toggle"]:hover{
  background:var(--rvb-sec-bg-h);
  color:var(--rvb-sec-ink);
}
html .rv-cl__btn:disabled{opacity:.35;cursor:default}

/* Переключатель полноэкранного режима лежит поверх карточки инструмента и
   остаётся текстовым — ему нужен размер, а не квадрат. */
html .lk-tool [class*="-fs-toggle"]{
  min-height:28px;
  padding:0 12px;
  font-size:12px;
  font-weight:510;
}

/* ---------------------------------------------------------------------------
   7. ВТОРАЯ ВОЛНА — кнопки, у которых в имени класса нет ни btn, ни button.
   ⚠ Их не нашёл разбор по именам классов: они называются -del, -x, __remove,
   __add, -speed, -chip, __run. Нашёл сплошной обход рендером всех 17 страниц
   в двух темах. Отсюда правило на будущее: список кнопок снимается со
   страницы, а не из grep по CSS.
   ------------------------------------------------------------------------- */

/* Демо-сборка на главной — «Собрать ТЗ», единственный призыв лендинга.
   ⚠ Разметку рисует JS, в landing.html её нет: поиском по файлу эта кнопка
   не находится вообще, только рендером. */
html .app__run{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  /* 56px и отступы 8/32 — размеры главной кнопки из макета (Frame 36). */
  min-height:56px;
  padding:8px 32px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-pri-fill);
  color:var(--rvb-pri-ink);
  font-size:16px;
  font-weight:510;
  box-shadow:var(--rvb-pri-gloss), var(--rvb-pri-sh);
  transition:background-color var(--rvb-ease), box-shadow var(--rvb-ease);
}
html .app__run:hover:not([disabled]){background:var(--rvb-pri-bg-h)}

/* Вкладки семантики. Свой радиус 8px записан как #semantic-calc .tabs
   .tab-button (1,2,0) и перебивал общее правило раздела 4. */
html #semantic-calc .tabs .tab-button,
html[data-theme="light"] #semantic-calc .tabs .tab-button{
  border:none;
  border-radius:var(--rvb-r);
  min-height:36px;
  padding:0 16px;
}

/* «Удалить» и «Открыть» в истории работ; .hs-open — ссылка, не кнопка,
   но выглядит и стоит рядом как кнопка, поэтому идёт в ту же систему. */
html .hs-del,
html .hs-open{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:32px;
  padding:0 12px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-size:13px;
  font-weight:510;
  line-height:1.2;
  text-decoration:none;
  transition:background-color var(--rvb-ease), color var(--rvb-ease);
}
html .hs-open:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}
/* Удаление остаётся отличимым от открытия: красным на наведении, а не всегда —
   иначе строка истории читается как предупреждение. */
html .hs-del:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-danger-bg-h)}

/* Крестик в списке проектов трекера — иконочная, значит круг. */
html .trl-x{
  width:28px;height:28px;padding:0;
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
}
html .trl-x:hover{background:var(--rvb-sec-bg-h)}

/* Микроразметка: «× убрать тип» и «+ Добавить». У второй пунктир сохранён —
   он говорит «добавится новое», это смысл, а не оформление. */
html #gm-calc .gm-card__remove{
  min-height:28px;padding:0 12px;
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;font-size:12px;font-weight:510;
}
html #gm-calc .gm-card__remove:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}
html #gm-calc .gm-repeat__add{
  min-height:32px;padding:0 14px;
  border:1px dashed rgba(138,143,152,.55);
  border-radius:var(--rvb-r);
  background:transparent;color:var(--rvb-ghost-ink);
  box-shadow:none;
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;font-size:13px;font-weight:510;
}
html #gm-calc .gm-repeat__add:hover{
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  border-color:rgba(138,143,152,.85);
}

/* Чип-переключатель в семантике: радиус 16px при высоте 34 — почти пилюля,
   но «почти» и есть та самая неясная форма. */
html #semantic-calc .rz-chip{
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;font-size:12px;font-weight:510;
}
html #semantic-calc .rz-chip:hover{background:var(--rvb-sec-bg-h)}

/* ---------------------------------------------------------------------------
   КНОПКИ ВНУТРИ ОТЧЁТА — одна ступень 32px / 13px (владелец, 13.09.2026).
   Меньше кнопок формы (56px), но одинаковые между собой: в блоке дописывания
   «Пересчитать» была 28px, «Загрузить файл» — своя метка с рамкой на 34px, у
   брифа и выгрузки 36px. Главная остаётся главной цветом, не ростом.
   Управление строкой заголовка (H2/H3, «изменить», «убрать») остаётся 28px:
   оно внутри строки таблицы, а не в ряду действий.
   ------------------------------------------------------------------------- */
html .ml-cl-add .ml-cl-add__file,
html #struct-calc .sc-copy{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  box-sizing:border-box;width:auto;
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;font-weight:510;line-height:1.2;
  cursor:pointer;
  transition:background-color var(--rvb-ease), color var(--rvb-ease), box-shadow var(--rvb-ease);
}
html .ml-cl-add .ml-cl-add__file:hover,
html #struct-calc .sc-copy:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}
html .ml-cl-add .ml-cl-add__file,
html #struct-calc .sc-copy,
html #tz-calc .tz-export__btn,
html #struct-calc .sc-export__btn,
html .op-export__btn,
html .rv-sal .rv-sal__btn,
html #semantic-calc .rz-chip,
html .lk-tool .button.mc-copy,
html .lk-tool .button.mc-regen{
  min-height:32px;padding:0 14px;font-size:13px;
}
/* Ряды действий отчёта: зазор даёт ряд, а не отступы самих кнопок. У .ml-copy
   был margin-top 8px, и в «Заголовках содержания» ряд шёл лесенкой. */
html .ml-st-actions > *,
html .ml-cl-actions > *,
html .ml-cl-add__bar > *,
html #tz-calc .tz-brief__actions > *{
  margin:0;flex:0 0 auto;
}
html .ml-st-actions > button,
html .ml-cl-actions > button,
html .ml-cl-add__bar > button{width:auto}

/* Светлая тема второй волны. Отдельным блоком, потому что в light.css эти
   кнопки записаны как [data-theme="light"] #gm-calc .gm-repeat__add (1,2,0) —
   на 9 единиц выше наших (1,1,1), и без этого блока в светлой теме остались бы
   прежние 8, 10 и 16 пикселей. Поймано вторым обходом: в тёмной теме всё
   выглядело сделанным. */
html[data-theme="light"] #gm-calc .gm-card__remove{
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
}
html[data-theme="light"] #gm-calc .gm-card__remove:hover{
  background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink);
}
html[data-theme="light"] #gm-calc .gm-repeat__add{
  border:1px dashed rgba(107,112,120,.5);
  border-radius:var(--rvb-r);
  background:transparent;color:var(--rvb-ghost-ink);
}
html[data-theme="light"] #gm-calc .gm-repeat__add:hover{
  border-color:rgba(107,112,120,.8);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
}
html[data-theme="light"] #semantic-calc .rz-chip,
html[data-theme="light"] #tz-calc .tz-fs-toggle{
  border:none;border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
}
html[data-theme="light"] #semantic-calc .rz-chip:hover,
html[data-theme="light"] #tz-calc .tz-fs-toggle:hover{
  background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink);
}

/* ---------------------------------------------------------------------------
   8. ТРЕТЬЯ ВОЛНА (03.09.2026) — кнопки переноса лаборатории метатегов и
   предпроверки топа: таблицы слов, кластер, конструктор заголовка, редактор
   плана статьи, ссылка на проверку текста. Пришли из meta-lab.css со своими
   6px и рамками. Список снят рендером трёх страниц (форма и отчёт) в двух
   темах, а не grep по CSS - см. правило раздела 7.

   Главная кнопка формы ТЗ и on-page «Показать топ и выбрать страницы»
   (#rvp-look) отдельного правила здесь не имеет: она несёт .button.black.
   Своё правило по id из precheck.css снято 03.09.2026 - id перебивал систему,
   и главная кнопка страницы стояла с рамкой и радиусом 9px.
   ------------------------------------------------------------------------- */

/* Малые вторичные: переключатели таблиц и вкладок конструктора, «скопировать»,
   «изменить» и «убрать» в плане, H2/H3. Ступень 28px, как у -fs-toggle. */
html .ml-toggle,
html .ml-copy,
html .ml-st-head__edit,
html .ml-st-head__del,
html .ml-st-head__lvl{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  box-sizing:border-box;
  min-height:32px;
  padding:0 14px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:13px;
  font-weight:510;
  line-height:1.2;
  cursor:pointer;
  transition:background-color var(--rvb-ease), color var(--rvb-ease),
             box-shadow var(--rvb-ease);
}
html .ml-toggle:hover,
html .ml-copy:hover,
html .ml-st-head__edit:hover,
html .ml-st-head__lvl:hover{
  background:var(--rvb-sec-bg-h);
  color:var(--rvb-sec-ink);
}
/* «Обновить содержание» - главное действие ряда, но ряд малый: рядом с ним
   стоят «+ Добавить заголовок» и «Копировать» по 28px. Без этого правила
   кнопка берёт геометрию главной кнопки формы (56px, шрифт 16) и ряд читается
   лесенкой - владелец увидел это в разборе 08.09.2026. Цвет остаётся главным:
   расходились размеры, а не смысл. */
html .lk-tool .button.black.ml-btn,
html .button.black.ml-btn{
  min-height:32px;
  padding:0 14px;
  font-size:13px;
  font-weight:510;
}

/* Управление строкой плана остаётся на 28px: оно внутри строки, не в ряду. */
html .ml-st-head__edit,
html .ml-st-head__del,
html .ml-st-head__lvl{min-height:28px;padding:0 12px;font-size:12px}
/* Метка уровня в плане: короткая, ширина под «H2»/«H3». */
html .ml-st-head__lvl{width:auto;min-width:38px;padding:0 8px;font-size:11px}
/* Состояния остаются цветом, не формой: включённая вкладка - индиго-подложка
   с кольцом вместо рамки, «убрать» краснеет на наведении, подсказка уровня при
   переносе - индиго. */
html .ml-tb-tabs .ml-toggle.is-on{
  background:var(--indigo-tint);
  color:var(--text-hi);
  box-shadow:inset 0 0 0 1px var(--indigo-bd);
}
html .ml-st-head__del{color:var(--rvb-ghost-ink)}
html .ml-st-head__del:hover{color:var(--rvb-danger-bg-h); box-shadow:inset 0 0 0 1px var(--rvb-danger-bg-h)}
html .ml-st-head.is-over-h3 .ml-st-head__lvl{
  color:var(--indigo-ink);
  box-shadow:inset 0 0 0 1px var(--indigo);
}

/* Слова-плашки конструктора: щелчок ставит слово в черновик, плашку можно
   тащить. Форма - пилюля, цвет остаётся смысловым: красная - слова нет в
   черновике, зелёная - слово стоит далеко, индиго - выбранная форма слова.
   Рамка заменена кольцом: у пилюли без границы иначе пропадает контур. */
html .ml-tb-add,
html .ml-tb-form{
  display:inline-flex;
  align-items:center;
  box-sizing:border-box;
  min-height:26px;
  padding:0 10px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:12px;
  font-weight:500;
  line-height:1.2;
  cursor:pointer;
  transition:background-color var(--rvb-ease), color var(--rvb-ease),
             box-shadow var(--rvb-ease);
}
html .ml-tb-add:hover,
html .ml-tb-form:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}
html .ml-tb-add[draggable="true"]{cursor:grab}
html .ml-tb-add.ml-w--miss{box-shadow:inset 0 0 0 1px var(--err-bd)}
html .ml-tb-add.ml-w--far{box-shadow:inset 0 0 0 1px var(--ok-bd)}
html .ml-tb-form.is-on{box-shadow:inset 0 0 0 1px var(--indigo-bd)}

/* Стрелки и крестик внутри плашки черновика - иконочные, значит круг. */
html .ml-tb-ctl button{
  width:18px;height:18px;padding:0;
  border:none;border-radius:var(--rvb-r);
  background:transparent;color:var(--rvb-ghost-ink);
  box-shadow:none;
}
html .ml-tb-ctl button:hover{background:var(--rvb-sec-bg);color:var(--rvb-sec-ink)}

/* «Проверить готовый текст по ТЗ →» - ссылка, но стоит и выглядит как кнопка. */
html .lk-tool .tz-tocheck__link{
  min-height:36px;
  padding:0 16px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-size:14px;
  font-weight:510;
  transition:background-color var(--rvb-ease), color var(--rvb-ease);
}
html .lk-tool .tz-tocheck__link:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}

/* Ссылка на эту проверку (worklink.js): «Копировать» и «Открыть». Стили модуль
   вписывает сам тегом <style>, и править его нельзя - он общий для всех
   инструментов; система перебивает их отсюда специфичностью. Индиго-заливка
   снята: это служебные кнопки, а не главное действие страницы. */
html .wl-btn,
html .wl-btn--ghost{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  min-height:32px;
  padding:0 12px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:13px;
  font-weight:510;
  line-height:1.2;
  text-decoration:none;
  transition:background-color var(--rvb-ease), color var(--rvb-ease);
}
html .wl-btn:hover:not([disabled]),
html .wl-btn--ghost:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}

/* «Скопировать» у метатега в задании - малая вторичная, стояла с углами 4px.
   Светлая тема перечислена отдельно: в light.css правило записано как
   [data-theme="light"] #tz-calc .tz-copy-inline (1,2,0). */
html #tz-calc .tz-copy-inline,
html[data-theme="light"] #tz-calc .tz-copy-inline{
  display:inline-flex;
  align-items:center;
  min-height:26px;
  padding:0 10px;
  border:none;
  border-radius:var(--rvb-r);
  background:var(--rvb-sec-bg);
  color:var(--rvb-sec-ink);
  box-shadow:var(--rvb-sec-sh);
  font-family:'Inter',-apple-system,'Segoe UI',Roboto,sans-serif;
  font-size:12px;
  font-weight:510;
  line-height:1.2;
}
html #tz-calc .tz-copy-inline:hover,
html[data-theme="light"] #tz-calc .tz-copy-inline:hover{background:var(--rvb-sec-bg-h);color:var(--rvb-sec-ink)}

/* ⚠ НЕ КНОПКИ, хотя размечены тегом button, — в систему НЕ берутся:
   .rv-cl__dot          точки-пагинация карусели журнала (круг 6px);
   .tzc-acc__head,
   .sa-compet__header   заголовки аккордеонов во всю ширину блока;
   .trl-name            название проекта, по сути ссылка;
   .gm-repeat__del      текстовое «× удалить» внутри строки.
   Пилюля любому из них сломала бы смысл элемента, а не унифицировала вид.
   Чипы .hs-chip и .cc-speed уже пилюли (999px) — оставлены со своими
   цветами: это фильтр и переключатель скорости, а не кнопки действия. */
