1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3
4 This file is part of GtkSourceView
5
6 Author: Scott Martin <scott@coffeeblack.org>
7 Copyright (C) 2004 Scott Martin <scott@coffeeblack.org>
8 Copyright (C) 2010 Patryk Zawadzki <patrys@pld-linux.org>
9 Copyright (C) 2016 Tobias Schönberg <tobias47n9e@gmail.com>
10 Copyright (C) 2018 Jeffery To <jeffery.to@gmail.com>
11
12 GtkSourceView is free software; you can redistribute it and/or
13 modify it under the terms of the GNU Lesser General Public
14 License as published by the Free Software Foundation; either
15 version 2.1 of the License, or (at your option) any later version.
16
17 GtkSourceView is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
20 Lesser General Public License for more details.
21
22 You should have received a copy of the GNU Lesser General Public License
23 along with this library; if not, see <http://www.gnu.org/licenses/>.
24
25-->
26<language id="css" name="CSS" version="2.0" _section="Other">
27  <metadata>
28    <property name="mimetypes">text/css</property>
29    <property name="globs">*.css;*.CSSL</property>
30    <property name="block-comment-start">/*</property>
31    <property name="block-comment-end">*/</property>
32  </metadata>
33
34  <styles>
35
36    <!-- global -->
37    <style id="error"                       name="Error"                       map-to="def:error"/>
38    <style id="vendor-specific"             name="Vendor Specific"             map-to="def:warning"/>
39    <style id="keyword"                     name="Keyword"                     map-to="def:constant"/>
40    <style id="namespace"                   name="Namespace"                   map-to="def:keyword"/>
41    <style id="symbol"                      name="Symbol"/>
42    <style id="delimiter"                   name="Delimiter"/>
43    <style id="block-delimiter"             name="Block Delimiter"             map-to="css:delimiter"/>
44    <style id="test-delimiter"              name="Test Delimiter"              map-to="css:delimiter"/>
45
46    <!-- data types -->
47    <style id="name"                        name="Name"/>
48    <style id="escape"                      name="Escape Sequence"             map-to="def:special-char"/>
49    <style id="string"                      name="String"                      map-to="def:string"/>
50    <style id="color"                       name="Color"                       map-to="def:base-n-integer"/>
51    <style id="number"                      name="Number"                      map-to="def:number"/>
52    <style id="integer"                     name="Integer"                     map-to="def:decimal"/>
53    <style id="dimension"                   name="Dimension"                   map-to="def:floating-point"/>
54    <style id="expression"                  name="Expression"                  map-to="def:complex"/>
55    <style id="unicode-range"               name="Unicode Range"/>
56
57    <!-- functions -->
58    <style id="function"                    name="Function"                    map-to="def:function"/>
59
60    <!-- style properties -->
61    <style id="property-name"               name="Property Name"               map-to="def:keyword"/>
62
63    <!-- modifiers -->
64    <style id="modifier"                    name="Modifier"                    map-to="def:keyword"/>
65
66    <!-- at-rules -->
67    <style id="at-rule"                     name="At-rule"                     map-to="def:preprocessor"/>
68    <style id="at-rule-operator"            name="At-rule Operator"            map-to="css:at-rule"/>
69    <style id="at-rule-inner-selector"      name="At-rule Inner Selector"      map-to="def:identifier"/>
70
71    <!-- media queries -->
72    <style id="media-query-operator"        name="Media Query Operator"        map-to="css:at-rule-operator"/>
73    <style id="media-type"                  name="Media Type"                  map-to="css:property-name"/>
74    <style id="media-feature"               name="Media Feature"               map-to="css:property-name"/>
75    <style id="media-feature-value"         name="Media Feature Value"         map-to="css:keyword"/>
76
77    <!-- selectors -->
78    <style id="selector-symbol"             name="Selector Symbol"             map-to="css:symbol"/>
79    <style id="namespace-qualifier"         name="Namespace Qualifier"         map-to="css:selector-symbol"/>
80    <style id="id-selector"                 name="ID Selector"                 map-to="def:statement"/>
81    <style id="class-selector"              name="Class Selector"              map-to="def:identifier"/>
82    <style id="type-selector"               name="Type Selector"               map-to="def:type"/>
83    <style id="universal-selector"          name="Universal Selector"          map-to="css:selector-symbol"/>
84    <style id="attribute-selector"          name="Attribute Selector"          map-to="css:selector-symbol"/>
85    <style id="attribute-selector-operator" name="Attribute Selector Operator" map-to="css:selector-symbol"/>
86    <style id="attribute-selector-name"     name="Attribute Selector Name"     map-to="def:type"/>
87    <style id="combinator"                  name="Combinator"                  map-to="css:selector-symbol"/>
88    <style id="pseudo-element"              name="Pseudo-element"              map-to="def:function"/>
89    <style id="pseudo-class"                name="Pseudo-class"                map-to="def:function"/>
90
91  </styles>
92
93  <default-regex-options case-sensitive="false"/>
94
95  <keyword-char-class>[a-z0-9_-]</keyword-char-class>
96
97  <definitions>
98
99    <!-- global -->
100
101    <!-- https://drafts.csswg.org/css-syntax/#escaping -->
102    <define-regex id="escape" extended="true">
103      (?:
104        \\                   # backslash
105        (?:
106          [^\n\r\f0-9a-f] |  # not newline or hex digit; or
107          [0-9a-f]{1,6} \s?  # 1-6 hex digits, trailing whitespace (not necessary in some cases)
108        )
109      )
110    </define-regex>
111
112    <!-- https://drafts.csswg.org/css-syntax/#non-ascii-code-point -->
113    <define-regex id="non-ascii">[\x{80}-\x{10ffff}]</define-regex>
114
115    <!--
116    a combination of name-start code point and escape
117    https://drafts.csswg.org/css-syntax/#name-start-code-point
118    https://www.w3.org/TR/selectors-3/#lex
119    -->
120    <define-regex id="identifier-start-char" extended="true">
121      (?:
122        [a-z_] |
123        \%{non-ascii} |
124        \%{escape}
125      )
126    </define-regex>
127
128    <!--
129    a combination of name code point and escape
130    https://drafts.csswg.org/css-syntax/#name-code-point
131    https://www.w3.org/TR/selectors-3/#lex
132    -->
133    <define-regex id="identifier-chars" extended="true">
134      (?&gt;
135        (?:
136          [a-z0-9_-]+ |
137          \%{non-ascii}+ |
138          \%{escape}+
139        )+
140      )
141    </define-regex>
142
143    <!-- for lookbehinds (and lookaheads) -->
144    <define-regex id="single-identifier-char" extended="true">
145      (?:
146        [a-z0-9_-] |
147        \%{non-ascii}
148      )
149    </define-regex>
150
151    <!-- https://drafts.csswg.org/css-syntax/#ident-token-diagram -->
152    <define-regex id="identifier" extended="true">
153      (?:
154        (?:
155          -- |
156          -? \%{identifier-start-char}
157        )
158        \%{identifier-chars}?
159      )
160    </define-regex>
161
162    <!--
163    https://www.w3.org/TR/CSS21/syndata.html#vendor-keywords
164    https://en.wikipedia.org/wiki/CSS_hack#List_of_prefixes
165    -->
166    <define-regex id="vendor-specific-prefix" extended="true">
167      (?:
168        (?:
169          [_-] \%{identifier-start-char}+ |
170          mso |
171          prince
172        )
173        -
174      )
175    </define-regex>
176
177    <define-regex id="vendor-specific-identifier" extended="true">
178      (?:
179        (?&lt;! \%{single-identifier-char} )
180        \%{vendor-specific-prefix} \%{identifier-chars}
181      )
182    </define-regex>
183
184    <define-regex id="declaration-value-end">(?=[!;}])</define-regex>
185
186    <define-regex id="test-value-end">(?=\))</define-regex>
187
188    <context id="comment">
189      <include>
190        <context ref="def:c-like-comment-multiline"/>
191        <context ref="def:c-like-close-comment-outside-comment"/>
192      </include>
193    </context>
194
195    <context id="slash" style-ref="symbol">
196      <match>/</match>
197    </context>
198
199    <context id="comma" style-ref="delimiter">
200      <match>,</match>
201    </context>
202
203    <context id="colon" style-ref="delimiter">
204      <match>:</match>
205    </context>
206
207    <context id="semicolon" style-ref="delimiter">
208      <match>;</match>
209    </context>
210
211
212    <!-- data types -->
213
214    <!-- custom identifier -->
215    <context id="name" style-ref="name">
216      <match>\%{identifier}</match>
217    </context>
218
219    <context id="vendor-specific-name" style-ref="vendor-specific">
220      <match>\%{vendor-specific-identifier}</match>
221    </context>
222
223    <context id="escape" style-ref="escape">
224      <match>\%{escape}</match>
225    </context>
226
227    <context id="string-content">
228      <include>
229        <context ref="escape"/>
230        <context ref="def:line-continue"/>
231      </include>
232    </context>
233
234    <context id="double-quoted-string" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
235      <start>"</start>
236      <end>"</end>
237      <include>
238        <context ref="string-content"/>
239      </include>
240    </context>
241
242    <context id="single-quoted-string" style-ref="string" end-at-line-end="true" class="string" class-disabled="no-spell-check">
243      <start>'</start>
244      <end>'</end>
245      <include>
246        <context ref="string-content"/>
247      </include>
248    </context>
249
250    <context id="string">
251      <include>
252        <context ref="double-quoted-string"/>
253        <context ref="single-quoted-string"/>
254      </include>
255    </context>
256
257    <context id="hexadecimal-color" style-ref="color">
258      <match>#([a-f0-9]{8}|[a-f0-9]{6}|[a-f0-9]{4}|[a-f0-9]{3})\%]</match>
259    </context>
260
261    <context id="css3-named-color" style-ref="color">
262      <keyword>aliceblue</keyword>
263      <keyword>antiquewhite</keyword>
264      <keyword>aquamarine</keyword>
265      <keyword>azure</keyword>
266      <keyword>beige</keyword>
267      <keyword>bisque</keyword>
268      <keyword>blanchedalmond</keyword>
269      <keyword>blueviolet</keyword>
270      <keyword>brown</keyword>
271      <keyword>burlywood</keyword>
272      <keyword>cadetblue</keyword>
273      <keyword>chartreuse</keyword>
274      <keyword>chocolate</keyword>
275      <keyword>coral</keyword>
276      <keyword>cornflowerblue</keyword>
277      <keyword>cornsilk</keyword>
278      <keyword>crimson</keyword>
279      <keyword>cyan</keyword>
280      <keyword>darkblue</keyword>
281      <keyword>darkcyan</keyword>
282      <keyword>darkgoldenrod</keyword>
283      <keyword>darkgray</keyword>
284      <keyword>darkgreen</keyword>
285      <keyword>darkgrey</keyword>
286      <keyword>darkkhaki</keyword>
287      <keyword>darkmagenta</keyword>
288      <keyword>darkolivegreen</keyword>
289      <keyword>darkorange</keyword>
290      <keyword>darkorchid</keyword>
291      <keyword>darkred</keyword>
292      <keyword>darksalmon</keyword>
293      <keyword>darkseagreen</keyword>
294      <keyword>darkslateblue</keyword>
295      <keyword>darkslategray</keyword>
296      <keyword>darkslategrey</keyword>
297      <keyword>darkturquoise</keyword>
298      <keyword>darkviolet</keyword>
299      <keyword>deeppink</keyword>
300      <keyword>deepskyblue</keyword>
301      <keyword>dimgray</keyword>
302      <keyword>dimgrey</keyword>
303      <keyword>dodgerblue</keyword>
304      <keyword>firebrick</keyword>
305      <keyword>floralwhite</keyword>
306      <keyword>forestgreen</keyword>
307      <keyword>gainsboro</keyword>
308      <keyword>ghostwhite</keyword>
309      <keyword>goldenrod</keyword>
310      <keyword>gold</keyword>
311      <keyword>greenyellow</keyword>
312      <keyword>grey</keyword>
313      <keyword>honeydew</keyword>
314      <keyword>hotpink</keyword>
315      <keyword>indianred</keyword>
316      <keyword>indigo</keyword>
317      <keyword>ivory</keyword>
318      <keyword>khaki</keyword>
319      <keyword>lavenderblush</keyword>
320      <keyword>lavender</keyword>
321      <keyword>lawngreen</keyword>
322      <keyword>lemonchiffon</keyword>
323      <keyword>lightblue</keyword>
324      <keyword>lightcoral</keyword>
325      <keyword>lightcyan</keyword>
326      <keyword>lightgoldenrodyellow</keyword>
327      <keyword>lightgray</keyword>
328      <keyword>lightgreen</keyword>
329      <keyword>lightgrey</keyword>
330      <keyword>lightpink</keyword>
331      <keyword>lightsalmon</keyword>
332      <keyword>lightseagreen</keyword>
333      <keyword>lightskyblue</keyword>
334      <keyword>lightslategray</keyword>
335      <keyword>lightslategrey</keyword>
336      <keyword>lightsteelblue</keyword>
337      <keyword>lightyellow</keyword>
338      <keyword>limegreen</keyword>
339      <keyword>linen</keyword>
340      <keyword>magenta</keyword>
341      <keyword>mediumaquamarine</keyword>
342      <keyword>mediumblue</keyword>
343      <keyword>mediumorchid</keyword>
344      <keyword>mediumpurple</keyword>
345      <keyword>mediumseagreen</keyword>
346      <keyword>mediumslateblue</keyword>
347      <keyword>mediumspringgreen</keyword>
348      <keyword>mediumturquoise</keyword>
349      <keyword>mediumvioletred</keyword>
350      <keyword>midnightblue</keyword>
351      <keyword>mintcream</keyword>
352      <keyword>mistyrose</keyword>
353      <keyword>moccasin</keyword>
354      <keyword>navajowhite</keyword>
355      <keyword>oldlace</keyword>
356      <keyword>olivedrab</keyword>
357      <keyword>orangered</keyword>
358      <keyword>orchid</keyword>
359      <keyword>palegoldenrod</keyword>
360      <keyword>palegreen</keyword>
361      <keyword>paleturquoise</keyword>
362      <keyword>palevioletred</keyword>
363      <keyword>papayawhip</keyword>
364      <keyword>peachpuff</keyword>
365      <keyword>peru</keyword>
366      <keyword>pink</keyword>
367      <keyword>plum</keyword>
368      <keyword>powderblue</keyword>
369      <keyword>rebeccapurple</keyword>
370      <keyword>rosybrown</keyword>
371      <keyword>royalblue</keyword>
372      <keyword>saddlebrown</keyword>
373      <keyword>salmon</keyword>
374      <keyword>sandybrown</keyword>
375      <keyword>seagreen</keyword>
376      <keyword>seashell</keyword>
377      <keyword>sienna</keyword>
378      <keyword>skyblue</keyword>
379      <keyword>slateblue</keyword>
380      <keyword>slategray</keyword>
381      <keyword>slategrey</keyword>
382      <keyword>snow</keyword>
383      <keyword>springgreen</keyword>
384      <keyword>steelblue</keyword>
385      <keyword>tan</keyword>
386      <keyword>thistle</keyword>
387      <keyword>tomato</keyword>
388      <keyword>turquoise</keyword>
389      <keyword>violet</keyword>
390      <keyword>wheat</keyword>
391      <keyword>whitesmoke</keyword>
392      <keyword>yellowgreen</keyword>
393    </context>
394
395    <context id="named-color" style-ref="color">
396      <keyword>aqua</keyword>
397      <keyword>black</keyword>
398      <keyword>blue</keyword>
399      <keyword>fuchsia</keyword>
400      <keyword>gray</keyword>
401      <keyword>green</keyword>
402      <keyword>lime</keyword>
403      <keyword>maroon</keyword>
404      <keyword>navy</keyword>
405      <keyword>olive</keyword>
406      <keyword>orange</keyword>
407      <keyword>purple</keyword>
408      <keyword>red</keyword>
409      <keyword>silver</keyword>
410      <keyword>teal</keyword>
411      <keyword>white</keyword>
412      <keyword>yellow</keyword>
413    </context>
414
415    <define-regex id="number-magnitude" extended="true">
416      (?: (?&gt; \d* \. \d+ | \d+ ) (?: e [+-]? \d+ )? )
417    </define-regex>
418
419    <define-regex id="number" extended="true">
420      (?: [+-]? \%{number-magnitude} )
421    </define-regex>
422
423    <define-regex id="positive-number" extended="true">
424      (?: \+? \%{number-magnitude} )
425    </define-regex>
426
427    <define-regex id="integer-magnitude" extended="true">
428      (?&gt; \d+ )
429    </define-regex>
430
431    <define-regex id="integer" extended="true">
432      (?: [+-]? \%{integer-magnitude} )
433    </define-regex>
434
435    <define-regex id="positive-integer" extended="true">
436      (?: \+? \%{integer-magnitude} )
437    </define-regex>
438
439    <define-regex id="non-number-char" extended="true">
440      (?:
441        \%{single-identifier-char} |
442        \.
443      )
444    </define-regex>
445
446    <context id="dimension" style-ref="dimension">
447      <prefix>(?&lt;!\%{non-number-char})\%{number}</prefix>
448      <keyword>ch</keyword>
449      <keyword>cm</keyword>
450      <keyword>deg</keyword>
451      <keyword>em</keyword>
452      <keyword>ex</keyword>
453      <keyword>fr</keyword>
454      <keyword>ft</keyword>
455      <keyword>grad</keyword>
456      <keyword>hz</keyword>
457      <keyword>in</keyword>
458      <keyword>khz</keyword>
459      <keyword>mm</keyword>
460      <keyword>ms</keyword>
461      <keyword>pc</keyword>
462      <keyword>pt</keyword>
463      <keyword>px</keyword>
464      <keyword>rad</keyword>
465      <keyword>rem</keyword>
466      <keyword>s</keyword>
467      <keyword>turn</keyword>
468      <keyword>vh</keyword>
469      <keyword>vmax</keyword>
470      <keyword>vmin</keyword>
471      <keyword>vw</keyword>
472    </context>
473
474    <context id="percentage" style-ref="dimension">
475      <match extended="true">
476        (?&lt;! \%{non-number-char} )
477        \%{number}%
478      </match>
479    </context>
480
481    <context id="resolution" style-ref="dimension">
482      <prefix>(?&lt;!\%{non-number-char})\%{positive-number}</prefix>
483      <keyword>dpcm</keyword>
484      <keyword>dpi</keyword>
485      <keyword>dppx</keyword>
486    </context>
487
488    <context id="ratio" style-ref="expression">
489      <match extended="true">
490        (?&lt;! \%{non-number-char} )
491        \%{positive-integer} \s* / \s* \%{positive-integer}
492        (?! \%{non-number-char} )
493      </match>
494    </context>
495
496    <context id="number" style-ref="number">
497      <match extended="true">
498        (?&lt;! \%{non-number-char} )
499        \%{number}
500        (?! \%{non-number-char} )
501      </match>
502    </context>
503
504    <context id="positive-integer" style-ref="integer">
505      <match extended="true">
506        (?&lt;! \%{non-number-char} )
507        \%{positive-integer}
508        (?! \%{non-number-char} )
509      </match>
510    </context>
511
512    <context id="unicode-range" style-ref="unicode-range">
513      <match extended="true">
514        \%[ u \+ (?&gt; [a-f0-9?]{1,6} ) (?&gt; - [a-f0-9]{1,6} )?
515        (?! \%{single-identifier-char} )
516      </match>
517    </context>
518
519
520    <!-- functions -->
521
522    <context id="css3-function-arguments" style-ref="keyword">
523      <keyword>at</keyword>
524      <keyword>auto-fill</keyword>
525      <keyword>auto-fit</keyword>
526      <keyword>auto</keyword>
527      <keyword>bottom</keyword>
528      <keyword>center</keyword>
529      <keyword>circle</keyword>
530      <keyword>closest-corner</keyword>
531      <keyword>closest-side</keyword>
532      <keyword>ellipse</keyword>
533      <keyword>end</keyword>
534      <keyword>farthest-corner</keyword>
535      <keyword>farthest-side</keyword>
536      <keyword>left</keyword>
537      <keyword>max-content</keyword>
538      <keyword>min-content</keyword>
539      <keyword>right</keyword>
540      <keyword>start</keyword>
541      <keyword>top</keyword>
542      <keyword>to</keyword>
543    </context>
544
545    <context id="url">
546      <start>url\(</start>
547      <end>\)</end>
548      <include>
549        <context sub-pattern="0" where="start" style-ref="function"/>
550        <context sub-pattern="0" where="end" style-ref="function"/>
551        <context ref="comment"/>
552        <context ref="string-value"/>
553      </include>
554    </context>
555
556    <context id="function-content">
557      <include>
558        <context ref="css3-function-arguments"/>
559        <context ref="any-value"/>
560      </include>
561    </context>
562
563    <context id="vendor-specific-function">
564      <start>\%{vendor-specific-identifier}\(</start>
565      <end>\)</end>
566      <include>
567        <context sub-pattern="0" where="start" style-ref="vendor-specific"/>
568        <context sub-pattern="0" where="end" style-ref="vendor-specific"/>
569        <context ref="comment"/>
570        <context ref="function-content"/>
571      </include>
572    </context>
573
574    <context id="function">
575      <start>\%{identifier}\(</start>
576      <end>\)</end>
577      <include>
578        <context sub-pattern="0" where="start" style-ref="function"/>
579        <context sub-pattern="0" where="end" style-ref="function"/>
580        <context ref="comment"/>
581        <context ref="function-content"/>
582      </include>
583    </context>
584
585    <context id="function-call">
586      <include>
587        <context ref="vendor-specific-function"/>
588        <context ref="url"/>
589        <context ref="function"/>
590      </include>
591    </context>
592
593
594    <!-- data values (interface between types and users) -->
595
596    <context id="name-value">
597      <include>
598        <context ref="name"/>
599      </include>
600    </context>
601
602    <context id="string-value">
603      <include>
604        <context ref="string"/>
605      </include>
606    </context>
607
608    <context id="color-value">
609      <include>
610        <context ref="hexadecimal-color"/>
611        <context ref="css3-named-color"/>
612        <context ref="named-color"/>
613      </include>
614    </context>
615
616    <!-- resolution and ratio are used in media queries only -->
617    <context id="number-value">
618      <include>
619        <context ref="dimension"/>
620        <context ref="percentage"/>
621        <context ref="resolution"/>
622        <context ref="ratio"/>
623        <context ref="number"/>
624      </include>
625    </context>
626
627    <context id="unicode-range-value">
628      <include>
629        <context ref="unicode-range"/>
630      </include>
631    </context>
632
633    <!-- unicode-range is used for the unicode-range (@font-face) property only -->
634    <context id="data-value">
635      <include>
636        <context ref="string-value"/>
637        <context ref="color-value"/>
638        <context ref="number-value"/>
639        <context ref="unicode-range"/>
640      </include>
641    </context>
642
643
644    <!-- style properties -->
645
646    <context id="svg-property-names" style-ref="property-name">
647      <keyword>clip-path</keyword>
648      <keyword>clip-rule</keyword>
649      <keyword>color-interpolatation-filters</keyword>
650      <keyword>color-interpolatation</keyword>
651      <keyword>dominant-baseline</keyword>
652      <keyword>fill-rule</keyword>
653      <keyword>fill-opacity</keyword>
654      <keyword>fill</keyword>
655      <keyword>flood-color</keyword>
656      <keyword>flood-opacity</keyword>
657      <keyword>lighting-color</keyword>
658      <keyword>marker-end</keyword>
659      <keyword>marker-mid</keyword>
660      <keyword>marker-start</keyword>
661      <keyword>shape-rendering</keyword>
662      <keyword>stop-color</keyword>
663      <keyword>stop-opacity</keyword>
664      <keyword>stroke-dasharray</keyword>
665      <keyword>stroke-dashoffset</keyword>
666      <keyword>stroke-linecap</keyword>
667      <keyword>stroke-linejoin</keyword>
668      <keyword>stroke-miterlimit</keyword>
669      <keyword>stroke-opacity</keyword>
670      <keyword>stroke-width</keyword>
671      <keyword>stroke</keyword>
672      <keyword>text-anchor</keyword>
673      <keyword>text-rendering</keyword>
674    </context>
675
676    <context id="css3-property-names" style-ref="property-name">
677      <keyword>align-content</keyword>
678      <keyword>align-items</keyword>
679      <keyword>align-self</keyword>
680      <keyword>animation-delay</keyword>
681      <keyword>animation-direction</keyword>
682      <keyword>animation-duration</keyword>
683      <keyword>animation-fill-mode</keyword>
684      <keyword>animation-iteration-count</keyword>
685      <keyword>animation-name</keyword>
686      <keyword>animation-play-state</keyword>
687      <keyword>animation-timing-function</keyword>
688      <keyword>animation</keyword>
689      <keyword>appearance</keyword>
690      <keyword>backface-visibility</keyword>
691      <keyword>background-blend-mode</keyword>
692      <keyword>background-clip</keyword>
693      <keyword>background-origin</keyword>
694      <keyword>background-size</keyword>
695      <keyword>bleed</keyword>
696      <keyword>border-image-outset</keyword>
697      <keyword>border-image-repeat</keyword>
698      <keyword>border-image-slice</keyword>
699      <keyword>border-image-source</keyword>
700      <keyword>border-image-width</keyword>
701      <keyword>border-image</keyword>
702      <keyword>box-decoration-break</keyword>
703      <keyword>box-sizing</keyword>
704      <keyword>break-after</keyword>
705      <keyword>break-before</keyword>
706      <keyword>break-inside</keyword>
707      <keyword>column-count</keyword>
708      <keyword>column-fill</keyword>
709      <keyword>column-gap</keyword>
710      <keyword>column-rule-color</keyword>
711      <keyword>column-rule-style</keyword>
712      <keyword>column-rule-width</keyword>
713      <keyword>column-rule</keyword>
714      <keyword>column-span</keyword>
715      <keyword>column-width</keyword>
716      <keyword>columns</keyword>
717      <keyword>filter</keyword>
718      <keyword>flex-basis</keyword>
719      <keyword>flex-direction</keyword>
720      <keyword>flex-flow</keyword>
721      <keyword>flex-grow</keyword>
722      <keyword>flex-shrink</keyword>
723      <keyword>flex-wrap</keyword>
724      <keyword>flex</keyword>
725      <keyword>font-feature-settings</keyword>
726      <keyword>font-kerning</keyword>
727      <keyword>font-language-override</keyword>
728      <keyword>font-stretch</keyword>
729      <keyword>font-synthesis</keyword>
730      <keyword>font-variant-alternates</keyword>
731      <keyword>font-variant-caps</keyword>
732      <keyword>font-variant-east-asian</keyword>
733      <keyword>font-variant-ligatures</keyword>
734      <keyword>font-variant-numeric</keyword>
735      <keyword>font-variant-position</keyword>
736      <keyword>grid-area</keyword>
737      <keyword>grid-gap</keyword>
738      <keyword>grid-auto-columns</keyword>
739      <keyword>grid-auto-flow</keyword>
740      <keyword>grid-auto-rows</keyword>
741      <keyword>grid-column-end</keyword>
742      <keyword>grid-column-gap</keyword>
743      <keyword>grid-column-start</keyword>
744      <keyword>grid-column</keyword>
745      <keyword>grid-row-end</keyword>
746      <keyword>grid-row-gap</keyword>
747      <keyword>grid-row-start</keyword>
748      <keyword>grid-row</keyword>
749      <keyword>grid-template-areas</keyword>
750      <keyword>grid-template-columns</keyword>
751      <keyword>grid-template-rows</keyword>
752      <keyword>grid-template</keyword>
753      <keyword>grid</keyword>
754      <keyword>hanging-punctuation</keyword>
755      <keyword>hyphens</keyword>
756      <keyword>image-orientation</keyword>
757      <keyword>image-rendering</keyword>
758      <keyword>image-resolution</keyword>
759      <keyword>ime-mode</keyword>
760      <keyword>isolation</keyword>
761      <keyword>justify-content</keyword>
762      <keyword>justify-self</keyword>
763      <keyword>line-break</keyword>
764      <keyword>mask-type</keyword>
765      <keyword>mask</keyword>
766      <keyword>mix-blend-mode</keyword>
767      <keyword>nav-down</keyword>
768      <keyword>nav-index</keyword>
769      <keyword>nav-left</keyword>
770      <keyword>nav-right</keyword>
771      <keyword>nav-up</keyword>
772      <keyword>object-fit</keyword>
773      <keyword>object-position</keyword>
774      <keyword>opacity</keyword>
775      <keyword>order</keyword>
776      <keyword>outline-offset</keyword>
777      <keyword>overflow-wrap</keyword>
778      <keyword>overflow-x</keyword>
779      <keyword>overflow-y</keyword>
780      <keyword>perspective-origin</keyword>
781      <keyword>perspective</keyword>
782      <keyword>pointer-events</keyword>
783      <keyword>resize</keyword>
784      <keyword>src</keyword>
785      <keyword>tab-size</keyword>
786      <keyword>text-align-last</keyword>
787      <keyword>text-combine-upright</keyword>
788      <keyword>text-decoration-color</keyword>
789      <keyword>text-decoration-line</keyword>
790      <keyword>text-decoration-style</keyword>
791      <keyword>text-justify</keyword>
792      <keyword>text-orientation</keyword>
793      <keyword>text-overflow</keyword>
794      <keyword>text-underline-position</keyword>
795      <keyword>transform-origin</keyword>
796      <keyword>transform-style</keyword>
797      <keyword>transform</keyword>
798      <keyword>transition-delay</keyword>
799      <keyword>transition-duration</keyword>
800      <keyword>transition-property</keyword>
801      <keyword>transition-timing-function</keyword>
802      <keyword>transition</keyword>
803      <keyword>unicode-range</keyword>
804      <keyword>will-change</keyword>
805      <keyword>word-break</keyword>
806      <keyword>word-wrap</keyword>
807      <keyword>writing-mode</keyword>
808    </context>
809
810    <context id="property-names" style-ref="property-name">
811      <keyword>azimuth</keyword>
812      <keyword>background-attachment</keyword>
813      <keyword>background-color</keyword>
814      <keyword>background-image</keyword>
815      <keyword>background-position</keyword>
816      <keyword>background-repeat</keyword>
817      <keyword>background</keyword>
818      <keyword>border-bottom-color</keyword>
819      <keyword>border-bottom-left-radius</keyword>
820      <keyword>border-bottom-right-radius</keyword>
821      <keyword>border-bottom-style</keyword>
822      <keyword>border-bottom-width</keyword>
823      <keyword>border-bottom</keyword>
824      <keyword>border-collapse</keyword>
825      <keyword>border-color</keyword>
826      <keyword>border-left-color</keyword>
827      <keyword>border-left-style</keyword>
828      <keyword>border-left-width</keyword>
829      <keyword>border-left</keyword>
830      <keyword>border-radius</keyword>
831      <keyword>border-right-color</keyword>
832      <keyword>border-right-style</keyword>
833      <keyword>border-right-width</keyword>
834      <keyword>border-right</keyword>
835      <keyword>border-spacing</keyword>
836      <keyword>border-style</keyword>
837      <keyword>border-top-color</keyword>
838      <keyword>border-top-left-radius</keyword>
839      <keyword>border-top-right-radius</keyword>
840      <keyword>border-top-style</keyword>
841      <keyword>border-top-width</keyword>
842      <keyword>border-top</keyword>
843      <keyword>border-width</keyword>
844      <keyword>border</keyword>
845      <keyword>bottom</keyword>
846      <keyword>box-shadow</keyword>
847      <keyword>caption-side</keyword>
848      <keyword>clear</keyword>
849      <keyword>clip</keyword>
850      <keyword>color</keyword>
851      <keyword>content</keyword>
852      <keyword>counter-increment</keyword>
853      <keyword>counter-reset</keyword>
854      <keyword>cue-after</keyword>
855      <keyword>cue-before</keyword>
856      <keyword>cue</keyword>
857      <keyword>cursor</keyword>
858      <keyword>direction</keyword>
859      <keyword>display</keyword>
860      <keyword>elevation</keyword>
861      <keyword>empty-cells</keyword>
862      <keyword>float</keyword>
863      <keyword>font-family</keyword>
864      <keyword>font-size-adjust</keyword>
865      <keyword>font-size</keyword>
866      <keyword>font-style</keyword>
867      <keyword>font-variant</keyword>
868      <keyword>font-weight</keyword>
869      <keyword>font</keyword>
870      <keyword>height</keyword>
871      <keyword>left</keyword>
872      <keyword>letter-spacing</keyword>
873      <keyword>line-height</keyword>
874      <keyword>list-style-image</keyword>
875      <keyword>list-style-position</keyword>
876      <keyword>list-style-type</keyword>
877      <keyword>list-style</keyword>
878      <keyword>margin-bottom</keyword>
879      <keyword>margin-left</keyword>
880      <keyword>margin-right</keyword>
881      <keyword>margin-top</keyword>
882      <keyword>margin</keyword>
883      <keyword>marker-offset</keyword>
884      <keyword>marks</keyword>
885      <keyword>max-height</keyword>
886      <keyword>max-width</keyword>
887      <keyword>min-height</keyword>
888      <keyword>min-width</keyword>
889      <keyword>orphans</keyword>
890      <keyword>outline-color</keyword>
891      <keyword>outline-style</keyword>
892      <keyword>outline-width</keyword>
893      <keyword>outline</keyword>
894      <keyword>overflow</keyword>
895      <keyword>padding-bottom</keyword>
896      <keyword>padding-left</keyword>
897      <keyword>padding-right</keyword>
898      <keyword>padding-top</keyword>
899      <keyword>padding</keyword>
900      <keyword>page-break-after</keyword>
901      <keyword>page-break-before</keyword>
902      <keyword>page-break-inside</keyword>
903      <keyword>page</keyword>
904      <keyword>pause-after</keyword>
905      <keyword>pause-before</keyword>
906      <keyword>pause</keyword>
907      <keyword>pitch-range</keyword>
908      <keyword>pitch</keyword>
909      <keyword>play-during</keyword>
910      <keyword>position</keyword>
911      <keyword>quotes</keyword>
912      <keyword>richness</keyword>
913      <keyword>right</keyword>
914      <keyword>size</keyword>
915      <keyword>speak-header</keyword>
916      <keyword>speak-numeral</keyword>
917      <keyword>speak-punctuation</keyword>
918      <keyword>speak</keyword>
919      <keyword>speech-rate</keyword>
920      <keyword>stress</keyword>
921      <keyword>table-layout</keyword>
922      <keyword>text-align</keyword>
923      <keyword>text-decoration</keyword>
924      <keyword>text-indent</keyword>
925      <keyword>text-shadow</keyword>
926      <keyword>text-transform</keyword>
927      <keyword>top</keyword>
928      <keyword>unicode-bidi</keyword>
929      <keyword>vertical-align</keyword>
930      <keyword>visibility</keyword>
931      <keyword>voice-family</keyword>
932      <keyword>volume</keyword>
933      <keyword>white-space</keyword>
934      <keyword>widows</keyword>
935      <keyword>width</keyword>
936      <keyword>word-spacing</keyword>
937      <keyword>z-index</keyword>
938    </context>
939
940    <context id="animatable-properties" style-ref="keyword">
941      <keyword>background-color</keyword>
942      <keyword>background-position</keyword>
943      <keyword>background-size</keyword>
944      <keyword>background</keyword>
945      <keyword>border-bottom-color</keyword>
946      <keyword>border-bottom-left-radius</keyword>
947      <keyword>border-bottom-right-radius</keyword>
948      <keyword>border-bottom-width</keyword>
949      <keyword>border-bottom</keyword>
950      <keyword>border-color</keyword>
951      <keyword>border-left-color</keyword>
952      <keyword>border-left-width</keyword>
953      <keyword>border-left</keyword>
954      <keyword>border-radius</keyword>
955      <keyword>border-right-color</keyword>
956      <keyword>border-right-width</keyword>
957      <keyword>border-right</keyword>
958      <keyword>border-top-color</keyword>
959      <keyword>border-top-left-radius</keyword>
960      <keyword>border-top-right-radius</keyword>
961      <keyword>border-top-width</keyword>
962      <keyword>border-top</keyword>
963      <keyword>border-width</keyword>
964      <keyword>border</keyword>
965      <keyword>bottom</keyword>
966      <keyword>box-shadow</keyword>
967      <keyword>clip-path</keyword>
968      <keyword>clip</keyword>
969      <keyword>color</keyword>
970      <keyword>column-count</keyword>
971      <keyword>column-gap</keyword>
972      <keyword>column-rule-color</keyword>
973      <keyword>column-rule-width</keyword>
974      <keyword>column-rule</keyword>
975      <keyword>column-width</keyword>
976      <keyword>columns</keyword>
977      <keyword>filter</keyword>
978      <keyword>flex-basis</keyword>
979      <keyword>flex-grow</keyword>
980      <keyword>flex-shrink</keyword>
981      <keyword>flex</keyword>
982      <keyword>font-size-adjust</keyword>
983      <keyword>font-size</keyword>
984      <keyword>font-stretch</keyword>
985      <keyword>font-weight</keyword>
986      <keyword>font</keyword>
987      <keyword>grid-column-gap</keyword>
988      <keyword>grid-gap</keyword>
989      <keyword>grid-row-gap</keyword>
990      <keyword>height</keyword>
991      <keyword>left</keyword>
992      <keyword>letter-spacing</keyword>
993      <keyword>line-height</keyword>
994      <keyword>margin-bottom</keyword>
995      <keyword>margin-left</keyword>
996      <keyword>margin-right</keyword>
997      <keyword>margin-top</keyword>
998      <keyword>margin</keyword>
999      <keyword>mask</keyword>
1000      <keyword>max-height</keyword>
1001      <keyword>max-width</keyword>
1002      <keyword>min-height</keyword>
1003      <keyword>min-width</keyword>
1004      <keyword>object-position</keyword>
1005      <keyword>opacity</keyword>
1006      <keyword>order</keyword>
1007      <keyword>outline-color</keyword>
1008      <keyword>outline-offset</keyword>
1009      <keyword>outline-width</keyword>
1010      <keyword>outline</keyword>
1011      <keyword>padding-bottom</keyword>
1012      <keyword>padding-left</keyword>
1013      <keyword>padding-right</keyword>
1014      <keyword>padding-top</keyword>
1015      <keyword>padding</keyword>
1016      <keyword>perspective-origin</keyword>
1017      <keyword>perspective</keyword>
1018      <keyword>right</keyword>
1019      <keyword>tab-size</keyword>
1020      <keyword>text-decoration-color</keyword>
1021      <keyword>text-decoration</keyword>
1022      <keyword>text-indent</keyword>
1023      <keyword>text-shadow</keyword>
1024      <keyword>top</keyword>
1025      <keyword>transform-origin</keyword>
1026      <keyword>transform</keyword>
1027      <keyword>vertical-align</keyword>
1028      <keyword>visibility</keyword>
1029      <keyword>width</keyword>
1030      <keyword>word-spacing</keyword>
1031      <keyword>z-index</keyword>
1032    </context>
1033
1034    <context id="svg-property-values" style-ref="keyword">
1035      <keyword>alphabetic</keyword>
1036      <keyword>bevel</keyword>
1037      <keyword>butt</keyword>
1038      <keyword>central</keyword>
1039      <keyword>crispedges</keyword>
1040      <keyword>evenodd</keyword>
1041      <keyword>geometricprecision</keyword>
1042      <keyword>hanging</keyword>
1043      <keyword>ideographic</keyword>
1044      <keyword>lr-tb</keyword>
1045      <keyword>lr</keyword>
1046      <keyword>mathematical</keyword>
1047      <keyword>miter</keyword>
1048      <keyword>no-change</keyword>
1049      <keyword>nonzero</keyword>
1050      <keyword>optimizelegibility</keyword>
1051      <keyword>optimizespeed</keyword>
1052      <keyword>painted</keyword>
1053      <keyword>reset-size</keyword>
1054      <keyword>rl-tb</keyword>
1055      <keyword>rl</keyword>
1056      <keyword>stroke</keyword>
1057      <keyword>tb-rl</keyword>
1058      <keyword>tb</keyword>
1059      <keyword>text-after-edge</keyword>
1060      <keyword>text-before-edge</keyword>
1061      <keyword>use-script</keyword>
1062      <keyword>visiblefill</keyword>
1063      <keyword>visiblepainted</keyword>
1064      <keyword>visiblestroke</keyword>
1065    </context>
1066
1067    <context id="east-asian-variant-values" style-ref="keyword">
1068      <keyword>jis04</keyword>
1069      <keyword>jis78</keyword>
1070      <keyword>jis83</keyword>
1071      <keyword>jis90</keyword>
1072      <keyword>simplified</keyword>
1073      <keyword>traditional</keyword>
1074    </context>
1075
1076    <context id="page-sizes" style-ref="keyword">
1077      <keyword>A3</keyword>
1078      <keyword>A4</keyword>
1079      <keyword>A5</keyword>
1080      <keyword>B4</keyword>
1081      <keyword>B5</keyword>
1082      <keyword>JIS-B4</keyword>
1083      <keyword>JIS-B5</keyword>
1084      <keyword>ledger</keyword>
1085      <keyword>legal</keyword>
1086      <keyword>letter</keyword>
1087    </context>
1088
1089    <context id="css3-property-values" style-ref="keyword">
1090      <keyword>active</keyword>
1091      <keyword>add</keyword>
1092      <keyword>allow-end</keyword>
1093      <keyword>all-petite-caps</keyword>
1094      <keyword>all-small-caps</keyword>
1095      <keyword>all-scroll</keyword> <!-- css2, but needed for regex -->
1096      <keyword>all</keyword>
1097      <keyword>alpha</keyword>
1098      <keyword>alternate-reverse</keyword>
1099      <keyword>alternate</keyword>
1100      <keyword>avoid-page</keyword>
1101      <keyword>auto-flow</keyword>
1102      <keyword>backwards</keyword>
1103      <keyword>balance</keyword>
1104      <keyword>border-box</keyword>
1105      <keyword>break-all</keyword>
1106      <keyword>break-word</keyword>
1107      <keyword>clip</keyword>
1108      <keyword>clone</keyword>
1109      <keyword>color-burn</keyword>
1110      <keyword>color-dodge</keyword>
1111      <keyword>color</keyword>
1112      <keyword>column-reverse</keyword>
1113      <keyword>column</keyword>
1114      <keyword>common-ligatures</keyword>
1115      <keyword>contain</keyword>
1116      <keyword>content-box</keyword>
1117      <keyword>contents</keyword>
1118      <keyword>contextual</keyword>
1119      <keyword>cover</keyword>
1120      <keyword>crisp-edges</keyword>
1121      <keyword>currentcolor</keyword>
1122      <keyword>darken</keyword>
1123      <keyword>dense</keyword>
1124      <keyword>diagonal-fractions</keyword>
1125      <keyword>difference</keyword>
1126      <keyword>disabled</keyword>
1127      <keyword>discretionary-ligatures</keyword>
1128      <keyword>distribute</keyword>
1129      <keyword>ease-in-out</keyword>
1130      <keyword>ease-in</keyword>
1131      <keyword>ease-out</keyword>
1132      <keyword>ease</keyword>
1133      <keyword>ellipsis</keyword>
1134      <keyword>end</keyword>
1135      <keyword>exclude</keyword>
1136      <keyword>exclusion</keyword>
1137      <keyword>fill-box</keyword>
1138      <keyword>fill</keyword>
1139      <keyword>first</keyword>
1140      <keyword>flat</keyword>
1141      <keyword>flex-end</keyword>
1142      <keyword>flex-start</keyword>
1143      <keyword>flex</keyword>
1144      <keyword>flip</keyword>
1145      <keyword>force-end</keyword>
1146      <keyword>forwards</keyword>
1147      <keyword>from-image</keyword>
1148      <keyword>full-width</keyword>
1149      <keyword>grid</keyword>
1150      <keyword>hard-light</keyword>
1151      <keyword>historical-forms</keyword>
1152      <keyword>historical-ligatures</keyword>
1153      <keyword>horizontal-tb</keyword>
1154      <keyword>horizontal</keyword>
1155      <keyword>hue</keyword>
1156      <keyword>inactive</keyword>
1157      <keyword>infinite</keyword>
1158      <keyword>initial</keyword>
1159      <keyword>inline-flex</keyword>
1160      <keyword>inline-grid</keyword>
1161      <keyword>inter-cluster</keyword>
1162      <keyword>inter-ideograph</keyword>
1163      <keyword>inter-word</keyword>
1164      <keyword>intersect</keyword>
1165      <keyword>isolate</keyword>
1166      <keyword>kashida</keyword>
1167      <keyword>keep-all</keyword>
1168      <keyword>last</keyword>
1169      <keyword>left-side</keyword> <!-- css2, but needed for regex -->
1170      <keyword>left</keyword>
1171      <keyword>lighten</keyword>
1172      <keyword>linear</keyword>
1173      <keyword>lining-nums</keyword>
1174      <keyword>local</keyword>
1175      <keyword>loose</keyword>
1176      <keyword>luminance</keyword>
1177      <keyword>luminosity</keyword>
1178      <keyword>manual</keyword>
1179      <keyword>mixed</keyword>
1180      <keyword>multiply</keyword>
1181      <keyword>no-clip</keyword>
1182      <keyword>no-common-ligatures</keyword>
1183      <keyword>no-contextual</keyword>
1184      <keyword>no-discretionary-ligatures</keyword>
1185      <keyword>no-historical-ligatures</keyword>
1186      <keyword>oldstyle-nums</keyword>
1187      <keyword>ordinal</keyword>
1188      <keyword>overlay</keyword>
1189      <keyword>padding-box</keyword>
1190      <keyword>page</keyword>
1191      <keyword>paused</keyword>
1192      <keyword>petite-caps</keyword>
1193      <keyword>pixelated</keyword>
1194      <keyword>preserve-3d</keyword>
1195      <keyword>proportional-nums</keyword>
1196      <keyword>proportional-width</keyword>
1197      <keyword>reverse</keyword>
1198      <keyword>round</keyword>
1199      <keyword>row-reverse</keyword>
1200      <keyword>row</keyword>
1201      <keyword>ruby</keyword>
1202      <keyword>running</keyword>
1203      <keyword>saturation</keyword>
1204      <keyword>scale-down</keyword>
1205      <keyword>screen</keyword>
1206      <keyword>scroll-position</keyword>
1207      <keyword>sideways-left</keyword>
1208      <keyword>sideways-right</keyword>
1209      <keyword>sideways</keyword>
1210      <keyword>slashed-zero</keyword>
1211      <keyword>slice</keyword>
1212      <keyword>soft-light</keyword>
1213      <keyword>space-around</keyword>
1214      <keyword>space-between</keyword>
1215      <keyword>space-evenly</keyword>
1216      <keyword>space</keyword>
1217      <keyword>stacked-fractions</keyword>
1218      <keyword>start</keyword>
1219      <keyword>step-end</keyword>
1220      <keyword>step-start</keyword>
1221      <keyword>stretch</keyword>
1222      <keyword>strict</keyword>
1223      <keyword>stroke-box</keyword>
1224      <keyword>style</keyword>
1225      <keyword>stylistic</keyword>
1226      <keyword>subtract</keyword>
1227      <keyword>tabular-nums</keyword>
1228      <keyword>titling-caps</keyword>
1229      <keyword>trim</keyword>
1230      <keyword>under</keyword>
1231      <keyword>unicase</keyword>
1232      <keyword>unset</keyword>
1233      <keyword>upright</keyword>
1234      <keyword>use-glyph-orientation</keyword>
1235      <keyword>vertical-lr</keyword>
1236      <keyword>vertical-rl</keyword>
1237      <keyword>vertical</keyword>
1238      <keyword>view-box</keyword>
1239      <keyword>wavy</keyword>
1240      <keyword>weight</keyword>
1241      <keyword>wrap-reverse</keyword>
1242      <keyword>wrap</keyword>
1243    </context>
1244
1245    <context id="property-values" style-ref="keyword">
1246      <keyword>above</keyword>
1247      <keyword>absolute</keyword>
1248      <keyword>alias</keyword>
1249      <keyword>all-scroll</keyword>
1250      <keyword>always</keyword>
1251      <keyword>armenian</keyword>
1252      <keyword>auto</keyword>
1253      <keyword>avoid</keyword>
1254      <keyword>baseline</keyword>
1255      <keyword>behind</keyword>
1256      <keyword>below</keyword>
1257      <keyword>bidi-override</keyword>
1258      <keyword>blink</keyword>
1259      <keyword>block</keyword>
1260      <keyword>bolder</keyword>
1261      <keyword>bold</keyword>
1262      <keyword>both</keyword>
1263      <keyword>bottom</keyword>
1264      <keyword>capitalize</keyword>
1265      <keyword>caption</keyword>
1266      <keyword>cell</keyword>
1267      <keyword>center-left</keyword>
1268      <keyword>center-right</keyword>
1269      <keyword>center</keyword>
1270      <keyword>circle</keyword>
1271      <keyword>cjk-ideographic</keyword>
1272      <keyword>close-quote</keyword>
1273      <keyword>code</keyword>
1274      <keyword>collapse</keyword>
1275      <keyword>col-resize</keyword>
1276      <keyword>compact</keyword>
1277      <keyword>condensed</keyword>
1278      <keyword>continuous</keyword>
1279      <keyword>context-menu</keyword>
1280      <keyword>copy</keyword>
1281      <keyword>crop</keyword>
1282      <keyword>crosshair</keyword>
1283      <keyword>cross</keyword>
1284      <keyword>cue-after</keyword>
1285      <keyword>cue-before</keyword>
1286      <keyword>cursive</keyword>
1287      <keyword>dashed</keyword>
1288      <keyword>decimal</keyword>
1289      <keyword>decimal-leading-zero</keyword>
1290      <keyword>default</keyword>
1291      <keyword>digits</keyword>
1292      <keyword>disc</keyword>
1293      <keyword>dotted</keyword>
1294      <keyword>double</keyword>
1295      <keyword>embed</keyword>
1296      <keyword>e-resize</keyword>
1297      <keyword>ew-resize</keyword>
1298      <keyword>expanded</keyword>
1299      <keyword>extra-condensed</keyword>
1300      <keyword>extra-expanded</keyword>
1301      <keyword>fantasy</keyword>
1302      <keyword>far-left</keyword>
1303      <keyword>far-right</keyword>
1304      <keyword>faster</keyword>
1305      <keyword>fast</keyword>
1306      <keyword>fixed</keyword>
1307      <keyword>flow-root</keyword>
1308      <keyword>georgian</keyword>
1309      <keyword>grabbing</keyword>
1310      <keyword>grab</keyword>
1311      <keyword>groove</keyword>
1312      <keyword>hebrew</keyword>
1313      <keyword>help</keyword>
1314      <keyword>hidden</keyword>
1315      <keyword>hide</keyword>
1316      <keyword>higher</keyword>
1317      <keyword>high</keyword>
1318      <keyword>hiragana-iroha</keyword>
1319      <keyword>hiragana</keyword>
1320      <keyword>icon</keyword>
1321      <keyword>inherit</keyword>
1322      <keyword>inline-block</keyword>
1323      <keyword>inline-table</keyword>
1324      <keyword>inline</keyword>
1325      <keyword>inset</keyword>
1326      <keyword>inside</keyword>
1327      <keyword>invert</keyword>
1328      <keyword>italic</keyword>
1329      <keyword>justify</keyword>
1330      <keyword>katakana-iroha</keyword>
1331      <keyword>katakana</keyword>
1332      <keyword>landscape</keyword>
1333      <keyword>large</keyword>
1334      <keyword>larger</keyword>
1335      <keyword>left-side</keyword>
1336      <keyword>leftwards</keyword>
1337      <keyword>level</keyword>
1338      <keyword>lighter</keyword>
1339      <keyword>line-through</keyword>
1340      <keyword>list-item</keyword>
1341      <keyword>loud</keyword>
1342      <keyword>lower-alpha</keyword>
1343      <keyword>lowercase</keyword>
1344      <keyword>lower-greek</keyword>
1345      <keyword>lower-latin</keyword>
1346      <keyword>lower-roman</keyword>
1347      <keyword>lower</keyword>
1348      <keyword>low</keyword>
1349      <keyword>ltr</keyword>
1350      <keyword>marker</keyword>
1351      <keyword>medium</keyword>
1352      <keyword>menu</keyword>
1353      <keyword>message-box</keyword>
1354      <keyword>middle</keyword>
1355      <keyword>mix</keyword>
1356      <keyword>monospace</keyword>
1357      <keyword>move</keyword>
1358      <keyword>narrower</keyword>
1359      <keyword>ne-resize</keyword>
1360      <keyword>nesw-resize</keyword>
1361      <keyword>no-close-quote</keyword>
1362      <keyword>no-drop</keyword>
1363      <keyword>no-open-quote</keyword>
1364      <keyword>no-repeat</keyword>
1365      <keyword>none</keyword>
1366      <keyword>normal</keyword>
1367      <keyword>not-allowed</keyword>
1368      <keyword>nowrap</keyword>
1369      <keyword>ns-resize</keyword>
1370      <keyword>nw-resize</keyword>
1371      <keyword>nwse-resize</keyword>
1372      <keyword>n-resize</keyword>
1373      <keyword>oblique</keyword>
1374      <keyword>once</keyword>
1375      <keyword>open-quote</keyword>
1376      <keyword>outset</keyword>
1377      <keyword>outside</keyword>
1378      <keyword>overline</keyword>
1379      <keyword>pointer</keyword>
1380      <keyword>portrait</keyword>
1381      <keyword>pre-line</keyword>
1382      <keyword>pre-wrap</keyword>
1383      <keyword>pre</keyword>
1384      <keyword>progress</keyword>
1385      <keyword>relative</keyword>
1386      <keyword>repeat-x</keyword>
1387      <keyword>repeat-y</keyword>
1388      <keyword>repeat</keyword>
1389      <keyword>ridge</keyword>
1390      <keyword>right-side</keyword>
1391      <keyword>right</keyword>
1392      <keyword>rightwards</keyword>
1393      <keyword>row-resize</keyword>
1394      <keyword>rtl</keyword>
1395      <keyword>run-in</keyword>
1396      <keyword>sans-serif</keyword>
1397      <keyword>scroll</keyword>
1398      <keyword>semi-condensed</keyword>
1399      <keyword>semi-expanded</keyword>
1400      <keyword>separate</keyword>
1401      <keyword>se-resize</keyword>
1402      <keyword>serif</keyword>
1403      <keyword>show</keyword>
1404      <keyword>silent</keyword>
1405      <keyword>slower</keyword>
1406      <keyword>slow</keyword>
1407      <keyword>small-caps</keyword>
1408      <keyword>smaller</keyword>
1409      <keyword>small-caption</keyword>
1410      <keyword>small</keyword>
1411      <keyword>soft</keyword>
1412      <keyword>solid</keyword>
1413      <keyword>spell-out</keyword>
1414      <keyword>square</keyword>
1415      <keyword>se-resize</keyword>
1416      <keyword>sw-resize</keyword>
1417      <keyword>s-resize</keyword>
1418      <keyword>static</keyword>
1419      <keyword>status-bar</keyword>
1420      <keyword>sub</keyword>
1421      <keyword>super</keyword>
1422      <keyword>sw-resize</keyword>
1423      <keyword>table-caption</keyword>
1424      <keyword>table-cell</keyword>
1425      <keyword>table-column-group</keyword>
1426      <keyword>table-column</keyword>
1427      <keyword>table-footer-group</keyword>
1428      <keyword>table-header-group</keyword>
1429      <keyword>table-row-group</keyword>
1430      <keyword>table-row</keyword>
1431      <keyword>table</keyword>
1432      <keyword>text-bottom</keyword>
1433      <keyword>text</keyword>
1434      <keyword>text-top</keyword>
1435      <keyword>thick</keyword>
1436      <keyword>thin</keyword>
1437      <keyword>top</keyword>
1438      <keyword>transparent</keyword>
1439      <keyword>ultra-condensed</keyword>
1440      <keyword>ultra-expanded</keyword>
1441      <keyword>underline</keyword>
1442      <keyword>upper-alpha</keyword>
1443      <keyword>uppercase</keyword>
1444      <keyword>upper-latin</keyword>
1445      <keyword>upper-roman</keyword>
1446      <keyword>vertical-text</keyword>
1447      <keyword>visible</keyword>
1448      <keyword>wait</keyword>
1449      <keyword>wider</keyword>
1450      <keyword>w-resize</keyword>
1451      <keyword>x-fast</keyword>
1452      <keyword>x-high</keyword>
1453      <keyword>x-large</keyword>
1454      <keyword>x-loud</keyword>
1455      <keyword>x-low</keyword>
1456      <keyword>x-slow</keyword>
1457      <keyword>x-small</keyword>
1458      <keyword>x-soft</keyword>
1459      <keyword>xx-large</keyword>
1460      <keyword>xx-small</keyword>
1461      <keyword>zoom-in</keyword>
1462      <keyword>zoom-out</keyword>
1463    </context>
1464
1465    <context id="property-name">
1466      <include>
1467        <context ref="vendor-specific-name"/>
1468        <context ref="svg-property-names"/>
1469        <context ref="css3-property-names"/>
1470        <context ref="property-names"/>
1471      </include>
1472    </context>
1473
1474    <context id="property-value-keyword">
1475      <include>
1476        <context ref="vendor-specific-name"/>
1477        <context ref="animatable-properties"/>
1478        <context ref="svg-property-values"/>
1479        <context ref="east-asian-variant-values"/>
1480        <context ref="page-sizes"/>
1481        <context ref="css3-property-values"/>
1482        <context ref="property-values"/>
1483      </include>
1484    </context>
1485
1486
1487    <!-- any assignable value -->
1488
1489    <context id="any-value">
1490      <include>
1491        <context ref="function-call"/>
1492        <context ref="property-value-keyword"/>
1493        <context ref="data-value"/>
1494        <context ref="slash"/>
1495        <context ref="comma"/> <!-- for lists -->
1496      </include>
1497    </context>
1498
1499
1500    <!-- modifiers -->
1501
1502    <context id="modifiers" end-parent="true" style-ref="modifier">
1503      <keyword>important</keyword>
1504    </context>
1505
1506    <context id="modifier-content">
1507      <include>
1508        <context ref="modifiers"/>
1509      </include>
1510    </context>
1511
1512    <context id="modifier">
1513      <start>!</start>
1514      <end>\%{declaration-value-end}</end>
1515      <include>
1516        <context sub-pattern="0" where="start" style-ref="modifier"/>
1517        <context ref="comment"/>
1518        <context ref="modifier-content"/>
1519      </include>
1520    </context>
1521
1522
1523    <!-- style block -->
1524
1525    <context id="declaration-property">
1526      <include>
1527        <context ref="property-name"/>
1528      </include>
1529    </context>
1530
1531    <context id="declaration-value-content">
1532      <include>
1533        <context ref="any-value"/>
1534      </include>
1535    </context>
1536
1537    <context id="declaration-value">
1538      <start>:</start>
1539      <end>\%{declaration-value-end}</end>
1540      <include>
1541        <context sub-pattern="0" where="start" style-ref="delimiter"/>
1542        <context ref="comment"/>
1543        <context ref="declaration-value-content"/>
1544      </include>
1545    </context>
1546
1547    <context id="declaration">
1548      <include>
1549        <context ref="declaration-property"/>
1550        <context ref="declaration-value"/>
1551        <context ref="modifier"/>
1552        <context ref="semicolon"/>
1553      </include>
1554    </context>
1555
1556    <context id="style-block-content">
1557      <include>
1558        <context ref="declaration"/>
1559      </include>
1560    </context>
1561
1562    <context id="style-block">
1563      <start>{</start>
1564      <end>}</end>
1565      <include>
1566        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1567        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1568        <context ref="comment"/>
1569        <context ref="style-block-content"/>
1570      </include>
1571    </context>
1572
1573
1574    <!-- media queries -->
1575
1576    <context id="media-query-operators" style-ref="media-query-operator">
1577      <keyword>and</keyword>
1578      <keyword>not</keyword>
1579      <keyword>only</keyword>
1580    </context>
1581
1582    <context id="media-types" style-ref="media-type">
1583      <keyword>all</keyword>
1584      <keyword>print</keyword>
1585      <keyword>screen</keyword>
1586      <keyword>speech</keyword>
1587    </context>
1588
1589    <context id="css3-media-features" style-ref="media-feature">
1590      <keyword>any-hover</keyword>
1591      <keyword>any-pointer</keyword>
1592      <keyword>aspect-ratio</keyword>
1593      <keyword>color-gamut</keyword>
1594      <keyword>color-index</keyword>
1595      <keyword>color</keyword>
1596      <keyword>display-mode</keyword>
1597      <keyword>grid</keyword>
1598      <keyword>height</keyword>
1599      <keyword>hover</keyword>
1600      <keyword>max-aspect-ratio</keyword>
1601      <keyword>max-color-index</keyword>
1602      <keyword>max-color</keyword>
1603      <keyword>max-height</keyword>
1604      <keyword>max-monochrome</keyword>
1605      <keyword>max-resolution</keyword>
1606      <keyword>max-width</keyword>
1607      <keyword>min-aspect-ratio</keyword>
1608      <keyword>min-color-index</keyword>
1609      <keyword>min-color</keyword>
1610      <keyword>min-height</keyword>
1611      <keyword>min-monochrome</keyword>
1612      <keyword>min-resolution</keyword>
1613      <keyword>min-width</keyword>
1614      <keyword>monochrome</keyword>
1615      <keyword>orientation</keyword>
1616      <keyword>overflow-block</keyword>
1617      <keyword>overflow-inline</keyword>
1618      <keyword>pointer</keyword>
1619      <keyword>resolution</keyword>
1620      <keyword>scan</keyword>
1621      <keyword>update</keyword>
1622      <keyword>width</keyword>
1623    </context>
1624
1625    <context id="css3-media-feature-values" style-ref="media-feature-value">
1626      <keyword>browser</keyword>
1627      <keyword>coarse</keyword>
1628      <keyword>fast</keyword>
1629      <keyword>fine</keyword>
1630      <keyword>fullscreen</keyword>
1631      <keyword>hover</keyword>
1632      <keyword>interlace</keyword>
1633      <keyword>landscape</keyword>
1634      <keyword>minimal-ui</keyword>
1635      <keyword>none</keyword>
1636      <keyword>optional-paged</keyword>
1637      <keyword>p3</keyword>
1638      <keyword>paged</keyword>
1639      <keyword>portrait</keyword>
1640      <keyword>progressive</keyword>
1641      <keyword>rec2020</keyword>
1642      <keyword>scroll</keyword>
1643      <keyword>slow</keyword>
1644      <keyword>srgb</keyword>
1645      <keyword>standalone</keyword>
1646    </context>
1647
1648    <context id="media-type-value">
1649      <include>
1650        <context ref="media-types"/>
1651      </include>
1652    </context>
1653
1654    <context id="media-feature-test-name">
1655      <include>
1656        <context ref="css3-media-features"/>
1657      </include>
1658    </context>
1659
1660    <context id="media-feature-test-value-content">
1661      <include>
1662        <context ref="css3-media-feature-values"/>
1663        <context ref="data-value"/>
1664      </include>
1665    </context>
1666
1667    <context id="media-feature-test-value">
1668      <start>:</start>
1669      <end>\%{test-value-end}</end>
1670      <include>
1671        <context sub-pattern="0" where="start" style-ref="delimiter"/>
1672        <context ref="comment"/>
1673        <context ref="media-feature-test-value-content"/>
1674      </include>
1675    </context>
1676
1677    <context id="media-feature-test-content">
1678      <include>
1679        <context ref="media-queries"/>
1680        <context ref="media-feature-test-name"/>
1681        <context ref="media-feature-test-value"/>
1682      </include>
1683    </context>
1684
1685    <context id="media-feature-test">
1686      <start>\(</start>
1687      <end>\)</end>
1688      <include>
1689        <context sub-pattern="0" where="start" style-ref="test-delimiter"/>
1690        <context sub-pattern="0" where="end" style-ref="test-delimiter"/>
1691        <context ref="comment"/>
1692        <context ref="media-feature-test-content"/>
1693      </include>
1694    </context>
1695
1696    <context id="media-queries">
1697      <include>
1698        <context ref="media-query-operators"/>
1699        <context ref="media-type-value"/>
1700        <context ref="media-feature-test"/>
1701        <context ref="comma"/>
1702      </include>
1703    </context>
1704
1705
1706    <!-- at-rules -->
1707
1708    <context id="at-rule-style-block-content">
1709      <include>
1710        <context ref="declaration"/>
1711      </include>
1712    </context>
1713
1714    <context id="at-rule-style-block" end-parent="true">
1715      <start>{</start>
1716      <end>}</end>
1717      <include>
1718        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1719        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1720        <context ref="comment"/>
1721        <context ref="at-rule-style-block-content"/>
1722      </include>
1723    </context>
1724
1725    <context id="at-rule-css-block-content">
1726      <include>
1727        <context ref="at-rule"/>
1728        <context ref="selector"/>
1729        <context ref="style-block"/>
1730      </include>
1731    </context>
1732
1733    <context id="at-rule-css-block" end-parent="true">
1734      <start>{</start>
1735      <end>}</end>
1736      <include>
1737        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1738        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1739        <context ref="comment"/>
1740        <context ref="at-rule-css-block-content"/>
1741      </include>
1742    </context>
1743
1744    <!--
1745    if this was a simple context (<match>), then in a case like this:
1746    @supports {
1747        @import url();
1748        @media screen {}
1749    }
1750    the @media rule would not be highlighted correctly
1751    (seems like a bug?)
1752    -->
1753    <context id="at-rule-delimiter" end-parent="true" style-ref="delimiter">
1754      <start>(?=;)</start>
1755      <end>;</end>
1756    </context>
1757
1758    <context id="vendor-specific-at-rule">
1759      <start>@\%{vendor-specific-identifier}</start>
1760      <include>
1761        <context sub-pattern="0" where="start" style-ref="vendor-specific"/>
1762        <context ref="comment"/>
1763        <context ref="at-rule-css-block"/>
1764        <context ref="at-rule-delimiter"/>
1765      </include>
1766    </context>
1767
1768    <!--
1769    @charset "encoding";
1770    -->
1771
1772    <context id="at-charset" first-line-only="true">
1773      <start case-sensitive="true">^@charset(?= "[^"]*";)</start>
1774      <include>
1775        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1776        <context ref="double-quoted-string"/>
1777        <context ref="at-rule-delimiter"/>
1778      </include>
1779    </context>
1780
1781    <context id="at-charset-error" style-ref="error">
1782      <start>@charset\%]</start>
1783      <include>
1784        <context ref="at-rule-delimiter"/>
1785      </include>
1786    </context>
1787
1788    <!--
1789    @font-face <style-block>
1790    -->
1791
1792    <context id="at-font-face">
1793      <start>@font-face\%]</start>
1794      <include>
1795        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1796        <context ref="comment"/>
1797        <context ref="at-rule-style-block"/>
1798      </include>
1799    </context>
1800
1801    <!--
1802    @font-feature-values <font name|"font name"> {
1803        @<font-feature-type> {
1804            <custom-name>: <positive-integer>+;
1805        }
1806    }
1807    -->
1808
1809    <context id="font-feature-types" style-ref="at-rule-inner-selector">
1810      <prefix>@</prefix>
1811      <keyword>annotation</keyword>
1812      <keyword>character-variant</keyword>
1813      <keyword>ornaments</keyword>
1814      <keyword>styleset</keyword>
1815      <keyword>stylistic</keyword>
1816      <keyword>swash</keyword>
1817    </context>
1818
1819    <context id="font-feature-type-value">
1820      <include>
1821        <context ref="font-feature-types"/>
1822      </include>
1823    </context>
1824
1825    <context id="font-feature-value-declaration-name">
1826      <include>
1827        <context ref="name-value"/>
1828      </include>
1829    </context>
1830
1831    <context id="font-feature-value-declaration-value-content">
1832      <include>
1833        <context ref="positive-integer"/>
1834      </include>
1835    </context>
1836
1837    <context id="font-feature-value-declaration-value">
1838      <start>:</start>
1839      <end>\%{declaration-value-end}</end>
1840      <include>
1841        <context sub-pattern="0" where="start" style-ref="delimiter"/>
1842        <context ref="comment"/>
1843        <context ref="font-feature-value-declaration-value-content"/>
1844      </include>
1845    </context>
1846
1847    <context id="at-font-feature-values-feature-value-block">
1848      <start>{</start>
1849      <end>}</end>
1850      <include>
1851        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1852        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1853        <context ref="comment"/>
1854        <context ref="font-feature-value-declaration-name"/>
1855        <context ref="font-feature-value-declaration-value"/>
1856        <context ref="semicolon"/>
1857      </include>
1858    </context>
1859
1860    <context id="at-font-feature-values-block" end-parent="true">
1861      <start>{</start>
1862      <end>}</end>
1863      <include>
1864        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1865        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1866        <context ref="comment"/>
1867        <context ref="font-feature-type-value"/>
1868        <context ref="at-font-feature-values-feature-value-block"/>
1869      </include>
1870    </context>
1871
1872    <context id="at-font-feature-values">
1873      <start>@font-feature-values\%]</start>
1874      <include>
1875        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1876        <context ref="comment"/>
1877        <context ref="string-value"/>
1878        <context ref="name-value"/>
1879        <context ref="at-font-feature-values-block"/>
1880      </include>
1881    </context>
1882
1883    <!--
1884    @import <url(...)|"url"> <media-queries>?;
1885    -->
1886
1887    <context id="at-import">
1888      <start>@import\%]</start>
1889      <include>
1890        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1891        <context ref="comment"/>
1892        <context ref="url"/>
1893        <context ref="media-queries"/>
1894        <context ref="string-value"/>
1895        <context ref="at-rule-delimiter"/>
1896      </include>
1897    </context>
1898
1899    <!--
1900    @keyframes <custom name|"custom name"> {
1901        <from|to|%> <style-block>
1902    }
1903    -->
1904
1905    <context id="keyframe-selector" style-ref="at-rule-inner-selector">
1906      <keyword>from</keyword>
1907      <keyword>to</keyword>
1908    </context>
1909
1910    <context id="keyframe-selector-value">
1911      <include>
1912        <context ref="percentage" style-ref="at-rule-inner-selector"/>
1913        <context ref="keyframe-selector"/>
1914      </include>
1915    </context>
1916
1917    <context id="at-keyframes-block" end-parent="true">
1918      <start>{</start>
1919      <end>}</end>
1920      <include>
1921        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
1922        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
1923        <context ref="comment"/>
1924        <context ref="keyframe-selector-value"/>
1925        <context ref="style-block"/>
1926      </include>
1927    </context>
1928
1929    <context id="vendor-specific-at-keyframes">
1930      <start>@\%{vendor-specific-prefix}keyframes\%]</start>
1931      <include>
1932        <context sub-pattern="0" where="start" style-ref="vendor-specific"/>
1933        <context ref="comment"/>
1934        <context ref="string-value"/>
1935        <context ref="name-value"/>
1936        <context ref="at-keyframes-block"/>
1937      </include>
1938    </context>
1939
1940    <context id="at-keyframes">
1941      <start>@keyframes\%]</start>
1942      <include>
1943        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1944        <context ref="comment"/>
1945        <context ref="string-value"/>
1946        <context ref="name-value"/>
1947        <context ref="at-keyframes-block"/>
1948      </include>
1949    </context>
1950
1951    <!--
1952    @media <media-queries> <css-block>
1953    -->
1954
1955    <context id="at-media">
1956      <start>@media\%]</start>
1957      <include>
1958        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1959        <context ref="comment"/>
1960        <context ref="media-queries"/>
1961        <context ref="at-rule-css-block"/>
1962      </include>
1963    </context>
1964
1965    <!--
1966    @namespace <namespace>? <url(...)|"url">;
1967    -->
1968
1969    <context id="namespace-value">
1970      <include>
1971        <context ref="name" style-ref="namespace"/>
1972      </include>
1973    </context>
1974
1975    <context id="at-namespace">
1976      <start>@namespace\%]</start>
1977      <include>
1978        <context sub-pattern="0" where="start" style-ref="at-rule"/>
1979        <context ref="comment"/>
1980        <context ref="url"/>
1981        <context ref="string-value"/>
1982        <context ref="namespace-value"/>
1983        <context ref="at-rule-delimiter"/>
1984      </include>
1985    </context>
1986
1987    <!--
1988    @page <custom name>?<pseudo-page>* (, <custom name>?<pseudo-page>*)* {
1989        <declaration>*
1990        (@<page-margin-box-type> <style-block>)*
1991    }
1992    -->
1993
1994    <context id="pseudo-pages" style-ref="pseudo-class">
1995      <prefix>:</prefix>
1996      <keyword>blank</keyword>
1997      <keyword>first</keyword>
1998      <keyword>left</keyword>
1999      <keyword>right</keyword>
2000    </context>
2001
2002    <context id="page-margin-box-types" style-ref="at-rule-inner-selector">
2003      <prefix>@</prefix>
2004      <keyword>bottom-center</keyword>
2005      <keyword>bottom-left-corner</keyword>
2006      <keyword>bottom-left</keyword>
2007      <keyword>bottom-right-corner</keyword>
2008      <keyword>bottom-right</keyword>
2009      <keyword>left-bottom</keyword>
2010      <keyword>left-middle</keyword>
2011      <keyword>left-top</keyword>
2012      <keyword>right-bottom</keyword>
2013      <keyword>right-middle</keyword>
2014      <keyword>right-top</keyword>
2015      <keyword>top-center</keyword>
2016      <keyword>top-left-corner</keyword>
2017      <keyword>top-left</keyword>
2018      <keyword>top-right-corner</keyword>
2019      <keyword>top-right</keyword>
2020    </context>
2021
2022    <context id="at-page-block" end-parent="true">
2023      <start>{</start>
2024      <end>}</end>
2025      <include>
2026        <context sub-pattern="0" where="start" style-ref="block-delimiter"/>
2027        <context sub-pattern="0" where="end" style-ref="block-delimiter"/>
2028        <context ref="comment"/>
2029        <context ref="declaration"/>
2030        <context ref="page-margin-box-types"/>
2031        <context ref="style-block"/>
2032      </include>
2033    </context>
2034
2035    <context id="at-page">
2036      <start>@page\%]</start>
2037      <include>
2038        <context sub-pattern="0" where="start" style-ref="at-rule"/>
2039        <context ref="comment"/>
2040        <context ref="pseudo-pages"/>
2041        <context ref="name-value"/>
2042        <context ref="comma"/>
2043        <context ref="at-page-block"/>
2044      </include>
2045    </context>
2046
2047    <!--
2048    @supports <test> <css-block>
2049    -->
2050
2051    <context id="at-supports-operators" style-ref="at-rule-operator">
2052      <keyword>and</keyword>
2053      <keyword>not</keyword>
2054      <keyword>or</keyword>
2055    </context>
2056
2057    <define-regex id="at-supports-declaration-value-end" extended="true">
2058      (?:
2059        \%{test-value-end} |
2060        (?= ! )
2061      )
2062    </define-regex>
2063
2064    <context id="at-supports-declaration-value">
2065      <start>:</start>
2066      <end>\%{at-supports-declaration-value-end}</end>
2067      <include>
2068        <context sub-pattern="0" where="start" style-ref="delimiter"/>
2069        <context ref="comment"/>
2070        <context ref="declaration-value-content"/>
2071      </include>
2072    </context>
2073
2074    <context id="at-supports-modifier">
2075      <start>!</start>
2076      <end>\%{at-supports-declaration-value-end}</end>
2077      <include>
2078        <context sub-pattern="0" where="start" style-ref="modifier"/>
2079        <context ref="comment"/>
2080        <context ref="modifier-content"/>
2081      </include>
2082    </context>
2083
2084    <context id="at-supports-test">
2085      <start>\(</start>
2086      <end>\)</end>
2087      <include>
2088        <context sub-pattern="0" where="start" style-ref="test-delimiter"/>
2089        <context sub-pattern="0" where="end" style-ref="test-delimiter"/>
2090        <context ref="comment"/>
2091        <context ref="at-supports-test"/>
2092        <context ref="at-supports-operators"/>
2093        <context ref="declaration-property"/>
2094        <context ref="at-supports-declaration-value"/>
2095        <context ref="at-supports-modifier"/> <!-- allowed here but has no effect -->
2096      </include>
2097    </context>
2098
2099    <context id="at-supports">
2100      <start>@supports\%]</start>
2101      <include>
2102        <context sub-pattern="0" where="start" style-ref="at-rule"/>
2103        <context ref="comment"/>
2104        <context ref="at-supports-test"/>
2105        <context ref="at-supports-operators"/>
2106        <context ref="at-rule-css-block"/>
2107      </include>
2108    </context>
2109
2110    <!-- all at-rules -->
2111
2112    <context id="at-rule">
2113      <include>
2114        <context ref="vendor-specific-at-keyframes"/>
2115        <context ref="vendor-specific-at-rule"/>
2116        <context ref="at-charset"/>
2117        <context ref="at-charset-error"/>
2118        <context ref="at-font-face"/>
2119        <context ref="at-font-feature-values"/>
2120        <context ref="at-import"/>
2121        <context ref="at-keyframes"/>
2122        <context ref="at-media"/>
2123        <context ref="at-namespace"/>
2124        <context ref="at-page"/>
2125        <context ref="at-supports"/>
2126      </include>
2127    </context>
2128
2129
2130    <!-- selectors -->
2131
2132    <!-- namespace qualifier -->
2133
2134    <context id="namespace-qualifier">
2135      <match>(\%{identifier}|\*)?(\|)</match>
2136      <include>
2137        <context sub-pattern="1" style-ref="namespace"/>
2138        <context sub-pattern="2" style-ref="namespace-qualifier"/>
2139      </include>
2140    </context>
2141
2142    <!-- simple selectors -->
2143
2144    <context id="id-selector" style-ref="id-selector">
2145      <match>#\%{identifier}</match>
2146    </context>
2147
2148    <context id="class-selector" style-ref="class-selector">
2149      <match>\.\%{identifier}</match>
2150    </context>
2151
2152    <context id="type-selector" style-ref="type-selector">
2153      <match>\%{identifier}</match>
2154    </context>
2155
2156    <context id="universal-selector" style-ref="universal-selector">
2157      <match>\*</match>
2158    </context>
2159
2160    <context id="attribute-selector-attribute-name">
2161      <match>(?&lt;=\[)\s*(\%{identifier})</match>
2162      <include>
2163        <context sub-pattern="1" style-ref="attribute-selector-name"/>
2164      </include>
2165    </context>
2166
2167    <context id="attribute-selector-operator" style-ref="attribute-selector-operator">
2168      <match>[~|^$*]?=</match>
2169    </context>
2170
2171    <context id="attribute-selector-content">
2172      <include>
2173        <context ref="string-value"/>
2174        <context ref="attribute-selector-attribute-name"/>
2175        <context ref="attribute-selector-operator"/>
2176      </include>
2177    </context>
2178
2179    <context id="attribute-selector">
2180      <start>\[</start>
2181      <end>]</end>
2182      <include>
2183        <context sub-pattern="0" where="start" style-ref="attribute-selector"/>
2184        <context sub-pattern="0" where="end" style-ref="attribute-selector"/>
2185        <context ref="comment"/>
2186        <context ref="attribute-selector-content"/>
2187      </include>
2188    </context>
2189
2190    <context id="simple-selector">
2191      <include>
2192        <context ref="id-selector"/>
2193        <context ref="class-selector"/>
2194        <context ref="type-selector"/>
2195        <context ref="universal-selector"/>
2196        <context ref="attribute-selector"/>
2197      </include>
2198    </context>
2199
2200    <!-- combinators -->
2201
2202    <!-- technically, this should include the space character (descendant combinator) -->
2203    <context id="combinator" style-ref="combinator">
2204      <match>[&gt;+~]</match>
2205    </context>
2206
2207    <!-- pseudo-elements -->
2208
2209    <context id="vendor-specific-pseudo-element" style-ref="vendor-specific">
2210      <match>::\%{vendor-specific-identifier}</match>
2211    </context>
2212
2213    <context id="single-colon-pseudo-elements" style-ref="pseudo-element">
2214      <prefix>::?</prefix>
2215      <keyword>after</keyword>
2216      <keyword>before</keyword>
2217      <keyword>first-letter</keyword>
2218      <keyword>first-line</keyword>
2219    </context>
2220
2221    <context id="pseudo-elements" style-ref="pseudo-element">
2222      <prefix>::</prefix>
2223      <keyword>placeholder</keyword>
2224      <keyword>selection</keyword>
2225    </context>
2226
2227    <context id="pseudo-element">
2228      <include>
2229        <context ref="vendor-specific-pseudo-element"/>
2230        <context ref="single-colon-pseudo-elements"/>
2231        <context ref="pseudo-elements"/>
2232      </include>
2233    </context>
2234
2235    <!-- pseudo-classes -->
2236
2237    <context id="vendor-specific-pseudo-class" style-ref="vendor-specific">
2238      <match>:\%{vendor-specific-identifier}</match>
2239    </context>
2240
2241    <context id="pseudo-classes" style-ref="pseudo-class">
2242      <prefix>:</prefix>
2243      <keyword>active</keyword>
2244      <keyword>checked</keyword>
2245      <keyword>default</keyword>
2246      <keyword>disabled</keyword>
2247      <keyword>empty</keyword>
2248      <keyword>enabled</keyword>
2249      <keyword>first-child</keyword>
2250      <keyword>first-of-type</keyword>
2251      <keyword>focus</keyword>
2252      <keyword>hover</keyword>
2253      <keyword>in-range</keyword>
2254      <keyword>indeterminate</keyword>
2255      <keyword>invalid</keyword>
2256      <keyword>lang</keyword>
2257      <keyword>last-child</keyword>
2258      <keyword>last-of-type</keyword>
2259      <keyword>link</keyword>
2260      <keyword>not</keyword>
2261      <keyword>nth-child</keyword>
2262      <keyword>nth-last-child</keyword>
2263      <keyword>nth-last-of-type</keyword>
2264      <keyword>nth-of-type</keyword>
2265      <keyword>only-child</keyword>
2266      <keyword>only-of-type</keyword>
2267      <keyword>optional</keyword>
2268      <keyword>out-of-range</keyword>
2269      <keyword>read-only</keyword>
2270      <keyword>read-write</keyword>
2271      <keyword>required</keyword>
2272      <keyword>root</keyword>
2273      <keyword>target</keyword>
2274      <keyword>valid</keyword>
2275      <keyword>visited</keyword>
2276    </context>
2277
2278    <context id="pseudo-class">
2279      <include>
2280        <context ref="vendor-specific-pseudo-class"/>
2281        <context ref="pseudo-classes"/>
2282      </include>
2283    </context>
2284
2285    <!-- pseudo-class arguments -->
2286
2287    <context id="lang-pseudo-class-argument-content">
2288      <include>
2289        <context ref="name-value"/>
2290      </include>
2291    </context>
2292
2293    <context id="lang-pseudo-class-argument">
2294      <start>(?&lt;=:lang)\(</start>
2295      <end>\)</end>
2296      <include>
2297        <context sub-pattern="0" where="start" style-ref="pseudo-class"/>
2298        <context sub-pattern="0" where="end" style-ref="pseudo-class"/>
2299        <context ref="comment"/>
2300        <context ref="lang-pseudo-class-argument-content"/>
2301      </include>
2302    </context>
2303
2304    <context id="not-pseudo-class-nested-not-error" style-ref="error">
2305      <start>:not\(</start>
2306      <end>\)</end>
2307      <include>
2308        <context ref="pseudo-class-argument"/>
2309      </include>
2310    </context>
2311
2312    <context id="not-pseudo-class-nested-pseudo-element-error">
2313      <include>
2314        <context ref="vendor-specific-pseudo-element" style-ref="error"/>
2315        <context ref="single-colon-pseudo-elements" style-ref="error"/>
2316        <context ref="pseudo-elements" style-ref="error"/>
2317      </include>
2318    </context>
2319
2320    <context id="not-pseudo-class-argument">
2321      <start>(?&lt;=:not)\(</start>
2322      <end>\)</end>
2323      <include>
2324        <context sub-pattern="0" where="start" style-ref="pseudo-class"/>
2325        <context sub-pattern="0" where="end" style-ref="pseudo-class"/>
2326        <context ref="comment"/>
2327        <context ref="not-pseudo-class-nested-not-error"/>
2328        <context ref="not-pseudo-class-nested-pseudo-element-error"/>
2329        <context ref="simple-selector"/>
2330        <context ref="combinator"/>
2331        <context ref="pseudo-class"/>
2332        <context ref="pseudo-class-argument"/>
2333        <context ref="comma"/>
2334      </include>
2335    </context>
2336
2337    <context id="nth-pseudo-class-argument-keywords" once-only="true" style-ref="keyword">
2338      <keyword>even</keyword>
2339      <keyword>odd</keyword>
2340    </context>
2341
2342    <context id="nth-pseudo-class-argument-expression" once-only="true" style-ref="expression">
2343      <match extended="true">
2344        (
2345          \%{integer}? n ( \s* [+-] \s* \%{integer-magnitude} )? |
2346          \%{integer}
2347        )
2348      </match>
2349    </context>
2350
2351    <context id="nth-pseudo-class-argument-content">
2352      <include>
2353        <context ref="nth-pseudo-class-argument-keywords"/>
2354        <context ref="nth-pseudo-class-argument-expression"/>
2355      </include>
2356    </context>
2357
2358    <context id="nth-pseudo-class-argument">
2359      <start extended="true">
2360        (?&lt;=
2361          :nth-child |
2362          :nth-last-child |
2363          :nth-of-type |
2364          :nth-last-of-type
2365        )
2366        \(
2367      </start>
2368      <end>\)</end>
2369      <include>
2370        <context sub-pattern="0" where="start" style-ref="pseudo-class"/>
2371        <context sub-pattern="0" where="end" style-ref="pseudo-class"/>
2372        <context ref="comment"/>
2373        <context ref="nth-pseudo-class-argument-content"/>
2374      </include>
2375    </context>
2376
2377    <context id="pseudo-class-argument">
2378      <include>
2379        <context ref="lang-pseudo-class-argument"/>
2380        <context ref="not-pseudo-class-argument"/>
2381        <context ref="nth-pseudo-class-argument"/>
2382      </include>
2383    </context>
2384
2385    <!-- all selectors -->
2386
2387    <context id="selector">
2388      <include>
2389        <context ref="namespace-qualifier"/>
2390        <context ref="simple-selector"/>
2391        <context ref="combinator"/>
2392        <context ref="pseudo-element"/>
2393        <context ref="pseudo-class"/>
2394        <context ref="pseudo-class-argument"/>
2395        <context ref="comma"/>
2396      </include>
2397    </context>
2398
2399
2400    <!-- main context -->
2401
2402    <context id="css" class="no-spell-check">
2403      <include>
2404        <context ref="comment"/>
2405        <context ref="at-rule"/>
2406        <context ref="selector"/>
2407        <context ref="style-block"/>
2408      </include>
2409    </context>
2410
2411  </definitions>
2412</language>
2413