Fix code quality violations and exclude Manifest from checks

Document application modes (development/debug/production)
Add global file drop handler, order column normalization, SPA hash fix
Serve CDN assets via /_vendor/ URLs instead of merging into bundles
Add production minification with license preservation
Improve JSON formatting for debugging and production optimization
Add CDN asset caching with CSS URL inlining for production builds
Add three-mode system (development, debug, production)
Update Manifest CLAUDE.md to reflect helper class architecture
Refactor Manifest.php into helper classes for better organization
Pre-manifest-refactor checkpoint: Add app_mode documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
root
2026-01-14 10:38:22 +00:00
parent bb9046af1b
commit d523f0f600
2355 changed files with 231384 additions and 32223 deletions

499
node_modules/css-tree/data/patch.json generated vendored
View File

@@ -3,6 +3,9 @@
"charset": {
"prelude": "<string>"
},
"container": {
"prelude": "[ <container-name> ]? <container-condition>"
},
"font-face": {
"descriptors": {
"unicode-range": {
@@ -10,6 +13,53 @@
"syntax": "<urange>#"
}
}
},
"nest": {
"prelude": "<complex-selector-list>"
},
"scope": {
"prelude": "[ ( <scope-start> ) ]? [ to ( <scope-end> ) ]?"
},
"position-try": {
"comment": "The list of descriptors: https://developer.mozilla.org/en-US/docs/Web/CSS/@position-try",
"descriptors": {
"top": "<'top'>",
"left": "<'left'>",
"bottom": "<'bottom'>",
"right": "<'right'>",
"inset-block-start": "<'inset-block-start'>",
"inset-block-end": "<'inset-block-end'>",
"inset-inline-start": "<'inset-inline-start'>",
"inset-inline-end": "<'inset-inline-end'>",
"inset-block": "<'inset-block'>",
"inset-inline": "<'inset-inline'>",
"inset": "<'inset'>",
"margin-top": "<'margin-top'>",
"margin-left": "<'margin-left'>",
"margin-bottom": "<'margin-bottom'>",
"margin-right": "<'margin-right'>",
"margin-block-start": "<'margin-block-start'>",
"margin-block-end": "<'margin-block-end'>",
"margin-inline-start": "<'margin-inline-start'>",
"margin-inline-end": "<'margin-inline-end'>",
"margin": "<'margin'>",
"margin-block": "<'margin-block'>",
"margin-inline": "<'margin-inline'>",
"width": "<'width'>",
"height": "<'height'>",
"min-width": "<'min-width'>",
"min-height": "<'min-height'>",
"max-width": "<'max-width'>",
"max-height": "<'max-height'>",
"block-size": "<'block-size'>",
"inline-size": "<'inline-size'>",
"min-block-size": "<'min-block-size'>",
"min-inline-size": "<'min-inline-size'>",
"max-block-size": "<'max-block-size'>",
"max-inline-size": "<'max-inline-size'>",
"align-self": "<'align-self'> | anchor-center",
"justify-self": "<'justify-self'> | anchor-center"
}
}
},
"properties": {
@@ -150,6 +200,13 @@
],
"syntax": "auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical"
},
"background-clip": {
"comment": "used <bg-clip> from CSS Backgrounds and Borders 4 since it adds new values",
"references": [
"https://github.com/csstree/csstree/issues/190"
],
"syntax": "<bg-clip>#"
},
"baseline-shift": {
"comment": "added SVG property",
"references": [
@@ -161,12 +218,9 @@
"comment": "added old IE property https://msdn.microsoft.com/en-us/library/ms530723(v=vs.85).aspx",
"syntax": "<url>+"
},
"clip-rule": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/masking.html#ClipRuleProperty"
],
"syntax": "nonzero | evenodd"
"container-type": {
"comment": "https://www.w3.org/TR/css-contain-3/#propdef-container-type",
"syntax": "normal || [ size | inline-size ]"
},
"cue": {
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
@@ -224,17 +278,19 @@
],
"syntax": "<number-zero-one>"
},
"fill-rule": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#FillProperty"
],
"syntax": "nonzero | evenodd"
},
"filter": {
"comment": "extend with IE legacy syntaxes",
"syntax": "| <-ms-filter-function-list>"
},
"font": {
"comment": "align with font-4, fix <'font-family'>#, add non standard fonts",
"references": [
"https://drafts.csswg.org/css-fonts-4/#font-prop",
"https://github.com/w3c/csswg-drafts/pull/10832",
"https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
],
"syntax": "[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name> | <-non-standard-font>"
},
"glyph-orientation-horizontal": {
"comment": "added SVG property",
"references": [
@@ -263,45 +319,30 @@
],
"syntax": "normal | <length-percentage>"
},
"marker": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
],
"syntax": "none | <url>"
},
"marker-end": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
],
"syntax": "none | <url>"
},
"marker-mid": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
],
"syntax": "none | <url>"
},
"marker-start": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#MarkerProperties"
],
"syntax": "none | <url>"
},
"max-width": {
"comment": "fix auto -> none (https://github.com/mdn/data/pull/431); extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/max-width",
"syntax": "none | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) | <-non-standard-width>"
"comment": "extend by non-standard size keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
"syntax": "| stretch | <-non-standard-size>"
},
"max-height": {
"comment": "extend by non-standard size keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
"syntax": "| stretch | <-non-standard-size>"
},
"width": {
"comment": "per spec fit-content should be a function, however browsers are supporting it as a keyword (https://github.com/csstree/stylelint-validator/issues/29)",
"syntax": "| fit-content | -moz-fit-content | -webkit-fit-content"
"references": [
"https://developer.mozilla.org/en-US/docs/Web/CSS/width",
"https://github.com/csstree/stylelint-validator/issues/29"
],
"syntax": "| stretch | <-non-standard-size>"
},
"height": {
"syntax": "| stretch | <-non-standard-size>"
},
"min-width": {
"comment": "extend by non-standard width keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
"syntax": "auto | <length-percentage> | min-content | max-content | fit-content(<length-percentage>) | <-non-standard-width>"
"syntax": "| stretch | <-non-standard-size>"
},
"min-height": {
"syntax": "| stretch | <-non-standard-size>"
},
"overflow": {
"comment": "extend by vendor keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
@@ -331,12 +372,19 @@
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
"syntax": "<time> | none | x-weak | weak | medium | strong | x-strong"
},
"shape-rendering": {
"comment": "added SVG property",
"scroll-timeline": {
"comment": "fix according to spec",
"references": [
"https://www.w3.org/TR/SVG/painting.html#ShapeRenderingPropert"
"https://www.w3.org/TR/scroll-animations-1/#scroll-timeline-shorthand"
],
"syntax": "auto | optimizeSpeed | crispEdges | geometricPrecision"
"syntax": "[ <'scroll-timeline-name'> || <'scroll-timeline-axis'> ]#"
},
"scroll-timeline-name": {
"comment": "fix according to spec",
"references": [
"https://w3c.github.io/csswg-drafts/scroll-animations/#propdef-scroll-timeline-name"
],
"syntax": "[ none | <dashed-ident> ]#"
},
"src": {
"comment": "added @font-face's src property https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/src",
@@ -344,7 +392,7 @@
},
"speak": {
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
"syntax": "auto | none | normal"
"syntax": "auto | never | always"
},
"speak-as": {
"comment": "https://www.w3.org/TR/css3-speech/#property-index",
@@ -371,13 +419,6 @@
],
"syntax": "<svg-length>"
},
"stroke-linecap": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
],
"syntax": "butt | round | square"
},
"stroke-linejoin": {
"comment": "added SVG property",
"references": [
@@ -392,13 +433,6 @@
],
"syntax": "<number-one-or-greater>"
},
"stroke-opacity": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/painting.html#StrokeProperties"
],
"syntax": "<number-zero-one>"
},
"stroke-width": {
"comment": "added SVG property",
"references": [
@@ -406,12 +440,9 @@
],
"syntax": "<svg-length>"
},
"text-anchor": {
"comment": "added SVG property",
"references": [
"https://www.w3.org/TR/SVG/text.html#TextAlignmentProperties"
],
"syntax": "start | middle | end"
"text-wrap": {
"comment": "broken in mdn/data",
"syntax": "<'text-wrap-mode'> || <'text-wrap-style'>"
},
"unicode-bidi": {
"comment": "added prefixed keywords https://developer.mozilla.org/en-US/docs/Web/CSS/unicode-bidi",
@@ -456,9 +487,20 @@
"writing-mode": {
"comment": "extend with SVG keywords",
"syntax": "| <svg-writing-mode>"
},
"white-space-trim": {
"syntax": "none | discard-before || discard-after || discard-inner",
"comment": "missed, https://www.w3.org/TR/css-text-4/#white-space-trim"
},
"word-break": {
"syntax": "normal | break-all | keep-all | break-word | auto-phrase",
"comment": "added in Chrome/Edge 119, not covered by a spec currently (2024-09-02)",
"references": [
"https://developer.mozilla.org/en-US/docs/Web/CSS/word-break"
]
}
},
"syntaxes": {
"types": {
"-legacy-gradient": {
"comment": "added collection of legacy gradient syntaxes",
"syntax": "<-webkit-gradient()> | <-legacy-linear-gradient> | <-legacy-repeating-linear-gradient> | <-legacy-radial-gradient> | <-legacy-repeating-radial-gradient>"
@@ -516,11 +558,11 @@
},
"-non-standard-overflow": {
"comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/overflow",
"syntax": "-moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
"syntax": "overlay | -moz-scrollbars-none | -moz-scrollbars-horizontal | -moz-scrollbars-vertical | -moz-hidden-unscrollable"
},
"-non-standard-width": {
"-non-standard-size": {
"comment": "non-standard keywords https://developer.mozilla.org/en-US/docs/Web/CSS/width",
"syntax": "fill-available | min-intrinsic | intrinsic | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content | -webkit-min-content | -webkit-max-content"
"syntax": "intrinsic | min-intrinsic | -webkit-fill-available | -webkit-fit-content | -webkit-min-content | -webkit-max-content | -moz-available | -moz-fit-content | -moz-min-content | -moz-max-content"
},
"-webkit-gradient()": {
"comment": "first Apple proposal gradient syntax https://webkit.org/blog/175/introducing-css-gradients/ - TODO: simplify when after match algorithm improvement ( [, point, radius | , point] -> [, radius]? , point )",
@@ -546,10 +588,6 @@
"comment": "missed; https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-mask-box-image",
"syntax": "repeat | stretch | round"
},
"-webkit-mask-clip-style": {
"comment": "missed; there is no enough information about `-webkit-mask-clip` property, but looks like all those keywords are working",
"syntax": "border | border-box | padding | padding-box | content | content-box | text"
},
"-ms-filter-function-list": {
"comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
"syntax": "<-ms-filter-function>+"
@@ -566,30 +604,50 @@
"comment": "https://developer.mozilla.org/en-US/docs/Web/CSS/-ms-filter",
"syntax": "<ident-token> | <function-token> <any-value>? )"
},
"-ms-filter": {
"syntax": "<string>"
"absolute-color-base": {
"comment": "https://www.w3.org/TR/css-color-4/#color-syntax",
"syntax": "<hex-color> | <absolute-color-function> | <named-color> | transparent"
},
"absolute-color-function": {
"comment": "https://www.w3.org/TR/css-color-4/#color-syntax",
"syntax": "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>"
},
"age": {
"comment": "https://www.w3.org/TR/css3-speech/#voice-family",
"syntax": "child | young | old"
},
"anchor-name": {
"comment": "missed in mdn/data",
"syntax": "<dashed-ident>"
},
"attr-name": {
"syntax": "<wq-name>"
},
"attr-fallback": {
"syntax": "<any-value>"
},
"border-radius": {
"comment": "missed, https://drafts.csswg.org/css-backgrounds-3/#the-border-radius",
"syntax": "<length-percentage>{1,2}"
"bg-clip": {
"comment": "missed, https://drafts.csswg.org/css-backgrounds-4/#typedef-bg-clip",
"syntax": "<box> | border | text"
},
"bottom": {
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
"syntax": "<length> | auto"
},
"content-list": {
"comment": "missed -> https://drafts.csswg.org/css-content/#typedef-content-list (document-url, <target> and leader() is omitted util stabilization)",
"syntax": "[ <string> | contents | <image> | <quote> | <target> | <leader()> | <attr()> | counter( <ident>, <'list-style-type'>? ) ]+"
"comment": "added attr(), see https://github.com/csstree/csstree/issues/201",
"syntax": "[ <string> | contents | <image> | <counter> | <quote> | <target> | <leader()> | <attr()> ]+"
},
"container-name": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "<custom-ident>"
},
"container-condition": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "not <query-in-parens> | <query-in-parens> [ [ and <query-in-parens> ]* | [ or <query-in-parens> ]* ]"
},
"coord-box": {
"syntax": "content-box | padding-box | border-box | fill-box | stroke-box | view-box"
},
"element()": {
"comment": "https://drafts.csswg.org/css-gcpm/#element-syntax & https://drafts.csswg.org/css-images-4/#element-notation",
@@ -603,12 +661,29 @@
"comment": "https://www.w3.org/TR/css3-speech/#voice-family",
"syntax": "male | female | neutral"
},
"general-enclosed": {
"comment": "remove ident-token, optional any-value, brackets (see https://drafts.csswg.org/mediaqueries-5/#typedef-general-enclosed)",
"syntax": "[ <function-token> <any-value>? ) ] | [ ( <any-value>? ) ]"
},
"generic-family": {
"comment": "added -apple-system",
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#typedef-generic-family",
"syntax": "<generic-script-specific>| <generic-complete> | <generic-incomplete> | <-non-standard-generic-family>"
},
"generic-script-specific": {
"syntax": "generic(kai) | generic(fangsong) | generic(nastaliq)"
},
"generic-complete": {
"syntax": "serif | sans-serif | system-ui | cursive | fantasy | math | monospace"
},
"generic-incomplete": {
"syntax": "ui-serif | ui-sans-serif | ui-monospace | ui-rounded"
},
"-non-standard-generic-family": {
"syntax": "-apple-system | BlinkMacSystemFont",
"references": [
"https://css-tricks.com/snippets/css/system-font-stack/",
"https://webkit.org/blog/3709/using-the-system-font-in-web-content/"
],
"syntax": "| -apple-system"
]
},
"gradient": {
"comment": "added legacy syntaxes support",
@@ -618,29 +693,47 @@
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
"syntax": "<length> | auto"
},
"mask-image": {
"comment": "missed; https://drafts.fxtf.org/css-masking-1/#the-mask-image",
"syntax": "<mask-reference>#"
"color": {
"comment": "css-color-5, added non standard color names",
"syntax": "<color-base> | currentColor | <system-color> | <device-cmyk()> | <light-dark()> | <-non-standard-color>"
},
"name-repeat": {
"comment": "missed, and looks like obsolete, keep it as is since other property syntaxes should be changed too; https://www.w3.org/TR/2015/WD-css-grid-1-20150917/#typedef-name-repeat",
"syntax": "repeat( [ <positive-integer> | auto-fill ], <line-names>+)"
"color-base": {
"syntax": "<hex-color> | <color-function> | <named-color> | <color-mix()> | transparent"
},
"named-color": {
"comment": "added non standard color names",
"syntax": "| <-non-standard-color>"
"color-function": {
"syntax": "<rgb()> | <rgba()> | <hsl()> | <hsla()> | <hwb()> | <lab()> | <lch()> | <oklab()> | <oklch()> | <color()>"
},
"device-cmyk()": {
"syntax": "<legacy-device-cmyk-syntax> | <modern-device-cmyk-syntax>"
},
"legacy-device-cmyk-syntax": {
"syntax": "device-cmyk( <number>#{4} )"
},
"modern-device-cmyk-syntax": {
"syntax": "device-cmyk( <cmyk-component>{4} [ / [ <alpha-value> | none ] ]? )"
},
"cmyk-component": {
"syntax": "<number> | <percentage> | none"
},
"color-mix()": {
"syntax": "color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2} )"
},
"color-interpolation-method": {
"syntax": "in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]"
},
"color-space": {
"syntax": "<rectangular-color-space> | <polar-color-space> | <custom-color-space>"
},
"custom-color-space": {
"syntax": "<dashed-ident>"
},
"paint": {
"comment": "used by SVG https://www.w3.org/TR/SVG/painting.html#SpecifyingPaint",
"syntax": "none | <color> | <url> [ none | <color> ]? | context-fill | context-stroke"
},
"page-size": {
"comment": "https://www.w3.org/TR/css-page-3/#typedef-page-size-page-size",
"syntax": "A5 | A4 | A3 | B5 | B4 | JIS-B5 | JIS-B4 | letter | legal | ledger"
},
"ratio": {
"comment": "missed, https://drafts.csswg.org/mediaqueries-4/#typedef-ratio",
"syntax": "<integer> / <integer>"
"palette-identifier": {
"comment": "<palette-identifier> is parsed as a <dashed-ident> (https://drafts.csswg.org/css-fonts/#typedef-font-palette-palette-identifier)",
"syntax": "<dashed-ident>"
},
"right": {
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
@@ -650,6 +743,67 @@
"comment": "missed spaces in function body and add backwards compatible syntax",
"syntax": "rect( <top>, <right>, <bottom>, <left> ) | rect( <top> <right> <bottom> <left> )"
},
"scope-start": {
"syntax": "<forgiving-selector-list>"
},
"scope-end": {
"syntax": "<forgiving-selector-list>"
},
"forgiving-selector-list": {
"syntax": "<complex-real-selector-list>"
},
"forgiving-relative-selector-list": {
"syntax": "<relative-real-selector-list>"
},
"selector-list": {
"syntax": "<complex-selector-list>"
},
"complex-real-selector-list": {
"syntax": "<complex-real-selector>#"
},
"simple-selector-list": {
"syntax": "<simple-selector>#"
},
"relative-real-selector-list": {
"syntax": "<relative-real-selector>#"
},
"complex-selector": {
"syntax": "<complex-selector-unit> [ <combinator>? <complex-selector-unit> ]*"
},
"complex-selector-unit": {
"syntax": "[ <compound-selector>? <pseudo-compound-selector>* ]!"
},
"complex-real-selector": {
"syntax": "<compound-selector> [ <combinator>? <compound-selector> ]*"
},
"relative-real-selector": {
"syntax": "<combinator>? <complex-real-selector>"
},
"compound-selector": {
"syntax": "[ <type-selector>? <subclass-selector>* ]!"
},
"pseudo-compound-selector": {
"syntax": " <pseudo-element-selector> <pseudo-class-selector>*"
},
"simple-selector": {
"syntax": "<type-selector> | <subclass-selector>"
},
"combinator": {
"syntax": "'>' | '+' | '~' | [ '|' '|' ]"
},
"pseudo-element-selector": {
"syntax": "':' <pseudo-class-selector> | <legacy-pseudo-element-selector>"
},
"legacy-pseudo-element-selector": {
"syntax": " ':' [before | after | first-line | first-letter]"
},
"single-animation-composition": {
"comment": "missed definition",
"references": [
"https://w3c.github.io/csswg-drafts/css-animations-2/#typedef-single-animation-composition"
],
"syntax": "replace | add | accumulate"
},
"svg-length": {
"comment": "All coordinates and lengths in SVG can be specified with or without a unit identifier",
"references": [
@@ -669,18 +823,6 @@
"comment": "missed; not sure we should add it, but no others except `shape` is using it so it's ok for now; https://drafts.fxtf.org/css-masking-1/#funcdef-clip-rect",
"syntax": "<length> | auto"
},
"track-group": {
"comment": "used by old grid-columns and grid-rows syntax v0",
"syntax": "'(' [ <string>* <track-minmax> <string>* ]+ ')' [ '[' <positive-integer> ']' ]? | <track-minmax>"
},
"track-list-v0": {
"comment": "used by old grid-columns and grid-rows syntax v0",
"syntax": "[ <string>* <track-group> <string>* ]+ | none"
},
"track-minmax": {
"comment": "used by old grid-columns and grid-rows syntax v0",
"syntax": "minmax( <track-breadth> , <track-breadth> ) | auto | <track-breadth> | fit-content"
},
"x": {
"comment": "missed; not sure we should add it, but no others except `cursor` is using it so it's ok for now; https://drafts.csswg.org/css-ui-3/#cursor",
"syntax": "<number>"
@@ -711,11 +853,130 @@
"number-one-or-greater": {
"syntax": "<number [1,∞]>"
},
"positive-integer": {
"syntax": "<integer [0,∞]>"
"color()": {
"syntax": "color( <colorspace-params> [ / [ <alpha-value> | none ] ]? )"
},
"colorspace-params": {
"syntax": "[ <predefined-rgb-params> | <xyz-params>]"
},
"predefined-rgb-params": {
"syntax": "<predefined-rgb> [ <number> | <percentage> | none ]{3}"
},
"predefined-rgb": {
"syntax": "srgb | srgb-linear | display-p3 | a98-rgb | prophoto-rgb | rec2020"
},
"xyz-params": {
"syntax": "<xyz-space> [ <number> | <percentage> | none ]{3}"
},
"xyz-space": {
"syntax": "xyz | xyz-d50 | xyz-d65"
},
"oklab()": {
"comment": "https://www.w3.org/TR/css-color-4/#specifying-oklab-oklch",
"syntax": "oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )"
},
"oklch()": {
"comment": "https://www.w3.org/TR/css-color-4/#specifying-oklab-oklch",
"syntax": "oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )"
},
"offset-path": {
"syntax": "<ray()> | <url> | <basic-shape>"
},
"basic-shape": {
"syntax": "<inset()> | <xywh()> | <rect()> | <circle()> | <ellipse()> | <polygon()> | <path()>"
},
"rect()": {
"comment": "missed, https://drafts.csswg.org/css-shapes/#supported-basic-shapes",
"syntax": "rect( [ <length-percentage> | auto ]{4} [ round <'border-radius'> ]? )"
},
"xywh()": {
"comment": "missed, https://drafts.csswg.org/css-shapes/#supported-basic-shapes",
"syntax": "xywh( <length-percentage>{2} <length-percentage [0,∞]>{2} [ round <'border-radius'> ]? )"
},
"query-in-parens": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "( <container-condition> ) | ( <size-feature> ) | style( <style-query> ) | <general-enclosed>"
},
"size-feature": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#typedef-size-feature",
"syntax": "<mf-plain> | <mf-boolean> | <mf-range>"
},
"style-feature": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#typedef-style-feature",
"syntax": "<declaration>"
},
"style-query": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "<style-condition> | <style-feature>"
},
"style-condition": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "not <style-in-parens> | <style-in-parens> [ [ and <style-in-parens> ]* | [ or <style-in-parens> ]* ]"
},
"style-in-parens": {
"comment": "missed, https://drafts.csswg.org/css-contain-3/#container-rule",
"syntax": "( <style-condition> ) | ( <style-feature> ) | <general-enclosed>"
},
"-non-standard-display": {
"syntax": "-ms-inline-flexbox | -ms-grid | -ms-inline-grid | -webkit-flex | -webkit-inline-flex | -webkit-box | -webkit-inline-box | -moz-inline-stack | -moz-box | -moz-inline-box"
},
"inset-area": {
"syntax": "[ [ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] | [ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] | [ self-block-start | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] | [ start | center | end | span-start | span-end | span-all ]{1,2} | [ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2} ]",
"comment": "initial name for <position-area> before renamed",
"references": [
"https://www.w3.org/TR/css-anchor-position-1/#inset-area"
]
},
"position-area": {
"syntax": "[ [ left | center | right | span-left | span-right | x-start | x-end | span-x-start | span-x-end | x-self-start | x-self-end | span-x-self-start | span-x-self-end | span-all ] || [ top | center | bottom | span-top | span-bottom | y-start | y-end | span-y-start | span-y-end | y-self-start | y-self-end | span-y-self-start | span-y-self-end | span-all ] | [ block-start | center | block-end | span-block-start | span-block-end | span-all ] || [ inline-start | center | inline-end | span-inline-start | span-inline-end | span-all ] | [ self-block-start | center | self-block-end | span-self-block-start | span-self-block-end | span-all ] || [ self-inline-start | center | self-inline-end | span-self-inline-start | span-self-inline-end | span-all ] | [ start | center | end | span-start | span-end | span-all ]{1,2} | [ self-start | center | self-end | span-self-start | span-self-end | span-all ]{1,2} ]",
"comment": "replaced <inset-area>",
"references": [
"https://drafts.csswg.org/css-anchor-position-1/#typedef-position-area"
]
},
"anchor()": {
"syntax": "anchor( <anchor-element>? && <anchor-side>, <length-percentage>? )",
"comment": "missed",
"references": [
"https://drafts.csswg.org/css-anchor-position-1/#anchor-pos"
]
},
"anchor-side": {
"syntax": "inside | outside | top | left | right | bottom | start | end | self-start | self-end | <percentage> | center"
},
"anchor-size()": {
"syntax": "anchor-size( [ <anchor-element> || <anchor-size> ]? , <length-percentage>? )",
"comment": "missed",
"references": [
"https://drafts.csswg.org/css-anchor-position-1/#funcdef-anchor-size"
]
},
"anchor-size": {
"syntax": "width | height | block | inline | self-block | self-inline"
},
"anchor-element": {
"syntax": "<dashed-ident>",
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-anchor-element"
},
"try-size": {
"syntax": "most-width | most-height | most-block-size | most-inline-size",
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-try-size"
},
"try-tactic": {
"syntax": "flip-block || flip-inline || flip-start",
"comment": "missed, https://drafts.csswg.org/css-anchor-position-1/#typedef-position-try-fallbacks-try-tactic"
},
"font-variant-css2": {
"syntax": "normal | small-caps",
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#font-variant-css21-values"
},
"font-width-css3": {
"syntax": "normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded",
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#font-width-css3-values"
},
"system-family-name": {
"syntax": "caption | icon | menu | message-box | small-caption | status-bar",
"comment": "new definition on font-4, https://drafts.csswg.org/css-fonts-4/#system-family-name-value"
}
}
}