Renders the component as a styled string.
Subclasses implement this to produce their ANSI-styled output.
@override String render() => children.map((c) => c.render()).join(separator);