```python
def format_bits(value: int, width: int) -> str:
    if not isinstance(width, int) or width <= 0 or width % 4 != 0 or width > 32:
        raise ValueError("Width must be a positive multiple of four, up to 32 bits.")
    
    if not isinstance(value, int) or value < 0:
        raise ValueError("Value must be a non-negative integer.")
    
    if value >= (1 << width):
        raise ValueError(f"Value {value} does not fit in {width} bits.")
    
    binary_representation = bin(value)[2:].zfill(width)
    
    nibble_groups = [binary_representation[i:i+4] for i in range(0, width, 4)]
    
    return ' '.join(nibble_groups)

```