```python
def thaw_row(row: str, steps: int) -> str:
    if not isinstance(row, str):
        raise ValueError("Row must be a string")
    if row == "":
        raise ValueError("Row cannot be empty")
    if not all(c in "#." for c in row):
        raise ValueError("Row can only contain '#' and '.'")
    if not isinstance(steps, int) or steps < 0:
        raise ValueError("Steps must be a non-negative integer")

    if steps == 0:
        return row

    n = len(row)
    result = list(row)

    for _ in range(steps):
        new_result = ['.' if i == 0 or i == n-1 or (i > 0 and result[i-1] == '.') or (i < n-1 and result[i+1] == '.') else '#' for i in range(n)]
        result = new_result

    return ''.join(result)
```