@tbela99/css-parser 0.9.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/CHANGELOG.md +265 -0
  2. package/LICENSE.md +1 -1
  3. package/README.md +29 -17
  4. package/dist/index-umd-web.js +7461 -4360
  5. package/dist/index.cjs +8608 -5507
  6. package/dist/index.d.ts +203 -61
  7. package/dist/lib/ast/expand.js +2 -1
  8. package/dist/lib/ast/features/calc.js +19 -11
  9. package/dist/lib/ast/features/index.js +1 -0
  10. package/dist/lib/ast/features/inlinecssvariables.js +47 -29
  11. package/dist/lib/ast/features/prefix.js +117 -91
  12. package/dist/lib/ast/features/shorthand.js +34 -14
  13. package/dist/lib/ast/features/transform.js +67 -0
  14. package/dist/lib/ast/features/type.js +7 -0
  15. package/dist/lib/ast/math/expression.js +20 -10
  16. package/dist/lib/ast/math/math.js +20 -2
  17. package/dist/lib/ast/minify.js +209 -80
  18. package/dist/lib/ast/transform/compute.js +337 -0
  19. package/dist/lib/ast/transform/convert.js +33 -0
  20. package/dist/lib/ast/transform/matrix.js +112 -0
  21. package/dist/lib/ast/transform/minify.js +296 -0
  22. package/dist/lib/ast/transform/perspective.js +10 -0
  23. package/dist/lib/ast/transform/rotate.js +40 -0
  24. package/dist/lib/ast/transform/scale.js +32 -0
  25. package/dist/lib/ast/transform/skew.js +23 -0
  26. package/dist/lib/ast/transform/translate.js +32 -0
  27. package/dist/lib/ast/transform/utils.js +198 -0
  28. package/dist/lib/ast/types.js +18 -15
  29. package/dist/lib/ast/walk.js +54 -22
  30. package/dist/lib/fs/resolve.js +10 -0
  31. package/dist/lib/parser/declaration/list.js +48 -45
  32. package/dist/lib/parser/declaration/map.js +1 -0
  33. package/dist/lib/parser/declaration/set.js +2 -1
  34. package/dist/lib/parser/parse.js +449 -340
  35. package/dist/lib/parser/tokenize.js +147 -72
  36. package/dist/lib/parser/utils/declaration.js +5 -4
  37. package/dist/lib/parser/utils/type.js +2 -1
  38. package/dist/lib/renderer/color/a98rgb.js +2 -1
  39. package/dist/lib/renderer/color/{colormix.js → color-mix.js} +16 -7
  40. package/dist/lib/renderer/color/color.js +264 -170
  41. package/dist/lib/renderer/color/hex.js +19 -8
  42. package/dist/lib/renderer/color/hsl.js +9 -3
  43. package/dist/lib/renderer/color/hwb.js +2 -1
  44. package/dist/lib/renderer/color/lab.js +10 -1
  45. package/dist/lib/renderer/color/lch.js +10 -1
  46. package/dist/lib/renderer/color/oklab.js +10 -1
  47. package/dist/lib/renderer/color/oklch.js +10 -1
  48. package/dist/lib/renderer/color/p3.js +2 -1
  49. package/dist/lib/renderer/color/rec2020.js +2 -1
  50. package/dist/lib/renderer/color/relativecolor.js +27 -32
  51. package/dist/lib/renderer/color/rgb.js +14 -10
  52. package/dist/lib/renderer/color/srgb.js +48 -23
  53. package/dist/lib/renderer/color/utils/components.js +18 -6
  54. package/dist/lib/renderer/color/utils/constants.js +47 -3
  55. package/dist/lib/renderer/color/xyz.js +2 -1
  56. package/dist/lib/renderer/color/xyzd50.js +2 -1
  57. package/dist/lib/renderer/render.js +108 -43
  58. package/dist/lib/syntax/syntax.js +267 -136
  59. package/dist/lib/validation/at-rules/container.js +81 -103
  60. package/dist/lib/validation/at-rules/counter-style.js +9 -8
  61. package/dist/lib/validation/at-rules/custom-media.js +13 -15
  62. package/dist/lib/validation/at-rules/document.js +22 -27
  63. package/dist/lib/validation/at-rules/font-feature-values.js +8 -8
  64. package/dist/lib/validation/at-rules/import.js +30 -81
  65. package/dist/lib/validation/at-rules/keyframes.js +19 -23
  66. package/dist/lib/validation/at-rules/layer.js +5 -5
  67. package/dist/lib/validation/at-rules/media.js +42 -53
  68. package/dist/lib/validation/at-rules/namespace.js +19 -23
  69. package/dist/lib/validation/at-rules/page-margin-box.js +15 -18
  70. package/dist/lib/validation/at-rules/page.js +8 -7
  71. package/dist/lib/validation/at-rules/supports.js +73 -82
  72. package/dist/lib/validation/at-rules/when.js +32 -36
  73. package/dist/lib/validation/atrule.js +15 -18
  74. package/dist/lib/validation/config.js +24 -1
  75. package/dist/lib/validation/config.json.js +563 -63
  76. package/dist/lib/validation/parser/parse.js +196 -185
  77. package/dist/lib/validation/parser/types.js +1 -1
  78. package/dist/lib/validation/selector.js +8 -5
  79. package/dist/lib/validation/syntax.js +724 -1405
  80. package/dist/lib/validation/syntaxes/complex-selector-list.js +10 -11
  81. package/dist/lib/validation/syntaxes/complex-selector.js +10 -11
  82. package/dist/lib/validation/syntaxes/compound-selector.js +40 -50
  83. package/dist/lib/validation/syntaxes/family-name.js +9 -8
  84. package/dist/lib/validation/syntaxes/keyframe-block-list.js +6 -5
  85. package/dist/lib/validation/syntaxes/keyframe-selector.js +23 -105
  86. package/dist/lib/validation/syntaxes/layer-name.js +6 -5
  87. package/dist/lib/validation/syntaxes/relative-selector-list.js +7 -6
  88. package/dist/lib/validation/syntaxes/relative-selector.js +17 -15
  89. package/dist/lib/validation/syntaxes/url.js +18 -22
  90. package/dist/lib/validation/utils/list.js +20 -2
  91. package/dist/lib/validation/utils/whitespace.js +2 -1
  92. package/dist/node/index.js +4 -2
  93. package/dist/node/load.js +6 -1
  94. package/dist/web/index.js +4 -2
  95. package/dist/web/load.js +5 -0
  96. package/package.json +16 -15
  97. package/dist/lib/renderer/color/prophotoRgb.js +0 -56
  98. package/dist/lib/validation/declaration.js +0 -94
  99. package/dist/lib/validation/syntaxes/image.js +0 -29
@@ -314,6 +314,9 @@ var declarations = {
314
314
  "align-tracks": {
315
315
  syntax: "[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#"
316
316
  },
317
+ "alignment-baseline": {
318
+ syntax: "baseline | alphabetic | ideographic | middle | central | mathematical | text-before-edge | text-after-edge"
319
+ },
317
320
  all: {
318
321
  syntax: "initial | inherit | unset | revert | revert-layer"
319
322
  },
@@ -413,6 +416,9 @@ var declarations = {
413
416
  "background-size": {
414
417
  syntax: "<bg-size>#"
415
418
  },
419
+ "baseline-shift": {
420
+ syntax: "<length-percentage> | sub | super | baseline"
421
+ },
416
422
  "block-size": {
417
423
  syntax: "<'width'>"
418
424
  },
@@ -732,7 +738,7 @@ var declarations = {
732
738
  syntax: "none | <custom-ident>+"
733
739
  },
734
740
  "container-type": {
735
- syntax: "normal | size | inline-size"
741
+ syntax: "normal | [ [ size | inline-size ] || scroll-state ]"
736
742
  },
737
743
  content: {
738
744
  syntax: "normal | none | [ <content-replacement> | <content-list> ] [/ [ <string> | <counter> ]+ ]?"
@@ -765,7 +771,7 @@ var declarations = {
765
771
  syntax: "ltr | rtl"
766
772
  },
767
773
  display: {
768
- syntax: "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>"
774
+ syntax: "[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>| <-non-standard-display>"
769
775
  },
770
776
  "dominant-baseline": {
771
777
  syntax: "auto | text-bottom | alphabetic | ideographic | middle | central | mathematical | hanging | text-top"
@@ -819,7 +825,7 @@ var declarations = {
819
825
  syntax: "<'opacity'>"
820
826
  },
821
827
  font: {
822
- syntax: "[ [ <'font-style'> || <font-variant-css21> || <'font-weight'> || <'font-stretch'> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'> ] | caption | icon | menu | message-box | small-caption | status-bar"
828
+ syntax: "[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>"
823
829
  },
824
830
  "font-family": {
825
831
  syntax: "[ <family-name> | <generic-family> ]#"
@@ -840,7 +846,7 @@ var declarations = {
840
846
  syntax: "normal | light | dark | <palette-identifier> | <palette-mix()>"
841
847
  },
842
848
  "font-size": {
843
- syntax: "<absolute-size> | <relative-size> | <length-percentage>"
849
+ syntax: "<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math"
844
850
  },
845
851
  "font-size-adjust": {
846
852
  syntax: "none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]"
@@ -899,6 +905,9 @@ var declarations = {
899
905
  "font-weight": {
900
906
  syntax: "<font-weight-absolute> | bolder | lighter"
901
907
  },
908
+ "font-width": {
909
+ syntax: "normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded"
910
+ },
902
911
  "forced-color-adjust": {
903
912
  syntax: "auto | none | preserve-parent-color"
904
913
  },
@@ -978,7 +987,7 @@ var declarations = {
978
987
  syntax: "from-image | <angle> | [ <angle>? flip ]"
979
988
  },
980
989
  "image-rendering": {
981
- syntax: "auto | crisp-edges | pixelated | smooth"
990
+ syntax: "auto | crisp-edges | pixelated | smooth| optimizeSpeed | optimizeQuality | <-non-standard-image-rendering>"
982
991
  },
983
992
  "image-resolution": {
984
993
  syntax: "[ from-image || <resolution> ] && snap?"
@@ -1214,6 +1223,9 @@ var declarations = {
1214
1223
  "object-position": {
1215
1224
  syntax: "<position>"
1216
1225
  },
1226
+ "object-view-box": {
1227
+ syntax: "none | <basic-shape-rect>"
1228
+ },
1217
1229
  offset: {
1218
1230
  syntax: "[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?"
1219
1231
  },
@@ -1368,7 +1380,7 @@ var declarations = {
1368
1380
  syntax: "auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit"
1369
1381
  },
1370
1382
  position: {
1371
- syntax: "static | relative | absolute | sticky | fixed"
1383
+ syntax: "static | relative | absolute | sticky | fixed| -webkit-sticky"
1372
1384
  },
1373
1385
  "position-anchor": {
1374
1386
  syntax: "auto | <anchor-name>"
@@ -1415,6 +1427,9 @@ var declarations = {
1415
1427
  "ruby-merge": {
1416
1428
  syntax: "separate | collapse | auto"
1417
1429
  },
1430
+ "ruby-overhang": {
1431
+ syntax: "auto | none"
1432
+ },
1418
1433
  "ruby-position": {
1419
1434
  syntax: "[ alternate || [ over | under ] ] | inter-character"
1420
1435
  },
@@ -1430,6 +1445,9 @@ var declarations = {
1430
1445
  "scroll-behavior": {
1431
1446
  syntax: "auto | smooth"
1432
1447
  },
1448
+ "scroll-initial-target": {
1449
+ syntax: "none | nearest"
1450
+ },
1433
1451
  "scroll-margin": {
1434
1452
  syntax: "<length>{1,4}"
1435
1453
  },
@@ -1565,6 +1583,9 @@ var declarations = {
1565
1583
  stroke: {
1566
1584
  syntax: "<paint>"
1567
1585
  },
1586
+ "stroke-color": {
1587
+ syntax: "<color>"
1588
+ },
1568
1589
  "stroke-dasharray": {
1569
1590
  syntax: "none | <dasharray>"
1570
1591
  },
@@ -1743,7 +1764,7 @@ var declarations = {
1743
1764
  syntax: "baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>"
1744
1765
  },
1745
1766
  "view-timeline": {
1746
- syntax: "[ <'view-timeline-name'> <'view-timeline-axis'>? ]#"
1767
+ syntax: "[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#"
1747
1768
  },
1748
1769
  "view-timeline-axis": {
1749
1770
  syntax: "[ block | inline | x | y ]#"
@@ -1752,10 +1773,13 @@ var declarations = {
1752
1773
  syntax: "[ [ auto | <length-percentage> ]{1,2} ]#"
1753
1774
  },
1754
1775
  "view-timeline-name": {
1755
- syntax: "none | <dashed-ident>#"
1776
+ syntax: "[ none | <dashed-ident> ]#"
1777
+ },
1778
+ "view-transition-class": {
1779
+ syntax: "none | <custom-ident>+"
1756
1780
  },
1757
1781
  "view-transition-name": {
1758
- syntax: "none | <custom-ident>"
1782
+ syntax: "none | <custom-ident> | match-element"
1759
1783
  },
1760
1784
  visibility: {
1761
1785
  syntax: "visible | hidden | collapse"
@@ -1798,6 +1822,165 @@ var declarations = {
1798
1822
  },
1799
1823
  zoom: {
1800
1824
  syntax: "normal | reset | <number [0,∞]> || <percentage [0,∞]>"
1825
+ },
1826
+ "-moz-background-clip": {
1827
+ syntax: "padding | border"
1828
+ },
1829
+ "-moz-border-radius-bottomleft": {
1830
+ syntax: "<'border-bottom-left-radius'>"
1831
+ },
1832
+ "-moz-border-radius-bottomright": {
1833
+ syntax: "<'border-bottom-right-radius'>"
1834
+ },
1835
+ "-moz-border-radius-topleft": {
1836
+ syntax: "<'border-top-left-radius'>"
1837
+ },
1838
+ "-moz-border-radius-topright": {
1839
+ syntax: "<'border-bottom-right-radius'>"
1840
+ },
1841
+ "-moz-control-character-visibility": {
1842
+ syntax: "visible | hidden"
1843
+ },
1844
+ "-moz-osx-font-smoothing": {
1845
+ syntax: "auto | grayscale"
1846
+ },
1847
+ "-moz-user-select": {
1848
+ syntax: "none | text | all | -moz-none"
1849
+ },
1850
+ "-ms-flex-align": {
1851
+ syntax: "start | end | center | baseline | stretch"
1852
+ },
1853
+ "-ms-flex-item-align": {
1854
+ syntax: "auto | start | end | center | baseline | stretch"
1855
+ },
1856
+ "-ms-flex-line-pack": {
1857
+ syntax: "start | end | center | justify | distribute | stretch"
1858
+ },
1859
+ "-ms-flex-negative": {
1860
+ syntax: "<'flex-shrink'>"
1861
+ },
1862
+ "-ms-flex-pack": {
1863
+ syntax: "start | end | center | justify | distribute"
1864
+ },
1865
+ "-ms-flex-order": {
1866
+ syntax: "<integer>"
1867
+ },
1868
+ "-ms-flex-positive": {
1869
+ syntax: "<'flex-grow'>"
1870
+ },
1871
+ "-ms-flex-preferred-size": {
1872
+ syntax: "<'flex-basis'>"
1873
+ },
1874
+ "-ms-interpolation-mode": {
1875
+ syntax: "nearest-neighbor | bicubic"
1876
+ },
1877
+ "-ms-grid-column-align": {
1878
+ syntax: "start | end | center | stretch"
1879
+ },
1880
+ "-ms-grid-row-align": {
1881
+ syntax: "start | end | center | stretch"
1882
+ },
1883
+ "-ms-hyphenate-limit-last": {
1884
+ syntax: "none | always | column | page | spread"
1885
+ },
1886
+ "-webkit-background-clip": {
1887
+ syntax: "[ <visual-box> | border | padding | content | text ]#"
1888
+ },
1889
+ "-webkit-column-break-after": {
1890
+ syntax: "always | auto | avoid"
1891
+ },
1892
+ "-webkit-column-break-before": {
1893
+ syntax: "always | auto | avoid"
1894
+ },
1895
+ "-webkit-column-break-inside": {
1896
+ syntax: "always | auto | avoid"
1897
+ },
1898
+ "-webkit-font-smoothing": {
1899
+ syntax: "auto | none | antialiased | subpixel-antialiased"
1900
+ },
1901
+ "-webkit-mask-box-image": {
1902
+ syntax: "[ <url> | <gradient> | none ] [ <length-percentage>{4} <-webkit-mask-box-repeat>{2} ]?"
1903
+ },
1904
+ "-webkit-print-color-adjust": {
1905
+ syntax: "economy | exact"
1906
+ },
1907
+ "-webkit-text-security": {
1908
+ syntax: "none | circle | disc | square"
1909
+ },
1910
+ "-webkit-user-drag": {
1911
+ syntax: "none | element | auto"
1912
+ },
1913
+ behavior: {
1914
+ syntax: "<url>+"
1915
+ },
1916
+ cue: {
1917
+ syntax: "<'cue-before'> <'cue-after'>?"
1918
+ },
1919
+ "cue-after": {
1920
+ syntax: "<url> <decibel>? | none"
1921
+ },
1922
+ "cue-before": {
1923
+ syntax: "<url> <decibel>? | none"
1924
+ },
1925
+ "glyph-orientation-horizontal": {
1926
+ syntax: "<angle>"
1927
+ },
1928
+ "glyph-orientation-vertical": {
1929
+ syntax: "<angle>"
1930
+ },
1931
+ kerning: {
1932
+ syntax: "auto | <svg-length>"
1933
+ },
1934
+ pause: {
1935
+ syntax: "<'pause-before'> <'pause-after'>?"
1936
+ },
1937
+ "pause-after": {
1938
+ syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
1939
+ },
1940
+ "pause-before": {
1941
+ syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
1942
+ },
1943
+ "position-try-options": {
1944
+ syntax: "<'position-try-fallbacks'>"
1945
+ },
1946
+ rest: {
1947
+ syntax: "<'rest-before'> <'rest-after'>?"
1948
+ },
1949
+ "rest-after": {
1950
+ syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
1951
+ },
1952
+ "rest-before": {
1953
+ syntax: "<time> | none | x-weak | weak | medium | strong | x-strong"
1954
+ },
1955
+ speak: {
1956
+ syntax: "auto | never | always"
1957
+ },
1958
+ "voice-balance": {
1959
+ syntax: "<number> | left | center | right | leftwards | rightwards"
1960
+ },
1961
+ "voice-duration": {
1962
+ syntax: "auto | <time>"
1963
+ },
1964
+ "voice-family": {
1965
+ syntax: "[ [ <family-name> | <generic-voice> ] , ]* [ <family-name> | <generic-voice> ] | preserve"
1966
+ },
1967
+ "voice-pitch": {
1968
+ syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
1969
+ },
1970
+ "voice-range": {
1971
+ syntax: "<frequency> && absolute | [ [ x-low | low | medium | high | x-high ] || [ <frequency> | <semitones> | <percentage> ] ]"
1972
+ },
1973
+ "voice-rate": {
1974
+ syntax: "[ normal | x-slow | slow | medium | fast | x-fast ] || <percentage>"
1975
+ },
1976
+ "voice-stress": {
1977
+ syntax: "normal | strong | moderate | none | reduced"
1978
+ },
1979
+ "voice-volume": {
1980
+ syntax: "silent | [ [ x-soft | soft | medium | loud | x-loud ] || <decibel> ]"
1981
+ },
1982
+ "white-space-trim": {
1983
+ syntax: "none | discard-before || discard-after || discard-inner"
1801
1984
  }
1802
1985
  };
1803
1986
  var functions = {
@@ -1850,7 +2033,7 @@ var functions = {
1850
2033
  syntax: "color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2})"
1851
2034
  },
1852
2035
  "conic-gradient": {
1853
- syntax: "conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
2036
+ syntax: "conic-gradient( [ <conic-gradient-syntax> ] )"
1854
2037
  },
1855
2038
  contrast: {
1856
2039
  syntax: "contrast( [ <number> | <percentage> ]? )"
@@ -1867,6 +2050,9 @@ var functions = {
1867
2050
  "cross-fade": {
1868
2051
  syntax: "cross-fade( <cf-mixing-image> , <cf-final-image>? )"
1869
2052
  },
2053
+ "cubic-bezier": {
2054
+ syntax: "cubic-bezier( [ <number [0,1]>, <number> ]#{2} )"
2055
+ },
1870
2056
  "drop-shadow": {
1871
2057
  syntax: "drop-shadow( [ <color>? && <length>{2,3} ] )"
1872
2058
  },
@@ -1930,8 +2116,11 @@ var functions = {
1930
2116
  "light-dark": {
1931
2117
  syntax: "light-dark( <color>, <color> )"
1932
2118
  },
2119
+ linear: {
2120
+ syntax: "linear( [ <number> && <percentage>{0,2} ]# )"
2121
+ },
1933
2122
  "linear-gradient": {
1934
- syntax: "linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
2123
+ syntax: "linear-gradient( [ <linear-gradient-syntax> ] )"
1935
2124
  },
1936
2125
  log: {
1937
2126
  syntax: "log( <calc-sum>, <calc-sum>? )"
@@ -1982,7 +2171,7 @@ var functions = {
1982
2171
  syntax: "pow( <calc-sum>, <calc-sum> )"
1983
2172
  },
1984
2173
  "radial-gradient": {
1985
- syntax: "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
2174
+ syntax: "radial-gradient( [ <radial-gradient-syntax> ] )"
1986
2175
  },
1987
2176
  ray: {
1988
2177
  syntax: "ray( <angle> && <ray-size>? && contain? && [at <position>]? )"
@@ -1994,13 +2183,13 @@ var functions = {
1994
2183
  syntax: "rem( <calc-sum>, <calc-sum> )"
1995
2184
  },
1996
2185
  "repeating-conic-gradient": {
1997
- syntax: "repeating-conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
2186
+ syntax: "repeating-conic-gradient( [ <conic-gradient-syntax> ] )"
1998
2187
  },
1999
2188
  "repeating-linear-gradient": {
2000
- syntax: "repeating-linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
2189
+ syntax: "repeating-linear-gradient( [ <linear-gradient-syntax> ] )"
2001
2190
  },
2002
2191
  "repeating-radial-gradient": {
2003
- syntax: "repeating-radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
2192
+ syntax: "repeating-radial-gradient( [ <radial-gradient-syntax> ] )"
2004
2193
  },
2005
2194
  rgb: {
2006
2195
  syntax: "rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? ) | rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )"
@@ -2068,6 +2257,9 @@ var functions = {
2068
2257
  sqrt: {
2069
2258
  syntax: "sqrt( <calc-sum> )"
2070
2259
  },
2260
+ steps: {
2261
+ syntax: "steps( <integer>, <step-position>? )"
2262
+ },
2071
2263
  symbols: {
2072
2264
  syntax: "symbols( <symbols-type>? [ <string> | <image> ]+ )"
2073
2265
  },
@@ -2143,13 +2335,13 @@ var syntaxes = {
2143
2335
  syntax: "<angle> | <percentage>"
2144
2336
  },
2145
2337
  "angular-color-hint": {
2146
- syntax: "<angle-percentage>"
2338
+ syntax: "<angle-percentage> | <zero>"
2147
2339
  },
2148
2340
  "angular-color-stop": {
2149
- syntax: "<color> && <color-stop-angle>?"
2341
+ syntax: "<color> <color-stop-angle>?"
2150
2342
  },
2151
2343
  "angular-color-stop-list": {
2152
- syntax: "[ <angular-color-stop> [, <angular-color-hint>]? ]# , <angular-color-stop>"
2344
+ syntax: "<angular-color-stop> , [ <angular-color-hint>? , <angular-color-stop> ]#?"
2153
2345
  },
2154
2346
  "animateable-feature": {
2155
2347
  syntax: "scroll-position | contents | <custom-ident>"
@@ -2191,7 +2383,10 @@ var syntaxes = {
2191
2383
  syntax: "[ first | last ]? baseline"
2192
2384
  },
2193
2385
  "basic-shape": {
2194
- syntax: "<inset()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
2386
+ syntax: "<inset()> | <xywh()> | <rect()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
2387
+ },
2388
+ "basic-shape-rect": {
2389
+ syntax: "<inset()> | <rect()> | <xywh()>"
2195
2390
  },
2196
2391
  "bg-clip": {
2197
2392
  syntax: "<visual-box> | border-area | text"
@@ -2278,13 +2473,13 @@ var syntaxes = {
2278
2473
  syntax: "<color-stop-length> | <color-stop-angle>"
2279
2474
  },
2280
2475
  "color-stop-angle": {
2281
- syntax: "<angle-percentage>{1,2}"
2476
+ syntax: "[ <angle-percentage> | <zero> ]{1,2}"
2282
2477
  },
2283
2478
  "color-stop-length": {
2284
2479
  syntax: "<length-percentage>{1,2}"
2285
2480
  },
2286
2481
  "color-stop-list": {
2287
- syntax: "[ <linear-color-stop> [, <linear-color-hint>]? ]# , <linear-color-stop>"
2482
+ syntax: "<linear-color-stop> , [ <linear-color-hint>? , <linear-color-stop> ]#?"
2288
2483
  },
2289
2484
  "colorspace-params": {
2290
2485
  syntax: "[<custom-params> | <predefined-rgb-params> | <xyz-params>]"
@@ -2317,7 +2512,19 @@ var syntaxes = {
2317
2512
  syntax: "<compound-selector>#"
2318
2513
  },
2319
2514
  "conic-gradient()": {
2320
- syntax: "conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
2515
+ syntax: "conic-gradient( [ <conic-gradient-syntax> ] )"
2516
+ },
2517
+ "conic-gradient-syntax": {
2518
+ syntax: "[ [ [ from [ <angle> | <zero> ] ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <angular-color-stop-list>"
2519
+ },
2520
+ "container-condition": {
2521
+ syntax: "[ <container-name>? <container-query>? ]!"
2522
+ },
2523
+ "container-name": {
2524
+ syntax: "<custom-ident>"
2525
+ },
2526
+ "container-query": {
2527
+ syntax: "not <query-in-parens> | <query-in-parens> [ [ and <query-in-parens> ]* | [ or <query-in-parens> ]* ]"
2321
2528
  },
2322
2529
  "content-distribution": {
2323
2530
  syntax: "space-between | space-around | space-evenly | stretch"
@@ -2364,8 +2571,11 @@ var syntaxes = {
2364
2571
  "cross-fade()": {
2365
2572
  syntax: "cross-fade( <cf-mixing-image> , <cf-final-image>? )"
2366
2573
  },
2367
- "cubic-bezier-timing-function": {
2368
- syntax: "ease | ease-in | ease-out | ease-in-out | cubic-bezier(<number [0,1]>, <number>, <number [0,1]>, <number>)"
2574
+ "cubic-bezier()": {
2575
+ syntax: "cubic-bezier( [ <number [0,1]>, <number> ]#{2} )"
2576
+ },
2577
+ "cubic-bezier-easing-function": {
2578
+ syntax: "ease | ease-in | ease-out | ease-in-out | <cubic-bezier()>"
2369
2579
  },
2370
2580
  "custom-color-space": {
2371
2581
  syntax: "<dashed-ident>"
@@ -2407,7 +2617,7 @@ var syntaxes = {
2407
2617
  syntax: "drop-shadow( [ <color>? && <length>{2,3} ] )"
2408
2618
  },
2409
2619
  "easing-function": {
2410
- syntax: "linear | <cubic-bezier-timing-function> | <step-timing-function>"
2620
+ syntax: "<linear-easing-function> | <cubic-bezier-easing-function> | <step-easing-function>"
2411
2621
  },
2412
2622
  "east-asian-variant-values": {
2413
2623
  syntax: "[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ]"
@@ -2421,9 +2631,6 @@ var syntaxes = {
2421
2631
  "ellipse()": {
2422
2632
  syntax: "ellipse( <radial-size>? [ at <position> ]? )"
2423
2633
  },
2424
- "ending-shape": {
2425
- syntax: "circle | ellipse"
2426
- },
2427
2634
  "env()": {
2428
2635
  syntax: "env( <custom-ident> , <declaration-value>? )"
2429
2636
  },
@@ -2481,23 +2688,32 @@ var syntaxes = {
2481
2688
  "font-stretch-absolute": {
2482
2689
  syntax: "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | <percentage>"
2483
2690
  },
2484
- "font-variant-css21": {
2485
- syntax: "[ normal | small-caps ]"
2691
+ "font-variant-css2": {
2692
+ syntax: "normal | small-caps"
2486
2693
  },
2487
2694
  "font-weight-absolute": {
2488
2695
  syntax: "normal | bold | <number [1,1000]>"
2489
2696
  },
2697
+ "font-width-css3": {
2698
+ syntax: "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded"
2699
+ },
2700
+ "form-control-identifier": {
2701
+ syntax: "select"
2702
+ },
2490
2703
  "frequency-percentage": {
2491
2704
  syntax: "<frequency> | <percentage>"
2492
2705
  },
2706
+ "generic-complete": {
2707
+ syntax: "serif | sans-serif | system-ui | cursive | fantasy | math | monospace"
2708
+ },
2493
2709
  "general-enclosed": {
2494
2710
  syntax: "[ <function-token> <any-value> ) ] | ( <ident> <any-value> )"
2495
2711
  },
2496
2712
  "generic-family": {
2497
- syntax: "serif | sans-serif | cursive | fantasy | monospace"
2713
+ syntax: "<generic-complete> | <generic-incomplete> | emoji | fangsong"
2498
2714
  },
2499
- "generic-name": {
2500
- syntax: "serif | sans-serif | cursive | fantasy | monospace"
2715
+ "generic-incomplete": {
2716
+ syntax: "ui-serif | ui-sans-serif | ui-monospace | ui-rounded"
2501
2717
  },
2502
2718
  "geometry-box": {
2503
2719
  syntax: "<shape-box> | fill-box | stroke-box | view-box"
@@ -2538,9 +2754,6 @@ var syntaxes = {
2538
2754
  "id-selector": {
2539
2755
  syntax: "<hash-token>"
2540
2756
  },
2541
- integer: {
2542
- syntax: "<number-token>"
2543
- },
2544
2757
  image: {
2545
2758
  syntax: "<url> | <image()> | <image-set()> | <element()> | <paint()> | <cross-fade()> | <gradient>"
2546
2759
  },
@@ -2565,17 +2778,17 @@ var syntaxes = {
2565
2778
  "inset()": {
2566
2779
  syntax: "inset( <length-percentage>{1,4} [ round <'border-radius'> ]? )"
2567
2780
  },
2781
+ integer: {
2782
+ syntax: "<number-token>"
2783
+ },
2568
2784
  "invert()": {
2569
2785
  syntax: "invert( [ <number> | <percentage> ]? )"
2570
2786
  },
2571
2787
  "keyframe-block": {
2572
2788
  syntax: "<keyframe-selector># {\n <declaration-list>\n}"
2573
2789
  },
2574
- "keyframe-block-list": {
2575
- syntax: "<keyframe-block>+"
2576
- },
2577
2790
  "keyframe-selector": {
2578
- syntax: "from | to | <percentage> | <timeline-range-name> <percentage>"
2791
+ syntax: "from | to | <percentage [0,100]> | <timeline-range-name> <percentage>"
2579
2792
  },
2580
2793
  "keyframes-name": {
2581
2794
  syntax: "<custom-ident> | <string>"
@@ -2616,14 +2829,23 @@ var syntaxes = {
2616
2829
  "line-width": {
2617
2830
  syntax: "<length> | thin | medium | thick"
2618
2831
  },
2832
+ "linear()": {
2833
+ syntax: "linear( [ <number> && <percentage>{0,2} ]# )"
2834
+ },
2619
2835
  "linear-color-hint": {
2620
2836
  syntax: "<length-percentage>"
2621
2837
  },
2622
2838
  "linear-color-stop": {
2623
2839
  syntax: "<color> <color-stop-length>?"
2624
2840
  },
2841
+ "linear-easing-function": {
2842
+ syntax: "linear | <linear()>"
2843
+ },
2625
2844
  "linear-gradient()": {
2626
- syntax: "linear-gradient( [ [ <angle> | to <side-or-corner> ] || <color-interpolation-method> ]? , <color-stop-list> )"
2845
+ syntax: "linear-gradient( [ <linear-gradient-syntax> ] )"
2846
+ },
2847
+ "linear-gradient-syntax": {
2848
+ syntax: "[ [ <angle> | <zero> | to <side-or-corner> ] || <color-interpolation-method> ]? , <color-stop-list>"
2627
2849
  },
2628
2850
  "log()": {
2629
2851
  syntax: "log( <calc-sum>, <calc-sum>? )"
@@ -2709,15 +2931,6 @@ var syntaxes = {
2709
2931
  "n-dimension": {
2710
2932
  syntax: "<dimension-token>"
2711
2933
  },
2712
- "ndash-dimension": {
2713
- syntax: "<dimension-token>"
2714
- },
2715
- "ndashdigit-dimension": {
2716
- syntax: "<dimension-token>"
2717
- },
2718
- "ndashdigit-ident": {
2719
- syntax: "<ident-token>"
2720
- },
2721
2934
  "name-repeat": {
2722
2935
  syntax: "repeat( [ <integer [1,∞]> | auto-fill ], <line-names>+ )"
2723
2936
  },
@@ -2727,6 +2940,15 @@ var syntaxes = {
2727
2940
  "namespace-prefix": {
2728
2941
  syntax: "<ident>"
2729
2942
  },
2943
+ "ndash-dimension": {
2944
+ syntax: "<dimension-token>"
2945
+ },
2946
+ "ndashdigit-dimension": {
2947
+ syntax: "<dimension-token>"
2948
+ },
2949
+ "ndashdigit-ident": {
2950
+ syntax: "<ident-token>"
2951
+ },
2730
2952
  "ns-prefix": {
2731
2953
  syntax: "[ <ident-token> | '*' ]? '|'"
2732
2954
  },
@@ -2835,6 +3057,9 @@ var syntaxes = {
2835
3057
  "pseudo-page": {
2836
3058
  syntax: ": [ left | right | first | blank ]"
2837
3059
  },
3060
+ "query-in-parens": {
3061
+ syntax: "( <container-query> ) | ( <size-feature> ) | style( <style-query> ) | scroll-state( <scroll-state-query> ) | <general-enclosed>"
3062
+ },
2838
3063
  quote: {
2839
3064
  syntax: "open-quote | close-quote | no-open-quote | no-close-quote"
2840
3065
  },
@@ -2842,7 +3067,13 @@ var syntaxes = {
2842
3067
  syntax: "closest-corner | closest-side | farthest-corner | farthest-side"
2843
3068
  },
2844
3069
  "radial-gradient()": {
2845
- syntax: "radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
3070
+ syntax: "radial-gradient( [ <radial-gradient-syntax> ] )"
3071
+ },
3072
+ "radial-gradient-syntax": {
3073
+ syntax: "[ [ [ <radial-shape> || <radial-size> ]? [ at <position> ]? ] || <color-interpolation-method> ]? , <color-stop-list>"
3074
+ },
3075
+ "radial-shape": {
3076
+ syntax: "circle | ellipse"
2846
3077
  },
2847
3078
  "radial-size": {
2848
3079
  syntax: "<radial-extent> | <length [0,∞]> | <length-percentage [0,∞]>{2}"
@@ -2856,6 +3087,9 @@ var syntaxes = {
2856
3087
  "ray-size": {
2857
3088
  syntax: "closest-side | closest-corner | farthest-side | farthest-corner | sides"
2858
3089
  },
3090
+ "rect()": {
3091
+ syntax: "rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )"
3092
+ },
2859
3093
  "rectangular-color-space": {
2860
3094
  syntax: "srgb | srgb-linear | display-p3 | a98-rgb | prophoto-rgb | rec2020 | lab | oklab | xyz | xyz-d50 | xyz-d65"
2861
3095
  },
@@ -2868,9 +3102,6 @@ var syntaxes = {
2868
3102
  "relative-size": {
2869
3103
  syntax: "larger | smaller"
2870
3104
  },
2871
- "rect()": {
2872
- syntax: "rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )"
2873
- },
2874
3105
  "rem()": {
2875
3106
  syntax: "rem( <calc-sum>, <calc-sum> )"
2876
3107
  },
@@ -2878,13 +3109,13 @@ var syntaxes = {
2878
3109
  syntax: "repeat-x | repeat-y | [ repeat | space | round | no-repeat ]{1,2}"
2879
3110
  },
2880
3111
  "repeating-conic-gradient()": {
2881
- syntax: "repeating-conic-gradient( [ from <angle> ]? [ at <position> ]?, <angular-color-stop-list> )"
3112
+ syntax: "repeating-conic-gradient( [ <conic-gradient-syntax> ] )"
2882
3113
  },
2883
3114
  "repeating-linear-gradient()": {
2884
- syntax: "repeating-linear-gradient( [ <angle> | to <side-or-corner> ]? , <color-stop-list> )"
3115
+ syntax: "repeating-linear-gradient( [ <linear-gradient-syntax> ] )"
2885
3116
  },
2886
3117
  "repeating-radial-gradient()": {
2887
- syntax: "repeating-radial-gradient( [ <ending-shape> || <size> ]? [ at <position> ]? , <color-stop-list> )"
3118
+ syntax: "repeating-radial-gradient( [ <radial-gradient-syntax> ] )"
2888
3119
  },
2889
3120
  "reversed-counter-name": {
2890
3121
  syntax: "reversed( <counter-name> )"
@@ -2946,6 +3177,15 @@ var syntaxes = {
2946
3177
  scroller: {
2947
3178
  syntax: "root | nearest | self"
2948
3179
  },
3180
+ "scroll-state-feature": {
3181
+ syntax: "<media-query-list>"
3182
+ },
3183
+ "scroll-state-in-parens": {
3184
+ syntax: "( <scroll-state-query> ) | ( <scroll-state-feature> ) | <general-enclosed>"
3185
+ },
3186
+ "scroll-state-query": {
3187
+ syntax: "not <scroll-state-in-parens> | <scroll-state-in-parens> [ [ and <scroll-state-in-parens> ]* | [ or <scroll-state-in-parens> ]* ] | <scroll-state-feature> "
3188
+ },
2949
3189
  "selector-list": {
2950
3190
  syntax: "<complex-selector-list>"
2951
3191
  },
@@ -3012,6 +3252,9 @@ var syntaxes = {
3012
3252
  size: {
3013
3253
  syntax: "closest-side | farthest-side | closest-corner | farthest-corner | <length> | <length-percentage>{2}"
3014
3254
  },
3255
+ "size-feature": {
3256
+ syntax: "<media-query-list>"
3257
+ },
3015
3258
  "skew()": {
3016
3259
  syntax: "skew( [ <angle> | <zero> ] , [ <angle> | <zero> ]? )"
3017
3260
  },
@@ -3027,8 +3270,20 @@ var syntaxes = {
3027
3270
  "step-position": {
3028
3271
  syntax: "jump-start | jump-end | jump-none | jump-both | start | end"
3029
3272
  },
3030
- "step-timing-function": {
3031
- syntax: "step-start | step-end | steps(<integer>[, <step-position>]?)"
3273
+ "step-easing-function": {
3274
+ syntax: "step-start | step-end | <steps()>"
3275
+ },
3276
+ "steps()": {
3277
+ syntax: "steps( <integer>, <step-position>? )"
3278
+ },
3279
+ "style-feature": {
3280
+ syntax: "<declaration>"
3281
+ },
3282
+ "style-in-parens": {
3283
+ syntax: "( <style-query> ) | ( <style-feature> ) | <general-enclosed>"
3284
+ },
3285
+ "style-query": {
3286
+ syntax: "not <style-in-parens> | <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ] | <style-feature> "
3032
3287
  },
3033
3288
  "subclass-selector": {
3034
3289
  syntax: "<id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector>"
@@ -3060,6 +3315,9 @@ var syntaxes = {
3060
3315
  "system-color": {
3061
3316
  syntax: "AccentColor | AccentColorText | ActiveText | ButtonBorder | ButtonFace | ButtonText | Canvas | CanvasText | Field | FieldText | GrayText | Highlight | HighlightText | LinkText | Mark | MarkText | SelectedItem | SelectedItemText | VisitedText"
3062
3317
  },
3318
+ "system-family-name": {
3319
+ syntax: "caption | icon | menu | message-box | small-caption | status-bar"
3320
+ },
3063
3321
  "tan()": {
3064
3322
  syntax: "tan( <calc-sum> )"
3065
3323
  },
@@ -3155,6 +3413,204 @@ var syntaxes = {
3155
3413
  },
3156
3414
  "xyz-params": {
3157
3415
  syntax: "<xyz> [ <number> | <percentage> | none ]{3}"
3416
+ },
3417
+ "-legacy-gradient": {
3418
+ syntax: "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>"
3419
+ },
3420
+ "-legacy-linear-gradient": {
3421
+ syntax: "-moz-linear-gradient( <-legacy-linear-gradient-arguments> ) | -webkit-linear-gradient( <-legacy-linear-gradient-arguments> ) | -o-linear-gradient( <-legacy-linear-gradient-arguments> )"
3422
+ },
3423
+ "-legacy-repeating-linear-gradient": {
3424
+ syntax: "-moz-repeating-linear-gradient( <-legacy-linear-gradient-arguments> ) | -webkit-repeating-linear-gradient( <-legacy-linear-gradient-arguments> ) | -o-repeating-linear-gradient( <-legacy-linear-gradient-arguments> )"
3425
+ },
3426
+ "-legacy-linear-gradient-arguments": {
3427
+ syntax: "[ <angle> | <side-or-corner> ]? , <color-stop-list>"
3428
+ },
3429
+ "-legacy-radial-gradient": {
3430
+ syntax: "-moz-radial-gradient( <-legacy-radial-gradient-arguments> ) | -webkit-radial-gradient( <-legacy-radial-gradient-arguments> ) | -o-radial-gradient( <-legacy-radial-gradient-arguments> )"
3431
+ },
3432
+ "-legacy-repeating-radial-gradient": {
3433
+ syntax: "-moz-repeating-radial-gradient( <-legacy-radial-gradient-arguments> ) | -webkit-repeating-radial-gradient( <-legacy-radial-gradient-arguments> ) | -o-repeating-radial-gradient( <-legacy-radial-gradient-arguments> )"
3434
+ },
3435
+ "-legacy-radial-gradient-arguments": {
3436
+ syntax: "[ <position> , ]? [ [ [ <-legacy-radial-gradient-shape> || <-legacy-radial-gradient-size> ] | [ <length> | <percentage> ]{2} ] , ]? <color-stop-list>"
3437
+ },
3438
+ "-legacy-radial-gradient-size": {
3439
+ syntax: "closest-side | closest-corner | farthest-side | farthest-corner | contain | cover"
3440
+ },
3441
+ "-legacy-radial-gradient-shape": {
3442
+ syntax: "circle | ellipse"
3443
+ },
3444
+ "-non-standard-font": {
3445
+ syntax: "-apple-system-body | -apple-system-headline | -apple-system-subheadline | -apple-system-caption1 | -apple-system-caption2 | -apple-system-footnote | -apple-system-short-body | -apple-system-short-headline | -apple-system-short-subheadline | -apple-system-short-caption1 | -apple-system-short-footnote | -apple-system-tall-body"
3446
+ },
3447
+ "-non-standard-color": {
3448
+ syntax: "-moz-ButtonDefault | -moz-ButtonHoverFace | -moz-ButtonHoverText | -moz-CellHighlight | -moz-CellHighlightText | -moz-Combobox | -moz-ComboboxText | -moz-Dialog | -moz-DialogText | -moz-dragtargetzone | -moz-EvenTreeRow | -moz-Field | -moz-FieldText | -moz-html-CellHighlight | -moz-html-CellHighlightText | -moz-mac-accentdarkestshadow | -moz-mac-accentdarkshadow | -moz-mac-accentface | -moz-mac-accentlightesthighlight | -moz-mac-accentlightshadow | -moz-mac-accentregularhighlight | -moz-mac-accentregularshadow | -moz-mac-chrome-active | -moz-mac-chrome-inactive | -moz-mac-focusring | -moz-mac-menuselect | -moz-mac-menushadow | -moz-mac-menutextselect | -moz-MenuHover | -moz-MenuHoverText | -moz-MenuBarText | -moz-MenuBarHoverText | -moz-nativehyperlinktext | -moz-OddTreeRow | -moz-win-communicationstext | -moz-win-mediatext | -moz-activehyperlinktext | -moz-default-background-color | -moz-default-color | -moz-hyperlinktext | -moz-visitedhyperlinktext | -webkit-activelink | -webkit-focus-ring-color | -webkit-link | -webkit-text"
3449
+ },
3450
+ "-non-standard-image-rendering": {
3451
+ syntax: "optimize-contrast | -moz-crisp-edges | -o-crisp-edges | -webkit-optimize-contrast"
3452
+ },
3453
+ "-non-standard-overflow": {
3454
+ syntax: "overlay | -moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
3455
+ },
3456
+ "-non-standard-size": {
3457
+ syntax: "intrinsic | min-intrinsic | -webkit-fill-available | -webkit-fit-content | -webkit-min-content | -webkit-max-content | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content"
3458
+ },
3459
+ "-webkit-gradient()": {
3460
+ syntax: "-webkit-gradient( <-webkit-gradient-type>, <-webkit-gradient-point> [, <-webkit-gradient-point> | , <-webkit-gradient-radius>, <-webkit-gradient-point> ] [, <-webkit-gradient-radius>]? [, <-webkit-gradient-color-stop>]* )"
3461
+ },
3462
+ "-webkit-gradient-color-stop": {
3463
+ syntax: "from( <color> ) | color-stop( [ <number-zero-one> | <percentage> ] , <color> ) | to( <color> )"
3464
+ },
3465
+ "-webkit-gradient-point": {
3466
+ syntax: "[ left | center | right | <length-percentage> ] [ top | center | bottom | <length-percentage> ]"
3467
+ },
3468
+ "-webkit-gradient-radius": {
3469
+ syntax: "<length> | <percentage>"
3470
+ },
3471
+ "-webkit-gradient-type": {
3472
+ syntax: "linear | radial"
3473
+ },
3474
+ "-webkit-mask-box-repeat": {
3475
+ syntax: "repeat | stretch | round"
3476
+ },
3477
+ "-ms-filter-function-list": {
3478
+ syntax: "<-ms-filter-function>+"
3479
+ },
3480
+ "-ms-filter-function": {
3481
+ syntax: "<-ms-filter-function-progid> | <-ms-filter-function-legacy>"
3482
+ },
3483
+ "-ms-filter-function-progid": {
3484
+ syntax: "'progid:' [ <ident-token> '.' ]* [ <ident-token> | <function-token> <any-value>? ) ]"
3485
+ },
3486
+ "-ms-filter-function-legacy": {
3487
+ syntax: "<ident-token> | <function-token> <any-value>? )"
3488
+ },
3489
+ age: {
3490
+ syntax: "child | young | old"
3491
+ },
3492
+ "attr-name": {
3493
+ syntax: "<wq-name>"
3494
+ },
3495
+ "attr-fallback": {
3496
+ syntax: "<any-value>"
3497
+ },
3498
+ bottom: {
3499
+ syntax: "<length> | auto"
3500
+ },
3501
+ "generic-voice": {
3502
+ syntax: "[ <age>? <gender> <integer>? ]"
3503
+ },
3504
+ gender: {
3505
+ syntax: "male | female | neutral"
3506
+ },
3507
+ "generic-script-specific": {
3508
+ syntax: "generic(kai) | generic(fangsong) | generic(nastaliq)"
3509
+ },
3510
+ "-non-standard-generic-family": {
3511
+ syntax: "-apple-system | BlinkMacSystemFont"
3512
+ },
3513
+ "intrinsic-size-keyword": {
3514
+ syntax: "min-content | max-content | fit-content"
3515
+ },
3516
+ left: {
3517
+ syntax: "<length> | auto"
3518
+ },
3519
+ "device-cmyk()": {
3520
+ syntax: "<legacy-device-cmyk-syntax> | <modern-device-cmyk-syntax>"
3521
+ },
3522
+ "legacy-device-cmyk-syntax": {
3523
+ syntax: "device-cmyk( <number>#{4} )"
3524
+ },
3525
+ "modern-device-cmyk-syntax": {
3526
+ syntax: "device-cmyk( <cmyk-component>{4} [ / [ <alpha-value> | none ] ]? )"
3527
+ },
3528
+ "cmyk-component": {
3529
+ syntax: "<number> | <percentage> | none"
3530
+ },
3531
+ "color-space": {
3532
+ syntax: "<rectangular-color-space> | <polar-color-space> | <custom-color-space>"
3533
+ },
3534
+ right: {
3535
+ syntax: "<length> | auto"
3536
+ },
3537
+ "forgiving-selector-list": {
3538
+ syntax: "<complex-real-selector-list>"
3539
+ },
3540
+ "forgiving-relative-selector-list": {
3541
+ syntax: "<relative-real-selector-list>"
3542
+ },
3543
+ "complex-real-selector-list": {
3544
+ syntax: "<complex-real-selector>#"
3545
+ },
3546
+ "simple-selector-list": {
3547
+ syntax: "<simple-selector>#"
3548
+ },
3549
+ "relative-real-selector-list": {
3550
+ syntax: "<relative-real-selector>#"
3551
+ },
3552
+ "complex-selector-unit": {
3553
+ syntax: "[ <compound-selector>? <pseudo-compound-selector>* ]!"
3554
+ },
3555
+ "complex-real-selector": {
3556
+ syntax: "<compound-selector> [ <combinator>? <compound-selector> ]*"
3557
+ },
3558
+ "relative-real-selector": {
3559
+ syntax: "<combinator>? <complex-real-selector>"
3560
+ },
3561
+ "pseudo-compound-selector": {
3562
+ syntax: " <pseudo-element-selector> <pseudo-class-selector>*"
3563
+ },
3564
+ "simple-selector": {
3565
+ syntax: "<type-selector> | <subclass-selector>"
3566
+ },
3567
+ "legacy-pseudo-element-selector": {
3568
+ syntax: " ':' [before | after | first-line | first-letter]"
3569
+ },
3570
+ "svg-length": {
3571
+ syntax: "<percentage> | <length> | <number>"
3572
+ },
3573
+ "svg-writing-mode": {
3574
+ syntax: "lr-tb | rl-tb | tb-rl | lr | rl | tb"
3575
+ },
3576
+ top: {
3577
+ syntax: "<length> | auto"
3578
+ },
3579
+ x: {
3580
+ syntax: "<number>"
3581
+ },
3582
+ y: {
3583
+ syntax: "<number>"
3584
+ },
3585
+ declaration: {
3586
+ syntax: "<ident-token> : <declaration-value>? [ '!' important ]?"
3587
+ },
3588
+ "declaration-list": {
3589
+ syntax: "[ <declaration>? ';' ]* <declaration>?"
3590
+ },
3591
+ url: {
3592
+ syntax: "url( <string> <url-modifier>* ) | <url-token>"
3593
+ },
3594
+ "url-modifier": {
3595
+ syntax: "<ident> | <function-token> <any-value> )"
3596
+ },
3597
+ "number-zero-one": {
3598
+ syntax: "<number [0,1]>"
3599
+ },
3600
+ "number-one-or-greater": {
3601
+ syntax: "<number [1,∞]>"
3602
+ },
3603
+ "xyz-space": {
3604
+ syntax: "xyz | xyz-d50 | xyz-d65"
3605
+ },
3606
+ "style-condition": {
3607
+ syntax: "not <style-in-parens> | <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ]"
3608
+ },
3609
+ "-non-standard-display": {
3610
+ syntax: "-ms-inline-flexbox | -ms-grid | -ms-inline-grid | -webkit-flex | -webkit-inline-flex | -webkit-box | -webkit-inline-box | -moz-inline-stack | -moz-box | -moz-inline-box"
3611
+ },
3612
+ "inset-area": {
3613
+ syntax: "[ [ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] | [ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] | [ self-block-start | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] | [ start | center | end | span-start | span-end | span-all ]{1,2} | [ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2} ]"
3158
3614
  }
3159
3615
  };
3160
3616
  var selectors = {
@@ -3302,6 +3758,9 @@ var selectors = {
3302
3758
  ":only-of-type": {
3303
3759
  syntax: ":only-of-type"
3304
3760
  },
3761
+ ":open": {
3762
+ syntax: ":open"
3763
+ },
3305
3764
  ":optional": {
3306
3765
  syntax: ":optional"
3307
3766
  },
@@ -3356,6 +3815,9 @@ var selectors = {
3356
3815
  ":target": {
3357
3816
  syntax: ":target"
3358
3817
  },
3818
+ ":target-current": {
3819
+ syntax: ":target-current"
3820
+ },
3359
3821
  ":target-within": {
3360
3822
  syntax: ":target-within"
3361
3823
  },
@@ -3458,6 +3920,9 @@ var selectors = {
3458
3920
  "::before": {
3459
3921
  syntax: "::before"
3460
3922
  },
3923
+ "::checkmark": {
3924
+ syntax: "::checkmark"
3925
+ },
3461
3926
  "::cue": {
3462
3927
  syntax: "::cue"
3463
3928
  },
@@ -3494,9 +3959,21 @@ var selectors = {
3494
3959
  "::part()": {
3495
3960
  syntax: "::part( <ident>+ )"
3496
3961
  },
3962
+ "::picker-icon": {
3963
+ syntax: "::picker-icon"
3964
+ },
3965
+ "::picker()": {
3966
+ syntax: "::picker( <form-control-identifier>+ )"
3967
+ },
3497
3968
  "::placeholder": {
3498
3969
  syntax: "::placeholder"
3499
3970
  },
3971
+ "::scroll-marker": {
3972
+ syntax: "::scroll-marker"
3973
+ },
3974
+ "::scroll-marker-group": {
3975
+ syntax: "::scroll-marker-group"
3976
+ },
3500
3977
  "::selection": {
3501
3978
  syntax: "::selection"
3502
3979
  },
@@ -3523,6 +4000,12 @@ var selectors = {
3523
4000
  },
3524
4001
  "::view-transition-old()": {
3525
4002
  syntax: "::view-transition-old([ '*' | <custom-ident> ])"
4003
+ },
4004
+ ":-webkit-any()": {
4005
+ syntax: ":-webkit-any( <forgiving-selector-list> )"
4006
+ },
4007
+ ":-webkit-any-link": {
4008
+ syntax: ":-webkit-any-link"
3526
4009
  }
3527
4010
  };
3528
4011
  var atRules = {
@@ -3533,7 +4016,7 @@ var atRules = {
3533
4016
  syntax: "@counter-style <counter-style-name> {\n [ system: <counter-system>; ] ||\n [ symbols: <counter-symbols>; ] ||\n [ additive-symbols: <additive-symbols>; ] ||\n [ negative: <negative-symbol>; ] ||\n [ prefix: <prefix>; ] ||\n [ suffix: <suffix>; ] ||\n [ range: <range>; ] ||\n [ pad: <padding>; ] ||\n [ speak-as: <speak-as>; ] ||\n [ fallback: <counter-style-name>; ]\n}",
3534
4017
  descriptors: {
3535
4018
  "additive-symbols": {
3536
- syntax: "[ <integer> && <symbol> ]#"
4019
+ syntax: "[ <integer [0,∞]> && <symbol> ]#"
3537
4020
  },
3538
4021
  fallback: {
3539
4022
  syntax: "<counter-style-name>"
@@ -3542,7 +4025,7 @@ var atRules = {
3542
4025
  syntax: "<symbol> <symbol>?"
3543
4026
  },
3544
4027
  pad: {
3545
- syntax: "<integer> && <symbol>"
4028
+ syntax: "<integer [0,∞]> && <symbol>"
3546
4029
  },
3547
4030
  prefix: {
3548
4031
  syntax: "<symbol>"
@@ -3564,6 +4047,9 @@ var atRules = {
3564
4047
  }
3565
4048
  }
3566
4049
  },
4050
+ "@container": {
4051
+ syntax: "@container <container-condition># {\n <block-contents>\n}"
4052
+ },
3567
4053
  "@document": {
3568
4054
  syntax: "@document [ <url> | url-prefix(<string>) | domain(<string>) | media-document(<string>) | regexp(<string>) ]# {\n <group-rule-body>\n}"
3569
4055
  },
@@ -3632,7 +4118,7 @@ var atRules = {
3632
4118
  syntax: "@import [ <string> | <url> ]\n [ layer | layer(<layer-name>) ]?\n [ supports( [ <supports-condition> | <declaration> ] ) ]?\n <media-query-list>? ;"
3633
4119
  },
3634
4120
  "@keyframes": {
3635
- syntax: "@keyframes <keyframes-name> {\n <keyframe-block-list>\n}"
4121
+ syntax: "@keyframes <keyframes-name> {\n <qualified-rule-list>\n}"
3636
4122
  },
3637
4123
  "@layer": {
3638
4124
  syntax: "@layer [ <layer-name># | <layer-name>? {\n <stylesheet>\n} ]"
@@ -3656,7 +4142,7 @@ var atRules = {
3656
4142
  syntax: "upright | rotate-left | rotate-right "
3657
4143
  },
3658
4144
  size: {
3659
- syntax: "<length>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]"
4145
+ syntax: "<length [0,∞]>{1,2} | auto | [ <page-size> || [ portrait | landscape ] ]"
3660
4146
  }
3661
4147
  }
3662
4148
  },
@@ -3696,6 +4182,20 @@ var atRules = {
3696
4182
  syntax: "none | <custom-ident>+"
3697
4183
  }
3698
4184
  }
4185
+ },
4186
+ charset: {
4187
+ syntax: "<string>"
4188
+ },
4189
+ container: {
4190
+ syntax: "[ <container-name> ]? <container-condition>"
4191
+ },
4192
+ nest: {
4193
+ syntax: "<complex-selector-list>"
4194
+ },
4195
+ scope: {
4196
+ syntax: "[ ( <scope-start> ) ]? [ to ( <scope-end> ) ]?"
4197
+ },
4198
+ "position-try": {
3699
4199
  }
3700
4200
  };
3701
4201
  var config = {