[
  {
    "path": ".gitattributes",
    "content": "# This file is used to slim down the size of the\n# Sublime Text package shipped via Package Control\n# by leveraging gitattributes\n\n\n*                   text    eol=lf\n\n.github/                    export-ignore\nTests/                      export-ignore\n\n.gitattributes              export-ignore\n.gitignore                  export-ignore\n"
  },
  {
    "path": ".github/workflows/continuous-integration.yml",
    "content": "name: continuous-integration\n\non: [push]\n\njobs:\n  build:\n    name: Run syntax_tests\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@master\n      - name: Install OpenGL\n        run: sudo apt-get -y install libgl1-mesa-glx libglu1-mesa\n      - name: Download syntax_tests\n        run: wget --content-disposition https://download.sublimetext.com/st_syntax_tests_build_4073_x64.tar.bz2\n      - name: Extract syntax_tests\n        run: tar xf \"$(ls st_syntax_tests_build_*_x64.tar.bz2)\"\n      - name: Move syntax_tests\n        run: mv st_syntax_tests/syntax_tests ./\n      - name: Cleanup syntax_tests dir\n        run: rm -R st_syntax_tests*\n      - name: Cleanup git dir\n        run: rm -R .git*\n      - name: Setup 'Data/Packages/LESS'\n        run: mkdir -p 'Data/Packages/LESS'\n      - name: Move package into its own subdir within Data dir\n        run: >-\n          find .\n          -maxdepth 1\n          -mindepth 1\n          -not -name 'Data'\n          -not -name 'syntax_tests'\n          -exec mv -v '{}' 'Data/Packages/LESS/' \\;\n      - name: Run syntax tests\n        run: ./syntax_tests\n"
  },
  {
    "path": ".gitignore",
    "content": "# Compiled source #\n###################\n*.com\n*.class\n*.dll\n*.exe\n*.o\n*.so\n\n# Packages #\n############\n# it's better to unpack these files and commit the raw source\n# git has its own built in compression methods\n*.7z\n*.dmg\n*.gz\n*.iso\n*.jar\n*.rar\n*.tar\n*.zip\n\n# Logs and databases #\n######################\n*.log\n*.sql\n*.sqlite\n\n# OS generated files #\n######################\n.DS_Store\n.DS_Store?\n._*\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db\n\n# Node installed packages #\n###########################\nnode_modules/*\n"
  },
  {
    "path": ".python-version",
    "content": "3.8\n"
  },
  {
    "path": "Default.sublime-keymap",
    "content": "[\n\t{ \"keys\": [\":\"], \"command\": \"insert_snippet\", \"args\": {\"contents\": \":$0;\"}, \"context\":\n\t\t[\n\t\t\t{ \"key\": \"setting.auto_match_enabled\", \"operator\": \"equal\", \"operand\": true },\n\t\t\t{ \"key\": \"selection_empty\", \"operator\": \"equal\", \"operand\": true, \"match_all\": true },\n\t\t\t{ \"key\": \"selector\", \"operator\": \"equal\", \"operand\": \"source.less - meta.selector.css\", \"match_all\": true },\n\t\t\t{ \"key\": \"preceding_text\", \"operator\": \"not_regex_match\", \"operand\": \"(^.*:|^)\", \"match_all\": true },\n\t\t\t{ \"key\": \"following_text\", \"operator\": \"regex_contains\", \"operand\": \"^(?:\\t| |\\\\}|$)\", \"match_all\": true }\n\t\t]\n\t},\n\t{ \"keys\": [\";\"], \"command\": \"move\", \"args\": {\"by\": \"characters\", \"forward\": true}, \"context\":\n\t\t[\n\t\t\t{ \"key\": \"setting.auto_match_enabled\", \"operator\": \"equal\", \"operand\": true },\n\t\t\t{ \"key\": \"selection_empty\", \"operator\": \"equal\", \"operand\": true, \"match_all\": true },\n\t\t\t{ \"key\": \"selector\", \"operator\": \"equal\", \"operand\": \"source.less - meta.selector.css\", \"match_all\": true },\n\t\t\t{ \"key\": \"following_text\", \"operator\": \"regex_contains\", \"operand\": \"^;\", \"match_all\": true }\n\t\t]\n\t},\n\t{ \"keys\": [\"backspace\"], \"command\": \"run_macro_file\", \"args\": {\"file\": \"res://Packages/Default/Delete Left Right.sublime-macro\"}, \"context\":\n\t\t[\n\t\t\t{ \"key\": \"setting.auto_match_enabled\", \"operator\": \"equal\", \"operand\": true },\n\t\t\t{ \"key\": \"selection_empty\", \"operator\": \"equal\", \"operand\": true, \"match_all\": true },\n\t\t\t{ \"key\": \"selector\", \"operator\": \"equal\", \"operand\": \"source.less - meta.selector.css\", \"match_all\": true },\n\t\t\t{ \"key\": \"preceding_text\", \"operator\": \"regex_contains\", \"operand\": \":$\", \"match_all\": true },\n\t\t\t{ \"key\": \"following_text\", \"operator\": \"regex_contains\", \"operand\": \"^;\", \"match_all\": true }\n\t\t]\n\t},\n\n\t// Expand {|} to { | } when space is pressed\n\t{ \"keys\": [\" \"], \"command\": \"insert_snippet\", \"args\": {\"contents\": \" $0 \"}, \"context\":\n\t\t[\n\t\t\t{ \"key\": \"setting.auto_match_enabled\", \"operator\": \"equal\", \"operand\": true },\n\t\t\t{ \"key\": \"selection_empty\", \"operator\": \"equal\", \"operand\": true, \"match_all\": true },\n\t\t\t{ \"key\": \"selector\", \"operator\": \"equal\", \"operand\": \"source.less - meta.selector.css\", \"match_all\": true },\n\t\t\t{ \"key\": \"preceding_text\", \"operator\": \"regex_contains\", \"operand\": \"\\\\{$\", \"match_all\": true },\n\t\t\t{ \"key\": \"following_text\", \"operator\": \"regex_contains\", \"operand\": \"^\\\\}\", \"match_all\": true },\n\t\t]\n\t},\n\t{ \"keys\": [\"backspace\"], \"command\": \"run_macro_file\", \"args\": {\"file\": \"res://Packages/Default/Delete Left Right.sublime-macro\"}, \"context\":\n\t\t[\n\t\t\t{ \"key\": \"setting.auto_match_enabled\", \"operator\": \"equal\", \"operand\": true },\n\t\t\t{ \"key\": \"selection_empty\", \"operator\": \"equal\", \"operand\": true, \"match_all\": true },\n\t\t\t{ \"key\": \"selector\", \"operator\": \"equal\", \"operand\": \"source.less - meta.selector.css\", \"match_all\": true },\n\t\t\t{ \"key\": \"preceding_text\", \"operator\": \"regex_contains\", \"operand\": \"\\\\{ $\", \"match_all\": true },\n\t\t\t{ \"key\": \"following_text\", \"operator\": \"regex_contains\", \"operand\": \"^ \\\\}\", \"match_all\": true }\n\t\t]\n\t},\n]\n"
  },
  {
    "path": "Preferences/Comments.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n\t<key>name</key>\n\t<string>Comments</string>\n\t<key>scope</key>\n\t<string>source.less</string>\n\t<key>settings</key>\n\t<dict>\n\t\t<key>shellVariables</key>\n\t\t<array>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_START</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string>// </string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_START_2</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string>/*</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_END_2</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string>*/</string>\n\t\t\t</dict>\n\t\t\t<dict>\n\t\t\t\t<key>name</key>\n\t\t\t\t<string>TM_COMMENT_DISABLE_INDENT</string>\n\t\t\t\t<key>value</key>\n\t\t\t\t<string>no</string>\n\t\t\t</dict>\n\t\t</array>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "Preferences/Symbol List.tmPreferences",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<plist version=\"1.0\">\n<dict>\n\t<key>name</key>\n\t<string>Symbol List</string>\n\t<key>scope</key>\n\t<string>source.less meta.selector.css, variable.declaration.less</string>\n\t<key>settings</key>\n\t<dict>\n\t\t<key>showInSymbolList</key>\n\t\t<integer>1</integer>\n\t\t<key>symbolTransformation</key>\n\t\t<string>s/(.*?)/$1/</string>\n\t\t<key>showInIndexedSymbolList</key>\n\t\t<integer>1</integer>\n\t\t<key>symbolIndexTransformation</key>\n\t\t<string>/[#.]([A-Za-z0-9_~]+)/$1/;</string>\n\t</dict>\n</dict>\n</plist>\n"
  },
  {
    "path": "README.md",
    "content": "# Package has been moved\n\nThe Less package for Sublime Text is currently maintained here: https://github.com/SublimeText/Less. Please go there if you have any issues, questions, or if you want to contribute.\n"
  },
  {
    "path": "Syntaxes/LESS.sublime-syntax",
    "content": "%YAML 1.2\n---\n# http://www.sublimetext.com/docs/3/syntax.html\nname: Less\nfile_extensions:\n  - less\n  - css.less\nscope: source.less\n\n\nvariables:\n  unicode: '\\\\\\h{1,6}[ \\t\\n\\f]?'\n  escape: '(?:{{unicode}}|\\\\[^\\n\\f\\h])'\n  nonascii: '[\\p{L}\\p{M}\\p{S}\\p{N}&&[[:^ascii:]]]'\n  nmstart: '(?:[[_a-zA-Z]{{nonascii}}]|{{escape}})'\n  nmchar: '(?:[[-\\w]{{nonascii}}]|{{escape}})'\n  ident: '(?:--{{nmchar}}+|-?{{nmstart}}{{nmchar}}*)'\n\n  integer: '(?:[-+]?\\d+)'\n  exponent: '(?:[eE]{{integer}})'\n  float: |-\n   (?x:\n     [-+]? \\d* (\\.) \\d+ {{exponent}}?\n   | [-+]? \\d+          {{exponent}}\n   )\n\n  font_relative_lengths: '(?i:em|ex|ch|rem)'\n  viewport_percentage_lengths: '(?i:vw|vh|vmin|vmax)'\n  absolute_lengths: '(?i:cm|mm|q|in|pt|pc|px|fr)'\n  angle_units: '(?i:deg|grad|rad|turn)'\n  duration_units: '(?i:s|ms)'\n  frequency_units: '(?i:Hz|kHz)'\n  resolution_units: '(?i:dpi|dpcm|dppx)'\n\n  custom_element_chars: |-\n    (?x:\n        [-_a-z0-9\\x{00B7}]\n      | \\\\\\.\n      | [\\x{00C0}-\\x{00D6}]\n      | [\\x{00D8}-\\x{00F6}]\n      | [\\x{00F8}-\\x{02FF}]\n      | [\\x{0300}-\\x{037D}]\n      | [\\x{037F}-\\x{1FFF}]\n      | [\\x{200C}-\\x{200D}]\n      | [\\x{203F}-\\x{2040}]\n      | [\\x{2070}-\\x{218F}]\n      | [\\x{2C00}-\\x{2FEF}]\n      | [\\x{3001}-\\x{D7FF}]\n      | [\\x{F900}-\\x{FDCF}]\n      | [\\x{FDF0}-\\x{FFFD}]\n      | [\\x{10000}-\\x{EFFFF}]\n    )\n\n\n  combinators: '(?:>{1,3}|[~+])'\n\n  counter_styles: |-\n    (?xi:\n        arabic-indic | armenian | bengali | cambodian | circle\n      | cjk-decimal | cjk-earthly-branch | cjk-heavenly-stem | decimal-leading-zero\n      | decimal | devanagari | disclosure-closed | disclosure-open | disc\n      | ethiopic-numeric | georgian | gujarati | gurmukhi | hebrew\n      | hiragana-iroha | hiragana | japanese-formal | japanese-informal\n      | kannada | katakana-iroha | katakana | khmer\n      | korean-hangul-formal | korean-hanja-formal | korean-hanja-informal | lao\n      | lower-alpha | lower-armenian | lower-greek | lower-latin | lower-roman\n      | malayalam | mongolian | myanmar | oriya | persian\n      | simp-chinese-formal | simp-chinese-informal\n      | square | tamil | telugu | thai | tibetan\n      | trad-chinese-formal | trad-chinese-informal\n      | upper-alpha | upper-armenian | upper-latin | upper-roman\n    )\n\n  element_names: '\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|content|data|datalist|dd|del|details|dfn|dir|dialog|div|dl|dt|element|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i|iframe|img|input|ins|isindex|kbd|keygen|label|legend|li|link|main|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rp|rt|rtc|s|samp|script|section|select|shadow|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr|xmp|circle|clipPath|defs|ellipse|filter|foreignObject|g|glyph|glyphRef|image|line|linearGradient|marker|mask|path|pattern|polygon|polyline|radialGradient|rect|stop|switch|symbol|text|textPath|tref|tspan|use)\\b'\n  custom_elements: '\\b([a-z](?:{{custom_element_chars}})*-(?:{{custom_element_chars}})*)\\b(?!{{ident}})'\n\n  pseudo_elements: |-\n    (?x:\n        (:{1,2})(?:before|after|first-line|first-letter) # CSS1 & CSS2 require : or ::\n      | (::)(-(?:moz|ms|webkit)-)?(?:{{ident}}) # CSS3 requires ::\n    )\\b\n\n  regular_pseudo_classes: '\\b(active|any-link|blank|checked|current|default|defined|disabled|drop|empty|enabled|first|first-child|first-of-type|fullscreen|future|focus|focus-visible|focus-within|host|hover|indeterminate|in-range|invalid|last-child|last-of-type|left|link|local-link|only-child|only-of-type|optional|out-of-range|past|placeholder-shown|read-only|read-write|required|right|root|scope|target|target-within|user-invalid|valid|visited)\\b(?![-])'\n  functional_pseudo_classes: '\\b(dir|lang|matches|not|has|drop|nth-last-child|nth-child|nth-last-of-type|nth-of-type)\\b'\n\n  property_names: |-\n    \\b(?x)(\n        display|width|background-color|height|position|font-family|font-weight\n      | top|opacity|cursor|background-image|right|visibility|box-sizing\n      | user-select|left|float|margin-left|margin-top|line-height\n      | padding-left|z-index|margin-bottom|margin-right|margin\n      | vertical-align|padding-top|white-space|border-radius|padding-bottom\n      | padding-right|padding|bottom|clear|max-width|box-shadow|content\n      | border-color|min-height|min-width|font-style|border-width\n      | border-collapse|background-size|text-overflow|max-height|text-transform\n      | text-shadow|text-indent|border-style|overflow-y|list-style-type\n      | word-wrap|border-spacing|appearance|zoom|overflow-x|border-top-left-radius\n      | border-bottom-left-radius|border-top-color|pointer-events\n      | border-bottom-color|align-items|justify-content|letter-spacing\n      | border-top-right-radius|border-bottom-right-radius|border-right-width\n      | font-smoothing|border-bottom-width|border-right-color|direction\n      | border-top-width|src|border-left-color|border-left-width\n      | tap-highlight-color|table-layout|background-clip|word-break\n      | transform-origin|resize|filter|backdrop-filter|backface-visibility|text-rendering\n      | box-orient|transition-property|transition-duration|word-spacing\n      | quotes|outline-offset|animation-timing-function|animation-duration\n      | animation-name|transition-timing-function|border-bottom-style\n      | border-bottom|transition-delay|transition|unicode-bidi|border-top-style\n      | border-top|unicode-range|list-style-position|orphans|outline-width\n      | line-clamp|order|flex-direction|box-pack|animation-fill-mode\n      | outline-color|list-style-image|list-style|touch-action|flex-grow\n      | border-left-style|border-left|animation-iteration-count\n      | page-break-inside|box-flex|box-align|page-break-after|animation-delay\n      | widows|border-right-style|border-right|flex-align|outline-style\n      | outline|background-origin|animation-direction|fill-opacity\n      | background-attachment|flex-wrap|transform-style|counter-increment\n      | overflow-wrap|counter-reset|animation-play-state|animation\n      | will-change|box-ordinal-group|image-rendering|mask-image|flex-flow\n      | background-position-y|stroke-width|background-position-x|background-position\n      | background-blend-mode|flex-shrink|flex-basis|flex-order|flex-item-align\n      | flex-line-pack|flex-negative|flex-pack|flex-positive|flex-preferred-size\n      | flex|user-drag|font-stretch|column-count|empty-cells|align-self\n      | caption-side|mask-size|column-gap|mask-repeat|box-direction\n      | font-feature-settings|mask-position|align-content|object-fit\n      | columns|text-fill-color|clip-path|stop-color|font-kerning\n      | page-break-before|stroke-dasharray|size|fill-rule|border-image-slice\n      | column-width|break-inside|column-break-before|border-image-width\n      | stroke-dashoffset|border-image-repeat|border-image-outset|line-break\n      | stroke-linejoin|stroke-linecap|stroke-miterlimit|stroke-opacity\n      | stroke|shape-rendering|border-image-source|border-image|border\n      | tab-size|writing-mode|perspective-origin-y|perspective-origin-x\n      | perspective-origin|perspective|text-align-last|text-align|clip-rule\n      | clip|text-anchor|column-rule-color|box-decoration-break|column-fill\n      | fill|column-rule-style|mix-blend-mode|text-emphasis-color\n      | baseline-shift|dominant-baseline|page|alignment-baseline\n      | column-rule-width|column-rule|break-after|font-variant-ligatures\n      | transform-origin-y|transform-origin-x|transform|object-position\n      | break-before|column-span|isolation|shape-outside|all\n      | color-interpolation-filters|marker|marker-end|marker-start\n      | marker-mid|color-rendering|color-interpolation|background-repeat-x\n      | background-repeat-y|background-repeat|background|mask-type\n      | flood-color|flood-opacity|text-orientation|mask-composite\n      | text-emphasis-style|paint-order|lighting-color|shape-margin\n      | text-emphasis-position|text-emphasis|shape-image-threshold\n      | mask-clip|mask-origin|mask|font-variant-caps|font-variant-alternates\n      | font-variant-east-asian|font-variant-numeric|font-variant-position\n      | font-variant|font-size-adjust|font-size|font-language-override\n      | font-display|font-synthesis|font|line-box-contain|text-justify\n      | text-decoration-color|text-decoration-style|text-decoration-line\n      | text-decoration|text-underline-position|grid-template-rows\n      | grid-template-columns|grid-template-areas|grid-template|rotate|scale\n      | translate|scroll-behavior|grid-column-start|grid-column-end\n      | grid-column-gap|grid-row-start|grid-row-end|grid-auto-rows\n      | grid-area|grid-auto-flow|grid-auto-columns|image-orientation\n      | hyphens|overflow-scrolling|overflow|color-profile|kerning\n      | nbsp-mode|color|image-resolution|grid-row-gap|grid-row|grid-column\n      | blend-mode|azimuth|pause-after|pause-before|pause|pitch-range|pitch\n      | text-height|system|negative|prefix|suffix|range|pad|fallback\n      | additive-symbols|symbols|speak-as|speak|grid-gap\n    )\\b\n\n\n\ncontexts:\n  main:\n    - include: comment-block\n    - include: comment-line\n    - include: selectors\n    - include: properties\n    - include: keyframe-operators\n    - include: interpolated-selectors\n    - include: custom-element-selectors\n    - include: less-map-values\n    - include: at-rules\n    - include: curly-braces\n    - include: css-modules\n    - match: '\\s*(,)\\s*'\n      captures:\n        1: punctuation.separator.css\n\n\n  selectors:\n    # wild card\n    - match: '\\s*(\\*)'\n      captures:\n        1: entity.name.tag.wildcard.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # ampersand\n    - match: '\\s*(&)'\n      captures:\n        1: keyword.operator.ampersand.less\n      push:\n        - meta_scope: meta.selector.css\n        - match: '[-_]+{{ident}}*'\n          scope: entity.other.attribute-name.css\n        - include: selector-parts\n    # standard elements + pseudo elements\n    - match: '\\s*({{element_names}})(?={{pseudo_elements}})'\n      captures:\n        1: entity.name.tag.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # standard elements + pseudoclasses\n    - match: '\\s*({{element_names}})(?=:{{regular_pseudo_classes}})'\n      captures:\n        1: entity.name.tag.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*({{element_names}})(?=:({{functional_pseudo_classes}})\\()'\n      captures:\n        1: entity.name.tag.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*({{element_names}})(?=:(-(moz|ms|webkit)-){{ident}})'\n      captures:\n        1: entity.name.tag.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # standard elements\n    - match: '\\s*({{element_names}})(?![-:])'\n      # stop this at word break and not -, plus : is for pseudos\n      captures:\n        1: entity.name.tag.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # classes / mixins\n    - match: '\\s*(\\.)(?={{ident}}|@)'\n      captures:\n        1: entity.other.attribute-name.class.css punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '{{ident}}'\n          scope: entity.other.attribute-name.class.css\n        - include: less-interpolation\n        - include: less-mixin-params\n        - include: selector-parts\n    # id's / mixins\n    - match: '\\s*(\\#)(?={{ident}}|@)'\n      captures:\n        1: entity.other.attribute-name.id.css punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '{{ident}}'\n          scope: entity.other.attribute-name.id.css\n        - include: less-interpolation\n        - include: less-mixin-params\n        - include: selector-parts\n    # attributes\n    - match: '\\s*(?=\\[)'\n      push:\n        - meta_scope: meta.selector.css\n        - match: '\\['\n          scope: punctuation.definition.entity.css\n          push:\n            - meta_scope: meta.attribute-selector.css\n            - match: '\\]'\n              scope: punctuation.definition.entity.css\n              pop: true\n            - include: qualified-name\n            - match: '({{ident}})'\n              scope: entity.other.attribute-name.css\n            - match: '\\s*([~*|^$]?=)\\s*'\n              captures:\n                1: keyword.operator.attribute-selector.css\n              push:\n                - match: '[^\\s\\]\\[''\"]'\n                  scope: string.unquoted.css\n                - include: literal-string\n                - match: '(?=(\\s|\\]))'\n                  pop: true\n            - match: '(?:\\s+([iI]))?'  # case insensitive flag\n              captures:\n                1: keyword.other.css\n        - include: selector-parts\n    - include: pseudo-elements\n    - include: pseudo-classes\n    - match: '^\\s*({{combinators}})(?![>~+])\\s*'\n      captures:\n        0: meta.selector.css\n        1: punctuation.separator.combinator.css\n\n\n  interpolated-selectors:\n    - match: '\\s*(@)({)([a-zA-Z0-9_-][\\w-]*)(})(?={{pseudo_elements}})'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*(@)({)([a-zA-Z0-9_-][\\w-]*)(})(?=:{{regular_pseudo_classes}})'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*(@)({)([a-zA-Z0-9_-][\\w-]*)(})(?=:({{functional_pseudo_classes}})\\()'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*(@)({)([a-zA-Z0-9_-][\\w-]*)(})(?=:(-(moz|ms|webkit)-){{ident}})'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*(@)({)([a-zA-Z0-9_-][\\w-]*)(})(?=(?![-:]))'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n\n  custom-element-selectors:\n    # custom elements + pseudo elements\n    - match: '\\s*({{custom_elements}})({{pseudo_elements}})'\n      captures:\n        1: entity.name.tag.custom.css\n        3: entity.other.pseudo-element.css\n        4: punctuation.definition.entity.css\n        5: punctuation.definition.entity.css\n        6: support.type.vendor-prefix.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # custom elements + pseudoclasses\n    - match: '\\s*({{custom_elements}})((:)({{regular_pseudo_classes}}))'\n      captures:\n        1: entity.name.tag.custom.css\n        3: entity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    - match: '\\s*({{custom_elements}})((:)(dir|lang))(?=\\()'\n      captures:\n        1: entity.name.tag.custom.css\n        3: meta.function-call.cssentity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.function-call.css meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: unquoted-string\n        - match: '\\)'\n          scope: meta.group.css punctuation.definition.group.end.css\n        - include: selector-parts\n    - match: '\\s*({{custom_elements}})((:)(matches|not|has))(?=\\()'\n      captures:\n        1: entity.name.tag.custom.css\n        3: meta.function-call.css entity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.function-call.css meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: selectors\n          - include: custom-element-selectors\n        - match: '\\)'\n          scope: meta.group.css punctuation.definition.group.end.css\n        - include: selector-parts\n    - match: '\\s*({{custom_elements}})((:)(drop))(?=\\()'\n      captures:\n        1: entity.name.tag.custom.css\n        3: meta.function-call.css entity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.function-call.css meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: \\b(active|valid|invalid)\\b\n            scope: keyword.other.pseudo-class.css\n        - match: '\\)'\n          scope: meta.group.css punctuation.definition.group.end.css\n        - include: selector-parts\n    - match: '\\s*({{custom_elements}})((:)(nth-last-child|nth-child|nth-last-of-type|nth-of-type))(?=\\()'\n      captures:\n        1: entity.name.tag.custom.css\n        3: meta.function-call.css entity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.function-call.css meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: \\b(even|odd)\\b\n            scope: keyword.other.pseudo-class.css\n          - match: '(?:[-+]?(?:\\d+)?(n)(\\s*[-+]\\s*\\d+)?|[-+]?\\s*\\d+)'\n            scope: constant.numeric.css\n            captures:\n              1: keyword.other.unit.css\n        - match: '\\)'\n          scope: meta.group.css punctuation.definition.group.end.css\n        - include: selector-parts\n    - match: '\\s*({{custom_elements}})((:)(-(moz|ms|webkit)-){{ident}})'\n      captures:\n        1: entity.name.tag.css\n        3: entity.other.pseudo-class.css\n        4: punctuation.definition.entity.css\n        5: support.type.vendor-prefix.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n    # custom elements\n    - match: '\\s*({{custom_elements}})(?!-|\\s*:)'\n      captures:\n        1: entity.name.tag.custom.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n\n  selector-parts:\n    - match: '\\s*(,)\\s*'\n      captures:\n        1: punctuation.separator.css\n      pop: true\n    - match: '\\s*({{combinators}})(?![>~+])\\s*'\n      captures:\n        1: punctuation.separator.combinator.css\n      pop: true\n    - match: '\\s*(?=\\{)'\n      pop: true\n    - match: '(?=[.#\\[&])' # look ahead for classes, id's and attr's\n      pop: true\n    - match: '(?=\\))' # if passed as a parameter\n      pop: true\n    - match: '(?=;)' # if passed as a parameter default value\n      pop: true\n    - include: comment-block\n    - include: pseudo-elements\n    - include: pseudo-classes\n    - include: less-mixin-params\n    - match: '\\s*(?=$|//|/\\*)'\n      pop: true\n    - match: '\\s*(?=\\b)'\n      pop: true\n\n  pseudo-elements:\n    - match: '\\s*{{pseudo_elements}}'\n      scope: entity.other.pseudo-element.css\n      captures:\n        1: punctuation.definition.entity.css\n        2: punctuation.definition.entity.css\n        3: support.type.vendor-prefix.css\n\n  pseudo-classes:\n    - match: '\\s*(:)(dir|lang)(?=\\()'\n      scope: entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - include: unquoted-string\n        - include: selector-parts\n\n    - match: '\\s*(:)(matches|not|has)(?=\\()'\n      scope: entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - include: comma-delimiter\n            - include: selectors\n            - include: custom-element-selectors\n        - match: ''\n          pop: true\n        - include: selector-parts\n\n    - match: '\\s*(:)(drop)(?=\\()'\n      scope: entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - match: \\b(active|valid|invalid)\\b\n              scope: keyword.other.pseudo-class.css\n        - include: selector-parts\n\n    - match: '\\s*(:)(nth-last-child|nth-child|nth-last-of-type|nth-of-type)(?=\\()'\n      scope: entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - match: \\b(even|odd)\\b\n              scope: keyword.other.pseudo-class.css\n            - match: '([-+]?\\d*(n))\\s*([-+]\\s*\\d+)?'\n              captures:\n                1: constant.numeric.integer.decimal.css\n                2: keyword.other.unit.css\n                3: constant.numeric.integer.decimal.css\n            - match: '[-+]\\s+\\d+n?|[-+]?\\d+\\s+n'\n              scope: invalid.illegal.numeric.css\n            - include: integer-type\n        - include: selector-parts\n\n    - match: '\\s*(:)(-(moz|ms|webkit)-){{ident}}'\n      scope: entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n        2: support.type.vendor-prefix.css\n      push:\n        - meta_scope: meta.selector.css\n        - include: selector-parts\n\n    - match: '\\s*(:)({{regular_pseudo_classes}})'\n      scope: meta.selector.css entity.other.pseudo-class.css\n      captures:\n        1: punctuation.definition.entity.css\n\n    - match: '\\s*(:)(local|global)(?=\\()'\n      scope: meta.selector.css entity.other.pseudo-class.css-modules.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - include: selectors\n            - include: literal-string\n        - match: ''\n          pop: true\n    - match: '\\s*(:)(local|global)'\n      scope: meta.selector.css entity.other.pseudo-class.css-modules.css\n      captures:\n        1: punctuation.definition.entity.css\n\n\n  properties:\n    - include: comment-line\n    - include: comment-block\n    - match: '\\b(font-family|font|family)\\b(?=\\s*:)'\n      scope: meta.property-name.css support.type.property-name.css\n      push:\n        - match: '(\\s*)(;)'\n          pop: true\n          captures:\n            1: meta.property-value.css\n            2: punctuation.terminator.rule.css\n        - match: '(?=\\s*[;})])'\n          pop: true\n        - match: ':'\n          scope: punctuation.separator.key-value.css\n          push:\n            - meta_content_scope: meta.property-value.css\n            - match: '(?=\\s*([;})]))'\n              pop: true\n            - include: comment-line\n            - include: comment-block\n            - include: numeric-values\n            - include: property-value-constants\n            - include: var-function\n            - include: less-variables\n            - include: less-functions\n            - include: literal-string\n            - match: '{{ident}}(\\s+{{ident}})*\\b(?!:)'\n              scope: string.unquoted.css\n            - include: less-operators\n            - include: less-aliases\n            - include: comma-delimiter\n            - match: '(?={)'\n              pop: true\n        - match: ''\n          pop: true\n    - match: '{{property_names}}'\n      scope: meta.property-name.css support.type.property-name.css\n      push:\n        - include: property-value-wrapper\n    - match: '(-(?:webkit|moz|ms|o)-)({{ident}})(?=\\s*:)'\n      captures:\n        0: meta.property-name.css\n        1: support.type.vendor-prefix.css\n        2: support.type.property-name.css\n      push:\n        - include: property-value-wrapper\n    - match: '(@)([a-zA-Z0-9_-][\\w-]*)(?=\\s*:)'\n      captures:\n        0: variable.declaration.less\n        1: punctuation.definition.variable.less\n      push:\n        - include: property-value-wrapper\n    - match: '(--)({{nmchar}}+)'\n      captures:\n        0: meta.property-name.css support.type.custom-property.css\n        1: punctuation.definition.custom-property.css\n        2: support.type.custom-property.name.css\n      push:\n        - include: property-value-wrapper\n    - match: '[a-zA-Z0-9_-]*((@)({)([a-zA-Z0-9_-][\\w-]*)(}))[a-zA-Z0-9_-]*'\n      captures:\n        0: meta.property-name.css support.type.property-name\n        1: variable.other.less\n        2: punctuation.definition.variable.less\n        3: punctuation.definition.string.begin.less\n        4: string.interpolated.less\n        5: punctuation.definition.string.end.less\n      push:\n        - include: property-value-wrapper\n    - match: '\\b(composes)\\b'\n      scope: meta.property-name.css-modules.css support.type.property-name\n      push:\n        - include: property-value-wrapper\n\n  property-value-wrapper:\n    - match: '(\\s*)(;)'\n      pop: true\n      captures:\n        1: meta.property-value.css\n        2: punctuation.terminator.rule.css\n    - match: '(?=\\s*[;})])'\n      pop: true\n    - match: '\\s*(:)'\n      captures:\n        1: punctuation.separator.key-value.css\n      push:\n        - meta_content_scope: meta.property-value.css\n        - match: '(?=\\s*[;})])'\n          pop: true\n        - match: '\\bfrom\\b'\n          scope: keyword.control.import.from.css-modules.css\n        - include: property-values\n        - match: '(?={)'\n          pop: true\n    - match: ''\n      pop: true\n\n  property-values:\n    - match: \\!\\s*important\n      scope: keyword.other.important.css\n      captures:\n        1: punctuation.definition.keyword.css\n    - include: vendor-prefix\n    - include: comment-line\n    - include: comment-block\n    - include: builtin-functions\n    - include: line-names\n    - include: unicode-range\n    - include: numeric-values\n    - include: color-values\n    - include: property-value-constants\n    - include: literal-string\n    - include: less-variables\n    - include: less-functions\n    - include: less-operators\n    - include: less-aliases\n    - match: '\\s*(,)\\s*'\n      captures:\n        1: punctuation.separator.css\n    - match: '{{ident}}' # e.g. animation-name\n      scope: string.unquoted.css\n\n\n  at-rules:\n    - match: ((@)(?:-(?:webkit|moz|o)-)?(charset|namespace|font-face)\\b)\n      captures:\n        1: keyword.control.at-rule.css\n        2: punctuation.definition.keyword.css\n      push:\n        - meta_scope: meta.at-rule.css\n        - match: '\\s*(?=[\\{;])'\n          pop: true\n        - match: '(url)(\\()'\n          captures:\n            1: meta.function-call.css support.function.url.css\n            2: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - include: literal-string\n            - include: unquoted-string\n        - include: comment-block\n        - include: literal-string\n    - match: '\\s*((@)counter-style\\b)\\s+(?:(?i:\\b(decimal|none)\\b)|({{ident}}))?\\s*(?=\\{|$)'\n      captures:\n        1: keyword.control.at-rule.counter-style.css\n        2: punctuation.definition.keyword.css\n        3: invalid.illegal.counter-style-name.css\n        4: entity.other.counter-style-name.css\n      push:\n        - meta_scope: meta.at-rule.counter-style.css\n        - include: comment-block\n        - include: comment-line\n        - match: '(?=\\{)'\n          pop: true\n    - match: '(?=\\s*@custom-media\\b)'\n      push:\n        - match: ';'\n          scope: punctuation.terminator.css\n          pop: true\n        - match: '\\s*((@)custom-media)'\n          captures:\n            1: keyword.control.at-rule.custom-media.css\n            2: punctuation.definition.keyword.css\n            3: support.constant.custom-media.css\n          push:\n            - meta_scope: meta.at-rule.custom-media.css\n            - match: '\\s*(?=;)'\n              pop: true\n            - include: media-query\n    - match: '((@)document)\\b'\n      captures:\n        1: keyword.control.at-rule.document.css\n        2: punctuation.definition.keyword.css\n      push:\n        - meta_scope: meta.at-rule.document.css\n        - match: '(?=[\\{;])'\n          pop: true\n        - include: comment-block\n        - include: comment-line\n        - include: url-function\n        - include: url-prefix-function\n        - include: domain-function\n        - include: regexp-function\n        - include: comma-delimiter\n    - match: '\\s*((@)import)\\b\\s*'\n      captures:\n        1: keyword.control.at-rule.import.css\n        2: punctuation.definition.keyword.css\n      push:\n        - meta_scope: meta.at-rule.import.css\n        - match: '(\\()(reference|inline|less|css|once|multiple|optional)(\\))'\n          captures:\n            0: meta.at-rule.arguments.less\n            1: punctuation.definition.group.begin.less\n            2: constant.other.less\n            3: punctuation.definition.group.end.less\n        - include: at-rule-punctuation\n        - include: comment-block\n        - include: comment-line\n        - include: literal-string\n        - include: url-function\n        - include: media-query\n    - match: '\\s*((@)(-webkit-|-moz-|-o-)?keyframes)\\b'\n      captures:\n        1: keyword.control.at-rule.keyframe.css\n        2: punctuation.definition.keyword.css\n      push:\n        - meta_scope: meta.at-rule.keyframe.css\n        - match: '\\s*(?=[\\{;])'\n          pop: true\n        - include: comment-block\n        - include: comment-line\n        - include: less-interpolation\n        - match: '\\s*({{ident}})?'\n          captures:\n            1: entity.other.animation-name.css\n        - match: '\\s*(?:(,)|(?=[{;]))'\n          captures:\n            1: punctuation.definition.arbitrary-repetition.css\n    - match: '\\s*((@)media)\\b'\n      captures:\n        1: keyword.control.at-rule.media.css\n        2: punctuation.definition.keyword.css\n        3: support.constant.media.css\n      push:\n        - meta_scope: meta.at-rule.media.css\n        - include: media-query\n        - match: '(?=\\{)'\n          pop: true\n    - match: '\\s*((@)namespace)\\b\\s+({{ident}}(?!{{nmchar}}|\\())?'\n      captures:\n        1: keyword.control.at-rule.namespace.css\n        2: punctuation.definition.keyword.css\n        3: entity.other.namespace-prefix.css\n      push:\n        - meta_scope: meta.at-rule.namespace.css\n        - include: at-rule-punctuation\n        - include: literal-string\n        - include: url-function\n        - include: comment-block\n    - match: '\\s*((@)page)\\b\\s*(?:(:)(first|left|right))?\\s*'\n      captures:\n        1: keyword.control.at-rule.page.css\n        2: punctuation.definition.keyword.css\n        3: punctuation.definition.entity.css\n        4: entity.other.pseudo-class.css\n      push:\n        - meta_scope: meta.at-rule.page.css\n        - include: comment-block\n        - match: '\\s*(?=\\{)'\n          pop: true\n    - match: '((@)supports)\\b'\n      captures:\n        1: keyword.control.at-rule.supports.css\n        2: punctuation.definition.keyword.css\n      push:\n        - meta_scope: meta.at-rule.supports.css\n        - match: '(?=\\{)'\n          pop: true\n        - include: at-supports-operators\n        - include: at-supports-parens\n\n  at-supports-operators:\n    - match: '\\b(?i:and|or|not)\\b'\n      scope: keyword.operator.logic.css\n\n  at-supports-parens:\n    - match: '\\('\n      scope: punctuation.definition.group.begin.css\n      push:\n        - meta_scope: meta.group.css\n        - match: '\\)'\n          scope: punctuation.definition.group.end.css\n          pop: true\n        - include: at-supports-operators\n        - include: at-supports-parens\n        - include: comment-block\n        - include: comment-line\n        - include: properties\n\n  keyframe-operators:\n    - match: \\b(from|to)\\b\n      scope: keyword.keyframe-selector.css\n    - include: comma-delimiter\n    - include: numeric-values\n\n  at-rule-punctuation:\n    - match: '\\;'\n      scope: punctuation.terminator.rule.css\n    - match: '(?=;|$)'\n      pop: true\n\n  media-query:\n    - include: comment-block\n    - match: '\\b(?i:all|aural|braille|embossed|handheld|print|projection|screen|speech|tty|tv)\\b'\n      scope: support.constant.media.css\n    - match: \\b(?i:and|or|not|only)\\b\n      scope: keyword.operator.logic.media.css\n    - include: comma-delimiter\n    - match: '\\('\n      scope: punctuation.definition.group.begin.css\n      push:\n        - match: '\\)'\n          scope: punctuation.definition.group.end.css\n          pop: true\n        - include: comment-block\n        - match: |-\n            (?x)\n            (\n              (?:\n                (-webkit-|-o-)?\n                (?:min-|max-)?\n                (-moz-)?\n                (?:\n                  (?:device-)?(?:height|width|aspect-ratio|pixel-ratio)\n                  |color(?:-index)?|monochrome|resolution\n                )\n              )\n              |grid|scan|orientation\n            )\\s*(:)?\n          captures:\n            1: support.type.property-name.media.css\n            2: support.type.vendor-prefix.css\n            3: support.type.vendor-prefix.css\n            4: punctuation.separator.key-value.css\n        - match: \\b(portrait|landscape|progressive|interlace)\n          scope: support.constant.property-value.css\n        - match: '\\s*(\\d+)(/)(\\d+)'\n          captures:\n            1: constant.numeric.integer.decimal.css\n            2: keyword.operator.arithmetic.css\n            3: constant.numeric.integer.decimal.css\n        - include: less-variables\n        - include: less-functions\n        - include: numeric-values\n        - include: less-aliases\n\n\n\n\n  less-map-values:\n    - match: '{{ident}}(?=:\\s*\\b)'\n      scope: variable.declaration.map.less\n      push:\n        - meta_scope: meta.map-value.less\n        - include: property-value-wrapper\n\n  less-map-lookups:\n    - match: '\\['\n      scope: punctuation.section.brackets.begin.less\n    - match: '\\]'\n      scope: meta.brackets.less punctuation.section.brackets.end.less\n      pop: true\n    - include: less-variables\n    - include: less-aliases\n    - match: '{{ident}}'\n      scope: variable.other.less\n\n  less-mixin-params:\n    - match: '\\s*(not|or|and|when)\\b'\n      captures:\n        1: keyword.operator.logic.mixin.less\n    - match: '\\s*(\\()'\n      captures:\n        1: punctuation.definition.group.begin.css\n      push:\n        - meta_scope: meta.function.parameters.less\n        - match: ';'\n          scope: punctuation.separator.less\n        - match: ':'\n          scope: punctuation.separator.key-value.less\n        - include: comment-block\n        - include: comment-line\n        - include: less-variables\n        - include: less-functions\n        - include: properties\n        - include: property-values\n        - include: literal-string\n        - include: curly-braces\n        - include: less-operators\n        - include: less-aliases\n        # - include: selectors\n        - match: '{{ident}}' # pretty much everything else\n          scope: string.unquoted.css\n        - match: '\\)'\n          scope: punctuation.definition.group.end.css\n          pop: true\n\n  less-aliases:\n    - match: '((\\.){{ident}})(?=[.#])'\n      captures:\n        1: entity.other.attribute-name.class.less\n        2: punctuation.definition.entity.less\n      push:\n        - meta_scope: meta.alias.less\n        - include: less-mixin-params\n        - match: '(?=\\[)'\n          push:\n            - meta_content_scope: meta.brackets.less\n            - include: less-map-lookups\n        - match: '(?=;|$)'\n          pop: true\n        - match: '(\\.){{ident}}'\n          captures:\n            0: entity.other.attribute-name.class.less\n            1: punctuation.definition.entity.less\n        - match: '(#){{ident}}'\n          captures:\n            0: entity.other.attribute-name.id.less\n            1: punctuation.definition.entity.less\n    - match: '((\\#){{ident}})(?=[.#])'\n      captures:\n        1: entity.other.attribute-name.id.less\n        2: punctuation.definition.entity.less\n      push:\n        - meta_scope: meta.alias.less\n        - include: less-mixin-params\n        - match: '(?=\\[)'\n          push:\n            - meta_content_scope: meta.brackets.less\n            - include: less-map-lookups\n        - match: '(?=;|,|$)'\n          pop: true\n        - match: '(\\.){{ident}}'\n          captures:\n            0: entity.other.attribute-name.class.less\n            1: punctuation.definition.entity.less\n        - match: '(#){{ident}}'\n          captures:\n            0: entity.other.attribute-name.id.less\n            1: punctuation.definition.entity.less\n\n  less-variables:\n    - include: less-interpolation\n    - match: '(\\.){{ident}}(?=\\[)'\n      captures:\n        0: entity.other.attribute-name.class.less\n        1: punctuation.definition.entity.less\n      push:\n        - meta_content_scope: meta.brackets.less\n        - include: less-map-lookups\n    - match: '(#){{ident}}(?=\\[)'\n      captures:\n        0: entity.other.attribute-name.id.less\n        1: punctuation.definition.entity.less\n      push:\n        - meta_content_scope: meta.brackets.less\n        - include: less-map-lookups\n    - match: '(@){{ident}}(?=\\[)'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n      push:\n        - meta_content_scope: meta.brackets.less\n        - include: less-map-lookups\n    - match: '(@{1,2})([a-zA-Z0-9_-][\\w-]*)'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n    - match: '(\\$){{property_names}}\\b'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n    - match: '(~)(\")'\n      captures:\n        1: keyword.operator.less\n        2: punctuation.definition.string.begin.less\n      push:\n        - meta_scope: string.quoted.double.css markup.raw.less\n        - match: '\"'\n          scope: punctuation.definition.string.end.less\n          pop: true\n        - include: less-interpolation\n    - match: (~)(')\n      captures:\n        1: keyword.operator.less\n        2: punctuation.definition.string.begin.less\n      push:\n        - meta_scope: string.quoted.single.css markup.raw.less\n        - match: \"'\"\n          scope: punctuation.definition.string.end.less\n          pop: true\n        - include: less-interpolation\n\n  less-functions:\n    - match: \\b(unit|tan|sqrt|spin|softlight|sin|screen|saturation|saturate|round|replace|red|pow|pi|percentage|overlay|negation|multiply|mod|mix|min|max|luma|lightness|lighten|length|isnumber|hue|hsvvalue|hsvsaturation|hsvhue|hsva|hsv|hsla|hsl|hardlight|greyscale|green|format|floor|fadeout|fadein|fade|extract|exclusion|escape|e|difference|desaturate|data-uri|darken|cos|convert|convert|contrast|color|ceil|calc|blue|average|atan|asin|argb|alpha|acos|abs)(\\()\n      captures:\n        1: support.function.less\n        2: meta.group.less punctuation.definition.group.begin.less\n      push:\n        - meta_scope: meta.function-call.less\n        - meta_content_scope: meta.group.less meta.function.parameters.less\n        - match: '\\)'\n          scope: meta.group.less punctuation.definition.group.end.less\n          pop: true\n        - match: ':'\n          scope: punctuation.separator.key-value.css\n        - include: comment-block\n        - include: comma-delimiter\n        - include: color-values\n        - include: numeric-values\n        - include: literal-string\n        - include: less-variables\n        - include: less-aliases\n        - include: less-functions\n        - include: less-operators\n\n  less-interpolation:\n    - match: '(@)({)([a-zA-Z0-9_-][\\w-]*)(})'\n      captures:\n        0: variable.other.less\n        1: punctuation.definition.variable.less\n        2: punctuation.definition.string.begin.less\n        3: string.interpolated.less\n        4: punctuation.definition.string.end.less\n\n  less-operators:\n    - match: /|$|%|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|%=|\\+=|\\-=|&=|\\bnot\\b|\\bor\\b|\\band\\b|\\bwhen\\b\n      scope: keyword.operator.less\n\n\n\n\n  property-value-constants:\n    - match: |-\n            (?x)\\b(\n                absolute|active|add\n              | all(-(petite|small)-caps|-scroll)?\n              | alpha(betic)?\n              | alternate(-reverse)?\n              | always|annotation|antialiased|at\n              | auto(hiding-scrollbar)?\n              | avoid(-column|-page|-region)?\n              | background(-color|-image|-position|-size)?\n              | backwards|balance|baseline|below|bevel|bicubic|bidi-override|blink\n              | block(-line-height)?\n              | blur\n              | bold(er)?\n              | border(-bottom|-left|-right|-top)?-(color|radius|width|style)\n              | border-(bottom|top)-(left|right)-radius\n              | border-image(-outset|-repeat|-slice|-source|-width)?\n              | border(-bottom|-left|-right|-top|-collapse|-spacing|-box)?\n              | both|bottom\n              | box(-shadow)?\n              | break-(all|word)\n              | brightness\n              | butt(on)?\n              | capitalize\n              | cent(er|ral)\n              | char(acter-variant)?\n              | cjk-ideographic|clip|clone|close-quote\n              | closest-(corner|side)\n              | col-resize|collapse\n              | color(-stop|-burn|-dodge)?\n              | column((-count|-gap|-reverse|-rule(-color|-width)?|-width)|s)?\n              | common-ligatures|condensed|consider-shifts|contain\n              | content(-box|s)?\n              | contextual|contrast|cover\n              | crisp(-e|E)dges\n              | crop\n              | cross(hair)?\n              | da(rken|shed)\n              | default|dense|diagonal-fractions|difference|disabled\n              | discretionary-ligatures|disregard-shifts\n              | distribute(-all-lines|-letter|-space)?\n              | dotted|double|drop-shadow\n              | (nwse|nesw|ns|ew|sw|se|nw|ne|w|s|e|n)-resize\n              | ease(-in-out|-in|-out)?\n              | element|ellipsis|embed|end|EndColorStr|evenodd\n              | exclu(de(-ruby)?|sion)\n              | expanded\n              | (extra|semi|ultra)-(condensed|expanded)\n              | farthest-(corner|side)?\n              | fill(-box|-opacity)?\n              | filter|first|fixed|flat\n              | fit-content\n              | flex((-basis|-end|-grow|-shrink|-start)|box)?\n              | flip|flood-color\n              | font(-size(-adjust)?|-stretch|-weight)?\n              | forwards\n              | from(-image)?\n              | full-width|geometricPrecision|glyphs|gradient|grayscale\n              | grid(-height)?\n              | groove|hand|hanging|hard-light|height|help|hidden|hide\n              | historical-(forms|ligatures)\n              | horizontal(-tb)?\n              | hue\n              | ideograph(-alpha|-numeric|-parenthesis|-space|ic)\n              | inactive|include-ruby|infinite|inherit|initial\n              | inline(-block|-box|-flex(box)?|-line-height|-table)?\n              | inset|inside\n              | inter(-ideograph|-word|sect)\n              | invert|isolat(e|ion)|italic\n              | jis(04|78|83|90)\n              | justify(-all)?\n              | keep-all\n              | large[r]?\n              | last|left|letter-spacing\n              | light(e[nr]|ing-color)\n              | line(-edge|-height|-through)?\n              | linear(-gradient|RGB)?\n              | lining-nums|list-item|local|loose|lowercase|lr-tb|ltr\n              | lumin(osity|ance)|manual\n              | margin(-bottom|-box|-left|-right|-top)?\n              | marker(-offset|s)?\n              | mathematical\n              | max-(content|height|lines|size|width)\n              | medium|middle\n              | min-(content|height|width)\n              | miter|mixed|move|multiply|newspaper\n              | no-(change|clip|(close|open)-quote|(common|discretionary|historical)-ligatures|contextual|drop|repeat)\n              | none|nonzero|normal|not-allowed|nowrap|oblique\n              | offset(-after|-before|-end|-start)?\n              | oldstyle-nums|opacity|open-quote\n              | optimize(Legibility|Precision|Quality|Speed)\n              | order|ordinal|ornaments\n              | outline(-color|-offset|-width)?\n              | outset|outside|over(line|-edge|lay)\n              | padding(-bottom|-box|-left|-right|-top)?\n              | page|painted|paused\n              | perspective-origin\n              | petite-caps|pixelated|pointer\n              | pre(-line|-wrap)?\n              | preserve-3d\n              | progid:DXImageTransform.Microsoft.(Alpha|Blur|dropshadow|gradient|Shadow)\n              | progress\n              | proportional-(nums|width)\n              | radial-gradient|recto|region|relative\n              | repeat(-[xy])?\n              | repeating-(linear|radial)-gradient\n              | replaced|reset-size|reverse|ridge|right\n              | round\n              | row(-resize|-reverse)?\n              | run-in\n              | ruby(-base|-text)?(-container)?\n              | rtl|running|saturat(e|ion)|screen\n              | safe\n              | scroll(-position|bar)?\n              | separate|sepia\n              | scale-down\n              | shape-(image-threshold|margin|outside)\n              | show\n              | sideways(-lr|-rl)?\n              | simplified\n              | slashed-zero|slice\n              | small(-caps|er)?\n              | smooth|snap|solid|soft-light\n              | space(-around|-between|-evenly)?\n              | span|sRGB\n              | stack(ed-fractions)?\n              | start(ColorStr)?\n              | static\n              | step-(end|start)\n              | sticky\n              | stop-(color|opacity)\n              | stretch|strict\n              | stroke(-box|-dash(array|offset)|-miterlimit|-opacity|-width)?\n              | style(set)?\n              | stylistic\n              | sub(grid|pixel-antialiased|tract)?\n              | super|swash\n              | table(-caption|-cell|(-column|-footer|-header|-row)-group|-column|-row)?\n              | tabular-nums|tb-rl\n              | text((-bottom|-(decoration|emphasis)-color|-indent|-(over|under|after|before)-edge|-shadow|-size(-adjust)?|-top)|field)?\n              | thi(ck|n)\n              | titling-ca(ps|se)\n              | to[p]?\n              | touch|traditional\n              | transform(-origin)?\n              | under(-edge|line)?\n              | unicase|unsafe|unset|uppercase|upright\n              | use-(glyph-orientation|script)\n              | verso\n              | vertical(-align|-ideographic|-lr|-rl|-text)?\n              | view-box\n              | viewport-fill(-opacity)?\n              | visibility\n              | visible(Fill|Painted|Stroke)?\n              | wait|wavy|weight|whitespace|width|word-spacing\n              | wrap(-reverse)?\n              | x{1,2}-(large|small)\n              | z-index|zero\n              | zoom(-in|-out)?\n              | ({{counter_styles}})\n            )\\b(?=[\\s;{)/])\n      scope: support.constant.property-value.css\n    - match: '\\b(?i:sans-serif|serif|monospace|fantasy|cursive|system-ui)\\b(?=\\s*[;,\\n}{])'\n      scope: support.constant.font-name.css\n\n\n\n  builtin-functions:\n    - include: attr-function\n    - include: calc-function\n    - include: cross-fade-function\n    - include: filter-functions\n    - include: gradient-functions\n    - include: image-function\n    - include: image-set-function\n    - include: minmax-function\n    - include: url-function\n    - include: var-function\n    - include: color-adjuster-functions\n\n      # filter()\n      # https://drafts.fxtf.org/filters/#funcdef-filter\n    - match: '\\b(filter)(?=\\()'\n      scope: support.function.filter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: image-type\n          - include: literal-string\n          - include: filter-functions\n          - include: less-variables\n          - include: less-aliases\n          - include: less-functions\n\n      # counter()\n      # https://drafts.csswg.org/css-lists-3/#funcdef-counter\n    - match: '\\b(counter)(?=\\()'\n      scope: support.function.counter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '({{ident}})'\n            scope: entity.other.counter-name.css string.unquoted.css\n          - match: '(?=,)'\n            push:\n              - match: '(?=\\))'\n                pop: true\n              - include: comma-delimiter\n              - match: '\\b({{counter_styles}}|none)\\b'\n                scope: support.constant.property-value.counter-style.css\n              - include: less-variables\n              - include: less-aliases\n              - include: less-functions\n\n      # counters()\n      # https://drafts.csswg.org/css-lists-3/#funcdef-counters\n    - match: '\\b(counters)(?=\\()'\n      scope: support.function.counter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '({{ident}})'\n            scope: entity.other.counter-name.css string.unquoted.css\n          - match: '(?=,)'\n            push:\n              - match: '(?=\\))'\n                pop: true\n              - include: comma-delimiter\n              - include: less-variables\n              - include: less-functions\n              - include: literal-string\n              - include: less-aliases\n              - match: '\\b({{counter_styles}}|none)\\b'\n                scope: support.constant.property-value.counter-style.css\n\n      # symbols()\n      # https://drafts.csswg.org/css-counter-styles-3/#symbols-function\n    - match: '\\b(symbols)(?=\\()'\n      scope: support.function.counter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '\\b(cyclic|numeric|alphabetic|symbolic|fixed)\\b'\n            scope: support.constant.symbol-type.css\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: less-aliases\n          - include: image-type\n\n      # format()\n      # https://drafts.csswg.org/css-fonts-3/#descdef-src\n      # format() is also mentioned in `issue 2` at https://drafts.csswg.org/css-images-3/#issues-index\n      # but does not seem to be implemented in any manner\n    - match: '\\b(format)(?=\\()'\n      scope: support.function.font-face.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: less-aliases\n\n      # local()\n      # https://drafts.csswg.org/css-fonts-3/#descdef-src\n    - match: '\\b(local)(?=\\()'\n      scope: support.function.font-face.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: unquoted-string\n          - include: less-aliases\n\n      # Transform Functions\n      # https://www.w3.org/TR/css-transforms-1/#transform-functions\n\n      # transform functions with comma separated <number> types\n      # matrix(), scale(), matrix3d(), scale3d()\n    - match: '\\b(matrix3d|scale3d|matrix|scale)(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: number-type\n          - include: var-function\n          - include: less-aliases\n\n      # transform functions with comma separated <number> or <length> types\n      # translate(), translate3d()\n    - match: '\\b(translate(3d)?)(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: percentage-type\n          - include: length-type\n          - include: number-type\n          - include: var-function\n          - include: less-aliases\n\n      # transform functions with a single <number> or <length> type\n      # translateX(), translateY()\n    - match: '\\b(translate[XY])(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: percentage-type\n          - include: length-type\n          - include: number-type\n          - include: less-aliases\n\n      # transform functions with a single <angle> type\n      # rotate(), skewX(), skewY(), rotateX(), rotateY(), rotateZ()\n    - match: '\\b(rotate[XYZ]?|skew[XY])(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: angle-type\n          - include: less-aliases\n\n      # transform functions with comma separated <angle> types\n      # skew()\n    - match: '\\b(skew)(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: angle-type\n          - include: less-aliases\n\n      # transform functions with a single <length> type\n      # translateZ(), perspective()\n    - match: '\\b(translateZ|perspective)(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: less-aliases\n\n      # transform functions with a comma separated <number> or <angle> types\n      # rotate3d()\n    - match: '\\b(rotate3d)(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: angle-type\n          - include: number-type\n          - include: less-aliases\n\n      # transform functions with a single <number> type\n      # scaleX(), scaleY(), scaleZ()\n    - match: '\\b(scale[XYZ])(?=\\()'\n      scope: support.function.transform.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: number-type\n          - include: less-aliases\n\n      # Timing Functions\n      # https://www.w3.org/TR/web-animations-1/#timing-functions\n\n      # cubic-bezier()\n      # https://www.w3.org/TR/web-animations-1/#cubic-bzier-timing-function\n    - match: '\\b(cubic-bezier)(?=\\()'\n      scope: support.function.timing.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: number-type\n          - include: less-aliases\n\n      # steps()\n      # https://www.w3.org/TR/web-animations-1/#step-timing-function\n    - match: '\\b(steps)(?=\\()'\n      scope: support.function.timing.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: integer-type\n          - include: less-aliases\n          - match: (end|middle|start)\n            scope: support.keyword.timing-direction.css\n\n      # Shape Functions\n      # https://www.w3.org/TR/css-shapes-1/#typedef-basic-shape\n\n      # rect() - Deprecated\n      # https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect\n    - match: '\\b(rect)(?=\\()'\n      scope: support.function.shape.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: \\bauto\\b\n            scope: support.constant.property-value.css\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: less-aliases\n\n      # inset()\n      # https://www.w3.org/TR/css-shapes-1/#funcdef-inset\n    - match: '\\b(inset)(?=\\()'\n      scope: support.function.shape.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '\\bround\\b'\n            scope: keyword.other.css\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: percentage-type\n          - include: less-aliases\n\n      # circle()\n      # https://www.w3.org/TR/css-shapes-1/#funcdef-circle\n      # ellipse()\n      # https://www.w3.org/TR/css-shapes-1/#funcdef-ellipse\n    - match: '\\b(circle|ellipse)(?=\\()'\n      scope: support.function.shape.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '\\bat\\b'\n            scope: keyword.other.css\n          - match: '\\b(top|right|bottom|left|center|closest-side|farthest-side)\\b'\n            scope: support.constant.property-value.css\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: percentage-type\n          - include: less-aliases\n\n      # polygon()\n      # https://www.w3.org/TR/css-shapes-1/#funcdef-polygon\n    - match: '\\b(polygon)(?=\\()'\n      scope: support.function.shape.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - include: comment-block\n          - match: '(?=\\))'\n            pop: true\n          - match: '\\b(nonzero|evenodd)\\b'\n            scope: support.constant.property-value.css\n          - include: length-type\n          - include: percentage-type\n          - include: calc-function\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: less-aliases\n\n      # toggle()\n      # https://www.w3.org/TR/css3-values/#toggle-notation\n    - match: '\\b(toggle)(?=\\()'\n      scope: support.function.toggle.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: vendor-prefix\n          - include: less-variables\n          - include: less-functions\n          - include: property-value-constants\n          - include: numeric-values\n          - include: color-values\n          - include: literal-string\n          - include: less-aliases\n\n      # repeat()\n      # https://drafts.csswg.org/css-grid/#funcdef-repeat\n    - match: '\\b(repeat)(?=\\()'\n      scope: support.function.grid.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: percentage-type\n          - include: minmax-function\n          - include: integer-type\n          - include: var-function\n          - include: less-aliases\n          - match: \\b(auto-fill|auto-fit)\\b\n            scope: support.keyword.repetitions.css\n          - match: \\b(max-content|min-content|auto)\\b\n            scope: support.constant.property-value.css\n\n  # var()\n  # https://drafts.csswg.org/css-variables/#funcdef-var\n  var-function:\n    - match: '\\b(var)(?=\\()'\n      scope: support.function.var.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: custom-property-name\n          - include: less-variables\n          - include: less-functions\n          - include: less-aliases\n\n  # Filter Functions\n  # https://drafts.fxtf.org/filters/#typedef-filter-function\n  filter-functions:\n      # blur()\n      # https://drafts.fxtf.org/filters/#funcdef-filter-blur\n    - match: '\\b(blur)(?=\\()'\n      scope: support.function.filter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: less-aliases\n\n      # brightness(), contrast(), grayscale(), invert(), opacity(), saturate(), sepia()\n      # https://drafts.fxtf.org/filters/#funcdef-filter-brightness\n    - match: '\\b(brightness|contrast|grayscale|invert|opacity|saturate|sepia)(?=\\()'\n      scope: support.function.filter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: percentage-type\n          - include: number-type\n          - include: less-aliases\n\n      # drop-shadow()\n      # https://drafts.fxtf.org/filters/#funcdef-filter-drop-shadow\n    - match: '\\b(drop-shadow)(?=\\()'\n      scope: support.function.filter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: color-values\n          - include: less-aliases\n\n      # hue-rotate()\n      # https://drafts.fxtf.org/filters/#funcdef-filter-hue-rotate\n    - match: '\\b(hue-rotate)(?=\\()'\n      scope: support.function.filter.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: angle-type\n          - include: less-aliases\n\n  # calc()\n  # https://www.w3.org/TR/css3-values/#funcdef-calc\n  calc-function:\n    - match: '\\b(calc)(?=\\()'\n      scope: support.function.calc.css\n      push:\n        - meta_scope: meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push: inside-calc-parens\n        - match: ''\n          pop: true\n\n  inside-calc-parens:\n    - meta_scope: meta.group.css\n    - match: '(?=\\))'\n      set: function-notation-terminator\n    - include: comment-block\n    - include: calc-function\n    - include: var-function\n    - include: numeric-values\n    - include: attr-function\n    - include: less-variables\n    - include: less-functions\n    - include: less-aliases\n    - match: \"[-/*+]\"\n      scope: keyword.operator.css\n    - match: '\\('\n      scope: punctuation.definition.group.begin.css\n      push: inside-calc-parens\n\n  # attr()\n  # https://www.w3.org/TR/css3-values/#funcdef-attr\n  attr-function:\n    - match: '\\b(attr)(?=\\()'\n      scope: support.function.attr.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: qualified-name\n          - include: literal-string\n          - include: less-aliases\n          - match: '({{ident}})'\n            scope: entity.other.attribute-name.css\n            push:\n            - match: |-\n                (?x)\\b(\n                    {{font_relative_lengths}}\n                  | {{viewport_percentage_lengths}}\n                  | {{absolute_lengths}}\n                  | {{angle_units}}\n                  | {{duration_units}}\n                  | {{frequency_units}}\n                  | {{resolution_units}}\n                )\\b\n              scope: keyword.other.unit.css\n            - match: '(?=\\))'\n              pop: true\n            - include: comma-delimiter\n            - include: less-variables\n            - include: less-functions\n            - include: property-value-constants\n            - include: numeric-values\n            - include: color-values\n            - include: less-aliases\n\n  # url()\n  # https://drafts.csswg.org/css-images-3/#url-notation\n  url-function:\n    - match: '\\b(url)(?=\\()'\n      scope: support.function.url.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: literal-string\n          - include: less-variables\n          - include: less-functions\n          - include: unquoted-string\n          - include: less-aliases\n\n  # url-prefix()\n  # https://www.w3.org/TR/2012/WD-css3-conditional-20120911/#url-prefix\n  url-prefix-function:\n    - match: '\\b(url-prefix)(?=\\()'\n      scope: support.function.url-prefix.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: unquoted-string\n          - include: less-aliases\n\n  # domain()\n  # https://www.w3.org/TR/2012/WD-css3-conditional-20120911/#url-domain\n  domain-function:\n    - match: '\\b(domain)(?=\\()'\n      scope: support.function.domain.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: unquoted-string\n          - include: less-aliases\n\n  # regexp()\n  # https://www.w3.org/TR/2012/WD-css3-conditional-20120911/#url-regexp\n  regexp-function:\n    - match: '\\b(regexp)(?=\\()'\n      scope: support.function.regexp.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: less-aliases\n\n  # image()\n  # https://drafts.csswg.org/css-images-3/#funcdef-image\n  image-function:\n    - match: '\\b(image)(?=\\()'\n      scope: support.function.image.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: image-type\n          - include: literal-string\n          - include: color-values\n          - include: comma-delimiter\n          - include: unquoted-string\n          - include: less-aliases\n\n  # image-set()\n  # https://drafts.csswg.org/css-images-3/#funcdef-image-set\n  image-set-function:\n    - match: '\\b(image-set)(?=\\()'\n      scope: support.function.image.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: literal-string\n          - include: color-values\n          - include: comma-delimiter\n          - include: resolution-type\n          - include: image-type\n          - include: less-aliases\n          - match: '[0-9]+(x)'\n            scope: constant.numeric.integer.decimal.css\n            captures:\n              1: keyword.other.unit.css\n          - include: unquoted-string\n\n  # Gradient Functions\n  # https://drafts.csswg.org/css-images-3/#gradients\n  gradient-functions:\n      # linear-gradient()\n      # https://drafts.csswg.org/css-images-3/#linear-gradients\n      # repeating-linear-gradient()\n      # https://drafts.csswg.org/css-images-3/#funcdef-repeating-linear-gradient\n    - match: '\\b((?:repeating-)?linear-gradient)(?=\\()'\n      scope: support.function.gradient.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: less-functions\n          - include: angle-type\n          - include: comma-delimiter\n          - include: color-values\n          - include: percentage-type\n          - include: length-type\n          - include: less-aliases\n          - match: '\\bto\\b'\n            scope: keyword.other.css\n          - match: \\b(top|right|bottom|left)\\b\n            scope: support.constant.property-value.css\n\n      # radial-gradient()\n      # https://drafts.csswg.org/css-images-3/#radial-gradients\n      # repeating-radial-gradient()\n      # https://drafts.csswg.org/css-images-3/#funcdef-repeating-radial-gradient\n    - match: '\\b((?:repeating-)?radial-gradient)(?=\\()'\n      scope: support.function.gradient.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: color-values\n          - include: percentage-type\n          - include: length-type\n          - include: less-aliases\n          - match: '\\b(at|circle|ellipse)\\b'\n            scope: keyword.other.css\n          - match: |-\n              (?x)\\b(\n                  left\n                | center\n                | right\n                | top\n                | bottom\n                | closest-corner\n                | closest-side\n                | farthest-corner\n                | farthest-side\n              )\\b\n            scope: support.constant.property-value.css\n\n  # cross-fade()\n  # https://drafts.csswg.org/css-images-3/#cross-fade-function\n  cross-fade-function:\n    - match: '\\b(cross-fade)(?=\\()'\n      scope: support.function.image.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: percentage-type\n          - include: color-values\n          - include: image-type\n          - include: literal-string\n          - include: unquoted-string\n          - include: less-aliases\n\n  # minmax()\n  # https://drafts.csswg.org/css-grid/#valdef-grid-template-columns-minmax\n  minmax-function:\n    - match: '\\b(minmax)(?=\\()'\n      scope: support.function.grid.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: less-functions\n          - include: length-type\n          - include: less-aliases\n          - match: \\b(auto|max-content|min-content)\\b\n            scope: support.constant.property-value.css\n\n  # Color Functions\n  # https://drafts.csswg.org/css-color\n  color-functions:\n      # rgb(), rgba()\n      # https://drafts.csswg.org/css-color/#rgb-functions\n    - match: '\\b(rgba?)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: percentage-type\n          - include: number-type\n          - include: less-functions\n          - include: less-aliases\n\n      # hsl(), hsla()\n      # https://drafts.csswg.org/css-color/#the-hsl-notation\n      # hwb() - Not yet implemented by browsers\n      # https://drafts.csswg.org/css-color/#funcdef-hwb\n    - match: '\\b(hsla?|hwb)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: angle-type\n          - include: percentage-type\n          - include: number-type\n          - include: less-functions\n          - include: less-aliases\n\n      # gray() - Not yet implemented by browsers\n      # https://drafts.csswg.org/css-color/#funcdef-gray\n    - match: '\\b(gray)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: percentage-type\n          - include: number-type\n          - include: less-functions\n          - include: less-aliases\n\n      # device-cmyk() - Not yet implemented by browsers\n      # https://drafts.csswg.org/css-color/#funcdef-device-cmyk\n    - match: '\\b(device-cmyk)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: color-adjuster-functions # must be included before `color-values`\n          - include: color-values\n          - include: percentage-type\n          - include: number-type\n          - include: less-functions\n          - include: less-aliases\n\n      # color-mod() - Not yet implemented by browsers\n      # https://drafts.csswg.org/css-color/#funcdef-color-mod\n    - match: '\\b(color)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: comma-delimiter\n          - include: less-variables\n          - include: color-adjuster-functions # must be included before `color-values`\n          - include: var-function\n          - include: color-values\n          - include: angle-type\n          - include: number-type\n          - include: less-functions\n          - include: less-aliases\n\n  # Color Adjuster Functions - Not yet implemented by browsers\n  # https://www.w3.org/TR/css-color-4/#typedef-color-adjuster\n  color-adjuster-functions:\n      # red(), green(), blue(), alpha() - Not yet implemented by browsers\n    - match: '\\b(red|green|blue|alpha|a)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: color-adjuster-operators\n          - include: percentage-type\n          - include: number-type\n\n      # hue() - Not yet implemented by browsers\n    - match: '\\b(hue|h)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: color-adjuster-operators\n          - include: angle-type\n          - include: less-functions\n          - include: less-aliases\n\n      # saturation(), lightness(), whiteness(), blackness() - Not yet implemented by browsers\n    - match: '\\b(saturation|lightness|whiteness|blackness|[slwb])(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: color-adjuster-operators\n          - include: percentage-type\n          - include: less-functions\n          - include: less-aliases\n\n      # tint(), shade(), contrast() - Not yet implemented by browsers\n      # contrast() interferes with the contrast() filter function;\n      # therefore, it is not yet implemented here\n    - match: '\\b(tint|shade)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - include: less-variables\n          - include: percentage-type\n          - include: less-functions\n          - include: less-aliases\n\n      # blend(), blenda() - Not yet implemented by browsers\n    - match: '\\b(blenda|blend)(?=\\()'\n      scope: support.function.color.css\n      push:\n        - meta_scope: meta.function-call.css\n        - include: function-notation-terminator\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n          - meta_scope: meta.group.css\n          - match: '(?=\\))'\n            pop: true\n          - match: '\\b(rgb|hsl|hwb)\\b'\n            scope: keyword.other.color-space.css\n          - include: less-variables\n          - include: color-values\n          - include: percentage-type\n          - include: var-function\n          - include: less-functions\n          - include: less-aliases\n\n  color-adjuster-operators:\n    - match: '[\\-\\+*](?=\\s+)'\n      scope: keyword.operator.css\n\n  comma-delimiter:\n    - match: '\\s*(,)\\s*'\n      captures:\n        1: punctuation.separator.sequence.css\n\n  function-notation-terminator:\n    - match: '\\)'\n      scope: meta.group.css punctuation.definition.group.end.css\n      pop: true\n\n  vendor-prefix:\n    - match: \"-(?:webkit|moz|ms|o)-\"\n      scope: support.type.vendor-prefix.css\n\n  unicode-range:\n    - match: |-\n        (?xi)\n            (u\\+)\n            ([0-9a-f?]{1,6}\n            (?:(-)[0-9a-f]{1,6})?)\n      scope: support.unicode-range.css\n      captures:\n        1: support.constant.unicode-range.prefix.css\n        2: constant.codepoint-range.css\n        3: punctuation.section.range.css\n\n  qualified-name:\n    - match: '(?:({{ident}})|(\\*))?([|])(?!=)'\n      captures:\n        1: entity.other.namespace-prefix.css\n        2: entity.name.namespace.wildcard.css\n        3: punctuation.separator.namespace.css\n\n  # Custom Properties\n  # https://drafts.csswg.org/css-variables/#typedef-custom-property-name\n  custom-property-name:\n    - match: '(--)({{nmchar}}+)'\n      scope: support.type.custom-property.css\n      captures:\n        1: punctuation.definition.custom-property.css\n        2: support.type.custom-property.name.css\n\n  color-values:\n    - include: color-functions\n    - match: \\b(?i:aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b\n      scope: support.constant.color.w3c-standard-color-name.css\n    - match: \\b(?i:aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b\n      scope: support.constant.color.w3c-extended-color-keywords.css\n    - match: \\b(?i:currentColor|transparent)\\b\n      scope: support.constant.color.w3c-special-color-keyword.css\n    - match: '(#)(\\h{3}|\\h{6})\\b'\n      scope: constant.other.color.rgb-value.css\n      captures:\n        1: punctuation.definition.constant.css\n    - match: '(#)(\\h{4}|\\h{8})\\b'\n      scope: constant.other.color.rgba-value.css\n      captures:\n        1: punctuation.definition.constant.css\n\n  numeric-values:\n    - include: angle-type\n    - include: frequency-type\n    - include: length-type\n    - include: resolution-type\n    - include: time-type\n    - include: percentage-type\n    - include: number-type\n\n  float-type:\n    - match: '{{float}}'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n\n  integer-type:\n    - match: '{{integer}}'\n      scope: constant.numeric.css\n\n  number-type:\n    - include: float-type\n    - include: integer-type\n\n  percentage-type:\n    - match: '{{float}}(%)'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}(%)'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n\n  length-type:\n    - match: '{{float}}({{font_relative_lengths}}|{{viewport_percentage_lengths}}|{{absolute_lengths}})\\b'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}({{font_relative_lengths}}|{{viewport_percentage_lengths}}|{{absolute_lengths}})\\b'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n    - match: '0\\b(?!%)'\n      scope: constant.numeric.integer.decimal.css\n\n  time-type:\n    - match: '{{float}}({{duration_units}})\\b'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}({{duration_units}})\\b'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n\n  frequency-type:\n    - match: '{{float}}({{frequency_units}})\\b'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}({{frequency_units}})\\b'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n\n  resolution-type:\n    - match: '{{float}}({{resolution_units}})\\b'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}({{resolution_units}})\\b'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n\n  angle-type:\n    - match: '{{float}}({{angle_units}})\\b'\n      scope: constant.numeric.float.decimal.css\n      captures:\n        1: punctuation.separator.decimal.css\n        2: keyword.other.unit.css\n    - match: '{{integer}}({{angle_units}})\\b'\n      scope: constant.numeric.integer.decimal.css\n      captures:\n        1: keyword.other.unit.css\n    - match: '0\\b(?!%)'\n      scope: constant.numeric.integer.decimal.css\n\n  image-type:\n    - include: cross-fade-function\n    - include: gradient-functions\n    - include: image-function\n    - include: image-set-function\n    - include: url-function\n\n\n  # Named Grid Lines\n  # https://drafts.csswg.org/css-grid/#named-lines\n  line-names:\n    - match: '\\['\n      scope: punctuation.section.begin.css\n      push:\n        - match: '{{ident}}'\n          scope: string.unquoted.line-name.css\n        - match: '\\]'\n          scope: punctuation.section.end.css\n          pop: true\n\n\n  unquoted-string:\n    - match: '[^\\s''\"]'\n      scope: string.unquoted.css\n\n  literal-string:\n    - match: \\'\n      scope: punctuation.definition.string.begin.css\n      push:\n        - meta_scope: string.quoted.single.css\n        - match: \\'\n          scope: punctuation.definition.string.end.css\n          pop: true\n        - include: string-content\n    - match: \\\"\n      scope: punctuation.definition.string.begin.css\n      push:\n        - meta_scope: string.quoted.double.css\n        - match: \\\"\n          scope: punctuation.definition.string.end.css\n          pop: true\n        - include: string-content\n\n  string-content:\n    - match: \\n\n      scope: invalid.illegal.newline.css\n      pop: true\n    - match: \\\\\\s*\\n\n      scope: constant.character.escape.newline.css\n    - match: \\\\(?:\\h{1,6}|.)\n      scope: constant.character.escape.css\n    - include: less-interpolation\n\n\n\n  curly-braces:\n    - match: '\\{'\n      scope: punctuation.section.property-list.begin.css\n    - match: '\\}'\n      scope: punctuation.section.property-list.end.css\n\n\n  comment-block:\n    - match: /\\*\n      scope: punctuation.definition.comment.css\n      push:\n        - meta_scope: comment.block.css\n        - match: \\*/\n          scope: punctuation.definition.comment.css\n          pop: true\n        - match: ^\\s*(\\*)(?!/)\n          captures:\n            1: punctuation.definition.comment.css\n\n  comment-line:\n    - match: //\n      scope: punctuation.definition.comment.css\n      push:\n        - meta_scope: comment.line.double-slash.less\n        - match: \\n\n          pop: true\n\n  css-modules:\n    - match: '\\s*(:)(import|export)'\n      scope: meta.selector.css entity.other.pseudo-class.css-modules.css\n      captures:\n        1: punctuation.definition.entity.css\n      push:\n        - meta_scope: meta.selector.css meta.function-call.css\n        - match: '\\('\n          scope: punctuation.definition.group.begin.css\n          push:\n            - meta_scope: meta.group.css\n            - match: '\\)'\n              scope: punctuation.definition.group.end.css\n              pop: true\n            - include: selectors\n            - include: literal-string\n        - match: '\\s*(\\{)'\n          scope: punctuation.section.property-list.begin.css\n          push:\n            - meta_scope: meta.group.css-modules.css\n            - match: '\\}'\n              scope: punctuation.section.property-list.end.css\n              pop: true\n            - include: comment-line\n            - include: comment-block\n            - match: '([a-zA-Z0-9_-]+)\\s*(:)'\n              captures:\n                1: meta.property-name.css-modules.css support.type.property-name.css-modules.css\n                2: punctuation.separator.key-value.css\n                3: variable.other.css-modules.css\n              push:\n                - match: '(;|\\s*(?=$))'\n                  captures:\n                    1: punctuation.terminator.rule.css\n                  pop: true\n                - include: literal-string\n                - include: unquoted-string\n        - match: ''\n          pop: true\n"
  },
  {
    "path": "Tests/syntax_test_less.less",
    "content": "// SYNTAX TEST \"Packages/LESS/Syntaxes/LESS.sublime-syntax\"\n\n/*\nCorrectly differentiate between properties and selectors,\nespecially with pseudo-stuff because of the :\n*/\n\n*,\n& + h1,\n&:active #unit h1 + div,\n&-element + h1,\n[data-type=\"text\"],\nspan::before[data-type=\"text\"],\nselector-ish::before[data-type=\"text\"]:not(:first-child),\n.selector:hover selector-ish.selector::before {\n  *,\n  & + h1,\n  &:active + h1,\n  &-element + h1,\n  [data-type=\"text\"],\n  span::before[data-type=\"text\"],\n  filter::before[data-type=\"text\"],\n  selector-ish::before[data-type=\"text\"]:not(:first-child),\n  #selec-tor:hover, selector-ish::before {\n    color: rgba(100, 120, 12, 95%);\n    background-color: blue;\n    line-height: ~\"calc(@{space} + 4px)\";\n    span:hover {}\n    filter:not(.empty) {}\n    filter:drop-shadow(0 0 2px rgba(0, 0, 0, 0.3));\n    filter:blue;\n    filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.3))\n  }\n  color: rgba(100, 120, 12, 95%);\n  background-color: blue;\n  testbackground-color: blue;\n}\n\n\n/**\n    *\n/*  ^ comment.block.css punctuation.definition.comment.css */\n\n\n/*\nTest for ; insertion\nthe caret immediately after a selector should still be in meta.selector\n*/\n  button\n  , button  // perhaps you want to type button:hover\n//        ^ meta.selector\n  , selector-ish  /* with comments at the end */\n//              ^ meta.selector\n  , button: // or maybe button::before (is caught by a regex in the keymap)\n\n\n\n:root,\n// <- entity.other.pseudo-class.css punctuation.definition.entity.css\n// ^^ entity.other.pseudo-class.css\n.class {\n// ^^^^ meta.selector\n//     ^ - meta.selector\n\n  ~,\n//^ punctuation.separator.combinator\n  ::before,\n// ^ entity.other.pseudo-element.css punctuation.definition.entity.css\n// ^^ entity.other.pseudo-element.css\n  .cl-ass { }\n// ^^^^^^^ meta.selector\n  span:hover { }\n// ^^^ entity.name.tag.css\n  background: #333;\n// ^^^^^^^^^ meta.property-name.css\n//           ^^^^^ meta.property-value.css\n  background-color: pink;\n// ^^^^^^^^^^^^^^^ meta.property-name.css\n//                 ^^^^^ meta.property-value.css\n  background: url('../assets/photo1-blue.jpg') center/cover no-repeat;\n//                                             ^ support.constant.property-value.css\n//                                                    ^ support.constant.property-value.css\n//                                                          ^ support.constant.property-value.css\n  &-bemish {  }\n//^ keyword.operator.ampersand.less\n// ^^^^^^^ entity.other.attribute-name.css\n// ^^^^^^^^ meta.selector.css\n  [data-type=\"text\"]:hover,\n//^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector\n//                  ^^^^^^ entity.other.pseudo-class.css\n//                  ^ punctuation.definition.entity.css\n//                        ^ punctuation.separator.css\n  [data-type=\"text\"]:active {}\n//^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector\n//                  ^^^^^^^ entity.other.pseudo-class.css\n//                  ^ punctuation.definition.entity.css\n\n  #id@{interopol}bla,\n  custom-element@{interopol}test,\n  background: blue\n// ^ meta.property-name.css\n}\n\n\n@foreground-color: grayscale(50%);\n// <- variable.declaration.less punctuation.definition.variable.less\n// ^ variable.declaration.less\n//                 ^ meta.function-call.css support.function.filter.css\n@background-color: hsl(30,100%,96%);\n// <- variable.declaration.less punctuation.definition.variable.less\n// ^ variable.declaration.less\n@medialist-bg: @body-bg;\n// ^^^^^^^^^^ variable.declaration.less\n// <- variable.declaration.less punctuation.definition.variable.less\n@media-list-bg: @body-bg;\n// ^^^^^^^^^^ variable.declaration.less\n// <- variable.declaration.less punctuation.definition.variable.less\n\n\n*,\n// <- entity.name.tag.wildcard.css\nfilter,\n// ^^^ meta.selector.css entity.name.tag.css\n//    ^ meta.selector.css punctuation.separator.css\nfilter\n, .element\n// <- punctuation.separator.sequence.css\nfilter {}\n//    ^ meta.selector.css\n// ^ entity.name.tag.css\n//    ^ - entity.name.tag.css\nfilter{}\n// ^ entity.name.tag.css\n.use-mixin {\n// ^^^^^^^ meta.selector.css entity.other.attribute-name.class.css\n  &--bem {}\n// ^^^^^ meta.selector.css entity.other.attribute-name\n//^ keyword.operator.ampersand.less\n  &_bem {}\n// ^^^^ meta.selector.css entity.other.attribute-name\n//     ^ meta.selector.css\n}\n.accordion__copy,\n// ^^^^^^^^^^^^^ meta.selector.css entity.other.attribute-name.class.css\n.accordion__copy--open {}\n// ^^^^^^^^^^^^^^^^^^^ meta.selector.css entity.other.attribute-name.class.css\n#main h1+.sub {\n// <- entity.other.attribute-name.id.css punctuation.definition.entity.css\n// ^^ entity.other.attribute-name.id.css\n//    ^^ meta.selector.css entity.name.tag.css\n//           ^ meta.selector.css\n//     ^ - constant.numeric\n//            ^ punctuation.section.property-list.begin.css\nfilter:hover {}\nfilter::before {}\n// ^ entity.name.tag.css\n//    ^^^^^^^^ entity.other.pseudo-element.css\n//    ^^ punctuation.definition.entity.css\n//             ^ punctuation.section.property-list.begin.css\n//              ^ punctuation.section.property-list.end.css\nhtml{}\n// ^ entity.name.tag.css\nhtml:after,\n//  ^ entity.other.pseudo-element.css punctuation.definition.entity.css\n//   ^ entity.other.pseudo-element.css\nhtml:hover,\n// ^ entity.name.tag.css\n//  ^ entity.other.pseudo-class.css punctuation.definition.entity.css\n//   ^ entity.other.pseudo-class.css\nhtml::before {\n// ^ entity.name.tag.css, keyword.control.html.elements\n//  ^^ entity.other.pseudo-element.css punctuation.definition.entity.css\n//     ^ entity.other.pseudo-element.css\n  &:not(:first-child, :last-child) { text-decoration: underline; }\n//      ^^^^^^^^^^^^ entity.other.pseudo-class.css\n//      ^ punctuation.definition.entity.css\n//                  ^ punctuation.separator.sequence.css\n//                    ^^^^^^^^^^^ entity.other.pseudo-class.css\n//                    ^ punctuation.definition.entity.css\n  strong:not(:not(.strong)) {}\n//           ^^^^ entity.other.pseudo-class.css\n//                ^^^^^^^ entity.other.attribute-name.class.css\n  &:first-child {}\n//^^^^^^^^^^^^^^ meta.selector.css\n// ^^^^^^^^^^^^ entity.other.pseudo-class.css\n//^ keyword.operator.ampersand.less\n// ^ punctuation.definition.entity.css\n    & + & {}\n  //  ^ punctuation.separator.combinator.css\n  font-family: 'Lucida Grande', Verdana, sans-serif;\n  font-size: 16px;\n  line-height: ~\"calc(@{space} + 4px)\";\n  transition: background-color .2s ease-in-out;\n\n  cursor: pointer !important;\n// ^ support.type.property-name.css\n//          ^ meta.property-value.css support.constant.property-value.css\n//                  ^ meta.property-value.css keyword.other.important.css\n  display: -webkit-flex;\n//  ^ support.type.property-name.css\n//         ^ meta.property-value.css support.type.vendor-prefix.css\n//                 ^ meta.property-value.css support.constant.property-value.css\n  align-self : baseline;\n//  ^ support.type.property-name.css\n  -webkit-user-select: none;\n//  ^ support.type.vendor-prefix.css\n//         ^ support.type.property-name.css\n  line-height: 1.5 * 20;\n//                 ^ meta.property-value.css keyword.operator.less\n  line-height: (1.5 %= 20);\n//                  ^ meta.property-value.css keyword.operator.less\n  color: @foreground-color;\n//       ^^ meta.property-value.css variable.other.less\n//       ^ punctuation.definition.variable.less\n  --custom-background-color: green;\n//        ^ support.type.custom-property.css support.type.custom-property.name.css\n//                         ^ punctuation.separator.key-value.css\n  padding-top: var(--custom-background-color, @blue);\n//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css\n//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.css\n//             ^^^ support.function.var.css\n//                ^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.css\n//                ^ punctuation.definition.group.begin.css\n//                 ^^ support.type.custom-property.css punctuation.definition.custom-property.css\n//                    ^ support.type.custom-property.css support.type.custom-property.name.css\n//                                          ^ punctuation.separator\n//                                            ^^^^^ variable.other\n//                                                 ^ punctuation.definition.group.end.css\n//                                                  ^ punctuation.terminator.rule.css\n  padding-left: @{background-color};\n//              ^^^^^^^^^^^^^^^^^^^ meta.property-value.css variable.other.less\n//              ^ punctuation.definition.variable.less\n//               ^ punctuation.definition.string.begin.less\n//                ^ string.interpolated.less\n//                                ^ punctuation.definition.string.end.less\n  fill : rebeccapurple;\n// ^ support.type.property-name.css\n//        ^ meta.property-value.css support.constant.color.w3c-extended-color-keywords.css\n  filter: drop-shadow(0 0 2px rgba(0, 0, 0, 0.3));\n// ^ support.type.property-name.css\n\n  .fade-in(h1) {\n    @keyframes fade-in-animation {\n//  ^ meta.at-rule.keyframe.css keyword.control.at-rule.keyframe.css punctuation.definition.keyword.css\n//             ^ meta.at-rule.keyframe.css entity.other.animation-name.css\n      to {\n        opacity: 1;\n      }\n    }\n\n/*\nInterpolated selectors\nhttp://lesscss.org/features/#variables-feature-variable-interpolation\n*/\n    .@{selector}:hover + a,\n//  ^^^^^^^^^^^^^^^^^^^^^^ meta.selector\n//  ^ entity.other.attribute-name.class.css punctuation.definition.entity.css\n//   ^^^^^^^^^^^ variable.other.less\n//   ^ punctuation.definition.variable.less\n//    ^ punctuation.definition.string.begin.less\n//     ^ string.interpolated.less\n//             ^ punctuation.definition.string.end.less\n    @{selector}:hover + a {\n//  ^^^^^^^^^^^^^^^^^^^^^^ meta.selector\n//  ^^^^^^^^^^^ variable.other.less\n//  ^ punctuation.definition.variable.less\n//   ^ punctuation.definition.string.begin.less\n//    ^ string.interpolated.less\n//            ^ punctuation.definition.string.end.less\n      @{property}: #0ee;\n//    ^^^^^^^^^^^ meta.property-name\n//    ^^^^^^^^^^^ variable.other\n      background-@{property}: #999;\n//              ^ - variable.other\n//               ^^^^^^^^^^^ variable.other\n//    ^^^^^^^^^^^^^^^^^^^^^^ meta.property-name\n      @{property}-color: #999;\n//    ^^^^^^^^^^^^^^^^^ meta.property-name\n//    ^^^^^^^^^^^ variable.other\n//               ^ - variable.other\n      animation : progress-fade-in-animation .15s ease-in;\n//                ^ meta.property-value.css\n//                ^ string.unquoted.css\n//    ^ meta.property-name.css support.type.property-name.css\n      animation: progress-fade-in-animation .15s ease-in;\n//             ^ source.less punctuation.separator.key-value.css\n//    ^ meta.property-name.css support.type.property-name.css\n//               ^ meta.property-value.css\n//                                               ^ meta.property-value.css support.constant.property-value.css\n//                                                      ^ punctuation.terminator.rule.css\n    }\n  }\n}\n\n\n/* CSS Modules\n\n   Interoperable CSS: https://github.com/css-modules/icss#specification\n   localAlias is basically any string inside a CSS file,\n   that will be replaced with the value stored as keyFromDep\n   keys must be a single term, consisting of only alphanumeric characters, underscores and dashes\n*/\n:import(\"path/to/dep.css\") {\n// ^^^^ entity.other.pseudo-class.css-modules.css\n//     ^ punctuation.definition.group.begin.css\n//      ^^^^ string\n//                       ^ punctuation.definition.group.end.css\n//                         ^ punctuation.section.property-list.begin.css\n  localAlias: keyFromDep;\n// ^^^^^^^^^ meta.property-name.css-modules.css\n//            ^^^^^^^^^^ string\n   blababla : \"keyFromDep\";\n// ^^^^^^^^ meta.property-name.css-modules.css\n//          ^ punctuation\n//            ^^^^^^^^^^ string\n//                        ^ punctuation\n}\n// an exportedKey exposes a specific value (a selector, a value, anything really)\n:export {\n// ^^^^ entity.other.pseudo-class.css-modules.css\n  exportedKey: exportedValue;\n// ^^^^^^^^^ meta.property-name.css-modules.css\n//           ^ punctuation\n//             ^^^^^^^^^^ string\n//                          ^ punctuation\n}\n/* CSS Modules\n   Composing selectors: https://github.com/css-modules/css-modules#css-modules\n*/\n.otherClassName {\n  composes: className from \"./style.css\";  // from filename\n  composes: classNameA classNameB;         // multiple classnames\n  composes: globalClassName from global;   // from global classnames\n// ^^^^^^^ meta.property-name.css-modules.css\n//        ^ punctuation\n//                          ^^^^ keyword.control.import.from.css-modules.css\n//                                     ^ punctuation\n}\n/* CSS Modules\n   Global vs. local scope: https://github.com/css-modules/css-modules#exceptions\n*/\n.localA :global .global-b .global-c :local(.localD.localE::before) .global-d\n//      ^^^^^^^ entity.other.pseudo-class.css-modules\n//                                  ^^^^^^ entity.other.pseudo-class.css-modules\n//                                        ^ meta.function-call.css meta.group.css punctuation.definition.group.begin.css\n//                                         ^^^^^^^^^^^^^^^^^^^^^^ meta.selector\n//                                                               ^ punctuation.definition.group.end.css\n:global {  // global blocks\n// ^^^^ entity.other.pseudo-class.css-modules\n  .global-class-name {\n    color: green;\n  }\n}\n:local {  // local blocks\n// ^^^ entity.other.pseudo-class.css-modules\n  .global-class-name {\n    color: green;\n  }\n}\n\n\n/*\n  Support property values after a line break\n*/\n.grid {\n  grid-template-areas:\n    \"header header\"\n    \"aside main\";\n}\n\n\n/*\n  Mixins\n  http://lesscss.org/features/#mixins-feature\n*/\n.border-radius(@color: h1; @padding; @margin: 2;) {\n  -webkit-border-radius: @radius;\n     -moz-border-radius: @radius;\n          border-radius: @radius;\n}\n\n\n/*\nGuarded Namespaces and Mixins\nhttp://lesscss.org/features/#mixins-feature-guarded-namespaces\n*/\n\n#namespace when not (@mode = huge) {\n//                         ^ meta.function.parameters.less keyword.operator.less\n//                           ^ string.unquoted\n.a-test-mixin(@color: black; /*@margin: 10px;*/ @padding: 20px) when (lightness(@a) >= 50%) {\n//                           ^^^^^^^^^^^^^^^^^^ comment.block.css\n//                           ^^ punctuation.definition.comment.css\n//                                           ^^ punctuation.definition.comment.css\n//                                                              ^^ keyword.operator\n//                                                                              ^^ meta.function.parameters.less variable.other.less\n//                                                                              ^ punctuation.definition.variable.less\n  .nested {\n    @media screen and (max-width: 100px) {\n      .mixin(@a) when not (isnumber(@a)) and (@a > 0) ... }\n//                    ^^ keyword.operator\n//                         ^^^^^^^^ meta.function-call.less support.function.less\n    }\n  }\n  color: mix(@grey4, @grey5);\n//       ^ meta.property-value.css meta.function-call.less support.function.less\n  background: mix(@white, mix(@grey4, @grey5));\n//                          ^ meta.property-value.css meta.function-call.less support.function.less\n  background-color: linear-gradient(@white, mix(@grey4, mix(@grey4, @grey5)));\n//                                          ^ meta.property-value.css meta.function-call.less support.function.less\n  padding: @padding;\n}\n.mixin(@a) when not (isnumber(@a)) and (@a > 0) ... }\n//                                         ^ meta.function.parameters.less keyword.operator.less\n\n\n/*\nAttribute selectors\n*/\n  a[data-property=\"text\"] {\n// ^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-selector.css\n// ^ punctuation.definition.entity.css\n//   ^ entity.other.attribute-name.css\n//               ^ keyword.operator.attribute-selector.css\n//                ^ string.quoted.double.css punctuation.definition.string.begin.css\n//                  ^ string.quoted.double.css\n//                     ^ punctuation.definition.string.end.css\n//                      ^ punctuation.definition.entity.css\n  a[value^=\"text\"] {\n//   ^ meta.attribute-selector.css entity.other.attribute-name.css\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n  a[value=\"text\"], a[value=\"text\"] { }\n//                  ^ punctuation.definition.entity.css\n  a[href~=\"#\"] {\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n  a[value|='text'] {\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n//           ^ meta.attribute-selector.css string.quoted.single.css\n  a[value$=text] {\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n//          ^ meta.attribute-selector.css string.unquoted.css\n  a[width*=\"100%\" i] {\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n//                ^ meta.attribute-selector.css keyword.other.css\n  a[value*=\"text\" I] {\n//       ^ meta.attribute-selector.css keyword.operator.attribute-selector.css\n\n\n\n\n\n  color: @link-color;\n//       ^ punctuation.definition.variable.less\n  color: @@color; // variable variables\n//       ^^ punctuation.definition.variable.less\n  /*\n  Properties as Variables\n  http://lesscss.org/features/#variables-feature-properties-as-variables-new-\n  */\n  color: $color;\n//       ^^^^^^ variable.other.less\n//       ^ punctuation.definition.variable.less\n  color: $nonproperty;\n//       ^^^^^^^^^^^^ - variable.other.less\n//       ^ - punctuation.definition.variable.less\n\n  text-decoration: none;\n  & {}\n//^^ meta.selector.css\n  &:hover {\n    .mixin   { /* */ }\n//  ^ punctuation.definition.entity.css\n//  ^^^^^^ meta.selector.css\n    #mixin(@color-param, @position-param) { /* */ }\n//  ^ punctuation.definition.entity.css\n//  ^^^^^^ meta.selector.css\n    .border-radius(@radius: 5px) {\n      -webkit-border-radius: @radius;\n         -moz-border-radius: @radius;\n              border-radius: @radius;\n    }\n    .message-mixin(success; var(--green); var(--green-dark));\n//                          ^^^ support.function.var.css\n//                              ^^ punctuation.definition.custom-property.css\n//                                ^ support.type.custom-property.name.css\n    object-fit: scale-down;\n//  ^^^^^^^^^^ support.type.property-name.css\n//              ^^^^^^^^^^ meta.property-value.css support.constant.property-value.css\n    color: lighten(@link-color, 5%);\n//  ^ support.type.property-name.css\n//         ^ meta.property-value.css meta.function-call.less support.function.less\n//                ^ meta.property-value.css meta.function-call.less punctuation.definition.group.begin.less\n//                   ^ meta.property-value.css meta.function-call.less meta.function.parameters.less variable.other.less\n    background: linear-gradient(@grey2, @black);\n//                            ^ meta.property-value.css meta.function-call.css support.function.gradient.css\n//                             ^ meta.property-value.css meta.group.css punctuation.definition.group.begin.css\n//                              ^ meta.property-value.css variable.other.less punctuation.definition.variable.less\n//                               ^ meta.property-value.css variable.other.less\n//                                      ^ meta.property-value.css variable.other.less punctuation.definition.variable.less\n//                                       ^ meta.property-value.css variable.other.less\n//                                            ^ meta.property-value.css meta.group.css punctuation.definition.group.end.css\n  }\n}\n\n\n#variables {\n  @variable: 10px;\n  @another-variable: @variable;\n\n  width: @variable + @another-variable;\n  width: @variable*2;\n\n  .@{varname}--subclass#another-variable@{variable}id[data-attr=\"text\"] { color: @orangy; }\n//            ^ entity.other.attribute-name.class.css\n//                     ^ entity.other.attribute-name.id.css punctuation.definition.entity.css\n//                             ^ entity.other.attribute-name.id.css\n//                                                 ^ entity.other.attribute-name.id.css\n}\n#@{varname}--subclass { color: @orangy; }\n//          ^ entity.other.attribute-name.id.css\n\n@media only tv /*awesome*/ and (-webkit-max-width: @pixels) and (max-pixel-ratio: 1920/1200) and (min-aspect-ratio: portrait) { }\n//     ^ meta.at-rule.media.css keyword.operator.logic.media.css\n//                                                         ^ meta.at-rule.media.css\n//          ^ meta.at-rule.media.css support.constant.media.css\n//               ^ meta.at-rule.media.css comment.block.css\n//                             ^ meta.at-rule.media.css punctuation.definition.group.begin.css\n//                              ^ meta.at-rule.media.css support.type.vendor-prefix.css\n//                               ^ meta.at-rule.media.css support.type.vendor-prefix.css\n//                                       ^ meta.at-rule.media.css support.type.property-name.media.css\n//                                               ^ meta.at-rule.media.css punctuation.separator.key-value.css\n//                                                 ^ meta.at-rule.media.css variable.other.less punctuation.definition.variable.less\n//                                                  ^ meta.at-rule.media.css variable.other.less\n//                                                          ^ meta.at-rule.media.css keyword.operator.logic.media.css\n//                                                                                                                  ^ meta.at-rule.media.css support.constant.property-value.css\n.avatar:not(body) {}\n//          ^^^^ entity.name.tag.css\n.avatar:not(.class) {}\n//               ^ meta.group.css entity.other.attribute-name.class.css\n//                ^ meta.group.css punctuation.definition.group.end.css\n.class#id:nth-child(2n-1) {}\n//                   ^ constant.numeric keyword.other.unit.css\n//                    ^ meta.selector.css meta.function-call.css meta.group.css constant.numeric\n.avatar:nth-child(3) {\n//     ^ entity.other.pseudo-class.css punctuation.definition.entity.css\n//.     ^ entity.other.pseudo-class.css\n//.         ^ entity.other.pseudo-class.css\n//.              ^ meta.group.css punctuation.definition.group.begin.css\n//.               ^ meta.group.css constant.numeric.css\n//.                ^ meta.group.css punctuation.definition.group.end.css\n//.                 ^\n  display: inline-block;\n  width: 48px;\n  height: 48px;\n  border-radius: 50%;\n  background: url(data:@{image}/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7);\n// ^ support.type.property-name.css\n//               ^ meta.property-value.css meta.group.css punctuation.definition.group.begin.css\n//                 ^ meta.property-value.css meta.group.css string.unquoted.css\n//                      ^ meta.property-value.css meta.group.css variable.other.less punctuation.definition.string.begin.less\n//                                                                                                                                                                                                                                                                                                                                         ^ meta.property-value.css meta.group.css punctuation.definition.group.end.css\n  background: url(\"data:@{image}/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7\");\n//               ^ meta.property-value.css meta.group.css punctuation.definition.group.begin.css\n//                ^ meta.property-value.css meta.group.css string.quoted.double.css punctuation.definition.string.begin.css\n//                 ^ meta.property-value.css meta.group.css string.quoted.double.css\n//                      ^ meta.property-value.css meta.group.css string.quoted.double.css variable.other.less punctuation.definition.variable.less\n//                                                                                                                                                                                                                                                                                                                                          ^ meta.property-value.css meta.group.css string.quoted.double.css punctuation.definition.string.end.css\n//                                                                                                                                                                                                                                                                                                                                           ^ meta.property-value.css meta.group.css punctuation.definition.group.end.css\n  background: url('data:@{image}/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7');\n//               ^ meta.property-value.css meta.group.css punctuation.definition.group.begin.css\n//                ^ meta.property-value.css meta.group.css string.quoted.single.css punctuation.definition.string.begin.css\n//                 ^ meta.property-value.css meta.group.css string.quoted.single.css\n//                      ^ meta.property-value.css meta.group.css string.quoted.single.css variable.other.less punctuation.definition.variable.less\n//                                                                                                                                                                                                                                                                                                                                          ^ meta.property-value.css meta.group.css string.quoted.single.css punctuation.definition.string.end.css\n//                                                                                                                                                                                                                                                                                                                                           ^ meta.property-value.css meta.group.css punctuation.definition.group.end.css\n}\n@import (reference) \"@{themes}/tidal-wave.less\";\n//      ^^^^^^^^^^^ meta.at-rule.import.css meta.at-rule.arguments.less\n//      ^ punctuation.definition.group.begin.less\n//                ^ punctuation.definition.group.end.less\n//                   ^ variable.other.less punctuation.definition.variable.less\n//                      ^ string.quoted.double.css variable.other.less string.interpolated.less\n//                                             ^ punctuation.terminator.rule.css\n@import \"mixins\";\n// <- meta.at-rule.import.css keyword.control.at-rule.import.css punctuation.definition.keyword.css\n// ^ meta.at-rule.import.css keyword.control.at-rule.import.css\n//      ^^^^^^^^ string.quoted.double.css\n//      ^ punctuation.definition.string.begin.css\n//             ^ punctuation.definition.string.end.css\n@import url(\"https://fonts.googleapis.com/css?family=Source+Code+Pro:400\");\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.less meta.at-rule.import.css  meta.function-call.css meta.group.css string.quoted.double.css\n//          ^ punctuation.definition.string.begin.css\n//                                                                      ^ punctuation.definition.string.end.css\n@import url(somefile);\n//         ^ punctuation.definition.group.begin.css\n//      ^^^ meta.function-call.css support.function.url.css\n//          ^^^^^^^^ meta.group.css string.unquoted.css\n//                  ^ punctuation.definition.group.end.css\n@import url(http://fonts.googleapis.com/css?family=Roboto:400,100,300,500);\n//          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.css string.unquoted.css\n\n\n/*\n  Maps\n  http://lesscss.org/#maps\n  http://lesscss.org/features/#maps-feature\n*/\n@sizes: {\n  mobile: 320px;\n//^^^^^^ variable.declaration.map.less\n//        ^^^^^ constant.numeric\n//      ^ punctuation.separator.key-value\n//             ^ punctuation.terminator.rule\n  tablet: 768px;\n  desktop: 1024px;\n}\n@config: {\n  @options: {\n    library-on: true\n//  ^^^^^^^^^^ variable.declaration.map.less\n  }\n}\n#colors() {\n  primary: blue;\n//  ^^^^^ variable.declaration.map.less\n//       ^ punctuation.separator.key-value\n  secondary: green;\n}\n#library() {\n  .colors() { primary: grey; }\n}\n\n.button {\n  color: #colors[primary];\n//       ^^^^^^^ entity.other.attribute-name.id\n//       ^ punctuation.definition.entity\n//              ^^^^^^^^^ meta.brackets.less\n//              ^ punctuation.section.brackets.begin\n//                      ^ punctuation.section.brackets.end\n//                ^^^^^^ variable.other.less\n  border: 1px solid .colors[@secondary];\n//                  ^^^^^^^ entity.other.attribute-name.class\n//                  ^ punctuation.definition.entity\n//                         ^^^^^^^^^ meta.brackets.less\n//                         ^ punctuation.section.brackets.begin\n//                                    ^ punctuation.section.brackets.end\n//                          ^^^^^^ variable.other.less\n//                          ^ punctuation.definition.variable\n}\n.navbar {\n  display: block;\n\n  @media (min-width: @sizes[tablet]) {\n//                         ^^^^^^^^ meta.brackets.less\n//                         ^ punctuation.section.brackets.begin\n//                                ^ punctuation.section.brackets.end\n//                          ^^^^^^ variable.other.less\n    display: inline-block;\n    background-color: rgba(#ui-colors.dark[background-090],0.7);\n//                                                        ^ - meta.alias\n  }\n}\n\n/*\nCSS Guards\nhttp://lesscss.org/features/#css-guards-feature\n*/\n\n& when (@config[@options][library-on] = true) {\n// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css\n// ^ keyword.operator.logic.mixin.less\n//     ^ meta.function.parameters.less punctuation.definition.group.begin\n  .produce-ruleset {\n    prop: val;\n  }\n}\n\n.my-optional-style() when (@my-option = true) {\n// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css\n//                   ^ keyword.operator.logic.mixin.less\n//                        ^ meta.function.parameters.less punctuation.definition.group.begin\n  button {\n    color: white;\n  }\n}\n\nbutton when not (@my-option = true) {\n// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css\n//        ^ keyword.operator.logic.mixin.less\n//          ^ keyword.operator.logic.mixin.less\n//              ^ meta.function.parameters.less punctuation.definition.group.begin\n  color: white;\n}\n\n\n/*\nAliasing Mixins\nhttp://lesscss.org/features/#mixins-feature-mixin-aliasing-feature\n*/\n#theme.dark.navbar {\n  .colors(light) {\n    primary: purple;\n  }\n  .colors(dark) {\n    primary: black;\n    secondary: grey;\n  }\n  .box {\n    @alias: #library.rules();\n    @alias();\n  }\n}\n\n.navbar {\n  @colors: .theme#dark.navbar.colors(dark);\n//       ^ punctuation.separator.key-value.css\n//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css meta.alias.less\n//         ^ punctuation.definition.entity.less\n//               ^ punctuation.definition.entity.less\n//                    ^ punctuation.definition.entity.less\n//                           ^ punctuation.definition.entity.less\n//                                  ^ punctuation.definition.group.begin\n//                                       ^ punctuation.definition.group.end\n//                                        ^ punctuation.terminator.rule.css\n  @colors: .theme.dark.navbar#colors(dark);\n//       ^ punctuation.separator.key-value.css\n//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css meta.alias.less\n//         ^ punctuation.definition.entity.less\n//               ^ punctuation.definition.entity.less\n//                    ^ punctuation.definition.entity.less\n//                           ^ punctuation.definition.entity.less\n//                                  ^ punctuation.definition.group.begin\n//                                       ^ punctuation.definition.group.end\n//                                        ^ punctuation.terminator.rule.css\n  @colors: #theme.dark.navbar#colors(dark);\n//       ^ punctuation.separator.key-value.css\n//         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css meta.alias.less\n//         ^ punctuation.definition.entity.less\n//               ^ punctuation.definition.entity.less\n//                    ^ punctuation.definition.entity.less\n//                           ^ punctuation.definition.entity.less\n//                                  ^ punctuation.definition.group.begin\n//                                       ^ punctuation.definition.group.end\n//                                        ^ punctuation.terminator.rule.css\n  background: @colors[primary];\n  border: 1px solid @colors[secondary];\n  .button {\n    @colors: #library.colors();\n    color: @colors[primary];\n    border-color: @colors[secondary];\n    border-color: #library.colors[secondary];\n//                ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.property-value.css meta.alias.less\n//                                          ^ punctuation.terminator.rule.css - meta.alias.less\n//                               ^^^^^^^^^^^ meta.brackets.less\n//                               ^ punctuation.section.brackets.begin.less\n//                                         ^ punctuation.section.brackets.end.less\n  }\n}\n\n\n/*\nDetached Rulesets\nhttp://lesscss.org/features/#detached-rulesets-feature\n*/\nheader {\n  background-color: blue;\n\n  #hover({\n//       ^ punctuation.section.property-list.begin.css\n    .site-header-info-extra-tooltip {\n      opacity: 1;\n      #transition(~'opacity @{duration-short} @{ease}')\n//                ^ string.quoted.single.css markup.raw.less keyword.operator.less\n    }\n    .site-header-info-extra-tooltip {\n//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css entity.other.attribute-name.class.css\n      opacity: 1;\n      #transition(~'opacity @{duration-short} @{ease}')\n\n      .site-header-info-extra-tooltip {\n//    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.selector.css entity.other.attribute-name.class.css\n        opacity: 1;\n        #transition(~'opacity @{duration-short} @{ease}')\n\n      }\n    }\n  })\n\n  .desktop-and-old-ie({\n//                    ^ punctuation.section.property-list.begin.css\n    background-color: red(color);\n//  ^^^^^^^^^^^^^^^^  meta.property-name.css support.type.property-name.css\n//                  ^ punctuation.separator.key-value.css\n//                    ^ meta.function-call.css support.function.color.css\n//                       ^ punctuation.definition.group.begin.css\n    width: @variable + @another-variable;\n    height: 100px;\n  });\n//^ punctuation.section.property-list.end.css\n}\n\n\n\n\n// ensure we don't confuse variables with @-keywords\n    @pageColor: blue;\n//  ^^^^^ - meta.at-rule\n    @namespaceColor: pink;\n//  ^^^^^ - meta.at-rule\n    @documentColor: pink;\n//  ^^^^^ - meta.at-rule\n    @importColor: pink;\n//  ^^^^^ - meta.at-rule\n    @keyframesColor: pink;\n//  ^^^^^ - meta.at-rule\n    @supportsColor: pink;\n//  ^^^^^ - meta.at-rule\n\n\n\n// ------------ A selection of tests from the default CSS package: -------------\n\n\n.test-strings {\n    content: \"double\";\n//           ^^^^^^^^  string.quoted.double.css\n//           ^         punctuation.definition.string.begin.css\n//                  ^  punctuation.definition.string.end.css\n    content: 'single';\n//           ^^^^^^^^  string.quoted.single.css\n//           ^         punctuation.definition.string.begin.css\n//                  ^  punctuation.definition.string.end.css\n\n    content: 'invalid;\n//                    ^ invalid.illegal.newline.css\n}\n\n.test-punctuation {\n//                ^ punctuation.section.property-list\n    top: 1px;\n//     ^      punctuation.separator.key-value.css\n//          ^ punctuation.terminator.rule.css\n\n    top: cubic-bezier(0.2, 0, 0.13, 2);\n/*                    ^^^ constant.numeric.float.decimal.css */\n/*                     ^ punctuation.separator.decimal.css */\n/*                       ^ punctuation.separator.sequence.css*/\n/*                         ^ constant.numeric.integer.decimal.css  */\n/*                          ^ punctuation.separator.sequence.css*/\n/*                            ^^^^ constant.numeric.float.decimal.css */\n/*                             ^ punctuation.separator.decimal.css */\n\n    top: url(\"image\");\n//          ^         punctuation.definition.group.begin.css\n//                  ^ punctuation.definition.group.end.css\n}\n// < punctuation.section.property-list.css\n\n    .classname {}\n//  ^^^^^^^^^^^ meta.selector.css\n//  ^          punctuation.definition.entity.css\n//   ^^^^^^^^^ entity.other.attribute-name.class.css\n\n    #id {}\n//  ^   punctuation.definition.entity.css\n//   ^^ entity.other.attribute-name.id.css\n\n    html {}\n//  ^^^^ entity.name.tag.css\n\n    @charset \"UTF-8\";\n//  ^^^^^^^^^^^^^^^^ meta.at-rule\n//  ^        punctuation.definition.keyword.css\n//   ^^^^^^^ keyword.control.at-rule\n\n    @import \"x\" print;\n//  ^^^^^^^^^^^^^^^^^ meta.at-rule\n//  ^                 punctuation.definition.keyword.css\n//   ^^^^^^           keyword.control.at-rule\n//              ^^^^^ support.constant.media.css\n\n//  ^^^^^^^^^^ - meta.at-rule.namespace.css\n    @namespace svg \"http://www.w3.org/1999/xhtml\";\n//  ^^^^^^^^^^^^^^^^^ meta.at-rule.namespace.css\n//  ^              punctuation.definition.keyword.css\n//   ^^^^^^^^^     keyword.control.at-rule.namespace.css\n//             ^^^ entity.other.namespace-prefix.css\n\n    @namespace url(\"http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul\"); /* only needed once */\n//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.namespace.css\n//             ^^^ support.function.url.css\n//             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.css\n//                ^ meta.group.css punctuation.definition.group.begin.css\n//                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.css string.quoted.double.css\n//                                                                                ^ meta.group.css punctuation.definition.group.end.css\n\n    @page :left {}\n//  ^^^^^^^^^^^^ meta.at-rule.page.css\n//  ^     punctuation.definition.keyword.css\n//   ^^^^ keyword.control.at-rule.page.css\n\n    @media only screen {}\n//  ^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css\n//  ^                  punctuation.definition.keyword.css\n//   ^^^^^             keyword.control.at-rule.media.css\n//         ^^^^        keyword.operator.logic.media.css\n//              ^^^^^^ support.constant.media.css\n\n    @media (min-width: 700px) {}\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css */\n/*  ^ punctuation.definition.keyword.css */\n/*   ^^^^^ keyword.control.at-rule.media.css */\n/*         ^ punctuation.definition.group.begin.css */\n/*          ^^^^^^^^^ support.type.property-name.media.css */\n/*                     ^^^^^ constant.numeric.integer.decimal.css */\n/*                          ^ punctuation.definition.group.end.css */\n\n    @media (min-width: 700px) and (max-width: 2000px) {}\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css */\n/*  ^ punctuation.definition.keyword.css */\n/*   ^^^^^ keyword.control.at-rule.media.css */\n/*         ^ punctuation.definition.group.begin.css */\n/*          ^^^^^^^^^ support.type.property-name.media.css */\n/*                     ^^^^^ constant.numeric.integer.decimal.css */\n/*                          ^ punctuation.definition.group.end.css */\n/*                            ^^^ keyword.operator.logic */\n/*                                ^ punctuation.definition.group.begin.css */\n/*                                 ^^^^^^^^^ support.type.property-name.media.css */\n/*                                            ^^^^^^ constant.numeric.integer.decimal.css */\n/*                                                  ^ punctuation.definition.group.end.css */\n\n   @media only screen and (-webkit-min-device-pixel-ratio: /* comment */ 1.3),\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css */\n/*  ^ punctuation.definition.keyword.css */\n/*   ^^^^^ keyword.control.at-rule.media.css */\n/*         ^^^^ keyword.operator.logic.media.css */\n/*              ^^^^^^ support.constant.media.css */\n/*                     ^^^ keyword.operator.logic.media.css */\n/*                         ^ punctuation.definition.group.begin.css */\n/*                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.media.css */\n/*                                                        ^ punctuation.separator.key-value.css */\n/*                                                          ^^^^^^^^^^^^^ comment.block.css */\n/*                                                                        ^^^ constant.numeric.float.decimal.css */\n/*                                                                           ^ punctuation.definition.group.end.css */\n/*                                                                            ^ punctuation.definition.arbitrary-repetition */\n    only screen and (-o-min-device-pixel-ratio: 13/10),\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css */\n/*  ^^^^ keyword.operator.logic.media.css */\n/*       ^^^^^^ support.constant.media.css */\n/*              ^^^ keyword.operator.logic.media.css */\n/*                  ^ punctuation.definition.group.begin.css */\n/*                   ^^^^^^^^^^^^^^^^^^^^^^^^^ support.type.property-name.media.css */\n/*                                            ^ punctuation.separator.key-value.css */\n/*                                              ^^ constant.numeric.integer.decimal.css */\n/*                                                ^ keyword.operator */\n/*                                                 ^^ constant.numeric.integer.decimal.css */\n/*                                                   ^ punctuation.definition.group.end.css */\n/*                                                    ^ punctuation.definition.arbitrary-repetition */\n    only screen and (min-resolution: 120dpi)\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.media.css */\n/*  ^^^^ keyword.operator.logic.media.css */\n/*       ^^^^^^ support.constant.media.css */\n/*              ^^^ keyword.operator.logic.media.css */\n/*                  ^ punctuation.definition.group.begin.css */\n/*                   ^^^^^^^^^^^^^^ support.type.property-name.media.css */\n/*                                 ^ punctuation.separator.key-value.css */\n/*                                   ^^^^^^ constant.numeric.integer.decimal.css */\n/*                                         ^ punctuation.definition.group.end.css */\n{}\n\n    @custom-media --a-b (width: 1px);\n//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.custom-media.css\n//  ^                          punctuation.definition.keyword.css\n//   ^^^^^^^^^^^^              keyword.control.at-rule.custom-media.css\n//                       ^^^^^ support.type.property-name.media.css\n\n    @keyframes beat, bounce {}\n//  ^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.keyframe.css\n//  ^                       punctuation.definition.keyword.css\n//   ^^^^^^^^^              keyword.control.at-rule.keyframe.css\n//             ^^^^         entity.other.animation-name.css\n//                 ^        punctuation.definition.arbitrary-repetition.css\n//                   ^^^^^^ entity.other.animation-name.css\n\n@keyframes test-keyframes-keywords {\n    from, to {}\n/*  ^^^^ keyword.keyframe-selector.css */\n/*      ^ punctuation.separator.sequence.css */\n/*        ^^ keyword.keyframe-selector.css */\n\n    0%, 100% {}\n/*  ^^ constant.numeric.integer.decimal.css */\n/*   ^ keyword.other.unit.css */\n/*    ^ punctuation.separator.sequence.css */\n/*      ^^^^ constant.numeric.integer.decimal.css */\n/*         ^ keyword.other.unit.css */\n\n    .99%, 100.99% {}\n/*  ^^^^ constant.numeric.float.decimal.css */\n/*  ^ punctuation.separator.decimal.css */\n/*     ^ keyword.other.unit.css */\n/*      ^ punctuation.separator.sequence.css */\n/*        ^^^^^^^ constant.numeric.float.decimal.css */\n/*           ^ punctuation.separator.decimal.css */\n/*              ^ keyword.other.unit.css */\n\n    0%, to {}\n/*  ^^ constant.numeric.integer.decimal.css */\n/*   ^ keyword.other.unit.css */\n/*    ^ punctuation.separator.sequence.css */\n/*      ^^ keyword.keyframe-selector.css */\n}\n\n    @document url(http://) { }\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.document.css */\n/*  ^ punctuation.definition.keyword.css */\n/*  ^^^^^^^^^ keyword.control.at-rule.document.css */\n/*                         ^^^ meta.block.css */\n/*                         ^ punctuation.definition.block.begin.css */\n/*                           ^ punctuation.definition.block.end.css */\n\n@document url(http://www),\n/*        ^^^ support.function.url.css */\n/*            ^^^^^^^^^^ string.unquoted.css */\n/*                       ^ punctuation.separator.sequence.css */\n          url-prefix(\"http://www\"),\n/*        ^^^^^^^^^^ support.function.url-prefix.css */\n/*                   ^^^^^^^^^^^^ string.quoted.double.css */\n          domain(mozilla.org),\n/*        ^^^^^^ support.function.domain.css */\n/*               ^^^^^^^^^^^ string.unquoted.css */\n          regexp(\"https:.*\")\n/*        ^^^^^^ support.function.regexp.css */\n/*               ^^^^^^^^^^ string.quoted.double.css */\n{\n    .class {\n/*  ^^^^^^ meta.at-rule.document.css entity.other.attribute-name.class.css */\n        display: none;\n/*      ^^^^^^^ meta.at-rule.document.css meta.property-name.css */\n    }\n}\n\n    @font-face {\n//  ^^^^^^^^^^^ meta.at-rule.css\n//  ^          punctuation.definition.keyword.css\n//   ^^^^^^^^^ keyword.control.at-rule.css\n\n    src: local(Font);\n        /* */\n//      ^^^^^ comment.block.css\n}\n\n    @font-face\n//  ^^^^^^^^^^^ meta.at-rule.css\n//  ^          punctuation.definition.keyword.css\n//   ^^^^^^^^^ keyword.control.at-rule.css\n{\n    font-family: monospace,\n//  ^^^^^^^^^^^ support.type.property-name.css\n//               ^^^^^^^^^ support.constant.font-name.css\n        /* */\n//      ^^^^^ comment.block.css\n}\n\n    @supports not ( and ( top: 2px ) ) { }\n/*  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.at-rule.supports.css */\n/*  ^ punctuation.definition.keyword.css */\n/*   ^^^^^^^^ keyword.control.at-rule.supports.css */\n/*            ^^^ keyword.operator.logic.css */\n/*                ^ meta.group.css punctuation.definition.group.begin.css */\n/*                  ^^^ keyword.operator.logic.css */\n/*                      ^ meta.group.css punctuation.definition.group.begin.css */\n/*                        ^^^ support.type.property-name.css */\n/*                           ^ punctuation.separator.key-value.css */\n/*                              ^^ constant.numeric.integer.decimal.css keyword.other.unit.css */\n/*                                 ^ meta.group.css punctuation.definition.group.end.css */\n/*                                   ^ meta.group.css punctuation.definition.group.end.css */\n/*                                     ^^^ meta.block.css */\n/*                                     ^ punctuation.definition.block.begin.css */\n/*                                       ^ punctuation.definition.block.end.css */\n\n@supports (--foo: green) {\n/*         ^^^^^ support.type.custom-property.css */\n    .class {\n/*  ^^^^^^ meta.at-rule.supports.css entity.other.attribute-name.class.css */\n        display: none;\n/*      ^^^^^^^ meta.at-rule.supports.css meta.property-name.css */\n    }\n}\n\n    @counter-style {}\n//  ^          punctuation.definition.keyword.css\n//  ^^^^^^^^^^^^^^ keyword.control.at-rule.counter-style.css\n\n@counter-style none {}\n//             ^^^^ invalid.illegal.counter-style-name.css\n\n@counter-style decimal {}\n//             ^^^^^^^ invalid.illegal.counter-style-name.css\n\n    @counter-style name {\n//  ^          punctuation.definition.keyword.css\n//  ^^^^^^^^^^^^^^ keyword.control.at-rule.counter-style.css\n//                 ^^^^ entity.other.counter-style-name.css\n    symbols: \"‣\";\n//  ^^^^^^^ support.type.property-name.css\n    suffix: \" \";\n//  ^^^^^^ support.type.property-name.css\n//          ^^^ string.quoted.double.css\n}\n\n    @counter-style blacknwhite\n//  ^^^^^^^^^^^^^^ meta.at-rule.counter-style.css keyword.control.at-rule.counter-style.css\n//                 ^^^^^^^^^^^ entity.other.counter-style-name.css\n{\n  system: cyclic;\n  negative: \"(\" \")\";\n  prefix: \"/\";\n  symbols: ◆ ◇;\n  suffix: \"/ \";\n  range: 2 4;\n  speak-as: \"bullets\";\n//^^^^^^^^ support.type.property-name.css\n}\n\n.test-var { --test-var: arial; }\n//          ^^^^^^^^^^ support.type.custom-property.css\n//          ^^         punctuation.definition.custom-property\n//            ^^^^^^^^ support.type.custom-property.name.css\n\n.test-types {\n    top: 20;\n/*       ^^ constant.numeric.integer.decimal.css */\n    top: +.95e-20;\n/*       ^^^^^^^^ constant.numeric.float.decimal.css */\n/*        ^ punctuation.separator.decimal.css */\n   top: +1e1e1 .1e1e1;\n/*       ^^^^ constant.numeric.float.decimal.css */\n/*           ^ - constant.numeric */\n/*              ^^^^ constant.numeric.float.decimal.css */\n/*                  ^ - constant.numeric */\n    top: -1.5e+93%;\n/*       ^^^^^^^^^ constant.numeric.float.decimal.css */\n/*         ^ punctuation.separator.decimal.css */\n}\n\n.test-units {\n    top: 1px;\n/*       ^^^ constant.numeric.integer.decimal.css */\n/*        ^^ keyword.other.unit.css */\n    top: 1.1em;\n/*       ^^^^^ constant.numeric.float.decimal.css */\n/*        ^ punctuation.separator.decimal.css */\n/*          ^^ keyword.other.unit.css */\n    top: -100%;\n/*       ^^^^^ constant.numeric.integer.decimal.css */\n/*           ^ keyword.other.unit.css */\n    top: 1.1.1deg;\n/*       ^^^^^^^^ constant.numeric.float.decimal.css */\n/*        ^ punctuation.separator.decimal.css */\n/*          ^ punctuation.separator.decimal.css */\n/*            ^^^ keyword.other.unit.css */\n}\n\n.test-properties {\n    -webkit-transform: none;\n//  ^^^^^^^^^^^^^^^^^ meta.property-name.css\n//  ^^^^^^^^ support.type.vendor-prefix.css\n//          ^^^^^^^^^ support.type.property-name.css\n//                     ^^^^ meta.property-value.css support.constant.property-value.css\n}\n\n.test-operators {\n    top: calc(1px + 1px);\n    /*            ^ keyword.operator.css */\n    top: calc(1px - 1px);\n    /*            ^ keyword.operator.css */\n    top: calc(1px / 1px);\n    /*            ^ keyword.operator.css */\n    top: calc(1px * 1px);\n    /*            ^ keyword.operator.css */\n\n    top: calc(1px+1px);\n    /*           ^ -keyword.operator.css */\n    top: calc(1px-1px);\n    /*           ^ -keyword.operator.css */\n    top: calc(1px/1px);\n    /*           ^ keyword.operator.css */\n    top: calc(1px*1px);\n    /*           ^ keyword.operator.css */\n}\n\n.test-important {\n    top: 1px !important;\n//           ^^^^^^^^^^ keyword.other.important.css\n    top: 1px!important;\n//          ^^^^^^^^^^ keyword.other.important.css\n}\n\n// Test Functional Pseudo Class Meta Scopes\n.test:nth-child(even) {}\n//   ^^^^^^^^^^^^^^^^ meta.function-call.css\n//             ^^^^^^ meta.group.css\n//             ^      punctuation.definition.group.begin.css\n//                  ^ punctuation.definition.group.end.css\n\n.test-pseudo-classes:nth-child(2):hover {}\n//                   ^^^^^^^^^          entity.other.pseudo-class.css\n//                             ^        constant.numeric.css\n//                               ^      punctuation.definition.entity.css\n//                                ^^^^^ entity.other.pseudo-class.css\n\n.test-pseudo-class-numerics:nth-last-of-type(-n+3) {}\n/*                         ^^^^^^^^^^^^^^^^^ entity.other.pseudo-class.css */\n/*                                           ^^^^ constant.numeric.integer.decimal.css */\n\n.test-pseudo-class-keywords:nth-of-type(odd) {}\n/*                         ^^^^^^^^^^^^ entity.other.pseudo-class.css */\n/*                                      ^^^ keyword.other.pseudo-class.css */\n\n.test-pseudo-class-strings:dir(ltr) {}\n/*                        ^^^^ entity.other.pseudo-class.css */\n/*                             ^^^ string.unquoted.css */\n\n.test-pseudo-class-tag:not(*) {}\n/*                    ^^^^ entity.other.pseudo-class.css */\n/*                         ^ entity.name.tag.wildcard.css */\n\n.test-pseudo-elements::before {}\n/*                   ^^ punctuation.definition.entity.css */\n/*                   ^^^^^^^^ entity.other.pseudo-element.css */\n\n.test-pseudo-elements:after {}\n/*                   ^ punctuation.definition.entity.css */\n/*                   ^^^^^^ entity.other.pseudo-element.css */\n\n.test-pseudo-elements::-webkit-slider-runnable-track\n/*                   ^^ punctuation.definition.entity.css */\n/*                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ entity.other.pseudo-element.css */\n\n\n.test-unicode { top: \"\\2764 \\273e\"; }\n//                    ^^^^^       constant.character.escape.css\n//                          ^^^^^ constant.character.escape.css\n\n.test-unicode-range {\n    unicode-range: U+0025-00FF, U+4??;\n//                 ^^^^^^^^^^^        support.unicode-range.css\n//                 ^^                 support.constant.unicode-range.prefix.css\n//                   ^^^^^^^^^        constant.codepoint-range.css\n//                       ^            punctuation.section.range.css\n//                              ^^^^^ support.unicode-range.css\n//                              ^^    support.constant.unicode-range.prefix.css\n//                                ^^^ constant.codepoint-range.css\n}\n\n.test-escape-character { top: \"\\nstring\\n\"; }\n//                             ^^         constant.character.escape.css\n//                                     ^^ constant.character.escape.css\n\n.test-attribute-selectors[disabled][type=button] {}\n//                       ^^^^^^^^^^ meta.attribute-selector.css\n//                       ^ punctuation.definition.entity.css\n//                        ^^^^^^^^ entity.other.attribute-name.css\n//                                ^ punctuation.definition.entity.css\n//                                  ^^^^ entity.other.attribute-name.css\n//                                       ^^^^^^ string.unquoted.css\n\n.test-attribute-selectors-namespaces[n|a=\"\"][*|a=\"\"][|att] {}\n//                                   ^ entity.other.namespace-prefix.css\n//                                    ^ punctuation.separator.namespace.css\n//                                           ^ entity.name.namespace.wildcard.css\n//                                            ^ punctuation.separator.namespace.css\n//                                                   ^ punctuation.separator.namespace.css\n\n.test-attribute-selectors-operators[a=\"\"][a~=\"\"][a|=\"\"][a^=\"\"][a$=\"\"][a*=\"\"] {}\n//                                   ^ keyword.operator.attribute-selector.css\n//                                         ^^ keyword.operator.attribute-selector.css\n//                                                ^^ keyword.operator.attribute-selector.css\n//                                                       ^^ keyword.operator.attribute-selector.css\n//                                                              ^^ keyword.operator.attribute-selector.css\n//                                                                     ^^ keyword.operator.attribute-selector.css\n\n.test-attribute-selectors-whitespace[a = \"\"] {}\n//                                   ^   entity.other.attribute-name.css\n//                                     ^ keyword.operator.attribute-selector.css\n\n.test-attribute-selectors-flags[a=\"\" i] {}\n//                                   ^ keyword.other.css\n\n   *.test-universal-selector {}\n// ^ entity.name.tag.wildcard.css\n\n.test-combinators >>> a >> a > a + b ~ a {}\n//                ^^^                  punctuation.separator.combinator.css\n//                      ^^             punctuation.separator.combinator.css\n//                           ^         punctuation.separator.combinator.css\n//                               ^     punctuation.separator.combinator.css\n//                                   ^ punctuation.separator.combinator.css\n\n.test-generic-font-families {\n    font: serif;\n//        ^^^^^      support.constant.font-name.css\n    font: sans-serif;\n//        ^^^^^^^^^^ support.constant.font-name.css\n    font: cursive;\n//        ^^^^^^^    support.constant.font-name.css\n    font: fantasy;\n//        ^^^^^^^    support.constant.font-name.css\n    font: monospace;\n//        ^^^^^^^^^  support.constant.font-name.css\n}\n\n.test-unquoted-font-name {\n    font: m700, aria;\n//        ^^^^ string.unquoted\n//            ^ punctuation.separator\n//            ^^ - string\n//              ^^^^ string.unquoted\n    font: inherit;\n//        ^ - string\n    font: initial;\n//        ^ - string\n    font: unset;\n//        ^ - string\n    font: italic;\n//        ^ - string\n    font: small-caps;\n//        ^ - string\n    font: 2em m700, sans-serif;\n//        ^ - string\n//            ^^^^ string.unquoted\n//                ^ punctuation.separator\n//                  ^ - string\n    font-weight: bold;\n//  ^^^^^^^^^^^ meta.property-name support.type.property-name\n}\n\n.test-color-values {\n    color: aqua;\n//         ^^^^ support.constant.color.w3c-standard-color-name.css\n\n    color: aliceblue;\n//         ^^^^^^^^^ support.constant.color.w3c-extended-color-keywords.css\n\n    color: currentColor;\n//         ^^^^^^^^^^^^ support.constant.color.w3c-special-color-keyword.css\n\n    color: transparent;\n//         ^^^^^^^^^^^ support.constant.color.w3c-special-color-keyword.css\n\n    color: #b4da55;\n//         ^ punctuation.definition.constant.css\n//         ^^^^^^^ constant.other.color.rgb-value.css\n\n    color: #137;\n//         ^^^^ constant.other.color.rgb-value.css\n\n    color: #0f0a;\n//         ^^^^^ constant.other.color.rgba-value.css\n\n    color: #a1b2c3d4;\n//         ^^^^^^^^^ constant.other.color.rgba-value.css\n\n    color: #E5F6A7B8;\n//         ^ punctuation.definition.constant.css\n//         ^^^^^^^^^ constant.other.color.rgba-value.css\n}\n\n.test-function-meta {\n    top: filter(param1, 20px);\n//       ^^^^^^^^^^^^^^^^^^^^ meta.function-call.css\n//             ^^^^^^^^^^^^^^ meta.group.css\n}\n\n.test-color-functions {\n    top: rgb(1, 4.5%);\n/*       ^^^ support.function.color.css */\n/*           ^ constant.numeric.integer.decimal.css */\n/*            ^ punctuation.separator.sequence.css */\n/*              ^^^^ constant.numeric.float.decimal.css */\n\n    top: rgba();\n/*       ^^^^ support.function.color.css */\n\n    top: hsl(1deg, 4.5%);\n/*       ^^^ support.function.color.css */\n/*           ^^^^ constant.numeric.integer.decimal.css */\n/*               ^ punctuation.separator.sequence.css */\n/*                 ^^^^ constant.numeric.float.decimal.css */\n\n    top: hsla();\n/*       ^^^^ support.function.color.css */\n\n    top: hwb();\n/*       ^^^ support.function.color.css */\n\n\n    top: gray(1, 4.5%);\n/*       ^^^^ support.function.color.css */\n/*            ^ constant.numeric.integer.decimal.css */\n/*             ^ punctuation.separator.sequence.css */\n/*               ^^^^ constant.numeric.float.decimal.css */\n\n    top: device-cmyk(0.5, 1%, red());\n/*       ^^^^^^^^^^^ support.function.color.css */\n/*                   ^^^ constant.numeric.float.decimal.css */\n/*                      ^ punctuation.separator.sequence.css */\n/*                        ^^ constant.numeric.integer.decimal.css */\n/*                            ^^^ support.function.color.css */\n\n    top: color(w() s());\n/*       ^^^^^ support.function.color.css */\n/*             ^ support.function.color.css */\n/*                 ^ support.function.color.css */\n\n    top: alpha(- 1.5%);\n/*       ^^^^^ support.function.color.css */\n/*             ^ keyword.operator.css */\n/*               ^^^^ constant.numeric.float.decimal.css */\n\n    top: h(+ 1.5deg);\n/*       ^ support.function.color.css */\n/*         ^ keyword.operator.css */\n/*           ^^^^^^ constant.numeric.float.decimal.css */\n\n    top: w(* 1.5%);\n/*       ^ support.function.color.css */\n/*         ^ keyword.operator.css */\n/*           ^^^^ constant.numeric.float.decimal.css */\n\n    top: shade(1.5%);\n/*       ^^^^^ support.function.color.css */\n/*             ^^^^ constant.numeric.float.decimal.css */\n\n    top: blenda(red 50% hsl);\n/*       ^^^^^^ support.function.color.css */\n/*              ^^^ support.constant.color.w3c-standard-color-name.css */\n/*                  ^^^ constant.numeric.integer.decimal.css */\n/*                      ^^^ keyword.other.color-space.css */\n\n    background-color: color(var(--background) blend(var(--foreground) 80%));\n/*  ^^^^^^^^^^^^^^^^ support.type.property-name.css */\n/*                  ^ punctuation.separator.key-value.css */\n/*                    ^^^^^ support.function.color.css */\n/*                         ^ punctuation.definition.group.begin.css */\n/*                          ^^^ support.function.var.css */\n/*                             ^ punctuation.definition.group.begin.css */\n/*                              ^^^^^^^^^^^^ support.type.custom-property */\n/*                                          ^ punctuation.definition.group.end.css */\n/*                                            ^^^^^ support.function.color.css */\n/*                                                 ^ punctuation.definition.group.begin.css */\n/*                                                  ^^^ support.function.var.css */\n/*                                                     ^ punctuation.definition.group.begin.css */\n/*                                                      ^^^^^^^^^^^^ support.type.custom-property.css */\n/*                                                                  ^ punctuation.definition.group.end.css */\n/*                                                                    ^^^ constant.numeric.integer.decimal.css */\n/*                                                                       ^^ punctuation.definition.group.end.css */\n/*                                                                         ^ punctuation.terminator.rule.css */\n}\n\n.test-transform-functions {\n    top: rotate(0);\n/*       ^^^^^^ support.function.transform.css */\n/*              ^ constant.numeric.integer.decimal.css */\n\n    top: rotate(1)\n/*       ^^^^^^ support.function.transform.css */\n/*              ^ - constant.numeric.integer.decimal.css */\n\n    top: rotate3d(-1, 2deg);\n/*       ^^^^^^^^ support.function.transform.css */\n/*                ^^ constant.numeric.integer.decimal.css */\n/*                    ^^^^ constant.numeric.integer.decimal.css */\n\n    top: matrix3d(1, 0);\n/*       ^^^^^^^^ support.function.transform.css */\n/*                ^ constant.numeric.integer.decimal.css */\n/*                 ^ punctuation.separator.sequence.css */\n/*                   ^ constant.numeric.integer.decimal.css */\n\n    top: translate3d(1, 2px, 3%);\n/*       ^^^^^^^^^^^ support.function.transform.css */\n/*                   ^ constant.numeric.integer.decimal.css */\n/*                    ^ punctuation.separator.sequence.css */\n/*                      ^^^ constant.numeric.integer.decimal.css */\n/*                           ^^ constant.numeric.integer.decimal.css */\n\n    top: translateY(2px);\n/*       ^^^^^^^^^^ support.function.transform.css */\n/*                  ^^^ constant.numeric.integer.decimal.css */\n\n    top: translateX(1%);\n/*       ^^^^^^^^^^ support.function.transform */\n/*                  ^^ constant.numeric.integer.decimal.css */\n\n    top: translateZ(0);\n/*       ^^^^^^^^^^ support.function.transform */\n/*                  ^ constant.numeric.integer.decimal.css */\n\n    top: skewY(1deg);\n/*       ^^^^^ support.function.transform.css */\n/*             ^^^^ constant.numeric.integer.decimal.css */\n\n    top: skew(1deg, 2turn);\n/*       ^^^^ support.function.transform.css */\n/*            ^^^^ constant.numeric.integer.decimal.css */\n/*                ^ punctuation.separator.sequence.css */\n/*                  ^^^^^ constant.numeric.integer.decimal.css */\n\n    top: perspective(17px);\n/*       ^^^^^^^^^^^ support.function.transform.css */\n/*                   ^^^^ constant.numeric.integer.decimal.css */\n\n    top: scaleY(2);\n/*       ^^^^^^ support.function.transform.css */\n/*              ^ constant.numeric.integer.decimal.css */\n\n    top: skewY(1rad) rotate(1turn);\n/*                   ^^^^^^ support.function.transform.css */\n/*                          ^^^^^ constant.numeric.integer.decimal.css */\n\n    transform: translate(var(--center), 0) scale(var(--ripple-scale), 1);\n/*             ^^^^^^^^^ support.function.transform */\n/*                       ^^^ support.function.var */\n/*                           ^^^^^^^^ support.type.custom-property */\n/*                                      ^ constant.numeric */\n/*                                               ^^^ support.function.var */\n}\n\n.test-timing-functions {\n    top: cubic-bezier(0.42, 0, 0.58, 1);\n/*       ^^^^^^^^^^^^ support.function.timing.css */\n/*                    ^^^^ constant.numeric.float.decimal.css */\n\n    top: steps(020, start);\n/*       ^^^^^ support.function.timing.css */\n/*             ^^^ constant.numeric.integer.decimal.css */\n/*                  ^^^^^ support.keyword.timing-direction.css */\n\n    top: steps(1, end);\n/*                ^^^ support.keyword.timing-direction.css */\n\n    top: steps(1, middle);\n/*                ^^^^^^ support.keyword.timing-direction.css */\n}\n\n.test-shape-functions {\n    top: circle(at top 5.5e20em);\n/*       ^^^^^^ support.function.shape.css */\n/*              ^^ keyword.other.css */\n/*                 ^^^ support.constant.property-value.css */\n/*                     ^^^^^^^^ constant.numeric.float.decimal.css */\n\n    top: ellipse(at 0%);\n/*       ^^^^^^^ support.function.shape.css */\n/*               ^^ keyword.other.css */\n/*                  ^^ constant.numeric.integer.decimal.css */\n\n    top: ellipse(closest-side);\n/*               ^^^^^^^^^^^^ support.constant.property-value.css */\n\n    top: inset(1.1px round 50%);\n/*       ^^^^^ support.function.shape.css */\n/*             ^^^^^ constant.numeric.float.decimal.css */\n/*                   ^^^^^ keyword.other.css */\n\n    top: rect(auto);\n/*       ^^^^ support.function.shape.css */\n/*            ^^^^ support.constant.property-value.css */\n\n    top: rect(1px);\n/*            ^^^ constant.numeric.integer.decimal.css */\n}\n\n.test-calc-function {\n    top: calc(1.1px + 2rad);\n/*       ^^^^ support.function.calc.css */\n/*            ^^^^^ constant.numeric.float.decimal.css */\n/*                    ^^^^ constant.numeric.integer.decimal.css */\n\n    top: calc(attr(start, 1) - 1);\n    /*        ^^^^ support.function.attr.css */\n\n    top: calc(calc() * calc());\n/*       ^^^^ support.function.calc.css */\n/*            ^^^^ support.function.calc.css */\n/*                   ^ keyword.operator.css */\n/*                     ^^^^ support.function.calc.css */\n    top: calc(100% - (1 * 10px) / 1 - (1 * 10px) / 1 - (1 * 10px) / 1);\n/*       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.function-call.css */\n/*       ^^^^ support.function.calc.css */\n/*           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.group.css */\n/*           ^ punctuation.definition.group.begin.css */\n/*            ^^^ constant.numeric.integer.decimal.css */\n/*                 ^ keyword.operator.css */\n/*                   ^ punctuation.definition.group.begin.css */\n/*                   ^^^^^^^^^^ meta.group.css meta.group.css */\n/*                            ^ punctuation.definition.group.end.css */\n/*                              ^ keyword.operator.css */\n/*                                    ^ punctuation.definition.group.begin.css */\n/*                                         ^^ constant.numeric.integer.decimal.css */\n/*                                           ^^ keyword.other.unit.css */\n/*                                             ^ punctuation.definition.group.end.css */\n/*                                               ^ keyword.operator.css */\n/*                                                   ^ keyword.operator.css */\n/*                                                     ^ punctuation.definition.group.begin.css */\n/*                                                      ^ constant.numeric.integer.decimal.css */\n/*                                                        ^ keyword.operator.css */\n/*                                                          ^^ constant.numeric.integer.decimal.css */\n/*                                                              ^ punctuation.definition.group.end.css */\n/*                                                                ^ keyword.operator.css */\n/*                                                                  ^ constant.numeric.integer.decimal.css */\n/*                                                                   ^ punctuation.definition.group.end.css */\n/*                                                                    ^ punctuation.terminator.rule.css - meta.group */\n}\n\n.test-toggle-function {\n    top: toggle(5px red preserve-3d);\n/*       ^^^^^^ support.function.toggle.css */\n/*              ^^^ constant.numeric.integer.decimal.css */\n/*                  ^^^ support.constant.color.w3c-standard-color-name.css */\n/*                      ^^^^^^^^^^^ support.constant.property-value.css */\n}\n\n.test-attr-function {\n    top: attr(*|c);\n/*       ^^^^ support.function.attr.css */\n/*            ^ entity.name.namespace.wildcard.css */\n/*             ^ punctuation.separator.namespace.css */\n/*              ^ entity.other.attribute-name.css */\n\n    top: attr(n|size);\n/*            ^ entity.other.namespace-prefix.css */\n/*              ^^^^ entity.other.attribute-name.css */\n\n    top: attr(size px, auto);\n/*            ^^^^ entity.other.attribute-name.css */\n/*                 ^^ keyword.other.unit.css */\n/*                   ^ punctuation.separator.sequence.css */\n/*                     ^^^^ support.constant.property-value.css */\n\n    top: attr(preserve-3d);\n/*            ^^^^^^^^^^^ entity.other.attribute-name.css */\n}\n\n.test-url-function {\n    top: url(\"a\");\n/*       ^^^ support.function.url.css */\n/*           ^^^ string.quoted.double.css */\n\n    top: url(a);\n/*           ^ string.unquoted.css */\n}\n\n.test-image-functions {\n    top: image(\"a\");\n/*       ^^^^^ support.function.image.css */\n/*             ^^^ string.quoted.double.css */\n\n    top: image(a);\n/*             ^ string.unquoted.css */\n\n    top: image(\"a\", rgb(0, 0, 0));\n/*                ^ punctuation.separator.sequence.css */\n/*                      ^ constant.numeric.integer.decimal.css */\n\n    top: image-set(\"a\" 1x, a 4dpi);\n/*                 ^^^ string.quoted.double.css */\n/*                     ^^ constant.numeric.integer.decimal.css */\n/*                      ^ keyword.other.unit.css */\n/*                       ^ punctuation.separator.sequence.css */\n/*                         ^ string.unquoted.css */\n/*                           ^^^^ constant.numeric.integer.decimal.css */\n\n    top: cross-fade(50% \"a\", b);\n/*       ^^^^^^^^^^ support.function.image.css */\n/*                  ^^^ constant.numeric.integer.decimal.css */\n/*                      ^^^ string.quoted.double.css */\n/*                         ^ punctuation.separator.sequence.css */\n/*                           ^ string.unquoted.css */\n}\n\n.test-gradient-functions {\n    top: linear-gradient();\n/*       ^^^^^^^^^^^^^^^ support.function.gradient.css */\n\n    top: linear-gradient(45deg, white);\n/*                       ^^^^^ constant.numeric.integer.decimal.css */\n/*                            ^ punctuation.separator.sequence.css */\n/*                              ^^^^^ support.constant.color.w3c-standard-color-name.css */\n\n    top: linear-gradient(to top left);\n/*                       ^^ keyword.other.css */\n/*                          ^^^ support.constant.property-value.css */\n/*                              ^^^^ support.constant.property-value.css */\n\n    top: linear-gradient(0%, 100%);\n/*                       ^^ constant.numeric.integer.decimal.css */\n/*                           ^^^^ constant.numeric.integer.decimal.css */\n\n    top: repeating-linear-gradient();\n/*       ^^^^^^^^^^^^^^^^^^^^^^^^^ support.function.gradient.css */\n\n    top: radial-gradient();\n/*       ^^^^^^^^^^^^^^^ support.function.gradient.css */\n\n    top: radial-gradient(circle at top left);\n/*                       ^^^^^^ keyword.other.css */\n/*                              ^^ keyword.other.css */\n/*                                 ^^^ support.constant.property-value.css */\n/*                                     ^^^^ support.constant.property-value.css */\n\n    top: radial-gradient(red, blue);\n/*                       ^^^ support.constant.color.w3c-standard-color-name.css */\n/*                          ^ punctuation.separator.sequence.css */\n\n    top: repeating-radial-gradient();\n/*       ^^^^^^^^^^^^^^^^^^^^^^^^^ support.function.gradient.css */\n}\n\n.test-counter-functions {\n    top: counter(name, decimal-leading-zero);\n/*       ^^^^^^^ support.function.counter.css */\n/*               ^^^^ entity.other.counter-name.css string.unquoted.css */\n/*                   ^ punctuation.separator.sequence.css */\n/*                     ^^^^^^^^^^^^^^^^^^^^ support.constant.property-value.counter-style.css */\n\n    top: counters(name, \"str\", none);\n/*       ^^^^^^^^ support.function.counter.css */\n/*                ^^^^ entity.other.counter-name.css string.unquoted.css */\n/*                    ^ punctuation.separator.sequence.css */\n/*                      ^^^^^ string.quoted.double.css */\n/*                           ^ punctuation.separator.sequence.css */\n/*                             ^^^^ support.constant.property-value.counter-style.css */\n\n    top: symbols(fixed \"\\2020\" url());\n/*       ^^^^^^^ support.function.counter.css */\n/*               ^^^^^ support.constant.symbol-type.css */\n/*                     ^^^^^^^ string.quoted.double.css */\n/*                             ^^^ support.function.url.css */\n}\n\n.test-grid-functions {\n    grid: repeat(20) / auto-flow 1fr;\n/*        ^^^^^^ support.function.grid.css */\n/*               ^^ constant.numeric.integer.decimal.css */\n/*                     ^^^^^^^^^ support.constant.property-value.css */\n\n    top: repeat(auto-fit, 2fr minmax(auto) 5%);\n/*              ^^^^^^^^ support.keyword.repetitions.css */\n/*                      ^ punctuation.separator.sequence.css */\n/*                        ^^^ constant.numeric.integer.decimal.css */\n/*                            ^^^^^^ support.function.grid.css */\n/*                                   ^^^^ support.constant.property-value.css */\n/*                                         ^^ constant.numeric.integer.decimal.css */\n\n    top: minmax(min-content, 1fr, 10%);\n/*       ^^^^^^ support.function.grid.css */\n/*              ^^^^^^^^^^^ support.constant.property-value.css */\n/*                         ^ punctuation.separator.sequence.css */\n/*                           ^^^ constant.numeric.integer.decimal.css */\n/*                                ^^^ constant.numeric.integer.decimal.css */\n    grid-template: repeat(2, var(--size)) / repeat(2, 50%);\n/*                           ^^^ support.function.var.css */\n/*                               ^^^^^^ support.type.custom-property.css */\n/*                                     ^^ punctuation.definition.group.end.css */\n/*                                          ^^^^^^ support.function.grid.css */\n    grid-template-columns:\n      [a-line-name] auto\n/*    ^ punctuation.section.begin.css */\n/*     ^^^^^^^^^^^ string.unquoted.line-name.css */\n/*                ^ punctuation.section.end.css */\n      [b]     minmax(min-content, 1fr)\n      [b c d] repeat(2, [e] 40px)\n/*    ^ punctuation.section.begin.css */\n/*     ^ string.unquoted.line-name.css */\n/*      ^ - string.unquoted.line-name.css */\n/*       ^ string.unquoted.line-name.css */\n/*          ^ punctuation.section.end.css */\n/*                      ^ punctuation.section.begin.css */\n/*                       ^ string.unquoted.line-name.css */\n/*                        ^ punctuation.section.end.css */\n              repeat(5, auto);\n}\n\n.test-filter-functions {\n    top: filter(url(), blur());\n/*       ^^^^^^ support.function.filter.css */\n/*              ^^^ support.function.url.css */\n/*                     ^^^^ support.function.filter.css */\n\n    top: blur(1px);\n/*       ^^^^ support.function.filter.css */\n\n    top: sepia(1% 1);\n/*       ^^^^^ support.function.filter.css */\n/*             ^^ constant.numeric.integer.decimal.css */\n/*                ^ constant.numeric.integer.decimal.css */\n\n    top: drop-shadow(1px rgb());\n/*       ^^^^^^^^^^^ support.function.filter.css */\n/*                   ^^^ constant.numeric.integer.decimal.css */\n/*                       ^^^ support.function.color.css */\n\n    top: hue-rotate(1turn);\n/*       ^^^^^^^^^^ support.function.filter.css */\n/*                  ^^^^^ constant.numeric.integer.decimal.css */\n}\n\n\n// Test Font Functions: format() & local()\n@font-face {\n  src: format(\"embedded-opentype\");\n//     ^^^^^^                     support.function.font-face.css\n//            ^^^^^^^^^^^^^^^^^^^ string.quoted.double.css\n\n  src: local(Gentium-Bold);\n//     ^^^^^              support.function.font-face.css\n//           ^^^^^^^^^^^^ string.unquoted.css\n\n   src: local('Gentium-Bold');\n/*     ^^^^^              support.function.font-face.css          */\n/*           ^^^^^^^^^^^^^^ string.quoted.single.css              */\n/*           ^ punctuation.definition.string.begin.css            */\n/*                        ^ punctuation.definition.string.end.css */\n\n   src: local(\"Gentium-Bold\");\n/*     ^^^^^              support.function.font-face.css          */\n/*           ^^^^^^^^^^^^^^ string.quoted.double.css              */\n/*           ^ punctuation.definition.string.begin.css            */\n/*                        ^ punctuation.definition.string.end.css */\n}\n\n@font-face {\n    font-family: m700, aria;\n//               ^^^^ string.unquoted.css\n//                     ^^^^ string.unquoted.css\n}\n\n.test-var-function {\n    top: var(--name);\n//       ^^^         support.function.var.css\n//           ^^      punctuation.definition.custom-property.css\n//             ^^^^  support.type.custom-property.name.css\n}\n\n.test-custom-tags > div > span + cust·m-tÀg > div-cøstom-tag ~ form-Çust😀m-tag.classname:last-child:hover {}\n//                ^ -entity.name.tag.custom.css\n//                  ^^^ entity.name.tag.css\n//                        ^^^^ entity.name.tag.css\n//                             ^ -entity.name.tag.custom.css\n//                               ^^^^^^^^^^ entity.name.tag.custom.css\n//                                            ^^^^^^^^^^^^^^ entity.name.tag.custom.css\n//                                                           ^ -entity.name.tag.custom.css\n//                                                             ^^^^^^^^^^^^^^^ entity.name.tag.custom.css\n//                                                                             ^^^^^^^^^ entity.other.attribute-name.class.css\n//                                                                                       ^^^^^^^^^^ -entity.name.tag.custom.css\n//                                                                                                  ^^^^^ -entity.name.tag.custom.css\n\n.test-property-name-order-doesnt-prevent-full-matches {\n    grid-template-rows: none;\n//  ^^^^^^^^^^^^^^^^^^ support.type.property-name\n//                    ^ punctuation.separator.key-value\n    grid-template-columns: none;\n//  ^^^^^^^^^^^^^^^^^^^^^ support.type.property-name\n//                       ^ punctuation.separator.key-value\n    grid-template-areas: auto;\n//  ^^^^^^^^^^^^^^^^^^^ support.type.property-name\n//                     ^ punctuation.separator.key-value\n    grid-template: initial;\n//  ^^^^^^^^^^^^^ support.type.property-name\n//               ^ punctuation.separator.key-value\n    grid-row-gap: 3vmin;\n//  ^^^^^^^^^^^^ support.type.property-name\n//              ^ punctuation.separator.key-value\n    grid-row: auto;\n//  ^^^^^^^^ support.type.property-name\n//          ^ punctuation.separator.key-value\n}\n\n.test-meta-scopes-for-completions {\n    top: 5px;\n//  ^^^ meta.property-name\n//      ^^^^ meta.property-value\n    top: ;\n//  ^^^ meta.property-name\n//      ^ meta.property-value\n    top: 0\n//  ^^^ meta.property-name\n}/*     ^ meta.property-value */\n\n.generic-font-family { font-family: my-serif, serif }\n//                                  ^^^^^^^^ string.unquoted\n//                                          ^ - string\n//                                            ^^^^^ support.constant.font-name\n.generic-font-family2 { font-family: sans-serif , fantasy , system-ui; }\n//                                   ^^^^^^^^^^ support.constant.font-name\n//                                                ^^^^^^^ support.constant.font-name\n//                                                          ^^^^^^^^^ support.constant.font-name\n.generic-font-family3 {\n    font-family: cursive\n//               ^^^^^^^ support.constant.font-name\n}\n.generic-font-family4 {\n    font-family: droid serif;\n//               ^^^^^^^^^^^ string.unquoted\n}\n\n.variable-beginnings {\n    --1x: url(data:image/png;base64,PNG);\n//  ^^^^ support.type.custom-property\n//  ^^ punctuation.definition.custom-property\n//    ^^ support.type.custom-property.name\n//      ^ punctuation.separator.key-value\n    background-image: var(--1x);\n//                        ^^^^ support.type.custom-property\n//                        ^^ punctuation.definition.custom-property\n//                          ^^ support.type.custom-property.name\n    --\\ff: 5px;\n//  ^^^^^ support.type.custom-property\n//  ^^ punctuation.definition.custom-property\n//    ^^^ support.type.custom-property.name\n//       ^ punctuation.separator.key-value\n}\n"
  },
  {
    "path": "less_completions.py",
    "content": "import re\nimport sublime\nimport sublime_plugin\n\nKIND_CSS_PROPERTY = (sublime.KIND_ID_KEYWORD, \"p\", \"property\")\nKIND_CSS_FUNCTION = (sublime.KIND_ID_FUNCTION, \"f\", \"function\")\nKIND_CSS_CONSTANT = (sublime.KIND_ID_VARIABLE, \"c\", \"constant\")\n\n# Prepare some common property values for when there is more than one way to\n# specify a certain value type. The color value for example can be specified\n# by `rgb()` or `hsl()` and so on. Example where `|` denotes the caret:\n#\n#     color: rg|   -->   color: rgb(|);\n#\n# This is also helpful when multiple properties share the same value types.\nCOMMON_VALUES = {\n    'animation_direction': [\n        'alternate', 'alternate-reverse', 'normal', 'reverse'\n    ],\n    'absolute_size': [\n        'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large'\n    ],\n    'absolute_weight': [\n        '100', '200', '300', '400', '500', '600', '700', '800', '900'\n    ],\n    'basic_shape': ['inset($1)', 'circle($1)', 'ellipse($1)', 'polygon($1)'],\n    'blend_mode': [\n        'normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten',\n        'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference',\n        'exclusion', 'hue', 'saturation', 'color', 'luminosity'\n    ],\n    'border_style': [\n        'none', 'hidden', 'dotted', 'dashed', 'solid', 'double',\n        'groove', 'ridge', 'inset', 'outset'\n    ],\n    'border_width': ['thin', 'medium', 'thick'],\n    'break_before_after': [\n        'always', 'left', 'right', 'recto', 'verso', 'page', 'column', 'region'\n    ],\n    'break_inside': [\n        'auto', 'avoid', 'avoid-page', 'avoid-column', 'avoid-region'\n    ],\n    'color': [\n        'currentColor',\n        'transparent',\n        ['rgb()', 'rgb(${1:0}, ${2:0}, ${3:0})'],\n        ['rgba()', 'rgba(${1:0}, ${2:0}, ${3:0}, ${4:1.0})'],\n        ['hsl()', 'hsl(${1:0}, ${2:100%}, ${3:50%})'],\n        ['hsla()', 'hsla(${1:0}, ${2:100%}, ${3:50%}, ${4:1.0})'],\n        # Named colors\n        'aliceblue', 'antiquewhite', 'aqua', 'aquamarine', 'azure', 'beige',\n        'bisque', 'black', 'blanchedalmond', 'blue', 'blueviolet', 'brown',\n        'burlywood', 'cadetblue', 'chartreuse', 'chocolate', 'coral',\n        'cornflowerblue', 'cornsilk', 'crimson', 'cyan', 'darkblue',\n        'darkcyan', 'darkgoldenrod', 'darkgray', 'darkgrey', 'darkgreen',\n        'darkkhaki', 'darkmagenta', 'darkolivegreen', 'darkorange',\n        'darkorchid', 'darkred', 'darksalmon', 'darkseagreen',\n        'darkslateblue', 'darkslategray', 'darkslategrey', 'darkturquoise',\n        'darkviolet', 'deeppink', 'deepskyblue', 'dimgray', 'dimgrey',\n        'dodgerblue', 'firebrick', 'floralwhite', 'forestgreen', 'fuchsia',\n        'gainsboro', 'ghostwhite', 'gold', 'goldenrod', 'gray', 'grey',\n        'green', 'greenyellow', 'honeydew', 'hotpink', 'indianred', 'indigo',\n        'ivory', 'khaki', 'lavender', 'lavenderblush', 'lawngreen',\n        'lemonchiffon', 'lightblue', 'lightcoral', 'lightcyan',\n        'lightgoldenrodyellow', 'lightgray', 'lightgrey', 'lightgreen',\n        'lightpink', 'lightsalmon', 'lightseagreen', 'lightskyblue',\n        'lightslategray', 'lightslategrey', 'lightsteelblue', 'lightyellow',\n        'lime', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',\n        'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',\n        'mediumslateblue', 'mediumspringgreen', 'mediumturquoise',\n        'mediumvioletred', 'midnightblue', 'mintcream', 'mistyrose',\n        'moccasin', 'navajowhite', 'navy', 'oldlace', 'olive', 'olivedrab',\n        'orange', 'orangered', 'orchid', 'palegoldenrod', 'palegreen',\n        'paleturquoise', 'palevioletred', 'papayawhip', 'peachpuff', 'peru',\n        'pink', 'plum', 'powderblue', 'purple', 'rebeccapurple', 'red',\n        'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'sandybrown',\n        'seagreen', 'seashell', 'sienna', 'silver', 'skyblue', 'slateblue',\n        'slategray', 'slategrey', 'snow', 'springgreen', 'steelblue', 'tan',\n        'teal', 'thistle', 'tomato', 'turquoise', 'violet', 'wheat', 'white',\n        'whitesmoke', 'yellow', 'yellowgreen',\n        # LESS color functions\n        'argb(${1:color})',\n        'average(${1:color}, ${2:color})'\n        'color(${1:string})',\n        'contrast(${1:color}, ${2:dark}, ${3:light}, ${4:threshold}%)',\n        'darken(${1:color}, ${2:percentage}%)',\n        'desaturate(${1:color}, ${2:percentage}%)',\n        'difference(${1:color}, ${2:color})',\n        'exclusion(${1:color}, ${1:color})',\n        'fade(${1:color}, ${2:percentage}%)',\n        'fadein(${1:color}, ${2:percentage}%)',\n        'fadeout(${1:color}, ${2:percentage}%)',\n        'greyscale(${1:color})',\n        'hardlight(${1:color}, ${2:color})',\n        'hsv($1)',\n        'hsva($1)',\n        'lighten(${1:color}, ${2:percentage}%)',\n        'mix(${1:color}, ${2:color})',\n        'multiply(${1:color}, ${1:color})',\n        'negation(${1:color}, ${2:color})',\n        'overlay(${1:color}, ${2:color})',\n        'saturate(${1:color}, ${2:percentage}%)',\n        'screen(${1:color}, ${1:color})',\n        'softlight(${1:color}, ${1:color})',\n        'spin(${1:color}, ${2:angle})'\n    ],\n    'font_variant_alternates': [\n        'normal', 'historical-forms', 'stylistic($1)', 'styleset($1)',\n        'character-variant($1)', 'swash($1)', 'ornaments($1)', 'annotation($1)'\n    ],\n    'generic_name': [\n        'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'\n    ],\n    'grid': [\n        ['repeat()', 'repeat(${1:2}, ${2:1fr})'],\n        ['minmax()', 'minmax(${1:100px}, ${2:1fr})'],\n    ],\n    'list_style_type': [\n        'none', 'inline', 'disc', 'circle', 'square', 'decimal',\n        'decimal-leading-zero', 'arabic-indic', 'binary', 'bengali',\n        'cambodian', 'khmer', 'devanagari', 'gujarati', 'gurmukhi',\n        'kannada', 'lower-hexadecimal', 'lao', 'malayalam', 'mongolian',\n        'myanmar', 'octal', 'oriya', 'persian', 'urdu', 'telugu',\n        'tibetan', 'thai', 'upper-hexadecimal', 'lower-roman',\n        'upper-roman', 'lower-greek', 'lower-alpha', 'lower-latin',\n        'upper-alpha', 'upper-latin', 'afar', 'ethiopic-halehame-aa-et',\n        'ethiopic-halehame-aa-er', 'amharic', 'ethiopic-halehame-am-et',\n        'amharic-abegede', 'ethiopic-abegede-am-et', 'cjk-earthly-branch',\n        'cjk-heavenly-stem', 'ethiopic', 'ethiopic-halehame-gez',\n        'ethiopic-abegede', 'ethiopic-abegede-gez', 'hangul-consonant',\n        'hangul', 'lower-norwegian', 'oromo', 'ethiopic-halehame-om-et',\n        'sidama', 'ethiopic-halehame-sid-et', 'somali',\n        'ethiopic-halehame-so-et', 'tigre', 'ethiopic-halehame-tig',\n        'tigrinya-er', 'ethiopic-halehame-ti-er', 'tigrinya-er-abegede',\n        'ethiopic-abegede-ti-er', 'tigrinya-et', 'ethiopic-halehame-ti-et',\n        'tigrinya-et-abegede', 'ethiopic-abegede-ti-et', 'upper-greek',\n        'upper-norwegian', 'asterisks', 'footnotes', 'hebrew', 'armenian',\n        'lower-armenian', 'upper-armenian', 'georgian', 'cjk-ideographic',\n        'hiragana', 'katakana', 'hiragana-iroha', 'katakana-iroha'\n    ],\n    'number': [\n        'abs(${1:number})',\n        'ceil(${1:number})',\n        'convert(${1:number}, ${2:units})',\n        'floor(${1:number})',\n        'max(${1:number}, ${1:number})',\n        'min(${1:number}, ${1:number})',\n        'mod(${1:number}, ${2:number})',\n        'pi()',\n        'pow(${1:base}, ${2:exponent})',\n        'round(${1:number}, ${2:places})',\n        'sqrt(${1:number})',\n        'unit(${1:number}, ${2:units})'\n    ],\n    'percentage': [\n        'percentage(${1:number})'\n    ],\n    'position': ['top', 'right', 'bottom', 'left', 'center'],\n    'relative_size': ['larger', 'smaller'],\n    'relative_weight': ['bolder', 'lighter'],\n    'repeat_style': [\n        'repeat', 'repeat-x', 'repeat-y', 'space', 'round', 'no-repeat'\n    ],\n    'string': [\n        '\\\"$1\\\"',\n        'e(${1:string})',\n        'escape(${1:string})',\n        '%(${1:string}, ${2:args...})',\n        'replace(${1:string}, ${2:...})'\n    ],\n    'timing_function': [\n        'ease',\n        'ease-in',\n        'ease-out',\n        'ease-in-out',\n        'linear',\n        ['cubic-bezier()', 'cubic-bezier(${1:0.0}, ${2:0.0}, ${3:1.0}, ${4:1.0})'],\n        'step-start',\n        'step-end',\n        ['steps()', 'steps(${1:2}, ${2:start})'],\n    ],\n    'uri': [\n        'url($1)',\n        'data-uri(${1:url})'\n    ],\n}\n\nPROPERTY_DICT = {\n    'align-content': [\n        'center', 'flex-end', 'flex-start', 'space-around', 'space-between',\n        'stretch'\n    ],\n    'align-items': ['baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n    'align-self': ['auto', 'baseline', 'center', 'flex-end', 'flex-start', 'stretch'],\n    'alignment-baseline': [\n        'baseline', 'middle', 'auto', 'before-edge', 'after-edge', 'central',\n        'text-before-edge', 'text-after-edge', 'ideographic', 'alphabetic',\n        'hanging', 'mathematical'\n    ],\n    'animation': [\n        'none', '<timing_function>', 'infinite', '<animation_direction>',\n        'forwards', 'backwards', 'both', 'running', 'paused'\n    ],\n    'animation-name': ['none', '<custom-ident>'],\n    'animation-duration': ['<time>'],\n    'animation-timing-function': ['<timing_function>'],\n    'animation-delay': ['<time>'],\n    'animation-iteration-count': ['infinite', '<number>'],\n    'animation-direction': ['<animation_direction>'],\n    'animation-fill-mode': ['none', 'forwards', 'backwards', 'both'],\n    'animation-play-state': ['running', 'paused'],\n    'backface-visibility': ['visible', 'hidden'],\n    'background': [\n        '<color>', '<uri>', 'repeat', 'repeat-x', 'repeat-y', 'no-repeat',\n        'scroll', 'fixed', '<position>'\n    ],\n    'background-attachment': ['fixed', 'local', 'scroll'],\n    'background-blend-mode': ['<blend_mode>'],\n    'background-clip': ['border-box', 'padding-box', 'content-box'],\n    'background-color': ['<color>'],\n    'backdrop-filter': [\n        '<uri>', 'url($1)', 'blur($1)', 'brightness($1)', 'contrast($1)',\n        'drop-shadow($1)', 'grayscale($1)', 'hue-rotate($1)', 'invert($1)',\n        'opacity($1)', 'saturate($1)', 'sepia($1)'\n    ],\n    'background-image': ['<uri>', 'none'],\n    'background-origin': ['border-box', 'padding-box', 'content-box'],\n    'background-position': ['<position>'],\n    'background-repeat': ['<repeat_style>'],\n    'background-size': ['auto', 'cover', 'contain', '<length>', '<percentage>'],\n    'baseline-shift': ['baseline', 'sub', 'super'],\n    'border': ['<border_width>', '<border_style>', '<color>'],\n    'border-width': ['<border_width>'],\n    'border-style': ['<border_style>'],\n    'border-color': ['<color>'],\n    'border-collapse': ['collapse', 'separate'],\n    'border-radius': ['<length>', '<percentage>'],\n    'border-spacing': ['<length>'],\n    'border-image': [\n        '<border-image-source>', '<border-image-slice>', '<border-image-width>',\n        '<border-image-outset>', '<border-image-repeat>'\n    ],\n    'border-image-outset': ['<length>', '<number>'],\n    'border-image-repeat': ['stretch', 'repeat', 'round', 'space'],\n    'border-image-slice': ['fill', '<number>', '<percentage>'],\n    'border-image-source': ['none', '<image>'],\n    'border-image-width': ['<length>', '<percentage>', '<number>', 'auto'],\n    'border-top | border-right | border-bottom | border-left': [\n        '<border_width>', '<border_style>', '<color>'\n    ],\n    'border-top-color | border-right-color | border-bottom-color | border-left-color': ['<color>'],\n    'border-top-left-radius | border-top-right-radius | border-bottom-right-radius | border-bottom-left-radius': [\n        '<length>', '<percentage>'\n    ],\n    'border-top-style | border-right-style | border-bottom-style | border-left-style': ['<border_style>'],\n    'border-top-width | border-right-width | border-bottom-width | border-left-width': ['<border_width>'],\n    'bottom': ['<length>', '<percentage>', 'auto'],\n    'box-decoration-break': ['slice', 'clone'],\n    'box-shadow': ['none', 'inset', '<color>'],\n    'box-sizing': ['content-box', 'border-box'],\n    'break-after': ['<break_before_after>', '<break_inside>'],\n    'break-before': ['<break_before_after>', '<break_inside>'],\n    'break-inside': ['<break_inside>'],\n    'caption-side': ['top', 'bottom'],\n    'clear': ['none', 'left', 'right', 'both'],\n    'clip': [\n        ['rect()', 'rect(${1:0}, ${2:0}, ${3:0}, ${4:0})'],\n        'auto'\n    ],\n    'clip-path': ['none', '<uri>', '<basic_shape>'],\n    'clip-rule': ['nonzero', 'evenodd'],\n    'color': ['<color>'],\n    'color-interpolation': ['auto', 'sRGB', 'linearRGB'],\n    'color-interpolation-filters': ['auto', 'sRGB', 'linearRGB'],\n    'color-profile': ['auto', 'sRGB', '<uri>'],\n    'color-rendering': ['auto', 'optimizeSpeed', 'optimizeQuality'],\n    'columns': ['auto'],\n    'column-count': ['auto', '<number>'],\n    'column-fill': ['auto', 'balance'],\n    'column-gap': ['normal', '<length>'],\n    'column-rule': ['<border_width>', '<border_style>', '<color>'],\n    'column-rule-color': ['<color>'],\n    'column-rule-style': ['<border_style>'],\n    'column-rule-width': ['<border_width>'],\n    'column-span': ['none'],\n    'column-width': ['auto', '<length>'],\n    'content': [\n        'none', 'normal', '<string>', '<uri>', 'attr($1)',\n        'open-quote', 'close-quote', 'no-open-quote', 'no-close-quote',\n        'counter($1)'\n    ],\n    'counter-increment': ['none', '<custom_ident>', '<integer>'],\n    'counter-reset': ['none', '<custom_ident>', '<integer>'],\n    'cursor': [\n        '<uri>', 'auto', 'default', 'none', 'context-menu', 'help',\n        'pointer', 'progress', 'wait', 'cell', 'crosshair', 'text',\n        'vertical-text', 'alias', 'copy', 'move', 'no-drop', 'not-allowed',\n        'e-resize', 'n-resize', 'ne-resize', 'nw-resize', 's-resize',\n        'se-resize', 'sw-resize', 'w-resize', 'ew-resize', 'ns-resize',\n        'nesw-resize', 'nwse-resize', 'col-resize', 'row-resize',\n        'all-scroll', 'zoom-in', 'zoom-out'\n    ],\n    'direction': ['ltr', 'rtl'],\n    'display': [\n        'none', 'inline', 'block', 'contents', 'list-item', 'inline-block',\n        'inline-table', 'table', 'table-cell', 'table-column',\n        'table-column-group', 'table-footer-group', 'table-header-group',\n        'table-row', 'table-row-group', 'table-caption', 'flex', 'inline-flex',\n        'grid', 'inline-grid', 'ruby', 'ruby-base', 'ruby-text',\n        'ruby-base-container', 'ruby-text-container', 'run-in'\n    ],\n    'dominant-baseline': [\n        'auto', 'middle', 'central', 'text-before-edge',\n        'text-after-edge', 'ideographic', 'alphabetic', 'hanging',\n        'mathematical', 'use-script', 'no-change', 'reset-size'\n    ],\n    'empty-cells': ['show', 'hide'],\n    'fill': ['<color>'],\n    'fill-rule': ['nonzero', 'evenodd'],\n    'filter': [\n        '<uri>',\n        'blur(${1:5px})',\n        'brightness(${1:1.0})',\n        'contrast(${1:100%})',\n        ['drop-shadow()', 'drop-shadow(${1:1px} ${2:1px})'],\n        'grayscale(${1:50%})',\n        'hue-rotate(${1:90deg})',\n        'invert(${1:50%})',\n        'opacity(${1:100%})',\n        'saturate(${1:50%})',\n        'sepia(${1:50%})'\n    ],\n    'flex': ['none'],\n    'flex-grow': ['<number>'],\n    'flex-shrink': ['<number>'],\n    'flex-basis': ['auto', '<width>'],\n    'flex-flow': [\n        'row', 'row-reverse', 'column', 'column-reverse', 'nowrap', 'wrap',\n        'wrap-reverse'\n    ],\n    'flex-direction': ['row', 'row-reverse', 'column', 'column-reverse'],\n    'flex-wrap': ['nowrap', 'wrap', 'wrap-reverse'],\n    'float': ['left', 'right', 'none'],\n    'flood-color': ['<color>'],\n    'font': [\n        'normal', 'italic', 'oblique', 'normal', 'small-caps', 'normal', 'bold',\n        '<absolute_weight>', '<relative_weight>', 'normal', '<generic_name>',\n        'caption', 'icon', 'menu', 'message-box', 'small-caption', 'status-bar'\n    ],\n    'font-family': ['<generic_name>'],\n    'font-feature-settings': ['normal', '<string>'],\n    'font-kerning': ['auto', 'normal', 'none'],\n    'font-language-override': ['normal', '<string>'],\n    'font-size': [\n        '<absolute_size>', '<relative_size>', '<length>', '<percentage>'\n    ],\n    'font-size-adjust': ['none', '<number>'],\n    'font-style': ['normal', 'italic', 'oblique'],\n    'font-stretch': [\n        'normal', 'semi-condensed', 'condensed', 'extra-condensed',\n        'ultra-condensed', 'semi-expanded', 'expanded', 'extra-expanded',\n        'ultra-expanded'\n    ],\n    'font-synthesis': ['none', 'weight', 'style'],\n    'font-variant': ['normal', 'small-caps'],\n    'font-variant-alternates': ['<font_variant_alternates>'],\n    'font-variant-caps': [\n        'normal', 'small-caps', 'all-small-caps', 'petite-caps',\n        'all-petite-caps', 'unicase', 'titling-case'\n    ],\n    'font-variant-east-asian': [\n        'normal', 'ruby', 'jis78', 'jis83', 'jis90', 'jis04', 'simplified',\n        'traditional'\n    ],\n    'font-variant-ligatures': [\n        'normal', 'none', 'common-ligatures', 'no-common-ligatures',\n        'discretionary-ligatures', 'no-discretionary-ligatures',\n        'historical-ligatures', 'no-historical-ligatures', 'contextual',\n        'no-contextual'\n    ],\n    'font-variant-numeric': [\n        'normal', 'ordinal', 'slashed-zero', 'lining-nums', 'oldstyle-nums',\n        'proportional-nums', 'tabular-nums', 'diagonal-fractions',\n        'stacked-fractions'\n    ],\n    'font-variant-position': ['normal', 'sub', 'super'],\n    'font-weight': ['normal', 'bold', '<absolute_weight>', '<relative_weight>'],\n    'grid': [],\n    'grid-area': [],\n    'grid-auto-columns': ['auto', '<percentage>', '<length>'],\n    'grid-auto-flow': ['row', 'column', 'dense'],\n    'grid-auto-rows': ['auto', '<percentage>', '<length>'],\n    'grid-column-gap': ['<length>', '<percentage>'],\n    'grid-gap': ['<length>', '<percentage>'],\n    'grid-row-gap': ['<length>', '<percentage>'],\n    'grid-template-areas': [],\n    'grid-template-columns': ['auto', '<grid>', '<percentage>', '<length>'],\n    'grid-template-rows': ['auto', '<grid>', '<percentage>', '<length>'],\n    'grid-column': ['<number>'],\n    'grid-column-end': ['<number>'],\n    'grid-column-start': ['<number>'],\n    'grid-row': ['<number>'],\n    'grid-row-end': ['<number>'],\n    'grid-row-start': ['<number>'],\n    'height': ['<length>', '<percentage>', 'auto', 'fit-content'],\n    'hyphens': ['none', 'manual', 'auto'],\n    'image-rendering': [\n        'auto', 'optimizeSpeed', 'optimizeQuality', 'pixelated'\n    ],\n    'ime-mode': ['auto', 'normal', 'active', 'inactive', 'disabled'],\n    'isolation': ['auto', 'isolation'],\n    'justify-content': [\n        'start', 'end', 'flex-start', 'flex-end', 'center', 'left', 'right',\n        'safe start', 'safe end', 'safe flex-start', 'safe flex-end',\n        'safe center', 'safe left', 'safe right', 'unsafe start',\n        'unsafe end', 'unsafe flex-start', 'unsafe flex-end', 'unsafe center',\n        'unsafe left', 'unsafe right', 'normal', 'baseline', 'first baseline',\n        'last baseline', 'space-between', 'space-around', 'space-evenly',\n        'stretch'\n    ],\n    'kerning': ['auto'],\n    'left': ['<length>', '<percentage>', 'auto'],\n    'letter-spacing': ['normal', '<length>'],\n    'lighting-color': ['<color>'],\n    'line-height': ['normal', '<number>', '<length>', '<percentage>'],\n    'list-style': ['<list_style_type>', 'inside', 'outside', '<uri>'],\n    'list-style-image': ['<uri>', 'none'],\n    'list-style-position': ['inside', 'outside'],\n    'list-style-type': ['<list_style_type>'],\n    'margin': ['auto', '<margin-width>'],\n    'margin-top | margin-right | margin-bottom | margin-left': [\n        'auto', '<margin-width>'\n    ],\n    'marker-end | marker-start | marker-mid': ['<uri>', 'none'],\n    'marks': ['crop', 'cross', 'none'],\n    'mask': ['<uri>', 'none'],\n    'mask-type': ['luminance', 'alpha'],\n    'max-height': ['<length>', '<percentage>', 'fit-content', 'none'],\n    'max-width': ['<length>', '<percentage>', 'fit-content', 'none'],\n    'min-height': ['<length>', '<percentage>', 'fit-content'],\n    'min-width': ['<length>', '<percentage>', 'fit-content'],\n    'mix-blend-mode': ['<blend_mode>'],\n    'object-fit': ['fill', 'contain', 'cover', 'none', 'scale-down'],\n    'object-position': ['<position>'],\n    'opacity': ['<number>'],\n    'order': ['<integer>'],\n    'orphans': ['<integer>'],\n    'outline': [\n        '<color>', '<border_style>', '<border_width>', '<length>'\n    ],\n    'outline-color': ['<color>', 'invert'],\n    'outline-offset': ['<length>'],\n    'outline-style': ['<border_style>'],\n    'outline-width': ['<border_width>', '<length>'],\n    'overflow | overflow-x | overflow-y': ['visible', 'hidden', 'scroll', 'auto'],\n    'overflow-wrap': ['normal', 'break-word'],\n    'padding': ['auto', '<padding-width>'],\n    'padding-top | padding-right | padding-bottom | padding-left': [\n        'auto', '<padding-width>'\n    ],\n    'page-break-after': ['auto', 'always', 'avoid', 'left', 'right'],\n    'page-break-before': ['auto', 'always', 'avoid', 'left', 'right'],\n    'page-break-inside': ['avoid', 'auto'],\n    'paint-order': ['normal', 'fill', 'stroke', 'markers'],\n    'perspective': ['none'],\n    'perspective-origin': ['<position>'],\n    'pointer-events': [\n        'auto', 'none', 'all', 'visiblePainted', 'visibleFill', 'visibleStroke',\n        'visible', 'painted', 'fill', 'stroke'\n    ],\n    'position': ['static', 'relative', 'absolute', 'fixed', 'sticky'],\n    'quotes': ['none', '<string>'],\n    'resize': ['none', 'both', 'horizontal', 'vertical'],\n    'right': ['<length>', '<percentage>', 'auto'],\n    'scroll-behavior': ['auto', 'smooth'],\n    'shape-image-threshold': ['<number>'],\n    'shape-margin': ['<length>', '<percentage>'],\n    'shape-outside': [\n        'none', 'margin-box', 'content-box', 'border-box', 'padding-box',\n        '<basic_shape>', '<uri>'\n    ],\n    'shape-rendering': ['auto', 'optimizeSpeed', 'crispEdges', 'geometricPrecision'],\n    'size': [\n        'a3', 'a4', 'a5', 'b4', 'b5', 'landscape', 'ledger', 'legal',\n        'letter', 'portrait'\n    ],\n    'stop-color': ['<color>'],\n    'stroke': ['<color>'],\n    'stroke-dasharray': ['none'],\n    'stroke-linecap': ['butt', 'round', 'square'],\n    'stroke-linejoin': ['round', 'miter', 'bevel'],\n    'table-layout': ['auto', 'fixed'],\n    'text-align': ['left', 'right', 'center', 'justify', 'justify-all'],\n    'text-align-last': ['start', 'end', 'left', 'right', 'center', 'justify'],\n    'text-anchor': ['start', 'middle', 'end'],\n    'text-decoration': [\n        'none', 'underline', 'overline', 'line-through', 'blink'\n    ],\n    'text-decoration-color': ['<color>'],\n    'text-decoration-line': ['none', 'underline', 'overline', 'line-through'],\n    'text-decoration-style': ['solid', 'double', 'dotted', 'dashed', 'wavy'],\n    'text-indent': ['<length>', '<percentage>'],\n    'text-orientation': ['mixed', 'upright', 'sideways', 'use-glyph-orientation'],\n    'text-overflow': ['clip', 'ellipsis'],\n    'text-rendering': [\n        'auto', 'optimizeSpeed', 'optimizeLegibility', 'geometricPrecision'\n    ],\n    'text-shadow': ['none', '<color>'],\n    'text-transform': ['capitalize', 'uppercase', 'lowercase', 'none'],\n    'text-underline-position': ['auto', 'under', 'left', 'right'],\n    'top': ['<length>', '<percentage>', 'auto'],\n    'transform': [\n        ['matrix()', 'matrix(${1:1}, ${2:1}, ${3:1}, ${4:1}, ${5:2}, ${6:2})'],\n        [\n            'matrix3d()',\n            'matrix3d('\n            '${1:1}, ${2:1}, ${3:0}, ${4:0}, '\n            '${5:1}, ${6:1}, ${7:0}, ${8:0}, '\n            '${9:0}, ${10:0}, ${11:1}, ${12:0}, '\n            '${13:2}, ${14:2}, ${15:0}, ${16:1}'\n            ')'\n        ],\n        'perspective(${1:0})',\n        'rotate(${1:45deg})',\n        ['rotate3d()', 'rotate3d(${1:0}, ${2:0}, ${3:1}, ${4:45deg})'],\n        'rotateX(${1:45deg})',\n        'rotateY(${1:45deg})',\n        'rotateZ(${1:45deg})',\n        'scale(${1:1.0})',\n        ['scale3d()', 'scale3d(${1:1.0}, ${2:1.0}, ${3:1.0})'],\n        'scaleX(${1:1.0})',\n        'scaleY(${1:1.0})',\n        'scaleZ(${1:1.0})',\n        'skew(${1:10deg})',\n        'skewX(${1:10deg})',\n        'skewY(${1:10deg})',\n        'translate(${1:10px})',\n        ['translate3d()', 'translate3d(${1:10px}, ${2:0px}, ${3:0px})'],\n        'translateX(${1:10px})',\n        'translateY(${1:10px})',\n        'translateZ(${1:10px})',\n        'none'\n    ],\n    'transform-origin': ['<position>'],\n    'transform-style': ['preserve-3d', 'flat'],\n    'transition': [],\n    'transition-delay': ['<time>'],\n    'transition-duration': ['<time>'],\n    'transition-property': ['none', '<custom-ident>'],\n    'transition-timing-function': ['<timing_function>'],\n    'unicode-bidi': ['normal', 'embed', 'bidi-override'],\n    'unicode-range': [],\n    'user-select': ['auto', 'text', 'none', 'contain'],\n    'vertical-align': [\n        'baseline', 'sub', 'super', 'text-top', 'text-bottom', 'middle', 'top',\n        'bottom', '<percentage>', '<length>'\n    ],\n    'visibility': ['visible', 'hidden', 'collapse'],\n    'white-space': ['normal', 'pre', 'nowrap', 'pre-wrap', 'pre-line'],\n    'widows': ['<integer>'],\n    'width': ['<length>', '<percentage>', 'auto', 'fit-content'],\n    'will-change': ['auto', 'contents', 'scroll-position', '<custom-ident>'],\n    'word-break': ['normal', 'break-all', 'keep-all'],\n    'word-spacing': ['normal', '<length>'],\n    'word-wrap': ['normal', 'break-word'],\n    'writing-mode': ['horizontal-tb', 'vertical-rl', 'vertical-lr', 'sideways-rl', 'sideways-lr'],\n    'z-index': ['auto', '<integer>'],\n}\n\n\ndef completion_sort_key(v):\n    if isinstance(v, str):\n        return v\n    return v[0]\n\n\ndef parse_css_data():\n    \"\"\"\n    Returns a dictionary containing values associated to their property names\n    \"\"\"\n    props = {}\n    for names, values in PROPERTY_DICT.items():\n        # Determine which values are available for the current property name\n        allowed_values = []\n        for value in values:\n            if value[0] == '<' and value[-1] == '>':\n                key = value[1:-1]\n                if key in COMMON_VALUES:\n                    allowed_values += COMMON_VALUES[key]\n            else:\n                allowed_values.append(value)\n\n        # Append values that are allowed for all properties\n        allowed_values += ['all', 'inherit', 'initial', 'unset']\n\n        for name in names.split(' | '):\n            props[name] = sorted(allowed_values, key=completion_sort_key)\n\n    return props\n\n\ndef match_selector(view, pt, scope):\n    # This will catch scenarios like:\n    # - .foo {font-style: |}\n    # - <style type=\"text/css\">.foo { font-weight: b|</style>\n    return any(view.match_selector(p, scope) for p in (pt, pt - 1))\n\n\ndef next_none_whitespace(view, pt):\n    for pt in range(pt, view.size()):\n        ch = view.substr(pt)\n        if ch not in ' \\t':\n            return ch\n\n\nclass CSSCompletions(sublime_plugin.EventListener):\n    selector_scope = (\n        # completions are for properties, not selectors, only inside sass/scss files\n        \"source.less - meta.selector.css\"\n    )\n    props = None\n    re_name = None\n    re_value = None\n    re_trigger = None\n\n    def on_query_completions(self, view, prefix, locations):\n\n        if sublime.load_settings('CSS.sublime-settings').get('disable_default_completions'):\n            return None\n\n        pt = locations[0]\n        if not match_selector(view, pt, self.selector_scope):\n            return None\n\n        if not self.props:\n            self.props = parse_css_data()\n            self.re_name = re.compile(r\"([a-zA-Z-]+)\\s*:[^:;{}]*$\")\n            self.re_value = re.compile(r\"^(?:\\s*(:)|([ \\t]*))([^:]*)([;}])\")\n            self.re_trigger = re.compile(r\"\\$(?:\\d+|\\{\\d+\\:([^}]+)\\})\")\n\n        if match_selector(view, pt, \"meta.property-value.css meta.function-call\"):\n            items = self.complete_function_argument(view, prefix, pt)\n        elif match_selector(view, pt, \"meta.property-value.css\"):\n            items = self.complete_property_value(view, prefix, pt)\n        else:\n            items = self.complete_property_name(view, prefix, pt)\n\n        if items:\n            return sublime.CompletionList(items, sublime.INHIBIT_WORD_COMPLETIONS)\n        return None\n\n    def complete_property_name(self, view, prefix, pt):\n        suffix = \": $0;\"\n        text = view.substr(sublime.Region(pt, view.line(pt).end()))\n        matches = self.re_value.search(text)\n        if matches:\n            colon, space, value, term = matches.groups()\n            if colon:\n                # don't append anything if the next character is a colon\n                suffix = \"\"\n            elif value:\n                # only append colon if value already exists\n                suffix = \":\" if space else \": \"\n            elif term == \";\":\n                # ommit semicolon if rule is already terminated\n                suffix = \": $0\"\n\n        return (\n            sublime.CompletionItem(\n                trigger=prop,\n                completion=prop + suffix,\n                completion_format=sublime.COMPLETION_FORMAT_SNIPPET,\n                kind=KIND_CSS_PROPERTY\n            ) for prop in self.props\n        )\n\n    def complete_property_value(self, view, prefix, pt):\n        completions = []\n        text = view.substr(sublime.Region(view.line(pt).begin(), pt - len(prefix)))\n        matches = self.re_name.search(text)\n        if matches:\n            prop = matches.group(1)\n            values = self.props.get(prop)\n            if values:\n                details = \"<code>{prop}</code> property-value\".format(prop=prop)\n\n                if next_none_whitespace(view, pt) == \";\":\n                    suffix = \"\"\n                else:\n                    suffix = \"$0;\"\n\n                for value in values:\n                    if isinstance(value, str):\n                        desc = self.re_trigger.sub(r\"\\1\", value)\n                        snippet = value\n                    else:\n                        desc, snippet = value\n\n                    if \"(\" in snippet:\n                        kind = KIND_CSS_FUNCTION\n                    else:\n                        kind = KIND_CSS_CONSTANT\n\n                    completions.append(sublime.CompletionItem(\n                        trigger=desc,\n                        completion=snippet + suffix,\n                        completion_format=sublime.COMPLETION_FORMAT_SNIPPET,\n                        kind=kind,\n                        details=details\n                    ))\n\n        return completions\n\n    def complete_function_argument(self, view, prefix, pt):\n        return None\n"
  },
  {
    "path": "messages/2.0.0.txt",
    "content": "LESS 2.0.0\n======================\n\nThank you for installing Less for Sublime Text.\n\n2.0 supports things like flex-box syntax, custom properties.\nLess is now also in line with the scope naming guidelines for Sublime Text 3.0.\n\nIf something doesn't work for you let us know at:\nhttps://github.com/danro/LESS-sublime/issues\n"
  },
  {
    "path": "messages.json",
    "content": "{\n    \"install\": \"messages/2.0.0.txt\",\n    \"2.0.0\": \"messages/2.0.0.txt\"\n}\n"
  }
]