/* Доводка оформления. Подключается последним, поэтому правит поверх основного
   листа, ничего в нём не трогая. Только тонкие вещи: ритм чтения, состояния
   элементов, фокус с клавиатуры, спокойные переходы. */

:root {
  --ease: cubic-bezier(.22, .61, .36, 1);
  --tap: 120ms;
  --measure: 74ch;
}

/* ── Чтение длинных юридических текстов ───────────────────────────── */

.bubble.assistant {
  line-height: 1.62;
  letter-spacing: .002em;
}

.bubble.assistant > .md,
.bubble.assistant .md > p,
.bubble.assistant .md > ul,
.bubble.assistant .md > ol,
.bubble.assistant .md > blockquote {
  max-width: var(--measure);
}

.bubble.assistant .md > p + p { margin-top: .72em; }

.bubble.assistant .md h1,
.bubble.assistant .md h2,
.bubble.assistant .md h3,
.bubble.assistant .md h4 {
  letter-spacing: -.011em;
  line-height: 1.3;
  margin-top: 1.35em;
  margin-bottom: .5em;
}

.bubble.assistant .md h1:first-child,
.bubble.assistant .md h2:first-child,
.bubble.assistant .md h3:first-child { margin-top: 0; }

.bubble.assistant .md li + li { margin-top: .3em; }
.bubble.assistant .md li > p { margin: 0; }

/* Ссылки на нормы и суммы не должны прыгать по ширине при перерисовке. */
.bubble.assistant .md,
.doc-text,
.docview-text {
  font-variant-numeric: tabular-nums;
}

.bubble.assistant .md strong { font-weight: 600; }

.bubble.assistant .md blockquote {
  border-left: 2px solid var(--border);
  padding-left: 14px;
  color: var(--text-dim);
  margin-left: 0;
}

/* ── Состояния элементов ──────────────────────────────────────────── */

button,
.btn,
.btn-ghost,
.doc-btn,
.retry-btn,
a[role="button"] {
  transition:
    background-color var(--tap) var(--ease),
    border-color var(--tap) var(--ease),
    color var(--tap) var(--ease),
    box-shadow var(--tap) var(--ease),
    transform var(--tap) var(--ease);
}

button:active:not(:disabled),
.btn:active:not(:disabled),
.doc-btn:active:not(:disabled),
.retry-btn:active:not(:disabled) {
  transform: translateY(.5px);
}

button:disabled,
.btn:disabled {
  opacity: .45;
  cursor: not-allowed;
}

/* Фокус виден только при работе с клавиатуры и не мешает мыши. */
:where(button, a, input, textarea, select, [tabindex]):focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
  border-radius: 8px;
}
:where(button, a, input, textarea, select, [tabindex]):focus:not(:focus-visible) {
  outline: none;
}

/* ── Мелочи, из которых складывается ощущение аккуратности ────────── */

::selection {
  background: var(--accent-soft);
  color: var(--text);
}
html[data-theme="dark"] ::selection {
  background: rgba(122, 168, 255, .26);
  color: #fff;
}

* { scrollbar-width: thin; scrollbar-color: var(--scroll-thumb) transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--scroll-thumb);
  border-radius: 8px;
  border: 3px solid transparent;
  background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: var(--scroll-thumb-h); background-clip: content-box; }

hr { border: none; border-top: 1px solid var(--border); margin: 1.4em 0; }

/* Список чатов: активный отмечен тонкой чертой, а не заливкой во всю ширину. */
.chat-item { transition: background-color var(--tap) var(--ease); }

/* Подсказки и служебные подписи держим одного веса и цвета. */
.hint, .cut-note, .agent-note, .side-h {
  color: var(--text-dim);
  letter-spacing: .004em;
}

/* Код внутри ответа: спокойный фон, ровные поля, без лишней рамки. */
.bubble.assistant .md pre {
  border-radius: 12px;
  padding: 14px 16px;
  line-height: 1.5;
}
.bubble.assistant .md :not(pre) > code {
  padding: .12em .38em;
  border-radius: 6px;
  font-size: .92em;
}

/* ── Узкий экран ──────────────────────────────────────────────────── */

@media (max-width: 480px) {
  .bubble.assistant { line-height: 1.58; }
  .bubble.assistant .md h1,
  .bubble.assistant .md h2 { margin-top: 1.1em; }
}

/* Уважаем настройку «меньше движения»: переходы гасим, вёрстку не трогаем. */
@media (prefers-reduced-motion: reduce) {
  button, .btn, .doc-btn, .retry-btn, .chat-item { transition: none; }
  button:active, .btn:active { transform: none; }
}
