import re
from typing import Optional

_PHONE_RE = re.compile(r'^\(\d{3}\) \d{3}-\d{4}$')


def validate_phone(v: Optional[str]) -> Optional[str]:
    """Accept None/empty or a formatted US/CA phone: (NXX) NXX-XXXX."""
    if v is None or v == '':
        return v
    if not _PHONE_RE.match(v):
        raise ValueError('Phone must be formatted as (NXX) NXX-XXXX — e.g. (613) 555-0100')
    return v
