```python
def hex_split(colour: str) -> list:
    if len(colour) != 7 or not colour[0].isalpha() or not colour[1:].isalnum():
        raise ValueError("Invalid colour format")
    return [colour[i:i+2].lower() for i in range(0, 7, 2)]

def hex_join(parts: list) -> str:
    if not all(part.isalnum() and len(part) == 2 for part in parts):
        raise ValueError("Invalid parts format")
    return ''.join(parts)
```