Sanitize custom OAuth provider names for URL path safety
provider_name now slugifies Custom names to [a-z0-9-] per RFC 3986,
preventing broken routes from names like "corp/sso" or "Acme SSO".
Non-ASCII bytes are treated as separators; empty results fall back
to "custom".