```python
def link_find(line: str, opens: str, closes: str) -> list:
    if not opens or not closes:
        raise ValueError("Opens and closes must be non-empty strings")

    result = []
    depth = 0

    for char in line:
        if char == opens:
            depth += 1
            if depth > 1:
                continue
            result.append(char)
        elif char == closes:
            depth -= 1
            if depth < 0:
                raise ValueError(f"Closing marker '{closes}' appears before its corresponding opening marker")
            result.append(char)

    return result
```