```python
def grid_flip(grid: list) -> list:
    """
    Given a grid written as a list of rows, return it turned so that its columns become its rows.
    A grid with no rows gives an empty grid.
    """
    if not grid:
        return []
    
    # Transpose the grid
    return [list(row) for row in zip(*grid)]
```