```python

def hex_split(colour: str) -> list:
    if len(colour) != 7 or not all(c in '0123456789abcdef' for c in colour):
        raise ValueError("Invalid colour format")
    
    return [colour[:2].lower(), colour[2:4].lower(), colour[4:].lower()]

def hex_join(parts: list) -> str:
    if len(parts) != 3 or not all(len(part) == 2 and part.isalnum() for part in parts):
        raise ValueError("Invalid parts format")
    
    return f"#{''.join(parts)}".lower()
```