...ce")


def now_iso() -> str:
    return time.strftime("%Y-%m-%d %H:%M:%S")


def short(s: str, n: int = 400) -> str:
    s = (s or "").replace("\r\n", "\n")
    return s if len(s) <= n else s[:n] + " ...[cut]"


def safe_filename(s: str) -> str:
    bad = '<>:"/\\|?*'
    out = "".join("_" if c in bad else c for c in s)
    return out[:180] if len(out) > 180 else out


def looks_english(s: str) -> bo...