/* ==========================================================================
   Протокол встречи в «Видеовстречах» (.345 x-comms-video.protocol_pipeline, views/meeting-protocol.js).
   Только токены пакета vendor/forbion-crm/css/tokens.css — светлая и тёмная тема приходят с ними.
   ========================================================================== */
.video-row > .mprot { grid-column: 1 / -1; }
.mprot {
  display: grid; gap: 8px; min-width: 0; padding: 10px 12px; box-sizing: border-box;
  border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--bg-raised); color: var(--ink);
  font-size: 13px; line-height: 18px;
}
.mprot[hidden] { display: none; }
.mprot__head { display: flex; align-items: center; gap: 6px; color: var(--ink); }
.mprot__head .icn svg, .mprot__mark .icn svg { width: 16px; height: 16px; display: block; }
/* Плашка «составлено автоматически, не заверено» — всегда видна у черновика (c-sec §3(е)). */
.mprot__mark {
  justify-self: start; display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: var(--radius-sm);
  background: var(--warning-soft); color: var(--warning); border: 1px solid color-mix(in srgb, var(--warning) 35%, var(--line));
  font-weight: 650; font-size: 12.5px; max-width: 100%; overflow-wrap: anywhere;
}
.mprot__line, .mprot__meta, .mprot__hint, .mprot__note, .mprot__summary { margin: 0; overflow-wrap: anywhere; }
.mprot__hint { font-size: 12px; }
.mprot__note { color: var(--danger); }
.mprot__fail { color: var(--danger); }
.mprot__form { display: grid; gap: 8px; min-width: 0; }
.mprot__pick { display: grid; gap: 4px; min-width: 0; }
.mprot__pick > span { color: var(--ink-2); overflow-wrap: anywhere; }
.mprot__file { max-width: 100%; min-width: 0; font: inherit; color: var(--ink-2); }
.mprot__announce { display: flex; align-items: flex-start; gap: 8px; cursor: pointer; }
.mprot__announce input { margin-top: 2px; flex: none; width: 16px; height: 16px; accent-color: var(--primary); }
.mprot__go { justify-self: start; }
.mprot__cands { display: grid; gap: 4px; }
.mprot__cands ul { margin: 0; padding-left: 18px; display: grid; gap: 2px; }
.mprot__cands p { margin: 0; }
.mprot__transcript > summary { cursor: pointer; color: var(--primary-ink); font-weight: 600; }
.mprot__text {
  margin-top: 6px; max-height: 240px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere;
  padding: 8px 10px; border-radius: var(--radius-xs); background: var(--bg-surface); border: 1px solid var(--line);
}
.mprot__acts { display: flex; flex-wrap: wrap; gap: 8px; }
.mprot__plans { display: grid; gap: 8px; min-width: 0; }

/* Индикатор записи (.345 recording_indicator): «Идёт запись с …» и «Остановить запись» — любому участнику. */
.video-row > .video-rec { grid-column: 1 / -1; }
.video-rec {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; min-width: 0; padding: 8px 12px; box-sizing: border-box;
  border-radius: var(--radius-sm); background: var(--danger-soft); color: var(--danger);
  border: 1px solid color-mix(in srgb, var(--danger) 35%, var(--line)); font-weight: 650; font-size: 13px; line-height: 18px;
}
.video-rec__dot { width: 10px; height: 10px; border-radius: 50%; background: var(--danger); flex: none; animation: video-rec-pulse 1.6s ease-in-out infinite; }
.video-rec__text { flex: 1 1 180px; min-width: 0; overflow-wrap: anywhere; }
.video-rec__stop { flex: none; }
@keyframes video-rec-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .video-rec__dot { animation: none; } }

/* «Прошедшие» — отдельный список под ближайшими: протокол собирается и после встречи. */
.video__past { display: grid; gap: 8px; margin-top: 20px; min-width: 0; }
