changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/lib/dat/css.lisp

changeset 667: bb8aa1eda12b
parent: 4d8451fe5423
author: Richard Westhaver <ellis@rwest.io>
date: Mon, 23 Sep 2024 17:03:54 -0400
permissions: -rw-r--r--
description: graph, css vars, corfu-terminal fix
1 ;;; css.lisp --- Cascading Style Sheets
2 
3 ;; https://www.w3.org/Style/CSS/
4 
5 ;;; Commentary:
6 
7 ;; for a list of all properties refer to: https://www.w3.org/Style/CSS/all-properties.en.html
8 
9 ;; for other web data: https://github.com/mdn/data/tree/main
10 
11 ;;; Code:
12 (in-package :dat/css)
13 
14 ;; SHEET ::= (BLOCK*)
15 ;; BLOCK ::= (:BLOCK SELECTOR PROPERTY*)
16 ;; SELECTOR ::= (string*)
17 ;; PROPERTY ::= (:PROPERTY string string)
18 
19 ;;; Vars
20 ;; The following variables are derived from Emacs css-mode:
21 ;; https://github.com/emacs-mirror/emacs/blob/master/lisp/textmodes/css-mode.el
22 
23 (defvar css-pseudo-class-ids
24  '("active" "checked" "default" "disabled" "empty" "enabled" "first"
25  "first-child" "first-of-type" "focus" "focus-within" "hover"
26  "in-range" "indeterminate" "invalid" "lang" "last-child"
27  "last-of-type" "left" "link" "not" "nth-child" "nth-last-child"
28  "nth-last-of-type" "nth-of-type" "only-child" "only-of-type"
29  "optional" "out-of-range" "read-only" "read-write" "required"
30  "right" "root" "scope" "target" "valid" "visited")
31  "Identifiers for pseudo-classes.")
32 
33 (defvar *css-pseudo-element-ids*
34  '("after" "before" "first-letter" "first-line" "selection")
35  "Identifiers for pseudo-elements.")
36 
37 (defvar *css-at-ids*
38  '("charset" "font-face" "import" "keyframes" "media" "namespace"
39  "page" "supports")
40  "Identifiers that appear in the form @foo.")
41 
42 (defvar *scss-at-ids*
43  '("at-root" "content" "debug" "each" "else" "else if" "error" "extend"
44  "for" "function" "if" "import" "include" "mixin" "return" "use" "warn"
45  "while")
46  "Additional identifiers that appear in the form @foo in SCSS.")
47 
48 (defvar *css-bang-ids*
49  '("important")
50  "Identifiers that appear in the form !foo.")
51 
52 (defvar *scss-bang-ids*
53  '("default" "global" "optional")
54  "Additional identifiers that appear in the form !foo in SCSS.")
55 
56 (defvar *css-descriptor-ids*
57  '("ascent" "baseline" "bbox" "cap-height" "centerline" "definition-src"
58  "descent" "font-family" "font-size" "font-stretch" "font-style"
59  "font-variant" "font-weight" "mathline" "panose-1" "slope" "src" "stemh"
60  "stemv" "topline" "unicode-range" "units-per-em" "widths" "x-height")
61  "Identifiers for font descriptors.")
62 
63 (defvar *css-media-ids*
64  '("all" "aural" "bitmap" "continuous" "grid" "paged" "static" "tactile"
65  "visual")
66  "Identifiers for types of media.")
67 
68 (defvar *css-property-alist*
69  ;; CSS 2.1 properties (https://www.w3.org/TR/CSS21/propidx.html).
70  ;;
71  ;; Properties duplicated by any of the CSS3 modules below have been
72  ;; removed.
73  '(("azimuth" angle "left-side" "far-left" "left" "center-left"
74  "center" "center-right" "right" "far-right" "right-side" "behind"
75  "leftwards" "rightwards")
76  ("border-collapse" "collapse" "separate")
77  ("border-spacing" length)
78  ("bottom" length percentage "auto")
79  ("caption-side" "top" "bottom")
80  ("clear" "none" "left" "right" "both")
81  ("content" "normal" "none" string uri counter "attr()"
82  "open-quote" "close-quote" "no-open-quote" "no-close-quote")
83  ("counter-increment" identifier integer "none")
84  ("counter-reset" identifier integer "none")
85  ("cue" cue-before cue-after)
86  ("cue-after" uri "none")
87  ("cue-before" uri "none")
88  ("display" "inline" "block" "list-item" "inline-block" "table"
89  "inline-table" "table-row-group" "table-header-group"
90  "table-footer-group" "table-row" "table-column-group"
91  "table-column" "table-cell" "table-caption" "none"
92  ;; CSS Flexible Box Layout Module Level 1
93  ;; (https://www.w3.org/TR/css3-flexbox/#valdef-display-flex)
94  "flex" "inline-flex"
95  ;; CSS Grid Layout Module Level 1
96  ;; (https://www.w3.org/TR/css-grid-1/#grid-containers)
97  "grid" "inline-grid" "subgrid")
98  ("elevation" angle "below" "level" "above" "higher" "lower")
99  ("empty-cells" "show" "hide")
100  ("float" "left" "right" "none")
101  ("height" length percentage "auto")
102  ("left" length percentage "auto")
103  ("line-height" "normal" number length percentage)
104  ("list-style" list-style-type list-style-position
105  list-style-image)
106  ("list-style-image" uri "none")
107  ("list-style-position" "inside" "outside")
108  ("list-style-type" "disc" "circle" "square" "decimal"
109  "decimal-leading-zero" "lower-roman" "upper-roman" "lower-greek"
110  "lower-latin" "upper-latin" "armenian" "georgian" "lower-alpha"
111  "upper-alpha" "none")
112  ("margin" margin-width)
113  ("margin-bottom" margin-width)
114  ("margin-left" margin-width)
115  ("margin-right" margin-width)
116  ("margin-top" margin-width)
117  ("max-height" length percentage "none")
118  ("max-width" length percentage "none")
119  ("min-height" length percentage)
120  ("min-width" length percentage)
121  ("padding" padding-width)
122  ("padding-bottom" padding-width)
123  ("padding-left" padding-width)
124  ("padding-right" padding-width)
125  ("padding-top" padding-width)
126  ("page-break-after" "auto" "always" "avoid" "left" "right")
127  ("page-break-before" "auto" "always" "avoid" "left" "right")
128  ("page-break-inside" "avoid" "auto")
129  ("pause" time percentage)
130  ("pause-after" time percentage)
131  ("pause-before" time percentage)
132  ("pitch" frequency "x-low" "low" "medium" "high" "x-high")
133  ("pitch-range" number)
134  ("play-during" uri "mix" "repeat" "auto" "none")
135  ("position" "static" "relative" "absolute" "fixed")
136  ("quotes" string "none")
137  ("richness" number)
138  ("right" length percentage "auto")
139  ("speak" "normal" "none" "spell-out")
140  ("speak-header" "once" "always")
141  ("speak-numeral" "digits" "continuous")
142  ("speak-punctuation" "code" "none")
143  ("speech-rate" number "x-slow" "slow" "medium" "fast" "x-fast"
144  "faster" "slower")
145  ("stress" number)
146  ("table-layout" "auto" "fixed")
147  ("top" length percentage "auto")
148  ("vertical-align" "baseline" "sub" "super" "top" "text-top"
149  "middle" "bottom" "text-bottom" percentage length)
150  ("visibility" "visible" "hidden" "collapse")
151  ("voice-family" specific-voice generic-voice specific-voice
152  generic-voice)
153  ("volume" number percentage "silent" "x-soft" "soft" "medium"
154  "loud" "x-loud")
155  ("width" length percentage "auto")
156  ("z-index" "auto" integer)
157 
158  ;; CSS Animations
159  ;; (https://www.w3.org/TR/css3-animations/#property-index)
160  ("animation" single-animation-name time single-timing-function
161  single-animation-iteration-count single-animation-direction
162  single-animation-fill-mode single-animation-play-state)
163  ("animation-delay" time)
164  ("animation-direction" single-animation-direction)
165  ("animation-duration" time)
166  ("animation-fill-mode" single-animation-fill-mode)
167  ("animation-iteration-count" single-animation-iteration-count)
168  ("animation-name" single-animation-name)
169  ("animation-play-state" single-animation-play-state)
170  ("animation-timing-function" single-timing-function)
171 
172  ;; CSS Backgrounds and Borders Module Level 3
173  ;; (https://www.w3.org/TR/css3-background/#property-index)
174  ("background" bg-layer final-bg-layer)
175  ("background-attachment" attachment)
176  ("background-clip" box)
177  ("background-color" color)
178  ("background-image" bg-image)
179  ("background-origin" box)
180  ("background-position" position)
181  ("background-repeat" repeat-style)
182  ("background-size" bg-size)
183  ("border" line-width line-style color)
184  ("border-bottom" line-width line-style color)
185  ("border-bottom-color" color)
186  ("border-bottom-left-radius" length percentage)
187  ("border-bottom-right-radius" length percentage)
188  ("border-bottom-style" line-style)
189  ("border-bottom-width" line-width)
190  ("border-color" color)
191  ("border-image" border-image-source border-image-slice
192  border-image-width border-image-outset border-image-repeat)
193  ("border-image-outset" length number)
194  ("border-image-repeat" "stretch" "repeat" "round" "space")
195  ("border-image-slice" number percentage "fill")
196  ("border-image-source" "none" image)
197  ("border-image-width" length percentage number "auto")
198  ("border-left" line-width line-style color)
199  ("border-left-color" color)
200  ("border-left-style" line-style)
201  ("border-left-width" line-width)
202  ("border-radius" length percentage)
203  ("border-right" line-width line-style color)
204  ("border-right-color" color)
205  ("border-right-style" line-style)
206  ("border-right-width" line-width)
207  ("border-style" line-style)
208  ("border-top" line-width line-style color)
209  ("border-top-color" color)
210  ("border-top-left-radius" length percentage)
211  ("border-top-right-radius" length percentage)
212  ("border-top-style" line-style)
213  ("border-top-width" line-width)
214  ("border-width" line-width)
215  ("box-shadow" "none" shadow)
216 
217  ;; CSS Basic User Interface Module Level 3 (CSS3 UI)
218  ;; (https://www.w3.org/TR/css3-ui/#property-index)
219  ("box-sizing" "content-box" "border-box")
220  ("caret-color" "auto" color)
221  ("cursor" uri x y "auto" "default" "none" "context-menu" "help"
222  "pointer" "progress" "wait" "cell" "crosshair" "text"
223  "vertical-text" "alias" "copy" "move" "no-drop" "not-allowed"
224  "grab" "grabbing" "e-resize" "n-resize" "ne-resize" "nw-resize"
225  "s-resize" "se-resize" "sw-resize" "w-resize" "ew-resize"
226  "ns-resize" "nesw-resize" "nwse-resize" "col-resize" "row-resize"
227  "all-scroll" "zoom-in" "zoom-out")
228  ("nav-down" "auto" id "current" "root" target-name)
229  ("nav-left" "auto" id "current" "root" target-name)
230  ("nav-right" "auto" id "current" "root" target-name)
231  ("nav-up" "auto" id "current" "root" target-name)
232  ("outline" outline-color outline-style outline-width)
233  ("outline-color" color "invert")
234  ("outline-offset" length)
235  ("outline-style" "auto" border-style)
236  ("outline-width" border-width)
237  ("resize" "none" "both" "horizontal" "vertical")
238  ("text-overflow" "clip" "ellipsis" string)
239 
240  ;; CSS Cascading and Inheritance Level 3
241  ;; (https://www.w3.org/TR/css-cascade-3/#property-index)
242  ("all")
243 
244  ;; CSS Color Module Level 3
245  ;; (https://www.w3.org/TR/css3-color/#property)
246  ("color" color)
247  ("opacity" alphavalue)
248 
249  ;; CSS Containment Module Level 2
250  ;; (https://www.w3.org/TR/css-contain-2/#property-index)
251  ("contain" "none" "strict" "content" "size" "layout" "style" "paint")
252  ("content-visibility" "visible" "auto" "hidden")
253 
254  ;; CSS Grid Layout Module Level 2
255  ;; (https://www.w3.org/TR/css-grid-2/#property-index)
256  ("grid" grid-template grid-template-rows "auto-flow" "dense"
257  grid-auto-columns grid-auto-rows grid-template-columns)
258  ("grid-area" grid-line)
259  ("grid-auto-columns" track-size)
260  ("grid-auto-flow" "row" "column" "dense")
261  ("grid-auto-rows" track-size)
262  ("grid-column" grid-line)
263  ("grid-column-end" grid-line)
264  ("grid-column-gap" length-percentage)
265  ("grid-column-start" grid-line)
266  ("grid-gap" grid-row-gap grid-column-gap)
267  ("grid-row" grid-line)
268  ("grid-row-end" grid-line)
269  ("grid-row-gap" length-percentage)
270  ("grid-row-start" grid-line)
271  ("grid-template" "none" grid-template-rows grid-template-columns
272  line-names string track-size line-names explicit-track-list)
273  ("grid-template-areas" "none" string)
274  ("grid-template-columns" "none" track-list auto-track-list "subgrid")
275  ("grid-template-rows" "none" track-list auto-track-list "subgrid")
276 
277  ;; CSS Box Alignment Module Level 3
278  ;; (https://www.w3.org/TR/css-align-3/#property-index)
279  ("align-content" baseline-position content-distribution
280  overflow-position content-position)
281  ("align-items" "normal" "stretch" baseline-position
282  overflow-position self-position)
283  ("align-self" "auto" "normal" "stretch" baseline-position
284  overflow-position self-position)
285  ("column-gap" "normal" length-percentage)
286  ("gap" row-gap column-gap)
287  ("justify-content" "normal" content-distribution overflow-position
288  content-position "left" "right")
289  ("justify-items" "normal" "stretch" baseline-position
290  overflow-position self-position "left" "right" "legacy" "center")
291  ("justify-self" "auto" "normal" "stretch" baseline-position
292  overflow-position self-position "left" "right")
293  ("place-content" align-content justify-content)
294  ("place-items" align-items justify-items)
295  ("place-self" justify-self align-self)
296  ("row-gap" "normal" length-percentage)
297 
298  ;; CSS Flexible Box Layout Module Level 1
299  ;; (https://www.w3.org/TR/css-flexbox-1/#property-index)
300  ("flex" "none" flex-grow flex-shrink flex-basis)
301  ("flex-basis" "auto" "content" width)
302  ("flex-direction" "row" "row-reverse" "column" "column-reverse")
303  ("flex-flow" flex-direction flex-wrap)
304  ("flex-grow" number)
305  ("flex-shrink" number)
306  ("flex-wrap" "nowrap" "wrap" "wrap-reverse")
307  ("order" integer)
308 
309  ;; CSS Fonts Module Level 3
310  ;; (https://www.w3.org/TR/css3-fonts/#property-index)
311  ("font" font-style font-variant-css21 font-weight font-stretch
312  font-size line-height font-family "caption" "icon" "menu"
313  "message-box" "small-caption" "status-bar")
314  ("font-family" family-name generic-family)
315  ("font-feature-settings" "normal" feature-tag-value)
316  ("font-kerning" "auto" "normal" "none")
317  ("font-language-override" "normal" string)
318  ("font-size" absolute-size relative-size length percentage)
319  ("font-size-adjust" "none" number)
320  ("font-stretch" "normal" "ultra-condensed" "extra-condensed"
321  "condensed" "semi-condensed" "semi-expanded" "expanded"
322  "extra-expanded" "ultra-expanded")
323  ("font-style" "normal" "italic" "oblique")
324  ("font-synthesis" "none" "weight" "style")
325  ("font-variant" "normal" "none" common-lig-values
326  discretionary-lig-values historical-lig-values
327  contextual-alt-values "stylistic()" "historical-forms"
328  "styleset()" "character-variant()" "swash()" "ornaments()"
329  "annotation()" "small-caps" "all-small-caps" "petite-caps"
330  "all-petite-caps" "unicase" "titling-caps" numeric-figure-values
331  numeric-spacing-values numeric-fraction-values "ordinal"
332  "slashed-zero" east-asian-variant-values east-asian-width-values
333  "ruby")
334  ("font-variant-alternates" "normal" "stylistic()"
335  "historical-forms" "styleset()" "character-variant()" "swash()"
336  "ornaments()" "annotation()")
337  ("font-variant-caps" "normal" "small-caps" "all-small-caps"
338  "petite-caps" "all-petite-caps" "unicase" "titling-caps")
339  ("font-variant-east-asian" "normal" east-asian-variant-values
340  east-asian-width-values "ruby")
341  ("font-variant-ligatures" "normal" "none" common-lig-values
342  discretionary-lig-values historical-lig-values
343  contextual-alt-values)
344  ("font-variant-numeric" "normal" numeric-figure-values
345  numeric-spacing-values numeric-fraction-values "ordinal"
346  "slashed-zero")
347  ("font-variant-position" "normal" "sub" "super")
348  ("font-weight" "normal" "bold" "bolder" "lighter" "100" "200"
349  "300" "400" "500" "600" "700" "800" "900")
350 
351  ;; CSS Fragmentation Module Level 3
352  ;; (https://www.w3.org/TR/css-break-3/#property-index)
353  ("box-decoration-break" "slice" "clone")
354  ("break-after" "auto" "avoid" "avoid-page" "page" "left" "right"
355  "recto" "verso" "avoid-column" "column" "avoid-region" "region")
356  ("break-before" "auto" "avoid" "avoid-page" "page" "left" "right"
357  "recto" "verso" "avoid-column" "column" "avoid-region" "region")
358  ("break-inside" "auto" "avoid" "avoid-page" "avoid-column"
359  "avoid-region")
360  ("orphans" integer)
361  ("widows" integer)
362 
363  ;; CSS Masking Module Level 1
364  ;; (https://www.w3.org/TR/css-masking-1/#property-index)
365  ("clip-path" clip-source basic-shape geometry-box "none")
366  ("clip-rule" "nonzero" "evenodd")
367  ("mask-image" mask-reference)
368  ("mask-mode" masking-mode)
369  ("mask-repeat" repeat-style)
370  ("mask-position" position)
371  ("mask-clip" geometry-box "no-clip")
372  ("mask-origin" geometry-box)
373  ("mask-size" bg-size)
374  ("mask-composite" compositing-operator)
375  ("mask" mask-layer)
376  ("mask-border-source" "none" image)
377  ("mask-border-mode" "luminance" "alpha")
378  ("mask-border-slice" number percentage "fill")
379  ("mask-border-width" length percentage number "auto")
380  ("mask-border-outset" length number)
381  ("mask-border-repeat" "stretch" "repeat" "round" "space")
382  ("mask-border" mask-border-source mask-border-slice
383  mask-border-width mask-border-outset mask-border-repeat
384  mask-border-mode)
385  ("mask-type" "luminance" "alpha")
386  ("clip" "rect()" "auto")
387 
388  ;; CSS Multi-column Layout Module Level 1
389  ;; (https://www.w3.org/TR/css3-multicol/#property-index)
390  ;; "break-after", "break-before", and "break-inside" are left out
391  ;; below, because they're already included in CSS Fragmentation
392  ;; Module Level 3.
393  ("column-count" "auto" integer)
394  ("column-fill" "auto" "balance" "balance-all")
395  ("column-rule" column-rule-width column-rule-style
396  column-rule-color)
397  ("column-rule-color" color)
398  ("column-rule-style" line-style)
399  ("column-rule-width" line-width)
400  ("column-span" "none" "all")
401  ("column-width" "auto" length)
402  ("columns" column-width column-count)
403 
404  ;; CSS Overflow Module Level 3
405  ;; (https://www.w3.org/TR/css-overflow-3/#property-index)
406  ("max-lines" "none" integer)
407  ("overflow" "visible" "hidden" "scroll" "auto" "paged-x" "paged-y"
408  "paged-x-controls" "paged-y-controls" "fragments")
409  ("overflow-x" "visible" "hidden" "scroll" "auto" "paged-x"
410  "paged-y" "paged-x-controls" "paged-y-controls" "fragments")
411  ("overflow-y" "visible" "hidden" "scroll" "auto" "paged-x"
412  "paged-y" "paged-x-controls" "paged-y-controls" "fragments")
413 
414  ;; CSS Text Decoration Module Level 3
415  ;; (https://dev.w3.org/csswg/css-text-decor-3/#property-index)
416  ("text-decoration" text-decoration-line text-decoration-style
417  text-decoration-color)
418  ("text-decoration-color" color)
419  ("text-decoration-line" "none" "underline" "overline"
420  "line-through" "blink")
421  ("text-decoration-skip" "none" "objects" "spaces" "ink" "edges"
422  "box-decoration")
423  ("text-decoration-style" "solid" "double" "dotted" "dashed"
424  "wavy")
425  ("text-emphasis" text-emphasis-style text-emphasis-color)
426  ("text-emphasis-color" color)
427  ("text-emphasis-position" "over" "under" "right" "left")
428  ("text-emphasis-style" "none" "filled" "open" "dot" "circle"
429  "double-circle" "triangle" "sesame" string)
430  ("text-shadow" "none" length color)
431  ("text-underline-position" "auto" "under" "left" "right")
432 
433  ;; CSS Text Module Level 3
434  ;; (https://www.w3.org/TR/css3-text/#property-index)
435  ("hanging-punctuation" "none" "first" "force-end" "allow-end"
436  "last")
437  ("hyphens" "none" "manual" "auto")
438  ("letter-spacing" "normal" length)
439  ("line-break" "auto" "loose" "normal" "strict")
440  ("overflow-wrap" "normal" "break-word")
441  ("tab-size" integer length)
442  ("text-align" "start" "end" "left" "right" "center" "justify"
443  "match-parent")
444  ("text-align-last" "auto" "start" "end" "left" "right" "center"
445  "justify")
446  ("text-indent" length percentage)
447  ("text-justify" "auto" "none" "inter-word" "distribute")
448  ("text-transform" "none" "capitalize" "uppercase" "lowercase"
449  "full-width")
450  ("white-space" "normal" "pre" "nowrap" "pre-wrap" "pre-line")
451  ("word-break" "normal" "keep-all" "break-all")
452  ("word-spacing" "normal" length percentage)
453  ("word-wrap" "normal" "break-word")
454 
455  ;; CSS Transforms Module Level 1
456  ;; (https://www.w3.org/TR/css3-2d-transforms/#property-index)
457  ("backface-visibility" "visible" "hidden")
458  ("perspective" "none" length)
459  ("perspective-origin" "left" "center" "right" "top" "bottom"
460  percentage length)
461  ("transform" "none" transform-list)
462  ("transform-origin" "left" "center" "right" "top" "bottom"
463  percentage length)
464  ("transform-style" "flat" "preserve-3d")
465 
466  ;; CSS Transitions
467  ;; (https://www.w3.org/TR/css3-transitions/#property-index)
468  ("transition" single-transition)
469  ("transition-delay" time)
470  ("transition-duration" time)
471  ("transition-property" "none" single-transition-property "all")
472  ("transition-timing-function" single-transition-timing-function)
473 
474  ;; CSS Will Change Module Level 1
475  ;; (https://www.w3.org/TR/css-will-change-1/#property-index)
476  ("will-change" "auto" animateable-feature)
477 
478  ;; CSS Writing Modes Level 3
479  ;; (https://www.w3.org/TR/css-writing-modes-3/#property-index)
480  ;; "glyph-orientation-vertical" is obsolete and left out.
481  ("direction" "ltr" "rtl")
482  ("text-combine-upright" "none" "all")
483  ("text-orientation" "mixed" "upright" "sideways")
484  ("unicode-bidi" "normal" "embed" "isolate" "bidi-override"
485  "isolate-override" "plaintext")
486  ("writing-mode" "horizontal-tb" "vertical-rl" "vertical-lr")
487 
488  ;; Filter Effects Module Level 1
489  ;; (https://www.w3.org/TR/filter-effects/#property-index)
490  ("color-interpolation-filters" "auto" "sRGB" "linearRGB")
491  ("filter" "none" filter-function-list)
492  ("flood-color" color)
493  ("flood-opacity" number percentage)
494  ("lighting-color" color)
495 
496  ;; Pointer Events
497  ;; (https://www.w3.org/TR/pointerevents/#the-touch-action-css-property)
498  ("touch-action" "auto" "none" "pan-x" "pan-y" "manipulation"))
499  "Identifiers for properties and their possible values.
500 The CAR of each entry is the name of a property, while the CDR is
501 a list of possible values for that property. String values in
502 the CDRs represent literal values, while symbols represent one of
503 the value classes found in `css-value-class-alist'. If a symbol
504 is not found in `css-value-class-alist', it's interpreted as a
505 reference back to one of the properties in this list. Some
506 symbols, such as `number' or `identifier', don't produce any
507 further value candidates, since that list would be infinite.")
508 
509 (defvar *css-property-ids*
510  (mapcar #'car *css-property-alist*)
511  "Identifiers for properties.")
512 
513 (defvar *css--color-map*
514  '(("black" . "#000000")
515  ("silver" . "#c0c0c0")
516  ("gray" . "#808080")
517  ("white" . "#ffffff")
518  ("maroon" . "#800000")
519  ("red" . "#ff0000")
520  ("purple" . "#800080")
521  ("fuchsia" . "#ff00ff")
522  ("magenta" . "#ff00ff")
523  ("green" . "#008000")
524  ("lime" . "#00ff00")
525  ("olive" . "#808000")
526  ("yellow" . "#ffff00")
527  ("navy" . "#000080")
528  ("blue" . "#0000ff")
529  ("teal" . "#008080")
530  ("aqua" . "#00ffff")
531  ("cyan" . "#00ffff")
532  ("orange" . "#ffa500")
533  ("aliceblue" . "#f0f8ff")
534  ("antiquewhite" . "#faebd7")
535  ("aquamarine" . "#7fffd4")
536  ("azure" . "#f0ffff")
537  ("beige" . "#f5f5dc")
538  ("bisque" . "#ffe4c4")
539  ("blanchedalmond" . "#ffebcd")
540  ("blueviolet" . "#8a2be2")
541  ("brown" . "#a52a2a")
542  ("burlywood" . "#deb887")
543  ("cadetblue" . "#5f9ea0")
544  ("chartreuse" . "#7fff00")
545  ("chocolate" . "#d2691e")
546  ("coral" . "#ff7f50")
547  ("cornflowerblue" . "#6495ed")
548  ("cornsilk" . "#fff8dc")
549  ("crimson" . "#dc143c")
550  ("darkblue" . "#00008b")
551  ("darkcyan" . "#008b8b")
552  ("darkgoldenrod" . "#b8860b")
553  ("darkgray" . "#a9a9a9")
554  ("darkgreen" . "#006400")
555  ("darkgrey" . "#a9a9a9")
556  ("darkkhaki" . "#bdb76b")
557  ("darkmagenta" . "#8b008b")
558  ("darkolivegreen" . "#556b2f")
559  ("darkorange" . "#ff8c00")
560  ("darkorchid" . "#9932cc")
561  ("darkred" . "#8b0000")
562  ("darksalmon" . "#e9967a")
563  ("darkseagreen" . "#8fbc8f")
564  ("darkslateblue" . "#483d8b")
565  ("darkslategray" . "#2f4f4f")
566  ("darkslategrey" . "#2f4f4f")
567  ("darkturquoise" . "#00ced1")
568  ("darkviolet" . "#9400d3")
569  ("deeppink" . "#ff1493")
570  ("deepskyblue" . "#00bfff")
571  ("dimgray" . "#696969")
572  ("dimgrey" . "#696969")
573  ("dodgerblue" . "#1e90ff")
574  ("firebrick" . "#b22222")
575  ("floralwhite" . "#fffaf0")
576  ("forestgreen" . "#228b22")
577  ("gainsboro" . "#dcdcdc")
578  ("ghostwhite" . "#f8f8ff")
579  ("gold" . "#ffd700")
580  ("goldenrod" . "#daa520")
581  ("greenyellow" . "#adff2f")
582  ("grey" . "#808080")
583  ("honeydew" . "#f0fff0")
584  ("hotpink" . "#ff69b4")
585  ("indianred" . "#cd5c5c")
586  ("indigo" . "#4b0082")
587  ("ivory" . "#fffff0")
588  ("khaki" . "#f0e68c")
589  ("lavender" . "#e6e6fa")
590  ("lavenderblush" . "#fff0f5")
591  ("lawngreen" . "#7cfc00")
592  ("lemonchiffon" . "#fffacd")
593  ("lightblue" . "#add8e6")
594  ("lightcoral" . "#f08080")
595  ("lightcyan" . "#e0ffff")
596  ("lightgoldenrodyellow" . "#fafad2")
597  ("lightgray" . "#d3d3d3")
598  ("lightgreen" . "#90ee90")
599  ("lightgrey" . "#d3d3d3")
600  ("lightpink" . "#ffb6c1")
601  ("lightsalmon" . "#ffa07a")
602  ("lightseagreen" . "#20b2aa")
603  ("lightskyblue" . "#87cefa")
604  ("lightslategray" . "#778899")
605  ("lightslategrey" . "#778899")
606  ("lightsteelblue" . "#b0c4de")
607  ("lightyellow" . "#ffffe0")
608  ("limegreen" . "#32cd32")
609  ("linen" . "#faf0e6")
610  ("mediumaquamarine" . "#66cdaa")
611  ("mediumblue" . "#0000cd")
612  ("mediumorchid" . "#ba55d3")
613  ("mediumpurple" . "#9370db")
614  ("mediumseagreen" . "#3cb371")
615  ("mediumslateblue" . "#7b68ee")
616  ("mediumspringgreen" . "#00fa9a")
617  ("mediumturquoise" . "#48d1cc")
618  ("mediumvioletred" . "#c71585")
619  ("midnightblue" . "#191970")
620  ("mintcream" . "#f5fffa")
621  ("mistyrose" . "#ffe4e1")
622  ("moccasin" . "#ffe4b5")
623  ("navajowhite" . "#ffdead")
624  ("oldlace" . "#fdf5e6")
625  ("olivedrab" . "#6b8e23")
626  ("orangered" . "#ff4500")
627  ("orchid" . "#da70d6")
628  ("palegoldenrod" . "#eee8aa")
629  ("palegreen" . "#98fb98")
630  ("paleturquoise" . "#afeeee")
631  ("palevioletred" . "#db7093")
632  ("papayawhip" . "#ffefd5")
633  ("peachpuff" . "#ffdab9")
634  ("peru" . "#cd853f")
635  ("pink" . "#ffc0cb")
636  ("plum" . "#dda0dd")
637  ("powderblue" . "#b0e0e6")
638  ("rosybrown" . "#bc8f8f")
639  ("royalblue" . "#4169e1")
640  ("saddlebrown" . "#8b4513")
641  ("salmon" . "#fa8072")
642  ("sandybrown" . "#f4a460")
643  ("seagreen" . "#2e8b57")
644  ("seashell" . "#fff5ee")
645  ("sienna" . "#a0522d")
646  ("skyblue" . "#87ceeb")
647  ("slateblue" . "#6a5acd")
648  ("slategray" . "#708090")
649  ("slategrey" . "#708090")
650  ("snow" . "#fffafa")
651  ("springgreen" . "#00ff7f")
652  ("steelblue" . "#4682b4")
653  ("tan" . "#d2b48c")
654  ("thistle" . "#d8bfd8")
655  ("tomato" . "#ff6347")
656  ("turquoise" . "#40e0d0")
657  ("violet" . "#ee82ee")
658  ("wheat" . "#f5deb3")
659  ("whitesmoke" . "#f5f5f5")
660  ("yellowgreen" . "#9acd32")
661  ("rebeccapurple" . "#663399"))
662  "Map CSS named colors to their hex RGB value.")
663 
664 (defvar *css-value-class-alist*
665  `((absolute-size
666  "xx-small" "x-small" "small" "medium" "large" "x-large"
667  "xx-large")
668  (alphavalue number)
669  (angle "calc()")
670  (animateable-feature "scroll-position" "contents" custom-ident)
671  (attachment "scroll" "fixed" "local")
672  (auto-repeat "repeat()")
673  (auto-track-list line-names fixed-size fixed-repeat auto-repeat)
674  (basic-shape "inset()" "circle()" "ellipse()" "polygon()")
675  (bg-image image "none")
676  (bg-layer bg-image position repeat-style attachment box)
677  (bg-size length percentage "auto" "cover" "contain")
678  (box "border-box" "padding-box" "content-box")
679  (clip-source uri)
680  (color
681  "rgb()" "rgba()" "hsl()" "hsla()" named-color "transparent"
682  "currentColor")
683  (common-lig-values "common-ligatures" "no-common-ligatures")
684  (compositing-operator "add" "subtract" "intersect" "exclude")
685  (contextual-alt-values "contextual" "no-contextual")
686  (counter "counter()" "counters()")
687  (discretionary-lig-values
688  "discretionary-ligatures" "no-discretionary-ligatures")
689  (east-asian-variant-values
690  "jis78" "jis83" "jis90" "jis04" "simplified" "traditional")
691  (east-asian-width-values "full-width" "proportional-width")
692  (explicit-track-list line-names track-size)
693  (family-name "Courier" "Helvetica" "Times")
694  (feature-tag-value string integer "on" "off")
695  (filter-function
696  "blur()" "brightness()" "contrast()" "drop-shadow()"
697  "grayscale()" "hue-rotate()" "invert()" "opacity()" "sepia()"
698  "saturate()")
699  (filter-function-list filter-function uri)
700  (final-bg-layer
701  bg-image position repeat-style attachment box color)
702  (fixed-breadth length-percentage)
703  (fixed-repeat "repeat()")
704  (fixed-size fixed-breadth "minmax()")
705  (font-variant-css21 "normal" "small-caps")
706  (frequency "calc()")
707  (generic-family
708  "serif" "sans-serif" "cursive" "fantasy" "monospace")
709  (generic-voice "male" "female" "child")
710  (geometry-box shape-box "fill-box" "stroke-box" "view-box")
711  (gradient
712  linear-gradient radial-gradient repeating-linear-gradient
713  repeating-radial-gradient)
714  (grid-line "auto" custom-ident integer "span")
715  (historical-lig-values
716  "historical-ligatures" "no-historical-ligatures")
717  (image uri image-list element-reference gradient)
718  (image-list "image()")
719  (inflexible-breadth length-percentage "min-content" "max-content"
720  "auto")
721  (integer "calc()")
722  (length "calc()" number)
723  (line-height "normal" number length percentage)
724  (line-names custom-ident)
725  (line-style
726  "none" "hidden" "dotted" "dashed" "solid" "double" "groove"
727  "ridge" "inset" "outset")
728  (line-width length "thin" "medium" "thick")
729  (linear-gradient "linear-gradient()")
730  (margin-width "auto" length percentage)
731  (mask-layer
732  mask-reference masking-mode position bg-size repeat-style
733  geometry-box "no-clip" compositing-operator)
734  (mask-reference "none" image mask-source)
735  (mask-source uri)
736  (masking-mode "alpha" "luminance" "auto")
737  (named-color . ,(mapcar #'car *css--color-map*))
738  (number "calc()")
739  (numeric-figure-values "lining-nums" "oldstyle-nums")
740  (numeric-fraction-values "diagonal-fractions" "stacked-fractions")
741  (numeric-spacing-values "proportional-nums" "tabular-nums")
742  (padding-width length percentage)
743  (position
744  "left" "center" "right" "top" "bottom" percentage length)
745  (baseline-position "left" "right" "baseline")
746  (content-distribution
747  "space-between" "space-around" "space-evenly" "stretch")
748  (overflow-position "unsafe" "safe")
749  (content-position "center" "start" "end" "flex-start" "flex-end")
750  (self-position
751  "center" "start" "end" "self-start" "self-end" "flex-start" "flex-end")
752 pdp10 (radial-gradient "radial-gradient()")
753  (relative-size "larger" "smaller")
754  (repeat-style
755  "repeat-x" "repeat-y" "repeat" "space" "round" "no-repeat")
756  (repeating-linear-gradient "repeating-linear-gradient()")
757  (repeating-radial-gradient "repeating-radial-gradient()")
758  (shadow "inset" length color)
759  (shape-box box "margin-box")
760  (single-animation-direction
761  "normal" "reverse" "alternate" "alternate-reverse")
762  (single-animation-fill-mode "none" "forwards" "backwards" "both")
763  (single-animation-iteration-count "infinite" number)
764  (single-animation-name "none" identifier)
765  (single-animation-play-state "running" "paused")
766  (single-timing-function single-transition-timing-function)
767  (single-transition
768  "none" single-transition-property time
769  single-transition-timing-function)
770  (single-transition-property "all" identifier)
771  (single-transition-timing-function
772  "ease" "linear" "ease-in" "ease-out" "ease-in-out" "step-start"
773  "step-end" "steps()" "cubic-bezier()")
774  (specific-voice identifier)
775  (target-name string)
776  (time "calc()")
777  (track-breadth length-percentage flex "min-content" "max-content"
778  "auto")
779  (track-list line-names track-size track-repeat)
780  (track-repeat "repeat()")
781  (track-size track-breadth "minmax()" "fit-content()")
782  (transform-list
783  "matrix()" "translate()" "translateX()" "translateY()" "scale()"
784  "scaleX()" "scaleY()" "rotate()" "skew()" "skewX()" "skewY()"
785  "matrix3d()" "translate3d()" "translateZ()" "scale3d()"
786  "scaleZ()" "rotate3d()" "rotateX()" "rotateY()" "rotateZ()"
787  "perspective()")
788  (uri "url()")
789  (width length percentage "auto")
790  (x number)
791  (y number))
792  "Property value classes and their values.
793 The format is similar to that of *css-property-alist*, except
794 that the CARs aren't actual CSS properties, but rather a name for
795 a class of values, and that symbols in the CDRs always refer to
796 other entries in this list, not to properties.
797 
798 The following classes have been left out above because they
799 cannot be completed sensibly: `custom-ident',
800 `element-reference', `flex', `id', `identifier',
801 `length-percentage', `percentage', and `string'.")