```python
def tag_count(line: str) -> int:
    """
    Count the number of markers in a line.
    A marker is an opening angle bracket followed by everything up to the next closing angle bracket.
    An opening bracket is not closed is not a marker.
    Reject a line holding an unmatched closing bracket with an error.
    """
    if not line:
        return 0

    stack = []
    marker_count = 0

    for char in line:
        if char == '<':
            stack.append(char)
        elif char == '>':
            if not stack:
                raise ValueError("Unmatched closing bracket")
            stack.pop()
            marker_count += 1

    if stack:
        raise ValueError("Unmatched opening bracket")

    return marker_count
```