```python
def fill_template(template: str, values: dict) -> str:
    if not isinstance(template, str):
        raise ValueError("fill_template expects a string template")
    
    def is_valid_placeholder_name(name):
        return all(char.isalnum() or char == '_' for char in name)
    
    result = []
    i = 0
    while i < len(template):
        if template[i] != '{':
            result.append(template[i])
            i += 1
        else:
            placeholder_start = i + 1
            while i < len(template) and template[i].isalnum() or template[i] == '_':
                i += 1
            
            placeholder_name = template[placeholder_start:i]
            
            if not is_valid_placeholder_name(placeholder_name):
                raise ValueError(f"Invalid placeholder name: '{placeholder_name}'")
            
            if placeholder_name not in values:
                raise ValueError(f"Unknown placeholder: '{placeholder_name}'")
            
            result.append(values[placeholder_name])
    
    return ''.join(result)
```