.dots {
  display: inline-flex;
  align-items: center;
  height: 1.25rem;
}

.dots span {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #94a3b8;
  margin: 0 2px;
  animation: dot 1.2s infinite ease-in-out;
}

.dots span:nth-child(2) { animation-delay: 0.15s; }
.dots span:nth-child(3) { animation-delay: 0.30s; }

@keyframes dot {
  0%, 80%, 100% { opacity: 0.2; transform: translateY(0); }
  40% { opacity: 1; transform: translateY(-3px); }
}

textarea {
  field-sizing: content;
  max-height: 8rem;
}

/* Source-preview images: keep inline pictures responsive and tidy. */
.prose img {
  max-width: 100%;
  height: auto;
  border: 1px solid #e3e8ea;
  border-radius: 8px;
}
