In https://drafts.css-houdini.org/css-properties-values-api-1/#consume-syntax-descriptor, | and any other character are treated basically equivalently, so it means that <length> <percentage> is really a syntax for <length> | <percentage>, rather than a <length>, then a <percentage>.
Is this intentional? Is there any reason we're closing the gate to more expressive syntaxes that allow multiple keywords?