/* tool-chat.css — виджет /tools/diagnostika (chat-diag).
   Живая диагностика как переписка: сообщения-пузыри слева от «системы»
   ЧекРунет, появляются последовательно с индикатором «печатает…».
   Использует ТОЛЬКО переменные темы из style.css (--panel-2, --border,
   --txt, --accent, --success/--warn/--bad) — сам файл style.css не трогаем.
   Тема переключается классом .dark на <html> — переменные уже меняются
   сайтом, доп. media-запросы по цвету не нужны. */

.chat-diag {
  max-width: 560px;
}

.chat-diag__log {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.chat-diag__row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  opacity: 0;
  transform: translateY(6px);
  animation: chatDiagIn .32s ease forwards;
}

.chat-diag__avatar {
  flex: none;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--panel-3, var(--bg-2));
  display: flex;
  align-items: center;
  justify-content: center;
}
.chat-diag__avatar svg { width: 16px; height: 16px; color: var(--accent); }
.chat-diag__avatar svg circle:first-child { fill: currentColor; }
.chat-diag__avatar svg circle:last-child { fill: currentColor; opacity: .35; }

.chat-diag__col { flex: 1; min-width: 0; }

.chat-diag__bubble {
  background: var(--panel-2);
  border: 1px solid var(--border);
  border-radius: 4px 14px 14px 14px;
  padding: 10px 14px;
  font-size: 14px;
  line-height: 1.55;
  color: var(--txt);
  max-width: 100%;
}
.chat-diag__bubble--ok   { border-left: 3px solid var(--success); }
.chat-diag__bubble--warn { border-left: 3px solid var(--warn); }
.chat-diag__bubble--bad  { border-left: 3px solid var(--bad); }

.chat-diag__line { margin: 0; }
.chat-diag__line + .chat-diag__line { margin-top: 6px; }
.chat-diag__line strong { color: var(--txt); font-weight: 600; }

.chat-diag__facts {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.chat-diag__facts li {
  font-size: 12.5px;
  font-family: var(--f-mono);
  font-variant-numeric: tabular-nums;
  background: var(--panel-3, var(--bg-2));
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 3px 10px;
  color: var(--txt-dim);
}
.chat-diag__facts li strong { color: var(--txt); font-family: var(--f-sans); }

.chat-diag__probes {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.chat-diag__probes li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12.5px;
  border: 1px solid var(--border);
  border-radius: 20px;
  padding: 4px 10px 4px 8px;
  color: var(--txt-dim);
}
.chat-diag__probes .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--txt-mute);
  flex: none;
}
.chat-diag__probes li.is-ok .dot   { background: var(--success); }
.chat-diag__probes li.is-slow .dot { background: var(--warn); }
.chat-diag__probes li.is-down .dot { background: var(--bad); }
.chat-diag__probes .ms {
  font-family: var(--f-mono);
  font-variant-numeric: tabular-nums;
  color: var(--txt-mute);
}

.chat-diag__links { margin: 8px 0 0; display: flex; flex-direction: column; gap: 4px; }
.chat-diag__links a { color: var(--accent); font-size: 13px; text-decoration: none; }
.chat-diag__links a:hover { text-decoration: underline; }

.chat-diag__meta {
  margin-top: 4px;
  font-size: 11px;
  color: var(--txt-mute);
  font-variant-numeric: tabular-nums;
}

/* «печатает…» */
.chat-diag__typing .chat-diag__bubble {
  display: inline-flex;
  gap: 4px;
  padding: 12px 14px;
}
.chat-diag__dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--txt-mute);
  animation: chatDiagDot 1s infinite ease-in-out;
}
.chat-diag__dot:nth-child(2) { animation-delay: .15s; }
.chat-diag__dot:nth-child(3) { animation-delay: .3s; }

@keyframes chatDiagIn {
  to { opacity: 1; transform: none; }
}
@keyframes chatDiagDot {
  0%, 60%, 100% { opacity: .3; transform: translateY(0); }
  30% { opacity: 1; transform: translateY(-3px); }
}

/* prefers-reduced-motion: без анимации появления и «печатает…» — JS также
   не выставляет искусственные паузы между шагами (см. tool-chat-diag.js). */
@media (prefers-reduced-motion: reduce) {
  .chat-diag__row { animation: none !important; opacity: 1 !important; transform: none !important; }
  .chat-diag__dot { animation: none !important; opacity: .6; }
}
