```python
def thaw_row(row: str, steps: int) -> str:
    if not isinstance(row, str) or not row:
        raise ValueError("Row must be a non-empty string.")
    
    if any(c not in "#." for c in row):
        raise ValueError("Row can only contain '#' and '.' characters.")
    
    if not isinstance(steps, int) or steps < 0:
        raise ValueError("Steps must be a non-negative integer.")
    
    ice_cells = [i for i, cell in enumerate(row) if cell == '#']
    
    for _ in range(steps):
        new_ice_cells = set()
        for cell in ice_cells:
            left = cell - 1
            right = cell + 1
            
            if left < 0 or row[left] == '.':
                new_ice_cells.add(left)
            if right >= len(row) or row[right] == '.':
                new_ice_cells.add(right)
        
        ice_cells = [cell for cell in ice_cells if cell not in new_ice_cells]
        ice_cells.extend(new_ice_cells)
    
    return ''.join('#' if i in ice_cells else '.' for i in range(len(row)))
```