```python
def draw_stock(shelf: dict, order: list) -> dict:
    """
    Draw stock from a shelf by applying order lines to the shelf.
    
    :param shelf: A dictionary mapping item names to their counts on hand.
    :param order: A list of [item, count] lines to pull from the shelf.
    :return: A new dictionary mapping what remains on the shelf, every shelf item still present even when its count reaches zero.
    """
    if not isinstance(shelf, dict) or not isinstance(order, list):
        raise ValueError("Invalid input: shelf must be a dictionary and order must be a list.")
    
    for item, count in order:
        if not isinstance(item, str) or not isinstance(count, int):
            raise ValueError("Invalid order line: item must be a string and count must be an integer.")
        if count < 0:
            raise ValueError("Invalid order line: count must be non-negative.")
        if item not in shelf:
            raise ValueError("Invalid order line: item does not exist in the shelf.")
        if count > shelf[item]:
            raise ValueError("Invalid order line: count exceeds the available stock.")
        
        shelf[item] -= count
    
    return shelf
```