/* * Copyright 2013 Google, Inc. * Copyright 2015 Vivliostyle Inc. * CSS property validation. */ NUM = POS_NUM | ZERO | NEGATIVE; NNEG_NUM = POS_NUM | ZERO; INT = POS_INT | ZERO | NEGATIVE; NNEG_INT = POS_INT | ZERO; PERCENTAGE = POS_PERCENTAGE | ZERO | NEGATIVE; STRICT_PERCENTAGE = POS_PERCENTAGE | ZERO_PERCENTAGE | NEGATIVE; NNEG_PERCENTAGE = POS_PERCENTAGE | ZERO; LENGTH = POS_LENGTH | ZERO | NEGATIVE; NNEG_LENGTH = POS_LENGTH | ZERO | NEGATIVE; PLENGTH = LENGTH | PERCENTAGE; PPLENGTH = POS_LENGTH | ZERO | POS_PERCENTAGE; ALENGTH = LENGTH | auto; APLENGTH = PLENGTH | auto; PAPLENGTH = PPLENGTH | auto; ANGLE = POS_ANGLE | ZERO | NEGATIVE; SCOLOR = HASHCOLOR | aliceblue: #F0F8FF | antiquewhite: #FAEBD7 | aqua: #00FFFF | aquamarine: #7FFFD4 | azure: #F0FFFF | beige: #F5F5DC | bisque: #FFE4C4 | black: #000000 | blanchedalmond: #FFEBCD | blue: #0000FF | blueviolet: #8A2BE2 | brown: #A52A2A | burlywood: #DEB887 | cadetblue: #5F9EA0 | chartreuse: #7FFF00 | chocolate: #D2691E | coral: #FF7F50 | cornflowerblue: #6495ED | cornsilk: #FFF8DC | crimson: #DC143C | cyan: #00FFFF | darkblue: #00008B | darkcyan: #008B8B | darkgoldenrod: #B8860B | darkgray: #A9A9A9 | darkgreen: #006400 | darkgrey: #A9A9A9 | darkkhaki: #BDB76B | darkmagenta: #8B008B | darkolivegreen: #556B2F | darkorange: #FF8C00 | darkorchid: #9932CC | darkred: #8B0000 | darksalmon: #E9967A | darkseagreen: #8FBC8F | darkslateblue: #483D8B | darkslategray: #2F4F4F | darkslategrey: #2F4F4F | darkturquoise: #00CED1 | darkviolet: #9400D3 | deeppink: #FF1493 | deepskyblue: #00BFFF | dimgray: #696969 | dimgrey: #696969 | dodgerblue: #1E90FF | firebrick: #B22222 | floralwhite: #FFFAF0 | forestgreen: #228B22 | fuchsia: #FF00FF | gainsboro: #DCDCDC | ghostwhite: #F8F8FF | gold: #FFD700 | goldenrod: #DAA520 | gray: #808080 | green: #008000 | greenyellow: #ADFF2F | grey: #808080 | honeydew: #F0FFF0 | hotpink: #FF69B4 | indianred: #CD5C5C | indigo: #4B0082 | ivory: #FFFFF0 | khaki: #F0E68C | lavender: #E6E6FA | lavenderblush: #FFF0F5 | lawngreen: #7CFC00 | lemonchiffon: #FFFACD | lightblue: #ADD8E6 | lightcoral: #F08080 | lightcyan: #E0FFFF | lightgoldenrodyellow: #FAFAD2 | lightgray: #D3D3D3 | lightgreen: #90EE90 | lightgrey: #D3D3D3 | lightpink: #FFB6C1 | lightsalmon: #FFA07A | lightseagreen: #20B2AA | lightskyblue: #87CEFA | lightslategray: #778899 | lightslategrey: #778899 | lightsteelblue: #B0C4DE | lightyellow: #FFFFE0 | lime: #00FF00 | limegreen: #32CD32 | linen: #FAF0E6 | magenta: #FF00FF | maroon: #800000 | mediumaquamarine: #66CDAA | mediumblue: #0000CD | mediumorchid: #BA55D3 | mediumpurple: #9370DB | mediumseagreen: #3CB371 | mediumslateblue: #7B68EE | mediumspringgreen: #00FA9A | mediumturquoise: #48D1CC | mediumvioletred: #C71585 | midnightblue: #191970 | mintcream: #F5FFFA | mistyrose: #FFE4E1 | moccasin: #FFE4B5 | navajowhite: #FFDEAD | navy: #000080 | oldlace: #FDF5E6 | olive: #808000 | olivedrab: #6B8E23 | orange: #FFA500 | orangered: #FF4500 | orchid: #DA70D6 | palegoldenrod: #EEE8AA | palegreen: #98FB98 | paleturquoise: #AFEEEE | palevioletred: #DB7093 | papayawhip: #FFEFD5 | peachpuff: #FFDAB9 | peru: #CD853F | pink: #FFC0CB | plum: #DDA0DD | powderblue: #B0E0E6 | purple: #800080 | red: #FF0000 | rosybrown: #BC8F8F | royalblue: #4169E1 | saddlebrown: #8B4513 | salmon: #FA8072 | sandybrown: #F4A460 | seagreen: #2E8B57 | seashell: #FFF5EE | sienna: #A0522D | silver: #C0C0C0 | skyblue: #87CEEB | slateblue: #6A5ACD | slategray: #708090 | slategrey: #708090 | snow: #FFFAFA | springgreen: #00FF7F | steelblue: #4682B4 | tan: #D2B48C | teal: #008080 | thistle: #D8BFD8 | tomato: #FF6347 | turquoise: #40E0D0 | violet: #EE82EE | wheat: #F5DEB3 | white: #FFFFFF | whitesmoke: #F5F5F5 | yellow: #FFFF00 | yellowgreen: #9ACD32 | transparent | currentcolor; RGBCOLOR = rgb(INT{3}) | rgb(STRICT_PERCENTAGE{3}); RGBACOLOR = rgba(NUM{4}) | rgba(STRICT_PERCENTAGE{3} NUM); HSLCOLOR = hsl(NUM PERCENTAGE{2}); HSLACOLOR = hsl(NUM PERCENTAGE{2} NUM); COLOR = SCOLOR | RGBCOLOR | RGBACOLOR | HSLCOLOR | HSLACOLOR; BG_POSITION_TERM = PLENGTH | left | center | right | top | bottom; SIDE_OR_CORNER = [left | right] || [top | bottom]; COLOR_STOP = SPACE(COLOR [PERCENTAGE | LENGTH]?); LINEAR_GRADIENT = linear-gradient([ANGLE | SPACE(to SIDE_OR_CORNER)]? COLOR_STOP+) | repeating-linear-gradient([ANGLE | SPACE(to SIDE_OR_CORNER)]? COLOR_STOP+) |; GRADIENT_EXTENT = closest-corner | closest-side | farthest-corner | farthest-side; GRADIENT_POSITION = at BG_POSITION_TERM{1,4}; GRADIENT_SHAPE = SPACE(circle LENGTH? GRADIENT_POSITION?) | SPACE(ellipse PLENGTH{2}? GRADIENT_POSITION?)| SPACE([circle | ellipse] GRADIENT_EXTENT? GRADIENT_POSITION?); RADIAL_GRADIENT = radial-gradient([GRADIENT_SHAPE | SPACE(GRADIENT_POSITION)]? COLOR_STOP+) | repeating-radial-gradient([GRADIENT_SHAPE | SPACE(GRADIENT_POSITION)]? COLOR_STOP+); URI_OR_NONE = URI | none; IMAGE = URI | LINEAR_GRADIENT | RADIAL_GRADIENT | none; azimuth = ANGLE | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards; background-attachment = COMMA( [scroll | fixed | local]+ ); background-color = COLOR; background-image = COMMA( IMAGE+ ); background-position = COMMA( SPACE(BG_POSITION_TERM{1,4})+ ); /* relaxed */ background-repeat = COMMA( [repeat | repeat-x | repeat-y | no-repeat]+ ); border-collapse = collapse | separate; BORDER_SIDE_COLOR = COLOR; BORDER_SIDE_STYLE = none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset; BORDER_SIDE_WIDTH = thin: 1px | medium: 3px | thick: 5px | NNEG_LENGTH; border-spacing = LENGTH LENGTH?; border-top-color = BORDER_SIDE_COLOR; border-right-color = BORDER_SIDE_COLOR; border-bottom-color = BORDER_SIDE_COLOR; border-left-color = BORDER_SIDE_COLOR; border-top-style = BORDER_SIDE_STYLE; border-right-style = BORDER_SIDE_STYLE; border-bottom-style = BORDER_SIDE_STYLE; border-left-style = BORDER_SIDE_STYLE; border-top-width = BORDER_SIDE_WIDTH; border-right-width = BORDER_SIDE_WIDTH; border-bottom-width = BORDER_SIDE_WIDTH; border-left-width = BORDER_SIDE_WIDTH; BORDER_RADIUS = PLENGTH{1,2}; border-top-left-radius = BORDER_RADIUS; border-top-right-radius = BORDER_RADIUS; border-bottom-right-radius = BORDER_RADIUS; border-bottom-left-radius = BORDER_RADIUS; border-image-source = IMAGE; border-image-slice = [NUM | PERCENTAGE]{1,4} || fill; /* relaxed */ border-image-width = [NUM | PLENGTH | auto]{1,4}; border-image-outset = [NUM | LENGTH]{1,4}; border-image-repeat = [ stretch | repeat | round | space ]{1,2}; bottom = APLENGTH; caption-side = top | bottom; clear = none | left | right | both; clip = rect(ALENGTH{4}) | rect(SPACE(ALENGTH{4})) | auto; color = COLOR; LIST_STYLE_TYPE = disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | russian | upper-russian | lower-russian | cjk-ideographic | trad-chinese-informal | hebrew | none; TYPE_OR_UNIT_IN_ATTR = string | color | url | integer | number | length | angle | time | frequency; ATTR = attr(SPACE(IDENT TYPE_OR_UNIT_IN_ATTR?) [ STRING | IDENT | COLOR | INT | NUM | PLENGTH | ANGLE | POS_TIME | FREQUENCY]?); CONTENT = normal | none | [ STRING | URI | counter(IDENT LIST_STYLE_TYPE?) | counters(IDENT STRING LIST_STYLE_TYPE?) | ATTR | target-counter([ STRING | URI ] IDENT LIST_STYLE_TYPE?) | target-counter(ATTR IDENT LIST_STYLE_TYPE?) | target-counters([ STRING | URI ] IDENT STRING LIST_STYLE_TYPE?) | target-counters(ATTR IDENT STRING LIST_STYLE_TYPE?) | open-quote | close-quote | no-open-quote | no-close-quote ]+; content = CONTENT; COUNTER = [ IDENT INT? ]+ | none; counter-increment = COUNTER; counter-reset = COUNTER; counter-set = COUNTER; cue-after = URI_OR_NONE; cue-before = URI_OR_NONE; cursor = COMMA(URI* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ]); direction = ltr | rtl; display = inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | oeb-page-head | oeb-page-foot | flex | inline-flex | ruby | ruby-base | ruby-text | ruby-base-container | ruby-text-container; elevation = ANGLE | below | level | above | higher | lower; empty-cells = show | hide; FAMILY = SPACE(IDENT+) | STRING; FAMILY_LIST = COMMA( FAMILY+ ); font-family = FAMILY_LIST; font-size = xx-small | x-small | small | medium | large | x-large | xx-large | larger | smaller | PPLENGTH; font-style = normal | italic | oblique; font-variant = normal | small-caps; font-weight = normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900; height = PAPLENGTH; left = APLENGTH; letter-spacing = normal | LENGTH; line-height = normal | POS_NUM | PPLENGTH; list-style-image = IMAGE; list-style-position = inside | outside; list-style-type = LIST_STYLE_TYPE; margin-right = APLENGTH; margin-left = APLENGTH; margin-top = APLENGTH; margin-bottom = APLENGTH; NPLENGTH = none | PLENGTH; max-height = NPLENGTH; max-width = NPLENGTH; min-height = auto | PLENGTH; min-width = auto | PLENGTH; orphans = POS_INT; outline-offset = LENGTH; outline-color = COLOR | invert; outline-style = BORDER_SIDE_STYLE; outline-width = BORDER_SIDE_WIDTH; overflow = visible | hidden | scroll | auto; padding-right = PPLENGTH; padding-left = PPLENGTH; padding-top = PPLENGTH; padding-bottom = PPLENGTH; PAGE_BREAK = auto | always | avoid | left | right | recto | verso; page-break-after = PAGE_BREAK; page-break-before = PAGE_BREAK; page-break-inside = avoid | auto; PAUSE = POS_TIME | ZERO | POS_PERCENTAGE; pause-after = PAUSE; pause-before = PAUSE; pitch-range = NUM; pitch = FREQUENCY | x-low | low | medium | high | x-high; play-during = [URI [ mix || repeat ]?] | auto | none; position = static | relative | absolute | fixed; quotes = [STRING STRING]+ | none; richness = NUM; right = APLENGTH; speak-header = once | always; speak-numeral = digits | continuous; speak-punctuation = code | none; speech-rate = NUM | x-slow | slow | medium | fast | x-fast | faster | slower; stress = NUM; table-layout = auto | fixed; text-align = left | right | center | justify; text-decoration = none | [ underline || overline || line-through || blink ]; text-indent = PLENGTH; text-transform = capitalize | uppercase | lowercase | none; top = APLENGTH; vertical-align = baseline | sub | super | top | text-top | middle | bottom | text-bottom | PLENGTH; visibility = visible | hidden | collapse; voice-family = FAMILY_LIST; volume = NUM | PERCENTAGE | silent | x-soft | soft | medium | loud | x-loud; white-space = normal | pre | nowrap | pre-wrap | pre-line; widows = POS_INT; width = PAPLENGTH; word-spacing = normal | LENGTH; z-index = auto | INT; [epub,moz,ms,webkit]hyphens = auto | manual | none; [adapt,webkit]margin-before = APLENGTH; [adapt,webkit]margin-after = APLENGTH; [adapt,webkit]margin-start = APLENGTH; [adapt,webkit]margin-end = APLENGTH; [adapt]before = APLENGTH; [adapt]after = APLENGTH; [adapt]start = APLENGTH; [adapt]end = APLENGTH; [adapt]border-before-color = BORDER_SIDE_COLOR; [adapt]border-after-color = BORDER_SIDE_COLOR; [adapt]border-start-color = BORDER_SIDE_COLOR; [adapt]border-end-color = BORDER_SIDE_COLOR; [adapt]border-before-style = BORDER_SIDE_STYLE; [adapt]border-after-style = BORDER_SIDE_STYLE; [adapt]border-start-style = BORDER_SIDE_STYLE; [adapt]border-end-style = BORDER_SIDE_STYLE; [adapt]border-before-width = BORDER_SIDE_WIDTH; [adapt]border-after-width = BORDER_SIDE_WIDTH; [adapt]border-start-width = BORDER_SIDE_WIDTH; [adapt]border-end-width = BORDER_SIDE_WIDTH; SHAPE = auto | rectangle( PLENGTH{4} ) | ellipse( PLENGTH{4} ) | circle( PLENGTH{3} ) | polygon( SPACE(PLENGTH+)+ ); [epubx]shape-inside = SHAPE; [epubx,webkit]shape-outside = SHAPE; [epubx,ms]wrap-flow = auto | both | start | end | maximum | clear | around /* epub al */; TRANSFORM_FUNCTION = matrix(NUM{6}) | translate(PLENGTH{1,2}) | translateX(PLENGTH) | translateY(PLENGTH) | scale(NUM{1,2}) | scaleX(NUM) | scaleY(NUM) | rotate(ANGLE) | skewX(ANGLE) | skewY(ANGLE); [epub,ms]transform = none | TRANSFORM_FUNCTION+; [epub,ms]transform-origin = [[[ top | bottom | left | right] PLENGTH?] | center | PLENGTH]{1,2}; /* relaxed */ BOX = border-box | padding-box | content-box; SHADOW = SPACE(inset || LENGTH{2,4} || COLOR); /* relaxed */ [webkit]background-size = COMMA( SPACE( [PLENGTH | auto ]{1,2} | cover | contain)+ ); [webkit]background-origin = COMMA( BOX+ ); [webkit]background-clip = COMMA( BOX+ ); [webkit]box-shadow = none | COMMA( SHADOW+ ); text-shadow = none | COMMA( SHADOW+ ); [webkit]box-decoration-break = slice | clone; FILTER_FUNCTION = blur(LENGTH) | brightness(NUM | PERCENTAGE) | contrast(NUM | PERCENTAGE) | drop-shadow(SPACE(LENGTH{2,3} COLOR?)) | grayscale(NUM | PERCENTAGE) | hue-rotate(ANGLE) | invert(NUM | PERCENTAGE) | opacity(NUM | PERCENTAGE) | saturate(NUM | PERCENTAGE) | sepia(NUM | PERCENTAGE); FILTER_FUNCTION_LIST = FILTER_FUNCTION+; [webkit]filter = none | FILTER_FUNCTION_LIST; opacity = NUM; [moz,webkit]column-width = LENGTH | auto; [moz,webkit]column-count = INT | auto; [moz,webkit]column-gap = LENGTH | normal; [moz,webkit]column-rule-color = COLOR; [moz,webkit]column-rule-style = BORDER_SIDE_STYLE; [moz,webkit]column-rule-width = BORDER_SIDE_WIDTH; BREAK = auto | avoid | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region; break-before = BREAK; break-after = BREAK; break-inside = auto | avoid | avoid-page | avoid-column | avoid-region; [webkit]column-span = none | all; [moz]column-fill = auto | balance; src = COMMA([SPACE(URI format(STRING+)?) | local(FAMILY)]+); /* for font-face */ [epubx,webkit]flow-from = IDENT; [epubx,webkit]flow-into = IDENT; [epubx]flow-linger = INT | none; [epubx]flow-priority = INT; [epubx]flow-options = none | [ exclusive || last || static ]; [epubx]page = INT | auto; [epubx]min-page-width = LENGTH; [epubx]min-page-height = LENGTH; [epubx]required = true | false; [epubx]enabled = true | false; [epubx]conflicting-partitions = COMMA(IDENT+); [epubx]required-partitions = COMMA(IDENT+); [epubx]snap-height = LENGTH | none; [epubx]snap-width = LENGTH | none; [epubx]flow-consume = all | some; [epubx]utilization = NUM; [epubx]text-zoom = font-size | scale; [adapt]template = URI_OR_NONE; [adapt]behavior = IDENT; /* CSS Fonts */ font-size-adjust = none | NNEG_NUM; [webkit]font-kerning = auto | normal | none; font-variant-east-asian = normal | [[ jis78 | jis83 | jis90 | jis04 | simplified | traditional ] || [ full-width | proportional-width ] || ruby]; font-feature-settings = COMMA( SPACE( STRING [ on | off | INT ]? )+ ); /* CSS Images */ image-resolution = RESOLUTION; object-fit = fill | contain | cover | none | scale-down; object-position = COMMA( SPACE(BG_POSITION_TERM{1,4})+ ); /* relaxed */ /* CSS Paged Media */ PAGE_SIZE = a5 | a4 | a3 | b5 | b4 | jis-b5 | jis-b4 | letter | legal | ledger; bleed = auto | LENGTH; marks = none | [ crop || cross ]; size = POS_LENGTH{1,2} | auto | [ PAGE_SIZE || [ portrait | landscape ] ]; /* CSS Page Floats */ float-reference = inline | column | region | page; float = block-start | block-end | inline-start | inline-end | snap-block | snap-inline | left | right | top | bottom | none | footnote; /* CSS Ruby */ ruby-align = start | center | space-between | space-around; ruby-position = over | under | inter-character; /* CSS Size Adjust */ [moz,ms]text-size-adjust = auto | none | POS_PERCENTAGE; /* CSS Text */ [ms,webkit]line-break = auto | loose | normal | strict; overflow-wrap = normal | break-word; [moz]tab-size = NNEG_INT | NNEG_LENGTH; [moz,ms]text-align-last = auto | start | end | left | right | center | justify; [ms]text-justify = auto | none | inter-word | inter-character | inter-ideograph /* specified in UA stylesheet for IE */; [ms]word-break = normal | keep-all | break-all; [ms]word-wrap = normal | break-word; /* CSS Text Decoration */ [webkit]text-decoration-color = COLOR; [webkit]text-decoration-line = none | [ underline || overline || line-through || blink ]; [webkit]text-decoration-skip = none | [ objects || spaces || ink || edges || box-decoration ]; [webkit]text-decoration-style = solid | double | dotted | dashed | wavy; [epub,webkit]text-emphasis-color = COLOR; [webkit]text-emphasis-position = [ over | under ] [ right | left ]; [epub,webkit]text-emphasis-style = none | [[ filled | open ] || [ dot | circle | double-circle | triangle | sesame ]] | STRING; [ms,webkit]text-underline-position = auto | [ under || [ left | right ]]; /* CSS Transforms */ [ms,webkit]backface-visibility = visible | hidden; /* CSS UI */ box-sizing = content-box | padding-box | border-box; [ms]text-overflow = [clip | ellipsis | STRING]{1,2}; /* CSS Writing Modes */ [webkit]text-combine = none | horizontal; [epub,ms]text-combine-horizontal = none | all | [ digits POS_INT? ]; /* relaxed */ text-combine-upright = none | all | [ digits POS_INT? ]; /* relaxed */ [epub,webkit]text-orientation = mixed | upright | sideways-right | sideways-left | sideways | use-glyph-orientation /* the following values are kept for backward-compatibility */ | vertical-right | rotate-right | rotate-left | rotate-normal | auto; unicode-bidi = normal | embed | isolate | bidi-override | isolate-override | plaintext; [epub,webkit]writing-mode = horizontal-tb | vertical-rl; /* CSS Flex box */ FLEX_BASIS = content | PAPLENGTH; flex-direction = row | row-reverse | column | column-reverse; flex-wrap = nowrap | wrap | wrap-reverse; order = INT; flex-grow = NNEG_NUM; flex-shrink = NNEG_NUM; flex-basis = FLEX_BASIS; flex = none | [ [ NNEG_NUM NNEG_NUM? ] || FLEX_BASIS ]; justify-content = flex-start | flex-end | center | space-between | space-around; align-items = flex-start | flex-end | center | baseline | stretch; align-self = auto | flex-start | flex-end | center | baseline | stretch; align-content = flex-start | flex-end | center | space-between | space-around | stretch; /* Pointer Events */ [ms]touch-action = auto | none | [ pan-x || pan-y ] | manipulation; DEFAULTS background-attachment: scroll; background-color: transparent; background-image: none; background-repeat: repeat; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto; border-top-color: currentColor; border-right-color: currentColor; border-bottom-color: currentColor; border-left-color: currentColor; border-top-style: none; border-right-style: none; border-bottom-style: none; border-left-style: none; border-top-width: 3px; border-right-width: 3px; border-bottom-width: 3px; border-left-width: 3px; border-top-left-radius: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; border-bottom-left-radius: 0; border-image-source: none; border-image-slice: 100%; border-image-width: 1; border-image-outset: 0; border-image-repeat: stretch; column-count: auto; column-gap: normal; column-width: auto; column-rule-color: currentColor; column-rule-style: none; column-rule-width: 3px; column-fill: auto; outline-color: currentColor; outline-style: none; outline-width: 3px; flex-direction: row; flex-wrap: nowrap; font-family: serif; font-style: normal; font-size: medium; font-variant: normal; font-weight: normal; line-height: normal; list-style-image: none; list-style-position: outside; list-style-type: disc; margin-bottom: auto; margin-left: auto; margin-right: auto; margin-top: auto; padding-bottom: auto; padding-left: auto; padding-right: auto; padding-top: auto; text-emphasis-color: currentColor; text-emphasis-style: none; SHORTHANDS background = COMMA background-image [background-position [ / background-size ]] background-repeat background-attachment [background-origin background-clip] background-color; /* background-color is a special case, see the code */ border-top = border-top-width border-top-style border-top-color; border-right = border-right-width border-right-style border-right-color; border-bottom = border-bottom-width border-bottom-style border-bottom-color; border-left = border-left-width border-left-style border-left-color; border-width = INSETS border-top-width border-right-width border-bottom-width border-left-width; border-style = INSETS border-top-style border-right-style border-bottom-style border-left-style; border-color = INSETS border-top-color border-right-color border-bottom-color border-left-color; border = border-width border-style border-color; border-image = border-image-source border-image-slice [ / border-image-width [ / border-image-outset ] ] border-image-repeat; border-radius = INSETS_SLASH border-top-left-radius border-top-right-radius border-bottom-right-radius border-bottom-left-radius; [moz,webkit]columns = column-width column-count; [moz,webkit]column-rule = column-rule-width column-rule-style column-rule-color; flex-flow = flex-direction flex-wrap; oeb-column-number = column-count; outline = outline-width outline-style outline-color; list-style = list-style-type list-style-position list-style-image; margin = INSETS margin-top margin-right margin-bottom margin-left; padding = INSETS padding-top padding-right padding-bottom padding-left; pause = INSETS pause-before pause-after; font = FONT font-style font-variant font-weight /* font-size line-height font-family are special-cased */; [epub,webkit]text-emphasis = text-emphasis-style text-emphasis-color;