/* Кампании и CPL, итоги встреч, «передан менеджеру», входящие на решение и
   значок в меню (18.09.2026). Только классы cpl-*, lead-mh-*, meet-outcome*,
   approvals-* и nav-badge; цвета — переменные темы. */

/* ── Значок числа ждущих решений в левом меню ── */
.nav-item { position: relative; }
.nav-badge { margin-inline-start: auto; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; background: var(--rp-red, #ef4444); color: #fff; line-height: 1; }
.nav-badge[hidden] { display: none; }
/* Свёрнутый рельс прячет всё, кроме значка раздела; число остаётся — точкой
   с цифрой в углу иконки. */
.rail-collapsed .nav-item > span.nav-badge:not([hidden]) { display: inline-flex; position: absolute; top: 2px; inset-inline-end: 6px; min-width: 16px; height: 16px; font-size: 10px; }

/* ── Кампании · стоимость лида ── */
.cpl-card { display: flex; flex-direction: column; gap: 10px; }
.cpl-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 10px; align-items: flex-start; }
.cpl-title { display: flex; flex-direction: column; gap: 4px; max-width: 640px; }
.cpl-table { width: 100%; border-collapse: collapse; font-size: 13px; font-variant-numeric: tabular-nums; }
.cpl-table th { text-align: start; font-weight: 600; color: var(--rp-ink-3, #6b7a90); padding: 6px 8px; border-bottom: 1px solid var(--rp-line, rgba(127,127,127,0.18)); white-space: nowrap; }
.cpl-table td { padding: 8px; border-bottom: 1px solid var(--rp-line, rgba(127,127,127,0.12)); vertical-align: top; }
.cpl-table td > span.cs-note { display: block; font-size: 12px; }
.cpl-table tr.is-off { opacity: 0.6; }
.cpl-name strong { display: block; }
.cpl-cpl { font-weight: 700; }
/* Деньги и отдача — то, ради чего таблицу открывают; они читаются первыми. */
.cpl-money strong, .cpl-roas strong, .cpl-deals strong { display: block; font-weight: 700; }
.cpl-roas.is-low strong { color: var(--rp-red, #ef4444); }
.cpl-totals strong { display: block; }
.cpl-row-actions { white-space: nowrap; display: flex; gap: 6px; }
.cpl-row-actions .is-armed { border-color: var(--rp-red, #ef4444); color: var(--rp-red, #ef4444); }
.cpl-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.cpl-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; padding: 10px 12px; border: 1px solid var(--rp-line, rgba(127,127,127,0.18)); border-radius: 10px; }
.cpl-form > strong, .cpl-form > .cpl-actions { grid-column: 1 / -1; }
.cpl-field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.cpl-input { min-width: 0; }
@media (max-width: 760px) {
  .cpl-table, .cpl-table tbody, .cpl-table tr, .cpl-table td { display: block; width: 100%; }
  .cpl-table tr:first-child { display: none; }
  .cpl-table tr { border-bottom: 1px solid var(--rp-line, rgba(127,127,127,0.18)); padding: 6px 0; }
  .cpl-table td { border: 0; padding: 2px 0; }
  /* Строка заголовков спрятана — подпись столбца над числом (24.09.2026):
     без неё «48» и «6» в карточке кампании не говорили, лиды это или сделки. */
  .cpl-table td[data-label]::before {
    content: attr(data-label);
    display: block;
    margin-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rp-ink-3, #6b7a90);
  }
}

/* ── Карточка сделки: итог встречи и передача менеджеру ── */
.lead-mh { display: flex; flex-direction: column; gap: 8px; }
.lead-mh:empty { display: none; }
.lead-mh-handoff { display: flex; flex-direction: column; gap: 2px; padding: 8px 10px; border-radius: 8px; background: rgba(251, 191, 36, 0.12); border-inline-start: 3px solid var(--rp-amber, #f59e0b); }
.lead-mh-meetings { display: flex; flex-direction: column; gap: 6px; }
.lead-mh-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; }
.lead-mh-when { font-variant-numeric: tabular-nums; min-width: 110px; }
.lead-mh-chip { padding: 1px 8px; border-radius: 10px; font-size: 12px; background: var(--rp-panel-2, rgba(127,127,127,0.12)); }
.lead-mh-chip.is-attended { background: rgba(74, 222, 128, 0.18); }
.lead-mh-chip.is-no_show { background: rgba(248, 113, 113, 0.18); }
.lead-mh-chip.is-rescheduled { background: rgba(251, 191, 36, 0.18); }
.lead-mh-btn { font-size: 12px; padding: 3px 8px; border-radius: 6px; border: 1px solid var(--rp-line, rgba(127,127,127,0.25)); background: transparent; color: inherit; cursor: pointer; }
.lead-mh-btn.is-on { border-color: var(--rp-blue, #2f7bff); font-weight: 600; }
.lead-mh-btn[disabled] { opacity: 0.45; cursor: default; }

/* ── Встречи: итоги ── */
.meet-outcomes { display: flex; flex-direction: column; gap: 6px; margin: 4px 0 8px; }
.meet-outcome-row { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 6px; }
.meet-outcome.is-on { border-color: var(--rp-blue, #2f7bff); font-weight: 600; }

/* ── Входящие на решение ── */
.approvals-card { display: flex; flex-direction: column; gap: 10px; }
.approvals-head { display: flex; flex-direction: column; gap: 4px; }
.approvals-tabs { flex-wrap: wrap; }
.approvals-list { display: flex; flex-direction: column; gap: 10px; }
.approvals-item { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border: 1px solid var(--rp-line, rgba(127,127,127,0.18)); border-radius: 10px; }
.approvals-item-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.approvals-item-head .cs-note { margin-inline-start: auto; }
.approvals-detail { margin: 0; font-size: 13px; overflow-wrap: anywhere; }
/* Строка доказательства у изменения рекламы (26.09.2026): CPL кампании против
   среднего по сети за 30 дней; без цифр — «нет данных для сравнения». */
.approvals-evidence { margin: 0; font-size: 12.5px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere;
  padding: 4px 8px; border-radius: 8px; align-self: flex-start; max-width: 100%;
  background: color-mix(in srgb, currentColor 6%, transparent); }
.approvals-evidence.is-empty { opacity: .75; }
.approvals-draft { width: 100%; min-height: 64px; resize: vertical; font: inherit; font-size: 13px; }
.approvals-preview { max-width: 220px; max-height: 160px; border-radius: 8px; object-fit: cover; }
.approvals-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.approvals-empty { margin: 8px 0; }
.approvals-history > summary { cursor: pointer; font-weight: 600; }

/* ── Входящие: публикации различимы, итог решения называет место (19.09.2026) ── */
.approvals-content { display: flex; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.approvals-content-media { flex: 0 0 auto; width: 120px; height: 160px; border-radius: 10px; overflow: hidden;
  background: color-mix(in srgb, currentColor 6%, transparent); display: grid; place-items: center; }
.approvals-content-media .approvals-preview { width: 100%; height: 100%; max-width: none; max-height: none; object-fit: cover; border-radius: 0; display: block; background: #000; }
.approvals-preview-empty { font-size: 28px; opacity: .5; }
.approvals-content-meta { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.approvals-channels { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.approvals-channel { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 6px; border-radius: 8px;
  font-size: 11px; font-weight: 700; color: #fff; background: #64748b; }
.approvals-channel-instagram { background: linear-gradient(135deg, #f58529, #dd2a7b 55%, #8134af); }
.approvals-channel-tiktok { background: #111; box-shadow: inset 2px 0 0 #25f4ee, inset -2px 0 0 #fe2c55; }
.approvals-channel-facebook { background: #1877f2; }
.approvals-channel-youtube { background: #ff0000; }
.approvals-channel-linkedin { background: #0a66c2; }
.approvals-channel-telegram { background: #229ed9; }
.approvals-channel-whatsapp { background: #25d366; }
.approvals-channel-x, .approvals-channel-twitter, .approvals-channel-threads { background: #000; }
.approvals-result { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 12px; border-radius: 10px;
  border: 1px solid color-mix(in srgb, var(--rp-green, #16a34a) 40%, transparent); background: color-mix(in srgb, var(--rp-green, #16a34a) 9%, transparent); }
.approvals-result.is-reject { border-color: color-mix(in srgb, #dc2626 35%, transparent); background: color-mix(in srgb, #dc2626 7%, transparent); }
.approvals-result.is-reopen { border-color: color-mix(in srgb, #64748b 35%, transparent); background: color-mix(in srgb, #64748b 7%, transparent); }
.approvals-result-icon { font-weight: 800; }
.approvals-result-text { flex: 1 1 240px; min-width: 0; font-size: 13.5px; font-weight: 600; overflow-wrap: anywhere; }
.approvals-history { display: flex; flex-direction: column; gap: 4px; }
.approvals-history-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 2px 0; }
.approvals-history-link { border: 0; background: none; padding: 0; font: inherit; font-size: 12.5px; color: var(--rp-blue, #2f7bff); cursor: pointer; }
.approvals-history-link:hover { text-decoration: underline; }

/* ── Левое меню: подписи блоков помещаются целиком (19.09.2026) ──
   «КЛИЕНТЫ И ПРОДАЖИ» резалась полосой прокрутки списка: у .nav-list с 13.09
   своя прокрутка, и её полоса съедает ширину справа. Полосе — своё место
   (scrollbar-gutter), подписи — плотнее разрядка и чуть меньше кегль.
   Многоточие остаётся страховкой для длинного перевода. */
/* Только у раскрытого рельса: в свёрнутом (72px) зарезервированная полоса
   сдвигала столбец значков и значок «На решение» к началу (ревью 19.09.2026). */
.app-shell:not(.rail-collapsed) .sidebar .nav-list { scrollbar-gutter: stable; }
.sidebar .nav-section-label {
  font-size: 10px;
  letter-spacing: .04em;
  margin-inline: 8px 0;
  gap: 6px;
  min-width: 0;
}
.sidebar .nav-section-label::before { width: 6px; height: 6px; }
[dir="rtl"] .sidebar .nav-section-label { letter-spacing: 0; font-size: 11px; }

/* Панель Boro в разговоре с ролью: имя роли над репликой — цветом роли. */
.boro-msg-by-role .boro-msg-role { color: var(--boro-role-accent, inherit); font-weight: 700; }
/* «Источник: CRM · 26.09 01:20» — одной мелкой строкой под ответом на данных
   пространства (26.09.2026, boroSourceLine). У ответа из общих знаний её нет. */
.boro-msg-source { margin: 3px 0 0; padding-inline: 4px; font-size: 11px; line-height: 1.35;
  color: var(--text-muted, #8fa2bd); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }

/* ═══ ВЫРУЧКА, ПУНКТ 8 (26.09.2026): план месяца, четыре корзины прогноза,
   «С вашего прошлого визита», карточка плана в «Настройках», три отчёта и
   окно «Когда ожидаете закрытие?». Только классы rv-* и cdp-*; цвета —
   токены темы, стороны — логические свойства (арабский зеркалится сам). */

.rv-note { margin: 0; font-size: 12px; line-height: 1.45; color: var(--rp-ink-3); }

/* ── «С вашего прошлого визита» — под полосой «Требует внимания» ── */
.rv-since {
  display: grid;
  gap: 8px;
  padding: 12px 14px;
  border: 1px solid var(--rp-line);
  border-radius: var(--rp-r);
  background: var(--rp-panel);
}
.rv-since-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; }
.rv-since-title {
  margin: 0;
  font-size: 11.5px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--rp-ink-3);
}
.rv-since-when { font-size: 12px; color: var(--rp-ink-2); }
.rv-since-items {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr));
  gap: 8px;
}
.rv-since-item {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  column-gap: 10px;
  row-gap: 2px;
  align-items: baseline;
  padding: 9px 12px;
  border: 1px solid var(--rp-line);
  border-radius: var(--rp-r-sm);
  background: var(--rp-panel-2);
  color: inherit;
  text-decoration: none;
}
.rv-since-item:hover { background: rgb(var(--ch-blue2) / 0.07); }
.rv-since-item:focus-visible { outline: 2px solid var(--sh-blue-2); outline-offset: 2px; }
.rv-since-value {
  grid-row: span 2;
  font-size: 19px;
  font-weight: 700;
  line-height: 1.15;
  color: var(--rp-ink-max);
  font-variant-numeric: tabular-nums;
}
.rv-since-label { font-size: 12.5px; font-weight: 600; color: var(--rp-ink); }
.rv-since-sub { grid-column: 2; font-size: 11.5px; color: var(--rp-ink-3); overflow-wrap: anywhere; }

/* ── План месяца ── */
.rv-plan { display: grid; gap: 6px; margin: 4px 0 14px; }
.rv-plan-line { margin: 0; font-size: 14px; line-height: 1.5; color: var(--rp-ink); overflow-wrap: anywhere; }
.rv-plan-label { color: var(--rp-ink-2); font-weight: 600; }
.rv-plan-amount, .rv-plan-done { font-variant-numeric: tabular-nums; color: var(--rp-ink-max); }
.rv-plan-done { cursor: help; text-decoration: underline dotted; text-underline-offset: 3px; }
.rv-plan-none { color: var(--rp-amber); }
.rv-plan-days { color: var(--rp-ink-2); }
.rv-plan-set {
  justify-self: start;
  font-size: 13px;
  font-weight: 600;
  color: var(--rp-blue, #2f7bff);
  text-decoration: none;
}
.rv-plan-set:hover { text-decoration: underline; }
.rv-plan-cover, .rv-plan-managers { margin: 0; font-size: 12.5px; color: var(--rp-ink-2); overflow-wrap: anywhere; }
.rv-bar { height: 8px; border-radius: 999px; background: var(--rp-panel-2); border: 1px solid var(--rp-line); overflow: hidden; }
.rv-bar-fill { height: 100%; background: var(--rp-blue, #2f7bff); border-radius: inherit; }
.rv-bar.is-met .rv-bar-fill { background: var(--rp-green); }

/* ── Четыре корзины ── */
.rv-fc { display: grid; gap: 8px; margin: 0 0 14px; }
/* Без capitalize: заголовок — фраза, «Прогноз на сентябрь 2026 г.», а не
   «Прогноз На Сентябрь 2026 Г.» (так его делало text-transform). */
.rv-fc-title { margin: 0; font-size: 13px; font-weight: 650; color: var(--rp-ink-2); text-transform: none; }
.rv-fc-months { margin-top: 4px; }
.rv-fc-reason strong { color: var(--rp-ink-2); }
.rv-fc-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(170px, 100%), 1fr));
  gap: 8px;
}
.rv-fc-card {
  display: grid;
  align-content: start;
  gap: 2px;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--rp-line);
  border-inline-start-width: 3px;
  border-radius: var(--rp-r-sm);
  background: var(--rp-panel-2);
  color: inherit;
  font: inherit;
  text-align: start;
  cursor: pointer;
}
.rv-fc-card:hover { background: rgb(var(--ch-blue2) / 0.06); }
.rv-fc-card:focus-visible { outline: 2px solid var(--sh-blue-2); outline-offset: 2px; }
.rv-fc-card.tone-commit { border-inline-start-color: var(--rp-green); }
.rv-fc-card.tone-best_case { border-inline-start-color: var(--rp-amber); }
.rv-fc-card.tone-pipeline { border-inline-start-color: var(--rp-blue, #2f7bff); }
.rv-fc-card.tone-omitted { border-inline-start-color: var(--rp-ink-3); }
.rv-fc-name { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 700; color: var(--rp-ink); }
.rv-fc-info {
  display: inline-grid;
  place-items: center;
  width: 15px;
  height: 15px;
  border: 1px solid var(--rp-line);
  border-radius: 50%;
  font-size: 10px;
  font-style: italic;
  color: var(--rp-ink-3);
}
.rv-fc-gloss { font-size: 11.5px; color: var(--rp-ink-3); }
.rv-fc-amount { margin-top: 4px; font-size: 19px; font-weight: 700; line-height: 1.2; color: var(--rp-ink-max); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.rv-fc-more, .rv-fc-count, .rv-fc-detail { font-size: 12px; color: var(--rp-ink-2); overflow-wrap: anywhere; }
.rv-fc-rule, .rv-fc-top {
  margin-top: 6px;
  padding-top: 6px;
  border-top: 1px solid var(--rp-line);
  font-size: 12px;
  line-height: 1.45;
  color: var(--rp-ink-2);
  overflow-wrap: anywhere;
}
.rv-fc-top { margin-top: 2px; border-top: 0; padding-top: 0; color: var(--rp-ink-3); }

/* ── Карточка плана в «Настройках» ── */
.rv-card { display: grid; gap: 10px; }
.rv-card-row { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; }
.rv-card-field { display: grid; gap: 4px; font-size: 12.5px; color: var(--rp-ink-2); min-width: 0; }
.rv-card-field > span { font-weight: 600; }
.rv-card-input { min-width: 0; inline-size: 180px; max-inline-size: 100%; font-variant-numeric: tabular-nums; }
.rv-card-input-sm { inline-size: 130px; }
.rv-card-currency select { min-width: 90px; }
.rv-card-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.rv-card-status { margin: 0; font-size: 13px; color: var(--rp-ink); overflow-wrap: anywhere; }
.rv-card-note { margin: 0; font-size: 12.5px; color: var(--rp-ink-2); }
.rv-card-note.is-bad { color: var(--rp-red); }
.rv-card-h { margin: 6px 0 0; font-size: 13px; font-weight: 650; color: var(--rp-ink); }
.rv-card-managers { display: grid; gap: 6px; }
.rv-card-table td { vertical-align: middle; }
.rv-card-table td .ghost-button { margin-inline-end: 6px; }
/* На телефоне строка менеджера — стопкой, подпись столбца над значением
   (тот же приём, что у .cpl-table): таблица в пять столбцов уезжала за
   край на 375 px, и «Сохранить» было не видно без прокрутки вбок. */
@media (max-width: 640px) {
  .rv-card-table, .rv-card-table tbody, .rv-card-table tr, .rv-card-table td { display: block; inline-size: 100%; }
  .rv-card-table thead { display: none; }
  .rv-card-table tr { padding: 8px 0; border-bottom: 1px solid var(--rp-line); }
  .rv-card-table td { border: 0; padding: 2px 0; }
  .rv-card-table td.an-num { text-align: start; }
  .rv-card-table td[data-label]::before {
    content: attr(data-label);
    display: block;
    margin-top: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--rp-ink-3);
  }
  .rv-card-table td:first-child { font-weight: 650; color: var(--rp-ink); }
  .rv-card-table td:first-child::before { display: none; }
  .rv-card-table .rv-card-input-sm { inline-size: 100%; max-inline-size: 260px; }
}

/* ── Отчёты под «Аналитикой» ── */
.rv-hist-list { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.rv-hist-row { display: grid; gap: 2px; padding: 8px 10px; border: 1px solid var(--rp-line); border-radius: var(--rp-r-sm); background: var(--rp-panel-2); }
.rv-hist-title { font-size: 13px; color: var(--rp-ink); overflow-wrap: anywhere; }
.rv-hist-chain { font-size: 12.5px; color: var(--rp-ink-2); overflow-wrap: anywhere; }

/* ── Окно «Когда ожидаете закрытие?» — поверх ящика карточки ── */
.cdp-layer {
  position: fixed;
  inset: 0;
  z-index: 9200;
  display: grid;
  place-items: center;
  padding: 16px;
  background: rgba(4, 8, 16, 0.55);
}
.cdp-box {
  inline-size: min(420px, 100%);
  display: grid;
  gap: 10px;
  padding: 18px;
  border: 1px solid var(--rp-line);
  border-radius: var(--rp-r);
  background: var(--rp-panel);
  color: var(--rp-ink);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
}
.cdp-title { margin: 0; font-size: 16px; font-weight: 700; color: var(--rp-ink-max); }
.cdp-body, .cdp-hint { margin: 0; font-size: 13px; line-height: 1.45; color: var(--rp-ink-2); }
.cdp-hint { font-size: 12px; color: var(--rp-ink-3); }
.cdp-deal { margin: 0; font-size: 13px; font-weight: 600; color: var(--rp-ink); overflow-wrap: anywhere; }
.cdp-field { display: grid; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--rp-ink-2); }
.cdp-date { min-height: 36px; }
.cdp-error { margin: 0; font-size: 12.5px; color: var(--rp-red); }
.cdp-error[hidden] { display: none; }
.cdp-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* ── ССЫЛКИ С МЕТКАМИ (UTM) · экран «Маркетинг» (27.09.2026) ──────────────
   Строки параметров площадок — моноширинно и с переносом в любом месте:
   длинная строка Meta не должна раздвигать карточку на телефоне. */
.utm-card { display: flex; flex-direction: column; gap: 12px; }
.utm-subtitle { margin: 6px 0 0; font-size: 13px; letter-spacing: .04em; text-transform: uppercase; color: var(--pk-dim, var(--sh-slate-1)); }
.utm-presets { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.utm-preset { display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 12px; border-radius: 12px; border: 1px solid rgb(var(--ch-line) / .18); background: rgb(var(--ch-lift) / .03); }
.utm-preset p { margin: 0; }
.utm-code-row { display: flex; gap: 8px; align-items: flex-start; }
.utm-code { flex: 1; min-width: 0; padding: 8px 10px; border-radius: 8px; background: rgb(var(--ch-lift) / .06); font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-all; }
.utm-copy { flex: none; }
.utm-grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }
.utm-out { display: flex; flex-direction: column; gap: 8px; }
.utm-link.is-empty { font-family: inherit; color: var(--pk-dim, var(--sh-slate-1)); }
