Concatenate() merges items into rich text with paragraphs.
Card() doesn’t merge content from items. Instead it renders each argument as a block (as if it were an inline formula on a canvas) and then collectively renders it as a single block where those sub-blocks are basically rendered as top-aligned columns:
If there’s something constraining a
Card(), e.g. it’s a cell formula, then the width of the outer block expands to fill the full width of the cell, and column widths get distributed proportionally to the length of content. Technically it’s a
<table> with one row and each argument rendered in its own
Card() has some extra padding. Also it’s responsive to clicks. When used in table context, clicking a Card value will open the row’s layout. So not super suitable for use there.