github-linguist 7.11.1 → 7.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (583) hide show
  1. checksums.yaml +4 -4
  2. data/ext/linguist/lex.linguist_yy.c +619 -363
  3. data/ext/linguist/lex.linguist_yy.h +425 -59
  4. data/ext/linguist/linguist.c +5 -35
  5. data/ext/linguist/linguist.h +0 -18
  6. data/ext/linguist/tokenizer.l +61 -36
  7. data/grammars/annotation.liquidhaskell.haskell.json +1 -1835
  8. data/grammars/config.xcompose.json +1 -80
  9. data/grammars/documentation.markdown.injection.haxe.json +1 -22
  10. data/grammars/etc.json +1 -987
  11. data/grammars/file.lasso.json +1 -702
  12. data/grammars/hidden.manref.json +1 -29
  13. data/grammars/hidden.regexp.injection-shell.json +1 -28
  14. data/grammars/hint.haskell.json +1 -1762
  15. data/grammars/hint.message.haskell.json +1 -1786
  16. data/grammars/hint.type.haskell.json +1 -1759
  17. data/grammars/injections.etc.json +1 -659
  18. data/grammars/inline.prisma.json +1 -55
  19. data/grammars/markdown.hack.codeblock.json +1 -20
  20. data/grammars/markdown.haxe.codeblock.json +1 -26
  21. data/grammars/markdown.hxml.codeblock.json +1 -26
  22. data/grammars/markdown.plantuml.codeblock.json +1 -26
  23. data/grammars/objdump.x86asm.json +1 -69
  24. data/grammars/source.4dm.json +1 -1156
  25. data/grammars/source.SASLog.json +1 -18
  26. data/grammars/source.abap.json +1 -335
  27. data/grammars/source.abl.json +1 -734
  28. data/grammars/source.abnf.json +1 -294
  29. data/grammars/source.actionscript.3.json +1 -1538
  30. data/grammars/source.acucobol.json +1 -13
  31. data/grammars/source.ada.json +1 -133
  32. data/grammars/source.afm.json +1 -1207
  33. data/grammars/source.agc.json +1 -87
  34. data/grammars/source.agda.json +1 -72
  35. data/grammars/source.ahk.json +1 -195
  36. data/grammars/source.al.json +1 -130
  37. data/grammars/source.alloy.json +1 -40
  38. data/grammars/source.ampl.json +1 -151
  39. data/grammars/source.angelscript.json +1 -186
  40. data/grammars/source.antlr.json +1 -295
  41. data/grammars/source.apache-config.json +1 -346
  42. data/grammars/source.apache-config.mod_perl.json +1 -65
  43. data/grammars/source.apl.json +1 -1427
  44. data/grammars/source.applescript.json +1 -1384
  45. data/grammars/source.asl.json +1 -56
  46. data/grammars/source.asn.json +1 -55
  47. data/grammars/source.asp.json +1 -151
  48. data/grammars/source.aspectj.json +1 -960
  49. data/grammars/source.assembly.json +1 -116
  50. data/grammars/source.ats.json +1 -164
  51. data/grammars/source.autoit.json +1 -167
  52. data/grammars/source.avro.json +1 -381
  53. data/grammars/source.awk.json +1 -384
  54. data/grammars/source.ballerina.json +1 -1785
  55. data/grammars/source.batchfile.json +1 -732
  56. data/grammars/source.bdf.json +1 -425
  57. data/grammars/source.befunge.json +1 -34
  58. data/grammars/source.bf.json +1 -30
  59. data/grammars/source.blitzmax.json +1 -905
  60. data/grammars/source.bnf.json +1 -191
  61. data/grammars/source.boo.json +1 -448
  62. data/grammars/source.brightauthorproject.json +1 -24
  63. data/grammars/source.brightscript.json +1 -148
  64. data/grammars/source.bsl.json +1 -451
  65. data/grammars/source.bsv.json +1 -277
  66. data/grammars/source.c++.json +1 -436
  67. data/grammars/source.c++.qt.json +1 -29
  68. data/grammars/source.c.ec.json +1 -33
  69. data/grammars/source.c.json +1 -712
  70. data/grammars/source.c.nwscript.json +1 -0
  71. data/grammars/source.c.platform.json +1 -1115
  72. data/grammars/source.c2hs.json +1 -24
  73. data/grammars/source.cabal.json +1 -63
  74. data/grammars/source.cache.cmake.json +1 -70
  75. data/grammars/source.cake.json +1 -13
  76. data/grammars/source.camlp4.ocaml.json +1 -60
  77. data/grammars/source.capnp.json +1 -88
  78. data/grammars/source.ceylon.json +1 -93
  79. data/grammars/source.cfscript.cfc.json +1 -162
  80. data/grammars/source.cfscript.json +1 -737
  81. data/grammars/source.changelogs.rpm-spec.json +1 -91
  82. data/grammars/source.chapel.json +1 -265
  83. data/grammars/source.cirru.json +1 -61
  84. data/grammars/source.clarion.json +1 -146
  85. data/grammars/source.clean.json +1 -222
  86. data/grammars/source.click.json +1 -107
  87. data/grammars/source.clips.json +1 -67
  88. data/grammars/source.clojure.json +1 -429
  89. data/grammars/source.cm.json +1 -49
  90. data/grammars/source.cmake.json +1 -173
  91. data/grammars/source.cobol.json +1 -485
  92. data/grammars/source.coffee.json +1 -1310
  93. data/grammars/source.cool.json +1 -96
  94. data/grammars/source.coq.json +1 -58
  95. data/grammars/source.crystal.json +1 -2694
  96. data/grammars/source.cs.json +1 -4323
  97. data/grammars/source.csound-document.json +1 -175
  98. data/grammars/source.csound-score.json +1 -191
  99. data/grammars/source.csound.json +1 -824
  100. data/grammars/source.css.json +1 -1859
  101. data/grammars/source.css.less.json +1 -536
  102. data/grammars/source.css.mss.json +1 -249
  103. data/grammars/source.css.postcss.sugarss.json +1 -260
  104. data/grammars/source.css.scss.json +1 -1873
  105. data/grammars/source.csx.json +1 -13
  106. data/grammars/source.cuda-c++.json +1 -103
  107. data/grammars/source.curlrc.json +1 -984
  108. data/grammars/source.cwl.json +1 -103
  109. data/grammars/source.cython.json +1 -1912
  110. data/grammars/source.d.json +1 -741
  111. data/grammars/source.dart.json +1 -433
  112. data/grammars/source.data-weave.json +1 -1580
  113. data/grammars/source.desktop.json +1 -86
  114. data/grammars/source.diff.json +1 -153
  115. data/grammars/source.dircolors.json +1 -137
  116. data/grammars/source.direct-x.json +1 -135
  117. data/grammars/source.disasm.json +1 -30
  118. data/grammars/source.ditroff.desc.json +1 -411
  119. data/grammars/source.ditroff.json +1 -1280
  120. data/grammars/source.dm.json +1 -628
  121. data/grammars/source.dmf.json +1 -96
  122. data/grammars/source.dockerfile.json +1 -88
  123. data/grammars/source.dosbox-conf.json +1 -97
  124. data/grammars/source.dot.json +1 -117
  125. data/grammars/source.dylan.json +1 -212
  126. data/grammars/source.ebnf.json +1 -240
  127. data/grammars/source.editorconfig.json +1 -365
  128. data/grammars/source.eiffel.json +1 -133
  129. data/grammars/source.elixir.json +1 -965
  130. data/grammars/source.elm.json +1 -375
  131. data/grammars/source.emacs.lisp.json +1 -1301
  132. data/grammars/source.erlang.json +1 -1647
  133. data/grammars/source.essl.json +1 -37
  134. data/grammars/source.factor.json +1 -252
  135. data/grammars/source.fan.json +1 -341
  136. data/grammars/source.fancy.json +1 -245
  137. data/grammars/source.faust.json +1 -119
  138. data/grammars/source.figctrl.json +1 -252
  139. data/grammars/source.figfont.json +1 -121
  140. data/grammars/source.firestore.json +1 -289
  141. data/grammars/source.fish.json +1 -190
  142. data/grammars/source.fontdir.json +1 -99
  143. data/grammars/source.fontforge.json +1 -355
  144. data/grammars/source.forth.json +1 -84
  145. data/grammars/source.fortran.json +1 -464
  146. data/grammars/source.fortran.modern.json +1 -200
  147. data/grammars/source.fsharp.fsi.json +1 -9
  148. data/grammars/source.fsharp.fsl.json +1 -9
  149. data/grammars/source.fsharp.fsx.json +1 -13
  150. data/grammars/source.fsharp.json +1 -452
  151. data/grammars/source.fstar.json +1 -439
  152. data/grammars/source.futhark.json +1 -167
  153. data/grammars/source.gap.json +1 -163
  154. data/grammars/source.gcode.json +1 -176
  155. data/grammars/source.gdb.json +1 -160
  156. data/grammars/source.gdb.session.json +1 -70
  157. data/grammars/source.gdbregs.json +1 -14
  158. data/grammars/source.gdscript.json +1 -491
  159. data/grammars/source.gedcom.json +1 -196
  160. data/grammars/source.generic-db.json +1 -41
  161. data/grammars/source.gerber.json +1 -321
  162. data/grammars/source.gf.json +1 -51
  163. data/grammars/source.gfm.blade.json +1 -15
  164. data/grammars/source.gfm.json +1 -1913
  165. data/grammars/source.gitattributes.json +1 -111
  166. data/grammars/source.gitconfig.json +1 -450
  167. data/grammars/source.gitignore.json +1 -140
  168. data/grammars/source.glsl.json +1 -139
  169. data/grammars/source.gn.json +1 -345
  170. data/grammars/source.gnuplot.json +1 -260
  171. data/grammars/source.go.json +1 -540
  172. data/grammars/source.golo.json +1 -177
  173. data/grammars/source.gosu.2.json +1 -153
  174. data/grammars/source.grace.json +1 -675
  175. data/grammars/source.graphql.json +1 -978
  176. data/grammars/source.gremlin.json +1 -200
  177. data/grammars/source.groovy.gradle.json +1 -69
  178. data/grammars/source.groovy.json +1 -1374
  179. data/grammars/source.hack.json +1 -2595
  180. data/grammars/source.haproxy-config.json +1 -152
  181. data/grammars/source.harbour.json +1 -388
  182. data/grammars/source.haskell.json +1 -1760
  183. data/grammars/source.hc.json +1 -709
  184. data/grammars/source.hgignore.json +1 -34
  185. data/grammars/source.hlsl.json +1 -211
  186. data/grammars/source.hosts.json +1 -40
  187. data/grammars/source.hql.json +1 -492
  188. data/grammars/source.hsc2hs.json +1 -9
  189. data/grammars/source.hsig.json +1 -1760
  190. data/grammars/source.httpspec.json +1 -283
  191. data/grammars/source.hx.argument.json +1 -80
  192. data/grammars/source.hx.json +1 -2428
  193. data/grammars/source.hx.type.json +1 -8
  194. data/grammars/source.hxml.json +1 -59
  195. data/grammars/source.hy.json +1 -429
  196. data/grammars/source.ideal.json +1 -356
  197. data/grammars/source.idl-dlm.json +1 -105
  198. data/grammars/source.idl.json +1 -246
  199. data/grammars/source.idris.json +1 -523
  200. data/grammars/source.igor.json +1 -369
  201. data/grammars/source.inform7.json +1 -183
  202. data/grammars/source.ini.json +1 -107
  203. data/grammars/source.ini.npmrc.json +1 -311
  204. data/grammars/source.inno.json +1 -133
  205. data/grammars/source.inputrc.json +1 -500
  206. data/grammars/source.io.json +1 -156
  207. data/grammars/source.ioke.json +1 -266
  208. data/grammars/source.isabelle.root.json +1 -64
  209. data/grammars/source.isabelle.theory.json +1 -102
  210. data/grammars/source.j.json +1 -260
  211. data/grammars/source.jasmin.json +1 -294
  212. data/grammars/source.java-properties.json +1 -87
  213. data/grammars/source.java.json +1 -1020
  214. data/grammars/source.jcl.json +1 -46
  215. data/grammars/source.jflex.json +1 -484
  216. data/grammars/source.jison.json +1 -711
  217. data/grammars/source.jisonlex-injection.json +1 -10
  218. data/grammars/source.jisonlex.json +1 -434
  219. data/grammars/source.jolie.json +1 -132
  220. data/grammars/source.jq.json +1 -211
  221. data/grammars/source.js.css.json +1 -328
  222. data/grammars/source.js.json +1 -1897
  223. data/grammars/source.js.jsx.json +1 -2488
  224. data/grammars/source.js.objj.json +1 -419
  225. data/grammars/source.js.regexp.json +1 -152
  226. data/grammars/source.js.regexp.replacement.json +1 -26
  227. data/grammars/source.jsdoc.json +1 -460
  228. data/grammars/source.json.json +1 -139
  229. data/grammars/source.jsonnet.json +1 -197
  230. data/grammars/source.julia.console.json +1 -51
  231. data/grammars/source.julia.json +1 -991
  232. data/grammars/source.kotlin.json +1 -704
  233. data/grammars/source.lark.json +1 -0
  234. data/grammars/source.lbnf.json +1 -0
  235. data/grammars/source.lcov.json +1 -398
  236. data/grammars/source.lean.json +1 -226
  237. data/grammars/source.lean.markdown.json +1 -2598
  238. data/grammars/source.lex.json +1 -232
  239. data/grammars/source.lex.regexp.json +1 -269
  240. data/grammars/source.lid.json +1 -19
  241. data/grammars/source.lilypond.json +1 -869
  242. data/grammars/source.lisp.json +1 -101
  243. data/grammars/source.litcoffee.json +1 -654
  244. data/grammars/source.livescript.json +1 -603
  245. data/grammars/source.llvm.json +1 -61
  246. data/grammars/source.logos.json +1 -24
  247. data/grammars/source.logtalk.json +1 -310
  248. data/grammars/source.loomscript.json +1 -208
  249. data/grammars/source.lsl.json +1 -241
  250. data/grammars/source.ltspice.symbol.json +1 -294
  251. data/grammars/source.lua.json +1 -275
  252. data/grammars/source.m2.json +1 -125
  253. data/grammars/source.m4.json +1 -229
  254. data/grammars/source.m68k.json +1 -412
  255. data/grammars/source.mailmap.json +1 -28
  256. data/grammars/source.makefile.json +1 -470
  257. data/grammars/source.makegen.json +1 -9
  258. data/grammars/source.man-conf.json +1 -153
  259. data/grammars/source.mask.json +1 -816
  260. data/grammars/source.mata.json +1 -125
  261. data/grammars/source.mathematica.json +1 -416
  262. data/grammars/source.matlab.json +1 -1096
  263. data/grammars/source.maxscript.json +1 -465
  264. data/grammars/source.mcfunction-snapshot.json +1 -24480
  265. data/grammars/source.mcfunction.json +1 -1354
  266. data/grammars/source.mercury.json +1 -246
  267. data/grammars/source.meson.json +1 -165
  268. data/grammars/source.meta-info.json +1 -146
  269. data/grammars/source.ml.json +1 -285
  270. data/grammars/source.mlir.json +1 -109
  271. data/grammars/source.modelica.json +1 -142
  272. data/grammars/source.modula-3.json +1 -88
  273. data/grammars/source.modula2.json +1 -94
  274. data/grammars/source.monkey.json +1 -694
  275. data/grammars/source.moonscript.json +1 -144
  276. data/grammars/source.mql5.json +1 -187
  277. data/grammars/source.msl.json +1 -755
  278. data/grammars/source.mupad.json +1 -131
  279. data/grammars/source.nanorc.json +1 -333
  280. data/grammars/source.nasl.json +1 -155
  281. data/grammars/source.ncl.json +1 -53
  282. data/grammars/source.ne.json +1 -105
  283. data/grammars/source.nemerle.json +1 -132
  284. data/grammars/source.neon.json +1 -381
  285. data/grammars/source.nesc.json +1 -21
  286. data/grammars/source.netlinx.erb.json +1 -34
  287. data/grammars/source.netlinx.json +1 -704
  288. data/grammars/source.nextflow-groovy.json +1 -1359
  289. data/grammars/source.nextflow.json +1 -94
  290. data/grammars/source.nginx.json +1 -815
  291. data/grammars/source.nim.comment.json +1 -82
  292. data/grammars/source.nim.json +1 -1083
  293. data/grammars/source.nim_filter.json +1 -113
  294. data/grammars/source.nimcfg.json +1 -103
  295. data/grammars/source.ninja.json +1 -248
  296. data/grammars/source.nit.json +1 -234
  297. data/grammars/source.nix.json +1 -1196
  298. data/grammars/source.nsis.json +1 -152
  299. data/grammars/source.nu.json +1 -516
  300. data/grammars/source.nut.json +1 -262
  301. data/grammars/source.objc++.json +1 -12
  302. data/grammars/source.objc.json +1 -910
  303. data/grammars/source.objc.platform.json +1 -842
  304. data/grammars/source.objectscript.json +1 -309
  305. data/grammars/source.objectscript_class.json +1 -674
  306. data/grammars/source.objectscript_csp.json +1 -19
  307. data/grammars/source.objectscript_macros.json +1 -226
  308. data/grammars/source.ocaml.json +1 -1418
  309. data/grammars/source.ocamllex.json +1 -298
  310. data/grammars/source.ocamlyacc.json +1 -339
  311. data/grammars/source.odin-ehr.json +1 -806
  312. data/grammars/source.odin.json +1 -402
  313. data/grammars/source.ooc.json +1 -685
  314. data/grammars/source.opa.json +1 -196
  315. data/grammars/source.opal.json +1 -410
  316. data/grammars/source.opalsysdefs.json +1 -66
  317. data/grammars/source.openbsd-pkg.contents.json +1 -128
  318. data/grammars/source.opencobol.json +1 -62
  319. data/grammars/source.opentype.json +1 -448
  320. data/grammars/source.opts.json +1 -108
  321. data/grammars/source.ox.json +1 -89
  322. data/grammars/source.oz.json +1 -77
  323. data/grammars/source.p4.json +1 -122
  324. data/grammars/source.paket.dependencies.json +1 -0
  325. data/grammars/source.paket.lock.json +1 -0
  326. data/grammars/source.pan.json +1 -706
  327. data/grammars/source.papyrus.skyrim.json +1 -1272
  328. data/grammars/source.parrot.pir.json +1 -145
  329. data/grammars/source.pascal.json +1 -143
  330. data/grammars/source.pawn.json +1 -1194
  331. data/grammars/source.pcb.board.json +1 -285
  332. data/grammars/source.pcb.schematic.json +1 -424
  333. data/grammars/source.pcb.sexp.json +1 -232
  334. data/grammars/source.pep8.json +1 -118
  335. data/grammars/source.perl.6.json +1 -309
  336. data/grammars/source.perl.json +1 -2519
  337. data/grammars/source.php.zephir.json +1 -353
  338. data/grammars/source.pic.json +1 -908
  339. data/grammars/source.pig_latin.json +1 -168
  340. data/grammars/source.pike.json +1 -49
  341. data/grammars/source.plist.json +1 -336
  342. data/grammars/source.po.json +1 -222
  343. data/grammars/source.pogoscript.json +1 -79
  344. data/grammars/source.pony.json +1 -245
  345. data/grammars/source.postcss.json +1 -370
  346. data/grammars/source.postscript.json +1 -477
  347. data/grammars/source.pov-ray sdl.json +1 -82
  348. data/grammars/source.powershell.json +1 -981
  349. data/grammars/source.prisma.json +1 -435
  350. data/grammars/source.processing.json +1 -872
  351. data/grammars/source.prolog.eclipse.json +1 -201
  352. data/grammars/source.prolog.json +1 -286
  353. data/grammars/source.protobuf.json +1 -471
  354. data/grammars/source.puppet.json +1 -433
  355. data/grammars/source.purescript.json +1 -861
  356. data/grammars/source.pyjade.json +1 -996
  357. data/grammars/source.python.django.json +1 -29
  358. data/grammars/source.python.json +1 -5292
  359. data/grammars/source.python.salt.json +1 -9
  360. data/grammars/source.q.json +1 -215
  361. data/grammars/source.q_output.json +1 -348
  362. data/grammars/source.qasm.json +1 -66
  363. data/grammars/source.ql.json +1 -1408
  364. data/grammars/source.qmake.json +1 -210
  365. data/grammars/source.qml.json +1 -174
  366. data/grammars/source.qsharp.json +1 -120
  367. data/grammars/source.quake.json +1 -44
  368. data/grammars/source.quoting.raku.json +1 -0
  369. data/grammars/source.r.json +1 -194
  370. data/grammars/source.racket.json +1 -98
  371. data/grammars/source.raku.json +1 -0
  372. data/grammars/source.rascal.json +1 -283
  373. data/grammars/source.reason.hover.type.json +1 -14
  374. data/grammars/source.reason.json +1 -3382
  375. data/grammars/source.rebol.json +1 -637
  376. data/grammars/source.red.json +1 -644
  377. data/grammars/source.reg.json +1 -159
  378. data/grammars/source.regexp.extended.json +1 -558
  379. data/grammars/source.regexp.json +1 -1434
  380. data/grammars/source.regexp.python.json +1 -490
  381. data/grammars/source.regexp.raku.json +1 -0
  382. data/grammars/source.regexp.spin.json +1 -179
  383. data/grammars/source.rego.json +1 -124
  384. data/grammars/source.renpy.json +1 -1948
  385. data/grammars/source.rescript.json +1 -0
  386. data/grammars/source.rexx.json +1 -52
  387. data/grammars/source.ring.json +1 -247
  388. data/grammars/source.rpm-spec.json +1 -765
  389. data/grammars/source.ruby.gemfile.json +1 -24
  390. data/grammars/source.ruby.json +1 -2605
  391. data/grammars/source.ruby.rspec.cucumber.steps.json +1 -261
  392. data/grammars/source.rust.json +1 -629
  393. data/grammars/source.sas.json +1 -286
  394. data/grammars/source.sass.json +1 -1089
  395. data/grammars/source.sassdoc.json +1 -346
  396. data/grammars/source.scad.json +1 -145
  397. data/grammars/source.scala.json +1 -1121
  398. data/grammars/source.scaml.json +1 -451
  399. data/grammars/source.scheme.json +1 -353
  400. data/grammars/source.scilab.json +1 -96
  401. data/grammars/source.sdbl.json +1 -90
  402. data/grammars/source.sed.json +1 -1520
  403. data/grammars/source.shaderlab.json +1 -198
  404. data/grammars/source.shell.json +1 -1272
  405. data/grammars/source.shen.json +1 -143
  406. data/grammars/source.sieve.json +1 -383
  407. data/grammars/source.slice.json +1 -2755
  408. data/grammars/source.smali.json +1 -1610
  409. data/grammars/source.smalltalk.json +1 -187
  410. data/grammars/source.smpl.json +1 -314
  411. data/grammars/source.smt.json +1 -158
  412. data/grammars/source.solidity.json +1 -189
  413. data/grammars/source.sourcepawn.json +1 -651
  414. data/grammars/source.sparql.json +1 -18
  415. data/grammars/source.spin.json +1 -916
  416. data/grammars/source.sqf.json +1 -111
  417. data/grammars/source.sql.json +1 -459
  418. data/grammars/source.ssh-config.json +1 -97
  419. data/grammars/source.stan.json +1 -388
  420. data/grammars/source.stata.json +1 -197
  421. data/grammars/source.strings.json +1 -49
  422. data/grammars/source.stylus.json +1 -1018
  423. data/grammars/source.supercollider.json +1 -93
  424. data/grammars/source.svelte.json +1 -827
  425. data/grammars/source.swift.json +1 -3134
  426. data/grammars/source.sy.json +1 -2954
  427. data/grammars/source.systemverilog.json +1 -1036
  428. data/grammars/source.tags.json +1 -266
  429. data/grammars/source.tcl.json +1 -260
  430. data/grammars/source.tea.json +1 -174
  431. data/grammars/source.terra.json +1 -138
  432. data/grammars/source.terraform.json +1 -694
  433. data/grammars/source.thrift.json +1 -698
  434. data/grammars/source.tl.json +1 -259
  435. data/grammars/source.tla.json +1 -140
  436. data/grammars/source.tnsaudit.json +1 -256
  437. data/grammars/source.toc.json +1 -52
  438. data/grammars/source.toml.json +1 -426
  439. data/grammars/source.ts.json +1 -5581
  440. data/grammars/source.tsql.json +1 -507
  441. data/grammars/source.tsx.json +1 -5834
  442. data/grammars/source.turing.json +1 -1553
  443. data/grammars/source.turtle.json +1 -489
  444. data/grammars/source.txl.json +1 -48
  445. data/grammars/source.ucd.nameslist.json +1 -444
  446. data/grammars/source.ucd.unidata.json +1 -570
  447. data/grammars/source.ucfconstraints.json +1 -67
  448. data/grammars/source.ur.json +1 -31
  449. data/grammars/source.v.json +1 -1010
  450. data/grammars/source.vala.json +1 -800
  451. data/grammars/source.varnish.vcl.json +1 -331
  452. data/grammars/source.vbnet.json +1 -239
  453. data/grammars/source.verilog.json +1 -296
  454. data/grammars/source.vhdl.json +1 -1374
  455. data/grammars/source.vim-snippet.json +1 -645
  456. data/grammars/source.viml.json +1 -1197
  457. data/grammars/source.vtt.json +1 -702
  458. data/grammars/source.vyper.json +1 -213
  459. data/grammars/source.wavefront.mtl.json +1 -1190
  460. data/grammars/source.wavefront.obj.json +1 -1341
  461. data/grammars/source.wdl.json +1 -220
  462. data/grammars/source.webassembly.json +1 -349
  463. data/grammars/source.webidl.json +1 -807
  464. data/grammars/source.wgetrc.json +1 -1640
  465. data/grammars/source.wollok.json +1 -100
  466. data/grammars/source.wsd.json +1 -781
  467. data/grammars/source.x10.json +1 -64
  468. data/grammars/source.x86.json +1 -299
  469. data/grammars/source.x86asm.json +1 -42
  470. data/grammars/source.xc.json +1 -371
  471. data/grammars/source.xlfd.json +1 -462
  472. data/grammars/source.xojo.json +1 -85
  473. data/grammars/source.xq.json +1 -230
  474. data/grammars/source.xtend.json +1 -724
  475. data/grammars/source.yacc.json +1 -626
  476. data/grammars/source.yaml.json +1 -443
  477. data/grammars/source.yaml.salt.json +1 -345
  478. data/grammars/source.yang.json +1 -78
  479. data/grammars/source.yara.json +1 -99
  480. data/grammars/source.yasnippet.json +1 -377
  481. data/grammars/source.zap.json +1 -260
  482. data/grammars/source.zeek.json +1 -412
  483. data/grammars/source.zenscript.json +1 -282
  484. data/grammars/source.zig.json +1 -547
  485. data/grammars/source.zil.json +1 -750
  486. data/grammars/text.bibtex.json +1 -246
  487. data/grammars/text.cfml.basic.json +1 -735
  488. data/grammars/text.conllu.json +1 -45
  489. data/grammars/text.dfy.dafny.json +1 -188
  490. data/grammars/text.elixir.json +1 -52
  491. data/grammars/text.eml.basic.json +1 -296
  492. data/grammars/text.error-list.json +1 -53
  493. data/grammars/text.find-refs.json +1 -926
  494. data/grammars/text.gherkin.feature.json +1 -127
  495. data/grammars/text.haml.json +1 -518
  496. data/grammars/text.hamlc.json +1 -219
  497. data/grammars/text.html.asciidoc.json +1 -478
  498. data/grammars/text.html.asdoc.json +1 -529
  499. data/grammars/text.html.asp.json +1 -53
  500. data/grammars/text.html.basic.json +1 -908
  501. data/grammars/text.html.cfm.json +1 -802
  502. data/grammars/text.html.creole.json +1 -317
  503. data/grammars/text.html.cshtml.json +1 -356
  504. data/grammars/text.html.django.json +1 -63
  505. data/grammars/text.html.ecr.json +1 -48
  506. data/grammars/text.html.elixir.json +1 -21
  507. data/grammars/text.html.erb.json +1 -150
  508. data/grammars/text.html.erlang.yaws.json +1 -67
  509. data/grammars/text.html.factor.json +1 -19
  510. data/grammars/text.html.ftl.json +1 -76
  511. data/grammars/text.html.handlebars.json +1 -845
  512. data/grammars/text.html.javadoc.json +1 -426
  513. data/grammars/text.html.js.json +1 -24
  514. data/grammars/text.html.jsp.json +1 -1196
  515. data/grammars/text.html.liquid.json +1 -25
  516. data/grammars/text.html.mako.json +1 -726
  517. data/grammars/text.html.markdown.source.gfm.apib.json +1 -1298
  518. data/grammars/text.html.markdown.source.gfm.mson.json +1 -1156
  519. data/grammars/text.html.mediawiki.elm-build-output.json +1 -97
  520. data/grammars/text.html.mediawiki.elm-documentation.json +1 -17
  521. data/grammars/text.html.mediawiki.json +1 -946
  522. data/grammars/text.html.php.blade.json +1 -3833
  523. data/grammars/text.html.php.json +1 -2507
  524. data/grammars/text.html.riot.json +1 -788
  525. data/grammars/text.html.slash.json +1 -307
  526. data/grammars/text.html.smarty.json +1 -232
  527. data/grammars/text.html.soy.json +1 -606
  528. data/grammars/text.html.ssp.json +1 -43
  529. data/grammars/text.html.tcl.json +1 -37
  530. data/grammars/text.html.twig.json +1 -1344
  531. data/grammars/text.html.vue.json +1 -963
  532. data/grammars/text.idl-idldoc.json +1 -10
  533. data/grammars/text.jade.json +1 -963
  534. data/grammars/text.junit-test-report.json +1 -89
  535. data/grammars/text.log.latex.json +1 -84
  536. data/grammars/text.marko.json +1 -1662
  537. data/grammars/text.muse.json +1 -1471
  538. data/grammars/text.openbsd-pkg.desc.json +1 -78
  539. data/grammars/text.plain.json +1 -18
  540. data/grammars/text.python.console.json +1 -21
  541. data/grammars/text.python.traceback.json +1 -43
  542. data/grammars/text.rdoc.json +1 -44
  543. data/grammars/text.restructuredtext.clean.json +1 -24
  544. data/grammars/text.restructuredtext.json +1 -1765
  545. data/grammars/text.robot.json +1 -63
  546. data/grammars/text.roff.json +1 -6927
  547. data/grammars/text.rtf.json +1 -148
  548. data/grammars/text.runoff.json +1 -308
  549. data/grammars/text.sfd.json +1 -292
  550. data/grammars/text.shell-session.json +1 -29
  551. data/grammars/text.slim.json +1 -527
  552. data/grammars/text.srt.json +1 -166
  553. data/grammars/text.tex.json +1 -264
  554. data/grammars/text.tex.latex.beamer.json +1 -57
  555. data/grammars/text.tex.latex.haskell.json +1 -1826
  556. data/grammars/text.tex.latex.json +1 -1003
  557. data/grammars/text.tex.latex.memoir.json +1 -129
  558. data/grammars/text.tex.latex.rd.json +1 -111
  559. data/grammars/text.texinfo.json +1 -1525
  560. data/grammars/text.vim-help.json +1 -383
  561. data/grammars/text.xml.ant.json +1 -195
  562. data/grammars/text.xml.flex-config.json +1 -2628
  563. data/grammars/text.xml.genshi.json +1 -28
  564. data/grammars/text.xml.json +1 -351
  565. data/grammars/text.xml.plist.json +1 -664
  566. data/grammars/text.xml.pom.json +1 -769
  567. data/grammars/text.xml.svg.json +1 -562
  568. data/grammars/text.xml.xsl.json +1 -88
  569. data/grammars/text.zone_file.json +1 -67
  570. data/grammars/version +1 -1
  571. data/lib/linguist/VERSION +1 -1
  572. data/lib/linguist/generic.yml +17 -0
  573. data/lib/linguist/heuristics.yml +37 -17
  574. data/lib/linguist/languages.json +1 -1
  575. data/lib/linguist/languages.yml +41 -2
  576. data/lib/linguist/linguist.bundle +0 -0
  577. data/lib/linguist/samples.json +1 -1
  578. data/lib/linguist/strategy/extension.rb +13 -5
  579. metadata +12 -6
  580. data/ext/linguist/strndup.c +0 -10
  581. data/grammars/source.perl6fe.json +0 -2769
  582. data/grammars/source.quoting.perl6fe.json +0 -2369
  583. data/grammars/source.regexp.perl6fe.json +0 -244
@@ -1,1859 +1 @@
1
- {
2
- "name": "CSS",
3
- "scopeName": "source.css",
4
- "patterns": [
5
- {
6
- "include": "#comment-block"
7
- },
8
- {
9
- "include": "#escapes"
10
- },
11
- {
12
- "include": "#combinators"
13
- },
14
- {
15
- "include": "#selector"
16
- },
17
- {
18
- "include": "#at-rules"
19
- },
20
- {
21
- "include": "#rule-list"
22
- }
23
- ],
24
- "repository": {
25
- "at-rules": {
26
- "patterns": [
27
- {
28
- "name": "meta.at-rule.charset.css",
29
- "begin": "\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))",
30
- "end": ";|(?=$)",
31
- "patterns": [
32
- {
33
- "match": "(?x) # Possible errors:\n\\G\n((?!@charset)@\\w+) # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+) # Preceding whitespace\n|\n(@charset\\S[^;]*) # No whitespace after @charset\n|\n(?\u003c=@charset) # Before quoted charset name\n(\\x20{2,}|\\t+) # More than one space used, or a tab\n|\n(?\u003c=@charset\\x20) # Beginning of charset name\n([^\";]+) # Not double-quoted\n|\n(\"[^\"]+$) # Unclosed quote\n|\n(?\u003c=\") # After charset name\n([^;]+) # Unexpected junk instead of semicolon",
34
- "captures": {
35
- "1": {
36
- "name": "invalid.illegal.not-lowercase.charset.css"
37
- },
38
- "2": {
39
- "name": "invalid.illegal.leading-whitespace.charset.css"
40
- },
41
- "3": {
42
- "name": "invalid.illegal.no-whitespace.charset.css"
43
- },
44
- "4": {
45
- "name": "invalid.illegal.whitespace.charset.css"
46
- },
47
- "5": {
48
- "name": "invalid.illegal.not-double-quoted.charset.css"
49
- },
50
- "6": {
51
- "name": "invalid.illegal.unclosed-string.charset.css"
52
- },
53
- "7": {
54
- "name": "invalid.illegal.unexpected-characters.charset.css"
55
- }
56
- }
57
- },
58
- {
59
- "match": "((@)charset)(?=\\s)",
60
- "captures": {
61
- "1": {
62
- "name": "keyword.control.at-rule.charset.css"
63
- },
64
- "2": {
65
- "name": "punctuation.definition.keyword.css"
66
- }
67
- }
68
- },
69
- {
70
- "name": "string.quoted.double.css",
71
- "begin": "\"",
72
- "end": "\"|$",
73
- "patterns": [
74
- {
75
- "name": "invalid.illegal.unclosed.string.css",
76
- "begin": "(?:\\G|^)(?=(?:[^\"])+$)",
77
- "end": "$"
78
- }
79
- ],
80
- "beginCaptures": {
81
- "0": {
82
- "name": "punctuation.definition.string.begin.css"
83
- }
84
- },
85
- "endCaptures": {
86
- "0": {
87
- "name": "punctuation.definition.string.end.css"
88
- }
89
- }
90
- }
91
- ],
92
- "endCaptures": {
93
- "0": {
94
- "name": "punctuation.terminator.rule.css"
95
- }
96
- }
97
- },
98
- {
99
- "name": "meta.at-rule.import.css",
100
- "begin": "(?i)((@)import)(?:\\s+|$|(?=['\"]|/\\*))",
101
- "end": ";",
102
- "patterns": [
103
- {
104
- "begin": "\\G\\s*(?=/\\*)",
105
- "end": "(?\u003c=\\*/)\\s*",
106
- "patterns": [
107
- {
108
- "include": "#comment-block"
109
- }
110
- ]
111
- },
112
- {
113
- "include": "#string"
114
- },
115
- {
116
- "include": "#url"
117
- },
118
- {
119
- "include": "#media-query-list"
120
- }
121
- ],
122
- "beginCaptures": {
123
- "1": {
124
- "name": "keyword.control.at-rule.import.css"
125
- },
126
- "2": {
127
- "name": "punctuation.definition.keyword.css"
128
- }
129
- },
130
- "endCaptures": {
131
- "0": {
132
- "name": "punctuation.terminator.rule.css"
133
- }
134
- }
135
- },
136
- {
137
- "name": "meta.at-rule.font-face.css",
138
- "begin": "(?i)((@)font-face)(?=\\s*|{|/\\*|$)",
139
- "end": "(?!\\G)",
140
- "patterns": [
141
- {
142
- "include": "#comment-block"
143
- },
144
- {
145
- "include": "#escapes"
146
- },
147
- {
148
- "include": "#rule-list"
149
- }
150
- ],
151
- "beginCaptures": {
152
- "1": {
153
- "name": "keyword.control.at-rule.font-face.css"
154
- },
155
- "2": {
156
- "name": "punctuation.definition.keyword.css"
157
- }
158
- }
159
- },
160
- {
161
- "name": "meta.at-rule.page.css",
162
- "begin": "(?i)(@)page(?=[\\s:{]|/\\*|$)",
163
- "end": "(?=\\s*($|[:{;]))",
164
- "patterns": [
165
- {
166
- "include": "#rule-list"
167
- }
168
- ],
169
- "captures": {
170
- "0": {
171
- "name": "keyword.control.at-rule.page.css"
172
- },
173
- "1": {
174
- "name": "punctuation.definition.keyword.css"
175
- }
176
- }
177
- },
178
- {
179
- "begin": "(?i)(?=@media(\\s|\\(|/\\*|$))",
180
- "end": "(?\u003c=})(?!\\G)",
181
- "patterns": [
182
- {
183
- "name": "meta.at-rule.media.header.css",
184
- "begin": "(?i)\\G(@)media",
185
- "end": "(?=\\s*[{;])",
186
- "patterns": [
187
- {
188
- "include": "#media-query-list"
189
- }
190
- ],
191
- "beginCaptures": {
192
- "0": {
193
- "name": "keyword.control.at-rule.media.css"
194
- },
195
- "1": {
196
- "name": "punctuation.definition.keyword.css"
197
- }
198
- }
199
- },
200
- {
201
- "name": "meta.at-rule.media.body.css",
202
- "begin": "{",
203
- "end": "}",
204
- "patterns": [
205
- {
206
- "include": "$self"
207
- }
208
- ],
209
- "beginCaptures": {
210
- "0": {
211
- "name": "punctuation.section.media.begin.bracket.curly.css"
212
- }
213
- },
214
- "endCaptures": {
215
- "0": {
216
- "name": "punctuation.section.media.end.bracket.curly.css"
217
- }
218
- }
219
- }
220
- ]
221
- },
222
- {
223
- "begin": "(?i)(?=@counter-style([\\s'\"{;]|/\\*|$))",
224
- "end": "(?\u003c=})(?!\\G)",
225
- "patterns": [
226
- {
227
- "name": "meta.at-rule.counter-style.header.css",
228
- "begin": "(?i)\\G(@)counter-style",
229
- "end": "(?=\\s*{)",
230
- "patterns": [
231
- {
232
- "include": "#comment-block"
233
- },
234
- {
235
- "include": "#escapes"
236
- },
237
- {
238
- "name": "variable.parameter.style-name.css",
239
- "match": "(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
240
- "captures": {
241
- "0": {
242
- "patterns": [
243
- {
244
- "include": "#escapes"
245
- }
246
- ]
247
- }
248
- }
249
- }
250
- ],
251
- "beginCaptures": {
252
- "0": {
253
- "name": "keyword.control.at-rule.counter-style.css"
254
- },
255
- "1": {
256
- "name": "punctuation.definition.keyword.css"
257
- }
258
- }
259
- },
260
- {
261
- "name": "meta.at-rule.counter-style.body.css",
262
- "begin": "{",
263
- "end": "}",
264
- "patterns": [
265
- {
266
- "include": "#comment-block"
267
- },
268
- {
269
- "include": "#escapes"
270
- },
271
- {
272
- "include": "#rule-list-innards"
273
- }
274
- ],
275
- "beginCaptures": {
276
- "0": {
277
- "name": "punctuation.section.property-list.begin.bracket.curly.css"
278
- }
279
- },
280
- "endCaptures": {
281
- "0": {
282
- "name": "punctuation.section.property-list.end.bracket.curly.css"
283
- }
284
- }
285
- }
286
- ]
287
- },
288
- {
289
- "begin": "(?i)(?=@document([\\s'\"{;]|/\\*|$))",
290
- "end": "(?\u003c=})(?!\\G)",
291
- "patterns": [
292
- {
293
- "name": "meta.at-rule.document.header.css",
294
- "begin": "(?i)\\G(@)document",
295
- "end": "(?=\\s*[{;])",
296
- "patterns": [
297
- {
298
- "name": "meta.function.document-rule.css",
299
- "begin": "(?i)(?\u003c![\\w-])(url-prefix|domain|regexp)(\\()",
300
- "end": "\\)",
301
- "patterns": [
302
- {
303
- "include": "#string"
304
- },
305
- {
306
- "include": "#comment-block"
307
- },
308
- {
309
- "include": "#escapes"
310
- },
311
- {
312
- "name": "variable.parameter.document-rule.css",
313
- "match": "[^'\")\\s]+"
314
- }
315
- ],
316
- "beginCaptures": {
317
- "1": {
318
- "name": "support.function.document-rule.css"
319
- },
320
- "2": {
321
- "name": "punctuation.section.function.begin.bracket.round.css"
322
- }
323
- },
324
- "endCaptures": {
325
- "0": {
326
- "name": "punctuation.section.function.end.bracket.round.css"
327
- }
328
- }
329
- },
330
- {
331
- "include": "#url"
332
- },
333
- {
334
- "include": "#commas"
335
- },
336
- {
337
- "include": "#comment-block"
338
- },
339
- {
340
- "include": "#escapes"
341
- }
342
- ],
343
- "beginCaptures": {
344
- "0": {
345
- "name": "keyword.control.at-rule.document.css"
346
- },
347
- "1": {
348
- "name": "punctuation.definition.keyword.css"
349
- }
350
- }
351
- },
352
- {
353
- "name": "meta.at-rule.document.body.css",
354
- "begin": "{",
355
- "end": "}",
356
- "patterns": [
357
- {
358
- "include": "$self"
359
- }
360
- ],
361
- "beginCaptures": {
362
- "0": {
363
- "name": "punctuation.section.document.begin.bracket.curly.css"
364
- }
365
- },
366
- "endCaptures": {
367
- "0": {
368
- "name": "punctuation.section.document.end.bracket.curly.css"
369
- }
370
- }
371
- }
372
- ]
373
- },
374
- {
375
- "begin": "(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'\"{;]|/\\*|$))",
376
- "end": "(?\u003c=})(?!\\G)",
377
- "patterns": [
378
- {
379
- "name": "meta.at-rule.keyframes.header.css",
380
- "begin": "(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes",
381
- "end": "(?=\\s*{)",
382
- "patterns": [
383
- {
384
- "include": "#comment-block"
385
- },
386
- {
387
- "include": "#escapes"
388
- },
389
- {
390
- "name": "variable.parameter.keyframe-list.css",
391
- "match": "(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
392
- "captures": {
393
- "0": {
394
- "patterns": [
395
- {
396
- "include": "#escapes"
397
- }
398
- ]
399
- }
400
- }
401
- }
402
- ],
403
- "beginCaptures": {
404
- "0": {
405
- "name": "keyword.control.at-rule.keyframes.css"
406
- },
407
- "1": {
408
- "name": "punctuation.definition.keyword.css"
409
- }
410
- }
411
- },
412
- {
413
- "name": "meta.at-rule.keyframes.body.css",
414
- "begin": "{",
415
- "end": "}",
416
- "patterns": [
417
- {
418
- "include": "#comment-block"
419
- },
420
- {
421
- "include": "#escapes"
422
- },
423
- {
424
- "match": "(?xi)\n(?\u003c![\\w-]) (from|to) (?![\\w-]) # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%) # Percentile value",
425
- "captures": {
426
- "1": {
427
- "name": "entity.other.keyframe-offset.css"
428
- },
429
- "2": {
430
- "name": "entity.other.keyframe-offset.percentage.css"
431
- }
432
- }
433
- },
434
- {
435
- "include": "#rule-list"
436
- }
437
- ],
438
- "beginCaptures": {
439
- "0": {
440
- "name": "punctuation.section.keyframes.begin.bracket.curly.css"
441
- }
442
- },
443
- "endCaptures": {
444
- "0": {
445
- "name": "punctuation.section.keyframes.end.bracket.curly.css"
446
- }
447
- }
448
- }
449
- ]
450
- },
451
- {
452
- "begin": "(?i)(?=@supports(\\s|\\(|/\\*|$))",
453
- "end": "(?\u003c=})(?!\\G)|(?=;)",
454
- "patterns": [
455
- {
456
- "name": "meta.at-rule.supports.header.css",
457
- "begin": "(?i)\\G(@)supports",
458
- "end": "(?=\\s*[{;])",
459
- "patterns": [
460
- {
461
- "include": "#feature-query-operators"
462
- },
463
- {
464
- "include": "#feature-query"
465
- },
466
- {
467
- "include": "#comment-block"
468
- },
469
- {
470
- "include": "#escapes"
471
- }
472
- ],
473
- "beginCaptures": {
474
- "0": {
475
- "name": "keyword.control.at-rule.supports.css"
476
- },
477
- "1": {
478
- "name": "punctuation.definition.keyword.css"
479
- }
480
- }
481
- },
482
- {
483
- "name": "meta.at-rule.supports.body.css",
484
- "begin": "{",
485
- "end": "}",
486
- "patterns": [
487
- {
488
- "include": "$self"
489
- }
490
- ],
491
- "beginCaptures": {
492
- "0": {
493
- "name": "punctuation.section.supports.begin.bracket.curly.css"
494
- }
495
- },
496
- "endCaptures": {
497
- "0": {
498
- "name": "punctuation.section.supports.end.bracket.curly.css"
499
- }
500
- }
501
- }
502
- ]
503
- },
504
- {
505
- "name": "meta.at-rule.viewport.css",
506
- "begin": "(?i)((@)viewport)(?=[\\s'\"{;]|/\\*|$)",
507
- "end": "(?=\\s*[@{;])",
508
- "patterns": [
509
- {
510
- "include": "#comment-block"
511
- },
512
- {
513
- "include": "#escapes"
514
- }
515
- ],
516
- "beginCaptures": {
517
- "1": {
518
- "name": "keyword.control.at-rule.viewport.css"
519
- },
520
- "2": {
521
- "name": "punctuation.definition.keyword.css"
522
- }
523
- }
524
- },
525
- {
526
- "name": "meta.at-rule.font-features.css",
527
- "contentName": "variable.parameter.font-name.css",
528
- "begin": "(?i)((@)font-feature-values)(?=[\\s'\"{;]|/\\*|$)\\s*",
529
- "end": "(?=\\s*[@{;])",
530
- "patterns": [
531
- {
532
- "include": "#comment-block"
533
- },
534
- {
535
- "include": "#escapes"
536
- }
537
- ],
538
- "beginCaptures": {
539
- "1": {
540
- "name": "keyword.control.at-rule.font-feature-values.css"
541
- },
542
- "2": {
543
- "name": "punctuation.definition.keyword.css"
544
- }
545
- }
546
- },
547
- {
548
- "include": "#font-features"
549
- },
550
- {
551
- "name": "meta.at-rule.namespace.css",
552
- "begin": "(?i)((@)namespace)(?=[\\s'\";]|/\\*|$)",
553
- "end": ";|(?=[@{])",
554
- "patterns": [
555
- {
556
- "include": "#url"
557
- },
558
- {
559
- "match": "(?xi)\n(?:\\G|^|(?\u003c=\\s))\n(?=\n (?\u003c=\\s|^) # Starts with whitespace\n (?:[-a-zA-Z_]|[^\\x00-\\x7F]) # Then a valid identifier character\n |\n \\s* # Possible adjoining whitespace\n /\\*(?:[^*]|\\*[^/])*\\*/ # Injected comment\n)\n(.*?) # Grouped to embed #comment-block\n(\n (?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n)",
560
- "captures": {
561
- "1": {
562
- "patterns": [
563
- {
564
- "include": "#comment-block"
565
- }
566
- ]
567
- },
568
- "2": {
569
- "name": "entity.name.function.namespace-prefix.css",
570
- "patterns": [
571
- {
572
- "include": "#escapes"
573
- }
574
- ]
575
- }
576
- }
577
- },
578
- {
579
- "include": "#comment-block"
580
- },
581
- {
582
- "include": "#escapes"
583
- },
584
- {
585
- "include": "#string"
586
- }
587
- ],
588
- "beginCaptures": {
589
- "1": {
590
- "name": "keyword.control.at-rule.namespace.css"
591
- },
592
- "2": {
593
- "name": "punctuation.definition.keyword.css"
594
- }
595
- },
596
- "endCaptures": {
597
- "0": {
598
- "name": "punctuation.terminator.rule.css"
599
- }
600
- }
601
- },
602
- {
603
- "begin": "(?i)(?=@[\\w-]+[^;]+;s*$)",
604
- "end": "(?\u003c=;)(?!\\G)",
605
- "patterns": [
606
- {
607
- "name": "meta.at-rule.header.css",
608
- "begin": "(?i)\\G(@)[\\w-]+",
609
- "end": ";",
610
- "beginCaptures": {
611
- "0": {
612
- "name": "keyword.control.at-rule.css"
613
- },
614
- "1": {
615
- "name": "punctuation.definition.keyword.css"
616
- }
617
- },
618
- "endCaptures": {
619
- "0": {
620
- "name": "punctuation.terminator.rule.css"
621
- }
622
- }
623
- }
624
- ]
625
- },
626
- {
627
- "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
628
- "end": "(?\u003c=})(?!\\G)",
629
- "patterns": [
630
- {
631
- "name": "meta.at-rule.header.css",
632
- "begin": "(?i)\\G(@)[\\w-]+",
633
- "end": "(?=\\s*[{;])",
634
- "beginCaptures": {
635
- "0": {
636
- "name": "keyword.control.at-rule.css"
637
- },
638
- "1": {
639
- "name": "punctuation.definition.keyword.css"
640
- }
641
- }
642
- },
643
- {
644
- "name": "meta.at-rule.body.css",
645
- "begin": "{",
646
- "end": "}",
647
- "patterns": [
648
- {
649
- "include": "$self"
650
- }
651
- ],
652
- "beginCaptures": {
653
- "0": {
654
- "name": "punctuation.section.begin.bracket.curly.css"
655
- }
656
- },
657
- "endCaptures": {
658
- "0": {
659
- "name": "punctuation.section.end.bracket.curly.css"
660
- }
661
- }
662
- }
663
- ]
664
- }
665
- ]
666
- },
667
- "color-keywords": {
668
- "patterns": [
669
- {
670
- "name": "support.constant.color.w3c-standard-color-name.css",
671
- "match": "(?i)(?\u003c![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])"
672
- },
673
- {
674
- "name": "support.constant.color.w3c-extended-color-name.css",
675
- "match": "(?xi) (?\u003c![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])"
676
- },
677
- {
678
- "name": "support.constant.color.current.css",
679
- "match": "(?i)(?\u003c![\\w-])currentColor(?![\\w-])"
680
- },
681
- {
682
- "name": "invalid.deprecated.color.system.css",
683
- "match": "(?xi) (?\u003c![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])"
684
- }
685
- ]
686
- },
687
- "combinators": {
688
- "patterns": [
689
- {
690
- "name": "invalid.deprecated.combinator.css",
691
- "match": "/deep/|\u003e\u003e\u003e"
692
- },
693
- {
694
- "name": "keyword.operator.combinator.css",
695
- "match": "\u003e\u003e|\u003e|\\+|~"
696
- }
697
- ]
698
- },
699
- "commas": {
700
- "name": "punctuation.separator.list.comma.css",
701
- "match": ","
702
- },
703
- "comment-block": {
704
- "name": "comment.block.css",
705
- "begin": "/\\*",
706
- "end": "\\*/",
707
- "beginCaptures": {
708
- "0": {
709
- "name": "punctuation.definition.comment.begin.css"
710
- }
711
- },
712
- "endCaptures": {
713
- "0": {
714
- "name": "punctuation.definition.comment.end.css"
715
- }
716
- }
717
- },
718
- "escapes": {
719
- "patterns": [
720
- {
721
- "name": "constant.character.escape.codepoint.css",
722
- "match": "\\\\[0-9a-fA-F]{1,6}"
723
- },
724
- {
725
- "name": "constant.character.escape.newline.css",
726
- "begin": "\\\\$\\s*",
727
- "end": "^(?\u003c!\\G)"
728
- },
729
- {
730
- "name": "constant.character.escape.css",
731
- "match": "\\\\."
732
- }
733
- ]
734
- },
735
- "feature-query": {
736
- "name": "meta.feature-query.css",
737
- "begin": "\\(",
738
- "end": "\\)",
739
- "patterns": [
740
- {
741
- "include": "#feature-query-operators"
742
- },
743
- {
744
- "include": "#feature-query"
745
- }
746
- ],
747
- "beginCaptures": {
748
- "0": {
749
- "name": "punctuation.definition.condition.begin.bracket.round.css"
750
- }
751
- },
752
- "endCaptures": {
753
- "0": {
754
- "name": "punctuation.definition.condition.end.bracket.round.css"
755
- }
756
- }
757
- },
758
- "feature-query-operators": {
759
- "patterns": [
760
- {
761
- "name": "keyword.operator.logical.feature.$1.css",
762
- "match": "(?i)(?\u003c=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)"
763
- },
764
- {
765
- "include": "#rule-list-innards"
766
- }
767
- ]
768
- },
769
- "font-features": {
770
- "name": "meta.at-rule.${3:/downcase}.css",
771
- "begin": "(?xi)\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\n(?=[\\s@'\"{;]|/\\*|$)",
772
- "end": "(?\u003c=})",
773
- "patterns": [
774
- {
775
- "name": "meta.property-list.font-feature.css",
776
- "begin": "{",
777
- "end": "}",
778
- "patterns": [
779
- {
780
- "name": "variable.font-feature.css",
781
- "match": "(?x)\n(?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
782
- "captures": {
783
- "0": {
784
- "patterns": [
785
- {
786
- "include": "#escapes"
787
- }
788
- ]
789
- }
790
- }
791
- },
792
- {
793
- "include": "#rule-list-innards"
794
- }
795
- ],
796
- "beginCaptures": {
797
- "0": {
798
- "name": "punctuation.section.property-list.begin.bracket.curly.css"
799
- }
800
- },
801
- "endCaptures": {
802
- "0": {
803
- "name": "punctuation.section.property-list.end.bracket.curly.css"
804
- }
805
- }
806
- }
807
- ],
808
- "beginCaptures": {
809
- "1": {
810
- "name": "keyword.control.at-rule.${3:/downcase}.css"
811
- },
812
- "2": {
813
- "name": "punctuation.definition.keyword.css"
814
- }
815
- }
816
- },
817
- "functional-pseudo-classes": {
818
- "patterns": [
819
- {
820
- "begin": "(?i)((:)dir)(\\()",
821
- "end": "\\)",
822
- "patterns": [
823
- {
824
- "include": "#comment-block"
825
- },
826
- {
827
- "include": "#escapes"
828
- },
829
- {
830
- "name": "support.constant.text-direction.css",
831
- "match": "(?i)(?\u003c![\\w-])(ltr|rtl)(?![\\w-])"
832
- },
833
- {
834
- "include": "#property-values"
835
- }
836
- ],
837
- "beginCaptures": {
838
- "1": {
839
- "name": "entity.other.attribute-name.pseudo-class.css"
840
- },
841
- "2": {
842
- "name": "punctuation.definition.entity.css"
843
- },
844
- "3": {
845
- "name": "punctuation.section.function.begin.bracket.round.css"
846
- }
847
- },
848
- "endCaptures": {
849
- "0": {
850
- "name": "punctuation.section.function.end.bracket.round.css"
851
- }
852
- }
853
- },
854
- {
855
- "begin": "(?i)((:)lang)(\\()",
856
- "end": "\\)",
857
- "patterns": [
858
- {
859
- "name": "support.constant.language-range.css",
860
- "match": "(?\u003c=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])"
861
- },
862
- {
863
- "name": "string.quoted.double.css",
864
- "begin": "\"",
865
- "end": "\"",
866
- "patterns": [
867
- {
868
- "include": "#escapes"
869
- },
870
- {
871
- "name": "support.constant.language-range.css",
872
- "match": "(?\u003c=[\"\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\"\\s])"
873
- }
874
- ],
875
- "beginCaptures": {
876
- "0": {
877
- "name": "punctuation.definition.string.begin.css"
878
- }
879
- },
880
- "endCaptures": {
881
- "0": {
882
- "name": "punctuation.definition.string.end.css"
883
- }
884
- }
885
- },
886
- {
887
- "name": "string.quoted.single.css",
888
- "begin": "'",
889
- "end": "'",
890
- "patterns": [
891
- {
892
- "include": "#escapes"
893
- },
894
- {
895
- "name": "support.constant.language-range.css",
896
- "match": "(?\u003c=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])"
897
- }
898
- ],
899
- "beginCaptures": {
900
- "0": {
901
- "name": "punctuation.definition.string.begin.css"
902
- }
903
- },
904
- "endCaptures": {
905
- "0": {
906
- "name": "punctuation.definition.string.end.css"
907
- }
908
- }
909
- },
910
- {
911
- "include": "#commas"
912
- }
913
- ],
914
- "beginCaptures": {
915
- "1": {
916
- "name": "entity.other.attribute-name.pseudo-class.css"
917
- },
918
- "2": {
919
- "name": "punctuation.definition.entity.css"
920
- },
921
- "3": {
922
- "name": "punctuation.section.function.begin.bracket.round.css"
923
- }
924
- },
925
- "endCaptures": {
926
- "0": {
927
- "name": "punctuation.section.function.end.bracket.round.css"
928
- }
929
- }
930
- },
931
- {
932
- "begin": "(?i)((:)(?:not|has|matches))(\\()",
933
- "end": "\\)",
934
- "patterns": [
935
- {
936
- "include": "#selector-innards"
937
- }
938
- ],
939
- "beginCaptures": {
940
- "1": {
941
- "name": "entity.other.attribute-name.pseudo-class.css"
942
- },
943
- "2": {
944
- "name": "punctuation.definition.entity.css"
945
- },
946
- "3": {
947
- "name": "punctuation.section.function.begin.bracket.round.css"
948
- }
949
- },
950
- "endCaptures": {
951
- "0": {
952
- "name": "punctuation.section.function.end.bracket.round.css"
953
- }
954
- }
955
- },
956
- {
957
- "begin": "(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()",
958
- "end": "\\)",
959
- "patterns": [
960
- {
961
- "name": "constant.numeric.css",
962
- "match": "(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?"
963
- },
964
- {
965
- "name": "support.constant.parity.css",
966
- "match": "(?i)even|odd"
967
- }
968
- ],
969
- "beginCaptures": {
970
- "1": {
971
- "name": "entity.other.attribute-name.pseudo-class.css"
972
- },
973
- "2": {
974
- "name": "punctuation.definition.entity.css"
975
- },
976
- "3": {
977
- "name": "punctuation.section.function.begin.bracket.round.css"
978
- }
979
- },
980
- "endCaptures": {
981
- "0": {
982
- "name": "punctuation.section.function.end.bracket.round.css"
983
- }
984
- }
985
- }
986
- ]
987
- },
988
- "functions": {
989
- "patterns": [
990
- {
991
- "name": "meta.function.calc.css",
992
- "begin": "(?i)(?\u003c![\\w-])(calc)(\\()",
993
- "end": "\\)",
994
- "patterns": [
995
- {
996
- "name": "keyword.operator.arithmetic.css",
997
- "match": "[*/]|(?\u003c=\\s|^)[-+](?=\\s|$)"
998
- },
999
- {
1000
- "include": "#property-values"
1001
- }
1002
- ],
1003
- "beginCaptures": {
1004
- "1": {
1005
- "name": "support.function.calc.css"
1006
- },
1007
- "2": {
1008
- "name": "punctuation.section.function.begin.bracket.round.css"
1009
- }
1010
- },
1011
- "endCaptures": {
1012
- "0": {
1013
- "name": "punctuation.section.function.end.bracket.round.css"
1014
- }
1015
- }
1016
- },
1017
- {
1018
- "name": "meta.function.color.css",
1019
- "begin": "(?i)(?\u003c![\\w-])(rgba?|hsla?)(\\()",
1020
- "end": "\\)",
1021
- "patterns": [
1022
- {
1023
- "include": "#property-values"
1024
- }
1025
- ],
1026
- "beginCaptures": {
1027
- "1": {
1028
- "name": "support.function.misc.css"
1029
- },
1030
- "2": {
1031
- "name": "punctuation.section.function.begin.bracket.round.css"
1032
- }
1033
- },
1034
- "endCaptures": {
1035
- "0": {
1036
- "name": "punctuation.section.function.end.bracket.round.css"
1037
- }
1038
- }
1039
- },
1040
- {
1041
- "name": "meta.function.gradient.css",
1042
- "begin": "(?xi) (?\u003c![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()",
1043
- "end": "\\)",
1044
- "patterns": [
1045
- {
1046
- "name": "keyword.operator.gradient.css",
1047
- "match": "(?i)(?\u003c![\\w-])(from|to|at)(?![\\w-])"
1048
- },
1049
- {
1050
- "include": "#property-values"
1051
- }
1052
- ],
1053
- "beginCaptures": {
1054
- "1": {
1055
- "name": "support.function.gradient.css"
1056
- },
1057
- "2": {
1058
- "name": "punctuation.section.function.begin.bracket.round.css"
1059
- }
1060
- },
1061
- "endCaptures": {
1062
- "0": {
1063
- "name": "punctuation.section.function.end.bracket.round.css"
1064
- }
1065
- }
1066
- },
1067
- {
1068
- "name": "meta.function.gradient.invalid.deprecated.gradient.css",
1069
- "begin": "(?i)(?\u003c![\\w-])(-webkit-gradient)(\\()",
1070
- "end": "\\)",
1071
- "patterns": [
1072
- {
1073
- "begin": "(?i)(?\u003c![\\w-])(from|to|color-stop)(\\()",
1074
- "end": "\\)",
1075
- "patterns": [
1076
- {
1077
- "include": "#property-values"
1078
- }
1079
- ],
1080
- "beginCaptures": {
1081
- "1": {
1082
- "name": "invalid.deprecated.function.css"
1083
- },
1084
- "2": {
1085
- "name": "punctuation.section.function.begin.bracket.round.css"
1086
- }
1087
- },
1088
- "endCaptures": {
1089
- "0": {
1090
- "name": "punctuation.section.function.end.bracket.round.css"
1091
- }
1092
- }
1093
- },
1094
- {
1095
- "include": "#property-values"
1096
- }
1097
- ],
1098
- "beginCaptures": {
1099
- "1": {
1100
- "name": "invalid.deprecated.gradient.function.css"
1101
- },
1102
- "2": {
1103
- "name": "punctuation.section.function.begin.bracket.round.css"
1104
- }
1105
- },
1106
- "endCaptures": {
1107
- "0": {
1108
- "name": "punctuation.section.function.end.bracket.round.css"
1109
- }
1110
- }
1111
- },
1112
- {
1113
- "name": "meta.function.misc.css",
1114
- "begin": "(?xi) (?\u003c![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
1115
- "end": "\\)",
1116
- "patterns": [
1117
- {
1118
- "name": "constant.numeric.other.density.css",
1119
- "match": "(?i)(?\u003c=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)"
1120
- },
1121
- {
1122
- "include": "#property-values"
1123
- },
1124
- {
1125
- "name": "variable.parameter.misc.css",
1126
- "match": "[^'\"),\\s]+"
1127
- }
1128
- ],
1129
- "beginCaptures": {
1130
- "1": {
1131
- "name": "support.function.misc.css"
1132
- },
1133
- "2": {
1134
- "name": "punctuation.section.function.begin.bracket.round.css"
1135
- }
1136
- },
1137
- "endCaptures": {
1138
- "0": {
1139
- "name": "punctuation.section.function.end.bracket.round.css"
1140
- }
1141
- }
1142
- },
1143
- {
1144
- "name": "meta.function.shape.css",
1145
- "begin": "(?i)(?\u003c![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
1146
- "end": "\\)",
1147
- "patterns": [
1148
- {
1149
- "name": "keyword.operator.shape.css",
1150
- "match": "(?i)(?\u003c=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)"
1151
- },
1152
- {
1153
- "include": "#property-values"
1154
- }
1155
- ],
1156
- "beginCaptures": {
1157
- "1": {
1158
- "name": "support.function.shape.css"
1159
- },
1160
- "2": {
1161
- "name": "punctuation.section.function.begin.bracket.round.css"
1162
- }
1163
- },
1164
- "endCaptures": {
1165
- "0": {
1166
- "name": "punctuation.section.function.end.bracket.round.css"
1167
- }
1168
- }
1169
- },
1170
- {
1171
- "name": "meta.function.timing-function.css",
1172
- "begin": "(?i)(?\u003c![\\w-])(cubic-bezier|steps)(\\()",
1173
- "end": "\\)",
1174
- "patterns": [
1175
- {
1176
- "name": "support.constant.step-direction.css",
1177
- "match": "(?i)(?\u003c![\\w-])(start|end)(?=\\s*\\)|$)"
1178
- },
1179
- {
1180
- "include": "#property-values"
1181
- }
1182
- ],
1183
- "beginCaptures": {
1184
- "1": {
1185
- "name": "support.function.timing-function.css"
1186
- },
1187
- "2": {
1188
- "name": "punctuation.section.function.begin.bracket.round.css"
1189
- }
1190
- },
1191
- "endCaptures": {
1192
- "0": {
1193
- "name": "punctuation.section.function.end.bracket.round.css"
1194
- }
1195
- }
1196
- },
1197
- {
1198
- "begin": "(?xi) (?\u003c![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
1199
- "end": "\\)",
1200
- "patterns": [
1201
- {
1202
- "include": "#property-values"
1203
- }
1204
- ],
1205
- "beginCaptures": {
1206
- "1": {
1207
- "name": "support.function.transform.css"
1208
- },
1209
- "2": {
1210
- "name": "punctuation.section.function.begin.bracket.round.css"
1211
- }
1212
- },
1213
- "endCaptures": {
1214
- "0": {
1215
- "name": "punctuation.section.function.end.bracket.round.css"
1216
- }
1217
- }
1218
- },
1219
- {
1220
- "include": "#url"
1221
- },
1222
- {
1223
- "name": "meta.function.variable.css",
1224
- "begin": "(?i)(?\u003c![\\w-])(var)(\\()",
1225
- "end": "\\)",
1226
- "patterns": [
1227
- {
1228
- "name": "variable.argument.css",
1229
- "match": "(?x)\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
1230
- },
1231
- {
1232
- "include": "#property-values"
1233
- }
1234
- ],
1235
- "beginCaptures": {
1236
- "1": {
1237
- "name": "support.function.misc.css"
1238
- },
1239
- "2": {
1240
- "name": "punctuation.section.function.begin.bracket.round.css"
1241
- }
1242
- },
1243
- "endCaptures": {
1244
- "0": {
1245
- "name": "punctuation.section.function.end.bracket.round.css"
1246
- }
1247
- }
1248
- }
1249
- ]
1250
- },
1251
- "media-feature-keywords": {
1252
- "name": "support.constant.property-value.css",
1253
- "match": "(?xi)\n(?\u003c=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n | hover\n)\n(?=\\s|\\)|$)"
1254
- },
1255
- "media-features": {
1256
- "match": "(?xi)\n(?\u003c=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n | hover\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[\u003e\u003c:=]|\\)|/\\*) # Terminates cleanly",
1257
- "captures": {
1258
- "1": {
1259
- "name": "support.type.property-name.media.css"
1260
- },
1261
- "2": {
1262
- "name": "support.type.property-name.media.css"
1263
- },
1264
- "3": {
1265
- "name": "support.type.vendored.property-name.media.css"
1266
- }
1267
- }
1268
- },
1269
- "media-query": {
1270
- "begin": "\\G",
1271
- "end": "(?=\\s*[{;])",
1272
- "patterns": [
1273
- {
1274
- "include": "#comment-block"
1275
- },
1276
- {
1277
- "include": "#escapes"
1278
- },
1279
- {
1280
- "include": "#media-types"
1281
- },
1282
- {
1283
- "name": "keyword.operator.logical.$1.media.css",
1284
- "match": "(?i)(?\u003c=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)"
1285
- },
1286
- {
1287
- "name": "keyword.operator.logical.and.media.css",
1288
- "match": "(?i)(?\u003c=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)"
1289
- },
1290
- {
1291
- "name": "invalid.illegal.comma.css",
1292
- "match": ",(?:(?:\\s*,)+|(?=\\s*[;){]))"
1293
- },
1294
- {
1295
- "include": "#commas"
1296
- },
1297
- {
1298
- "begin": "\\(",
1299
- "end": "\\)",
1300
- "patterns": [
1301
- {
1302
- "include": "#media-features"
1303
- },
1304
- {
1305
- "include": "#media-feature-keywords"
1306
- },
1307
- {
1308
- "name": "punctuation.separator.key-value.css",
1309
- "match": ":"
1310
- },
1311
- {
1312
- "name": "keyword.operator.comparison.css",
1313
- "match": "\u003e=|\u003c=|=|\u003c|\u003e"
1314
- },
1315
- {
1316
- "name": "meta.ratio.css",
1317
- "match": "(\\d+)\\s*(/)\\s*(\\d+)",
1318
- "captures": {
1319
- "1": {
1320
- "name": "constant.numeric.css"
1321
- },
1322
- "2": {
1323
- "name": "keyword.operator.arithmetic.css"
1324
- },
1325
- "3": {
1326
- "name": "constant.numeric.css"
1327
- }
1328
- }
1329
- },
1330
- {
1331
- "include": "#numeric-values"
1332
- },
1333
- {
1334
- "include": "#comment-block"
1335
- }
1336
- ],
1337
- "beginCaptures": {
1338
- "0": {
1339
- "name": "punctuation.definition.parameters.begin.bracket.round.css"
1340
- }
1341
- },
1342
- "endCaptures": {
1343
- "0": {
1344
- "name": "punctuation.definition.parameters.end.bracket.round.css"
1345
- }
1346
- }
1347
- }
1348
- ]
1349
- },
1350
- "media-query-list": {
1351
- "begin": "(?=\\s*[^{;])",
1352
- "end": "(?=\\s*[{;])",
1353
- "patterns": [
1354
- {
1355
- "include": "#media-query"
1356
- }
1357
- ]
1358
- },
1359
- "media-types": {
1360
- "match": "(?xi)\n(?\u003c=^|\\s|,|\\*/)\n(?:\n # Valid media types\n (all|print|screen|speech)\n |\n # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)",
1361
- "captures": {
1362
- "1": {
1363
- "name": "support.constant.media.css"
1364
- },
1365
- "2": {
1366
- "name": "invalid.deprecated.constant.media.css"
1367
- }
1368
- }
1369
- },
1370
- "numeric-values": {
1371
- "patterns": [
1372
- {
1373
- "name": "constant.other.color.rgb-value.hex.css",
1374
- "match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
1375
- "captures": {
1376
- "1": {
1377
- "name": "punctuation.definition.constant.css"
1378
- }
1379
- }
1380
- },
1381
- {
1382
- "name": "constant.numeric.css",
1383
- "match": "(?xi) (?\u003c![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?\u003c=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",
1384
- "captures": {
1385
- "1": {
1386
- "name": "keyword.other.unit.percentage.css"
1387
- },
1388
- "2": {
1389
- "name": "keyword.other.unit.${2:/downcase}.css"
1390
- }
1391
- }
1392
- }
1393
- ]
1394
- },
1395
- "property-keywords": {
1396
- "patterns": [
1397
- {
1398
- "name": "support.constant.property-value.css",
1399
- "match": "(?xi) (?\u003c![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x-large|x-small|xx-large|xx-small|zero|zoom-in|zoom-out)\n(?![\\w-])"
1400
- },
1401
- {
1402
- "name": "support.constant.property-value.list-style-type.css",
1403
- "match": "(?xi) (?\u003c![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])"
1404
- },
1405
- {
1406
- "name": "support.constant.vendored.property-value.css",
1407
- "match": "(?\u003c![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+"
1408
- },
1409
- {
1410
- "name": "support.constant.font-name.css",
1411
- "match": "(?\u003c![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])"
1412
- }
1413
- ]
1414
- },
1415
- "property-names": {
1416
- "patterns": [
1417
- {
1418
- "name": "support.type.property-name.css",
1419
- "match": "(?xi) (?\u003c![\\w-])\n(?:\n # Standard CSS\n additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction\n | animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state\n | animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode\n | background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]\n | background-repeat|background-size|block-size|border|border-block-end|border-block-end-color|border-block-end-style\n | border-block-end-width|border-block-start|border-block-start-color|border-block-start-style\n | border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n | border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset\n | border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start\n | border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color\n | border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style\n | border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius\n | border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break\n | box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|clip-path|color\n | column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width\n | column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display\n | empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float\n | font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-size|font-size-adjust\n | font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps\n | font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-weight\n | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap\n | grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas\n | grid-template-columns|grid-template-rows|height|hyphens|image-orientation|image-rendering|image-resolution\n | ime-mode|inline-size|isolation|justify-content|left|letter-spacing|line-break|line-height|list-style\n | list-style-image|list-style-position|list-style-type|margin|margin-block-end|margin-block-start|margin-bottom\n | margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|mask|mask-clip|mask-composite\n | mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height\n | max-inline-size|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode\n | negative|object-fit|object-position|offset-block-end|offset-block-start|offset-inline-end|offset-inline-start\n | opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow\n | overflow-wrap|overflow-[xy]|pad|padding|padding-block-end|padding-block-start|padding-bottom|padding-inline-end\n | padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside\n | perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range\n | resize|right|row-gap|ruby-align|ruby-merge|ruby-position|scroll-behavior|scroll-snap-coordinate\n | scroll-snap-destination|scroll-snap-type|shape-image-threshold|shape-margin|shape-outside|speak-as|src|suffix\n | symbols|system|tab-size|table-layout|text-align|text-align-last|text-combine-upright|text-decoration\n | text-decoration-color|text-decoration-line|text-decoration-style|text-emphasis|text-emphasis-color\n | text-emphasis-position|text-emphasis-style|text-indent|text-orientation|text-overflow|text-rendering\n | text-shadow|text-transform|text-underline-position|top|touch-action|transform|transform-box\n | transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property\n | transition-timing-function|unicode-bidi|unicode-range|user-zoom|vertical-align|visibility|white-space|widows\n | width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n # SVG attributes\n | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n # Not listed on MDN; presumably deprecated\n | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])"
1420
- },
1421
- {
1422
- "name": "support.type.vendored.property-name.css",
1423
- "match": "(?\u003c![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+"
1424
- }
1425
- ]
1426
- },
1427
- "property-values": {
1428
- "patterns": [
1429
- {
1430
- "include": "#commas"
1431
- },
1432
- {
1433
- "include": "#comment-block"
1434
- },
1435
- {
1436
- "include": "#escapes"
1437
- },
1438
- {
1439
- "include": "#functions"
1440
- },
1441
- {
1442
- "include": "#property-keywords"
1443
- },
1444
- {
1445
- "include": "#unicode-range"
1446
- },
1447
- {
1448
- "include": "#numeric-values"
1449
- },
1450
- {
1451
- "include": "#color-keywords"
1452
- },
1453
- {
1454
- "include": "#string"
1455
- },
1456
- {
1457
- "name": "keyword.other.important.css",
1458
- "match": "!\\s*important(?![\\w-])"
1459
- }
1460
- ]
1461
- },
1462
- "pseudo-classes": {
1463
- "name": "entity.other.attribute-name.pseudo-class.css",
1464
- "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-within|fullscreen|host|hover\n | in-range|indeterminate|invalid|left|link|optional|out-of-range\n | read-only|read-write|required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])",
1465
- "captures": {
1466
- "1": {
1467
- "name": "punctuation.definition.entity.css"
1468
- },
1469
- "2": {
1470
- "name": "invalid.illegal.colon.css"
1471
- }
1472
- }
1473
- },
1474
- "pseudo-elements": {
1475
- "name": "entity.other.attribute-name.pseudo-element.css",
1476
- "match": "(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])",
1477
- "captures": {
1478
- "1": {
1479
- "name": "punctuation.definition.entity.css"
1480
- },
1481
- "2": {
1482
- "name": "punctuation.definition.entity.css"
1483
- }
1484
- }
1485
- },
1486
- "rule-list": {
1487
- "name": "meta.property-list.css",
1488
- "begin": "{",
1489
- "end": "}",
1490
- "patterns": [
1491
- {
1492
- "include": "#rule-list-innards"
1493
- }
1494
- ],
1495
- "beginCaptures": {
1496
- "0": {
1497
- "name": "punctuation.section.property-list.begin.bracket.curly.css"
1498
- }
1499
- },
1500
- "endCaptures": {
1501
- "0": {
1502
- "name": "punctuation.section.property-list.end.bracket.curly.css"
1503
- }
1504
- }
1505
- },
1506
- "rule-list-innards": {
1507
- "patterns": [
1508
- {
1509
- "include": "#comment-block"
1510
- },
1511
- {
1512
- "include": "#escapes"
1513
- },
1514
- {
1515
- "include": "#font-features"
1516
- },
1517
- {
1518
- "name": "variable.css",
1519
- "match": "(?x) (?\u003c![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
1520
- },
1521
- {
1522
- "name": "meta.property-name.css",
1523
- "begin": "(?\u003c![-a-zA-Z])(?=[-a-zA-Z])",
1524
- "end": "$|(?![-a-zA-Z])",
1525
- "patterns": [
1526
- {
1527
- "include": "#property-names"
1528
- }
1529
- ]
1530
- },
1531
- {
1532
- "contentName": "meta.property-value.css",
1533
- "begin": "(:)\\s*",
1534
- "end": "\\s*(;)|\\s*(?=}|\\))",
1535
- "patterns": [
1536
- {
1537
- "include": "#comment-block"
1538
- },
1539
- {
1540
- "include": "#property-values"
1541
- }
1542
- ],
1543
- "beginCaptures": {
1544
- "1": {
1545
- "name": "punctuation.separator.key-value.css"
1546
- }
1547
- },
1548
- "endCaptures": {
1549
- "1": {
1550
- "name": "punctuation.terminator.rule.css"
1551
- }
1552
- }
1553
- },
1554
- {
1555
- "name": "punctuation.terminator.rule.css",
1556
- "match": ";"
1557
- }
1558
- ]
1559
- },
1560
- "selector": {
1561
- "name": "meta.selector.css",
1562
- "begin": "(?x)\n(?=\n (?:\\|)? # Possible anonymous namespace prefix\n (?:\n [-\\[:.*\\#a-zA-Z_] # Valid selector character\n |\n [^\\x00-\\x7F] # Which can include non-ASCII symbols\n |\n \\\\ # Or an escape sequence\n (?:[0-9a-fA-F]{1,6}|.)\n )\n)",
1563
- "end": "(?=\\s*[/@{)])",
1564
- "patterns": [
1565
- {
1566
- "include": "#selector-innards"
1567
- }
1568
- ]
1569
- },
1570
- "selector-innards": {
1571
- "patterns": [
1572
- {
1573
- "include": "#comment-block"
1574
- },
1575
- {
1576
- "include": "#commas"
1577
- },
1578
- {
1579
- "include": "#escapes"
1580
- },
1581
- {
1582
- "include": "#combinators"
1583
- },
1584
- {
1585
- "match": "(?x)\n(?:^|(?\u003c=[\\s,(};])) # Follows whitespace, comma, semicolon, or bracket\n(?!\n [-\\w*]+\n \\|\n (?!\n [-\\[:.*\\#a-zA-Z_] # Make sure there's a selector to match\n | [^\\x00-\\x7F]\n )\n)\n(\n (?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n |\n \\* # Universal namespace\n)?\n(\\|) # Namespace separator",
1586
- "captures": {
1587
- "1": {
1588
- "name": "entity.other.namespace-prefix.css"
1589
- },
1590
- "2": {
1591
- "name": "punctuation.separator.css"
1592
- }
1593
- }
1594
- },
1595
- {
1596
- "include": "#tag-names"
1597
- },
1598
- {
1599
- "name": "entity.name.tag.wildcard.css",
1600
- "match": "\\*"
1601
- },
1602
- {
1603
- "name": "invalid.illegal.bad-identifier.css",
1604
- "match": "(?x) (?\u003c![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n (?:\n # Starts with ASCII digits, with possible hyphen preceding it\n -?[0-9]\n |\n # Consists of a hyphen only\n - # Terminated by either:\n (?= $ # - End-of-line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Followed by another selector\n | /\\* # - Followed by a block comment\n )\n |\n # Name contains unescaped ASCII symbol\n (?: # Check for acceptable preceding characters\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Valid selector character\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n (?: # Invalid punctuation\n [!\"'%\u0026(*;\u003c?@^`|\\]}] # - NOTE: We exempt `)` from the list of checked\n | # symbols to avoid matching `:not(.invalid)`\n / (?!\\*) # - Avoid invalidating the start of a comment\n )+\n )\n # Mark remainder of selector invalid\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Otherwise valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n)",
1605
- "captures": {
1606
- "1": {
1607
- "name": "punctuation.definition.entity.css"
1608
- },
1609
- "2": {
1610
- "patterns": [
1611
- {
1612
- "include": "#escapes"
1613
- }
1614
- ]
1615
- }
1616
- }
1617
- },
1618
- {
1619
- "name": "entity.other.attribute-name.class.css",
1620
- "match": "(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)",
1621
- "captures": {
1622
- "1": {
1623
- "name": "punctuation.definition.entity.css"
1624
- },
1625
- "2": {
1626
- "patterns": [
1627
- {
1628
- "include": "#escapes"
1629
- }
1630
- ]
1631
- }
1632
- }
1633
- },
1634
- {
1635
- "name": "entity.other.attribute-name.id.css",
1636
- "match": "(?x)\n(\\#)\n(\n -?\n (?![0-9])\n (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{\u003e+~|]|/\\*)",
1637
- "captures": {
1638
- "1": {
1639
- "name": "punctuation.definition.entity.css"
1640
- },
1641
- "2": {
1642
- "patterns": [
1643
- {
1644
- "include": "#escapes"
1645
- }
1646
- ]
1647
- }
1648
- }
1649
- },
1650
- {
1651
- "name": "meta.attribute-selector.css",
1652
- "begin": "\\[",
1653
- "end": "\\]",
1654
- "patterns": [
1655
- {
1656
- "include": "#comment-block"
1657
- },
1658
- {
1659
- "include": "#string"
1660
- },
1661
- {
1662
- "match": "(?\u003c=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)",
1663
- "captures": {
1664
- "1": {
1665
- "name": "storage.modifier.ignore-case.css"
1666
- }
1667
- }
1668
- },
1669
- {
1670
- "match": "(?x)(?\u003c==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)",
1671
- "captures": {
1672
- "1": {
1673
- "name": "string.unquoted.attribute-value.css",
1674
- "patterns": [
1675
- {
1676
- "include": "#escapes"
1677
- }
1678
- ]
1679
- }
1680
- }
1681
- },
1682
- {
1683
- "include": "#escapes"
1684
- },
1685
- {
1686
- "name": "keyword.operator.pattern.css",
1687
- "match": "[~|^$*]?="
1688
- },
1689
- {
1690
- "name": "punctuation.separator.css",
1691
- "match": "\\|"
1692
- },
1693
- {
1694
- "match": "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\x00-\\x7F]\n )\n)",
1695
- "captures": {
1696
- "1": {
1697
- "name": "entity.other.namespace-prefix.css",
1698
- "patterns": [
1699
- {
1700
- "include": "#escapes"
1701
- }
1702
- ]
1703
- }
1704
- }
1705
- },
1706
- {
1707
- "match": "(?x)\n(-?(?!\\d)(?\u003e[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)",
1708
- "captures": {
1709
- "1": {
1710
- "name": "entity.other.attribute-name.css",
1711
- "patterns": [
1712
- {
1713
- "include": "#escapes"
1714
- }
1715
- ]
1716
- }
1717
- }
1718
- }
1719
- ],
1720
- "beginCaptures": {
1721
- "0": {
1722
- "name": "punctuation.definition.entity.begin.bracket.square.css"
1723
- }
1724
- },
1725
- "endCaptures": {
1726
- "0": {
1727
- "name": "punctuation.definition.entity.end.bracket.square.css"
1728
- }
1729
- }
1730
- },
1731
- {
1732
- "include": "#pseudo-classes"
1733
- },
1734
- {
1735
- "include": "#pseudo-elements"
1736
- },
1737
- {
1738
- "include": "#functional-pseudo-classes"
1739
- },
1740
- {
1741
- "name": "entity.name.tag.custom.css",
1742
- "match": "(?x) (?\u003c![@\\w-])\n(?= # Custom element names must:\n [a-z] # - start with a lowercase ASCII letter,\n \\w* - # - contain at least one dash\n)\n(?:\n (?![A-Z]) # No uppercase ASCII letters are allowed\n [\\w-] # Allow any other word character or dash\n)+\n(?![(\\w-])"
1743
- }
1744
- ]
1745
- },
1746
- "string": {
1747
- "patterns": [
1748
- {
1749
- "name": "string.quoted.double.css",
1750
- "begin": "\"",
1751
- "end": "\"|(?\u003c!\\\\)(?=$|\\n)",
1752
- "patterns": [
1753
- {
1754
- "name": "invalid.illegal.unclosed.string.css",
1755
- "begin": "(?:\\G|^)(?=(?:[^\\\\\"]|\\\\.)+$)",
1756
- "end": "$",
1757
- "patterns": [
1758
- {
1759
- "include": "#escapes"
1760
- }
1761
- ]
1762
- },
1763
- {
1764
- "include": "#escapes"
1765
- }
1766
- ],
1767
- "beginCaptures": {
1768
- "0": {
1769
- "name": "punctuation.definition.string.begin.css"
1770
- }
1771
- },
1772
- "endCaptures": {
1773
- "0": {
1774
- "name": "punctuation.definition.string.end.css"
1775
- }
1776
- }
1777
- },
1778
- {
1779
- "name": "string.quoted.single.css",
1780
- "begin": "'",
1781
- "end": "'|(?\u003c!\\\\)(?=$|\\n)",
1782
- "patterns": [
1783
- {
1784
- "name": "invalid.illegal.unclosed.string.css",
1785
- "begin": "(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)",
1786
- "end": "$",
1787
- "patterns": [
1788
- {
1789
- "include": "#escapes"
1790
- }
1791
- ]
1792
- },
1793
- {
1794
- "include": "#escapes"
1795
- }
1796
- ],
1797
- "beginCaptures": {
1798
- "0": {
1799
- "name": "punctuation.definition.string.begin.css"
1800
- }
1801
- },
1802
- "endCaptures": {
1803
- "0": {
1804
- "name": "punctuation.definition.string.end.css"
1805
- }
1806
- }
1807
- }
1808
- ]
1809
- },
1810
- "tag-names": {
1811
- "name": "entity.name.tag.css",
1812
- "match": "(?xi) (?\u003c![\\w:-])\n(?:\n # HTML\n a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n | track|tt|u|ul|var|video|wbr|xmp\n\n # SVG\n | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n # MathML\n | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~\u003e\\s,.\\#|){:\\[]|/\\*|$)"
1813
- },
1814
- "unicode-range": {
1815
- "match": "(?\u003c![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])",
1816
- "captures": {
1817
- "0": {
1818
- "name": "constant.other.unicode-range.css"
1819
- },
1820
- "1": {
1821
- "name": "punctuation.separator.dash.unicode-range.css"
1822
- }
1823
- }
1824
- },
1825
- "url": {
1826
- "name": "meta.function.url.css",
1827
- "begin": "(?i)(?\u003c![\\w@-])(url)(\\()",
1828
- "end": "\\)",
1829
- "patterns": [
1830
- {
1831
- "name": "variable.parameter.url.css",
1832
- "match": "[^'\")\\s]+"
1833
- },
1834
- {
1835
- "include": "#string"
1836
- },
1837
- {
1838
- "include": "#comment-block"
1839
- },
1840
- {
1841
- "include": "#escapes"
1842
- }
1843
- ],
1844
- "beginCaptures": {
1845
- "1": {
1846
- "name": "support.function.url.css"
1847
- },
1848
- "2": {
1849
- "name": "punctuation.section.function.begin.bracket.round.css"
1850
- }
1851
- },
1852
- "endCaptures": {
1853
- "0": {
1854
- "name": "punctuation.section.function.end.bracket.round.css"
1855
- }
1856
- }
1857
- }
1858
- }
1859
- }
1
+ {"name":"CSS","scopeName":"source.css","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#combinators"},{"include":"#selector"},{"include":"#at-rules"},{"include":"#rule-list"}],"repository":{"at-rules":{"patterns":[{"name":"meta.at-rule.charset.css","begin":"\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))","end":";|(?=$)","patterns":[{"match":"(?x) # Possible errors:\n\\G\n((?!@charset)@\\w+) # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+) # Preceding whitespace\n|\n(@charset\\S[^;]*) # No whitespace after @charset\n|\n(?\u003c=@charset) # Before quoted charset name\n(\\x20{2,}|\\t+) # More than one space used, or a tab\n|\n(?\u003c=@charset\\x20) # Beginning of charset name\n([^\";]+) # Not double-quoted\n|\n(\"[^\"]+$) # Unclosed quote\n|\n(?\u003c=\") # After charset name\n([^;]+) # Unexpected junk instead of semicolon","captures":{"1":{"name":"invalid.illegal.not-lowercase.charset.css"},"2":{"name":"invalid.illegal.leading-whitespace.charset.css"},"3":{"name":"invalid.illegal.no-whitespace.charset.css"},"4":{"name":"invalid.illegal.whitespace.charset.css"},"5":{"name":"invalid.illegal.not-double-quoted.charset.css"},"6":{"name":"invalid.illegal.unclosed-string.charset.css"},"7":{"name":"invalid.illegal.unexpected-characters.charset.css"}}},{"match":"((@)charset)(?=\\s)","captures":{"1":{"name":"keyword.control.at-rule.charset.css"},"2":{"name":"punctuation.definition.keyword.css"}}},{"name":"string.quoted.double.css","begin":"\"","end":"\"|$","patterns":[{"name":"invalid.illegal.unclosed.string.css","begin":"(?:\\G|^)(?=(?:[^\"])+$)","end":"$"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}}}],"endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}}},{"name":"meta.at-rule.import.css","begin":"(?i)((@)import)(?:\\s+|$|(?=['\"]|/\\*))","end":";","patterns":[{"begin":"\\G\\s*(?=/\\*)","end":"(?\u003c=\\*/)\\s*","patterns":[{"include":"#comment-block"}]},{"include":"#string"},{"include":"#url"},{"include":"#media-query-list"}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.import.css"},"2":{"name":"punctuation.definition.keyword.css"}},"endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}}},{"name":"meta.at-rule.font-face.css","begin":"(?i)((@)font-face)(?=\\s*|{|/\\*|$)","end":"(?!\\G)","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list"}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.font-face.css"},"2":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.page.css","begin":"(?i)(@)page(?=[\\s:{]|/\\*|$)","end":"(?=\\s*($|[:{;]))","patterns":[{"include":"#rule-list"}],"captures":{"0":{"name":"keyword.control.at-rule.page.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"begin":"(?i)(?=@media(\\s|\\(|/\\*|$))","end":"(?\u003c=})(?!\\G)","patterns":[{"name":"meta.at-rule.media.header.css","begin":"(?i)\\G(@)media","end":"(?=\\s*[{;])","patterns":[{"include":"#media-query-list"}],"beginCaptures":{"0":{"name":"keyword.control.at-rule.media.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.media.body.css","begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.media.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.media.end.bracket.curly.css"}}}]},{"begin":"(?i)(?=@counter-style([\\s'\"{;]|/\\*|$))","end":"(?\u003c=})(?!\\G)","patterns":[{"name":"meta.at-rule.counter-style.header.css","begin":"(?i)\\G(@)counter-style","end":"(?=\\s*{)","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"name":"variable.parameter.style-name.css","match":"(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*","captures":{"0":{"patterns":[{"include":"#escapes"}]}}}],"beginCaptures":{"0":{"name":"keyword.control.at-rule.counter-style.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.counter-style.body.css","begin":"{","end":"}","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#rule-list-innards"}],"beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}}}]},{"begin":"(?i)(?=@document([\\s'\"{;]|/\\*|$))","end":"(?\u003c=})(?!\\G)","patterns":[{"name":"meta.at-rule.document.header.css","begin":"(?i)\\G(@)document","end":"(?=\\s*[{;])","patterns":[{"name":"meta.function.document-rule.css","begin":"(?i)(?\u003c![\\w-])(url-prefix|domain|regexp)(\\()","end":"\\)","patterns":[{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"},{"name":"variable.parameter.document-rule.css","match":"[^'\")\\s]+"}],"beginCaptures":{"1":{"name":"support.function.document-rule.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"include":"#url"},{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"keyword.control.at-rule.document.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.document.body.css","begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.document.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.document.end.bracket.curly.css"}}}]},{"begin":"(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'\"{;]|/\\*|$))","end":"(?\u003c=})(?!\\G)","patterns":[{"name":"meta.at-rule.keyframes.header.css","begin":"(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes","end":"(?=\\s*{)","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"name":"variable.parameter.keyframe-list.css","match":"(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*","captures":{"0":{"patterns":[{"include":"#escapes"}]}}}],"beginCaptures":{"0":{"name":"keyword.control.at-rule.keyframes.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.keyframes.body.css","begin":"{","end":"}","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"match":"(?xi)\n(?\u003c![\\w-]) (from|to) (?![\\w-]) # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%) # Percentile value","captures":{"1":{"name":"entity.other.keyframe-offset.css"},"2":{"name":"entity.other.keyframe-offset.percentage.css"}}},{"include":"#rule-list"}],"beginCaptures":{"0":{"name":"punctuation.section.keyframes.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.keyframes.end.bracket.curly.css"}}}]},{"begin":"(?i)(?=@supports(\\s|\\(|/\\*|$))","end":"(?\u003c=})(?!\\G)|(?=;)","patterns":[{"name":"meta.at-rule.supports.header.css","begin":"(?i)\\G(@)supports","end":"(?=\\s*[{;])","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"},{"include":"#comment-block"},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"keyword.control.at-rule.supports.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.supports.body.css","begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.supports.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.supports.end.bracket.curly.css"}}}]},{"name":"meta.at-rule.viewport.css","begin":"(?i)((@)viewport)(?=[\\s'\"{;]|/\\*|$)","end":"(?=\\s*[@{;])","patterns":[{"include":"#comment-block"},{"include":"#escapes"}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.viewport.css"},"2":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.font-features.css","contentName":"variable.parameter.font-name.css","begin":"(?i)((@)font-feature-values)(?=[\\s'\"{;]|/\\*|$)\\s*","end":"(?=\\s*[@{;])","patterns":[{"include":"#comment-block"},{"include":"#escapes"}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.font-feature-values.css"},"2":{"name":"punctuation.definition.keyword.css"}}},{"include":"#font-features"},{"name":"meta.at-rule.namespace.css","begin":"(?i)((@)namespace)(?=[\\s'\";]|/\\*|$)","end":";|(?=[@{])","patterns":[{"include":"#url"},{"match":"(?xi)\n(?:\\G|^|(?\u003c=\\s))\n(?=\n (?\u003c=\\s|^) # Starts with whitespace\n (?:[-a-zA-Z_]|[^\\x00-\\x7F]) # Then a valid identifier character\n |\n \\s* # Possible adjoining whitespace\n /\\*(?:[^*]|\\*[^/])*\\*/ # Injected comment\n)\n(.*?) # Grouped to embed #comment-block\n(\n (?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n)","captures":{"1":{"patterns":[{"include":"#comment-block"}]},"2":{"name":"entity.name.function.namespace-prefix.css","patterns":[{"include":"#escapes"}]}}},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#string"}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.namespace.css"},"2":{"name":"punctuation.definition.keyword.css"}},"endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}}},{"begin":"(?i)(?=@[\\w-]+[^;]+;s*$)","end":"(?\u003c=;)(?!\\G)","patterns":[{"name":"meta.at-rule.header.css","begin":"(?i)\\G(@)[\\w-]+","end":";","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}},"endCaptures":{"0":{"name":"punctuation.terminator.rule.css"}}}]},{"begin":"(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))","end":"(?\u003c=})(?!\\G)","patterns":[{"name":"meta.at-rule.header.css","begin":"(?i)\\G(@)[\\w-]+","end":"(?=\\s*[{;])","beginCaptures":{"0":{"name":"keyword.control.at-rule.css"},"1":{"name":"punctuation.definition.keyword.css"}}},{"name":"meta.at-rule.body.css","begin":"{","end":"}","patterns":[{"include":"$self"}],"beginCaptures":{"0":{"name":"punctuation.section.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.end.bracket.curly.css"}}}]}]},"color-keywords":{"patterns":[{"name":"support.constant.color.w3c-standard-color-name.css","match":"(?i)(?\u003c![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])"},{"name":"support.constant.color.w3c-extended-color-name.css","match":"(?xi) (?\u003c![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])"},{"name":"support.constant.color.current.css","match":"(?i)(?\u003c![\\w-])currentColor(?![\\w-])"},{"name":"invalid.deprecated.color.system.css","match":"(?xi) (?\u003c![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])"}]},"combinators":{"patterns":[{"name":"invalid.deprecated.combinator.css","match":"/deep/|\u003e\u003e\u003e"},{"name":"keyword.operator.combinator.css","match":"\u003e\u003e|\u003e|\\+|~"}]},"commas":{"name":"punctuation.separator.list.comma.css","match":","},"comment-block":{"name":"comment.block.css","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.end.css"}}},"escapes":{"patterns":[{"name":"constant.character.escape.codepoint.css","match":"\\\\[0-9a-fA-F]{1,6}"},{"name":"constant.character.escape.newline.css","begin":"\\\\$\\s*","end":"^(?\u003c!\\G)"},{"name":"constant.character.escape.css","match":"\\\\."}]},"feature-query":{"name":"meta.feature-query.css","begin":"\\(","end":"\\)","patterns":[{"include":"#feature-query-operators"},{"include":"#feature-query"}],"beginCaptures":{"0":{"name":"punctuation.definition.condition.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.definition.condition.end.bracket.round.css"}}},"feature-query-operators":{"patterns":[{"name":"keyword.operator.logical.feature.$1.css","match":"(?i)(?\u003c=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)"},{"include":"#rule-list-innards"}]},"font-features":{"name":"meta.at-rule.${3:/downcase}.css","begin":"(?xi)\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\n(?=[\\s@'\"{;]|/\\*|$)","end":"(?\u003c=})","patterns":[{"name":"meta.property-list.font-feature.css","begin":"{","end":"}","patterns":[{"name":"variable.font-feature.css","match":"(?x)\n(?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*","captures":{"0":{"patterns":[{"include":"#escapes"}]}}},{"include":"#rule-list-innards"}],"beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}}}],"beginCaptures":{"1":{"name":"keyword.control.at-rule.${3:/downcase}.css"},"2":{"name":"punctuation.definition.keyword.css"}}},"functional-pseudo-classes":{"patterns":[{"begin":"(?i)((:)dir)(\\()","end":"\\)","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"name":"support.constant.text-direction.css","match":"(?i)(?\u003c![\\w-])(ltr|rtl)(?![\\w-])"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"begin":"(?i)((:)lang)(\\()","end":"\\)","patterns":[{"name":"support.constant.language-range.css","match":"(?\u003c=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])"},{"name":"string.quoted.double.css","begin":"\"","end":"\"","patterns":[{"include":"#escapes"},{"name":"support.constant.language-range.css","match":"(?\u003c=[\"\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\"\\s])"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}}},{"name":"string.quoted.single.css","begin":"'","end":"'","patterns":[{"include":"#escapes"},{"name":"support.constant.language-range.css","match":"(?\u003c=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}}},{"include":"#commas"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"begin":"(?i)((:)(?:not|has|matches))(\\()","end":"\\)","patterns":[{"include":"#selector-innards"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"begin":"(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()","end":"\\)","patterns":[{"name":"constant.numeric.css","match":"(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?"},{"name":"support.constant.parity.css","match":"(?i)even|odd"}],"beginCaptures":{"1":{"name":"entity.other.attribute-name.pseudo-class.css"},"2":{"name":"punctuation.definition.entity.css"},"3":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}}]},"functions":{"patterns":[{"name":"meta.function.calc.css","begin":"(?i)(?\u003c![\\w-])(calc)(\\()","end":"\\)","patterns":[{"name":"keyword.operator.arithmetic.css","match":"[*/]|(?\u003c=\\s|^)[-+](?=\\s|$)"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.calc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.color.css","begin":"(?i)(?\u003c![\\w-])(rgba?|hsla?)(\\()","end":"\\)","patterns":[{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.gradient.css","begin":"(?xi) (?\u003c![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()","end":"\\)","patterns":[{"name":"keyword.operator.gradient.css","match":"(?i)(?\u003c![\\w-])(from|to|at)(?![\\w-])"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.gradient.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.gradient.invalid.deprecated.gradient.css","begin":"(?i)(?\u003c![\\w-])(-webkit-gradient)(\\()","end":"\\)","patterns":[{"begin":"(?i)(?\u003c![\\w-])(from|to|color-stop)(\\()","end":"\\)","patterns":[{"include":"#property-values"}],"beginCaptures":{"1":{"name":"invalid.deprecated.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"invalid.deprecated.gradient.function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.misc.css","begin":"(?xi) (?\u003c![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()","end":"\\)","patterns":[{"name":"constant.numeric.other.density.css","match":"(?i)(?\u003c=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)"},{"include":"#property-values"},{"name":"variable.parameter.misc.css","match":"[^'\"),\\s]+"}],"beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.shape.css","begin":"(?i)(?\u003c![\\w-])(circle|ellipse|inset|polygon|rect)(\\()","end":"\\)","patterns":[{"name":"keyword.operator.shape.css","match":"(?i)(?\u003c=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.shape.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"name":"meta.function.timing-function.css","begin":"(?i)(?\u003c![\\w-])(cubic-bezier|steps)(\\()","end":"\\)","patterns":[{"name":"support.constant.step-direction.css","match":"(?i)(?\u003c![\\w-])(start|end)(?=\\s*\\)|$)"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.timing-function.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"begin":"(?xi) (?\u003c![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()","end":"\\)","patterns":[{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.transform.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}},{"include":"#url"},{"name":"meta.function.variable.css","begin":"(?i)(?\u003c![\\w-])(var)(\\()","end":"\\)","patterns":[{"name":"variable.argument.css","match":"(?x)\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"support.function.misc.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}}]},"media-feature-keywords":{"name":"support.constant.property-value.css","match":"(?xi)\n(?\u003c=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n | hover\n)\n(?=\\s|\\)|$)"},"media-features":{"match":"(?xi)\n(?\u003c=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n | hover\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[\u003e\u003c:=]|\\)|/\\*) # Terminates cleanly","captures":{"1":{"name":"support.type.property-name.media.css"},"2":{"name":"support.type.property-name.media.css"},"3":{"name":"support.type.vendored.property-name.media.css"}}},"media-query":{"begin":"\\G","end":"(?=\\s*[{;])","patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#media-types"},{"name":"keyword.operator.logical.$1.media.css","match":"(?i)(?\u003c=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)"},{"name":"keyword.operator.logical.and.media.css","match":"(?i)(?\u003c=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)"},{"name":"invalid.illegal.comma.css","match":",(?:(?:\\s*,)+|(?=\\s*[;){]))"},{"include":"#commas"},{"begin":"\\(","end":"\\)","patterns":[{"include":"#media-features"},{"include":"#media-feature-keywords"},{"name":"punctuation.separator.key-value.css","match":":"},{"name":"keyword.operator.comparison.css","match":"\u003e=|\u003c=|=|\u003c|\u003e"},{"name":"meta.ratio.css","match":"(\\d+)\\s*(/)\\s*(\\d+)","captures":{"1":{"name":"constant.numeric.css"},"2":{"name":"keyword.operator.arithmetic.css"},"3":{"name":"constant.numeric.css"}}},{"include":"#numeric-values"},{"include":"#comment-block"}],"beginCaptures":{"0":{"name":"punctuation.definition.parameters.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.definition.parameters.end.bracket.round.css"}}}]},"media-query-list":{"begin":"(?=\\s*[^{;])","end":"(?=\\s*[{;])","patterns":[{"include":"#media-query"}]},"media-types":{"match":"(?xi)\n(?\u003c=^|\\s|,|\\*/)\n(?:\n # Valid media types\n (all|print|screen|speech)\n |\n # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)","captures":{"1":{"name":"support.constant.media.css"},"2":{"name":"invalid.deprecated.constant.media.css"}}},"numeric-values":{"patterns":[{"name":"constant.other.color.rgb-value.hex.css","match":"(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b","captures":{"1":{"name":"punctuation.definition.constant.css"}}},{"name":"constant.numeric.css","match":"(?xi) (?\u003c![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?\u003c=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars","captures":{"1":{"name":"keyword.other.unit.percentage.css"},"2":{"name":"keyword.other.unit.${2:/downcase}.css"}}}]},"property-keywords":{"patterns":[{"name":"support.constant.property-value.css","match":"(?xi) (?\u003c![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x-large|x-small|xx-large|xx-small|zero|zoom-in|zoom-out)\n(?![\\w-])"},{"name":"support.constant.property-value.list-style-type.css","match":"(?xi) (?\u003c![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])"},{"name":"support.constant.vendored.property-value.css","match":"(?\u003c![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+"},{"name":"support.constant.font-name.css","match":"(?\u003c![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])"}]},"property-names":{"patterns":[{"name":"support.type.property-name.css","match":"(?xi) (?\u003c![\\w-])\n(?:\n # Standard CSS\n additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction\n | animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state\n | animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode\n | background-clip|background-color|background-image|background-origin|background-position|background-position-[xy]\n | background-repeat|background-size|block-size|border|border-block-end|border-block-end-color|border-block-end-style\n | border-block-end-width|border-block-start|border-block-start-color|border-block-start-style\n | border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n | border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset\n | border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start\n | border-inline-start-color|border-inline-start-style|border-inline-start-width|border-left|border-left-color\n | border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style\n | border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius\n | border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-decoration-break\n | box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|clip-path|color\n | column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width\n | column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display\n | empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float\n | font|font-display|font-family|font-feature-settings|font-kerning|font-language-override|font-size|font-size-adjust\n | font-stretch|font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps\n | font-variant-east-asian|font-variant-ligatures|font-variant-numeric|font-variant-position|font-weight\n | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap\n | grid-column-start|grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas\n | grid-template-columns|grid-template-rows|height|hyphens|image-orientation|image-rendering|image-resolution\n | ime-mode|inline-size|isolation|justify-content|left|letter-spacing|line-break|line-height|list-style\n | list-style-image|list-style-position|list-style-type|margin|margin-block-end|margin-block-start|margin-bottom\n | margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|mask|mask-clip|mask-composite\n | mask-image|mask-mode|mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height\n | max-inline-size|max-width|max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode\n | negative|object-fit|object-position|offset-block-end|offset-block-start|offset-inline-end|offset-inline-start\n | opacity|order|orientation|orphans|outline|outline-color|outline-offset|outline-style|outline-width|overflow\n | overflow-wrap|overflow-[xy]|pad|padding|padding-block-end|padding-block-start|padding-bottom|padding-inline-end\n | padding-inline-start|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside\n | perspective|perspective-origin|place-content|place-items|place-self|pointer-events|position|prefix|quotes|range\n | resize|right|row-gap|ruby-align|ruby-merge|ruby-position|scroll-behavior|scroll-snap-coordinate\n | scroll-snap-destination|scroll-snap-type|shape-image-threshold|shape-margin|shape-outside|speak-as|src|suffix\n | symbols|system|tab-size|table-layout|text-align|text-align-last|text-combine-upright|text-decoration\n | text-decoration-color|text-decoration-line|text-decoration-style|text-emphasis|text-emphasis-color\n | text-emphasis-position|text-emphasis-style|text-indent|text-orientation|text-overflow|text-rendering\n | text-shadow|text-transform|text-underline-position|top|touch-action|transform|transform-box\n | transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property\n | transition-timing-function|unicode-bidi|unicode-range|user-zoom|vertical-align|visibility|white-space|widows\n | width|will-change|word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n # SVG attributes\n | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n # Not listed on MDN; presumably deprecated\n | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])"},{"name":"support.type.vendored.property-name.css","match":"(?\u003c![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+"}]},"property-values":{"patterns":[{"include":"#commas"},{"include":"#comment-block"},{"include":"#escapes"},{"include":"#functions"},{"include":"#property-keywords"},{"include":"#unicode-range"},{"include":"#numeric-values"},{"include":"#color-keywords"},{"include":"#string"},{"name":"keyword.other.important.css","match":"!\\s*important(?![\\w-])"}]},"pseudo-classes":{"name":"entity.other.attribute-name.pseudo-class.css","match":"(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-within|fullscreen|host|hover\n | in-range|indeterminate|invalid|left|link|optional|out-of-range\n | read-only|read-write|required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])","captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"invalid.illegal.colon.css"}}},"pseudo-elements":{"name":"entity.other.attribute-name.pseudo-element.css","match":"(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])","captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"name":"punctuation.definition.entity.css"}}},"rule-list":{"name":"meta.property-list.css","begin":"{","end":"}","patterns":[{"include":"#rule-list-innards"}],"beginCaptures":{"0":{"name":"punctuation.section.property-list.begin.bracket.curly.css"}},"endCaptures":{"0":{"name":"punctuation.section.property-list.end.bracket.curly.css"}}},"rule-list-innards":{"patterns":[{"include":"#comment-block"},{"include":"#escapes"},{"include":"#font-features"},{"name":"variable.css","match":"(?x) (?\u003c![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"},{"name":"meta.property-name.css","begin":"(?\u003c![-a-zA-Z])(?=[-a-zA-Z])","end":"$|(?![-a-zA-Z])","patterns":[{"include":"#property-names"}]},{"contentName":"meta.property-value.css","begin":"(:)\\s*","end":"\\s*(;)|\\s*(?=}|\\))","patterns":[{"include":"#comment-block"},{"include":"#property-values"}],"beginCaptures":{"1":{"name":"punctuation.separator.key-value.css"}},"endCaptures":{"1":{"name":"punctuation.terminator.rule.css"}}},{"name":"punctuation.terminator.rule.css","match":";"}]},"selector":{"name":"meta.selector.css","begin":"(?x)\n(?=\n (?:\\|)? # Possible anonymous namespace prefix\n (?:\n [-\\[:.*\\#a-zA-Z_] # Valid selector character\n |\n [^\\x00-\\x7F] # Which can include non-ASCII symbols\n |\n \\\\ # Or an escape sequence\n (?:[0-9a-fA-F]{1,6}|.)\n )\n)","end":"(?=\\s*[/@{)])","patterns":[{"include":"#selector-innards"}]},"selector-innards":{"patterns":[{"include":"#comment-block"},{"include":"#commas"},{"include":"#escapes"},{"include":"#combinators"},{"match":"(?x)\n(?:^|(?\u003c=[\\s,(};])) # Follows whitespace, comma, semicolon, or bracket\n(?!\n [-\\w*]+\n \\|\n (?!\n [-\\[:.*\\#a-zA-Z_] # Make sure there's a selector to match\n | [^\\x00-\\x7F]\n )\n)\n(\n (?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n |\n \\* # Universal namespace\n)?\n(\\|) # Namespace separator","captures":{"1":{"name":"entity.other.namespace-prefix.css"},"2":{"name":"punctuation.separator.css"}}},{"include":"#tag-names"},{"name":"entity.name.tag.wildcard.css","match":"\\*"},{"name":"invalid.illegal.bad-identifier.css","match":"(?x) (?\u003c![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n (?:\n # Starts with ASCII digits, with possible hyphen preceding it\n -?[0-9]\n |\n # Consists of a hyphen only\n - # Terminated by either:\n (?= $ # - End-of-line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Followed by another selector\n | /\\* # - Followed by a block comment\n )\n |\n # Name contains unescaped ASCII symbol\n (?: # Check for acceptable preceding characters\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Valid selector character\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n (?: # Invalid punctuation\n [!\"'%\u0026(*;\u003c?@^`|\\]}] # - NOTE: We exempt `)` from the list of checked\n | # symbols to avoid matching `:not(.invalid)`\n / (?!\\*) # - Avoid invalidating the start of a comment\n )+\n )\n # Mark remainder of selector invalid\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Otherwise valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n)","captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}}},{"name":"entity.other.attribute-name.class.css","match":"(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{\u003e+~|] # - Another selector\n | /\\* # - A block comment\n)","captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}}},{"name":"entity.other.attribute-name.id.css","match":"(?x)\n(\\#)\n(\n -?\n (?![0-9])\n (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{\u003e+~|]|/\\*)","captures":{"1":{"name":"punctuation.definition.entity.css"},"2":{"patterns":[{"include":"#escapes"}]}}},{"name":"meta.attribute-selector.css","begin":"\\[","end":"\\]","patterns":[{"include":"#comment-block"},{"include":"#string"},{"match":"(?\u003c=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)","captures":{"1":{"name":"storage.modifier.ignore-case.css"}}},{"match":"(?x)(?\u003c==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)","captures":{"1":{"name":"string.unquoted.attribute-value.css","patterns":[{"include":"#escapes"}]}}},{"include":"#escapes"},{"name":"keyword.operator.pattern.css","match":"[~|^$*]?="},{"name":"punctuation.separator.css","match":"\\|"},{"match":"(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\x00-\\x7F]\n )\n)","captures":{"1":{"name":"entity.other.namespace-prefix.css","patterns":[{"include":"#escapes"}]}}},{"match":"(?x)\n(-?(?!\\d)(?\u003e[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)","captures":{"1":{"name":"entity.other.attribute-name.css","patterns":[{"include":"#escapes"}]}}}],"beginCaptures":{"0":{"name":"punctuation.definition.entity.begin.bracket.square.css"}},"endCaptures":{"0":{"name":"punctuation.definition.entity.end.bracket.square.css"}}},{"include":"#pseudo-classes"},{"include":"#pseudo-elements"},{"include":"#functional-pseudo-classes"},{"name":"entity.name.tag.custom.css","match":"(?x) (?\u003c![@\\w-])\n(?= # Custom element names must:\n [a-z] # - start with a lowercase ASCII letter,\n \\w* - # - contain at least one dash\n)\n(?:\n (?![A-Z]) # No uppercase ASCII letters are allowed\n [\\w-] # Allow any other word character or dash\n)+\n(?![(\\w-])"}]},"string":{"patterns":[{"name":"string.quoted.double.css","begin":"\"","end":"\"|(?\u003c!\\\\)(?=$|\\n)","patterns":[{"name":"invalid.illegal.unclosed.string.css","begin":"(?:\\G|^)(?=(?:[^\\\\\"]|\\\\.)+$)","end":"$","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}}},{"name":"string.quoted.single.css","begin":"'","end":"'|(?\u003c!\\\\)(?=$|\\n)","patterns":[{"name":"invalid.illegal.unclosed.string.css","begin":"(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)","end":"$","patterns":[{"include":"#escapes"}]},{"include":"#escapes"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.css"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.css"}}}]},"tag-names":{"name":"entity.name.tag.css","match":"(?xi) (?\u003c![\\w:-])\n(?:\n # HTML\n a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n | track|tt|u|ul|var|video|wbr|xmp\n\n # SVG\n | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n # MathML\n | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~\u003e\\s,.\\#|){:\\[]|/\\*|$)"},"unicode-range":{"match":"(?\u003c![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])","captures":{"0":{"name":"constant.other.unicode-range.css"},"1":{"name":"punctuation.separator.dash.unicode-range.css"}}},"url":{"name":"meta.function.url.css","begin":"(?i)(?\u003c![\\w@-])(url)(\\()","end":"\\)","patterns":[{"name":"variable.parameter.url.css","match":"[^'\")\\s]+"},{"include":"#string"},{"include":"#comment-block"},{"include":"#escapes"}],"beginCaptures":{"1":{"name":"support.function.url.css"},"2":{"name":"punctuation.section.function.begin.bracket.round.css"}},"endCaptures":{"0":{"name":"punctuation.section.function.end.bracket.round.css"}}}}}