/* Модуль «Генерация». Подключается только у включённого модуля.

   До 27 сентября 2026 раздел был рамкой тёмной службы ai-gen. Теперь узлы
   генерации живут на доске портала, и их облик — токенами портала
   (tokens.css): светлые или тёмные вместе с порталом, акцент — человека.
   Облик самих узлов (меню узлов, поля, список, справка) — в копии движка,
   /vendor/aigen/uzly.css, на переменных `--аг-*`; здесь им даются токены. */

:root {
  --аг-панель: var(--solid);
  --аг-наведение: var(--hover);
  --аг-текст: var(--ink);
  --аг-тихо: var(--ink-3);
  --аг-акцент: var(--accent);
  --аг-акцент-фон: var(--accent-soft);
  --аг-край: var(--line);
  --аг-поле: var(--well);
  --аг-плашка: var(--island);
  --аг-тень: var(--sh-3);
  --аг-шрифт: var(--f-ui);
  --аг-плёнка: color-mix(in srgb, var(--ink) 30%, transparent);
}
/* Стекло на плавающих слоях — как у меню портала, если человек его не выключил */
[data-glass='panels'] .аг-меню-узлов,
[data-glass='panels'] .аг-список,
[data-glass='panels'] .аг-справка-окно {
  background: var(--glass-strong);
  -webkit-backdrop-filter: var(--blur); backdrop-filter: var(--blur);
  box-shadow: var(--in), var(--sh-3);
}

/* Раздел: нечем рисовать — плашкой под шапкой */
.aigen__net { margin-bottom: var(--s-4); }
/* Раздел: баланс в шапке — он же вход в «Расход» */
.aigen__balance { font-variant-numeric: tabular-nums; gap: var(--s-1); }
/* Баланс внизу доски генерации, рядом с отменой */
.в-история .aigen__chip { width: auto; padding: 0 var(--s-2); font-size: var(--t-sm); font-variant-numeric: tabular-nums; color: var(--ink-2); }
/* Баланс в верхней правой панели доски: «AI» пилюлей акцента и сумма */
.в-люди .aigen__chip, .в-история .aigen__chip { width: auto; display: inline-flex; align-items: center; gap: var(--s-1); padding: 0 var(--s-2) 0 var(--s-1); font-size: var(--t-sm); font-variant-numeric: tabular-nums; color: var(--ink-2); border-radius: var(--radius-full); }
.aigen__ai { display: inline-grid; place-items: center; height: 20px; padding: 0 6px; border-radius: var(--radius-full); background: var(--accent-soft); color: var(--accent-fg); font-size: var(--t-xs); font-weight: 600; letter-spacing: .02em; }

/* «Расход» — окно поверх экрана */
.aigen__modal { max-width: 860px; width: min(860px, calc(100vw - 32px)); max-height: calc(100vh - 48px); overflow: auto; }
.aigen__modal .modal__head h3 { margin: 0; }
.aigen__spend { padding: var(--s-4); }
.aigen__spend h3 { margin: var(--s-5) 0 var(--s-2); }
.aigen__sums { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s-3); }
.aigen__sums > div { display: flex; flex-direction: column; gap: var(--s-1); padding: var(--s-3) var(--s-4);
  border-radius: var(--r); background: var(--island); box-shadow: var(--in); }
.aigen__sums span, .aigen__sums small { color: var(--ink-3); font-size: var(--t-sm); }
.aigen__sums b { font-size: var(--t-xl); font-variant-numeric: tabular-nums; }
.aigen__table { width: 100%; border-collapse: collapse; font-size: var(--t-sm); }
.aigen__table th, .aigen__table td { text-align: left; padding: var(--s-1) var(--s-2); border-bottom: 1px solid var(--hair); vertical-align: top; }
.aigen__table th { color: var(--ink-3); font-weight: 500; }
.aigen__table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.aigen__table tr.is-muted td { color: var(--ink-3); }
.aigen__prompt { max-width: 340px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 700px) {
  .aigen__sums { grid-template-columns: 1fr; }
  .aigen__prompt { max-width: 140px; }
}

/* Админка: чек-лист «что нужно, чтобы генерация заработала» */
.aigen-chek { display: flex; gap: var(--s-3); align-items: flex-start; padding: var(--s-2) 0; }
.aigen-chek + .aigen-chek { border-top: 1px solid var(--border); }
.aigen-chek__znak { flex: none; width: var(--s-5); height: var(--s-5); border-radius: 50%; display: grid; place-items: center;
  font-weight: 700; background: var(--surface-2, var(--bg)); color: var(--text-dim); }
.aigen-chek.is-ok .aigen-chek__znak { color: var(--ok, var(--accent)); }
.aigen-chek.is-bad .aigen-chek__znak { color: var(--danger); }

/* Юнит тоннеля — текстом, чтобы скопировать */
.aigen-kak summary { cursor: pointer; }
.aigen-kak ol { padding-left: var(--s-5); }
.aigen-yunit { font-family: var(--mono, monospace); font-size: var(--t-xs, var(--t-sm)); background: var(--bg); border: 1px solid var(--border);
  border-radius: var(--radius); padding: var(--s-3); overflow-x: auto; white-space: pre; user-select: all; }

/* Цены — столбцы одной ширины во всех таблицах моделей (сверка экранов,
   28 сентября 2026): раньше каждая таблица ровняла их по своим подписям,
   и «Прайс» с «Своей ценой» прыгали от модели к модели. */
.aigen-ceny { table-layout: fixed; width: 100%; }
.aigen-ceny th:first-child { width: 50%; }
/* Свой лимит и пополнение — одной строкой: поле, период и кнопка стояли
   столбиком в три ряда, и строка человека вырастала втрое. */
.aigen-limit { display: flex; gap: var(--s-2); align-items: center; flex-wrap: nowrap; }
.aigen-limit > * { flex: none; }
/* Ширины заданы, а не процентом: у процента нет своей ширины, и ячейка
   таблицы сжимала поля до нуля — «Задать» уезжал под соседнее поле */
.aigen-limit > input.input { width: 5.5em; padding: 0 var(--s-2); }
.aigen-limit > select.input { width: 11em; padding-left: var(--s-2); }
/* Счета: семь столбцов с полями и кнопками в ширину карточки не входят —
   ячейки поуже, а не влезшее листается внутри, а не вылезает за карточку */
.aigen-scheta__wrap { overflow-x: auto; }
.aigen-scheta :is(th, td) { padding-left: var(--s-2); padding-right: var(--s-2); }
.aigen-scheta th { white-space: normal; vertical-align: bottom; }
@media (max-width: 760px) {
  .aigen-scheta th { white-space: nowrap; }
}

/* Статистика (28 сентября 2026): четыре срока плитками, выбранный — подробно.
   Цвета полос — фоном, не текстом: подписи рядом обычным цветом. */
.aigen-stat__tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--s-3); }
.aigen-stat__tile { padding: var(--s-3); border-radius: var(--radius-lg); background: var(--sunken); box-shadow: inset 0 0 0 .5px var(--line); }
.aigen-stat__label { font-size: var(--t-sm); color: var(--text-dim); margin-bottom: var(--s-1); }
.aigen-stat__big { font-size: var(--t-xl); font-weight: 600; font-variant-numeric: tabular-nums; }
.aigen-stat__segwrap { overflow-x: auto; margin-bottom: var(--s-4); }
.aigen-stat__sum { display: flex; flex-wrap: wrap; gap: var(--s-2) var(--s-5); margin-bottom: var(--s-4); font-size: var(--t-base); }
.aigen-stat__sum b { font-size: var(--t-md); font-variant-numeric: tabular-nums; }
.aigen-stat__h { font-size: var(--t-md); margin: var(--s-5) 0 var(--s-2); }
.aigen-stat__bar { display: flex; height: 10px; border-radius: var(--radius-full); overflow: hidden; gap: 2px; margin-bottom: var(--s-3); background: var(--sunken); }
.aigen-stat__bar > span { min-width: 3px; }
.aigen-stat__dot { display: inline-block; width: 10px; height: 10px; border-radius: var(--radius-full); margin-right: var(--s-2); vertical-align: -1px; }
.aigen-stat__table td, .aigen-stat__table th { font-variant-numeric: tabular-nums; }
.aigen-stat__days { display: flex; align-items: flex-end; gap: 3px; height: 140px; padding-top: var(--s-2); overflow-x: auto; }
.aigen-stat__day { flex: 1 0 14px; max-width: 36px; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; align-items: stretch; }
.aigen-stat__col { background: var(--line-2); border-radius: var(--radius-sm) var(--radius-sm) 0 0; display: flex; flex-direction: column; justify-content: flex-end; overflow: hidden; }
.aigen-stat__col-comfy { background: var(--accent); }
.aigen-stat__daylabel { font-size: var(--t-2xs); color: var(--text-dim); text-align: center; margin-top: var(--s-1); flex: none; }
