/* «Переписка» карточки (макет записи): лента как в мессенджере — клиент слева с аватаром и белым пузырём, мы справа серым пузырём,
   время внизу пузыря, разделители дат плашкой. Лента — своя прокрутка, открывается у последних сообщений (card-conversation.ts). */
.chat { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; max-height: min(70vh, 720px); margin: 0; padding: 0 4px 0 0;
  overflow-y: auto; overscroll-behavior: contain; list-style: none; }
.chat-day { justify-self: center; margin: 8px 0 2px; padding: 3px 9px; border-radius: 999px; background: var(--color-bg-panel-strong);
  color: var(--color-text-muted); font-size: 12px; }
.chat-msg { display: flex; align-items: flex-end; gap: 8px; max-width: min(78%, 620px); overflow-wrap: anywhere; }
.chat-msg.ours { justify-self: end; flex-direction: row-reverse; }
.chat-msg.theirs { justify-self: start; }
.chat-msg .bubble { min-width: 0; padding: 8px 12px; border: 1px solid var(--color-border-soft); border-radius: 12px; background: var(--color-bg-panel);
  font-size: 13.5px; line-height: 1.45; }
.chat-msg.theirs .bubble { border-bottom-left-radius: 4px; }
.chat-msg.ours .bubble { border-color: transparent; border-bottom-right-radius: 4px; background: var(--color-bg-panel-strong); }
.chat-meta { display: block; margin-top: 4px; color: var(--color-text-muted); font-size: 11.5px; }
.chat-text p, .chat-text.pre { margin: 0; }
.chat-more > summary { cursor: pointer; color: var(--color-signal-primary); font-size: 12px; }
.chat-voice { font-size: 13px; }
.voice-h { display: flex; align-items: center; gap: 6px; margin-bottom: 4px; color: var(--color-text-secondary); font-size: 12px; font-weight: 500; }
.chat-voice p { margin: 2px 0 0; }
/* Вложение: плитка вида и имя файла. */
.attach { display: flex; align-items: center; gap: 8px; }
.attach .ftile { display: grid; place-items: center; min-width: 30px; height: 34px; padding: 0 4px; border-radius: 6px; background: var(--color-status-danger-bg);
  color: var(--color-status-danger); font: 600 9px/1 var(--font-mono); text-transform: uppercase; font-feature-settings: var(--font-mono-features); }
.attach-text { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.attach-name { overflow-wrap: anywhere; }
.attach-meta { font-size: 11px; }
.chat-earlier { justify-self: center; }
/* Полное summary Zoom во вкладке «Встречи». */
.zoom-summary { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--color-border-soft); }
.zoom-summary > summary { cursor: pointer; font-weight: 600; }
.zoom-body { display: flex; flex-direction: column; gap: 8px; margin-top: 8px; }
.zoom-list { margin: 4px 0 0; padding-left: 18px; }
@media (max-width: 768px) { .chat-msg { max-width: 94%; } }
/* «Обсуждение в команде» (card-team.ts): пачки топиков команды в рамке — шапка (автор, время, топик, «Открыть в Telegram»,
   «Не про эту сделку»), сообщения строками, пересланные — с полосой слева, как привязано — мелко. */
.team-feed { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.team-batch { display: grid; gap: 8px; min-width: 0; padding: 10px 12px; border: 1px solid var(--color-border-soft); border-radius: 10px;
  background: var(--color-bg-panel); }
.team-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; min-width: 0; }
.team-who { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; overflow-wrap: anywhere; }
.team-who .muted { font-size: 12px; }
.team-head .grow { flex: 1 1 auto; }
.team-open { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; }
.team-msgs { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
.team-msg { min-width: 0; font-size: 13.5px; line-height: 1.45; overflow-wrap: anywhere; }
.team-msg p { margin: 0; }
.team-msg.fwd { padding-left: 10px; border-left: 2px solid var(--color-border-strong); }
.team-fwd { margin-bottom: 2px; color: var(--color-text-muted); font-size: 12px; }
.team-how { font-size: 12px; }
/* Стенограмма встречи (card-transcript.ts): раскрывающийся блок у записи — поиск, совпадения кнопками (переход к месту), реплики
   строками «время · говорящий · текст» в своей прокрутке, догрузка раньше и дальше. */
.transcript { margin-top: 4px; padding-top: 8px; border-top: 1px solid var(--color-border-soft); }
.transcript > summary { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; cursor: pointer; font-weight: 600; list-style: none; }
.transcript > summary::-webkit-details-marker { display: none; }
.transcript > summary > .icon { color: var(--color-text-muted); transition: transform .12s; }
.transcript[open] > summary > .icon { transform: rotate(90deg); }
.transcript > summary > .muted { font-weight: 400; }
.transcript-body { display: grid; gap: 8px; min-width: 0; margin-top: 8px; }
.transcript-body > button { justify-self: start; }
.transcript-find { display: grid; gap: 6px; min-width: 0; }
.transcript-find > p { margin: 0; }
.transcript-search { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-width: 0; }
.transcript-search input { flex: 1 1 200px; min-width: 0; }
.transcript-matches { position: relative; display: grid; gap: 2px; max-height: 220px; margin: 0; padding: 0; overflow-y: auto; list-style: none; }
.transcript-matches .match { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; width: 100%; min-width: 0; padding: 4px 6px;
  border: 0; border-radius: 6px; background: none; color: inherit; font: inherit; font-size: 13px; text-align: left; cursor: pointer; }
.transcript-matches .match:hover, .transcript-matches .match:focus-visible { background: var(--color-table-hover-bg); }
.match-text { flex: 1 1 200px; min-width: 0; overflow-wrap: anywhere; }
.transcript-cues { position: relative; display: grid; gap: 2px; max-height: min(60vh, 560px); margin: 0; padding: 0 4px 0 0; overflow-y: auto;
  overscroll-behavior: contain; list-style: none; }
.cue { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 8px; padding: 4px 6px; border-radius: 6px; scroll-margin: 40px; }
.cue.hit { background: var(--color-signal-soft); }
.cue:focus { outline: 2px solid var(--color-focus-ring); outline-offset: -2px; }
.cue-time { color: var(--color-text-muted); font: 12px/1.6 var(--font-mono); font-feature-settings: var(--font-mono-features); }
.cue-body { min-width: 0; }
.cue-speaker { display: block; font-size: 12px; font-weight: 600; }
.cue-text { margin: 0; font-size: 13.5px; line-height: 1.45; overflow-wrap: anywhere; }
.transcript mark { padding: 0 1px; border-radius: 3px; background: var(--color-status-warning-bg); color: inherit; }
/* Telegram человека (telegram-presence.ts): «Открыть в Telegram», ник, где общались — аккаунт, собеседник, последнее сообщение. */
.tg-presence { display: grid; gap: 6px; min-width: 0; margin-top: 4px; font-size: 12.5px; }
.tg-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.tg-open, .tg-edit { display: inline-flex; align-items: center; gap: 4px; }
.tg-where { display: grid; gap: 2px; min-width: 0; }
.tg-places { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.tg-place { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 4px; min-width: 0; overflow-wrap: anywhere; }
.tg-peer { font-size: inherit; }
/* Собеседник диалога процесса: имя и @ник строкой, ниже действия — «Открыть в Telegram», «Диалог в BeSales», «Вписать ник». Узкая левая
   панель: всё переносится по словам, кнопки — в несколько рядов. */
.dpeers { display: grid; gap: 10px; min-width: 0; }
.dpeer { display: grid; gap: 6px; min-width: 0; }
.dpeer-main { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; min-width: 0; overflow-wrap: anywhere; }
.dpeer-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; min-width: 0; }
.dpeer-actions .tg-open, .dpeer-actions .dpeer-besales, .tg-open-link { display: inline-flex; align-items: center; gap: 4px; }
.dpeer-meta { margin: 0; overflow-wrap: anywhere; }
/* Над лентой вкладки «Переписка» собеседник — плашкой. */
.blk > .dpeer { margin-bottom: 10px; padding: 10px 12px; border: 1px solid var(--color-border-soft); border-radius: var(--radius-control);
  background: var(--color-bg-panel-strong); }
/* Говорящие встреч без контакта (person-telegram.ts): подсказки «возможно, это …» и «Это он». */
.speakers { display: grid; gap: 6px; min-width: 0; margin-top: 12px; }
.speakers > p { margin: 0; }
.speaker-candidates { display: grid; gap: 4px; min-width: 0; margin-top: 4px; }
.speaker-link { margin-left: 4px; }
@media (max-width: 768px) { .cue { grid-template-columns: 44px minmax(0, 1fr); gap: 6px; } }
/* Ник контакта: «Скопировать ник»; пояснение вместо отсутствующей ссылки BeSales и «Наш аккаунт» — отдельной строкой. */
.tg-copy { display: inline-flex; align-items: center; gap: 4px; }
.our-account { flex-basis: 100%; overflow-wrap: anywhere; }
/* Плашка «Нет в BeSales» (решение Кирилла 22.10): компактный бейдж, причина — в подсказке (data-tip) при наведении и фокусе. */
.besales-missing { cursor: help; }
/* Чип шапки карточки «Telegram: @наш_аккаунт → @ник_клиента» (telegram-chip.ts): строка переносится по словам; при нескольких диалогах «+N»
   раскрывает список всех. Значок «Скопировать ник» — без подписи. */
.tg-chip { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; min-width: 0; font-size: 13px; overflow-wrap: anywhere; }
.tg-chip-label { display: inline-flex; align-items: center; gap: 4px; color: var(--color-text-muted); }
.tg-chip-pair { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; min-width: 0; }
.tg-chip-account { font-weight: 600; }
.tg-chip-arrow { color: var(--color-text-muted); }
.tg-chip-peer { font-size: inherit; }
.tg-copy-icon { display: inline-flex; align-items: center; justify-content: center; min-width: 24px; min-height: 24px; padding: 0; }
.tg-chip-more { display: inline-flex; align-items: center; min-height: 24px; padding: 0; border: 0; background: none; cursor: pointer; }
.tg-chip-count { padding: 0 8px; border: 1px solid var(--color-border-strong); border-radius: 999px; font-size: 12px; color: var(--color-text-muted); }
.tg-chip-list { flex-basis: 100%; display: grid; gap: 4px; margin: 6px 0 0; padding: 8px 10px; list-style: none; border: 1px solid var(--color-border-soft);
  border-radius: var(--radius-control); background: var(--color-bg-panel-strong); }
.tg-chip-list[hidden] { display: none; }
.today-account { overflow-wrap: anywhere; }
