d4a2e9dd53
Each tab returned different leading newlines (Sites/tables: 1, Logs: 3, empty states: varies). TrimSpace content before layout so JoinVertical controls all spacing. Remove leading \n from footer since JoinVertical handles gaps.