CSS Extensions
custom-selector: <custom-arg>? : <extension-name> [ ( <custom-arg>+#? ) ]? ;
custom-arg: $ <ident-token> ;

CSS Conditional Rules Module Level 3
supports-in-parens: ( <supports-condition> ) | <supports-feature> | <general-enclosed>
supports-decl: ( <declaration> )

Selectors Level 4
pseudo-class-selector: : <ident-token> | : <function-token> <any-value> )
pseudo-element-selector: : <pseudo-class-selector> | <legacy-pseudo-element-selector>
legacy-pseudo-element-selector: : [before | after | first-line | first-letter]

Media Queries Level 4
media-in-parens: ( <media-condition> ) | ( <media-feature> ) | <general-enclosed>
mf-plain: <mf-name> : <mf-value>
general-enclosed: [ <function-token> <any-value>? ) ] | [ ( <any-value>? ) ]

CSS Custom Functions and Mixins Module Level 1
function-parameter: <custom-property-name> <css-type>? [ : <default-value> ]?

CSS Values and Units Module Level 5
calc-interpolate(): calc-interpolate( [ <progress-source> && [ by <easing-function> ]? && <easing-function>? ] , <input-position>{1,2} : <calc-sum> , [ <easing-function>? , <input-position>{1,2} : <calc-sum> ]#? )
color-interpolate(): color-interpolate( [ <progress-source> && [ by <easing-function> ]? && <easing-function>? && <color-interpolation-method>? ] , <input-position>{1,2} : <color>, [ [ <easing-function> || <color-interpolation-method> ]?, <input-position>{1,2} : <color> ]#? )
transform-interpolate(): transform-interpolate( [ <progress-source> && [ by <easing-function> ]? && <easing-function>? ], <input-position>{1,2} : <transform-list>, [ <easing-function>?, <input-position>{1,2} : <transform-list> ]#? )
interpolate(): interpolate( [ <progress-source> && [ by <easing-function> ]? && <easing-function>? ] , <input-position>{1,2} : <whole-value>, [ <easing-function>?, <input-position>{1,2} : <whole-value> ]#? ) | interpolate( <progress-source> && [ by <easing-function> ]? && <easing-function>? of <keyframes-name> )
if(): if( [ <if-branch> ; ]* <if-branch> ;? )
if-branch: <if-condition> : <declaration-value>?
if-condition: <boolean-expr[ <if-test> ]> | else
if-test: supports( [ <ident> : <declaration-value> ] | <supports-condition> ) | media( <media-feature> | <media-condition> ) | style( <style-query> )
if-args: if( [ <if-args-branch> ; ]* <if-args-branch> ;? )
if-args-branch: <declaration-value> : <declaration-value>?

CSS Animations Level 1
keyframe-block: <keyframe-selector># { <declaration-list> }

Media Queries Level 5
media-in-parens: ( <media-condition> ) | <media-feature> | <general-enclosed>
media-feature: ( [ <mf-plain> | <mf-boolean> | <mf-range> ] )
mf-plain: <mf-name> : <mf-value>
general-enclosed: [ <function-token> <any-value>? ) ] | [ ( <any-value>? ) ]

CSS Conditional Rules Module Level 5
query-in-parens: ( <container-query> ) | ( <size-feature> ) | style( <style-query> ) | scroll-state( <scroll-state-query> ) | <general-enclosed>
style-in-parens: ( <style-query> ) | ( <style-feature> ) | <general-enclosed>
style-feature-plain: <style-feature-name> : <style-feature-value>
scroll-state-in-parens: ( <scroll-state-query> ) | ( <scroll-state-feature> ) | <general-enclosed>

CSS Paged Media Module Level 3
pseudo-page: : [ left | right | first | blank ]

