//
// CSS value names
//
inherit
initial
unset
revert

//
// CSS_PROP_OUTLINE_STYLE
// CSS_PROP_BORDER_TOP_STYLE
// CSS_PROP_BORDER_BOTTOM_STYLE
// CSS_PROP_BORDER_LEFT_STYLE
// The order here must match the order of the BorderStyle enum in RenderStyleConstants.h.
none
hidden
inset
groove
outset
ridge
dotted
dashed
solid
double

//
// CSS_PROP_FONT:
//
caption
icon
menu
message-box
small-caption
-webkit-mini-control
-webkit-small-control
-webkit-control

#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY
-apple-system-headline
-apple-system-body
-apple-system-subheadline
-apple-system-footnote
-apple-system-caption1
-apple-system-caption2
-apple-system-short-headline
-apple-system-short-body
-apple-system-short-subheadline
-apple-system-short-footnote
-apple-system-short-caption1
-apple-system-tall-body
-apple-system-title0
-apple-system-title1
-apple-system-title2
-apple-system-title3
-apple-system-title4
#endif

// This has to go after the -apple-system versions.
status-bar

//
// CSS_PROP_FONT_STYLE:
//
//normal
italic
oblique
// The following is only allowed in @font-face:
all
//
// CSS_PROP_FONT_VARIANT:
//
//normal
small-caps

// font-variant-ligatures:
//
common-ligatures
no-common-ligatures
discretionary-ligatures
no-discretionary-ligatures
historical-ligatures
no-historical-ligatures
contextual
no-contextual

// font-variant-caps
//
// FIXME: Unify this with plain font-variant
// small-caps
all-small-caps
petite-caps
all-petite-caps
unicase
titling-caps

// font-variant-numeric
//
lining-nums
oldstyle-nums
proportional-nums
tabular-nums
diagonal-fractions
stacked-fractions
ordinal
slashed-zero

// font-variant-alternates
//
historical-forms

// font-variant-east-asian
//
jis78
jis83
jis90
jis04
simplified
traditional
full-width
proportional-width
ruby

//
// CSS_PROP_FONT_WEIGHT:
//
normal
bold
bolder
lighter

//
// CSS_PROP_FONT_SIZE:
//
xx-small
x-small
small
medium
large
x-large
xx-large
-webkit-xxx-large
-webkit-ruby-text
smaller
larger

//
// CSS_PROP_FONT_STRETCH:
//
//normal
wider
narrower
ultra-condensed
extra-condensed
condensed
semi-condensed
semi-expanded
expanded
extra-expanded
ultra-expanded
//
// CSS_PROP_GENERIC_FONT_FAMILY:
//
serif
sans-serif
cursive
fantasy
monospace
-webkit-body
-webkit-pictograph
system-ui
//
//
// CSS_PROP_*_COLOR
//
alpha
aqua
black
blue
fuchsia
gray
green
lime
maroon
navy
olive
orange
purple
red
silver
teal
white
yellow
transparent
-webkit-link
-webkit-activelink
activeborder
activecaption
appworkspace
background
buttonface
buttonhighlight
buttonshadow
buttontext
activebuttontext
captiontext
graytext
highlight
highlighttext
inactiveborder
inactivecaption
inactivecaptiontext
infobackground
infotext
luminance
menutext
scrollbar
threeddarkshadow
threedface
threedhighlight
threedlightshadow
threedshadow
window
windowframe
windowtext
#if (defined(WTF_PLATFORM_MAC) && WTF_PLATFORM_MAC) || (defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY)
-apple-system-header-text
-apple-system-text-background
-apple-system-control-background
-apple-system-placeholder-text
-apple-system-label
-apple-system-secondary-label
-apple-system-tertiary-label
-apple-system-quaternary-label
-apple-system-grid
-apple-system-separator
-apple-system-container-border
-apple-system-background
-apple-system-secondary-background
-apple-system-tertiary-background
-apple-system-grouped-background
-apple-system-secondary-grouped-background
-apple-system-tertiary-grouped-background
-apple-system-selected-content-background
-apple-system-unemphasized-selected-content-background
-apple-wireless-playback-target-active
-apple-system-blue
-apple-system-brown
-apple-system-gray
-apple-system-green
-apple-system-orange
-apple-system-pink
-apple-system-purple
-apple-system-red
-apple-system-yellow
#endif
#if defined(WTF_PLATFORM_MAC) && WTF_PLATFORM_MAC
-apple-system-alternate-selected-text
-apple-system-control-accent
-apple-system-even-alternating-content-background
-apple-system-odd-alternating-content-background
-apple-system-selected-text
-apple-system-unemphasized-selected-text
-apple-system-selected-text-background
-apple-system-unemphasized-selected-text-background
-apple-system-find-highlight-background
#endif
#if defined(WTF_PLATFORM_IOS_FAMILY) && WTF_PLATFORM_IOS_FAMILY
-apple-system-indigo
-apple-system-teal
#endif
#if defined(HAVE_OS_DARK_MODE_SUPPORT) && HAVE_OS_DARK_MODE_SUPPORT
-webkit-control-background
#endif
-webkit-focus-ring-color
currentcolor
//
// colors in non strict mode
grey
-webkit-text
//
// CSS_PROP_BACKGROUND_REPEAT:
//
repeat
repeat-x
repeat-y
no-repeat
// round
// space
//
// CSS_PROP__WEBKIT_BACKGROUND_COMPOSITE:
//
clear
copy
source-over
source-in
source-out
source-atop
destination-over
destination-in
destination-out
destination-atop
xor
plus-darker
// highlight
plus-lighter
//
// CSS_PROP_VERTICAL_ALIGN:
//
baseline
middle
sub
super
text-top
text-bottom
top
bottom
// HTML alignment MIDDLE has no corresponding CSS alignment
-webkit-baseline-middle
//
// CSS_PROP_TEXT_ALIGN:
// The order here must match the order of the TextAlignMode enum in RenderStyleConstants.h.
//
-webkit-auto
left
right
center
justify
-webkit-left
-webkit-right
-webkit-center
-webkit-match-parent
//
// CSS_PROP_TEXT_JUSTIFY:
//
//auto
//none
inter-word
distribute
//
// CSS_PROP_LIST_STYLE_POSITION:
//
outside
inside
//
// CSS_PROP_LIST_STYLE_TYPE:
// The order here must match the order of the ListStyleType enum in RenderStyleConstants.h.
//
disc
circle
square
decimal
decimal-leading-zero
arabic-indic
binary
bengali
cambodian
khmer
devanagari
gujarati
gurmukhi
kannada
lower-hexadecimal
lao
malayalam
mongolian
myanmar
octal
oriya
persian
urdu
telugu
tibetan
thai
upper-hexadecimal
lower-roman
upper-roman
lower-greek
lower-alpha
lower-latin
upper-alpha
upper-latin
afar
ethiopic-halehame-aa-et
ethiopic-halehame-aa-er
amharic
ethiopic-halehame-am-et
amharic-abegede
ethiopic-abegede-am-et
cjk-earthly-branch
cjk-heavenly-stem
ethiopic
ethiopic-halehame-gez
ethiopic-abegede
ethiopic-abegede-gez
hangul-consonant
hangul
lower-norwegian
oromo
ethiopic-halehame-om-et
sidama
ethiopic-halehame-sid-et
somali
ethiopic-halehame-so-et
tigre
ethiopic-halehame-tig
tigrinya-er
ethiopic-halehame-ti-er
tigrinya-er-abegede
ethiopic-abegede-ti-er
tigrinya-et
ethiopic-halehame-ti-et
tigrinya-et-abegede
ethiopic-abegede-ti-et
upper-greek
upper-norwegian
asterisks
footnotes
hebrew
armenian
lower-armenian
upper-armenian
georgian
cjk-ideographic
hiragana
katakana
hiragana-iroha
katakana-iroha
//none
//
// CSS_PROP_DISPLAY:
// The order here must match the order of the DisplayType enum in RenderStyleConstants.h.
//
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
-webkit-box
-webkit-inline-box
flex
-webkit-flex
inline-flex
-webkit-inline-flex
contents
grid
inline-grid
flow-root
//none
//
// CSS_PROP_CURSOR:
// The order here must match the order of the CursorType enum in RenderStyleConstants.h.
//
auto
default
// none
context-menu
help
pointer
progress
wait
cell
crosshair
text
vertical-text
alias
// copy
move
no-drop
not-allowed
grab
grabbing
e-resize
n-resize
ne-resize
nw-resize
s-resize
se-resize
sw-resize
w-resize
ew-resize
ns-resize
nesw-resize
nwse-resize
col-resize
row-resize
all-scroll
zoom-in
zoom-out
-webkit-grab
-webkit-grabbing
-webkit-zoom-in
-webkit-zoom-out
//
// CSS_PROP_CURSOR_VISIBILITY:
// auto
auto-hide
//
// CSS_PROP_DIRECTION:
//
ltr
rtl
//
// CSS_PROP_TEXT_TRANSFORM:
//
capitalize
uppercase
lowercase
//none
//
// CSS_PROP_VISIBILITY:
//
visible
//hidden
collapse
//
// Unordered rest
//
a3
a4
a5
above
absolute
always
avoid
b4
b5
below
bidi-override
blink
both
close-quote
crop
cross
embed
fixed
hand
hide
higher
invert
inverted
isolate-override
plaintext
-webkit-isolate
-webkit-isolate-override
-webkit-plaintext
landscape
ledger
legal
letter
level
line-through
local
loud
lower
mix
no-close-quote
no-open-quote
nowrap
open-quote
overline
portrait
pre
pre-line
pre-wrap
relative
scroll
separate
show
static
thick
thin
underline
wavy
ink
objects
-webkit-nowrap

// CSS3 Values
// CSS_PROP_BOX_ALIGN
stretch
start
end
//center
//baseline

#if defined(ENABLE_CSS_BOX_DECORATION_BREAK) && ENABLE_CSS_BOX_DECORATION_BREAK
// CSS_PROP_BOX_DECORATION_BREAK
clone
slice
#endif

// CSS_PROP_BOX_DIRECTION
// normal
reverse

// CSS_PROP_BOX_ORIENT
horizontal
vertical
inline-axis
block-axis

// CSS_PROP_BOX_PACK
// start
// end
// center
// justify

// CSS_PROP_BOX_LINES
single
multiple

// CSS_PROP_ALIGN_CONTENT
flex-start
flex-end
// center
space-between
space-around
space-evenly
// stretch

// CSS_PROP_ALIGN_ITEMS / CSS_PROP_ALIGN_SELF
// flex-start
// flex-end
// center
// baseline
first-baseline
last-baseline
// stretch

// CSS_PROP_JUSTIFY_CONTENT
// start
// end
// flex-start
// flex-end
// center
// space-between
// space-around
// space-evenly
// stretch

// CSS_PROP_JUSTIFY_ITEMS / CSS_PROP_JUSTIFY_SELF
// auto
// stretch
// baseline
// last baseline
// first baseline
// center
// start
// end
self-start
self-end
// flex-start
// flex-end
// left
// right
unsafe
safe
legacy

// CSS_PROP_FLEX_FLOW
row
row-reverse
column
column-reverse
// nowrap
// wrap
wrap-reverse

// CSS_PROP_MARQUEE_DIRECTION
forwards
backwards
ahead
// reverse
// left
// right
up
down
// auto

// CSS_PROP_MARQUEE_SPEED
slow
// normal
fast

// CSS_PROP_MARQUEE_REPETITION
infinite

// CSS_PROP_MARQUEE_STYLE
// none
slide
// scroll
alternate

//
// CSS_PROP__KHTML_USER_MODIFY
//
read-only
read-write
read-write-plaintext-only

//
// CSS_PROP__KHTML_USER_DRAG
//
element

//
// CSS_PROP__KHTML_USER_SELECT
//
ignore

//
// CSS_PROP_WIDTH/MIN_WIDTH/MAX_WIDTH
//
intrinsic
min-intrinsic

//
// CSS3 intrinsic dimension keywords
//
min-content
-webkit-min-content
max-content
-webkit-max-content
-webkit-fill-available
fit-content
-webkit-fit-content

//
// CSS_PROP_TEXT_OVERFLOW
//
clip
ellipsis

//
// CSS_PROP__KHTML_MARGIN_COLLAPSE
//
// collapse
// separate
discard

//
// CSS_PROP_TEXT_*_COLOR
//
dot-dash
dot-dot-dash
wave

//
// CSS_PROP_TEXT_*_MODE
//
continuous
skip-white-space

//
// CSS_PROP_WORD_BREAK
//
break-all
keep-all

//
// CSS_PROP_WORD_WRAP
//
break-word

//
// CSS_PROP_WHITE_SPACE
//
break-spaces

//
// CSS_PROP__KHTML_NBSP_MODE
//
space

//
// CSS_PROP__KHTML_LINE_BREAK
//
// auto
loose
// normal
strict
after-white-space
anywhere

// -webkit-appearance
// The order here must match the order in the ControlPart enum in ThemeTypes.h.
// All appearance values that should be accepted by the parser should be listed between 'checkbox' and 'textarea':
checkbox
radio
push-button
square-button
button
button-bevel
default-button
inner-spin-button
listbox
listitem
media-controls-background
media-controls-dark-bar-background
media-controls-fullscreen-background
media-controls-light-bar-background
media-current-time-display
media-enter-fullscreen-button
media-exit-fullscreen-button
media-fullscreen-volume-slider
media-fullscreen-volume-slider-thumb
media-mute-button
media-overlay-play-button
media-play-button
media-return-to-realtime-button
media-rewind-button
media-seek-back-button
media-seek-forward-button
media-slider
media-sliderthumb
media-time-remaining-display
media-toggle-closed-captions-button
media-volume-slider
media-volume-slider-container
media-volume-slider-mute-button
media-volume-sliderthumb
menulist
menulist-button
menulist-text
menulist-textfield
meter
progress-bar
progress-bar-value
slider-horizontal
slider-vertical
sliderthumb-horizontal
sliderthumb-vertical
caret
searchfield
searchfield-decoration
searchfield-results-decoration
searchfield-results-button
searchfield-cancel-button
snapshotted-plugin-overlay
textfield
relevancy-level-indicator
continuous-capacity-level-indicator
discrete-capacity-level-indicator
rating-level-indicator
#if defined(ENABLE_SERVICE_CONTROLS) && ENABLE_SERVICE_CONTROLS
image-controls-button
#endif
#if defined(ENABLE_APPLE_PAY) && ENABLE_APPLE_PAY
-apple-pay-button
#endif
#if defined(ENABLE_INPUT_TYPE_COLOR) && ENABLE_INPUT_TYPE_COLOR
color-well
#endif
#if defined(ENABLE_DATALIST_ELEMENT) && ENABLE_DATALIST_ELEMENT
list-button
#endif
textarea
#if defined(ENABLE_ATTACHMENT_ELEMENT) && ENABLE_ATTACHMENT_ELEMENT
attachment
borderless-attachment
#endif
caps-lock-indicator

//
// CSS_PROP_BORDER_IMAGE
//
// stretch
// repeat
round

//
// CSS_PROP_BACKGROUND_CLIP/ORIGIN
//
// border/content/padding are deprecated and ultimately will only apply to the -webkit- form of these properties.
// border-box/content-box/padding-box should be used instead.
//
border
border-box
content
content-box
padding
padding-box

//
// Variables Implementation
//
var
-internal-variable-value

//
// Environment Variables
//
env

//
// CSS_PROP_BREAK_BEFORE/AFTER/INSIDE
//
avoid-column
avoid-page
page
recto
region
verso

// CSS Shapes
margin-box

// clip-path
stroke-box
view-box

//
// background-size
//
contain
cover

//
// CSS_PROP__KHTML_RTL_ORDERING
//
logical
visual

//
// CSS_PROP__WEBKIT_BORDER_FIT
//
lines

//
// CSS_PROP__WEBKIT_ANIMATION_DIRECTION
//
// alternate

alternate-reverse

//
// CSS_PROP__WEBKIT_ANIMATION_FILL_MODE
//
// forwards
// backwards
// both

//
// CSS_PROP__WEBKIT_ANIMATION_ITERATION_COUNT
//
// infinite

//
// CSS_PROP__WEBKIT_ANIMATION_PLAY_STATE
//
running
paused

//
// CSS_PROP__WEBKIT_TRANSFORM_STYLE
//
flat
preserve-3d

//
// CSS_PROP__WEBKIT_TRANSITION_TIMING_FUNCTION
// CSS_PROP__WEBKIT_ANIMATION_TIMING_FUNCTION
//
ease
linear
ease-in
ease-out
ease-in-out
step-start
step-end

//
// CSS_PROP_ZOOM
//
document
reset

//
// CSS_PROP_POINTER_EVENTS
//
visiblePainted
visibleFill
visibleStroke
//visible
painted
fill
stroke
bounding-box
//all
//none

//
// CSS_PROP_SPEECH
//
spell-out
digits
literal-punctuation
no-punctuation

//
// -webkit-font-smoothing
//
// auto
// none
antialiased
subpixel-antialiased

// text-rendering
//auto
optimizeSpeed
optimizeLegibility
geometricPrecision

// -webkit-color-adjust
economy
exact

// -webkit-hyphenate-limit-lines
no-limit

// -webkit-hyphens
// none
manual
// auto

#if defined(ENABLE_LETTERPRESS) && ENABLE_LETTERPRESS
-webkit-letterpress
#endif

#if defined(ENABLE_OVERFLOW_SCROLLING_TOUCH) && ENABLE_OVERFLOW_SCROLLING_TOUCH
// -webkit-overflow-scrolling
// auto
touch
#endif

// -webkit-writing-mode
// SVG compatibility
lr
rl
tb
lr-tb
rl-tb
tb-rl
// Standard values from CSS3
horizontal-tb
vertical-rl
vertical-lr
horizontal-bt

// -webkit-ruby-position
after
before
inter-character

// -webkit-text-emphasis-position
over
under

// -webkit-text-emphasis-style
filled
open
dot
// circle
double-circle
triangle
sesame

// -webkit-radial-gradient
// circle
ellipse
closest-side
closest-corner
farthest-side
farthest-corner
// contain
// cover

// -webkit-text-orientation
sideways
sideways-right
upright
vertical-right
mixed

// -webkit-line-box-contain
font
glyphs
inline-box
initial-letter
replaced

// font-feature-settings
on
off

// image-rendering
// auto
// optimizeSpeed (deprecated)
optimizeQuality // ( deprecated)
crisp-edges
pixelated
-webkit-crisp-edges
-webkit-optimize-contrast

// shape-outside
nonzero
evenodd
at
// closest-side
// farthest-side

#if defined(ENABLE_CSS_SCROLL_SNAP)
// -webkit-scroll-snap-points-x
// -webkit-scroll-snap-points-y
elements

// -webkit-scroll-snap-type
mandatory
proximity
x
y
#endif

break

wrap

// -webkit-line-align
edges

alphabetic

// position
sticky
-webkit-sticky

// (pointer:) media feature
// none
coarse
fine

// (hover:) media feature.
// none
hover
on-demand

// blend modes
// normal
multiply
screen
overlay
darken
lighten
color-dodge
color-burn
hard-light
soft-light
difference
exclusion
hue
saturation
color
luminosity
// plus-darker
// plus-lighter

// isolation
// auto
isolate

// object-fit
// fill
// contain
// cover
// none
scale-down

// background-image, etc.
container-scroll
cross-fade
image-set
linear-gradient
radial-gradient
conic-gradient
repeating-linear-gradient
repeating-radial-gradient
repeating-conic-gradient
-webkit-canvas
-webkit-cross-fade
-webkit-gradient
-webkit-linear-gradient
-webkit-radial-gradient
-webkit-repeating-linear-gradient
-webkit-repeating-radial-gradient
-webkit-image-set
-webkit-named-image
filter
-webkit-filter
#if defined(ENABLE_CSS_PAINTING_API) && ENABLE_CSS_PAINTING_API
paint
#endif

// deprecated gradients
from
to
color-stop
radial

// content
attr
counter
counters

// clip
rect

// shapes
polygon

// @font-face src
format

// (-webkit-)filter
// invert
grayscale
sepia
saturate
hue-rotate
opacity
brightness
contrast
blur
drop-shadow
url
cubic-bezier
spring
steps
apple-invert-lightness

// colors
rgb
rgba
hsl
hsla
//color

// transform
matrix
matrix3d
perspective
rotate
rotateX
rotateY
rotateZ
rotate3d
scale
scaleX
scaleY
scaleZ
scale3d
skew
skewX
skewY
translate
translateX
translateY
translateZ
translate3d

// transform-box
// border-box
// view-box
// stroke-box
// content-box
fill-box

// motion path
path

calc
-webkit-calc
min
max
clamp

from-image

#if defined(ENABLE_CSS_IMAGE_RESOLUTION) && ENABLE_CSS_IMAGE_RESOLUTION
snap
#endif

// overflow
-webkit-paged-x
-webkit-paged-y

// paint-order
// normal
// fill
// stroke
markers

// grid-{column-start|column-end|row-start|row-end}
span

// grid-template-{columns|rows}
minmax

// grid-auto-flow
auto-flow
dense

#if defined(ENABLE_CSS3_TEXT) && ENABLE_CSS3_TEXT
// text-indent
-webkit-each-line
-webkit-hanging
#endif

// -webkit-column-fill
balance

// -webkit-aspect-ratio
from-dimensions
from-intrinsic

#if defined(ENABLE_CSS_TRAILING_WORD) && ENABLE_CSS_TRAILING_WORD
// -apple-trailing-word
-webkit-partially-balanced
#endif

#if defined(ENABLE_APPLE_PAY) && ENABLE_APPLE_PAY
// -apple-pay-button-style
white-outline

// -apple-pay-button-type
plain
buy
set-up
donate
#if defined(ENABLE_APPLE_PAY_SESSION_V4) && ENABLE_APPLE_PAY_SESSION_V4
check-out
book
subscribe
#endif
#endif

// font-synthesis
weight
style

// will-change
scroll-position
//contents

// touch-action
// auto
// none
manipulation
pan-x
pan-y
pinch-zoom

// scroll-behavior
// auto
smooth

// hanging-punctuation
allow-end
first
force-end
last

// color-gamut
p3
rec2020

// color() function
sRGB
display-p3

// prefers-default-appearance
prefers
// no-preference

// prefers-reduced-motion
reduce
no-preference

#if defined(ENABLE_DARK_MODE_CSS) && ENABLE_DARK_MODE_CSS
// prefers-color-scheme
light
dark
// no-preference

// color-scheme
only
// light
// dark
#endif

// auto-repeat
auto-fill
auto-fit

// font-display
// auto
// block
swap
fallback
optional

#if defined(ENABLE_APPLICATION_MANIFEST) && ENABLE_APPLICATION_MANIFEST
fullscreen
standalone
minimal-ui
browser
#endif

// text-decoration-thickness, text-underline-offset
from-font

// dynamic-range
standard
high
