/* Geometry mirrors CodeBlock/TerminalBlock (12px radius, code-block surface,
   16px vertical margin) so a web card, a terminal card, and a fenced code block
   read as one family. A source list is prose, not aligned output, so each row
   wraps horizontally rather than scrolling sideways like a terminal card; the
   list as a whole scrolls vertically within a capped height (see .sources). */

.block {
  --dsl-web-radius: 12px;

  margin: 16px 0;
  padding: 12px 14px;
  color: var(--dsw-alias-label-primary);
  background: var(--dsw-alias-markdown-code-block);
  border-radius: var(--dsl-web-radius);
}

/* The provider answer reads as body prose above the citation list; its own
   MarkdownText margins are trimmed so the list sits tight under it. */
.answer {
  margin-bottom: 8px;
}

.answer > :global(div) > :first-child {
  margin-top: 0;
}

.answer > :global(div) > :last-child {
  margin-bottom: 0;
}

/* The citation list: ordered so each source reads as a numbered reference. The
   whole list — the sources the tool returned, matching what the model saw —
   renders here; a max-height caps the card so a long list scrolls in place
   rather than growing the card unbounded. The height is a design constant of the
   card's geometry, not a deployment choice, so it lives here rather than a plugin
   config field.

   `overflow-y` makes this a scroll container, which also clips inline-start
   overflow: a marker wider than `padding-left` loses its leading digits with no
   way to scroll them back. Markers are right-aligned to the content edge, so the
   padding must fit the widest one the list can produce. `searchMaxResults` is an
   unbounded positive integer, so the padding is sized in `em` — against this
   element's own font, the one a marker inherits — to hold a three-digit marker
   (`999. ` measures 2.35em in the app font stack) plus the gap the one-digit
   case already had. */
.sources {
  margin: 0;
  padding-left: 2.5em;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 320px;
  overflow-y: auto;
}

.source {
  min-width: 0;
}

.sourceLink {
  color: var(--dsw-alias-state-business-primary);
  font-size: 14px;
  line-height: 20px;
  word-break: break-word;
}

.sourceLink:hover {
  text-decoration: underline;
}

.snippet {
  margin-top: 2px;
  color: var(--dsw-alias-label-secondary);
  font-size: 13px;
  line-height: 19px;
  word-break: break-word;
}

.published {
  margin-top: 2px;
  color: var(--dsw-alias-label-tertiary);
  font: var(--dsw-font-xs-13);
}

.truncated {
  margin-top: 8px;
  color: var(--dsw-alias-label-tertiary);
  font: var(--dsw-font-xs-13);
}

.empty {
  color: var(--dsw-alias-label-secondary);
  font: var(--dsw-font-xs-13);
}

/* The fetch card is a compact summary: the URL over a status/truncation row. */
.fetch {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.fetchUrl {
  color: var(--dsw-alias-state-business-primary);
  font-family: var(--ds-font-family-code);
  font-size: 13px;
  line-height: 19px;
  word-break: break-all;
}

.fetchUrl:hover {
  text-decoration: underline;
}

.fetchMeta {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

.status {
  color: var(--dsw-alias-label-secondary);
  font: var(--dsw-font-xs-13);
}

/* The fetch card's truncation note sits inline beside the status, so it drops
   the search card's top margin. */
.fetch .truncated {
  margin-top: 0;
}
