```python
def stall_turns(counts: list, limit: int) -> int:
    """
    Calculate the total number of turns needed to serve customers in a market stall.

    Parameters:
    counts (list): A list of integers representing the item counts for each customer.
    limit (int): The maximum number of items that can be served per turn.

    Returns:
    int: The total number of turns required to serve all customers.
    """
    if not counts or limit <= 0:
        return 0

    total_turns = 0
    current_turn = 0
    waiting_queue = []

    for count in counts:
        while waiting_queue and waiting_queue[0][1] > 0 and waiting_queue[0][1] + current_turn <= limit:
            waiting_queue[0][1] -= 1
            current_turn += 1
            total_turns += 1

        if current_turn < limit:
            waiting_queue.append([count, current_turn])
        else:
            total_turns += 1

    return total_turns
```