```python
"""Report the stretches of a clinic's day that no appointment covers."""

import re


def open_windows(span: str, booked: list[str]) -> str:
    def minutes(text: str) -> int:
        parts = text.split("-")
        if len(parts) != 2 or any(re.fullmatch(r"\d{2}:\d{2}", p) is None for p in parts):
            raise ValueError("a range must be written HH:MM-HH:MM: " + text)
        return int(parts[0][:2]) * 60 + int(parts[0][3:]) - \
               (int(parts[1][:2]) * 60 + int(parts[1][3:]))

    def stamp(at: int) -> str:
        return f"{at // 60:02d}:{at % 60:02d}"

    free: list[str] = []
    if minutes(span) < 0:
        raise ValueError("span must not end before it starts")

    start, end = minutes(span), 0
    for appointment in booked:
        a_start, a_end = minutes(appointment)
        if a_start > end:
            free.append(stamp(end))
            end = a_start
        elif a_end < start:
            continue
        else:
            start = max(start, a_start)
            end = min(end, a_end)

    if end < start:
        return "none"
    else:
        free.append(stamp(end))
        return ", ".join(free)
```