"""
Normalización de cabeceras CSV (compartida por todos los módulos layouts_csv).
"""
import re
import unicodedata
from typing import Optional


def normalize_header(name: Optional[str]) -> str:
    """Normaliza nombre de columna: NFKD, mayúsculas, sin acentos, espacios colapsados."""
    if not name:
        return ""
    name = unicodedata.normalize("NFKD", str(name)).upper()
    name = "".join(ch for ch in name if not unicodedata.combining(ch))
    name = re.sub(r"[^A-Z0-9]+", " ", name)
    return re.sub(r"\s+", " ", name).strip()
