//
// 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

#if defined(ENABLE_CSS_DEVICE_ADAPTATION) && ENABLE_CSS_DEVICE_ADAPTATION
//
// CSS_PROP_USER_ZOOM
//
// fixed
zoom

//
// CSS_PROP_MIN_WIDTH
// CSS_PROP_MAX_WIDTH
// CSS_PROP_MIN_HEIGHT
// CSS_PROP_MAX_HEIGHT
//
// auto
device-width
device-height
#endif

//
// 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

#if defined(ENABLE_POINTER_EVENTS) && ENABLE_POINTER_EVENTS
// touch-action
// auto
// none
manipulation
pan-x
pan-y
pinch-zoom
#endif

// 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
