References:
CSS 2.1,
Section 4.1.3 Characters and case (identifiers) says:
"in CSS, identifiers (including element names, classes, and IDs in
selectors) can contain only the characters [a-z0-9] and ISO 10646
characters U+00A1 and higher, plus the hyphen (-) and the underscore (_);
they cannot start with a digit, or a hyphen
followed by a digit."
CSS
2.1, Section 4.1.1 tokenization CSS 2.1, G.2 Lexical
scanner both gives
ident -?{nmstart}{nmchar}*
nmstart [_a-z]|{nonascii}|{escape}