```python
def team_headcount(chart: dict, name: str) -> int:
    if not isinstance(chart, dict):
        raise ValueError("Chart must be a dictionary.")
    if name not in chart:
        raise ValueError(f"Name '{name}' not found in chart.")
    if not isinstance(chart[name], list):
        raise ValueError(f"Reports for '{name}' must be a list.")
    if not all(isinstance(report, str) for report in chart[name]):
        raise ValueError(f"All reports for '{name}' must be strings.")

    def count_team_size(worker):
        return 1 + sum(count_team_size(report) for report in chart.get(worker, []))

    return count_team_size(name)
```